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); |
} |