From: uazo Date: Mon, 21 Aug 2023 14:03:25 +0000 Subject: Add option to disable snapshots License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- .../tab_management/TabGridViewBinder.java | 8 +++- .../tasks/tab_management/TabProperties.java | 5 +++ .../java/res/xml/privacy_preferences.xml | 5 +++ .../chrome/browser/app/ChromeActivity.java | 4 +- .../privacy/settings/PrivacySettings.java | 44 ++++++++++++++++++- .../strings/android_chrome_strings.grd | 8 ++++ 6 files changed, 71 insertions(+), 3 deletions(-) diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java @@ -536,7 +536,12 @@ class TabGridViewBinder { TabUtils.setDrawableAndUpdateImageMatrix(thumbnail, result, thumbnailSize); } else { thumbnail.setThumbnailViewState(ThumbnailViewState.PLACEHOLDER_LOADED); - thumbnail.setImageDrawable(null); + TabFavicon tabFavicon = model.get(TabProperties.FAVICON); + if (tabFavicon != null) { + thumbnail.setScaleType(ImageView.ScaleType.CENTER); + thumbnail.setImageDrawable( + isSelected ? tabFavicon.getSelectedDrawable() : tabFavicon.getDefaultDrawable()); + } } }; if (sThumbnailFetcherForTesting != null) { @@ -574,6 +579,7 @@ class TabGridViewBinder { */ private static void setFavicon( ImageView faviconView, PropertyModel model, @Nullable TabFavicon favicon) { + model.set(TabProperties.FAVICON, favicon); if (favicon == null) { faviconView.setImageDrawable(null); return; diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java @@ -131,6 +131,9 @@ public class TabProperties { public static final WritableBooleanPropertyKey FAVICON_FETCHED = new WritableBooleanPropertyKey(); + public static final WritableObjectPropertyKey FAVICON = + new WritableObjectPropertyKey<>(); + /** Property for lazily fetching favicons when required by an item in a UI. */ public static final WritableObjectPropertyKey FAVICON_FETCHER = new WritableObjectPropertyKey<>(); @@ -233,6 +236,7 @@ public class TabProperties { CARD_TYPE, CONTENT_DESCRIPTION_TEXT_RESOLVER, ACTION_BUTTON_DESCRIPTION_TEXT_RESOLVER, + FAVICON, QUICK_DELETE_ANIMATION_STATUS, TAB_GROUP_COLOR_VIEW_PROVIDER, TAB_GROUP_CARD_COLOR, @@ -274,6 +278,7 @@ public class TabProperties { TAB_ACTION_BUTTON_DATA, FAVICON_FETCHED, FAVICON_FETCHER, + FAVICON, IS_SELECTED, TITLE, HAS_NOTIFICATION_BUBBLE diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml --- a/chrome/android/java/res/xml/privacy_preferences.xml +++ b/chrome/android/java/res/xml/privacy_preferences.xml @@ -61,6 +61,11 @@ found in the LICENSE file. android:title="@string/open_external_links_incognito_title" android:summary="@string/open_external_links_incognito_summary" android:defaultValue="false" /> + mSnackbarManagerSupplier; + private Snackbar mSnackbar; + + @Override + public void setSnackbarManagerSupplier(Supplier manager) { + mSnackbarManagerSupplier = manager; + } + private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment"; private static final String PREF_PRELOAD_PAGES = "preload_pages"; private static final String PREF_HTTPS_FIRST_MODE = "https_first_mode"; @@ -206,6 +221,21 @@ public class PrivacySettings extends ChromeBaseSettingsFragment if (shouldHideSandboxPref(privacySandboxBridge)) { getPreferenceScreen().removePreference(sandboxPreference); } + mSnackbar = Snackbar.make(getActivity().getString(R.string.ui_relaunch_notice), + new SnackbarManager.SnackbarController() { + @Override + public void onDismissNoAction(Object actionData) { } + + @Override + public void onAction(Object actionData) { + ApplicationLifetime.terminate(true); + } + }, Snackbar.TYPE_NOTIFICATION, Snackbar.UMA_UNKNOWN) + .setDefaultLines(false) + .setAction(getActivity().getString(R.string.relaunch), + /*actionData*/null) + .setDuration(/*durationMs*/70000); + Preference privacyGuidePreference = findPreference(PREF_PRIVACY_GUIDE); // Record the launch of PG from the S&P link-row entry point privacyGuidePreference.setOnPreferenceClickListener( @@ -477,6 +507,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents"; public static final String PREF_OPEN_EXTERNAL_LINKS_INCOGNITO = "open_external_links_incognito"; + public static final String PREF_TABGRID_USE_ICONS = "tabgrid_use_icons"; @Override public boolean onPreferenceChange(Preference preference, Object newValue) { @@ -523,6 +554,13 @@ public class PrivacySettings extends ChromeBaseSettingsFragment SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit(); sharedPreferencesEditor.putBoolean(PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, (boolean)newValue); sharedPreferencesEditor.apply(); + } else if (PREF_TABGRID_USE_ICONS.equals(key)) { + SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit(); + sharedPreferencesEditor.putBoolean(PREF_TABGRID_USE_ICONS, (boolean)newValue); + sharedPreferencesEditor.apply(); + if (!mSnackbarManagerSupplier.get().isShowing()) { + mSnackbarManagerSupplier.get().showSnackbar(mSnackbar); + } } return true; } @@ -573,6 +611,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment : R.string.text_off); } + Preference tabGridUseIcons = + (ChromeSwitchPreference) findPreference(PREF_TABGRID_USE_ICONS); + tabGridUseIcons.setOnPreferenceChangeListener(this); + Preference refererPolicyPref = findPreference(PREF_REFERER_POLICY); refererPolicyPref.setSummary( RefererSettingsFragment.getRefererSummaryString(getContext())); diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd @@ -6691,6 +6691,14 @@ To change this setting, BEGIN_LINKdelete the Chrome d Your %1$swww.amazon.com timer ran out. It'll start again tomorrow. + + + Use only icons in the tab grid + + + Disable saving snapshots to disk (even for incognito sessions) + + Tab management --