| Index: content/browser/accessibility/browser_accessibility_manager_android.cc
|
| diff --git a/content/browser/accessibility/browser_accessibility_manager_android.cc b/content/browser/accessibility/browser_accessibility_manager_android.cc
|
| index e527963e62cb2bf20f10ed054b6f39fd54cbd3aa..bfa6e2169bef30dca76b080c5f81027eb00bbb99 100644
|
| --- a/content/browser/accessibility/browser_accessibility_manager_android.cc
|
| +++ b/content/browser/accessibility/browser_accessibility_manager_android.cc
|
| @@ -146,7 +146,7 @@ BrowserAccessibilityManagerAndroid::BrowserAccessibilityManagerAndroid(
|
|
|
| BrowserAccessibilityManagerAndroid::~BrowserAccessibilityManagerAndroid() {
|
| JNIEnv* env = AttachCurrentThread();
|
| - ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
|
| + ScopedJavaLocalRef<jobject> obj = GetJavaRefFromRootManager();
|
| if (obj.is_null())
|
| return;
|
|
|
| @@ -182,7 +182,7 @@ void BrowserAccessibilityManagerAndroid::NotifyAccessibilityEvent(
|
| ui::AXEvent event_type,
|
| BrowserAccessibility* node) {
|
| JNIEnv* env = AttachCurrentThread();
|
| - ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
|
| + ScopedJavaLocalRef<jobject> obj = GetJavaRefFromRootManager();
|
| if (obj.is_null())
|
| return;
|
|
|
| @@ -275,8 +275,8 @@ void BrowserAccessibilityManagerAndroid::OnLocationChanges(
|
| // nodes changed location, just send a single notification after a short
|
| // delay (to batch them), rather than lots of individual notifications.
|
| if (params.size() > 3) {
|
| + ScopedJavaLocalRef<jobject> obj = GetJavaRefFromRootManager();
|
| JNIEnv* env = AttachCurrentThread();
|
| - ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
|
| if (obj.is_null())
|
| return;
|
| Java_BrowserAccessibilityManager_sendDelayedWindowContentChangedEvent(
|
| @@ -659,7 +659,7 @@ jboolean BrowserAccessibilityManagerAndroid::AdjustSlider(
|
| void BrowserAccessibilityManagerAndroid::HandleHoverEvent(
|
| BrowserAccessibility* node) {
|
| JNIEnv* env = AttachCurrentThread();
|
| - ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
|
| + ScopedJavaLocalRef<jobject> obj = GetJavaRefFromRootManager();
|
| if (obj.is_null())
|
| return;
|
|
|
| @@ -896,9 +896,12 @@ void BrowserAccessibilityManagerAndroid::OnAtomicUpdateFinished(
|
| ui::AXTree* tree,
|
| bool root_changed,
|
| const std::vector<ui::AXTreeDelegate::Change>& changes) {
|
| + BrowserAccessibilityManager::OnAtomicUpdateFinished(
|
| + tree, root_changed, changes);
|
| +
|
| if (root_changed) {
|
| JNIEnv* env = AttachCurrentThread();
|
| - ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
|
| + ScopedJavaLocalRef<jobject> obj = GetJavaRefFromRootManager();
|
| if (obj.is_null())
|
| return;
|
|
|
| @@ -918,6 +921,18 @@ BrowserAccessibilityManagerAndroid::GetFromUniqueID(int32_t unique_id) {
|
| BrowserAccessibility::GetFromUniqueID(unique_id));
|
| }
|
|
|
| +ScopedJavaLocalRef<jobject>
|
| +BrowserAccessibilityManagerAndroid::GetJavaRefFromRootManager() {
|
| + BrowserAccessibilityManagerAndroid* root_manager =
|
| + static_cast<BrowserAccessibilityManagerAndroid*>(
|
| + GetRootManager());
|
| + if (!root_manager)
|
| + return ScopedJavaLocalRef<jobject>();
|
| +
|
| + JNIEnv* env = AttachCurrentThread();
|
| + return root_manager->java_ref().get(env);
|
| +}
|
| +
|
| bool RegisterBrowserAccessibilityManager(JNIEnv* env) {
|
| return RegisterNativesImpl(env);
|
| }
|
|
|