Commit d9b6f0c0 authored by Matt Jones's avatar Matt Jones Committed by Commit Bot

Replace ScrimView with ScrimCoordinator in contextual search

Bug: 1062099
Change-Id: If923b8cd540f6004bc13603d98c81a00c80f4d8c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2307487
Commit-Queue: Matthew Jones <mdjones@chromium.org>
Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Reviewed-by: default avatarDonn Denman <donnd@chromium.org>
Cr-Commit-Position: refs/heads/master@{#790552}
parent ead3a32e
......@@ -755,8 +755,10 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
getTabContentManager().initWithNative();
mCompositorViewHolder.onNativeLibraryReady(getWindowAndroid(), getTabContentManager());
// TODO(1107916): Move contextual search initialization to the RootUiCoordinator.
if (ContextualSearchFieldTrial.isEnabled()) {
mContextualSearchManager = new ContextualSearchManager(this, this);
mContextualSearchManager = new ContextualSearchManager(
this, this, mRootUiCoordinator.getScrimCoordinator());
}
TraceEvent.end("ChromeActivity:CompositorInitialization");
......
......@@ -27,9 +27,10 @@ import org.chromium.chrome.browser.contextualsearch.ResolvedSearchTerm.CardTag;
import org.chromium.chrome.browser.flags.ActivityType;
import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.widget.ScrimView;
import org.chromium.chrome.browser.widget.ScrimView.ScrimParams;
import org.chromium.components.browser_ui.widget.scrim.ScrimCoordinator;
import org.chromium.components.browser_ui.widget.scrim.ScrimProperties;
import org.chromium.ui.base.LocalizationUtils;
import org.chromium.ui.modelutil.PropertyModel;
import org.chromium.ui.resources.ResourceManager;
/**
......@@ -59,16 +60,16 @@ public class ContextualSearchPanel extends OverlayPanel {
private ContextualSearchSceneLayer mSceneLayer;
/**
* A ScrimView for adjusting the Status Bar's brightness when a scrim is present (when the panel
* is open).
* A ScrimCoordinator for adjusting the Status Bar's brightness when a scrim is present (when
* the panel is open).
*/
private ScrimView mScrimView;
private ScrimCoordinator mScrimCoordinator;
/**
* Params that configure our use of the ScrimView for adjusting the Status Bar's
* Params that configure our use of the ScrimCoordinator for adjusting the Status Bar's
* brightness when a scrim is present (when the panel is open).
*/
private ScrimParams mScrimParams;
private PropertyModel mScrimProperties;
// ============================================================================================
// Constructor
......@@ -228,7 +229,7 @@ public class ContextualSearchPanel extends OverlayPanel {
super.onClosed(reason);
if (mSceneLayer != null) mSceneLayer.hideTree();
if (mScrimView != null) mScrimView.hideScrim(false);
if (mScrimCoordinator != null) mScrimCoordinator.hideScrim(false);
}
// ============================================================================================
......@@ -704,18 +705,27 @@ public class ContextualSearchPanel extends OverlayPanel {
float statusBarAlpha =
(maxBrightness - basePageBrightness) / (maxBrightness - minBrightness);
if (statusBarAlpha == 0.0) {
if (mScrimView != null) mScrimView.hideScrim(false);
mScrimParams = null;
mScrimView = null;
if (mScrimCoordinator != null) mScrimCoordinator.hideScrim(false);
mScrimProperties = null;
mScrimCoordinator = null;
return;
} else {
mScrimView = mManagementDelegate.getChromeActivity().getScrim();
if (mScrimParams == null) {
mScrimParams = new ScrimParams(null, false, true, 0, null);
mScrimView.showScrim(mScrimParams);
mScrimCoordinator = mManagementDelegate.getScrimCoordinator();
if (mScrimProperties == null) {
mScrimProperties =
new PropertyModel.Builder(ScrimProperties.REQUIRED_KEYS)
.with(ScrimProperties.TOP_MARGIN, 0)
.with(ScrimProperties.AFFECTS_STATUS_BAR, true)
.with(ScrimProperties.ANCHOR_VIEW,
mActivity.getCompositorViewHolder())
.with(ScrimProperties.SHOW_IN_FRONT_OF_ANCHOR_VIEW, false)
.with(ScrimProperties.VISIBILITY_CALLBACK, null)
.with(ScrimProperties.CLICK_DELEGATE, null)
.build();
mScrimCoordinator.showScrim(mScrimProperties);
}
mScrimView.setViewAlpha(statusBarAlpha);
mScrimCoordinator.setAlpha(statusBarAlpha);
}
}
......
......@@ -8,6 +8,7 @@ import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.compositor.bottombar.OverlayContentDelegate;
import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel.StateChangeReason;
import org.chromium.chrome.browser.compositor.bottombar.contextualsearch.ContextualSearchPanel;
import org.chromium.components.browser_ui.widget.scrim.ScrimCoordinator;
/**
* The delegate that provides global management functionality for Contextual Search.
......@@ -80,4 +81,9 @@ public interface ContextualSearchManagementDelegate {
* Called when the Contextual Search panel is resized.
*/
void onPanelResized();
/**
* @return A {@link ScrimCoordinator} to fade the status bar in and out.
*/
ScrimCoordinator getScrimCoordinator();
}
......@@ -49,6 +49,7 @@ import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabModelObserver;
import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver;
import org.chromium.chrome.browser.util.ChromeAccessibilityUtil;
import org.chromium.components.browser_ui.widget.scrim.ScrimCoordinator;
import org.chromium.components.external_intents.ExternalNavigationHandler;
import org.chromium.components.external_intents.ExternalNavigationHandler.OverrideUrlLoadingResult;
import org.chromium.components.external_intents.ExternalNavigationParams;
......@@ -134,6 +135,8 @@ public class ContextualSearchManager
private final ContextualSearchSelectionClient mContextualSearchSelectionClient;
private final ScrimCoordinator mScrimCoordinator;
private ContextualSearchSelectionController mSelectionController;
private ContextualSearchNetworkCommunicator mNetworkCommunicator;
private ContextualSearchPolicy mPolicy;
......@@ -221,11 +224,14 @@ public class ContextualSearchManager
* @param activity The {@code ChromeActivity} in use.
* @param tabPromotionDelegate The {@link ContextualSearchTabPromotionDelegate} that is
* responsible for building tabs from contextual search {@link WebContents}.
* @param scrimCoordinator A mechanism for showing and hiding the shared scrim.
*/
public ContextualSearchManager(
ChromeActivity activity, ContextualSearchTabPromotionDelegate tabPromotionDelegate) {
public ContextualSearchManager(ChromeActivity activity,
ContextualSearchTabPromotionDelegate tabPromotionDelegate,
ScrimCoordinator scrimCoordinator) {
mActivity = activity;
mTabPromotionDelegate = tabPromotionDelegate;
mScrimCoordinator = scrimCoordinator;
final View controlContainer = mActivity.findViewById(R.id.control_container);
mOnFocusChangeListener = new OnGlobalFocusChangeListener() {
......@@ -1271,6 +1277,11 @@ public class ContextualSearchManager
mInProductHelp.updateBubblePosition();
}
@Override
public ScrimCoordinator getScrimCoordinator() {
return mScrimCoordinator;
}
/** @return The {@link SelectionClient} used by Contextual Search. */
SelectionClient getContextualSearchSelectionClient() {
return mContextualSearchSelectionClient;
......
......@@ -97,7 +97,7 @@ public class ContextualSearchTapEventTest {
*/
private static class ContextualSearchManagerWrapper extends ContextualSearchManager {
public ContextualSearchManagerWrapper(ChromeActivity activity) {
super(activity, null);
super(activity, null, activity.getRootUiCoordinatorForTesting().getScrimCoordinator());
setSelectionController(new MockCSSelectionController(activity, this));
WebContents webContents = WebContentsFactory.createWebContents(false, false);
ContentView cv = ContentView.createContentView(
......
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