diff options
-rw-r--r-- | chrome/android/java/src/org/chromium/chrome/browser/AccessibilityUtil.java | 29 | ||||
-rw-r--r-- | chrome/browser/android/accessibility_util.cc | 25 | ||||
-rw-r--r-- | chrome/browser/android/accessibility_util.h | 26 | ||||
-rw-r--r-- | chrome/browser/android/chrome_jni_registrar.cc | 2 | ||||
-rw-r--r-- | chrome/browser/ui/webui/welcome_ui_android.cc | 5 | ||||
-rw-r--r-- | chrome/chrome_browser.gypi | 3 |
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', |