summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/android/java/src/org/chromium/chrome/browser/AccessibilityUtil.java29
-rw-r--r--chrome/browser/android/accessibility_util.cc25
-rw-r--r--chrome/browser/android/accessibility_util.h26
-rw-r--r--chrome/browser/android/chrome_jni_registrar.cc2
-rw-r--r--chrome/browser/ui/webui/welcome_ui_android.cc5
-rw-r--r--chrome/chrome_browser.gypi3
6 files changed, 90 insertions, 0 deletions
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AccessibilityUtil.java b/chrome/android/java/src/org/chromium/chrome/browser/AccessibilityUtil.java
new file mode 100644
index 0000000..42df01d
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/AccessibilityUtil.java
@@ -0,0 +1,29 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser;
+
+import android.content.Context;
+import android.view.accessibility.AccessibilityManager;
+
+import org.chromium.base.CalledByNative;
+
+/**
+ * Exposes information about the current accessibility state
+ */
+public class AccessibilityUtil {
+ private AccessibilityUtil() { }
+
+ /**
+ * Checks to see that this device has accessibility and touch exploration enabled.
+ * @param context A {@link Context} instance.
+ * @return Whether or not accessibility and touch exploration are enabled.
+ */
+ @CalledByNative
+ public static boolean isAccessibilityEnabled(Context context) {
+ AccessibilityManager manager = (AccessibilityManager)
+ context.getSystemService(Context.ACCESSIBILITY_SERVICE);
+ return manager != null && manager.isEnabled() && manager.isTouchExplorationEnabled();
+ }
+} \ No newline at end of file
diff --git a/chrome/browser/android/accessibility_util.cc b/chrome/browser/android/accessibility_util.cc
new file mode 100644
index 0000000..1adb093
--- /dev/null
+++ b/chrome/browser/android/accessibility_util.cc
@@ -0,0 +1,25 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "base/android/jni_android.h"
+#include "chrome/browser/android/accessibility_util.h"
+#include "jni/AccessibilityUtil_jni.h"
+
+namespace chrome {
+namespace android {
+
+bool AccessibilityUtil::Register(JNIEnv* env) {
+ return RegisterNativesImpl(env);
+}
+
+bool AccessibilityUtil::IsAccessibilityEnabled() {
+ return Java_AccessibilityUtil_isAccessibilityEnabled(
+ base::android::AttachCurrentThread(),
+ base::android::GetApplicationContext());
+}
+
+AccessibilityUtil::AccessibilityUtil() { }
+
+} // namespace android
+} // namespace chrome
diff --git a/chrome/browser/android/accessibility_util.h b/chrome/browser/android/accessibility_util.h
new file mode 100644
index 0000000..4b936bf
--- /dev/null
+++ b/chrome/browser/android/accessibility_util.h
@@ -0,0 +1,26 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_ANDROID_ANDROID_ACCESSIBILITY_UTIL_H_
+#define CHROME_BROWSER_ANDROID_ANDROID_ACCESSIBILITY_UTIL_H_
+
+#include "base/android/jni_android.h"
+
+namespace chrome {
+namespace android {
+
+class AccessibilityUtil {
+ public:
+ static bool Register(JNIEnv* env);
+
+ static bool IsAccessibilityEnabled();
+
+ private:
+ AccessibilityUtil();
+};
+
+} // namespace android
+} // namespace chrome
+
+#endif // CHROME_BROWSER_ANDROID_ANDROID_ACCESSIBILITY_UTIL_H_
diff --git a/chrome/browser/android/chrome_jni_registrar.cc b/chrome/browser/android/chrome_jni_registrar.cc
index 38f28b3..6d931b1 100644
--- a/chrome/browser/android/chrome_jni_registrar.cc
+++ b/chrome/browser/android/chrome_jni_registrar.cc
@@ -7,6 +7,7 @@
#include "base/android/jni_android.h"
#include "base/android/jni_registrar.h"
#include "base/debug/trace_event.h"
+#include "chrome/browser/android/accessibility_util.h"
#include "chrome/browser/android/banners/app_banner_manager.h"
#include "chrome/browser/android/bookmarks/bookmarks_bridge.h"
#include "chrome/browser/android/chrome_web_contents_delegate_android.h"
@@ -85,6 +86,7 @@ static base::android::RegistrationMethod kChromeRegisteredMethods[] = {
web_contents_delegate_android::RegisterWebContentsDelegateAndroidJni },
{ "RegisterAuxiliaryProfileLoader", autofill::RegisterAutofillAndroidJni },
// Register JNI for chrome classes.
+ { "AccessibilityUtils", AccessibilityUtil::Register },
{ "AccountManagementScreenHelper", AccountManagementScreenHelper::Register },
{ "AndroidProfileOAuth2TokenService",
AndroidProfileOAuth2TokenService::Register },
diff --git a/chrome/browser/ui/webui/welcome_ui_android.cc b/chrome/browser/ui/webui/welcome_ui_android.cc
index 9bb434e..0bcae1c 100644
--- a/chrome/browser/ui/webui/welcome_ui_android.cc
+++ b/chrome/browser/ui/webui/welcome_ui_android.cc
@@ -9,6 +9,7 @@
#include "base/strings/string16.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
+#include "chrome/browser/android/accessibility_util.h"
#include "chrome/browser/android/tab_android.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/profiles/profile.h"
@@ -48,6 +49,10 @@ WelcomeUI::WelcomeUI(content::WebUI* web_ui)
std::string locale = g_browser_process->GetApplicationLocale();
std::string product_tour_url = base::StringPrintf(
kProductTourBaseURL, locale.c_str());
+
+ if (chrome::android::AccessibilityUtil::IsAccessibilityEnabled())
+ product_tour_url += "?talkback";
+
html_source->AddString("productTourUrl", product_tour_url);
TabAndroid* tab = TabAndroid::FromWebContents(web_ui->GetWebContents());
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index 7d872ae..a4edef1 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -112,6 +112,8 @@
'browser/accessibility/accessibility_events.h',
'browser/accessibility/invert_bubble_prefs.cc',
'browser/accessibility/invert_bubble_prefs.h',
+ 'browser/android/accessibility_util.cc',
+ 'browser/android/accessibility_util.h',
'browser/android/activity_type_id_list.h',
'browser/android/activity_type_ids.cc',
'browser/android/activity_type_ids.h',
@@ -3730,6 +3732,7 @@
'target_name': 'chrome_browser_jni_headers',
'type': 'none',
'sources': [
+ 'android/java/src/org/chromium/chrome/browser/AccessibilityUtil.java',
'android/java/src/org/chromium/chrome/browser/ApplicationLifetime.java',
'android/java/src/org/chromium/chrome/browser/autofill/AutofillDialogControllerAndroid.java',
'android/java/src/org/chromium/chrome/browser/autofill/AutofillDialogResult.java',