Commit f2ba36a7 authored by zhiyuancai's avatar zhiyuancai Committed by Commit Bot

Record "track prices on tabs" in SharedPreferences

This CL records whether users turn on the feature "track prices on tabs"
and updates the checkbox on the tab switcher menu.

Bug: 1146636
Change-Id: I7dbdddb287a30b47298425eda79778433caa2316
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2524961Reviewed-by: default avatarWei-Yin Chen (陳威尹) <wychen@chromium.org>
Reviewed-by: default avatarYusuf Ozuysal <yusufo@chromium.org>
Reviewed-by: default avatarYue Zhang <yuezhanggg@chromium.org>
Commit-Queue: Zhiyuan Cai <zhiyuancai@google.com>
Cr-Commit-Position: refs/heads/master@{#828190}
parent 8ccefb4d
// Copyright 2020 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 org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
/**
* A class to handle whether price tracking-related features are turned on by users,
* including tracking prices on tabs and price drop alerts.
* Whether the feature is available is controlled by {@link
* TabUiFeatureUtilities#ENABLE_PRICE_TRACKING}.
*/
public class PriceTrackingUtilities {
private static final String TRACK_PRICES_ON_TABS =
ChromePreferenceKeys.PRICE_TRACKING_TRACK_PRICES_ON_TABS;
private static final SharedPreferencesManager SHARED_PREFERENCES_MANAGER =
SharedPreferencesManager.getInstance();
/**
* Update SharedPreferences when users turn on/off the feature tracking prices on tabs.
*/
public static void flipTrackPricesOnTabs() {
final boolean enableTrackPricesOnTabs =
SHARED_PREFERENCES_MANAGER.readBoolean(TRACK_PRICES_ON_TABS, false);
SHARED_PREFERENCES_MANAGER.writeBoolean(TRACK_PRICES_ON_TABS, !enableTrackPricesOnTabs);
}
/**
* @return Whether the track prices on tabs is turned on by users.
*/
public static boolean isTrackPricesOnTabsEnabled() {
return SHARED_PREFERENCES_MANAGER.readBoolean(TRACK_PRICES_ON_TABS, false);
}
}
...@@ -132,6 +132,9 @@ public class TabSwitcherCoordinator ...@@ -132,6 +132,9 @@ 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) {
PriceTrackingUtilities.flipTrackPricesOnTabs();
return true;
} }
return false; return false;
} }
......
...@@ -13,6 +13,7 @@ public_tab_management_java_sources = [ ...@@ -13,6 +13,7 @@ public_tab_management_java_sources = [
"//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/pseudotab/TabAttributeCache.java", "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/pseudotab/TabAttributeCache.java",
"//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_groups/EmptyTabGroupModelFilterObserver.java", "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_groups/EmptyTabGroupModelFilterObserver.java",
"//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter.java", "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_groups/TabGroupModelFilter.java",
"//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/PriceTrackingUtilities.java",
"//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUi.java", "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGroupUi.java",
"//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegate.java", "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementDelegate.java",
"//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementModuleProvider.java", "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabManagementModuleProvider.java",
......
...@@ -52,6 +52,7 @@ import org.chromium.chrome.browser.share.ShareHelper; ...@@ -52,6 +52,7 @@ import org.chromium.chrome.browser.share.ShareHelper;
import org.chromium.chrome.browser.share.ShareUtils; import org.chromium.chrome.browser.share.ShareUtils;
import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.tabmodel.TabModelSelector;
import org.chromium.chrome.browser.tasks.tab_management.PriceTrackingUtilities;
import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities; import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities;
import org.chromium.chrome.browser.toolbar.ToolbarManager; import org.chromium.chrome.browser.toolbar.ToolbarManager;
import org.chromium.chrome.browser.translate.TranslateUtils; import org.chromium.chrome.browser.translate.TranslateUtils;
...@@ -577,6 +578,10 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate ...@@ -577,6 +578,10 @@ 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;
......
...@@ -531,6 +531,12 @@ public final class ChromePreferenceKeys { ...@@ -531,6 +531,12 @@ 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 track prices on tabs.
*/
public static final String PRICE_TRACKING_TRACK_PRICES_ON_TABS =
"Chrome.PriceTracking.TrackPricesOnTabs";
public static final String PRIVACY_METRICS_REPORTING = "metrics_reporting"; public static final String PRIVACY_METRICS_REPORTING = "metrics_reporting";
public static final String PRIVACY_METRICS_IN_SAMPLE = "in_metrics_sample"; public static final String PRIVACY_METRICS_IN_SAMPLE = "in_metrics_sample";
public static final String PRIVACY_NETWORK_PREDICTIONS = "network_predictions"; public static final String PRIVACY_NETWORK_PREDICTIONS = "network_predictions";
...@@ -831,6 +837,7 @@ public final class ChromePreferenceKeys { ...@@ -831,6 +837,7 @@ public final class ChromePreferenceKeys {
IMAGE_DESCRIPTIONS_JUST_ONCE_COUNT, IMAGE_DESCRIPTIONS_JUST_ONCE_COUNT,
IMAGE_DESCRIPTIONS_DONT_ASK_AGAIN, IMAGE_DESCRIPTIONS_DONT_ASK_AGAIN,
PERSISTENT_OFFLINE_CONTENT_AVAILABILITY_STATUS, PERSISTENT_OFFLINE_CONTENT_AVAILABILITY_STATUS,
PRICE_TRACKING_TRACK_PRICES_ON_TABS,
PROMO_IS_DISMISSED.pattern(), PROMO_IS_DISMISSED.pattern(),
PROMO_TIMES_SEEN.pattern(), PROMO_TIMES_SEEN.pattern(),
SETTINGS_SAFETY_CHECK_LAST_RUN_TIMESTAMP, SETTINGS_SAFETY_CHECK_LAST_RUN_TIMESTAMP,
......
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