Commit ce447ed4 authored by Paul Miller's avatar Paul Miller Committed by Commit Bot

A11y: Refactor out UpdateEnabledState

UpdateEnabledState is really 2 functions in one:
UpdateEnabledState(true) is only called from Enable, and
UpdateEnabledState(false) is only called from ~Connector. Despite its
name, UpdateEnabledState(false) must not actually disable accessibility,
because of bugs 775532 and 792269. So fold the 2 parts into their
respective call sites.

BUG=792269

Change-Id: Ie7afcebda79820d4856a8b050f9b865c2bd1f5c3
Reviewed-on: https://chromium-review.googlesource.com/812084Reviewed-by: default avatarDominic Mazzoni <dmazzoni@chromium.org>
Reviewed-by: default avatarBrian White <bcwhite@chromium.org>
Commit-Queue: Paul Miller <paulmiller@chromium.org>
Cr-Commit-Position: refs/heads/master@{#523540}
parent 8914dbba
...@@ -325,7 +325,12 @@ WebContentsAccessibilityAndroid::Connector::Connector( ...@@ -325,7 +325,12 @@ WebContentsAccessibilityAndroid::Connector::Connector(
} }
WebContentsAccessibilityAndroid::Connector::~Connector() { WebContentsAccessibilityAndroid::Connector::~Connector() {
accessibility_->UpdateEnabledState(false); // Remove accessibility from the BrowserAccessibilityManager or it may
// continue to reference this object which is being destroyed.
auto* manager = static_cast<BrowserAccessibilityManagerAndroid*>(
accessibility_->web_contents_->GetRootBrowserAccessibilityManager());
if (manager)
manager->set_web_contents_accessibility(nullptr);
} }
void WebContentsAccessibilityAndroid::Connector::UpdateRenderProcessConnection( void WebContentsAccessibilityAndroid::Connector::UpdateRenderProcessConnection(
...@@ -369,39 +374,27 @@ jboolean WebContentsAccessibilityAndroid::IsEnabled( ...@@ -369,39 +374,27 @@ jboolean WebContentsAccessibilityAndroid::IsEnabled(
void WebContentsAccessibilityAndroid::Enable(JNIEnv* env, void WebContentsAccessibilityAndroid::Enable(JNIEnv* env,
const JavaParamRef<jobject>& obj) { const JavaParamRef<jobject>& obj) {
UpdateEnabledState(true);
}
void WebContentsAccessibilityAndroid::UpdateEnabledState(bool enabled) {
BrowserAccessibilityStateImpl* accessibility_state = BrowserAccessibilityStateImpl* accessibility_state =
BrowserAccessibilityStateImpl::GetInstance(); BrowserAccessibilityStateImpl::GetInstance();
auto* manager = static_cast<BrowserAccessibilityManagerAndroid*>( auto* manager = static_cast<BrowserAccessibilityManagerAndroid*>(
web_contents_->GetRootBrowserAccessibilityManager()); web_contents_->GetRootBrowserAccessibilityManager());
if (enabled) { // First check if we already have a BrowserAccessibilityManager that
// First check if we already have a BrowserAccessibilityManager that // that needs to be connected to this instance. This can happen if
// that needs to be connected to this instance. This can happen if // BAM creation precedes render view updates for the associated
// BAM creation precedes render view updates for the associated // web contents.
// web contents. if (manager) {
if (manager) { set_root_manager(manager);
set_root_manager(manager); manager->set_web_contents_accessibility(this);
manager->set_web_contents_accessibility(this); return;
return;
}
// Otherwise, enable accessibility globally unless it was
// explicitly disallowed by a command-line flag, then enable it for
// this WebContents if that succeeded.
accessibility_state->OnScreenReaderDetected();
if (accessibility_state->IsAccessibleBrowser())
web_contents_->AddAccessibilityMode(ui::kAXModeComplete);
} else {
// Remove accessibility from the BrowserAccessibilityManager or it may
// continue to reference this object which is no longer active (and may be
// about to be destroyed).
if (manager)
manager->set_web_contents_accessibility(nullptr);
} }
// Otherwise, enable accessibility globally unless it was
// explicitly disallowed by a command-line flag, then enable it for
// this WebContents if that succeeded.
accessibility_state->OnScreenReaderDetected();
if (accessibility_state->IsAccessibleBrowser())
web_contents_->AddAccessibilityMode(ui::kAXModeComplete);
} }
bool WebContentsAccessibilityAndroid::ShouldRespectDisplayedPasswordText() { bool WebContentsAccessibilityAndroid::ShouldRespectDisplayedPasswordText() {
......
...@@ -244,8 +244,6 @@ class CONTENT_EXPORT WebContentsAccessibilityAndroid ...@@ -244,8 +244,6 @@ class CONTENT_EXPORT WebContentsAccessibilityAndroid
private: private:
BrowserAccessibilityAndroid* GetAXFromUniqueID(int32_t unique_id); BrowserAccessibilityAndroid* GetAXFromUniqueID(int32_t unique_id);
void UpdateEnabledState(bool enabled);
void CollectStats(); void CollectStats();
// A weak reference to the Java WebContentsAccessibilityAndroid object. // A weak reference to the Java WebContentsAccessibilityAndroid object.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment