Commit c4596c3d authored by Mia Glaese's avatar Mia Glaese Committed by Commit Bot

[Start Surface] Add identity disc to toolbar.

Screenshots here:
https://drive.google.com/drive/folders/1ya-W3P0fFftqwD8MVoc1FaGcOJucjawm?usp=sharing

Video record:
1, single start surface
https://drive.google.com/a/google.com/file/d/1TsAyE5lzz5OyaluVWFsjOnoY7RFMit7d/view?usp=sharing
2, tasks only start surface
https://drive.google.com/a/google.com/file/d/1Jij-EpFKZOFWhf5BV79yP97JSWgF4QxA/view?usp=sharing
3, start surface disabled
https://drive.google.com/a/google.com/file/d/15AlCELYCu_FgdifcO9NyGp5eCVQzNzBG/view?usp=sharing

Bug: 982018
Change-Id: I3b3bb7daa9eb58ab9cd804d58c376f0c9be9edfe
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1992272
Commit-Queue: Ganggui Tang <gogerald@chromium.org>
Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Reviewed-by: default avatarPatrick Noland <pnoland@chromium.org>
Reviewed-by: default avatarPavel Yatsuk <pavely@chromium.org>
Reviewed-by: default avatarYusuf Ozuysal <yusufo@chromium.org>
Reviewed-by: default avatarGanggui Tang <gogerald@chromium.org>
Cr-Commit-Position: refs/heads/master@{#733785}
parent d798e544
......@@ -18,7 +18,7 @@
android:layout_centerVertical="true"
android:layout_alignParentStart="true"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:paddingEnd="8dp"
android:thumb="@drawable/incognito_switch"
android:track="@drawable/incognito_switch_track"
android:visibility="gone"/>
......@@ -43,10 +43,17 @@
android:layout_width="wrap_content"
android:layout_toStartOf="@+id/menu_anchor"
android:layout_centerVertical="true"
android:paddingStart="16dp"
android:paddingEnd="16dp"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:contentDescription="@string/accessibility_toolbar_btn_new_tab" />
<include
layout="@layout/experimental_toolbar_button"
android:id="@+id/experimental_toolbar_button_start"
android:layout_toStartOf="@+id/menu_anchor"
style="@style/ToolbarButton"
android:visibility="gone" />
<FrameLayout
android:id="@+id/menu_anchor"
android:layout_width="wrap_content"
......
......@@ -320,6 +320,10 @@
24dp is needed to completely round the corners. -->
<dimen name="modern_toolbar_background_corner_radius">24dp</dimen>
<!-- Start surface toolbar dimensions -->
<dimen name="start_surface_toolbar_button_padding_to_button">8dp</dimen>
<dimen name="start_surface_toolbar_button_padding_to_edge">16dp</dimen>
<!-- Omnibox suggestions -->
<dimen name="omnibox_suggestion_height">60dp</dimen>
<dimen name="omnibox_suggestion_answer_height">72dp</dimen>
......
......@@ -70,7 +70,7 @@ class IdentityDiscController implements NativeInitObserver, ProfileDataCache.Obs
@IdentityDiscState
private int mState = IdentityDiscState.NONE;
private boolean mIsNTPVisible;
private boolean mShouldShowButton;
/**
* Creates IdentityDiscController object.
......@@ -98,23 +98,23 @@ class IdentityDiscController implements NativeInitObserver, ProfileDataCache.Obs
}
/**
* Shows/hides Identity Disc depending on whether NTP is visible.
* Shows/hides Identity Disc.
*/
void updateButtonState() {
updateButtonState(mIsNTPVisible);
updateButtonState(mShouldShowButton);
}
/**
* Shows/hides Identity Disc depending on whether NTP is visible.
* @param shouldShowButton Whether to show the Identity Disc.
*/
void updateButtonState(boolean isNTPVisible) {
mIsNTPVisible = isNTPVisible;
void updateButtonState(boolean shouldShowButton) {
mShouldShowButton = shouldShowButton;
String accountName = ChromeSigninController.get().getSignedInAccountName();
boolean shouldShowIdentityDisc = isNTPVisible && accountName != null;
boolean canShowIdentityDisc = mShouldShowButton && accountName != null;
@IdentityDiscState
int oldState = mState;
mState = !shouldShowIdentityDisc
mState = !canShowIdentityDisc
? IdentityDiscState.NONE
: mToolbarManager.isBottomToolbarVisible() ? IdentityDiscState.LARGE
: IdentityDiscState.SMALL;
......
......@@ -251,6 +251,9 @@ public class ToolbarManager implements ScrimObserver, ToolbarTabController, UrlF
private int mCurrentOrientation;
@OverviewModeState
private int mOverviewModeState = OverviewModeState.NOT_SHOWN;
/**
* Runnable for the home and search accelerator button when Start Surface home page is enabled.
*/
......@@ -735,7 +738,11 @@ public class ToolbarManager implements ScrimObserver, ToolbarTabController, UrlF
@Override
public void onOverviewModeStateChanged(
@OverviewModeState int overviewModeState, boolean showTabSwitcherToolbar) {
assert FeatureUtilities.isStartSurfaceEnabled();
mToolbar.updateTabSwitcherToolbarState(showTabSwitcherToolbar);
mOverviewModeState = overviewModeState;
mIdentityDiscController.updateButtonState(
mOverviewModeState == OverviewModeState.SHOWN_HOMEPAGE);
}
@Override
......@@ -757,6 +764,7 @@ public class ToolbarManager implements ScrimObserver, ToolbarTabController, UrlF
@Override
public void onOverviewModeFinishedHiding() {
mToolbar.onTabSwitcherTransitionFinished();
updateButtonStatus();
}
};
......@@ -1880,8 +1888,12 @@ public class ToolbarManager implements ScrimObserver, ToolbarTabController, UrlF
if (mToolbar.getMenuButtonWrapper() != null && !isBottomToolbarVisible()) {
mToolbar.getMenuButtonWrapper().setVisibility(View.VISIBLE);
}
// TODO(crbug.com/1041475): Separate enabling the IdentityDiscController from enabling the
// ExperimentalButton.
mIdentityDiscController.updateButtonState(
mLocationBarModel.getNewTabPageForCurrentTab() != null);
mLocationBarModel.getNewTabPageForCurrentTab() != null
|| mOverviewModeState == OverviewModeState.SHOWN_HOMEPAGE);
}
private void updateBookmarkButtonStatus() {
......
......@@ -4,9 +4,12 @@
package org.chromium.chrome.browser.toolbar.top;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.view.ViewStub;
import androidx.annotation.StringRes;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior;
import org.chromium.chrome.browser.incognito.IncognitoUtils;
......@@ -113,6 +116,43 @@ class StartSurfaceToolbarCoordinator {
mToolbarMediator.setOverviewModeBehavior(overviewModeBehavior);
}
/**
* Enable the experimental toolbar button.
* @param onClickListener The {@link OnClickListener} to be called when the button is clicked.
* @param image The drawable to display for the button.
* @param contentDescriptionResId The resource id of the content description for the button.
*/
void enableExperimentalButton(View.OnClickListener onClickListener, Drawable image,
@StringRes int contentDescriptionResId) {
mToolbarMediator.enableIdentityDisc(onClickListener, image, contentDescriptionResId);
}
/**
* Updates image displayed on experimental button.
* @param image The new image for the button.
*/
void updateExperimentalButtonImage(Drawable image) {
mToolbarMediator.updateIdentityDiscImage(image);
}
/**
* Disable the experimental toolbar button.
*/
void disableExperimentalButton() {
mToolbarMediator.disableIdentityDisc();
}
/**
* Displays in-product help for experimental button.
* @param stringId The id of the string resource for the text that should be shown.
* @param accessibilityStringId The id of the string resource of the accessibility text.
* @param dismissedCallback The callback that will be called when in-product help is dismissed.
*/
void showIPHOnExperimentalButton(@StringRes int stringId, @StringRes int accessibilityStringId,
Runnable dismissedCallback) {
mToolbarMediator.showIPHOnIdentityDisc(stringId, accessibilityStringId, dismissedCallback);
}
void onNativeLibraryReady() {
mToolbarMediator.onNativeLibraryReady();
}
......
......@@ -7,6 +7,11 @@ package org.chromium.chrome.browser.toolbar.top;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.ACCESSIBILITY_ENABLED;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.APP_MENU_BUTTON_HELPER;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.BUTTONS_CLICKABLE;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IDENTITY_DISC_CLICK_HANDLER;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IDENTITY_DISC_DESCRIPTION;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IDENTITY_DISC_IMAGE;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IDENTITY_DISC_IPH;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IDENTITY_DISC_IS_VISIBLE;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.INCOGNITO_STATE_PROVIDER;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IS_INCOGNITO;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IS_VISIBLE;
......@@ -15,8 +20,11 @@ import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarPropert
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.graphics.drawable.Drawable;
import android.view.View;
import androidx.annotation.StringRes;
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;
......@@ -27,6 +35,7 @@ import org.chromium.chrome.browser.tabmodel.TabModel;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tabmodel.TabModelSelectorObserver;
import org.chromium.chrome.browser.toolbar.IncognitoStateProvider;
import org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IPHContainer;
import org.chromium.chrome.browser.ui.appmenu.AppMenuButtonHelper;
import org.chromium.chrome.browser.util.AccessibilityUtil;
import org.chromium.components.search_engines.TemplateUrlService.TemplateUrlServiceObserver;
......@@ -43,6 +52,7 @@ class StartSurfaceToolbarMediator {
@OverviewModeState
private int mOverviewModeState;
private boolean mIsGoogleSearchEngine;
private boolean mEnableIdentityDisc;
StartSurfaceToolbarMediator(PropertyModel model) {
mPropertyModel = model;
......@@ -93,10 +103,12 @@ class StartSurfaceToolbarMediator {
@Override
public void onTabModelSelected(TabModel newModel, TabModel oldModel) {
mPropertyModel.set(IS_INCOGNITO, mTabModelSelector.isIncognitoSelected());
updateIdentityDiscVisibility();
}
};
}
mPropertyModel.set(IS_INCOGNITO, mTabModelSelector.isIncognitoSelected());
updateIdentityDiscVisibility();
mTabModelSelector.addObserver(mTabModelSelectorObserver);
}
......@@ -131,6 +143,7 @@ class StartSurfaceToolbarMediator {
mOverviewModeState = overviewModeState;
updateNewTabButtonVisibility();
updateLogoVisibility(mIsGoogleSearchEngine);
updateIdentityDiscVisibility();
}
@Override
public void onOverviewModeFinishedShowing() {
......@@ -156,6 +169,35 @@ class StartSurfaceToolbarMediator {
mPropertyModel.set(LOGO_IS_VISIBLE, shouldShowLogo);
}
void enableIdentityDisc(View.OnClickListener onClickListener, Drawable image,
@StringRes int contentDescriptionResId) {
mEnableIdentityDisc = true;
mPropertyModel.set(IDENTITY_DISC_CLICK_HANDLER, onClickListener);
mPropertyModel.set(IDENTITY_DISC_IMAGE, image);
mPropertyModel.set(IDENTITY_DISC_DESCRIPTION, contentDescriptionResId);
updateIdentityDiscVisibility();
}
void updateIdentityDiscImage(Drawable image) {
mPropertyModel.set(IDENTITY_DISC_IMAGE, image);
}
void disableIdentityDisc() {
mEnableIdentityDisc = false;
mPropertyModel.set(IDENTITY_DISC_IS_VISIBLE, false);
}
void showIPHOnIdentityDisc(@StringRes int stringId, @StringRes int accessibilityStringId,
Runnable dismissedCallback) {
// Only show IPH if IdentityDisc is actually visible, otherwise dismiss.
if (mPropertyModel.get(IDENTITY_DISC_IS_VISIBLE)) {
mPropertyModel.set(IDENTITY_DISC_IPH,
new IPHContainer(stringId, accessibilityStringId, dismissedCallback));
} else if (dismissedCallback != null) {
dismissedCallback.run();
}
}
private void updateNewTabButtonVisibility() {
// This toolbar is only shown for tab switcher when accessibility is enabled. Note that
// OverviewListLayout will be shown as the tab switcher instead of the star surface.
......@@ -164,4 +206,10 @@ class StartSurfaceToolbarMediator {
|| AccessibilityUtil.isAccessibilityEnabled();
mPropertyModel.set(NEW_TAB_BUTTON_IS_VISIBLE, isShownTabswitcherState);
}
private void updateIdentityDiscVisibility() {
mPropertyModel.set(IDENTITY_DISC_IS_VISIBLE,
mOverviewModeState == OverviewModeState.SHOWN_HOMEPAGE && mEnableIdentityDisc
&& !mTabModelSelector.isIncognitoSelected());
}
}
......@@ -4,8 +4,11 @@
package org.chromium.chrome.browser.toolbar.top;
import android.graphics.drawable.Drawable;
import android.view.View;
import androidx.annotation.StringRes;
import org.chromium.chrome.browser.toolbar.IncognitoStateProvider;
import org.chromium.chrome.browser.ui.appmenu.AppMenuButtonHelper;
import org.chromium.ui.modelutil.PropertyKey;
......@@ -13,6 +16,21 @@ import org.chromium.ui.modelutil.PropertyModel;
/** List of the start surface toolbar properties. */
class StartSurfaceToolbarProperties {
public static class IPHContainer {
@StringRes
public final int stringId;
@StringRes
public final int accessibilityStringId;
public Runnable dismissedCallback;
IPHContainer(@StringRes int stringId, @StringRes int accessibilityStringId,
Runnable dismissedCallback) {
this.stringId = stringId;
this.accessibilityStringId = accessibilityStringId;
this.dismissedCallback = dismissedCallback;
}
}
private StartSurfaceToolbarProperties() {}
public static final PropertyModel
......@@ -24,6 +42,17 @@ class StartSurfaceToolbarProperties {
public static final PropertyModel
.WritableObjectPropertyKey<View.OnClickListener> NEW_TAB_CLICK_HANDLER =
new PropertyModel.WritableObjectPropertyKey<View.OnClickListener>();
public static final PropertyModel
.WritableObjectPropertyKey<View.OnClickListener> IDENTITY_DISC_CLICK_HANDLER =
new PropertyModel.WritableObjectPropertyKey<View.OnClickListener>();
public static final PropertyModel.WritableObjectPropertyKey<Drawable> IDENTITY_DISC_IMAGE =
new PropertyModel.WritableObjectPropertyKey<Drawable>();
public static final PropertyModel.WritableIntPropertyKey IDENTITY_DISC_DESCRIPTION =
new PropertyModel.WritableIntPropertyKey();
public static final PropertyModel.WritableObjectPropertyKey<IPHContainer> IDENTITY_DISC_IPH =
new PropertyModel.WritableObjectPropertyKey<IPHContainer>();
public static final PropertyModel.WritableBooleanPropertyKey IDENTITY_DISC_IS_VISIBLE =
new PropertyModel.WritableBooleanPropertyKey();
public static final PropertyModel.WritableBooleanPropertyKey IS_VISIBLE =
new PropertyModel.WritableBooleanPropertyKey();
public static final PropertyModel.WritableBooleanPropertyKey LOGO_IS_VISIBLE =
......@@ -42,5 +71,7 @@ class StartSurfaceToolbarProperties {
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, BUTTONS_CLICKABLE};
MENU_IS_VISIBLE, NEW_TAB_BUTTON_IS_VISIBLE, BUTTONS_CLICKABLE,
IDENTITY_DISC_IS_VISIBLE, IDENTITY_DISC_CLICK_HANDLER, IDENTITY_DISC_IMAGE,
IDENTITY_DISC_DESCRIPTION, IDENTITY_DISC_IPH};
}
......@@ -7,17 +7,24 @@ package org.chromium.chrome.browser.toolbar.top;
import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.support.v7.content.res.AppCompatResources;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageButton;
import android.widget.RelativeLayout;
import androidx.annotation.Nullable;
import androidx.annotation.StringRes;
import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.chrome.R;
import org.chromium.chrome.browser.toolbar.IncognitoStateProvider;
import org.chromium.chrome.browser.toolbar.MenuButton;
import org.chromium.chrome.browser.toolbar.NewTabButton;
import org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IPHContainer;
import org.chromium.chrome.browser.ui.appmenu.AppMenuButtonHelper;
import org.chromium.chrome.browser.ui.widget.textbubble.TextBubble;
import org.chromium.chrome.browser.util.ColorUtils;
import org.chromium.components.browser_ui.styles.ChromeColors;
......@@ -27,6 +34,8 @@ class StartSurfaceToolbarView extends RelativeLayout {
private View mIncognitoSwitch;
private MenuButton mMenuButton;
private View mLogo;
@Nullable
private ImageButton mIdentityDiscButton;
private int mPrimaryColor;
private ColorStateList mLightIconTint;
private ColorStateList mDarkIconTint;
......@@ -46,6 +55,13 @@ class StartSurfaceToolbarView extends RelativeLayout {
mIncognitoSwitch = findViewById(R.id.incognito_switch);
mMenuButton = findViewById(R.id.menu_button_wrapper);
mLogo = findViewById(R.id.logo);
mIdentityDiscButton = findViewById(R.id.experimental_toolbar_button_start);
// Change padding in layout file programmatically, since padding in layout file can not be
// changed in ViewStub.
final int buttonPadding = getContext().getResources().getDimensionPixelOffset(
R.dimen.start_surface_toolbar_button_padding_to_button);
mIdentityDiscButton.setPadding(buttonPadding, 0, buttonPadding, 0);
updatePrimaryColorAndTint(false);
}
......@@ -100,6 +116,14 @@ class StartSurfaceToolbarView extends RelativeLayout {
*/
void setMenuButtonVisibility(boolean isVisible) {
mMenuButton.setVisibility(isVisible ? View.VISIBLE : View.GONE);
final int buttonPaddingLeft = getContext().getResources().getDimensionPixelOffset(
R.dimen.start_surface_toolbar_button_padding_to_button);
final int buttonPaddingRight =
(isVisible ? buttonPaddingLeft
: getContext().getResources().getDimensionPixelOffset(
R.dimen.start_surface_toolbar_button_padding_to_edge));
mIdentityDiscButton.setPadding(buttonPaddingLeft, 0, buttonPaddingRight, 0);
mNewTabButton.setPadding(buttonPaddingLeft, 0, buttonPaddingRight, 0);
}
/**
......@@ -135,6 +159,52 @@ class StartSurfaceToolbarView extends RelativeLayout {
mNewTabButton.onAccessibilityStatusChanged();
}
/**
* @param isVisible Whether the identity disc is visible.
*/
void setIdentityDiscVisibility(boolean isVisible) {
mIdentityDiscButton.setVisibility(isVisible ? View.VISIBLE : View.GONE);
}
/**
* Sets the {@link OnClickListener} that will be notified when the identity disc button is
* pressed.
* @param listener The callback that will be notified when the identity disc is pressed.
*/
void setIdentityDiscClickHandler(View.OnClickListener listener) {
mIdentityDiscButton.setOnClickListener(listener);
}
/**
* Updates the image displayed on the identity disc button.
* @param image The new image for the button.
*/
void setIdentityDiscImage(Drawable image) {
mIdentityDiscButton.setImageDrawable(image);
}
/**
* Updates idnetity disc content description.
* @param contentDescriptionResId The new description for the button.
*/
void setIdentityDiscContentDescription(@StringRes int contentDescriptionResId) {
mIdentityDiscButton.setContentDescription(
getContext().getResources().getString(contentDescriptionResId));
}
/**
* Show the IPH for the identity disc button.
*/
void showIPHOnIdentityDisc(IPHContainer iphContainer) {
TextBubble textBubble = new TextBubble(getContext(), mIdentityDiscButton,
iphContainer.stringId, iphContainer.accessibilityStringId, mIdentityDiscButton);
textBubble.setDismissOnTouchInteraction(true);
if (iphContainer.dismissedCallback != null) {
textBubble.addOnDismissListener(() -> { iphContainer.dismissedCallback.run(); });
}
textBubble.show();
}
private void updatePrimaryColorAndTint(boolean isIncognito) {
int primaryColor = ChromeColors.getPrimaryBackgroundColor(getResources(), isIncognito);
setBackgroundColor(primaryColor);
......
......@@ -7,6 +7,11 @@ package org.chromium.chrome.browser.toolbar.top;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.ACCESSIBILITY_ENABLED;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.APP_MENU_BUTTON_HELPER;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.BUTTONS_CLICKABLE;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IDENTITY_DISC_CLICK_HANDLER;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IDENTITY_DISC_DESCRIPTION;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IDENTITY_DISC_IMAGE;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IDENTITY_DISC_IPH;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IDENTITY_DISC_IS_VISIBLE;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.INCOGNITO_STATE_PROVIDER;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IS_INCOGNITO;
import static org.chromium.chrome.browser.toolbar.top.StartSurfaceToolbarProperties.IS_VISIBLE;
......@@ -24,24 +29,34 @@ import org.chromium.ui.modelutil.PropertyModel;
class StartSurfaceToolbarViewBinder {
public static void bind(
PropertyModel model, StartSurfaceToolbarView view, PropertyKey propertyKey) {
if (propertyKey == APP_MENU_BUTTON_HELPER) {
if (propertyKey == ACCESSIBILITY_ENABLED) {
view.onAccessibilityStatusChanged(model.get(ACCESSIBILITY_ENABLED));
} else if (propertyKey == APP_MENU_BUTTON_HELPER) {
view.setAppMenuButtonHelper(model.get(APP_MENU_BUTTON_HELPER));
} else if (propertyKey == BUTTONS_CLICKABLE) {
view.setButtonClickableState(model.get(BUTTONS_CLICKABLE));
} else if (propertyKey == NEW_TAB_CLICK_HANDLER) {
view.setOnNewTabClickHandler(model.get(NEW_TAB_CLICK_HANDLER));
} else if (propertyKey == IDENTITY_DISC_CLICK_HANDLER) {
view.setIdentityDiscClickHandler(model.get(IDENTITY_DISC_CLICK_HANDLER));
} else if (propertyKey == IDENTITY_DISC_DESCRIPTION) {
view.setIdentityDiscContentDescription(model.get(IDENTITY_DISC_DESCRIPTION));
} else if (propertyKey == IDENTITY_DISC_IMAGE) {
view.setIdentityDiscImage(model.get(IDENTITY_DISC_IMAGE));
} else if (propertyKey == IDENTITY_DISC_IPH) {
view.showIPHOnIdentityDisc(model.get(IDENTITY_DISC_IPH));
} else if (propertyKey == IDENTITY_DISC_IS_VISIBLE) {
view.setIdentityDiscVisibility(model.get(IDENTITY_DISC_IS_VISIBLE));
} else if (propertyKey == INCOGNITO_STATE_PROVIDER) {
view.setIncognitoStateProvider(model.get(INCOGNITO_STATE_PROVIDER));
} else if (propertyKey == IS_INCOGNITO) {
view.updateIncognito(model.get(IS_INCOGNITO));
} else if (propertyKey == IS_VISIBLE) {
view.setVisibility(model.get(IS_VISIBLE) ? View.VISIBLE : View.GONE);
} else if (propertyKey == LOGO_IS_VISIBLE) {
view.setLogoVisibility(model.get(LOGO_IS_VISIBLE));
} else if (propertyKey == IS_INCOGNITO) {
view.updateIncognito(model.get(IS_INCOGNITO));
} else if (propertyKey == INCOGNITO_STATE_PROVIDER) {
view.setIncognitoStateProvider(model.get(INCOGNITO_STATE_PROVIDER));
} else if (propertyKey == ACCESSIBILITY_ENABLED) {
view.onAccessibilityStatusChanged(model.get(ACCESSIBILITY_ENABLED));
} else if (propertyKey == MENU_IS_VISIBLE) {
view.setMenuButtonVisibility(model.get(MENU_IS_VISIBLE));
} else if (propertyKey == NEW_TAB_CLICK_HANDLER) {
view.setOnNewTabClickHandler(model.get(NEW_TAB_CLICK_HANDLER));
} else if (propertyKey == NEW_TAB_BUTTON_IS_VISIBLE) {
view.setNewTabButtonVisibility(model.get(NEW_TAB_BUTTON_IS_VISIBLE));
}
......
......@@ -625,6 +625,10 @@ public class TopToolbarCoordinator implements Toolbar {
*/
public void enableExperimentalButton(View.OnClickListener onClickListener, Drawable image,
@StringRes int contentDescriptionResId) {
if (FeatureUtilities.isStartSurfaceSinglePaneEnabled()) {
mStartSurfaceToolbarCoordinator.enableExperimentalButton(
onClickListener, image, contentDescriptionResId);
}
mToolbarLayout.enableExperimentalButton(onClickListener, image, contentDescriptionResId);
}
......@@ -644,6 +648,9 @@ public class TopToolbarCoordinator implements Toolbar {
* @return The experimental toolbar button if it exists.
*/
public void updateExperimentalButtonImage(Drawable image) {
if (FeatureUtilities.isStartSurfaceSinglePaneEnabled()) {
mStartSurfaceToolbarCoordinator.updateExperimentalButtonImage(image);
}
mToolbarLayout.updateExperimentalButtonImage(image);
}
......@@ -651,6 +658,9 @@ public class TopToolbarCoordinator implements Toolbar {
* Disable the experimental toolbar button.
*/
public void disableExperimentalButton() {
if (FeatureUtilities.isStartSurfaceSinglePaneEnabled()) {
mStartSurfaceToolbarCoordinator.disableExperimentalButton();
}
mToolbarLayout.disableExperimentalButton();
}
......@@ -662,6 +672,12 @@ public class TopToolbarCoordinator implements Toolbar {
*/
public void showIPHOnExperimentalButton(@StringRes int stringId,
@StringRes int accessibilityStringId, Runnable dismissedCallback) {
if (mStartSurfaceToolbarCoordinator != null
&& mToolbarLayout.getToolbarDataProvider().isInOverviewAndShowingOmnibox()) {
mStartSurfaceToolbarCoordinator.showIPHOnExperimentalButton(
stringId, accessibilityStringId, dismissedCallback);
return;
}
mToolbarLayout.showIPHOnExperimentalButton(
stringId, accessibilityStringId, dismissedCallback);
}
......
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