Commit 84fe771e authored by Becky Zhou's avatar Becky Zhou Committed by Commit Bot

[Chrome Home] Mute background views for accessibility tab switcher

The changes make CompositorViewHolder not focusable and
OverviewListLayout not important when there is some view obscuring tabs.

Bug: 739382
Change-Id: I7739e25c31a659aae435c4e16313378caf7c4529
Reviewed-on: https://chromium-review.googlesource.com/679620Reviewed-by: default avatarTheresa <twellington@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Commit-Queue: Becky Zhou <huayinz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#504182}
parent d62df0a6
......@@ -117,6 +117,7 @@ import org.chromium.chrome.browser.toolbar.ToolbarControlContainer;
import org.chromium.chrome.browser.util.FeatureUtilities;
import org.chromium.chrome.browser.util.IntentUtils;
import org.chromium.chrome.browser.vr_shell.VrShellDelegate;
import org.chromium.chrome.browser.widget.OverviewListLayout;
import org.chromium.chrome.browser.widget.ViewHighlighter;
import org.chromium.chrome.browser.widget.bottomsheet.BottomSheet;
import org.chromium.chrome.browser.widget.bottomsheet.BottomSheet.StateChangeReason;
......@@ -2023,6 +2024,37 @@ public class ChromeTabbedActivity
return mLayoutManager != null && mLayoutManager.overviewVisible();
}
/**
* Update focus and accessibility importance for background view when accessibility tab switcher
* is used in Chrome Home.
*/
private void updateAccessibilityVisibility() {
if (getBottomSheet() == null || mLayoutManager == null) return;
CompositorViewHolder compositorViewHolder = getCompositorViewHolder();
if (compositorViewHolder != null) {
compositorViewHolder.setFocusable(!isViewObscuringAllTabs());
}
OverviewListLayout overviewListLayout =
(OverviewListLayout) mLayoutManager.getOverviewListLayout();
if (overviewListLayout != null) {
overviewListLayout.updateAccessibilityVisibility(!isViewObscuringAllTabs());
}
}
@Override
public void addViewObscuringAllTabs(View view) {
super.addViewObscuringAllTabs(view);
updateAccessibilityVisibility();
}
@Override
public void removeViewObscuringAllTabs(View view) {
super.removeViewObscuringAllTabs(view);
updateAccessibilityVisibility();
}
@Override
protected IntentHandlerDelegate createIntentHandlerDelegate() {
return new InternalIntentDelegate();
......
......@@ -8,6 +8,7 @@ import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.widget.FrameLayout;
import android.widget.ListView;
......@@ -209,4 +210,21 @@ public class OverviewListLayout extends Layout implements AccessibilityTabModelA
protected SceneLayer getSceneLayer() {
return mSceneLayer;
}
/**
* Set whether or not the accessibility tab switcher is visible (from an accessibility
* perspective), or whether it is obscured by another view.
* @param isVisible Whether or not accessibility tab switcher is visible.
*/
public void updateAccessibilityVisibility(boolean isVisible) {
if (mTabModelWrapper == null) return;
int importantForAccessibility = isVisible
? View.IMPORTANT_FOR_ACCESSIBILITY_AUTO
: View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS;
if (mTabModelWrapper.getImportantForAccessibility() != importantForAccessibility) {
mTabModelWrapper.setImportantForAccessibility(importantForAccessibility);
mTabModelWrapper.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED);
}
}
}
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