Commit e02cad3a authored by Mei Liang's avatar Mei Liang Committed by Commit Bot

[DragToMergeIphItem] Update incognito style

This CL updates the DragToMerge IPH item to use the dark mode color
palette in incognito GTS.

Change-Id: Ic7daf73870238385a3a4dde9a1e2da6e36a2e761
Bug: 997879
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1772062Reviewed-by: default avatarYue Zhang <yuezhanggg@chromium.org>
Reviewed-by: default avatarWei-Yin Chen (陳威尹) <wychen@chromium.org>
Commit-Queue: Mei Liang <meiliang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#695357}
parent f42fbabd
...@@ -70,10 +70,14 @@ class TabGridIphItemMediator implements TabSwitcherMediator.IphProvider { ...@@ -70,10 +70,14 @@ class TabGridIphItemMediator implements TabSwitcherMediator.IphProvider {
} }
@Override @Override
public void maybeShowIPH() { public void maybeShowIPH(boolean isIncognito) {
final Tracker tracker = TrackerFactory.getTrackerForProfile( final Tracker tracker = TrackerFactory.getTrackerForProfile(
Profile.getLastUsedProfile().getOriginalProfile()); Profile.getLastUsedProfile().getOriginalProfile());
mModel.set(TabGridIphItemProperties.IS_IPH_ENTRANCE_VISIBLE, boolean isVisible =
tracker.wouldTriggerHelpUI(FeatureConstants.TAB_GROUPS_DRAG_AND_DROP_FEATURE)); tracker.wouldTriggerHelpUI(FeatureConstants.TAB_GROUPS_DRAG_AND_DROP_FEATURE);
if (isVisible) mModel.set(TabGridIphItemProperties.IS_INCOGNITO, isIncognito);
mModel.set(TabGridIphItemProperties.IS_IPH_ENTRANCE_VISIBLE, isVisible);
} }
} }
...@@ -27,8 +27,10 @@ class TabGridIphItemProperties { ...@@ -27,8 +27,10 @@ class TabGridIphItemProperties {
new PropertyModel.WritableBooleanPropertyKey(); new PropertyModel.WritableBooleanPropertyKey();
public static final PropertyModel.WritableBooleanPropertyKey IS_IPH_ENTRANCE_VISIBLE = public static final PropertyModel.WritableBooleanPropertyKey IS_IPH_ENTRANCE_VISIBLE =
new PropertyModel.WritableBooleanPropertyKey(); new PropertyModel.WritableBooleanPropertyKey();
public static final PropertyKey[] ALL_KEYS = public static final PropertyModel.WritableBooleanPropertyKey IS_INCOGNITO =
new PropertyKey[] {IPH_ENTRANCE_CLOSE_BUTTON_LISTENER, new PropertyModel.WritableBooleanPropertyKey();
IPH_ENTRANCE_SHOW_BUTTON_LISTENER, IPH_DIALOG_CLOSE_BUTTON_LISTENER, public static final PropertyKey[] ALL_KEYS = new PropertyKey[] {
IPH_SCRIM_VIEW_OBSERVER, IS_IPH_DIALOG_VISIBLE, IS_IPH_ENTRANCE_VISIBLE}; IPH_ENTRANCE_CLOSE_BUTTON_LISTENER, IPH_ENTRANCE_SHOW_BUTTON_LISTENER,
IPH_DIALOG_CLOSE_BUTTON_LISTENER, IPH_SCRIM_VIEW_OBSERVER, IS_IPH_DIALOG_VISIBLE,
IS_IPH_ENTRANCE_VISIBLE, IS_INCOGNITO};
} }
...@@ -9,9 +9,11 @@ import android.graphics.Bitmap; ...@@ -9,9 +9,11 @@ import android.graphics.Bitmap;
import android.graphics.drawable.Animatable; import android.graphics.drawable.Animatable;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Handler; import android.os.Handler;
import android.support.graphics.drawable.Animatable2Compat; import android.support.graphics.drawable.Animatable2Compat;
import android.support.graphics.drawable.AnimatedVectorDrawableCompat; import android.support.graphics.drawable.AnimatedVectorDrawableCompat;
import android.support.v4.view.ViewCompat;
import android.support.v7.content.res.AppCompatResources; import android.support.v7.content.res.AppCompatResources;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.Gravity; import android.view.Gravity;
...@@ -23,6 +25,7 @@ import android.widget.ImageView; ...@@ -23,6 +25,7 @@ import android.widget.ImageView;
import android.widget.PopupWindow; import android.widget.PopupWindow;
import android.widget.TextView; import android.widget.TextView;
import org.chromium.base.ApiCompatibilityUtils;
import org.chromium.chrome.browser.widget.ScrimView; import org.chromium.chrome.browser.widget.ScrimView;
import org.chromium.chrome.tab_ui.R; import org.chromium.chrome.tab_ui.R;
import org.chromium.ui.widget.ChromeImageView; import org.chromium.ui.widget.ChromeImageView;
...@@ -34,6 +37,7 @@ public class TabGridIphItemView extends FrameLayout { ...@@ -34,6 +37,7 @@ public class TabGridIphItemView extends FrameLayout {
private View mIphDialogView; private View mIphDialogView;
private TextView mShowIPHDialogButton; private TextView mShowIPHDialogButton;
private TextView mCloseIPHDialogButton; private TextView mCloseIPHDialogButton;
private TextView mIphIntroduction;
private ChromeImageView mCloseIPHEntranceButton; private ChromeImageView mCloseIPHEntranceButton;
private ScrimView mScrimView; private ScrimView mScrimView;
private ScrimView.ScrimParams mScrimParams; private ScrimView.ScrimParams mScrimParams;
...@@ -56,6 +60,7 @@ public class TabGridIphItemView extends FrameLayout { ...@@ -56,6 +60,7 @@ public class TabGridIphItemView extends FrameLayout {
.inflate(R.layout.iph_drag_and_drop_dialog_layout, backgroundView, false); .inflate(R.layout.iph_drag_and_drop_dialog_layout, backgroundView, false);
mShowIPHDialogButton = findViewById(R.id.show_me_button); mShowIPHDialogButton = findViewById(R.id.show_me_button);
mCloseIPHEntranceButton = findViewById(R.id.close_iph_button); mCloseIPHEntranceButton = findViewById(R.id.close_iph_button);
mIphIntroduction = findViewById(R.id.iph_description);
Drawable closeButtonDrawable = getScaledCloseImageDrawable(); Drawable closeButtonDrawable = getScaledCloseImageDrawable();
mCloseIPHEntranceButton.setImageDrawable(closeButtonDrawable); mCloseIPHEntranceButton.setImageDrawable(closeButtonDrawable);
mCloseIPHDialogButton = mCloseIPHDialogButton =
...@@ -144,4 +149,29 @@ public class TabGridIphItemView extends FrameLayout { ...@@ -144,4 +149,29 @@ public class TabGridIphItemView extends FrameLayout {
return new BitmapDrawable( return new BitmapDrawable(
getResources(), Bitmap.createScaledBitmap(closeBitmap, size, size, true)); getResources(), Bitmap.createScaledBitmap(closeBitmap, size, size, true));
} }
/**
* Updates color for inner views based on incognito mode.
* @param isIncognito Whether the color is updated for incognito mode.
*/
void updateColor(boolean isIncognito) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
setBackground(
TabUiColorProvider.getCardViewBackgroundDrawable(getContext(), isIncognito));
} else {
ViewCompat.setBackgroundTintList(
this, TabUiColorProvider.getCardViewTintList(getContext(), isIncognito));
}
mShowIPHDialogButton.setTextAppearance(mShowIPHDialogButton.getContext(),
isIncognito ? R.style.TextAppearance_BlueTitle2Incognito
: R.style.TextAppearance_BlueTitle2);
mIphIntroduction.setTextAppearance(mIphIntroduction.getContext(),
isIncognito ? R.style.TextAppearance_WhiteBody
: R.style.TextAppearance_BlackBodyDefault);
ApiCompatibilityUtils.setImageTintList(mCloseIPHEntranceButton,
TabUiColorProvider.getActionButtonTintList(
mCloseIPHEntranceButton.getContext(), isIncognito));
}
} }
...@@ -8,6 +8,7 @@ import static org.chromium.chrome.browser.tasks.tab_management.TabGridIphItemPro ...@@ -8,6 +8,7 @@ import static org.chromium.chrome.browser.tasks.tab_management.TabGridIphItemPro
import static org.chromium.chrome.browser.tasks.tab_management.TabGridIphItemProperties.IPH_ENTRANCE_CLOSE_BUTTON_LISTENER; import static org.chromium.chrome.browser.tasks.tab_management.TabGridIphItemProperties.IPH_ENTRANCE_CLOSE_BUTTON_LISTENER;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridIphItemProperties.IPH_ENTRANCE_SHOW_BUTTON_LISTENER; import static org.chromium.chrome.browser.tasks.tab_management.TabGridIphItemProperties.IPH_ENTRANCE_SHOW_BUTTON_LISTENER;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridIphItemProperties.IPH_SCRIM_VIEW_OBSERVER; import static org.chromium.chrome.browser.tasks.tab_management.TabGridIphItemProperties.IPH_SCRIM_VIEW_OBSERVER;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridIphItemProperties.IS_INCOGNITO;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridIphItemProperties.IS_IPH_DIALOG_VISIBLE; import static org.chromium.chrome.browser.tasks.tab_management.TabGridIphItemProperties.IS_IPH_DIALOG_VISIBLE;
import static org.chromium.chrome.browser.tasks.tab_management.TabGridIphItemProperties.IS_IPH_ENTRANCE_VISIBLE; import static org.chromium.chrome.browser.tasks.tab_management.TabGridIphItemProperties.IS_IPH_ENTRANCE_VISIBLE;
...@@ -52,6 +53,9 @@ class TabGridIphItemViewBinder { ...@@ -52,6 +53,9 @@ class TabGridIphItemViewBinder {
} else { } else {
viewHolder.contentView.removeRecyclerViewFooter(); viewHolder.contentView.removeRecyclerViewFooter();
} }
} else if (IS_INCOGNITO == propertyKey) {
boolean isIncognito = model.get(TabGridIphItemProperties.IS_INCOGNITO);
viewHolder.iphItemView.updateColor(isIncognito);
} }
} }
} }
...@@ -147,7 +147,13 @@ class TabSwitcherMediator implements TabSwitcher.Controller, TabListRecyclerView ...@@ -147,7 +147,13 @@ class TabSwitcherMediator implements TabSwitcher.Controller, TabListRecyclerView
/** /**
* An interface to control whether to show IPH on grid tab switcher. * An interface to control whether to show IPH on grid tab switcher.
*/ */
public interface IphProvider { void maybeShowIPH(); } public interface IphProvider {
/**
* Shows IPH on grid tab switcher based on incognito mode.
* @param isIncognito Whether IPH is shown for incognito mode.
*/
void maybeShowIPH(boolean isIncognito);
}
/** /**
* Basic constructor for the Mediator. * Basic constructor for the Mediator.
...@@ -184,6 +190,9 @@ class TabSwitcherMediator implements TabSwitcher.Controller, TabListRecyclerView ...@@ -184,6 +190,9 @@ class TabSwitcherMediator implements TabSwitcher.Controller, TabListRecyclerView
if (mTabGridDialogResetHandler != null) { if (mTabGridDialogResetHandler != null) {
mTabGridDialogResetHandler.hideDialog(false); mTabGridDialogResetHandler.hideDialog(false);
} }
if (mIphProvider != null) {
mIphProvider.maybeShowIPH(mTabModelSelector.isIncognitoSelected());
}
} }
}; };
mTabModelSelector.addObserver(mTabModelSelectorObserver); mTabModelSelector.addObserver(mTabModelSelectorObserver);
...@@ -431,7 +440,7 @@ class TabSwitcherMediator implements TabSwitcher.Controller, TabListRecyclerView ...@@ -431,7 +440,7 @@ class TabSwitcherMediator implements TabSwitcher.Controller, TabListRecyclerView
mTabIdwhenShown = mTabModelSelector.getCurrentTabId(); mTabIdwhenShown = mTabModelSelector.getCurrentTabId();
mContainerViewModel.set(ANIMATE_VISIBILITY_CHANGES, true); mContainerViewModel.set(ANIMATE_VISIBILITY_CHANGES, true);
if (mIphProvider != null) { if (mIphProvider != null) {
mIphProvider.maybeShowIPH(); mIphProvider.maybeShowIPH(mTabModelSelector.isIncognitoSelected());
} }
recordTabCounts(); recordTabCounts();
......
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