Commit ccfe907b authored by Zhiyuan Cai's avatar Zhiyuan Cai Committed by Chromium LUCI CQ

Add PriceTrackingSettings dialog to GTS

When users clicks the menu item "Track prices" in grid tab switcher,
a PriceTrackingSettings dialog will pop up allowing users to turn on/off
the features "Track prices on tabs" and "Price drop alerts".

Bug: 1163136
Change-Id: I9d1d3401185f5d118ba7bfa2cfb4e35837c69d66
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2611275
Commit-Queue: Zhiyuan Cai <zhiyuancai@google.com>
Reviewed-by: default avatarMei Liang <meiliang@chromium.org>
Reviewed-by: default avatarYusuf Ozuysal <yusufo@chromium.org>
Reviewed-by: default avatarYue Zhang <yuezhanggg@chromium.org>
Cr-Commit-Position: refs/heads/master@{#845734}
parent c14fec5c
...@@ -32,8 +32,10 @@ android_resources("java_resources") { ...@@ -32,8 +32,10 @@ android_resources("java_resources") {
"java/res/drawable-v21/fake_search_box_bg_incognito.xml", "java/res/drawable-v21/fake_search_box_bg_incognito.xml",
"java/res/drawable/fake_search_box_text_box_bg_incognito.xml", "java/res/drawable/fake_search_box_text_box_bg_incognito.xml",
"java/res/drawable/hovered_tab_grid_card_background.xml", "java/res/drawable/hovered_tab_grid_card_background.xml",
"java/res/drawable/ic_add_alert_blue.xml",
"java/res/drawable/ic_check_googblue_20dp_animated.xml", "java/res/drawable/ic_check_googblue_20dp_animated.xml",
"java/res/drawable/ic_group_icon_16dp.xml", "java/res/drawable/ic_group_icon_16dp.xml",
"java/res/drawable/ic_trending_down_blue.xml",
"java/res/drawable/iph_drag_and_drop_animated_drawable.xml", "java/res/drawable/iph_drag_and_drop_animated_drawable.xml",
"java/res/drawable/iph_drag_and_drop_drawable.xml", "java/res/drawable/iph_drag_and_drop_drawable.xml",
"java/res/drawable/message_card_background.xml", "java/res/drawable/message_card_background.xml",
...@@ -64,6 +66,7 @@ android_resources("java_resources") { ...@@ -64,6 +66,7 @@ android_resources("java_resources") {
"java/res/layout/iph_drag_and_drop_dialog_layout.xml", "java/res/layout/iph_drag_and_drop_dialog_layout.xml",
"java/res/layout/new_tab_tile_card_item.xml", "java/res/layout/new_tab_tile_card_item.xml",
"java/res/layout/price_card.xml", "java/res/layout/price_card.xml",
"java/res/layout/price_tracking_dialog_layout.xml",
"java/res/layout/price_welcome_message_card_item.xml", "java/res/layout/price_welcome_message_card_item.xml",
"java/res/layout/selectable_tab_grid_card_item.xml", "java/res/layout/selectable_tab_grid_card_item.xml",
"java/res/layout/selectable_tab_list_card_item.xml", "java/res/layout/selectable_tab_list_card_item.xml",
...@@ -124,6 +127,8 @@ android_library("java") { ...@@ -124,6 +127,8 @@ android_library("java") {
"java/src/org/chromium/chrome/browser/tasks/tab_management/NewTabTileViewBinder.java", "java/src/org/chromium/chrome/browser/tasks/tab_management/NewTabTileViewBinder.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/NewTabTileViewProperties.java", "java/src/org/chromium/chrome/browser/tasks/tab_management/NewTabTileViewProperties.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/PriceCardView.java", "java/src/org/chromium/chrome/browser/tasks/tab_management/PriceCardView.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogCoordinator.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogView.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/PriceWelcomeMessageCardView.java", "java/src/org/chromium/chrome/browser/tasks/tab_management/PriceWelcomeMessageCardView.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/PriceWelcomeMessageCardViewBinder.java", "java/src/org/chromium/chrome/browser/tasks/tab_management/PriceWelcomeMessageCardViewBinder.java",
"java/src/org/chromium/chrome/browser/tasks/tab_management/PriceWelcomeMessageCardViewModel.java", "java/src/org/chromium/chrome/browser/tasks/tab_management/PriceWelcomeMessageCardViewModel.java",
......
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2021 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file. -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M13,9h-2v2L9,11v2h2v2h2v-2h2v-2h-2zM18,17v-6c0,-3.07 -1.63,-5.64 -4.5,-6.32L13.5,4c0,-0.83 -0.67,-1.5 -1.5,-1.5s-1.5,0.67 -1.5,1.5v0.68C7.64,5.36 6,7.92 6,11v6L4,17v2h16v-2h-2zM16,17L8,17v-6c0,-2.48 1.51,-4.5 4,-4.5s4,2.02 4,4.5v6zM12,22c1.1,0 2,-0.9 2,-2h-4c0,1.1 0.9,2 2,2z"
android:fillColor="@color/default_icon_color_blue" />
</vector>
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2021 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file. -->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M20,12v2.58L13.41,8l-4,4 -6,-6L2,7.41l7.41,7.42 4,-4L18.58,16H16v2h6v-6z"
android:fillColor="@color/default_icon_color_blue" />
</vector>
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2021 The Chromium Authors. All rights reserved.
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file. -->
<org.chromium.chrome.browser.tasks.tab_management.PriceTrackingDialogView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/price_tracking_dialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
android:background="@drawable/tab_grid_dialog_background">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/price_tracking_dialog_text_top_margin"
android:layout_marginBottom="@dimen/price_tracking_dialog_text_top_margin"
android:layout_marginStart="@dimen/price_tracking_dialog_text_side_margin"
android:layout_marginEnd="@dimen/price_tracking_dialog_text_side_margin"
android:text="@string/price_tracking_settings"
android:textAppearance="@style/TextAppearance.Headline.Primary" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/price_tracking_dialog_items_margin"
android:layout_marginStart="@dimen/price_tracking_dialog_text_side_margin"
android:layout_marginEnd="@dimen/price_tracking_dialog_text_side_margin"
android:orientation="horizontal">
<ImageView
android:id="@+id/track_prices_icon"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:layout_gravity="center"
android:importantForAccessibility="no"
app:srcCompat="@drawable/ic_trending_down_blue" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="10"
android:layout_marginStart="@dimen/price_tracking_dialog_text_side_margin"
android:layout_marginEnd="@dimen/price_tracking_dialog_text_side_margin"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/track_prices_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/track_prices_on_tabs"
android:textAppearance="@style/TextAppearance.TextLarge.Primary" />
<TextView
android:id="@+id/track_prices_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/track_prices_on_tabs_description"
android:textAppearance="@style/TextAppearance.TextMedium.Secondary" />
</LinearLayout>
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/track_prices_switch"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:layout_gravity="center" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/price_tracking_dialog_items_bottom_margin"
android:layout_marginStart="@dimen/price_tracking_dialog_text_side_margin"
android:layout_marginEnd="@dimen/price_tracking_dialog_text_side_margin"
android:orientation="horizontal">
<ImageView
android:id="@+id/price_alerts_icon"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:layout_gravity="center"
android:importantForAccessibility="no"
app:srcCompat="@drawable/ic_add_alert_blue" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="10"
android:layout_marginStart="@dimen/price_tracking_dialog_text_side_margin"
android:layout_marginEnd="@dimen/price_tracking_dialog_text_side_margin"
android:layout_gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/price_alerts_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/price_drop_alerts"
android:textAppearance="@style/TextAppearance.TextLarge.Primary" />
<TextView
android:id="@+id/price_alerts_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/price_drop_alerts_description"
android:textAppearance="@style/TextAppearance.TextMedium.Secondary" />
</LinearLayout>
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/price_alerts_switch"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:layout_gravity="center" />
</LinearLayout>
</org.chromium.chrome.browser.tasks.tab_management.PriceTrackingDialogView>
...@@ -41,4 +41,8 @@ ...@@ -41,4 +41,8 @@
<dimen name="tab_carousel_card_width">168dp</dimen> <dimen name="tab_carousel_card_width">168dp</dimen>
<dimen name="tab_carousel_start_margin">-3dp</dimen> <dimen name="tab_carousel_start_margin">-3dp</dimen>
<dimen name="tasks_view_items_vertical_spacing">8dp</dimen> <dimen name="tasks_view_items_vertical_spacing">8dp</dimen>
<dimen name="price_tracking_dialog_text_side_margin">16dp</dimen>
<dimen name="price_tracking_dialog_text_top_margin">24dp</dimen>
<dimen name="price_tracking_dialog_items_margin">20dp</dimen>
<dimen name="price_tracking_dialog_items_bottom_margin">34dp</dimen>
</resources> </resources>
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.tasks.tab_management;
import android.content.Context;
import android.view.LayoutInflater;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.tab_ui.R;
import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.ui.modaldialog.ModalDialogProperties;
import org.chromium.ui.modelutil.PropertyModel;
/**
* Coordinator for the PriceTrackingSettings dialog in grid tab switcher.
*/
class PriceTrackingDialogCoordinator implements OnCheckedChangeListener {
private final PropertyModel mModel;
private final ModalDialogManager mModalDialogManager;
private final PriceTrackingDialogView mDialogView;
PriceTrackingDialogCoordinator(Context context, ModalDialogManager modalDialogManager,
TabSwitcherMediator.ResetHandler resetHandler, TabModelSelector tabModelSelector) {
mDialogView = (PriceTrackingDialogView) LayoutInflater.from(context).inflate(
R.layout.price_tracking_dialog_layout, null, false);
mDialogView.setupOnCheckedChangeListener(this);
mModalDialogManager = modalDialogManager;
ModalDialogProperties.Controller dialogController = new ModalDialogProperties.Controller() {
@Override
public void onClick(PropertyModel model, int buttonType) {}
@Override
public void onDismiss(PropertyModel model, int dismissalCause) {
resetHandler.resetWithTabList(
tabModelSelector.getTabModelFilterProvider().getCurrentTabModelFilter(),
false, TabSwitcherMediator.isShowingTabsInMRUOrder());
}
};
mModel = new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS)
.with(ModalDialogProperties.CONTROLLER, dialogController)
.with(ModalDialogProperties.CANCEL_ON_TOUCH_OUTSIDE, true)
.with(ModalDialogProperties.CUSTOM_VIEW, mDialogView)
.build();
}
void show() {
mDialogView.updateSwitch();
mModalDialogManager.showDialog(mModel, ModalDialogManager.ModalDialogType.APP);
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (buttonView.getId() == R.id.track_prices_switch
&& isChecked != PriceTrackingUtilities.isTrackPricesOnTabsEnabled()) {
PriceTrackingUtilities.flipTrackPricesOnTabs();
} else if (buttonView.getId() == R.id.price_alerts_switch
&& isChecked != PriceTrackingUtilities.isPriceDropAlertsEnabled()) {
PriceTrackingUtilities.flipPriceDropAlerts();
}
}
}
// Copyright 2021 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.chrome.browser.tasks.tab_management;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.LinearLayout;
import androidx.appcompat.widget.SwitchCompat;
import org.chromium.chrome.tab_ui.R;
/**
* The view for PriceTrackingSettings dialog related UIs.
*/
public class PriceTrackingDialogView extends LinearLayout {
private SwitchCompat mTrackPricesSwitch;
private SwitchCompat mPriceAlertsSwitch;
public PriceTrackingDialogView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
mTrackPricesSwitch = (SwitchCompat) findViewById(R.id.track_prices_switch);
mPriceAlertsSwitch = (SwitchCompat) findViewById(R.id.price_alerts_switch);
}
/**
* Update the checked/unchecked status of two switches. This is called every time before the
* dialog shows.
*/
void updateSwitch() {
mTrackPricesSwitch.setChecked(PriceTrackingUtilities.isTrackPricesOnTabsEnabled());
mPriceAlertsSwitch.setChecked(PriceTrackingUtilities.isPriceDropAlertsEnabled());
}
/**
* Set the OnCheckedChangeListener of two switches.
*/
void setupOnCheckedChangeListener(OnCheckedChangeListener onCheckedChangeListener) {
mTrackPricesSwitch.setOnCheckedChangeListener(onCheckedChangeListener);
mPriceAlertsSwitch.setOnCheckedChangeListener(onCheckedChangeListener);
}
}
...@@ -23,6 +23,8 @@ public class PriceTrackingUtilities { ...@@ -23,6 +23,8 @@ public class PriceTrackingUtilities {
@VisibleForTesting @VisibleForTesting
public static final String TRACK_PRICES_ON_TABS = public static final String TRACK_PRICES_ON_TABS =
ChromePreferenceKeys.PRICE_TRACKING_TRACK_PRICES_ON_TABS; ChromePreferenceKeys.PRICE_TRACKING_TRACK_PRICES_ON_TABS;
private static final String PRICE_DROP_ALERTS =
ChromePreferenceKeys.PRICE_TRACKING_PRICE_DROP_ALERTS;
@VisibleForTesting @VisibleForTesting
public static final String PRICE_WELCOME_MESSAGE_CARD = public static final String PRICE_WELCOME_MESSAGE_CARD =
ChromePreferenceKeys.PRICE_TRACKING_PRICE_WELCOME_MESSAGE_CARD; ChromePreferenceKeys.PRICE_TRACKING_PRICE_WELCOME_MESSAGE_CARD;
...@@ -68,6 +70,23 @@ public class PriceTrackingUtilities { ...@@ -68,6 +70,23 @@ public class PriceTrackingUtilities {
TRACK_PRICES_ON_TABS, TabUiFeatureUtilities.isPriceTrackingEnabled()); TRACK_PRICES_ON_TABS, TabUiFeatureUtilities.isPriceTrackingEnabled());
} }
/**
* Update SharedPreferences when users turn on/off the feature getting price drop alerts.
*/
public static void flipPriceDropAlerts() {
final boolean enablePriceDropAlerts =
SHARED_PREFERENCES_MANAGER.readBoolean(PRICE_DROP_ALERTS, false);
SHARED_PREFERENCES_MANAGER.writeBoolean(PRICE_DROP_ALERTS, !enablePriceDropAlerts);
}
/**
* @return Whether the feature getting price drop alerts is turned on by users.
*/
public static boolean isPriceDropAlertsEnabled() {
return isPriceTrackingEligible()
&& SHARED_PREFERENCES_MANAGER.readBoolean(PRICE_DROP_ALERTS, false);
}
/** /**
* Forbid showing the PriceWelcomeMessageCard any more. * Forbid showing the PriceWelcomeMessageCard any more.
*/ */
......
...@@ -134,17 +134,15 @@ public class TabSwitcherCoordinator ...@@ -134,17 +134,15 @@ public class TabSwitcherCoordinator
.getTabsWithNoOtherRelatedTabs()); .getTabsWithNoOtherRelatedTabs());
RecordUserAction.record("MobileMenuGroupTabs"); RecordUserAction.record("MobileMenuGroupTabs");
return true; return true;
} else if (id == R.id.track_prices_id || id == R.id.track_prices_check_id) { } else if (id == R.id.track_prices_row_menu_id) {
PriceTrackingUtilities.flipTrackPricesOnTabs(); mPriceTrackingDialogCoordinator.show();
resetWithTabList(mTabModelSelector.getTabModelFilterProvider()
.getCurrentTabModelFilter(),
false, TabSwitcherMediator.isShowingTabsInMRUOrder());
return true; return true;
} }
return false; return false;
} }
}; };
private TabGridIphDialogCoordinator mTabGridIphDialogCoordinator; private TabGridIphDialogCoordinator mTabGridIphDialogCoordinator;
private PriceTrackingDialogCoordinator mPriceTrackingDialogCoordinator;
public TabSwitcherCoordinator(Context context, ActivityLifecycleDispatcher lifecycleDispatcher, public TabSwitcherCoordinator(Context context, ActivityLifecycleDispatcher lifecycleDispatcher,
TabModelSelector tabModelSelector, TabContentManager tabContentManager, TabModelSelector tabModelSelector, TabContentManager tabContentManager,
...@@ -325,8 +323,10 @@ public class TabSwitcherCoordinator ...@@ -325,8 +323,10 @@ public class TabSwitcherCoordinator
mMessageCardProviderCoordinator.subscribeMessageService(iphMessageService); mMessageCardProviderCoordinator.subscribeMessageService(iphMessageService);
} }
if (TabUiFeatureUtilities.isPriceTrackingEnabled() if (TabUiFeatureUtilities.isPriceTrackingEnabled()) {
&& !PriceTrackingUtilities.isPriceWelcomeMessageCardDisabled()) { mPriceTrackingDialogCoordinator = new PriceTrackingDialogCoordinator(
context, modalDialogManager, this, mTabModelSelector);
if (!PriceTrackingUtilities.isPriceWelcomeMessageCardDisabled()) {
mPriceWelcomeMessageService = mPriceWelcomeMessageService =
new PriceWelcomeMessageService(mTabListCoordinator, mMediator); new PriceWelcomeMessageService(mTabListCoordinator, mMediator);
mMessageCardProviderCoordinator.subscribeMessageService( mMessageCardProviderCoordinator.subscribeMessageService(
...@@ -334,6 +334,7 @@ public class TabSwitcherCoordinator ...@@ -334,6 +334,7 @@ public class TabSwitcherCoordinator
mMediator.setPriceWelcomeMessageService(mPriceWelcomeMessageService); mMediator.setPriceWelcomeMessageService(mPriceWelcomeMessageService);
} }
} }
}
mIsInitialized = true; mIsInitialized = true;
} }
......
...@@ -35,6 +35,7 @@ tab_management_test_java_sources = [ ...@@ -35,6 +35,7 @@ tab_management_test_java_sources = [
"//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/ConditionalTabStripTest.java", "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/ConditionalTabStripTest.java",
"//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/MessageCardProviderTest.java", "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/MessageCardProviderTest.java",
"//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/MessageCardViewBinderTest.java", "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/MessageCardViewBinderTest.java",
"//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingDialogTest.java",
"//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/PriceWelcomeMessageCardViewBinderTest.java", "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/PriceWelcomeMessageCardViewBinderTest.java",
"//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/RecyclerViewMatcherUtils.java", "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/RecyclerViewMatcherUtils.java",
"//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridAccessibilityHelperTest.java", "//chrome/android/features/tab_ui/javatests/src/org/chromium/chrome/browser/tasks/tab_management/TabGridAccessibilityHelperTest.java",
......
...@@ -603,10 +603,6 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate ...@@ -603,10 +603,6 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate
if (item.getItemId() == R.id.track_prices_row_menu_id) { if (item.getItemId() == R.id.track_prices_row_menu_id) {
item.setVisible(isPriceTrackingVisible); item.setVisible(isPriceTrackingVisible);
item.setEnabled(isPriceTrackingEnabled); item.setEnabled(isPriceTrackingEnabled);
if (isPriceTrackingVisible) {
menu.findItem(R.id.track_prices_check_id)
.setChecked(PriceTrackingUtilities.isTrackPricesOnTabsEnabled());
}
} }
if (item.getItemId() == R.id.close_all_tabs_menu_id) { if (item.getItemId() == R.id.close_all_tabs_menu_id) {
boolean hasTabs = mTabModelSelector.getTotalTabCount() > 0; boolean hasTabs = mTabModelSelector.getTotalTabCount() > 0;
......
...@@ -347,8 +347,6 @@ public class OverviewAppMenuTest { ...@@ -347,8 +347,6 @@ public class OverviewAppMenuTest {
int itemGroupId = item.getGroupId(); int itemGroupId = item.getGroupId();
if (itemGroupId == R.id.OVERVIEW_MODE_MENU) { if (itemGroupId == R.id.OVERVIEW_MODE_MENU) {
assertTrue(item.isVisible()); assertTrue(item.isVisible());
MenuItem trackPricesCheck = menu.findItem(R.id.track_prices_check_id);
assertTrue(trackPricesCheck.isChecked());
} }
if (itemGroupId == R.id.START_SURFACE_MODE_MENU) { if (itemGroupId == R.id.START_SURFACE_MODE_MENU) {
assertFalse(item.isVisible()); assertFalse(item.isVisible());
......
...@@ -561,6 +561,11 @@ public final class ChromePreferenceKeys { ...@@ -561,6 +561,11 @@ public final class ChromePreferenceKeys {
public static final String PREFETCH_NOTIFICATION_TIME = "prefetch_notification_shown_time"; public static final String PREFETCH_NOTIFICATION_TIME = "prefetch_notification_shown_time";
public static final String PREFETCH_OFFLINE_COUNTER = "prefetch_notification_offline_counter"; public static final String PREFETCH_OFFLINE_COUNTER = "prefetch_notification_offline_counter";
/**
* Whether users turn on the feature getting price drop alerts.
*/
public static final String PRICE_TRACKING_PRICE_DROP_ALERTS =
"Chrome.PriceTracking.PriceDropAlerts";
/** /**
* Whether users disable the PriceWelcomeMessageCard. * Whether users disable the PriceWelcomeMessageCard.
*/ */
...@@ -872,6 +877,7 @@ public final class ChromePreferenceKeys { ...@@ -872,6 +877,7 @@ public final class ChromePreferenceKeys {
OFFLINE_MEASUREMENTS_LAST_CHECK_MILLIS, OFFLINE_MEASUREMENTS_LAST_CHECK_MILLIS,
OFFLINE_MEASUREMENTS_TIME_BETWEEN_CHECKS_MILLIS_LIST, OFFLINE_MEASUREMENTS_TIME_BETWEEN_CHECKS_MILLIS_LIST,
PERSISTENT_OFFLINE_CONTENT_AVAILABILITY_STATUS, PERSISTENT_OFFLINE_CONTENT_AVAILABILITY_STATUS,
PRICE_TRACKING_PRICE_DROP_ALERTS,
PRICE_TRACKING_PRICE_WELCOME_MESSAGE_CARD, PRICE_TRACKING_PRICE_WELCOME_MESSAGE_CARD,
PRICE_TRACKING_PRICE_WELCOME_MESSAGE_CARD_SHOW_COUNT, PRICE_TRACKING_PRICE_WELCOME_MESSAGE_CARD_SHOW_COUNT,
PRICE_TRACKING_TRACK_PRICES_ON_TABS, PRICE_TRACKING_TRACK_PRICES_ON_TABS,
......
...@@ -140,16 +140,8 @@ ...@@ -140,16 +140,8 @@
android:title="@string/menu_group_tabs" android:title="@string/menu_group_tabs"
android:icon="@drawable/ic_widgets" /> android:icon="@drawable/ic_widgets" />
<item android:id="@+id/track_prices_row_menu_id" <item android:id="@+id/track_prices_row_menu_id"
android:title="@null">
<menu>
<item android:id="@+id/track_prices_id"
android:title="@string/menu_track_prices" android:title="@string/menu_track_prices"
android:icon="@drawable/ic_trending_down_black" /> android:icon="@drawable/ic_trending_down_black" />
<item android:id="@+id/track_prices_check_id"
android:title="@null"
android:checkable="true" />
</menu>
</item>
<item android:id="@id/preferences_id" <item android:id="@id/preferences_id"
android:title="@string/menu_settings" android:title="@string/menu_settings"
android:icon="@drawable/settings_cog" /> android:icon="@drawable/settings_cog" />
...@@ -186,16 +178,8 @@ ...@@ -186,16 +178,8 @@
android:title="@string/menu_group_tabs" android:title="@string/menu_group_tabs"
android:icon="@drawable/ic_widgets" /> android:icon="@drawable/ic_widgets" />
<item android:id="@id/track_prices_row_menu_id" <item android:id="@id/track_prices_row_menu_id"
android:title="@null">
<menu>
<item android:id="@id/track_prices_id"
android:title="@string/menu_track_prices" android:title="@string/menu_track_prices"
android:icon="@drawable/ic_trending_down_black" /> android:icon="@drawable/ic_trending_down_black" />
<item android:id="@id/track_prices_check_id"
android:title="@null"
android:checkable="true" />
</menu>
</item>
<item android:id="@id/preferences_id" <item android:id="@id/preferences_id"
android:title="@string/menu_settings" android:title="@string/menu_settings"
android:icon="@drawable/settings_cog" /> android:icon="@drawable/settings_cog" />
......
...@@ -202,16 +202,8 @@ ...@@ -202,16 +202,8 @@
android:title="@string/menu_group_tabs" android:title="@string/menu_group_tabs"
android:icon="@drawable/ic_widgets" /> android:icon="@drawable/ic_widgets" />
<item android:id="@+id/track_prices_row_menu_id" <item android:id="@+id/track_prices_row_menu_id"
android:title="@null">
<menu>
<item android:id="@+id/track_prices_id"
android:title="@string/menu_track_prices" android:title="@string/menu_track_prices"
android:icon="@drawable/ic_trending_down_black" /> android:icon="@drawable/ic_trending_down_black" />
<item android:id="@+id/track_prices_check_id"
android:title="@null"
android:checkable="true" />
</menu>
</item>
<item android:id="@id/preferences_id" <item android:id="@id/preferences_id"
android:title="@string/menu_settings" android:title="@string/menu_settings"
android:icon="@drawable/settings_cog" /> android:icon="@drawable/settings_cog" />
...@@ -252,16 +244,8 @@ ...@@ -252,16 +244,8 @@
android:title="@string/menu_group_tabs" android:title="@string/menu_group_tabs"
android:icon="@drawable/ic_widgets" /> android:icon="@drawable/ic_widgets" />
<item android:id="@id/track_prices_row_menu_id" <item android:id="@id/track_prices_row_menu_id"
android:title="@null">
<menu>
<item android:id="@id/track_prices_id"
android:title="@string/menu_track_prices" android:title="@string/menu_track_prices"
android:icon="@drawable/ic_trending_down_black" /> android:icon="@drawable/ic_trending_down_black" />
<item android:id="@id/track_prices_check_id"
android:title="@null"
android:checkable="true" />
</menu>
</item>
<item android:id="@id/preferences_id" <item android:id="@id/preferences_id"
android:title="@string/menu_settings" android:title="@string/menu_settings"
android:icon="@drawable/settings_cog" /> android:icon="@drawable/settings_cog" />
......
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