Commit 61c6121a authored by dmazzoni's avatar dmazzoni Committed by Commit bot

Only set accessibility focus on page load for browser tabs, not web views.

BUG=406053

Review URL: https://codereview.chromium.org/490333002

Cr-Commit-Position: refs/heads/master@{#291713}
parent e6f63e7b
...@@ -830,6 +830,11 @@ public class Tab implements NavigationClient { ...@@ -830,6 +830,11 @@ public class Tab implements NavigationClient {
} }
for (TabObserver observer : mObservers) observer.onContentChanged(this); for (TabObserver observer : mObservers) observer.onContentChanged(this);
// For browser tabs, we want to set accessibility focus to the page
// when it loads. This is not the default behavior for embedded
// web views.
mContentViewCore.setShouldSetAccessibilityFocusOnPageLoad(true);
} }
/** /**
......
...@@ -295,6 +295,12 @@ public class ContentViewCore ...@@ -295,6 +295,12 @@ public class ContentViewCore
// Accessibility touch exploration state. // Accessibility touch exploration state.
private boolean mTouchExplorationEnabled; private boolean mTouchExplorationEnabled;
// Whether accessibility focus should be set to the page when it finishes loading.
// This only applies if an accessibility service like TalkBack is running.
// This is desirable behavior for a browser window, but not for an embedded
// WebView.
private boolean mShouldSetAccessibilityFocusOnPageLoad;
// Allows us to dynamically respond when the accessibility script injection flag changes. // Allows us to dynamically respond when the accessibility script injection flag changes.
private ContentObserver mAccessibilityScriptInjectionObserver; private ContentObserver mAccessibilityScriptInjectionObserver;
...@@ -2878,6 +2884,23 @@ public class ContentViewCore ...@@ -2878,6 +2884,23 @@ public class ContentViewCore
mAccessibilityInjector.onPageLostFocus(); mAccessibilityInjector.onPageLostFocus();
} }
/**
* Return whether or not we should set accessibility focus on page load.
*/
public boolean shouldSetAccessibilityFocusOnPageLoad() {
return mShouldSetAccessibilityFocusOnPageLoad;
}
/**
* Return whether or not we should set accessibility focus on page load.
* This only applies if an accessibility service like TalkBack is running.
* This is desirable behavior for a browser window, but not for an embedded
* WebView.
*/
public void setShouldSetAccessibilityFocusOnPageLoad(boolean on) {
mShouldSetAccessibilityFocusOnPageLoad = on;
}
/** /**
* Inform WebKit that Fullscreen mode has been exited by the user. * Inform WebKit that Fullscreen mode has been exited by the user.
*/ */
......
...@@ -370,9 +370,11 @@ public class BrowserAccessibilityManager { ...@@ -370,9 +370,11 @@ public class BrowserAccessibilityManager {
private void handlePageLoaded(int id) { private void handlePageLoaded(int id) {
if (mUserHasTouchExplored) return; if (mUserHasTouchExplored) return;
if (mContentViewCore.shouldSetAccessibilityFocusOnPageLoad()) {
mAccessibilityFocusId = id; mAccessibilityFocusId = id;
sendAccessibilityEvent(id, AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED); sendAccessibilityEvent(id, AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED);
} }
}
@CalledByNative @CalledByNative
private void handleFocusChanged(int id) { private void handleFocusChanged(int id) {
......
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