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;
import android.view.ViewStub;
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.toolbar.IncognitoStateProvider;
import org.chromium.chrome.browser.ui.appmenu.AppMenuButtonHelper;
......@@ -103,6 +104,14 @@ class StartSurfaceToolbarCoordinator {
mToolbarMediator.onBottomToolbarVisibilityChanged(isVisible);
}
/**
* @param overviewModeBehavior The {@link OverviewModeBehavior} to observe overview state
* changes.
*/
void setOverviewModeBehavior(OverviewModeBehavior overviewModeBehavior) {
mToolbarMediator.setOverviewModeBehavior(overviewModeBehavior);
}
void onNativeLibraryReady() {
mToolbarMediator.onNativeLibraryReady();
}
......
......@@ -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.LOGO_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 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.search_engines.TemplateUrlServiceFactory;
import org.chromium.chrome.browser.tabmodel.EmptyTabModelSelectorObserver;
......@@ -32,6 +37,8 @@ class StartSurfaceToolbarMediator {
private TabModelSelector mTabModelSelector;
private TemplateUrlServiceObserver mTemplateUrlObserver;
private TabModelSelectorObserver mTabModelSelectorObserver;
private OverviewModeBehavior mOverviewModeBehavior;
private OverviewModeObserver mOverviewModeObserver;
StartSurfaceToolbarMediator(PropertyModel model) {
mPropertyModel = model;
......@@ -61,6 +68,9 @@ class StartSurfaceToolbarMediator {
if (mTabModelSelectorObserver != null) {
mTabModelSelector.removeObserver(mTabModelSelectorObserver);
}
if (mOverviewModeObserver != null) {
mOverviewModeBehavior.removeOverviewModeObserver(mOverviewModeObserver);
}
}
void setAppMenuButtonHelper(AppMenuButtonHelper appMenuButtonHelper) {
......@@ -105,4 +115,23 @@ class StartSurfaceToolbarMediator {
void onBottomToolbarVisibilityChanged(boolean 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 {
new PropertyModel.WritableBooleanPropertyKey();
public static final PropertyModel.WritableBooleanPropertyKey MENU_IS_VISIBLE =
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,
NEW_TAB_CLICK_HANDLER, IS_VISIBLE, LOGO_IS_VISIBLE, IS_INCOGNITO,
INCOGNITO_STATE_PROVIDER, ACCESSIBILITY_ENABLED, MENU_IS_VISIBLE};
public static final PropertyKey[] ALL_KEYS =
new PropertyKey[] {APP_MENU_BUTTON_HELPER, NEW_TAB_CLICK_HANDLER, 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 {
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. */
void updateIncognito(boolean isIncognito) {
updatePrimaryColorAndTint(isIncognito);
......
......@@ -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.LOGO_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 android.view.View;
......@@ -38,6 +39,8 @@ class StartSurfaceToolbarViewBinder {
view.onAccessibilityStatusChanged(model.get(ACCESSIBILITY_ENABLED));
} else if (propertyKey == 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 {
} else if (mStartSurfaceToolbarCoordinator != null) {
mStartSurfaceToolbarCoordinator.setOnNewTabClickHandler(newTabClickHandler);
mStartSurfaceToolbarCoordinator.setTabModelSelector(tabModelSelector);
mStartSurfaceToolbarCoordinator.setOverviewModeBehavior(overviewModeBehavior);
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