Commit 56e0d049 authored by Matt Jones's avatar Matt Jones Committed by Commit Bot

Tab obscuring no longer requires access to BottomSheet view

The setIsObscuringAllTabs API on BottomSheetController was originally
necessary because the TabObscuringHandler needed access to the view
being obscured. The handler has changed such that is is now token based
and therefore no longer needs to be an API on the controller.

Bug: 100227
Change-Id: Iff028b627833ceaa4cdd424c6e5305dde7b4dfd0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2212512
Commit-Queue: Matthew Jones <mdjones@chromium.org>
Reviewed-by: default avatarSandro Maggi <sandromaggi@google.com>
Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Cr-Commit-Position: refs/heads/master@{#773309}
parent d3a89b0e
...@@ -40,6 +40,7 @@ import org.chromium.components.browser_ui.bottomsheet.BottomSheetContent; ...@@ -40,6 +40,7 @@ import org.chromium.components.browser_ui.bottomsheet.BottomSheetContent;
import org.chromium.content_public.browser.UiThreadTaskTraits; import org.chromium.content_public.browser.UiThreadTaskTraits;
import org.chromium.content_public.browser.WebContents; import org.chromium.content_public.browser.WebContents;
import org.chromium.ui.base.ApplicationViewportInsetSupplier; import org.chromium.ui.base.ApplicationViewportInsetSupplier;
import org.chromium.ui.util.TokenHolder;
/** /**
* Coordinator responsible for the Autofill Assistant bottom bar. * Coordinator responsible for the Autofill Assistant bottom bar.
...@@ -88,6 +89,9 @@ class AssistantBottomBarCoordinator implements AssistantPeekHeightCoordinator.De ...@@ -88,6 +89,9 @@ class AssistantBottomBarCoordinator implements AssistantPeekHeightCoordinator.De
@AssistantViewportMode @AssistantViewportMode
private int mTargetViewportMode = AssistantViewportMode.NO_RESIZE; private int mTargetViewportMode = AssistantViewportMode.NO_RESIZE;
/** A token held while the assistant is obscuring all tabs. */
private int mObscuringToken;
AssistantBottomBarCoordinator(Activity activity, AssistantModel model, AssistantBottomBarCoordinator(Activity activity, AssistantModel model,
BottomSheetController controller, BottomSheetController controller,
ApplicationViewportInsetSupplier applicationViewportInsetSupplier, ApplicationViewportInsetSupplier applicationViewportInsetSupplier,
...@@ -205,8 +209,12 @@ class AssistantBottomBarCoordinator implements AssistantPeekHeightCoordinator.De ...@@ -205,8 +209,12 @@ class AssistantBottomBarCoordinator implements AssistantPeekHeightCoordinator.De
hide(); hide();
} }
} else if (AssistantModel.ALLOW_TALKBACK_ON_WEBSITE == propertyKey) { } else if (AssistantModel.ALLOW_TALKBACK_ON_WEBSITE == propertyKey) {
controller.setIsObscuringAllTabs( if (!model.get(AssistantModel.ALLOW_TALKBACK_ON_WEBSITE)) {
tabObscuringHandler, !model.get(AssistantModel.ALLOW_TALKBACK_ON_WEBSITE)); mObscuringToken = tabObscuringHandler.obscureAllTabs();
} else {
tabObscuringHandler.unobscureAllTabs(mObscuringToken);
mObscuringToken = TokenHolder.INVALID_TOKEN;
}
} else if (AssistantModel.WEB_CONTENTS == propertyKey) { } else if (AssistantModel.WEB_CONTENTS == propertyKey) {
mWebContents = model.get(AssistantModel.WEB_CONTENTS); mWebContents = model.get(AssistantModel.WEB_CONTENTS);
} else if (AssistantModel.TALKBACK_SHEET_SIZE_FRACTION == propertyKey) { } else if (AssistantModel.TALKBACK_SHEET_SIZE_FRACTION == propertyKey) {
...@@ -297,8 +305,8 @@ class AssistantBottomBarCoordinator implements AssistantPeekHeightCoordinator.De ...@@ -297,8 +305,8 @@ class AssistantBottomBarCoordinator implements AssistantPeekHeightCoordinator.De
mWindowApplicationInsetSupplier.removeSupplier(mInsetSupplier); mWindowApplicationInsetSupplier.removeSupplier(mInsetSupplier);
AccessibilityUtil.removeObserver(mAccessibilityObserver); AccessibilityUtil.removeObserver(mAccessibilityObserver);
if (!mModel.get(AssistantModel.ALLOW_TALKBACK_ON_WEBSITE)) { if (mObscuringToken != TokenHolder.INVALID_TOKEN) {
mBottomSheetController.setIsObscuringAllTabs(mTabObscuringHandler, false); mTabObscuringHandler.unobscureAllTabs(mObscuringToken);
} }
mInfoBoxCoordinator.destroy(); mInfoBoxCoordinator.destroy();
......
...@@ -42,6 +42,9 @@ class BottomSheetManager extends EmptyBottomSheetObserver implements Destroyable ...@@ -42,6 +42,9 @@ class BottomSheetManager extends EmptyBottomSheetObserver implements Destroyable
/** A delegate that provides the functionality of obscuring all tabs. */ /** A delegate that provides the functionality of obscuring all tabs. */
private TabObscuringHandler mTabObscuringHandler; private TabObscuringHandler mTabObscuringHandler;
/** A token held while the bottom sheet is obscuring all visible tabs. */
private int mTabObscuringToken;
/** /**
* Used to track whether the active content has a custom scrim lifecycle. This is kept here * Used to track whether the active content has a custom scrim lifecycle. This is kept here
* because there are some instances where the active content is changed prior to the close event * because there are some instances where the active content is changed prior to the close event
...@@ -58,6 +61,7 @@ class BottomSheetManager extends EmptyBottomSheetObserver implements Destroyable ...@@ -58,6 +61,7 @@ class BottomSheetManager extends EmptyBottomSheetObserver implements Destroyable
mDialogManager = dialogManager; mDialogManager = dialogManager;
mSnackbarManager = snackbarManagerSupplier; mSnackbarManager = snackbarManagerSupplier;
mTabObscuringHandler = obscuringDelegate; mTabObscuringHandler = obscuringDelegate;
mTabObscuringToken = TokenHolder.INVALID_TOKEN;
mSheetController.addObserver(this); mSheetController.addObserver(this);
} }
...@@ -80,7 +84,7 @@ class BottomSheetManager extends EmptyBottomSheetObserver implements Destroyable ...@@ -80,7 +84,7 @@ class BottomSheetManager extends EmptyBottomSheetObserver implements Destroyable
return; return;
} }
mSheetController.setIsObscuringAllTabs(mTabObscuringHandler, true); setIsObscuringAllTabs(true);
assert mAppModalToken == TokenHolder.INVALID_TOKEN; assert mAppModalToken == TokenHolder.INVALID_TOKEN;
assert mTabModalToken == TokenHolder.INVALID_TOKEN; assert mTabModalToken == TokenHolder.INVALID_TOKEN;
...@@ -101,7 +105,7 @@ class BottomSheetManager extends EmptyBottomSheetObserver implements Destroyable ...@@ -101,7 +105,7 @@ class BottomSheetManager extends EmptyBottomSheetObserver implements Destroyable
return; return;
} }
mSheetController.setIsObscuringAllTabs(mTabObscuringHandler, false); setIsObscuringAllTabs(false);
// Tokens can be invalid if the sheet has a custom lifecycle. // Tokens can be invalid if the sheet has a custom lifecycle.
if (mDialogManager.get() != null if (mDialogManager.get() != null
...@@ -117,6 +121,20 @@ class BottomSheetManager extends EmptyBottomSheetObserver implements Destroyable ...@@ -117,6 +121,20 @@ class BottomSheetManager extends EmptyBottomSheetObserver implements Destroyable
mTabModalToken = TokenHolder.INVALID_TOKEN; mTabModalToken = TokenHolder.INVALID_TOKEN;
} }
/**
* Set whether the bottom sheet is obscuring all tabs.
* @param isObscuring Whether the bottom sheet is considered to be obscuring.
*/
private void setIsObscuringAllTabs(boolean isObscuring) {
if (isObscuring) {
assert mTabObscuringToken == TokenHolder.INVALID_TOKEN;
mTabObscuringToken = mTabObscuringHandler.obscureAllTabs();
} else {
mTabObscuringHandler.unobscureAllTabs(mTabObscuringToken);
mTabObscuringToken = TokenHolder.INVALID_TOKEN;
}
}
@Override @Override
public void onSheetOffsetChanged(float heightFraction, float offsetPx) { public void onSheetOffsetChanged(float heightFraction, float offsetPx) {
if (mSnackbarManager.get() == null) return; if (mSnackbarManager.get() == null) return;
......
...@@ -26,7 +26,6 @@ import org.chromium.chrome.browser.lifecycle.Destroyable; ...@@ -26,7 +26,6 @@ import org.chromium.chrome.browser.lifecycle.Destroyable;
import org.chromium.chrome.browser.tab.EmptyTabObserver; import org.chromium.chrome.browser.tab.EmptyTabObserver;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabObserver; import org.chromium.chrome.browser.tab.TabObserver;
import org.chromium.chrome.browser.ui.TabObscuringHandler;
import org.chromium.chrome.browser.vr.VrModuleProvider; import org.chromium.chrome.browser.vr.VrModuleProvider;
import org.chromium.chrome.browser.widget.ScrimView.ScrimObserver; import org.chromium.chrome.browser.widget.ScrimView.ScrimObserver;
import org.chromium.chrome.browser.widget.ScrimView.ScrimParams; import org.chromium.chrome.browser.widget.ScrimView.ScrimParams;
...@@ -35,7 +34,6 @@ import org.chromium.components.browser_ui.widget.scrim.ScrimCoordinator; ...@@ -35,7 +34,6 @@ import org.chromium.components.browser_ui.widget.scrim.ScrimCoordinator;
import org.chromium.components.browser_ui.widget.scrim.ScrimProperties; import org.chromium.components.browser_ui.widget.scrim.ScrimProperties;
import org.chromium.ui.KeyboardVisibilityDelegate; import org.chromium.ui.KeyboardVisibilityDelegate;
import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.modelutil.PropertyModel;
import org.chromium.ui.util.TokenHolder;
import org.chromium.ui.vr.VrModeObserver; import org.chromium.ui.vr.VrModeObserver;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
...@@ -164,9 +162,6 @@ public class BottomSheetController implements Destroyable { ...@@ -164,9 +162,6 @@ public class BottomSheetController implements Destroyable {
*/ */
private List<BottomSheetObserver> mPendingSheetObservers; private List<BottomSheetObserver> mPendingSheetObservers;
/** A token held while the bottom sheet is obscuring all visible tabs. */
private int mTabObscuringToken;
/** The state of the sheet so it can be returned to what it was prior to suppression. */ /** The state of the sheet so it can be returned to what it was prior to suppression. */
@SheetState @SheetState
private int mSheetStateBeforeSuppress; private int mSheetStateBeforeSuppress;
...@@ -196,7 +191,6 @@ public class BottomSheetController implements Destroyable { ...@@ -196,7 +191,6 @@ public class BottomSheetController implements Destroyable {
mBrowserControlsStateProvider = fullscreenManager; mBrowserControlsStateProvider = fullscreenManager;
mFullscreenManager = fullscreenManager; mFullscreenManager = fullscreenManager;
mPendingSheetObservers = new ArrayList<>(); mPendingSheetObservers = new ArrayList<>();
mTabObscuringToken = TokenHolder.INVALID_TOKEN;
mPendingSheetObservers.add(new EmptyBottomSheetObserver() { mPendingSheetObservers.add(new EmptyBottomSheetObserver() {
/** The token used to enable browser controls persistence. */ /** The token used to enable browser controls persistence. */
...@@ -517,21 +511,6 @@ public class BottomSheetController implements Destroyable { ...@@ -517,21 +511,6 @@ public class BottomSheetController implements Destroyable {
return mToolbarShadowHeight + mShadowTopOffset; return mToolbarShadowHeight + mShadowTopOffset;
} }
/**
* Set whether the bottom sheet is obscuring all tabs.
* @param obscuringHandler A handler that provides the functionality of obscuring all tabs.
* @param isObscuring Whether the bottom sheet is considered to be obscuring.
*/
public void setIsObscuringAllTabs(TabObscuringHandler obscuringHandler, boolean isObscuring) {
if (isObscuring) {
assert mTabObscuringToken == TokenHolder.INVALID_TOKEN;
mTabObscuringToken = obscuringHandler.obscureAllTabs();
} else {
obscuringHandler.unobscureAllTabs(mTabObscuringToken);
mTabObscuringToken = TokenHolder.INVALID_TOKEN;
}
}
/** /**
* @param observer The observer to add. * @param observer The observer to add.
*/ */
......
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