Commit 0b7696b8 authored by Mia Glaese's avatar Mia Glaese Committed by Commit Bot

[Start Surface] Change StartSurfaceToolbar with OverviewModeState

Screenshots here:
https://drive.google.com/drive/folders/17MCAlDrQidwqYw1sDP1gJAeQZB2FGxbl?usp=sharing

Bug: 982018
Change-Id: Id682d6544b123fe6bb7c9777c319aff8c85458b3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1989994Reviewed-by: default avatarYusuf Ozuysal <yusufo@chromium.org>
Reviewed-by: default avatarPatrick Noland <pnoland@chromium.org>
Commit-Queue: Mia Glaese <glamia@chromium.org>
Cr-Commit-Position: refs/heads/master@{#729714}
parent ce4459b1
...@@ -8,6 +8,7 @@ import android.view.View; ...@@ -8,6 +8,7 @@ import android.view.View;
import android.view.ViewStub; import android.view.ViewStub;
import org.chromium.chrome.R; import org.chromium.chrome.R;
import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior;
import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.toolbar.IncognitoStateProvider; import org.chromium.chrome.browser.toolbar.IncognitoStateProvider;
import org.chromium.chrome.browser.ui.appmenu.AppMenuButtonHelper; import org.chromium.chrome.browser.ui.appmenu.AppMenuButtonHelper;
...@@ -103,6 +104,14 @@ class StartSurfaceToolbarCoordinator { ...@@ -103,6 +104,14 @@ class StartSurfaceToolbarCoordinator {
mToolbarMediator.onBottomToolbarVisibilityChanged(isVisible); mToolbarMediator.onBottomToolbarVisibilityChanged(isVisible);
} }
/**
* @param overviewModeBehavior The {@link OverviewModeBehavior} to observe overview state
* changes.
*/
void setOverviewModeBehavior(OverviewModeBehavior overviewModeBehavior) {
mToolbarMediator.setOverviewModeBehavior(overviewModeBehavior);
}
void onNativeLibraryReady() { void onNativeLibraryReady() {
mToolbarMediator.onNativeLibraryReady(); mToolbarMediator.onNativeLibraryReady();
} }
......
...@@ -11,10 +11,15 @@ import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarPropert ...@@ -11,10 +11,15 @@ import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarPropert
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IS_VISIBLE; import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IS_VISIBLE;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.LOGO_IS_VISIBLE; import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.LOGO_IS_VISIBLE;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.MENU_IS_VISIBLE; import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.MENU_IS_VISIBLE;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.NEW_TAB_BUTTON_IS_VISIBLE;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.NEW_TAB_CLICK_HANDLER; import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.NEW_TAB_CLICK_HANDLER;
import android.view.View; import android.view.View;
import org.chromium.chrome.browser.compositor.layouts.EmptyOverviewModeObserver;
import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior;
import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior.OverviewModeObserver;
import org.chromium.chrome.browser.compositor.layouts.OverviewModeState;
import org.chromium.chrome.browser.flags.FeatureUtilities; import org.chromium.chrome.browser.flags.FeatureUtilities;
import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory;
import org.chromium.chrome.browser.tabmodel.EmptyTabModelSelectorObserver; import org.chromium.chrome.browser.tabmodel.EmptyTabModelSelectorObserver;
...@@ -32,6 +37,8 @@ class StartSurfaceToolbarMediator { ...@@ -32,6 +37,8 @@ class StartSurfaceToolbarMediator {
private TabModelSelector mTabModelSelector; private TabModelSelector mTabModelSelector;
private TemplateUrlServiceObserver mTemplateUrlObserver; private TemplateUrlServiceObserver mTemplateUrlObserver;
private TabModelSelectorObserver mTabModelSelectorObserver; private TabModelSelectorObserver mTabModelSelectorObserver;
private OverviewModeBehavior mOverviewModeBehavior;
private OverviewModeObserver mOverviewModeObserver;
StartSurfaceToolbarMediator(PropertyModel model) { StartSurfaceToolbarMediator(PropertyModel model) {
mPropertyModel = model; mPropertyModel = model;
...@@ -61,6 +68,9 @@ class StartSurfaceToolbarMediator { ...@@ -61,6 +68,9 @@ class StartSurfaceToolbarMediator {
if (mTabModelSelectorObserver != null) { if (mTabModelSelectorObserver != null) {
mTabModelSelector.removeObserver(mTabModelSelectorObserver); mTabModelSelector.removeObserver(mTabModelSelectorObserver);
} }
if (mOverviewModeObserver != null) {
mOverviewModeBehavior.removeOverviewModeObserver(mOverviewModeObserver);
}
} }
void setAppMenuButtonHelper(AppMenuButtonHelper appMenuButtonHelper) { void setAppMenuButtonHelper(AppMenuButtonHelper appMenuButtonHelper) {
...@@ -105,4 +115,23 @@ class StartSurfaceToolbarMediator { ...@@ -105,4 +115,23 @@ class StartSurfaceToolbarMediator {
void onBottomToolbarVisibilityChanged(boolean isVisible) { void onBottomToolbarVisibilityChanged(boolean isVisible) {
mPropertyModel.set(MENU_IS_VISIBLE, !isVisible); mPropertyModel.set(MENU_IS_VISIBLE, !isVisible);
} }
void setOverviewModeBehavior(OverviewModeBehavior overviewModeBehavior) {
assert mOverviewModeBehavior == null;
mOverviewModeBehavior = overviewModeBehavior;
if (mOverviewModeObserver == null) {
mOverviewModeObserver = new EmptyOverviewModeObserver() {
@Override
public void onOverviewModeStateChanged(
@OverviewModeState int overviewModeState, boolean showTabSwitcherToolbar) {
boolean isShownTabswitcherState =
overviewModeState == OverviewModeState.SHOWN_TABSWITCHER;
mPropertyModel.set(LOGO_IS_VISIBLE, !isShownTabswitcherState);
mPropertyModel.set(NEW_TAB_BUTTON_IS_VISIBLE, isShownTabswitcherState);
}
};
}
mOverviewModeBehavior.addOverviewModeObserver(mOverviewModeObserver);
}
} }
...@@ -34,8 +34,11 @@ class StartSurfaceToolbarProperties { ...@@ -34,8 +34,11 @@ class StartSurfaceToolbarProperties {
new PropertyModel.WritableBooleanPropertyKey(); new PropertyModel.WritableBooleanPropertyKey();
public static final PropertyModel.WritableBooleanPropertyKey MENU_IS_VISIBLE = public static final PropertyModel.WritableBooleanPropertyKey MENU_IS_VISIBLE =
new PropertyModel.WritableBooleanPropertyKey(); new PropertyModel.WritableBooleanPropertyKey();
public static final PropertyModel.WritableBooleanPropertyKey NEW_TAB_BUTTON_IS_VISIBLE =
new PropertyModel.WritableBooleanPropertyKey();
public static final PropertyKey[] ALL_KEYS = new PropertyKey[] {APP_MENU_BUTTON_HELPER, public static final PropertyKey[] ALL_KEYS =
NEW_TAB_CLICK_HANDLER, IS_VISIBLE, LOGO_IS_VISIBLE, IS_INCOGNITO, new PropertyKey[] {APP_MENU_BUTTON_HELPER, NEW_TAB_CLICK_HANDLER, IS_VISIBLE,
INCOGNITO_STATE_PROVIDER, ACCESSIBILITY_ENABLED, MENU_IS_VISIBLE}; LOGO_IS_VISIBLE, IS_INCOGNITO, INCOGNITO_STATE_PROVIDER, ACCESSIBILITY_ENABLED,
MENU_IS_VISIBLE, NEW_TAB_BUTTON_IS_VISIBLE};
} }
...@@ -77,6 +77,13 @@ class StartSurfaceToolbarView extends RelativeLayout { ...@@ -77,6 +77,13 @@ class StartSurfaceToolbarView extends RelativeLayout {
mMenuButton.setVisibility(isVisible ? View.VISIBLE : View.GONE); mMenuButton.setVisibility(isVisible ? View.VISIBLE : View.GONE);
} }
/**
* @param isVisible Whether the new tab button is visible.
*/
void setNewTabButtonVisibility(boolean isVisible) {
mNewTabButton.setVisibility(isVisible ? View.VISIBLE : View.GONE);
}
/** Called when incognito mode changes. */ /** Called when incognito mode changes. */
void updateIncognito(boolean isIncognito) { void updateIncognito(boolean isIncognito) {
updatePrimaryColorAndTint(isIncognito); updatePrimaryColorAndTint(isIncognito);
......
...@@ -11,6 +11,7 @@ import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarPropert ...@@ -11,6 +11,7 @@ import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarPropert
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IS_VISIBLE; import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IS_VISIBLE;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.LOGO_IS_VISIBLE; import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.LOGO_IS_VISIBLE;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.MENU_IS_VISIBLE; import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.MENU_IS_VISIBLE;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.NEW_TAB_BUTTON_IS_VISIBLE;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.NEW_TAB_CLICK_HANDLER; import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.NEW_TAB_CLICK_HANDLER;
import android.view.View; import android.view.View;
...@@ -38,6 +39,8 @@ class StartSurfaceToolbarViewBinder { ...@@ -38,6 +39,8 @@ class StartSurfaceToolbarViewBinder {
view.onAccessibilityStatusChanged(model.get(ACCESSIBILITY_ENABLED)); view.onAccessibilityStatusChanged(model.get(ACCESSIBILITY_ENABLED));
} else if (propertyKey == MENU_IS_VISIBLE) { } else if (propertyKey == MENU_IS_VISIBLE) {
view.setMenuButtonVisibility(model.get(MENU_IS_VISIBLE)); view.setMenuButtonVisibility(model.get(MENU_IS_VISIBLE));
} else if (propertyKey == NEW_TAB_BUTTON_IS_VISIBLE) {
view.setNewTabButtonVisibility(model.get(NEW_TAB_BUTTON_IS_VISIBLE));
} }
} }
} }
...@@ -144,6 +144,7 @@ public class TopToolbarCoordinator implements Toolbar { ...@@ -144,6 +144,7 @@ public class TopToolbarCoordinator implements Toolbar {
} else if (mStartSurfaceToolbarCoordinator != null) { } else if (mStartSurfaceToolbarCoordinator != null) {
mStartSurfaceToolbarCoordinator.setOnNewTabClickHandler(newTabClickHandler); mStartSurfaceToolbarCoordinator.setOnNewTabClickHandler(newTabClickHandler);
mStartSurfaceToolbarCoordinator.setTabModelSelector(tabModelSelector); mStartSurfaceToolbarCoordinator.setTabModelSelector(tabModelSelector);
mStartSurfaceToolbarCoordinator.setOverviewModeBehavior(overviewModeBehavior);
mStartSurfaceToolbarCoordinator.onNativeLibraryReady(); mStartSurfaceToolbarCoordinator.onNativeLibraryReady();
} }
......
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