diff --git a/build/patches/Add-cromite-flags-support.patch b/build/patches/Add-cromite-flags-support.patch index bc1b881a..03fc35be 100644 --- a/build/patches/Add-cromite-flags-support.patch +++ b/build/patches/Add-cromite-flags-support.patch @@ -18,7 +18,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../base/cached_flags/ValuesReturned.java | 2 +- base/feature_list.cc | 76 ++++++++ base/feature_list.h | 98 +++++++++- - build/android/gyp/java_cpp_features.py | 17 ++ + build/android/gyp/java_cpp_features.py | 15 ++ chrome/android/java/res/values/values.xml | 3 + .../java/res/xml/privacy_preferences.xml | 4 + .../homepage/settings/HomepageSettings.java | 2 +- @@ -106,7 +106,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html third_party/blink/public/common/features.h | 1 + ui/base/ui_base_features.cc | 1 + ui/base/ui_base_features.h | 1 + - 93 files changed, 850 insertions(+), 32 deletions(-) + 93 files changed, 848 insertions(+), 32 deletions(-) create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/include_all_directory.java create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/java_template/CromiteCachedFlag.java.tmpl create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-cromite-flags-support.grdp @@ -152,7 +152,7 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn sources = [ "allocator/allocator_check.cc", "allocator/allocator_check.h", -@@ -1046,7 +1048,7 @@ component("base") { +@@ -1048,7 +1050,7 @@ component("base") { "//build/config/compiler:wglobal_constructors", ] @@ -291,7 +291,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc diff --git a/base/feature_list.h b/base/feature_list.h --- a/base/feature_list.h +++ b/base/feature_list.h -@@ -238,8 +238,10 @@ constexpr const char* GetFeatureNameFromIdentifier(std::string_view feature) { +@@ -233,8 +233,10 @@ StringStorage(const char (&feature)[N]) -> StringStorage; struct BASE_EXPORT LOGICALLY_CONST Feature { constexpr Feature(const char* name, FeatureState default_state, @@ -304,7 +304,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h #if BUILDFLAG(ENABLE_BANNED_BASE_FEATURE_PREFIX) if (std::string_view(name).find(BUILDFLAG(BANNED_BASE_FEATURE_PREFIX)) == 0) { -@@ -266,6 +268,9 @@ struct BASE_EXPORT LOGICALLY_CONST Feature { +@@ -261,6 +263,9 @@ struct BASE_EXPORT LOGICALLY_CONST Feature { // command line switch. const FeatureState default_state; @@ -314,7 +314,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h private: friend class FeatureList; -@@ -546,6 +551,11 @@ class BASE_EXPORT FeatureList { +@@ -541,6 +546,11 @@ class BASE_EXPORT FeatureList { // instance, which is checked in builds with DCHECKs enabled. static bool IsEnabled(const Feature& feature); @@ -326,7 +326,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h // Some characters are not allowed to appear in feature names or the // associated field trial names, as they are used as special characters for // command-line serialization. This function checks that the strings are ASCII -@@ -815,4 +825,88 @@ class BASE_EXPORT FeatureList { +@@ -810,4 +820,88 @@ class BASE_EXPORT FeatureList { } // namespace base @@ -418,34 +418,35 @@ diff --git a/base/feature_list.h b/base/feature_list.h diff --git a/build/android/gyp/java_cpp_features.py b/build/android/gyp/java_cpp_features.py --- a/build/android/gyp/java_cpp_features.py +++ b/build/android/gyp/java_cpp_features.py -@@ -25,10 +25,27 @@ class FeatureParserDelegate(java_cpp_utils.CppConstantParser.Delegate): - _FEATURE_RE_3_ARGS = re.compile(r'BASE_FEATURE\(k([^,]+),') - # For 2-arg macro: BASE_FEATURE(MyFeature, ...) - _FEATURE_RE_2_ARGS = re.compile(r'BASE_FEATURE\(([^,]+),') -+ -+ FEATURE_RE1 = re.compile(r'CROMITE_FEATURE\(k([^,]+),') -+ FEATURE_RE2 = re.compile(r'CROMITE_FEATURE_KEEP_DISABLED\(k([^,]+),') -+ FEATURE_RE3 = re.compile(r'CROMITE_FEATURE_DISABLED\(k([^,]+),') -+ FEATURE_RE4 = re.compile(r'CROMITE_FEATURE_KEEP_ENABLED\(k([^,]+),') -+ FEATURE_RE5 = re.compile(r'CROMITE_FEATURE_ENABLED\(k([^,]+),') -+ - _VALUE_RE = re.compile(r'\s*("(?:\\"|[^"])*")\s*,') +@@ -22,6 +22,11 @@ class FeatureParserDelegate(java_cpp_utils.CppConstantParser.Delegate): + # ExtractConstantName() -> 'ConstantName' + # ExtractValue() -> '"StringNameOfTheFeature"' or '"ConstantName"' + _FEATURE_RE = re.compile(r'BASE_FEATURE\(\s*(k\w+),') ++ _FEATURE_RE1 = re.compile(r'CROMITE_FEATURE\(\s*(k\w+),') ++ _FEATURE_RE2 = re.compile(r'BASE_FEATURE_DISABLED\(\s*(k\w+),') ++ _FEATURE_RE3 = re.compile(r'CROMITE_FEATURE_DISABLED\(\s*(k\w+),') ++ _FEATURE_RE4 = re.compile(r'BASE_FEATURE_ENABLED\(\s*(k\w+),') ++ _FEATURE_RE5 = re.compile(r'CROMITE_FEATURE_ENABLED\(\s*(k\w+),') + _STRING_LITERAL_RE = re.compile(r'"(?:\\"|[^"])*"') + _constant_name = None # The name of the current macro. + _comma_count = 0 # Number of commas seen in the current macro. +@@ -34,6 +39,16 @@ class FeatureParserDelegate(java_cpp_utils.CppConstantParser.Delegate): + self._constant_name = None - def ExtractConstantName(self, line): - match = self._FEATURE_RE_3_ARGS.match(line) + match = self._FEATURE_RE.match(line) + if match is None: -+ match = FeatureParserDelegate.FEATURE_RE1.match(line) ++ match = self._FEATURE_RE1.match(line) + if match is None: -+ match = FeatureParserDelegate.FEATURE_RE2.match(line) ++ match = self._FEATURE_RE2.match(line) + if match is None: -+ match = FeatureParserDelegate.FEATURE_RE3.match(line) ++ match = self._FEATURE_RE3.match(line) + if match is None: -+ match = FeatureParserDelegate.FEATURE_RE4.match(line) ++ match = self._FEATURE_RE4.match(line) + if match is None: -+ match = FeatureParserDelegate.FEATURE_RE5.match(line) ++ match = self._FEATURE_RE5.match(line) if match: - return match.group(1) - match = self._FEATURE_RE_2_ARGS.match(line) + # The regex ensures that the feature name starts with 'k'. + feature_name = match.group(1) diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml --- a/chrome/android/java/res/values/values.xml +++ b/chrome/android/java/res/values/values.xml @@ -508,7 +509,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.OneshotSupplier; import org.chromium.build.annotations.NullMarked; -@@ -72,24 +73,31 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -71,24 +72,31 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl private final OneshotSupplier mSnackbarManagerSupplier; private final OneshotSupplier mBottomSheetControllerSupplier; private final ObservableSupplier<@Nullable ModalDialogManager> mModalDialogManagerSupplier; @@ -552,7 +553,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; -@@ -32,7 +33,9 @@ import org.chromium.base.CallbackUtils; +@@ -39,7 +40,9 @@ import org.chromium.base.CallbackUtils; import org.chromium.base.DeviceInfo; import org.chromium.base.Log; import org.chromium.base.metrics.RecordHistogram; @@ -562,7 +563,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.base.supplier.OneshotSupplierImpl; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; -@@ -42,12 +45,14 @@ import org.chromium.chrome.browser.back_press.BackPressHelper; +@@ -49,12 +52,14 @@ import org.chromium.chrome.browser.back_press.BackPressHelper; import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.init.ChromeBrowserInitializer; @@ -577,8 +578,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.browser_ui.bottomsheet.BottomSheetControllerFactory; import org.chromium.components.browser_ui.bottomsheet.ManagedBottomSheetController; -@@ -92,6 +97,40 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity - implements PreferenceFragmentCompat.OnPreferenceStartFragmentCallback, SnackbarManageable { +@@ -107,6 +112,40 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity + PreferenceUpdateObserver { private static final String TAG = "SettingsActivity"; + private static class RequestRestartDelegate implements ChromeBaseSettingsFragment.RequireRestartDelegate { @@ -618,7 +619,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE) public static final String EXTRA_SHOW_FRAGMENT = "show_fragment"; -@@ -158,7 +197,8 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -184,7 +223,8 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity mProfile, mSnackbarManagerSupplier, mBottomSheetControllerSupplier, @@ -653,7 +654,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tracing/setting diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -384,6 +384,10 @@ using flags_ui::kOsLinux; +@@ -387,6 +387,10 @@ using flags_ui::kOsLinux; using flags_ui::kOsMac; using flags_ui::kOsWin; @@ -664,9 +665,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc namespace about_flags { namespace { -@@ -4895,6 +4899,10 @@ const FeatureEntry::FeatureVariation kNtpEnterpriseShortcutsVariations[] = { - #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || \ - // BUILDFLAG(IS_CHROMEOS) +@@ -4966,6 +4970,10 @@ const FeatureEntry::FeatureVariation kSeamlessSigninPromoTypes[] = { + std::size(kSeamlessSigninPromoTypeTwoButtons), nullptr}}; + #endif // BUILDFLAG(IS_ANDROID) +#define FEATURE_PARAM_SECTION +#include "cromite_flags/chrome_browser_about_flags_cc.inc" @@ -675,7 +676,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc // RECORDING USER METRICS FOR FLAGS: // ----------------------------------------------------------------------------- // The first line of the entry is the internal name. -@@ -4921,6 +4929,9 @@ const FeatureEntry::FeatureVariation kNtpEnterpriseShortcutsVariations[] = { +@@ -4992,6 +5000,9 @@ const FeatureEntry::FeatureVariation kSeamlessSigninPromoTypes[] = { const FeatureEntry kFeatureEntries[] = { // Include generated flags for flag unexpiry; see //docs/flag_expiry.md and // //tools/flags/generate_unexpire_flags.py. @@ -688,16 +689,16 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/browser_features.cc b/chrome/browser/browser_features.cc --- a/chrome/browser/browser_features.cc +++ b/chrome/browser/browser_features.cc -@@ -368,4 +368,5 @@ BASE_FEATURE(kRemovalOfIWAsFromTabCapture, - "RemovalOfIWAsFromTabCapture", - base::FEATURE_ENABLED_BY_DEFAULT); +@@ -313,4 +313,5 @@ BASE_FEATURE(kReportPakFileIntegrity, + // show both in Chrome Tabs and Windows. + BASE_FEATURE(kRemovalOfIWAsFromTabCapture, base::FEATURE_ENABLED_BY_DEFAULT); +#include "cromite_flags/chrome_browser_browser_features_cc.inc" } // namespace features diff --git a/chrome/browser/browser_features.h b/chrome/browser/browser_features.h --- a/chrome/browser/browser_features.h +++ b/chrome/browser/browser_features.h -@@ -125,6 +125,7 @@ BASE_DECLARE_FEATURE(kRemovalOfIWAsFromTabCapture); +@@ -126,6 +126,7 @@ BASE_DECLARE_FEATURE(kRemovalOfIWAsFromTabCapture); // module, e.g. // //chrome/browser//features.h // @@ -708,7 +709,7 @@ diff --git a/chrome/browser/browser_features.h b/chrome/browser/browser_features diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn --- a/chrome/browser/flags/BUILD.gn +++ b/chrome/browser/flags/BUILD.gn -@@ -12,9 +12,14 @@ android_library("java") { +@@ -13,9 +13,14 @@ android_library("java") { "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureMap.java", "android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java", ] @@ -723,7 +724,7 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn "//base/version_info/android:version_constants_java", "//build:android_buildflags", "//build:chromeos_buildflags", -@@ -25,12 +30,20 @@ android_library("java") { +@@ -27,12 +32,20 @@ android_library("java") { "//third_party/jni_zero:jni_zero_java", ] srcjar_deps = [ @@ -747,9 +748,9 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -1558,5 +1558,6 @@ BASE_FEATURE(kWebOtpCrossDeviceSimpleString, - "WebOtpCrossDeviceSimpleString", - base::FEATURE_DISABLED_BY_DEFAULT); +@@ -1159,5 +1159,6 @@ BASE_FEATURE(kUseLibunwindstackNativeUnwinderAndroid, + // a descriptive text. + BASE_FEATURE(kWebOtpCrossDeviceSimpleString, base::FEATURE_DISABLED_BY_DEFAULT); +#include "cromite_flags/chrome_browser_flags_android_chrome_feature_list_cc.inc" } // namespace android @@ -757,7 +758,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h --- a/chrome/browser/flags/android/chrome_feature_list.h +++ b/chrome/browser/flags/android/chrome_feature_list.h -@@ -346,6 +346,7 @@ constexpr base::FeatureParam kTouchToSearchCalloutSnippetAsSubtitle( +@@ -354,6 +354,7 @@ constexpr base::FeatureParam kTouchToSearchCalloutSnippetAsSubtitle( "snippet_as_subtitle", /*default_value=*/false); @@ -863,7 +864,7 @@ new file mode 100644 diff --git a/chrome/browser/settings/android/java/src/org/chromium/chrome/browser/settings/ChromeBaseSettingsFragment.java b/chrome/browser/settings/android/java/src/org/chromium/chrome/browser/settings/ChromeBaseSettingsFragment.java --- a/chrome/browser/settings/android/java/src/org/chromium/chrome/browser/settings/ChromeBaseSettingsFragment.java +++ b/chrome/browser/settings/android/java/src/org/chromium/chrome/browser/settings/ChromeBaseSettingsFragment.java -@@ -16,6 +16,7 @@ import androidx.recyclerview.widget.RecyclerView; +@@ -9,6 +9,7 @@ import androidx.preference.PreferenceFragmentCompat; import org.chromium.build.annotations.Initializer; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; @@ -871,9 +872,9 @@ diff --git a/chrome/browser/settings/android/java/src/org/chromium/chrome/browse import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncher; import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherFactory; import org.chromium.chrome.browser.flags.ChromeFeatureList; -@@ -28,6 +29,12 @@ import org.chromium.components.browser_ui.settings.SettingsStylingController; - - import java.util.Objects; +@@ -18,6 +19,12 @@ import org.chromium.components.browser_ui.settings.EmbeddableSettingsPage; + import org.chromium.components.browser_ui.settings.PreferenceUpdateObserver; + import org.chromium.components.browser_ui.settings.SettingsCustomTabLauncher; +import android.os.Bundle; +import androidx.preference.Preference; @@ -884,9 +885,9 @@ diff --git a/chrome/browser/settings/android/java/src/org/chromium/chrome/browse /** * Base class for settings in Chrome. * -@@ -89,6 +96,49 @@ public abstract class ChromeBaseSettingsFragment extends PreferenceFragmentCompa - }); - } +@@ -35,6 +42,49 @@ public abstract class ChromeBaseSettingsFragment extends PreferenceFragmentCompa + private SettingsCustomTabLauncher mCustomTabLauncher; + private @Nullable PreferenceUpdateObserver mPreferenceUpdateObserver; + private Supplier mRequireRestartDelegateSupplier; + @@ -968,9 +969,9 @@ new file mode 100644 diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.cc --- a/chrome/browser/ui/ui_features.cc +++ b/chrome/browser/ui/ui_features.cc -@@ -748,4 +748,5 @@ bool IsNewTabAddsToActiveGroupEnabled() { - } - #endif // !BUILDFLAG(IS_ANDROID) +@@ -664,4 +664,5 @@ bool IsAndroidAnimatedProgressBarInBrowserEnabled() { + + BASE_FEATURE(kWhatsNewDesktopRefresh, base::FEATURE_DISABLED_BY_DEFAULT); +#include "cromite_flags/chrome_browser_ui_ui_features_cc.inc" } // namespace features @@ -1009,9 +1010,9 @@ diff --git a/chrome/browser/unexpire_flags.cc b/chrome/browser/unexpire_flags.cc diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc --- a/chrome/common/chrome_features.cc +++ b/chrome/common/chrome_features.cc -@@ -1623,5 +1623,5 @@ BASE_FEATURE(DisableShortcutsEnableDiy, base::FEATURE_ENABLED_BY_DEFAULT); +@@ -1696,5 +1696,5 @@ BASE_FEATURE(kDisableShortcutsEnableDiy, base::FEATURE_ENABLED_BY_DEFAULT); // happen silently without prompting an updating dialog. - BASE_FEATURE(SilentPolicyAndDefaultAppUpdating, + BASE_FEATURE(kSilentPolicyAndDefaultAppUpdating, base::FEATURE_DISABLED_BY_DEFAULT); - +#include "cromite_flags/chrome_common_chrome_features_cc.inc" @@ -1019,14 +1020,14 @@ diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc diff --git a/components/browser_ui/accessibility/android/BUILD.gn b/components/browser_ui/accessibility/android/BUILD.gn --- a/components/browser_ui/accessibility/android/BUILD.gn +++ b/components/browser_ui/accessibility/android/BUILD.gn -@@ -55,6 +55,7 @@ android_library("lib_java") { +@@ -61,6 +61,7 @@ android_library("lib_java") { ":page_zoom_utils_java", "//base:base_java", "//build/android:build_java", + "//chrome/browser/settings:java", "//components/browser_ui/settings/android:java", "//components/browser_ui/site_settings/android:java", - "//components/cached_flags:java", + "//components/browser_ui/styles/android:java", diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml --- a/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml +++ b/components/browser_ui/accessibility/android/java/res/xml/accessibility_preferences.xml @@ -1037,9 +1038,9 @@ diff --git a/components/browser_ui/accessibility/android/java/res/xml/accessibil - + - - diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java --- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java +++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettings.java @@ -1064,7 +1065,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c + public void onCreatePreferencesCromite(@Nullable Bundle savedInstanceState, @Nullable String rootKey) { SettingsUtils.addPreferencesFromResource(this, R.xml.accessibility_preferences); - mPageZoomDefaultZoomPref = findPreference(PREF_PAGE_ZOOM_DEFAULT_ZOOM); + // TODO(crbug.com/439911511): Add PageZoomPreference directly to the xml file instead. diff --git a/components/browser_ui/settings/android/java/res/values/attrs.xml b/components/browser_ui/settings/android/java/res/values/attrs.xml --- a/components/browser_ui/settings/android/java/res/values/attrs.xml +++ b/components/browser_ui/settings/android/java/res/values/attrs.xml @@ -1082,7 +1083,7 @@ diff --git a/components/browser_ui/settings/android/java/res/values/attrs.xml b/ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium/components/browser_ui/settings/ChromeSwitchPreference.java b/components/browser_ui/settings/android/widget/java/src/org/chromium/components/browser_ui/settings/ChromeSwitchPreference.java --- a/components/browser_ui/settings/android/widget/java/src/org/chromium/components/browser_ui/settings/ChromeSwitchPreference.java +++ b/components/browser_ui/settings/android/widget/java/src/org/chromium/components/browser_ui/settings/ChromeSwitchPreference.java -@@ -13,6 +13,8 @@ import android.view.accessibility.AccessibilityEvent; +@@ -15,6 +15,8 @@ import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; import android.widget.TextView; @@ -1091,7 +1092,7 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium import androidx.annotation.ColorInt; import androidx.annotation.VisibleForTesting; import androidx.preference.PreferenceViewHolder; -@@ -38,6 +40,11 @@ public class ChromeSwitchPreference extends SwitchPreferenceCompat { +@@ -43,6 +45,11 @@ public class ChromeSwitchPreference extends SwitchPreferenceCompat /** Indicates if the preference uses a custom layout. */ private final boolean mHasCustomLayout; @@ -1103,7 +1104,7 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium // TOOD(crbug.com/1451550): This is an interim solution. In the long-term, we should migrate // away from a switch with dynamically changing summaries onto a radio group. /** -@@ -57,6 +64,18 @@ public class ChromeSwitchPreference extends SwitchPreferenceCompat { +@@ -67,6 +74,18 @@ public class ChromeSwitchPreference extends SwitchPreferenceCompat mHasCustomLayout = ManagedPreferencesUtils.isCustomLayoutApplied(context, attrs); mUseSummaryAsTitle = true; @@ -1161,9 +1162,9 @@ diff --git a/components/components_strings.grd b/components/components_strings.g diff --git a/components/content_settings/core/common/features.cc b/components/content_settings/core/common/features.cc --- a/components/content_settings/core/common/features.cc +++ b/components/content_settings/core/common/features.cc -@@ -176,5 +176,6 @@ BASE_FEATURE(kForceAllowStorageAccess, - "ForceAllowStorageAccess", - base::FEATURE_DISABLED_BY_DEFAULT); +@@ -160,5 +160,6 @@ BASE_FEATURE(kContentSettingsPartitioning, base::FEATURE_DISABLED_BY_DEFAULT); + + BASE_FEATURE(kForceAllowStorageAccess, base::FEATURE_DISABLED_BY_DEFAULT); +#include "cromite_flags/components_content_settings_core_common_features_cc.inc" } // namespace features @@ -1177,7 +1178,7 @@ new file mode 100644 diff --git a/components/offline_pages/core/offline_page_feature.cc b/components/offline_pages/core/offline_page_feature.cc --- a/components/offline_pages/core/offline_page_feature.cc +++ b/components/offline_pages/core/offline_page_feature.cc -@@ -48,4 +48,5 @@ bool IsOfflinePagesNetworkStateLikelyUnknown() { +@@ -47,4 +47,5 @@ bool IsOfflinePagesNetworkStateLikelyUnknown() { return base::FeatureList::IsEnabled(kOfflinePagesNetworkStateLikelyUnknown); } @@ -1197,7 +1198,7 @@ diff --git a/components/offline_pages/core/offline_page_feature.h b/components/o diff --git a/components/password_manager/core/browser/features/password_features.cc b/components/password_manager/core/browser/features/password_features.cc --- a/components/password_manager/core/browser/features/password_features.cc +++ b/components/password_manager/core/browser/features/password_features.cc -@@ -225,4 +225,5 @@ BASE_FEATURE(kRetrieveTrustedVaultKeyKeyboardAccessoryAction, +@@ -183,4 +183,5 @@ BASE_FEATURE(kRetrieveTrustedVaultKeyKeyboardAccessoryAction, base::FEATURE_DISABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_ANDROID) @@ -1206,8 +1207,8 @@ diff --git a/components/password_manager/core/browser/features/password_features diff --git a/components/permissions/features.cc b/components/permissions/features.cc --- a/components/permissions/features.cc +++ b/components/permissions/features.cc -@@ -137,6 +137,8 @@ BASE_FEATURE(kOsAdditionalSecurityPermissionKillSwitch, - "OsAdditionalSecurityPermissionKillSwitch", +@@ -107,6 +107,8 @@ BASE_FEATURE(kSafetyHubUnusedPermissionRevocationForAllSurfaces, + BASE_FEATURE(kOsAdditionalSecurityPermissionKillSwitch, base::FEATURE_DISABLED_BY_DEFAULT); #endif + @@ -1639,7 +1640,7 @@ diff --git a/components/webui/version/version_handler_helper.cc b/components/web diff --git a/content/common/features.cc b/content/common/features.cc --- a/content/common/features.cc +++ b/content/common/features.cc -@@ -761,4 +761,5 @@ bool IsEnforceSameDocumentOriginInvariantsEnabled() { +@@ -675,4 +675,5 @@ bool IsEnforceSameDocumentOriginInvariantsEnabled() { blink::features::kTreatMhtmlInitialDocumentLoadsAsCrossDocument); } @@ -1648,7 +1649,7 @@ diff --git a/content/common/features.cc b/content/common/features.cc diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc -@@ -1403,4 +1403,5 @@ bool IsPushSubscriptionChangeEventEnabled() { +@@ -1411,4 +1411,5 @@ bool IsPushSubscriptionChangeEventEnabled() { features::kPushSubscriptionChangeEventOnResubscribe); } @@ -1657,7 +1658,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c diff --git a/content/public/common/content_features.h b/content/public/common/content_features.h --- a/content/public/common/content_features.h +++ b/content/public/common/content_features.h -@@ -404,6 +404,7 @@ CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForOutOfProcess(); +@@ -409,6 +409,7 @@ CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForOutOfProcess(); CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForBrowserProcess(); CONTENT_EXPORT bool IsPushSubscriptionChangeEventEnabled(); @@ -2003,7 +2004,7 @@ new file mode 100755 diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc --- a/media/base/media_switches.cc +++ b/media/base/media_switches.cc -@@ -1727,5 +1727,5 @@ uint32_t GetPassthroughAudioFormats() { +@@ -1730,5 +1730,5 @@ uint32_t GetPassthroughAudioFormats() { return 0; #endif // BUILDFLAG(ENABLE_PASSTHROUGH_AUDIO_CODECS) } @@ -2013,7 +2014,7 @@ diff --git a/media/base/media_switches.cc b/media/base/media_switches.cc diff --git a/media/base/media_switches.h b/media/base/media_switches.h --- a/media/base/media_switches.h +++ b/media/base/media_switches.h -@@ -603,5 +603,5 @@ MEDIA_EXPORT bool IsOutOfProcessVideoDecodingEnabled(); +@@ -609,5 +609,5 @@ MEDIA_EXPORT bool IsOutOfProcessVideoDecodingEnabled(); MEDIA_EXPORT uint32_t GetPassthroughAudioFormats(); } // namespace media @@ -2023,18 +2024,18 @@ diff --git a/media/base/media_switches.h b/media/base/media_switches.h diff --git a/net/base/features.cc b/net/base/features.cc --- a/net/base/features.cc +++ b/net/base/features.cc -@@ -804,4 +804,5 @@ BASE_FEATURE_PARAM(std::string, - /*name=*/"wildcard_quic_hints", - /*default_value=*/""); +@@ -839,4 +839,5 @@ BASE_FEATURE_PARAM(size_t, + "cache_size", + 64); +#include "cromite_flags/net_base_features_cc.inc" } // namespace net::features diff --git a/net/base/features.h b/net/base/features.h --- a/net/base/features.h +++ b/net/base/features.h -@@ -912,6 +912,7 @@ NET_EXPORT BASE_DECLARE_FEATURE_PARAM(std::string, kQuicHintHostPortPairs); - NET_EXPORT BASE_DECLARE_FEATURE_PARAM(std::string, - kWildcardQuicHintHostPortPairs); +@@ -935,6 +935,7 @@ NET_EXPORT BASE_DECLARE_FEATURE(kDnsFilteringDetails); + NET_EXPORT BASE_DECLARE_FEATURE(kUpdateIsMainFrameOriginRecentlyAccessed); + NET_EXPORT BASE_DECLARE_FEATURE_PARAM(size_t, kRecentlyAccessedOriginCacheSize); +#include "cromite_flags/net_base_features_h.inc" } // namespace net::features @@ -2043,16 +2044,16 @@ diff --git a/net/base/features.h b/net/base/features.h diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc --- a/services/network/public/cpp/features.cc +++ b/services/network/public/cpp/features.cc -@@ -674,4 +674,5 @@ BASE_FEATURE_PARAM(bool, +@@ -587,4 +587,5 @@ BASE_FEATURE_PARAM(bool, "url_loader", - false); + true); +#include "cromite_flags/services_network_public_cpp_features_cc.inc" } // namespace network::features diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h --- a/services/network/public/cpp/features.h +++ b/services/network/public/cpp/features.h -@@ -367,6 +367,7 @@ BASE_DECLARE_FEATURE_PARAM(bool, kNetworkServiceTaskSchedulerResourceScheduler); +@@ -361,6 +361,7 @@ BASE_DECLARE_FEATURE_PARAM(bool, kNetworkServiceTaskSchedulerResourceScheduler); COMPONENT_EXPORT(NETWORK_CPP_FLAGS_AND_SWITCHES) BASE_DECLARE_FEATURE_PARAM(bool, kNetworkServiceTaskSchedulerURLLoader); @@ -2063,7 +2064,7 @@ diff --git a/services/network/public/cpp/features.h b/services/network/public/cp diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc --- a/third_party/blink/common/features.cc +++ b/third_party/blink/common/features.cc -@@ -2569,4 +2569,5 @@ bool IsXrDevice() { +@@ -2633,4 +2633,5 @@ bool IsXrDevice() { // // DO NOT ADD NEW FEATURES HERE. @@ -2072,7 +2073,7 @@ diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/fea diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h --- a/third_party/blink/public/common/features.h +++ b/third_party/blink/public/common/features.h -@@ -1908,6 +1908,7 @@ BLINK_COMMON_EXPORT bool IsXrDevice(); +@@ -1917,6 +1917,7 @@ BLINK_COMMON_EXPORT bool IsXrDevice(); // // DO NOT ADD NEW FEATURES HERE. @@ -2083,18 +2084,18 @@ diff --git a/third_party/blink/public/common/features.h b/third_party/blink/publ diff --git a/ui/base/ui_base_features.cc b/ui/base/ui_base_features.cc --- a/ui/base/ui_base_features.cc +++ b/ui/base/ui_base_features.cc -@@ -492,4 +492,5 @@ BASE_FEATURE(kUseSystemDefaultAccentColors, - "UseSystemDefaultAccentColors", - base::FEATURE_ENABLED_BY_DEFAULT); +@@ -434,4 +434,5 @@ BASE_FEATURE(kUseSystemDefaultAccentColors, base::FEATURE_ENABLED_BY_DEFAULT); + + BASE_FEATURE(kStringWidthCache, base::FEATURE_DISABLED_BY_DEFAULT); +#include "cromite_flags/ui_base_features_cc.inc" } // namespace features diff --git a/ui/base/ui_base_features.h b/ui/base/ui_base_features.h --- a/ui/base/ui_base_features.h +++ b/ui/base/ui_base_features.h -@@ -248,6 +248,7 @@ bool IsHandleIMESpanChangesOnUpdateCompositionEnabled(); +@@ -267,6 +267,7 @@ BASE_DECLARE_FEATURE(kUseSystemDefaultAccentColors); COMPONENT_EXPORT(UI_BASE_FEATURES) - BASE_DECLARE_FEATURE(kUseSystemDefaultAccentColors); + BASE_DECLARE_FEATURE(kStringWidthCache); +#include "cromite_flags/ui_base_features_h.inc" } // namespace features diff --git a/build/patches/Add-option-to-use-home-page-as-NTP.patch b/build/patches/Add-option-to-use-home-page-as-NTP.patch index 8dbd181d..068130c8 100644 --- a/build/patches/Add-option-to-use-home-page-as-NTP.patch +++ b/build/patches/Add-option-to-use-home-page-as-NTP.patch @@ -24,7 +24,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridDialogMediator.java -@@ -120,6 +120,9 @@ import java.util.Optional; +@@ -120,6 +120,9 @@ import java.util.Objects; import java.util.Set; import java.util.function.Supplier; @@ -34,11 +34,11 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser /** * A mediator for the TabGridDialog component, responsible for communicating with the components' * coordinator as well as managing the business logic for dialog show/hide. -@@ -1028,9 +1031,15 @@ public class TabGridDialogMediator - return; - } +@@ -1033,9 +1036,15 @@ public class TabGridDialogMediator + UrlConstantResolver urlConstantResolver = + UrlConstantResolverFactory.getForProfile(profile); -+ String url = UrlConstants.NTP_URL; ++ String url = urlConstantResolver.getNtpUrl(); + if (UrlConstants.NTP_URL.equals(url) + && HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) { + GURL gurl = HomepageManager.getInstance().getHomepageGurl(); @@ -46,7 +46,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser + } TabGroupUtils.openUrlInGroup( assumeNonNull(mCurrentTabGroupModelFilterSupplier.get()), -- UrlConstants.NTP_URL, +- urlConstantResolver.getNtpUrl(), + url, tabsInGroup.get(tabsInGroup.size() - 1).getId(), TabLaunchType.FROM_TAB_GROUP_UI); @@ -62,11 +62,11 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import org.chromium.chrome.browser.layouts.LayoutStateProvider.LayoutStateObserver; import org.chromium.chrome.browser.layouts.LayoutType; import org.chromium.chrome.browser.profiles.Profile; -@@ -420,10 +421,15 @@ public class TabGroupUiMediator implements BackPressHandler { - assert relatedTabs.size() > 0; +@@ -425,10 +426,15 @@ public class TabGroupUiMediator implements BackPressHandler { + UrlConstantResolverFactory.getForProfile(currentTabProfile); Tab parentTabToAttach = relatedTabs.get(relatedTabs.size() - 1); -+ String url = UrlConstants.NTP_URL; ++ String url = urlConstantResolver.getNtpUrl(); + if (HomepageManager.getInstance().getPrefNTPIsHomepageEnabled()) { + GURL gurl = HomepageManager.getInstance().getHomepageGurl(); + url = gurl != null ? gurl.getSpec() : url; @@ -74,7 +74,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser mTabCreatorManager .getTabCreator(currentTab.isIncognito()) .createNewTab( -- new LoadUrlParams(UrlConstants.NTP_URL), +- new LoadUrlParams(urlConstantResolver.getNtpUrl()), + new LoadUrlParams(url), TabLaunchType.FROM_TAB_GROUP_UI, parentTabToAttach); @@ -200,7 +200,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/metrics/LaunchM diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/ChromeTabCreator.java -@@ -26,6 +26,7 @@ import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingTask; +@@ -27,6 +27,7 @@ import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingTask; import org.chromium.chrome.browser.compositor.CompositorViewHolder; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.multiwindow.MultiInstanceManager; @@ -208,7 +208,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome import org.chromium.chrome.browser.prefetch.settings.PreloadPagesSettingsBridge; import org.chromium.chrome.browser.prefetch.settings.PreloadPagesState; import org.chromium.chrome.browser.profiles.Profile; -@@ -569,6 +570,13 @@ public class ChromeTabCreator extends TabCreator +@@ -572,6 +573,13 @@ public class ChromeTabCreator extends TabCreator */ public @Nullable Tab launchUrl( String url, @TabLaunchType int type, @Nullable Intent intent, long intentTimestamp) { @@ -225,7 +225,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java -@@ -334,6 +334,7 @@ public final class ChromePreferenceKeys { +@@ -350,6 +350,7 @@ public final class ChromePreferenceKeys { public static final String HOMEPAGE_USE_CHROME_NTP = "Chrome.Homepage.UseNTP"; public static final String HOMEPAGE_USE_DEFAULT_URI = "homepage_partner_enabled"; @@ -247,7 +247,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro 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 -@@ -1324,6 +1324,9 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1330,6 +1330,9 @@ Your Google account may have other forms of browsing history like searches and a Last hour @@ -260,7 +260,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_ui_prefs.cc --- a/chrome/browser/ui/browser_ui_prefs.cc +++ b/chrome/browser/ui/browser_ui_prefs.cc -@@ -115,6 +115,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { +@@ -119,6 +119,8 @@ void RegisterBrowserUserPrefs(user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kPinSplitTabButton, false, pref_registration_flags); @@ -272,7 +272,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -1345,6 +1345,10 @@ inline constexpr char kSplitViewDragAndDropNudgeUsedCount[] = +@@ -1336,6 +1336,10 @@ inline constexpr char kSplitViewDragAndDropNudgeUsedCount[] = // by enterprise policy. inline constexpr char kGeminiSettings[] = "browser.gemini_settings"; diff --git a/build/patches/Bromite-auto-updater.patch b/build/patches/Bromite-auto-updater.patch index 17558779..9af9699b 100644 --- a/build/patches/Bromite-auto-updater.patch +++ b/build/patches/Bromite-auto-updater.patch @@ -36,13 +36,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../safety_hub/SafetyHubFetchService.java | 5 - .../strings/android_chrome_strings.grd | 23 +- .../ui/lens/lens_overlay_query_controller.cc | 1 + - .../endpoint_fetcher/endpoint_fetcher.cc | 123 ++++++-- - .../endpoint_fetcher/endpoint_fetcher.h | 25 ++ + .../endpoint_fetcher/endpoint_fetcher.cc | 125 ++++++-- + .../endpoint_fetcher/endpoint_fetcher.h | 28 +- components/manta/base_provider.cc | 1 + .../composebox/composebox_query_controller.cc | 2 +- .../Bromite-auto-updater.inc | 3 + .../Bromite-auto-updater.inc | 1 + - 34 files changed, 1235 insertions(+), 93 deletions(-) + 34 files changed, 1239 insertions(+), 94 deletions(-) create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/CromiteUpdateStatusProvider.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java create mode 100644 chrome/browser/endpoint_fetcher/BUILD.gn @@ -71,7 +71,7 @@ diff --git a/build/android/java/templates/BuildConfig.template b/build/android/j diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni --- a/build/config/android/rules.gni +++ b/build/config/android/rules.gni -@@ -1954,6 +1954,9 @@ if (!is_robolectric && enable_java_templates) { +@@ -1952,6 +1952,9 @@ if (!is_robolectric && enable_java_templates) { sources = [ "//build/android/java/templates/BuildConfig.template" ] defines = [] @@ -84,7 +84,7 @@ diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -839,6 +839,8 @@ chrome_java_sources = [ +@@ -848,6 +848,8 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/omaha/OmahaBase.java", "java/src/org/chromium/chrome/browser/omaha/OmahaDelegate.java", "java/src/org/chromium/chrome/browser/omaha/OmahaDelegateBase.java", @@ -678,7 +678,7 @@ new file mode 100644 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -2674,6 +2674,12 @@ static_library("browser") { +@@ -2669,6 +2669,12 @@ static_library("browser") { } if (is_android) { @@ -1091,7 +1091,7 @@ new file mode 100644 diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -372,6 +372,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -375,6 +375,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kProtectedTabsAndroid, &kPwaRestoreUi, &kPwaRestoreUiAtStartup, @@ -1102,8 +1102,8 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -462,6 +462,7 @@ public abstract class ChromeFeatureList { - public static final String HUB_SLIDE_ANIMATION = "HubSlideAnimation"; +@@ -464,6 +464,7 @@ public abstract class ChromeFeatureList { + public static final String INCOGNITO_NTP_SMALL_ICON = "IncognitoNtpSmallIcon"; public static final String INCOGNITO_SCREENSHOT = "IncognitoScreenshot"; public static final String INCOGNITO_THEME_OVERLAY_TESTING = "IncognitoThemeOverlayTesting"; + public static final String INLINE_UPDATE_FLOW = "InlineUpdateFlow"; @@ -1680,7 +1680,7 @@ diff --git a/chrome/browser/safety_hub/android/java/src/org/chromium/chrome/brow 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 -@@ -2273,6 +2273,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -2279,6 +2279,12 @@ Your Google account may have other forms of browsing history like searches and a Chrome updates are no longer supported for this version of Android @@ -1693,7 +1693,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro -@@ -4249,7 +4255,10 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4255,7 +4261,10 @@ To change this setting, BEGIN_LINKdelete the Chrome d @@ -1705,7 +1705,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Newer version is available -@@ -4260,6 +4269,18 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4266,6 +4275,18 @@ To change this setting, BEGIN_LINKdelete the Chrome d Android version is unsupported @@ -1728,17 +1728,17 @@ diff --git a/chrome/browser/ui/lens/lens_overlay_query_controller.cc b/chrome/br --- a/chrome/browser/ui/lens/lens_overlay_query_controller.cc +++ b/chrome/browser/ui/lens/lens_overlay_query_controller.cc @@ -712,6 +712,7 @@ LensOverlayQueryController::CreateEndpointFetcher( - /*post_data=*/std::move(request_string), - /*headers=*/request_headers, - /*cors_exempt_headers=*/cors_exempt_headers, chrome::GetChannel(), + /*url_loader_factory=*/profile_ + ? profile_->GetURLLoaderFactory().get() + : g_browser_process->shared_url_loader_factory(), + kTrafficAnnotationTag, - /*request_params=*/ + /*identity_manager=*/nullptr, EndpointFetcher::RequestParams::Builder(http_method, kTrafficAnnotationTag) diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoint_fetcher/endpoint_fetcher.cc --- a/components/endpoint_fetcher/endpoint_fetcher.cc +++ b/components/endpoint_fetcher/endpoint_fetcher.cc -@@ -21,6 +21,11 @@ +@@ -25,6 +25,11 @@ #include "services/network/public/mojom/referrer_policy.mojom-shared.h" #include "services/network/public/mojom/url_response_head.mojom.h" @@ -1750,25 +1750,34 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi namespace endpoint_fetcher { namespace { -@@ -37,6 +42,8 @@ std::string GetHttpMethodString(const HttpMethod& http_method) { - return "POST"; - case HttpMethod::kDelete: +@@ -43,6 +48,8 @@ std::string GetHttpMethodString(const HttpMethod& http_method) { return "DELETE"; + case HttpMethod::kPut: + return "PUT"; + case HttpMethod::kHead: + return "HEAD"; default: DCHECK(0) << base::StringPrintf("Unknown HttpMethod %d\n", static_cast(http_method)); -@@ -51,6 +58,8 @@ HttpMethod GetHttpMethod(const std::string& http_method_string) { - return HttpMethod::kPost; - } else if (http_method_string == "DELETE") { - return HttpMethod::kDelete; -+ } else if (http_method_string == "HEAD") { -+ return HttpMethod::kHead; - } - return HttpMethod::kUndefined; +@@ -50,6 +57,13 @@ std::string GetHttpMethodString(const HttpMethod& http_method) { + return ""; } -@@ -110,6 +119,7 @@ EndpointFetcher::EndpointFetcher( + ++HttpMethod GetHttpMethod(const std::string& http_method_string) { ++ if (http_method_string == "HEAD") { ++ return HttpMethod::kHead; ++ } ++ return HttpMethod::kUndefined; ++} ++ + } // namespace + + EndpointResponse::EndpointResponse() = default; +@@ -108,9 +122,11 @@ EndpointFetcher::RequestParams::Builder::Build() { + EndpointFetcher::EndpointFetcher( + const scoped_refptr& url_loader_factory, + signin::IdentityManager* identity_manager, ++ const net::NetworkTrafficAnnotationTag& annotation_tag, RequestParams request_params) : url_loader_factory_(url_loader_factory), identity_manager_(identity_manager), @@ -1776,35 +1785,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi request_params_(std::move(request_params)) { if (request_params_.auth_type() == OAUTH) { DCHECK(identity_manager_) -@@ -150,9 +160,11 @@ EndpointFetcher::EndpointFetcher( - const std::vector& headers, - const std::vector& cors_exempt_headers, - version_info::Channel channel, -+ const net::NetworkTrafficAnnotationTag& annotation_tag, - const RequestParams request_params) - : url_loader_factory_(url_loader_factory), - identity_manager_(nullptr), -+ intercept_redirect_(false), - request_params_(EndpointFetcher::RequestParams::Builder(request_params) - .SetAuthType(CHROME_API_KEY) - .SetUrl(url) -@@ -171,6 +183,7 @@ EndpointFetcher::EndpointFetcher( - const net::NetworkTrafficAnnotationTag& annotation_tag) - : url_loader_factory_(url_loader_factory), - identity_manager_(nullptr), -+ intercept_redirect_(false), - request_params_(EndpointFetcher::RequestParams::Builder(HttpMethod::kGet, - annotation_tag) - .SetAuthType(NO_AUTH) -@@ -193,6 +206,7 @@ EndpointFetcher::EndpointFetcher( - signin::ConsentLevel consent_level) - : url_loader_factory_(url_loader_factory), - identity_manager_(identity_manager), -+ intercept_redirect_(false), - request_params_( - EndpointFetcher::RequestParams::Builder(GetHttpMethod(http_method), - annotation_tag) -@@ -212,6 +226,7 @@ EndpointFetcher::EndpointFetcher( +@@ -123,12 +139,32 @@ EndpointFetcher::EndpointFetcher( EndpointFetcher::EndpointFetcher( const net::NetworkTrafficAnnotationTag& annotation_tag) : identity_manager_(nullptr), @@ -1812,11 +1793,10 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi request_params_( EndpointFetcher::RequestParams::Builder(HttpMethod::kUndefined, annotation_tag) -@@ -219,6 +234,25 @@ EndpointFetcher::EndpointFetcher( - .SetSanitizeResponse(true) + .SetTimeout(kDefaultTimeOut) .Build()) {} -+// constructor used by Bromite ++// constructor used by Cromite +EndpointFetcher::EndpointFetcher( + const scoped_refptr& url_loader_factory, + const GURL& url, @@ -1838,7 +1818,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi EndpointFetcher::~EndpointFetcher() = default; void EndpointFetcher::Fetch(EndpointFetcherCallback endpoint_fetcher_callback) { -@@ -301,13 +335,10 @@ void EndpointFetcher::PerformHttpRequest( +@@ -211,13 +247,10 @@ void EndpointFetcher::PerformHttpRequest( auto resource_request = std::make_unique(); resource_request->method = GetHttpMethodString(request_params_.http_method()); resource_request->url = request_params_.url(); @@ -1853,9 +1833,9 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi + resource_request->load_flags = net::LOAD_BYPASS_CACHE | net::LOAD_DISABLE_CACHE + | net::LOAD_DO_NOT_SAVE_COOKIES; // Add Content-Type header if post data is present. - if (request_params_.http_method() == HttpMethod::kPost && - request_params_.post_data()) { -@@ -346,8 +377,23 @@ void EndpointFetcher::PerformHttpRequest( + bool has_body_content = (request_params_.http_method() == HttpMethod::kPost || + request_params_.http_method() == HttpMethod::kPut) && +@@ -258,8 +291,23 @@ void EndpointFetcher::PerformHttpRequest( break; } @@ -1877,9 +1857,9 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi + &EndpointFetcher::OnSimpleLoaderRedirect, base::Unretained(this))); + } - if (request_params_.http_method() == HttpMethod::kPost && - request_params_.post_data()) { -@@ -361,9 +407,18 @@ void EndpointFetcher::PerformHttpRequest( + if (has_body_content) { + simple_url_loader_->AttachStringForUpload( +@@ -272,9 +320,18 @@ void EndpointFetcher::PerformHttpRequest( simple_url_loader_->SetRetryOptions(GetMaxRetries(), network::SimpleURLLoader::RETRY_ON_5XX); @@ -1901,7 +1881,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi network::SimpleURLLoader::BodyAsStringCallbackDeprecated body_as_string_callback = base::BindOnce( &EndpointFetcher::OnResponseFetched, weak_ptr_factory_.GetWeakPtr(), -@@ -453,21 +508,6 @@ void EndpointFetcher::OnSanitizationResult( +@@ -333,21 +390,6 @@ void EndpointFetcher::OnResponseFetched( std::move(endpoint_fetcher_callback).Run(std::move(response)); } @@ -1921,9 +1901,9 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi -} - int EndpointFetcher::GetMaxRetries() const { - if (!request_params_.max_retries.has_value()) { - return kNumRetries; -@@ -493,4 +533,39 @@ std::string EndpointFetcher::GetUrlForTesting() { + return request_params_.max_retries.value_or(kNumRetries); + } +@@ -365,4 +407,39 @@ std::string EndpointFetcher::GetUrlForTesting() { return request_params_.url().spec(); } @@ -1966,59 +1946,55 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoint_fetcher/endpoint_fetcher.h --- a/components/endpoint_fetcher/endpoint_fetcher.h +++ b/components/endpoint_fetcher/endpoint_fetcher.h -@@ -23,6 +23,8 @@ +@@ -20,6 +20,9 @@ + #include "services/network/public/mojom/fetch_api.mojom-forward.h" + #include "url/gurl.h" + ++#include "services/network/public/cpp/resource_request.h" ++#include "services/network/public/mojom/url_response_head.mojom.h" ++ namespace base { class TimeDelta; } // namespace base -+#include "services/network/public/cpp/resource_request.h" -+#include "services/network/public/mojom/url_response_head.mojom.h" - - namespace network { - class SimpleURLLoader; -@@ -60,6 +62,7 @@ enum class HttpMethod { - kGet = 0, +@@ -61,6 +64,7 @@ enum class HttpMethod { kPost = 1, kDelete = 2, -+ kHead = 3, + kPut = 3, ++ kHead = 4, }; enum AuthType { -@@ -73,6 +76,8 @@ enum AuthType { +@@ -79,6 +83,8 @@ struct EndpointResponse { + ~EndpointResponse(); - struct EndpointResponse { std::string response; + long last_modified; + std::string redirect_url; int http_status_code{-1}; std::optional error_type; - }; -@@ -360,6 +365,7 @@ class EndpointFetcher { - const std::vector& headers, - const std::vector& cors_exempt_headers, - version_info::Channel channel, -+ const net::NetworkTrafficAnnotationTag& annotation_tag, - const RequestParams request_params); - - // Less preferred convenience constructor for requests requiring no -@@ -376,6 +382,14 @@ class EndpointFetcher { - const GURL& url, - const net::NetworkTrafficAnnotationTag& annotation_tag); - -+ // Constructor if no authentication is needed, with timeout + scoped_refptr headers; +@@ -314,7 +320,16 @@ class EndpointFetcher { + EndpointFetcher( + const scoped_refptr& url_loader_factory, + signin::IdentityManager* identity_manager, +- RequestParams request_params); ++ RequestParams request_params, ++ const net::NetworkTrafficAnnotationTag& annotation_tag); ++ ++ // Constructor used by cromite + EndpointFetcher(const scoped_refptr& url_loader_factory, + const GURL& url, + const std::string& http_method, + int64_t timeout_ms, + const bool intercept_redirect, + const net::NetworkTrafficAnnotationTag& annotation_tag); -+ - // Used internally. Can be used if caller constructs their own - // url_loader_factory and identity_manager. - EndpointFetcher( -@@ -425,11 +439,17 @@ class EndpointFetcher { - void OnSanitizationResult(std::unique_ptr response, - EndpointFetcherCallback endpoint_fetcher_callback, - data_decoder::JsonSanitizer::Result result); + + EndpointFetcher(const EndpointFetcher& endpoint_fetcher) = delete; + EndpointFetcher& operator=(const EndpointFetcher& endpoint_fetcher) = delete; +@@ -347,11 +362,17 @@ class EndpointFetcher { + + void OnResponseFetched(EndpointFetcherCallback callback, + std::unique_ptr response_body); + void OnURLLoadComplete(scoped_refptr headers); + void OnSimpleLoaderRedirect(const GURL& url_before_redirect, + const net::RedirectInfo& redirect_info, @@ -2033,7 +2009,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin // Members set in constructor const scoped_refptr url_loader_factory_; -@@ -437,6 +457,8 @@ class EndpointFetcher { +@@ -359,6 +380,8 @@ class EndpointFetcher { // this case, callers should invoke `PerformRequest` directly). const raw_ptr identity_manager_; @@ -2042,7 +2018,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin // The complete definition of the specific network request to be performed. // Contains authentication details and response handling preferences. const RequestParams request_params_; -@@ -446,6 +468,9 @@ class EndpointFetcher { +@@ -368,6 +391,9 @@ class EndpointFetcher { access_token_fetcher_; std::unique_ptr simple_url_loader_; @@ -2055,26 +2031,26 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin diff --git a/components/manta/base_provider.cc b/components/manta/base_provider.cc --- a/components/manta/base_provider.cc +++ b/components/manta/base_provider.cc -@@ -164,6 +164,7 @@ std::unique_ptr BaseProvider::CreateEndpointFetcherForDemoMode( - /*cors_exempt_headers=*/std::vector(), - // ChromeOS always uses the stable channel API key - version_info::Channel::STABLE, +@@ -156,6 +156,7 @@ std::unique_ptr BaseProvider::CreateEndpointFetcherForDemoMode( + return std::make_unique( + /*url_loader_factory=*/url_loader_factory_, + /*identity_manager=*/nullptr, + annotation_tag, EndpointFetcher::RequestParams::Builder(kHttpMethod, annotation_tag) - .Build()); - } + .SetAuthType(endpoint_fetcher::CHROME_API_KEY) + .SetUrl(url) diff --git a/components/omnibox/composebox/composebox_query_controller.cc b/components/omnibox/composebox/composebox_query_controller.cc --- a/components/omnibox/composebox/composebox_query_controller.cc +++ b/components/omnibox/composebox/composebox_query_controller.cc -@@ -434,7 +434,7 @@ ComposeboxQueryController::CreateEndpointFetcher( - /*post_data=*/std::move(request_string), - /*headers=*/request_headers, - /*cors_exempt_headers=*/cors_exempt_headers, -- /*channel=*/channel_, -+ /*channel=*/channel_, kTrafficAnnotationTag, - /*request_params=*/ - EndpointFetcher::RequestParams::Builder(http_method, - kTrafficAnnotationTag) +@@ -524,7 +524,7 @@ ComposeboxQueryController::CreateEndpointFetcher( + .SetTimeout(timeout) + .SetUploadProgressCallback(std::move(upload_progress_callback)) + .SetUrl(fetch_url) +- .Build()); ++ .Build(), kTrafficAnnotationTag); + } + + lens::LensOverlayClientContext ComposeboxQueryController::CreateClientContext() diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Bromite-auto-updater.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Bromite-auto-updater.inc new file mode 100644 --- /dev/null diff --git a/build/patches/Content-settings-infrastructure.patch b/build/patches/Content-settings-infrastructure.patch index 118842ed..329d8bf2 100644 --- a/build/patches/Content-settings-infrastructure.patch +++ b/build/patches/Content-settings-infrastructure.patch @@ -14,8 +14,8 @@ Require: bromite-build-utils.patch .../ChromeSiteSettingsDelegate.java | 17 +- ...page_specific_content_settings_delegate.cc | 2 +- chrome/browser/resources/settings/BUILD.gn | 2 +- - .../settings/privacy_page/privacy_page.html | 1 + - .../settings/privacy_page/privacy_page.ts | 77 +++- + .../privacy_page/privacy_page_index.html | 1 + + .../privacy_page/privacy_page_index.ts | 77 +++- chrome/browser/resources/settings/route.ts | 2 + ...settings_category_default_radio_group.html | 12 + .../settings_category_default_radio_group.ts | 23 +- @@ -47,7 +47,7 @@ Require: bromite-build-utils.patch ...tomTriStateSiteSettingsPreferenceImpl.java | 24 + .../ContentSettingsResources.java | 39 +- .../site_settings/SingleCategorySettings.java | 57 ++- - .../site_settings/SingleWebsiteSettings.java | 53 ++- + .../site_settings/SingleWebsiteSettings.java | 54 ++- .../site_settings/SiteSettings.java | 33 +- .../site_settings/SiteSettingsCategory.java | 18 +- .../site_settings/SiteSettingsDelegate.java | 2 + @@ -74,7 +74,7 @@ Require: bromite-build-utils.patch .../core/common/content_settings.mojom | 6 + .../common/content_settings_mojom_traits.cc | 12 +- .../common/content_settings_mojom_traits.h | 24 + - .../core/common/content_settings_types.mojom | 1 + + .../core/common/content_settings_types.mojom | 2 + .../renderer/content_settings_agent_impl.cc | 74 ++++ .../renderer/content_settings_agent_impl.h | 9 + .../PageInfoPermissionsController.java | 9 + @@ -85,7 +85,7 @@ Require: bromite-build-utils.patch .../platform/web_content_settings_client.h | 13 + .../execution_context/execution_context.cc | 16 + .../execution_context/execution_context.h | 5 + - 74 files changed, 1965 insertions(+), 108 deletions(-) + 74 files changed, 1967 insertions(+), 108 deletions(-) create mode 100644 components/browser_ui/settings/android/java/res/layout/preference_spinner_single_widget.xml create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java @@ -99,7 +99,7 @@ Require: bromite-build-utils.patch diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java -@@ -70,6 +70,10 @@ import org.chromium.url.GURL; +@@ -69,6 +69,10 @@ import org.chromium.url.GURL; import java.util.List; import java.util.Set; @@ -110,7 +110,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C /** A SiteSettingsDelegate instance that contains Chrome-specific Site Settings logic. */ @NullMarked public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { -@@ -243,7 +247,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { +@@ -242,7 +246,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { @Override public boolean isHelpAndFeedbackEnabled() { @@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C } @Override -@@ -381,6 +385,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { +@@ -380,6 +384,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { return mPrivacySandboxBridge.getRelatedWebsiteSetOwner(memberOrigin); } @@ -152,7 +152,7 @@ diff --git a/chrome/browser/content_settings/page_specific_content_settings_dele diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resources/settings/BUILD.gn --- a/chrome/browser/resources/settings/BUILD.gn +++ b/chrome/browser/resources/settings/BUILD.gn -@@ -319,6 +319,7 @@ build_webui("build") { +@@ -353,6 +353,7 @@ build_webui("build") { "privacy_sandbox/privacy_sandbox_browser_proxy.ts", "relaunch_mixin.ts", "reset_page/reset_browser_proxy.ts", @@ -160,7 +160,7 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc "route.ts", "router.ts", "safety_hub/safety_hub_browser_proxy.ts", -@@ -333,7 +334,6 @@ build_webui("build") { +@@ -366,7 +367,6 @@ build_webui("build") { "site_settings/constants.ts", "site_settings/site_settings_mixin.ts", "site_settings/site_settings_prefs_browser_proxy.ts", @@ -168,28 +168,28 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc "site_settings/website_usage_browser_proxy.ts", "time.ts", "tooltip_mixin.ts", -diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html ---- a/chrome/browser/resources/settings/privacy_page/privacy_page.html -+++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html -@@ -982,4 +982,5 @@ - - - -+
- -diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/chrome/browser/resources/settings/privacy_page/privacy_page.ts ---- a/chrome/browser/resources/settings/privacy_page/privacy_page.ts -+++ b/chrome/browser/resources/settings/privacy_page/privacy_page.ts -@@ -54,6 +54,7 @@ import {SiteSettingsPrefsBrowserProxyImpl} from '../site_settings/site_settings_ +diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page_index.html b/chrome/browser/resources/settings/privacy_page/privacy_page_index.html +--- a/chrome/browser/resources/settings/privacy_page/privacy_page_index.html ++++ b/chrome/browser/resources/settings/privacy_page/privacy_page_index.html +@@ -572,4 +572,5 @@ + + - import {PrivacyGuideAvailabilityMixin} from './privacy_guide/privacy_guide_availability_mixin.js'; - import {getTemplate} from './privacy_page.html.js'; ++
+ +diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page_index.ts b/chrome/browser/resources/settings/privacy_page/privacy_page_index.ts +--- a/chrome/browser/resources/settings/privacy_page/privacy_page_index.ts ++++ b/chrome/browser/resources/settings/privacy_page/privacy_page_index.ts +@@ -29,6 +29,7 @@ import {PrivacyGuideAvailabilityMixin} from './privacy_guide/privacy_guide_avail + import type {PrivacyGuideBrowserProxy} from './privacy_guide/privacy_guide_browser_proxy.js'; + import {MAX_PRIVACY_GUIDE_PROMO_IMPRESSION, PrivacyGuideBrowserProxyImpl} from './privacy_guide/privacy_guide_browser_proxy.js'; + import {getTemplate} from './privacy_page_index.html.js'; +import { SettingsCategoryDefaultRadioGroupElement } from '../site_settings/settings_category_default_radio_group.js'; - interface BlockAutoplayStatus { - enabled: boolean; -@@ -77,8 +78,82 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { - return 'settings-privacy-page'; + // clang-format off + // +@@ -53,8 +54,82 @@ export class SettingsPrivacyPageIndexElement extends + return 'settings-privacy-page-index'; } + static getSettingTemplate(template: HTMLTemplateElement, @@ -283,9 +283,9 @@ diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resourc /** * Add all of the child routes that originate from the privacy route, -@@ -175,6 +176,7 @@ function addPrivacyChildRoutes(r: Partial) { +@@ -155,6 +156,7 @@ function addPrivacyChildRoutes(r: Partial) { + r.SITE_SETTINGS_LOCAL_NETWORK_ACCESS = r.SITE_SETTINGS.createChild('localNetworkAccess'); - r.SITE_SETTINGS_LOCAL_NETWORK_ACCESS.hasMigratedToPlugin = true; } + setupContentSettingsRoutes(r); } @@ -390,16 +390,17 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b/chrome/browser/resources/settings/site_settings/site_details.html --- a/chrome/browser/resources/settings/site_settings/site_details.html +++ b/chrome/browser/resources/settings/site_settings/site_details.html -@@ -331,4 +331,5 @@ +@@ -332,5 +332,6 @@ label="$i18n{siteSettingsLocalNetworkAccess}"> +
+ diff --git a/chrome/browser/resources/settings/site_settings/site_details.ts b/chrome/browser/resources/settings/site_settings/site_details.ts --- a/chrome/browser/resources/settings/site_settings/site_details.ts +++ b/chrome/browser/resources/settings/site_settings/site_details.ts -@@ -62,8 +62,39 @@ export class SiteDetailsElement extends SiteDetailsElementBase { +@@ -69,8 +69,39 @@ export class SiteDetailsElement extends SiteDetailsElementBase { return 'site-details'; } @@ -675,7 +676,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/site_settings_util. diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts --- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts +++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts -@@ -50,7 +50,7 @@ function getCategoryItemMap(): Map { +@@ -51,7 +51,7 @@ function getCategoryItemMap(): Map { } // The following list is ordered alphabetically by |id|. The order in which // these appear in the UI is determined elsewhere in this file. @@ -684,7 +685,7 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ { route: routes.SITE_SETTINGS_ADS, id: Id.ADS, -@@ -451,10 +451,36 @@ function getCategoryItemMap(): Map { +@@ -452,10 +452,36 @@ function getCategoryItemMap(): Map { icon: 'privacy:cookie', }, ]; @@ -721,7 +722,7 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ function buildItemListFromIds(orderedIdList: ContentSettingsTypes[]): CategoryListItem[] { const map = getCategoryItemMap(); -@@ -545,7 +571,7 @@ export class SettingsSiteSettingsPageElement extends +@@ -546,7 +572,7 @@ export class SettingsSiteSettingsPageElement extends Id.IMAGES, Id.POPUPS, ]), @@ -733,7 +734,7 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -1542,6 +1542,7 @@ static_library("ui") { +@@ -1581,6 +1581,7 @@ static_library("ui") { "//components/commerce/core/mojom:mojo_bindings", "//components/commerce/core/webui", "//components/endpoint_fetcher", @@ -741,7 +742,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn "//components/enterprise/common:files_scan_data", "//components/feedback/proto", "//components/headless/console_message_logger", -@@ -4672,6 +4673,7 @@ static_library("ui") { +@@ -4719,6 +4720,7 @@ static_library("ui") { "//components/power_bookmarks/core", "//components/power_bookmarks/storage", "//components/prefs", @@ -912,7 +913,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.h b/chrome diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc --- a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc +++ b/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc -@@ -39,6 +39,34 @@ +@@ -40,6 +40,34 @@ #include "ui/views/controls/styled_label.h" #include "ui/views/style/typography.h" #include "ui/views/view_class_properties.h" @@ -947,7 +948,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c namespace { -@@ -73,17 +101,12 @@ PermissionToggleRowView::PermissionToggleRowView( +@@ -74,17 +102,12 @@ PermissionToggleRowView::PermissionToggleRowView( navigation_handler_(navigation_handler) { SetUseDefaultFillLayout(true); row_view_ = AddChildView(std::make_unique()); @@ -966,7 +967,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c if (permission.requesting_origin.has_value()) { std::u16string requesting_origin_string; switch (permission.type) { -@@ -181,6 +204,91 @@ void PermissionToggleRowView::UpdatePermission( +@@ -182,6 +205,91 @@ void PermissionToggleRowView::UpdatePermission( UpdateUiOnPermissionChanged(); } @@ -1058,7 +1059,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c void PermissionToggleRowView::OnToggleButtonPressed() { PageInfoUI::ToggleBetweenAllowAndBlock(permission_); PermissionChanged(); -@@ -189,27 +297,19 @@ void PermissionToggleRowView::OnToggleButtonPressed() { +@@ -190,27 +298,19 @@ void PermissionToggleRowView::OnToggleButtonPressed() { void PermissionToggleRowView::AddToggleButton( const std::u16string& toggle_accessible_name, int icon_label_spacing) { @@ -1093,7 +1094,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c } void PermissionToggleRowView::InitForUserSource( -@@ -251,12 +351,6 @@ void PermissionToggleRowView::InitForUserSource( +@@ -255,12 +355,6 @@ void PermissionToggleRowView::InitForUserSource( auto spacer_view = std::make_unique(); spacer_view->SetPreferredSize(gfx::Size(icon_size, icon_size)); spacer_view_ = row_view_->AddControl(std::move(spacer_view)); @@ -1106,7 +1107,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c } } } -@@ -282,6 +376,15 @@ void PermissionToggleRowView::InitForManagedSource( +@@ -286,6 +380,15 @@ void PermissionToggleRowView::InitForManagedSource( } void PermissionToggleRowView::UpdateUiOnPermissionChanged() { @@ -1122,7 +1123,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c if (blocked_on_system_level_label_) { if (!permission_.setting) { permission_blocked_on_system_level_ = false; -@@ -326,6 +429,37 @@ void PermissionToggleRowView::UpdateUiOnPermissionChanged() { +@@ -330,6 +433,37 @@ void PermissionToggleRowView::UpdateUiOnPermissionChanged() { } } } @@ -1230,7 +1231,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide #include "components/password_manager/core/browser/leak_detection_dialog_utils.h" #include "components/password_manager/core/browser/manage_passwords_referrer.h" #include "components/password_manager/core/common/password_manager_features.h" -@@ -3855,6 +3859,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, +@@ -3885,6 +3889,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, policy_indicator::AddLocalizedStrings(html_source); AddSecurityKeysStrings(html_source); @@ -1290,7 +1291,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/browser/ui/webui/settings/site_settings_helper.cc --- a/chrome/browser/ui/webui/settings/site_settings_helper.cc +++ b/chrome/browser/ui/webui/settings/site_settings_helper.cc -@@ -47,6 +47,8 @@ +@@ -46,6 +46,8 @@ #include "chrome/grit/generated_resources.h" #include "components/content_settings/core/browser/content_settings_provider.h" #include "components/content_settings/core/browser/host_content_settings_map.h" @@ -1299,8 +1300,8 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/content_settings_pattern.h" #include "components/content_settings/core/common/content_settings_types.h" -@@ -261,13 +263,13 @@ constexpr auto kContentSettingsTypeGroupNames = std::to_array< - {ContentSettingsType::DEVICE_ATTRIBUTES, nullptr}, +@@ -263,13 +265,13 @@ constexpr auto kContentSettingsTypeGroupNames = std::to_array< + {ContentSettingsType::SUSPICIOUS_NOTIFICATION_SHOW_ORIGINAL, nullptr}, }); -static_assert( @@ -1320,7 +1321,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b struct SiteSettingSourceStringMapping { SiteSettingSource source; -@@ -529,6 +531,13 @@ bool HasRegisteredGroupName(ContentSettingsType type) { +@@ -531,6 +533,13 @@ bool HasRegisteredGroupName(ContentSettingsType type) { return true; } } @@ -1334,7 +1335,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b return false; } -@@ -542,11 +551,24 @@ ContentSettingsType ContentSettingsTypeFromGroupName(std::string_view name) { +@@ -544,11 +553,24 @@ ContentSettingsType ContentSettingsTypeFromGroupName(std::string_view name) { return entry.type; } } @@ -1360,7 +1361,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b for (const auto& entry : kContentSettingsTypeGroupNames) { if (type == entry.type) { // Content setting types that aren't represented in the settings UI -@@ -561,7 +583,6 @@ std::string_view ContentSettingsTypeToGroupName(ContentSettingsType type) { +@@ -563,7 +585,6 @@ std::string_view ContentSettingsTypeToGroupName(ContentSettingsType type) { return entry.name ? entry.name : std::string_view(); } } @@ -1368,7 +1369,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b NOTREACHED() << static_cast(type) << " is not a recognized content settings type."; } -@@ -668,6 +689,13 @@ std::vector GetVisiblePermissionCategories( +@@ -670,6 +691,13 @@ std::vector GetVisiblePermissionCategories( base_types->push_back(ContentSettingsType::LOCAL_NETWORK_ACCESS); } @@ -1385,7 +1386,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b diff --git a/components/browser_ui/settings/android/BUILD.gn b/components/browser_ui/settings/android/BUILD.gn --- a/components/browser_ui/settings/android/BUILD.gn +++ b/components/browser_ui/settings/android/BUILD.gn -@@ -92,6 +92,7 @@ android_resources("java_resources") { +@@ -94,6 +94,7 @@ android_resources("java_resources") { "java/res/layout/managed_disclaimer_preference_for_radio_groups.xml", "java/res/layout/preference_chrome_image_view.xml", "java/res/layout/preference_spinner.xml", @@ -1548,7 +1549,7 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/browser_ui/site_settings/android/BUILD.gn --- a/components/browser_ui/site_settings/android/BUILD.gn +++ b/components/browser_ui/site_settings/android/BUILD.gn -@@ -153,6 +153,23 @@ android_library("java") { +@@ -156,6 +156,23 @@ android_library("java") { ":site_settings_jni_headers", "//components/content_settings/android:java_pref_names_srcjar", ] @@ -1572,7 +1573,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b } android_library("javatests") { -@@ -202,6 +219,7 @@ robolectric_library("junit") { +@@ -205,6 +222,7 @@ robolectric_library("junit") { } android_resources("java_resources") { @@ -1598,7 +1599,7 @@ diff --git a/components/browser_ui/site_settings/android/java/res/xml/site_setti diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/AllSiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/AllSiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/AllSiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/AllSiteSettings.java -@@ -389,7 +389,8 @@ public class AllSiteSettings extends BaseSiteSettingsFragment +@@ -390,7 +390,8 @@ public class AllSiteSettings extends BaseSiteSettingsFragment if (queryHasChanged) getInfoForOrigins(); }); @@ -1608,7 +1609,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c MenuItem help = menu.add( Menu.NONE, -@@ -401,6 +402,8 @@ public class AllSiteSettings extends BaseSiteSettingsFragment +@@ -402,6 +403,8 @@ public class AllSiteSettings extends BaseSiteSettingsFragment getResources(), R.drawable.ic_help_and_feedback, getContext().getTheme())); @@ -2306,7 +2307,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java -@@ -349,6 +349,10 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -355,6 +355,10 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment } else { @ContentSetting Integer contentSetting = website.site().getContentSetting(browserContextHandle, type); @@ -2317,7 +2318,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (contentSetting != null) { return ContentSetting.BLOCK == contentSetting; } -@@ -540,6 +544,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -546,6 +550,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment ? new HashSet<>(getArguments().getStringArrayList(EXTRA_SELECTED_DOMAINS)) : null; @@ -2325,7 +2326,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c configureGlobalToggles(); if (mCategory.getType() == SiteSettingsCategory.Type.REQUEST_DESKTOP_SITE) { RecordUserAction.record("DesktopSiteContentSetting.SettingsPage.Entered"); -@@ -575,7 +580,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -581,7 +586,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment if (queryHasChanged) getInfoForOrigins(); }); @@ -2335,7 +2336,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c MenuItem help = menu.add( Menu.NONE, -@@ -587,12 +593,20 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -593,12 +599,20 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment getResources(), R.drawable.ic_help_and_feedback, getContext().getTheme())); @@ -2356,7 +2357,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (mCategory.getType() == SiteSettingsCategory.Type.PROTECTED_MEDIA) { getSiteSettingsDelegate() .launchProtectedContentHelpAndFeedbackActivity(getActivity()); -@@ -671,6 +685,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -673,6 +687,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment public boolean onPreferenceChange(Preference preference, Object newValue) { BrowserContextHandle browserContextHandle = getBrowserContextHandle(); PrefService prefService = UserPrefs.get(browserContextHandle); @@ -2368,7 +2369,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (BINARY_RADIO_BUTTON_KEY.equals(preference.getKey()) || BINARY_TOGGLE_KEY.equals(preference.getKey())) { assert !mCategory.isManaged(); -@@ -845,7 +864,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -847,7 +866,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment ? R.string.website_settings_add_site_description_javascript_optimizer_block : R.string.website_settings_add_site_description_javascript_optimizer_allow; } @@ -2377,7 +2378,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } // OnPreferenceClickListener: -@@ -963,17 +982,15 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -965,17 +984,15 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment break; } @@ -2398,7 +2399,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c String exceptionDialogMessage = exceptionDialogMessageResourceId != 0 ? getString(exceptionDialogMessageResourceId) -@@ -984,7 +1001,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -986,7 +1003,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment getStyledContext(), ADD_EXCEPTION_KEY, exceptionDialogMessage, @@ -2407,7 +2408,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c mCategory, this)); -@@ -1168,8 +1185,16 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1170,8 +1187,16 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment private boolean isBlocked() { switch (mGlobalToggleLayout) { case GlobalToggleLayout.TRI_STATE_TOGGLE: @@ -2424,7 +2425,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c return (triStateToggle.getCheckedSetting() == ContentSetting.BLOCK); case GlobalToggleLayout.TRI_STATE_COOKIE_TOGGLE: TriStateCookieSettingsPreference triStateCookieToggle = -@@ -1322,7 +1347,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1324,7 +1349,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment } else if (res_id != -1) { infoText.setSummary(res_id); } else { @@ -2437,7 +2438,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } // Hide the anti-abuse text preferences, as needed. -@@ -1361,6 +1390,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1363,6 +1392,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment } else { screen.removePreference(mLocationTriStatePref); } @@ -2445,7 +2446,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c maybeShowReasonToggleDisabled(screen); -@@ -1569,6 +1599,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1571,6 +1601,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment iconIds = ContentSettingsResources.getTriStateSettingIconIDs(contentType); } triStateToggle.initialize( @@ -2453,8 +2454,8 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c setting, descriptionIds, iconIds, -@@ -1743,6 +1774,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment - value = site.getContentSetting(browserContextHandle, contentSettingsType); +@@ -1859,6 +1890,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment + selectedButton.setChecked(true); } + AlertDialog.Builder alertDialogBuilder = @@ -2471,7 +2472,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java -@@ -56,6 +56,7 @@ import java.util.Collection; +@@ -57,6 +57,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -2479,7 +2480,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c /** Shows the permissions and other settings for a particular website. */ @NullMarked -@@ -196,7 +197,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -200,7 +201,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment case ContentSettingsType.WINDOW_MANAGEMENT: return "window_management_permission_list"; default: @@ -2488,36 +2489,37 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } } -@@ -596,14 +597,27 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -623,7 +624,8 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment private void setupContentSettingsPreferences() { Preference permissionsHeaderPref = findPreference(PREF_PERMISSIONS_HEADER); mMaxPermissionOrder = permissionsHeaderPref.getOrder(); - for (@ContentSettingsType.EnumType int type : SiteSettingsUtil.SETTINGS_ORDER) { + List order = BromiteCustomContentSettingImpl.getSettingsOrder(); + for (@ContentSettingsType.EnumType int type : order) { -+ @ContentSetting @Nullable Integer value = -+ mSite.getContentSetting( -+ getSiteSettingsDelegate().getBrowserContextHandle(), type); -+ if (value == null) { -+ value = WebsitePreferenceBridge.getDefaultContentSetting( -+ getSiteSettingsDelegate().getBrowserContextHandle(), type); -+ } - Preference preference = -+ BromiteCustomContentSettingImpl -+ .createWebSitePreference(type, getStyledContext(), value); -+ if (preference == null) { -+ preference = - (isOneTime(type) - && PermissionsAndroidFeatureMap.isEnabled( - PermissionsAndroidFeatureList - .APPROXIMATE_GEOLOCATION_PERMISSION)) - ? new ChromeImageViewPreference(getStyledContext()) - : new ChromeSwitchPreference(getStyledContext()); -+ } + Preference preference = getPermissionPreference(type); preference.setKey(getPreferenceKey(type)); - if (type == ContentSettingsType.ADS) { -@@ -1199,7 +1213,16 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -655,6 +657,19 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment + } + + private Preference getPermissionPreference(@ContentSettingsType.EnumType int type) { ++ @ContentSetting @Nullable Integer value = ++ mSite.getContentSetting( ++ getSiteSettingsDelegate().getBrowserContextHandle(), type); ++ if (value == null) { ++ value = WebsitePreferenceBridge.getDefaultContentSetting( ++ getSiteSettingsDelegate().getBrowserContextHandle(), type); ++ } ++ Preference preference = ++ BromiteCustomContentSettingImpl ++ .createWebSitePreference(type, getStyledContext(), value); ++ if (preference != null) ++ return preference; ++ + boolean isOneTime = isOneTime(type); + if (type == ContentSettingsType.GEOLOCATION_WITH_OPTIONS && !isOneTime) { + return createTwoActionLocationSwitchPreference(); +@@ -1254,7 +1269,16 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment @ContentSetting @Nullable Integer value, boolean isEmbargoed, boolean isOneTime) { @@ -2535,7 +2537,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c setUpPreferenceCommon(preference, value); preference.setOnPreferenceChangeListener(this); @ContentSettingsType.EnumType -@@ -1211,7 +1234,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1266,7 +1290,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment isEmbargoed ? getString(R.string.automatically_blocked) : getString( @@ -2544,7 +2546,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c value, isOneTime, isApproximateGeolocation))); if (preference instanceof ChromeImageViewPreference) { ChromeImageViewPreference oneTimePreference = (ChromeImageViewPreference) preference; -@@ -1237,10 +1260,14 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1292,10 +1316,14 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment oneTimePreference.setBackgroundColor(mHighlightColor); } } else { @@ -2563,7 +2565,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c AppCompatResources.getColorStateList(getContext(), mHighlightColor) .getDefaultColor()); } -@@ -1532,7 +1559,13 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1587,7 +1615,13 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment if (newValue instanceof Boolean) { permission = (Boolean) newValue ? getEnabledValue(type) : ContentSetting.BLOCK; } else { @@ -2578,7 +2580,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } if (type == ContentSettingsType.GEOLOCATION_WITH_OPTIONS) { -@@ -1553,7 +1586,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1608,7 +1642,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment // info. preference.setSummary( getString( @@ -2802,7 +2804,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java -@@ -128,7 +128,7 @@ public class WebsitePermissionsFetcher { +@@ -129,7 +129,7 @@ public class WebsitePermissionsFetcher { } break; default: @@ -2952,7 +2954,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. diff --git a/components/content_settings/core/browser/content_settings_uma_util.cc b/components/content_settings/core/browser/content_settings_uma_util.cc --- a/components/content_settings/core/browser/content_settings_uma_util.cc +++ b/components/content_settings/core/browser/content_settings_uma_util.cc -@@ -224,11 +224,7 @@ void RecordContentSettingsHistogram(const std::string& name, +@@ -226,11 +226,7 @@ void RecordContentSettingsHistogram(const std::string& name, } int ContentSettingTypeToHistogramValue(ContentSettingsType content_setting) { @@ -3288,10 +3290,11 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai diff --git a/components/content_settings/core/common/content_settings_types.mojom b/components/content_settings/core/common/content_settings_types.mojom --- a/components/content_settings/core/common/content_settings_types.mojom +++ b/components/content_settings/core/common/content_settings_types.mojom -@@ -498,5 +498,6 @@ enum ContentSettingsType { - // Setting for enabling the Device Attributes API. Spec link: - // https://wicg.github.io/WebApiDevice/device_attributes/ - DEVICE_ATTRIBUTES, +@@ -508,5 +508,7 @@ enum ContentSettingsType { + // when suspicious warning is shown. If the user has selected this, the + // notification permission will not be revoked based on suspicious verdict. + SUSPICIOUS_NOTIFICATION_SHOW_ORIGINAL, ++ +#include "components/content_settings/core/common/bromite_content_settings.inc" }; // LINT.ThenChange(//components/content_settings/core/browser/content_settings_uma_util.cc:kHistogramValue) @@ -3477,7 +3480,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. #include "components/content_settings/browser/ui/cookie_controls_controller.h" #include "components/content_settings/core/browser/content_settings_registry.h" #include "components/content_settings/core/browser/content_settings_uma_util.h" -@@ -1367,6 +1368,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, +@@ -1377,6 +1378,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, // via `HasContentSettingChangedViaPageInfo(type)`. bool PageInfo::ShouldShowPermission( const PageInfo::PermissionInfo& info) const { @@ -3492,7 +3495,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. // Note |ContentSettingsType::ADS| will show up regardless of its default // value when it has been activated on the current origin. if (info.type == ContentSettingsType::ADS) { -@@ -1494,7 +1503,19 @@ void PageInfo::PresentSitePermissions() { +@@ -1504,7 +1513,19 @@ void PageInfo::PresentSitePermissions() { HostContentSettingsMap* content_settings = GetContentSettings(); DCHECK(web_contents_); @@ -3524,7 +3527,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in #include "components/page_info/core/features.h" #include "components/page_info/page_info.h" #include "components/page_info/page_info_ui.h" -@@ -252,6 +253,13 @@ void CreateOppositeToDefaultSiteException( +@@ -251,6 +252,13 @@ void CreateOppositeToDefaultSiteException( std::u16string GetPermissionAskStateString(ContentSettingsType type) { int message_id = kInvalidResourceID; @@ -3538,7 +3541,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in switch (type) { case ContentSettingsType::GEOLOCATION: message_id = IDS_PAGE_INFO_STATE_TEXT_LOCATION_ASK; -@@ -550,6 +558,12 @@ PageInfoUI::~PageInfoUI() = default; +@@ -549,6 +557,12 @@ PageInfoUI::~PageInfoUI() = default; // static std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { @@ -3551,7 +3554,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in for (const PermissionUIInfo& info : GetContentSettingsUIInfo()) { if (info.type == type) return l10n_util::GetStringUTF16(info.string_id); -@@ -560,6 +574,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { +@@ -559,6 +573,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { // static std::u16string PageInfoUI::PermissionTypeToUIStringMidSentence( ContentSettingsType type) { @@ -3564,7 +3567,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in for (const PermissionUIInfo& info : GetContentSettingsUIInfo()) { if (info.type == type) return l10n_util::GetStringUTF16(info.string_id_mid_sentence); -@@ -948,6 +968,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) { +@@ -947,6 +967,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) { if (info.type == type) return true; } @@ -3645,7 +3648,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context diff --git a/third_party/blink/renderer/core/execution_context/execution_context.h b/third_party/blink/renderer/core/execution_context/execution_context.h --- a/third_party/blink/renderer/core/execution_context/execution_context.h +++ b/third_party/blink/renderer/core/execution_context/execution_context.h -@@ -42,6 +42,7 @@ +@@ -43,6 +43,7 @@ #include "third_party/blink/public/mojom/frame/lifecycle.mojom-blink-forward.h" #include "third_party/blink/public/mojom/permissions_policy/policy_disposition.mojom-blink-forward.h" #include "third_party/blink/public/mojom/v8_cache_options.mojom-blink-forward.h" @@ -3653,7 +3656,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context #include "third_party/blink/renderer/bindings/core/v8/sanitize_script_errors.h" #include "third_party/blink/renderer/core/core_export.h" #include "third_party/blink/renderer/core/execution_context/security_context.h" -@@ -101,6 +102,10 @@ class SecurityOrigin; +@@ -102,6 +103,10 @@ class SecurityOrigin; class ScriptState; class ScriptWrappable; class TrustedTypePolicyFactory; diff --git a/build/patches/Disable-Compression-Dictionary-Transport.patch b/build/patches/Disable-Compression-Dictionary-Transport.patch index 6f42f164..ff16711d 100644 --- a/build/patches/Disable-Compression-Dictionary-Transport.patch +++ b/build/patches/Disable-Compression-Dictionary-Transport.patch @@ -4,27 +4,28 @@ Subject: Disable Compression Dictionary Transport License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- - .../blink/renderer/platform/runtime_enabled_features.json5 | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) + chrome/browser/chrome_content_browser_client.cc | 3 +-- + .../features_cc/Disable-Compression-Dictionary-Transport.inc | 1 + + 2 files changed, 2 insertions(+), 2 deletions(-) + create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Disable-Compression-Dictionary-Transport.inc -diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 ---- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 -+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -1065,12 +1065,14 @@ - } - }, - { -- name: "CompressionDictionaryTransport", -+ name: "CompressionDictionaryTransport", // need to be disabled -+ status: "experimental", - base_feature: "none", - public: true, - }, - { -- name: "CompressionDictionaryTransportBackend", -+ name: "CompressionDictionaryTransportBackend", // need to be disabled -+ status: "experimental", - base_feature: "none", - public: true, - }, +diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc +--- a/chrome/browser/chrome_content_browser_client.cc ++++ b/chrome/browser/chrome_content_browser_client.cc +@@ -1467,8 +1467,7 @@ void ChromeContentBrowserClient::RegisterProfilePrefs( + registry->RegisterBooleanPref(prefs::kSandboxExternalProtocolBlocked, true); + registry->RegisterBooleanPref(prefs::kSSLErrorOverrideAllowed, true); + registry->RegisterListPref(prefs::kSSLErrorOverrideAllowedForOrigins); +- registry->RegisterBooleanPref(prefs::kCompressionDictionaryTransportEnabled, +- true); ++ registry->RegisterBooleanPref(prefs::kCompressionDictionaryTransportEnabled, false); + #if BUILDFLAG(ENABLE_ON_DEVICE_TRANSLATION) + registry->RegisterBooleanPref(prefs::kTranslatorAPIAllowed, true); + #endif +diff --git a/cromite_flags/services/network/public/cpp/features_cc/Disable-Compression-Dictionary-Transport.inc b/cromite_flags/services/network/public/cpp/features_cc/Disable-Compression-Dictionary-Transport.inc +new file mode 100644 +--- /dev/null ++++ b/cromite_flags/services/network/public/cpp/features_cc/Disable-Compression-Dictionary-Transport.inc +@@ -0,0 +1 @@ ++SET_CROMITE_FEATURE_DISABLED(kCompressionDictionaryTransport); -- diff --git a/build/patches/Enable-search-engine-settings-desktop-ui.patch b/build/patches/Enable-search-engine-settings-desktop-ui.patch index ca80737c..696043a3 100644 --- a/build/patches/Enable-search-engine-settings-desktop-ui.patch +++ b/build/patches/Enable-search-engine-settings-desktop-ui.patch @@ -12,8 +12,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html chrome/app/settings_strings.grdp | 3 + chrome/app/settings_strings_android.grdp | 260 ++++++++++++++++++ chrome/browser/BUILD.gn | 3 + - .../chrome_browser_interface_binders.cc | 3 + - .../chrome_browser_interface_binders_webui.cc | 21 ++ + .../chrome_browser_interface_binders_webui.cc | 1 + + ...r_interface_binders_webui_parts_desktop.cc | 3 + chrome/browser/extensions/extension_util.h | 2 +- chrome/browser/resources/BUILD.gn | 7 + chrome/browser/resources/settings/BUILD.gn | 2 +- @@ -80,7 +80,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html ui/webui/resources/images/BUILD.gn | 2 +- ui/webui/resources/js/BUILD.gn | 2 +- ui/webui/resources/js/load_time_data.ts | 17 +- - 73 files changed, 1171 insertions(+), 73 deletions(-) + 73 files changed, 1151 insertions(+), 73 deletions(-) create mode 100644 chrome/app/settings_strings_android.grdp create mode 100644 chrome/browser/search_engines/android/java/res/layout/search_engine_layout.xml create mode 100644 chrome/browser/ui/webui/settings/settings_localized_strings_provider_android.cc @@ -131,7 +131,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources -@@ -527,7 +532,7 @@ are declared in tools/grit/grit_args.gni. +@@ -525,7 +530,7 @@ are declared in tools/grit/grit_args.gni. Disable @@ -143,7 +143,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp --- a/chrome/app/settings_strings.grdp +++ b/chrome/app/settings_strings.grdp -@@ -2218,6 +2218,9 @@ +@@ -2249,6 +2249,9 @@ URL with %s in place of query @@ -421,7 +421,7 @@ new file mode 100644 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3706,6 +3706,9 @@ static_library("browser") { +@@ -3718,6 +3718,9 @@ static_library("browser") { "//components/user_scripts/android", ] } @@ -431,64 +431,23 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn } else { #!is_android sources += [ -diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser/chrome_browser_interface_binders.cc ---- a/chrome/browser/chrome_browser_interface_binders.cc -+++ b/chrome/browser/chrome_browser_interface_binders.cc -@@ -89,6 +89,9 @@ - #endif - - #if BUILDFLAG(IS_ANDROID) -+#include "ui/webui/resources/cr_components/help_bubble/help_bubble.mojom.h" -+#include "ui/webui/resources/cr_components/customize_color_scheme_mode/customize_color_scheme_mode.mojom.h" -+#include "chrome/browser/ui/webui/settings/settings_ui_android.h" - #include "chrome/browser/android/dom_distiller/distiller_ui_handle_android.h" - #include "chrome/browser/facilitated_payments/payment_link_handler_binder.h" - #include "chrome/browser/offline_pages/android/offline_page_auto_fetcher.h" diff --git a/chrome/browser/chrome_browser_interface_binders_webui.cc b/chrome/browser/chrome_browser_interface_binders_webui.cc --- a/chrome/browser/chrome_browser_interface_binders_webui.cc +++ b/chrome/browser/chrome_browser_interface_binders_webui.cc -@@ -71,6 +71,12 @@ - #include "components/signin/public/base/signin_switches.h" - #endif +@@ -119,6 +119,7 @@ void PopulateChromeWebUIFrameBinders( -+#if BUILDFLAG(IS_ANDROID) -+#include "ui/webui/resources/cr_components/customize_color_scheme_mode/customize_color_scheme_mode.mojom.h" -+#include "ui/webui/resources/cr_components/help_bubble/help_bubble.mojom.h" -+#include "chrome/browser/ui/webui/settings/settings_ui.h" -+#endif -+ #if BUILDFLAG(IS_ANDROID) - #include "chrome/browser/ui/webui/feed_internals/feed_internals.mojom.h" - #include "chrome/browser/ui/webui/feed_internals/feed_internals_ui.h" -@@ -503,6 +509,15 @@ void PopulateChromeWebUIFrameBinders( - } - #endif - -+#if BUILDFLAG(IS_ANDROID) -+ RegisterWebUIControllerInterfaceBinder< -+ help_bubble::mojom::HelpBubbleHandlerFactory, settings::SettingsUI>(map); -+ -+ RegisterWebUIControllerInterfaceBinder< -+ customize_color_scheme_mode::mojom:: -+ CustomizeColorSchemeModeHandlerFactory, settings::SettingsUI>(map); -+#endif -+ - #if !BUILDFLAG(IS_ANDROID) - RegisterWebUIControllerInterfaceBinder< - actor_internals::mojom::PageHandlerFactory, ActorInternalsUI>(map); -@@ -660,6 +675,9 @@ void PopulateChromeWebUIFrameBinders( - RegisterWebUIControllerInterfaceBinder(map); - -+#if BUILDFLAG(IS_ANDROID) + PopulateChromeWebUIFrameBindersPartsAndroid(map, render_frame_host); +#error "Check this patch" -+#endif - RegisterWebUIControllerInterfaceBinder< - password_manager::mojom::PageHandlerFactory, PasswordManagerUI>(map); - -@@ -683,6 +701,9 @@ void PopulateChromeWebUIFrameBinders( - CertificateManagerUI>(map); - #endif // BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI) + #else + PopulateChromeWebUIFrameBindersPartsDesktop(map, render_frame_host); + #endif // BUILDFLAG(IS_ANDROID) +diff --git a/chrome/browser/chrome_browser_interface_binders_webui_parts_desktop.cc b/chrome/browser/chrome_browser_interface_binders_webui_parts_desktop.cc +--- a/chrome/browser/chrome_browser_interface_binders_webui_parts_desktop.cc ++++ b/chrome/browser/chrome_browser_interface_binders_webui_parts_desktop.cc +@@ -366,6 +366,9 @@ void PopulateChromeWebUIFrameBindersPartsDesktop( + #endif // !BUILDFLAG(IS_CHROMEOS) + >(map); +#if BUILDFLAG(IS_ANDROID) +#error "Check this patch" @@ -540,7 +499,7 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc diff --git a/chrome/browser/resources/settings/page_visibility.ts b/chrome/browser/resources/settings/page_visibility.ts --- a/chrome/browser/resources/settings/page_visibility.ts +++ b/chrome/browser/resources/settings/page_visibility.ts -@@ -41,8 +41,42 @@ export interface PrivacyPageVisibility { +@@ -42,8 +42,42 @@ export interface PrivacyPageVisibility { searchPrediction: boolean; } @@ -698,7 +657,7 @@ diff --git a/chrome/browser/resources/settings/search_page/search_engines_page.h + @@ -831,8 +790,8 @@ diff --git a/chrome/browser/search/background/BUILD.gn b/chrome/browser/search/b # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. --assert(is_win || is_mac || is_linux || is_chromeos) -+# assert(is_win || is_mac || is_linux || is_chromeos) +-assert(is_win || is_mac || is_linux || is_chromeos || is_android) ++# assert(is_win || is_mac || is_linux || is_chromeos || is_android) import("//third_party/protobuf/proto_library.gni") @@ -840,9 +799,9 @@ diff --git a/chrome/browser/search/background/BUILD.gn b/chrome/browser/search/b source_set("background") { public = [ "ntp_background_service_factory.h", -@@ -58,6 +59,7 @@ source_set("background") { - "//ui/gfx/codec", - ] +@@ -73,6 +74,7 @@ source_set("background") { + ] + } } +} @@ -937,7 +896,7 @@ diff --git a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -671,7 +671,11 @@ static_library("ui") { +@@ -684,7 +684,11 @@ static_library("ui") { deps += [ "//chrome/browser/ui/android/extensions/windowing/internal" ] } } @@ -950,7 +909,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn # TODO(crbug.com/413572035): Move into build files of the actual # modules depending on this. eg: autofill, user_education. if (is_chrome_branded) { -@@ -985,6 +989,25 @@ static_library("ui") { +@@ -1012,6 +1016,25 @@ static_library("ui") { "//extensions/browser:extension_action_enums", ] } @@ -1172,7 +1131,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/u #if BUILDFLAG(ENABLE_WEBUI_CERTIFICATE_VIEWER) #include "chrome/browser/ui/webui/certificate_viewer/certificate_viewer_ui.h" #endif -@@ -441,4 +446,7 @@ void RegisterChromeWebUIConfigs() { +@@ -443,4 +448,7 @@ void RegisterChromeWebUIConfigs() { #if BUILDFLAG(ENTERPRISE_WATERMARK) map.AddWebUIConfig(std::make_unique()); #endif @@ -1183,7 +1142,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/u diff --git a/chrome/browser/ui/webui/favicon_source.cc b/chrome/browser/ui/webui/favicon_source.cc --- a/chrome/browser/ui/webui/favicon_source.cc +++ b/chrome/browser/ui/webui/favicon_source.cc -@@ -230,6 +230,7 @@ bool FaviconSource::ShouldServiceRequest( +@@ -235,6 +235,7 @@ bool FaviconSource::ShouldServiceRequest( render_process_id); } @@ -1191,7 +1150,7 @@ diff --git a/chrome/browser/ui/webui/favicon_source.cc b/chrome/browser/ui/webui ui::NativeTheme* FaviconSource::GetNativeTheme( const content::WebContents::Getter& wc_getter) { #if BUILDFLAG(IS_ANDROID) -@@ -238,6 +239,7 @@ ui::NativeTheme* FaviconSource::GetNativeTheme( +@@ -243,6 +244,7 @@ ui::NativeTheme* FaviconSource::GetNativeTheme( return webui::GetNativeThemeDeprecated(wc_getter.Run()); #endif } @@ -1199,39 +1158,42 @@ diff --git a/chrome/browser/ui/webui/favicon_source.cc b/chrome/browser/ui/webui void FaviconSource::OnFaviconDataAvailable( content::URLDataSource::GotDataCallback callback, -@@ -261,7 +263,11 @@ void FaviconSource::SendDefaultResponse( - parsed.device_scale_factor, - parsed.force_light_mode - ? false +@@ -265,8 +267,12 @@ void FaviconSource::SendDefaultResponse( + SendDefaultResponse( + std::move(callback), parsed.size_in_dip, parsed.device_scale_factor, + !parsed.force_light_mode && +#if !BUILDFLAG(IS_ANDROID) - : GetNativeTheme(wc_getter)->ShouldUseDarkColors()); + GetNativeTheme(wc_getter)->preferred_color_scheme() == + ui::NativeTheme::PreferredColorScheme::kDark, +#else -+ : false); ++ false, +#endif - return; - } - int icon_size = std::ceil(parsed.size_in_dip * parsed.device_scale_factor); -@@ -281,7 +287,11 @@ void FaviconSource::SendDefaultResponse( + parsed.force_empty_default_favicon + ? DefaultFaviconBehavior::kUseEmptyIcon + : DefaultFaviconBehavior::kUseGlobeIcon); +@@ -289,9 +295,13 @@ void FaviconSource::SendDefaultResponse( + DefaultFaviconBehavior behavior) { SendDefaultResponse(std::move(callback), 16, 1.0f, - force_light_mode - ? false + !force_light_mode && +#if !BUILDFLAG(IS_ANDROID) - : GetNativeTheme(wc_getter)->ShouldUseDarkColors()); + GetNativeTheme(wc_getter)->preferred_color_scheme() == + ui::NativeTheme::PreferredColorScheme::kDark, + behavior); +#else + : false); +#endif } void FaviconSource::SendDefaultResponse( -@@ -292,6 +302,7 @@ void FaviconSource::SendDefaultResponse( - base::UmaHistogramBoolean(kDefaultResponseHistogramName, true); +@@ -309,6 +319,7 @@ void FaviconSource::SendDefaultResponse( + int resource_id; switch (size_in_dip) { +#if !BUILDFLAG(IS_ANDROID) case 64: resource_id = dark_mode ? IDR_DEFAULT_FAVICON_DARK_64 : IDR_DEFAULT_FAVICON_64; -@@ -300,6 +311,7 @@ void FaviconSource::SendDefaultResponse( +@@ -317,6 +328,7 @@ void FaviconSource::SendDefaultResponse( resource_id = dark_mode ? IDR_DEFAULT_FAVICON_DARK_32 : IDR_DEFAULT_FAVICON_32; break; @@ -1242,14 +1204,12 @@ diff --git a/chrome/browser/ui/webui/favicon_source.cc b/chrome/browser/ui/webui diff --git a/chrome/browser/ui/webui/favicon_source.h b/chrome/browser/ui/webui/favicon_source.h --- a/chrome/browser/ui/webui/favicon_source.h +++ b/chrome/browser/ui/webui/favicon_source.h -@@ -64,9 +64,11 @@ class FaviconSource : public content::URLDataSource { +@@ -69,7 +69,9 @@ class FaviconSource : public content::URLDataSource { int render_process_id) override; protected: +#if !BUILDFLAG(IS_ANDROID) // Exposed for testing. - virtual ui::NativeTheme* GetNativeTheme( - const content::WebContents::Getter& wc_getter); +#endif virtual base::RefCountedMemory* LoadIconBytes(float scale_factor, int resource_id); @@ -1257,7 +1217,7 @@ diff --git a/chrome/browser/ui/webui/favicon_source.h b/chrome/browser/ui/webui/ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.cc b/chrome/browser/ui/webui/settings/search_engines_handler.cc --- a/chrome/browser/ui/webui/settings/search_engines_handler.cc +++ b/chrome/browser/ui/webui/settings/search_engines_handler.cc -@@ -34,10 +34,12 @@ +@@ -36,10 +36,12 @@ #include "components/search_engines/template_url.h" #include "components/search_engines/template_url_service.h" #include "content/public/browser/web_ui.h" @@ -1270,7 +1230,7 @@ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.cc b/chrome #if BUILDFLAG(IS_CHROMEOS) #include "ash/public/cpp/new_window_delegate.h" -@@ -49,6 +51,7 @@ namespace { +@@ -51,6 +53,7 @@ namespace { const char kSearchEngineField[] = "searchEngine"; const char kKeywordField[] = "keyword"; const char kQueryUrlField[] = "queryUrl"; @@ -1278,7 +1238,7 @@ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.cc b/chrome // Dummy number used for indicating that a new search engine is added. const int kNewSearchEngineIndex = -1; -@@ -252,9 +255,10 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine( +@@ -254,9 +257,10 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine( IDS_SEARCH_ENGINES_EDITOR_DESCRIPTION_COLUMN)); dict.Set("keyword", table_model->GetText( index, IDS_SEARCH_ENGINES_EDITOR_KEYWORD_COLUMN)); @@ -1290,7 +1250,7 @@ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.cc b/chrome dict.Set("urlLocked", ((template_url->prepopulate_id() > 0) || (template_url->starter_pack_id() > 0))); GURL icon_url = template_url->favicon_url(); -@@ -268,6 +272,8 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine( +@@ -273,6 +277,8 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine( #endif } @@ -1299,7 +1259,7 @@ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.cc b/chrome // The icons that are used for search engines in the EEA region are bundled // with Chrome. We use the favicon service for countries outside the EEA // region to guarantee having icons for all search engines. -@@ -284,6 +290,7 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine( +@@ -289,6 +295,7 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine( base::StrCat({"chrome://theme/", template_url->GetBuiltinImageResourceId(), "@2x"})); } @@ -1307,7 +1267,7 @@ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.cc b/chrome dict.Set("modelIndex", base::checked_cast(index)); -@@ -300,6 +307,7 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine( +@@ -305,6 +312,7 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine( dict.Set("isOmniboxExtension", type == TemplateURL::OMNIBOX_API_EXTENSION); dict.Set("isPrepopulated", template_url->prepopulate_id() > 0); dict.Set("isStarterPack", template_url->starter_pack_id() > 0); @@ -1315,7 +1275,7 @@ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.cc b/chrome if (type == TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION || type == TemplateURL::OMNIBOX_API_EXTENSION) { const extensions::Extension* extension = -@@ -316,6 +324,7 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine( +@@ -321,6 +329,7 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine( dict.Set("extension", std::move(ext_info)); } } @@ -1323,7 +1283,7 @@ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.cc b/chrome return dict; } -@@ -418,12 +427,13 @@ void SearchEnginesHandler::HandleSearchEngineEditStarted( +@@ -423,12 +432,13 @@ void SearchEnginesHandler::HandleSearchEngineEditStarted( void SearchEnginesHandler::OnEditedKeyword(TemplateURL* template_url, const std::u16string& title, const std::u16string& keyword, @@ -1340,7 +1300,7 @@ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.cc b/chrome } edit_controller_.reset(); -@@ -453,6 +463,8 @@ bool SearchEnginesHandler::CheckFieldValidity(const std::string& field_name, +@@ -458,6 +468,8 @@ bool SearchEnginesHandler::CheckFieldValidity(const std::string& field_name, is_valid = edit_controller_->IsKeywordValid(base::UTF8ToUTF16(field_value)); } else if (field_name.compare(kQueryUrlField) == 0) { is_valid = edit_controller_->IsURLValid(field_value); @@ -1349,7 +1309,7 @@ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.cc b/chrome } else { NOTREACHED(); } -@@ -475,18 +487,20 @@ void SearchEnginesHandler::HandleSearchEngineEditCompleted( +@@ -480,18 +492,20 @@ void SearchEnginesHandler::HandleSearchEngineEditCompleted( return; } @@ -1389,7 +1349,7 @@ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.h b/chrome/ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -2560,6 +2560,8 @@ void AddSearchEnginesStrings(content::WebUIDataSource* html_source) { +@@ -2586,6 +2586,8 @@ void AddSearchEnginesStrings(content::WebUIDataSource* html_source) { {"searchEnginesQueryURL", IDS_SETTINGS_SEARCH_ENGINES_QUERY_URL}, {"searchEnginesQueryURLExplanation", IDS_SETTINGS_SEARCH_ENGINES_QUERY_URL_EXPLANATION}, @@ -1398,7 +1358,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide {"searchEnginesMakeDefault", IDS_SETTINGS_SEARCH_ENGINES_MAKE_DEFAULT}, {"searchEnginesActivate", IDS_SETTINGS_SEARCH_ENGINES_ACTIVATE}, {"searchEnginesDeactivate", IDS_SETTINGS_SEARCH_ENGINES_DEACTIVATE}, -@@ -3849,7 +3851,11 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, +@@ -3879,7 +3881,11 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, AddSiteSettingsStrings(html_source, profile); AddSiteDataPageStrings(html_source, profile); AddStorageAccessStrings(html_source); @@ -1947,18 +1907,18 @@ diff --git a/components/search_engines/android/template_url_service_android.cc b diff --git a/components/search_engines/search_engines_switches.cc b/components/search_engines/search_engines_switches.cc --- a/components/search_engines/search_engines_switches.cc +++ b/components/search_engines/search_engines_switches.cc -@@ -53,6 +53,7 @@ const base::FeatureParam kSearchEngineChoiceTriggerRepromptParams{ +@@ -43,6 +43,7 @@ const base::FeatureParam kSearchEngineChoiceTriggerRepromptParams{ &kSearchEngineChoiceTriggerReprompt, /*name=*/"reprompt", /*default_value=*/kSearchEngineChoiceNoRepromptString}; +SET_CROMITE_FEATURE_DISABLED(kSearchEngineChoiceTriggerReprompt); #if BUILDFLAG(IS_ANDROID) - COMPONENT_EXPORT(SEARCH_ENGINES_SWITCHES) + BASE_FEATURE(kSuppressDefaultBrowserPromoIfChoiceSet, diff --git a/components/search_engines/template_url.cc b/components/search_engines/template_url.cc --- a/components/search_engines/template_url.cc +++ b/components/search_engines/template_url.cc -@@ -2125,6 +2125,10 @@ void TemplateURL::SetURL(const std::string& url) { +@@ -2149,6 +2149,10 @@ void TemplateURL::SetURL(const std::string& url) { url_ref().InvalidateCachedValues(); } @@ -1972,7 +1932,7 @@ diff --git a/components/search_engines/template_url.cc b/components/search_engin diff --git a/components/search_engines/template_url.h b/components/search_engines/template_url.h --- a/components/search_engines/template_url.h +++ b/components/search_engines/template_url.h -@@ -1007,6 +1007,7 @@ class TemplateURL { +@@ -1012,6 +1012,7 @@ class TemplateURL { bool CreatedByRegulatoryProgram() const; void SetURL(const std::string& url); @@ -2316,7 +2276,7 @@ diff --git a/ui/webui/resources/cr_components/theme_color_picker/BUILD.gn b/ui/w diff --git a/ui/webui/resources/cr_elements/BUILD.gn b/ui/webui/resources/cr_elements/BUILD.gn --- a/ui/webui/resources/cr_elements/BUILD.gn +++ b/ui/webui/resources/cr_elements/BUILD.gn -@@ -33,7 +33,7 @@ build_webui("build") { +@@ -36,7 +36,7 @@ build_webui("build") { "cr_tabs/cr_tabs.css", ] diff --git a/build/patches/Eyeo-Adblock-for-Cromite.patch b/build/patches/Eyeo-Adblock-for-Cromite.patch index 10dfca4d..920ad8a3 100644 --- a/build/patches/Eyeo-Adblock-for-Cromite.patch +++ b/build/patches/Eyeo-Adblock-for-Cromite.patch @@ -878,7 +878,7 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc -@@ -6517,7 +6517,9 @@ ChromeContentBrowserClient:: +@@ -6516,7 +6516,9 @@ ChromeContentBrowserClient:: } bool ChromeContentBrowserClient::WillInterceptWebSocket( @@ -889,7 +889,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch #if BUILDFLAG(ENABLE_EXTENSIONS_CORE) if (!frame) { return false; -@@ -6540,9 +6542,11 @@ bool ChromeContentBrowserClient::WillInterceptWebSocket( +@@ -6539,9 +6541,11 @@ bool ChromeContentBrowserClient::WillInterceptWebSocket( } void ChromeContentBrowserClient::CreateWebSocket( diff --git a/build/patches/Fix-chromium-build-bugs.patch b/build/patches/Fix-chromium-build-bugs.patch index d8eaadab..33d9a314 100644 --- a/build/patches/Fix-chromium-build-bugs.patch +++ b/build/patches/Fix-chromium-build-bugs.patch @@ -11,17 +11,15 @@ https://bugs.chromium.org/p/chromium/issues/detail?id=1491776#c10 .../component_updater/installer_policies/BUILD.gn | 1 + .../omnibox/browser/autocomplete_classifier.cc | 4 ++-- components/omnibox/browser/omnibox_field_trial.cc | 4 ++-- - components/plus_addresses/BUILD.gn | 1 + .../phishing_classifier/phishing_image_embedder.cc | 14 +++----------- content/browser/browser_interface_binders.cc | 1 + - net/BUILD.gn | 1 + services/webnn/dml/graph_impl_dml.cc | 1 + - 11 files changed, 15 insertions(+), 16 deletions(-) + 9 files changed, 13 insertions(+), 16 deletions(-) diff --git a/BUILD.gn b/BUILD.gn --- a/BUILD.gn +++ b/BUILD.gn -@@ -422,7 +422,6 @@ group("gn_all") { +@@ -411,7 +411,6 @@ group("gn_all") { "//android_webview:empty_group", "//android_webview/test", "//android_webview/tools/automated_ui_tests:webview_ui_test_app_test_apk", @@ -44,7 +42,7 @@ diff --git a/chrome/browser/navigation_predictor/navigation_predictor_metrics_do diff --git a/chrome/browser/safe_browsing/BUILD.gn b/chrome/browser/safe_browsing/BUILD.gn --- a/chrome/browser/safe_browsing/BUILD.gn +++ b/chrome/browser/safe_browsing/BUILD.gn -@@ -299,6 +299,7 @@ static_library("safe_browsing") { +@@ -300,6 +300,7 @@ static_library("safe_browsing") { "//components/version_info", "//content/public/browser", "//services/preferences/public/mojom", @@ -66,7 +64,7 @@ diff --git a/components/component_updater/installer_policies/BUILD.gn b/componen diff --git a/components/omnibox/browser/autocomplete_classifier.cc b/components/omnibox/browser/autocomplete_classifier.cc --- a/components/omnibox/browser/autocomplete_classifier.cc +++ b/components/omnibox/browser/autocomplete_classifier.cc -@@ -131,8 +131,8 @@ void AutocompleteClassifier::Classify( +@@ -136,8 +136,8 @@ void AutocompleteClassifier::Classify( metrics::OmniboxEventProto::PageClassification page_classification, AutocompleteMatch* match, GURL* alternate_nav_url) { @@ -94,17 +92,6 @@ diff --git a/components/omnibox/browser/omnibox_field_trial.cc b/components/omni } MLConfig& ScopedMLConfigForTesting::GetMLConfig() { -diff --git a/components/plus_addresses/BUILD.gn b/components/plus_addresses/BUILD.gn ---- a/components/plus_addresses/BUILD.gn -+++ b/components/plus_addresses/BUILD.gn -@@ -59,6 +59,7 @@ source_set("plus_addresses") { - "//services/data_decoder/public/cpp", - "//services/network/public/cpp", - "//ui/base", -+ "//third_party/re2", - ] - public_deps = [ - "//base", diff --git a/components/safe_browsing/content/renderer/phishing_classifier/phishing_image_embedder.cc b/components/safe_browsing/content/renderer/phishing_classifier/phishing_image_embedder.cc --- a/components/safe_browsing/content/renderer/phishing_classifier/phishing_image_embedder.cc +++ b/components/safe_browsing/content/renderer/phishing_classifier/phishing_image_embedder.cc @@ -140,21 +127,10 @@ diff --git a/content/browser/browser_interface_binders.cc b/content/browser/brow auto* view = RenderWidgetHostViewAndroid::FromRenderWidgetHostView(host->GetView()); if (!view || !view->text_suggestion_host()) -diff --git a/net/BUILD.gn b/net/BUILD.gn ---- a/net/BUILD.gn -+++ b/net/BUILD.gn -@@ -1829,6 +1829,7 @@ component("net") { - ] - deps += [ "//sql" ] - } -+ # test: configs -= [ "//build/config/clang:find_bad_constructs" ] - } - - # net_export.h has its own build target so that code (eg diff --git a/services/webnn/dml/graph_impl_dml.cc b/services/webnn/dml/graph_impl_dml.cc --- a/services/webnn/dml/graph_impl_dml.cc +++ b/services/webnn/dml/graph_impl_dml.cc -@@ -248,6 +248,7 @@ base::expected CreateUnexpectedError( +@@ -246,6 +246,7 @@ base::expected CreateUnexpectedError( // Calculate the total byte length of buffers and the D3D12_RANGE for each // buffer, all with the required alignment. diff --git a/build/patches/History-number-of-days-privacy-setting.patch b/build/patches/History-number-of-days-privacy-setting.patch index d396b5c0..18f645db 100644 --- a/build/patches/History-number-of-days-privacy-setting.patch +++ b/build/patches/History-number-of-days-privacy-setting.patch @@ -157,7 +157,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc --- a/chrome/browser/extensions/api/settings_private/prefs_util.cc +++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc -@@ -44,6 +44,7 @@ +@@ -45,6 +45,7 @@ #include "components/content_settings/core/common/pref_names.h" #include "components/dom_distiller/core/pref_names.h" #include "components/drive/drive_pref_names.h" @@ -165,7 +165,7 @@ diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chro #include "components/embedder_support/pref_names.h" #include "components/language/core/browser/pref_names.h" #include "components/live_caption/pref_names.h" -@@ -230,6 +231,9 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { +@@ -231,6 +232,9 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { (*s_allowlist)[::prefs::kSplitViewDragAndDropEnabled] = settings_api::PrefType::kBoolean; @@ -178,7 +178,7 @@ diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chro diff --git a/chrome/browser/history/history_service_factory.cc b/chrome/browser/history/history_service_factory.cc --- a/chrome/browser/history/history_service_factory.cc +++ b/chrome/browser/history/history_service_factory.cc -@@ -29,6 +29,8 @@ std::unique_ptr BuildHistoryService( +@@ -30,6 +30,8 @@ std::unique_ptr BuildHistoryService( context->GetPath(), chrome::GetChannel()))) { return nullptr; } @@ -201,26 +201,26 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html --- a/chrome/browser/resources/settings/privacy_page/privacy_page.html +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html -@@ -92,6 +92,15 @@ - sub-label="$i18n{permissionsPageDescription}" - on-click="onPermissionsPageClick_" - role-description="$i18n{subpageArrowRoleDescription}"> -+
-+ -+ -+ -+
- -
[[dbdDeletionConfirmationToastLabel_]]
-
+@@ -76,6 +76,15 @@ + sub-label="$i18n{permissionsPageDescription}" + on-click="onPermissionsPageClick_" + role-description="$i18n{subpageArrowRoleDescription}"> ++
++ ++ ++ ++
+ +
[[dbdDeletionConfirmationToastLabel_]]
+
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/chrome/browser/resources/settings/privacy_page/privacy_page.ts --- a/chrome/browser/resources/settings/privacy_page/privacy_page.ts +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.ts -@@ -83,6 +83,23 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -62,6 +62,23 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { static get properties() { return { @@ -241,21 +241,21 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch + }, + }, + - isGuest_: { - type: Boolean, - value() { -@@ -286,6 +303,7 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { + showClearBrowsingDataDialog_: Boolean, + showPrivacyGuideDialog_: Boolean, + +@@ -101,6 +118,7 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { }; } + declare private historyExpireDaysThresholdOptions_: object[]; - declare private isGuest_: boolean; - declare private showPersistentPermissions_: boolean; declare private showClearBrowsingDataDialog_: boolean; + declare private showPrivacyGuideDialog_: boolean; + declare private enableDeleteBrowsingDataRevamp_: boolean; 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 -@@ -1246,6 +1246,18 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1252,6 +1252,18 @@ Your Google account may have other forms of browsing history like searches and a Browsing history @@ -277,7 +277,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -2062,6 +2062,11 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, +@@ -2076,6 +2076,11 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, IDS_SETTINGS_SAFEBROWSING_ENHANCED_THINGS_TO_CONSIDER_BULLET_THREE}, {"safeBrowsingStandard", IDS_SETTINGS_SAFEBROWSING_STANDARD}, {"safeBrowsingStandardDesc", IDS_SETTINGS_SAFEBROWSING_STANDARD_DESC}, @@ -476,7 +476,7 @@ diff --git a/components/history/core/browser/history_backend.cc b/components/his // The maximum number of days for which domain visit metrics are computed // each time HistoryBackend::GetDomainDiversity() is called. constexpr int kDomainDiversityMaxBacktrackedDays = 7; -@@ -1333,6 +1337,19 @@ void HistoryBackend::InitImpl( +@@ -1338,6 +1342,19 @@ void HistoryBackend::InitImpl( expirer_.StartExpiringOldStuff(base::Days(kExpireDaysThreshold)); } @@ -532,7 +532,7 @@ diff --git a/components/history/core/browser/history_service.cc b/components/his #include "components/history/core/browser/download_row.h" #include "components/history/core/browser/features.h" #include "components/history/core/browser/history_backend.h" -@@ -565,6 +568,33 @@ base::CancelableTaskTracker::TaskId HistoryService::ScheduleDBTask( +@@ -511,6 +514,33 @@ base::CancelableTaskTracker::TaskId HistoryService::ScheduleDBTask( return task_id; } @@ -566,7 +566,7 @@ diff --git a/components/history/core/browser/history_service.cc b/components/his void HistoryService::ScheduleDBTaskForUI( base::OnceCallback callback) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -@@ -1467,6 +1497,9 @@ void HistoryService::Cleanup() { +@@ -1420,6 +1450,9 @@ void HistoryService::Cleanup() { return; } @@ -588,7 +588,7 @@ diff --git a/components/history/core/browser/history_service.h b/components/hist #include "components/history/core/browser/history_types.h" #include "components/history/core/browser/keyword_id.h" #include "components/history/core/browser/url_row.h" -@@ -115,6 +117,8 @@ class HistoryService : public KeyedService, +@@ -119,6 +121,8 @@ class HistoryService : public KeyedService, // Returns the directory containing the History databases. const base::FilePath& history_dir() const { return history_dir_; } @@ -597,7 +597,7 @@ diff --git a/components/history/core/browser/history_service.h b/components/hist // Triggers the backend to load if it hasn't already, and then returns whether // it's finished loading. // Note: Virtual needed for mocking. -@@ -1184,6 +1188,10 @@ class HistoryService : public KeyedService, +@@ -1169,6 +1173,10 @@ class HistoryService : public KeyedService, raw_ptr local_device_info_provider_ = nullptr; diff --git a/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch b/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch index 45f8d6d7..9d365e9d 100644 --- a/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch +++ b/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch @@ -44,7 +44,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -638,6 +638,8 @@ chrome_java_resources = [ +@@ -652,6 +652,8 @@ chrome_java_resources = [ "java/res/xml/personalize_google_services_preferences.xml", "java/res/xml/incognito_preferences.xml", "java/res/xml/privacy_preferences.xml", @@ -56,7 +56,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -931,6 +931,8 @@ chrome_java_sources = [ +@@ -941,6 +941,8 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSurveyController.java", "java/src/org/chromium/chrome/browser/privacy_sandbox/TrackingProtectionSnackbarController.java", "java/src/org/chromium/chrome/browser/privacy_sandbox/TrackingProtectionSnackbarLimiter.java", @@ -395,7 +395,7 @@ new file mode 100644 diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc --- a/chrome/browser/extensions/api/settings_private/prefs_util.cc +++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc -@@ -234,6 +234,11 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { +@@ -235,6 +235,11 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { (*s_allowlist)[::prefs::kExpireDaysThreshold] = settings_api::PrefType::kNumber; @@ -410,7 +410,7 @@ diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chro diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc --- a/chrome/browser/net/system_network_context_manager.cc +++ b/chrome/browser/net/system_network_context_manager.cc -@@ -674,6 +674,9 @@ SystemNetworkContextManager::SystemNetworkContextManager( +@@ -672,6 +672,9 @@ SystemNetworkContextManager::SystemNetworkContextManager( base::BindRepeating(&SystemNetworkContextManager::UpdateReferrersEnabled, base::Unretained(this))); @@ -420,7 +420,7 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows pref_change_registrar_.Add( prefs::kExplicitlyAllowedNetworkPorts, base::BindRepeating( -@@ -756,6 +759,7 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) { +@@ -754,6 +757,7 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) { // the system NetworkContext, and the per-profile pref values are used for // the profile NetworkContexts. registry->RegisterBooleanPref(prefs::kEnableReferrers, true); @@ -431,9 +431,9 @@ diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/brows diff --git a/chrome/browser/renderer_preferences_util.cc b/chrome/browser/renderer_preferences_util.cc --- a/chrome/browser/renderer_preferences_util.cc +++ b/chrome/browser/renderer_preferences_util.cc -@@ -146,6 +146,7 @@ void UpdateFromSystemSettings(blink::RendererPreferences* prefs, - #endif - #endif +@@ -142,6 +142,7 @@ void UpdateFromSystemSettings(blink::RendererPreferences* prefs, + prefs->caret_blink_interval = + ui::NativeTheme::GetInstanceForNativeUi()->caret_blink_interval(); prefs->enable_referrers = pref_service->GetBoolean(prefs::kEnableReferrers); + prefs->referrers_policy = pref_service->GetInteger(prefs::kReferrersPolicy); prefs->enable_do_not_track = @@ -442,28 +442,28 @@ diff --git a/chrome/browser/renderer_preferences_util.cc b/chrome/browser/render diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html --- a/chrome/browser/resources/settings/privacy_page/privacy_page.html +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html -@@ -101,6 +101,16 @@ - menu-options="[[historyExpireDaysThresholdOptions_]]"> - -
-+
-+ -+ -+ -+
- -
[[dbdDeletionConfirmationToastLabel_]]
-
+@@ -85,6 +85,16 @@ + menu-options="[[historyExpireDaysThresholdOptions_]]"> + +
++
++ ++ ++ ++
+ +
[[dbdDeletionConfirmationToastLabel_]]
+
diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/chrome/browser/resources/settings/privacy_page/privacy_page.ts --- a/chrome/browser/resources/settings/privacy_page/privacy_page.ts +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.ts -@@ -100,6 +100,17 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { - }, +@@ -92,6 +92,17 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { + value: () => loadTimeData.getBoolean('isPrivacySandboxRestricted'), }, + referersPolicyOptions_: { @@ -477,18 +477,18 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch + ]; + }, + }, - isGuest_: { + isPrivacySandboxRestrictedNoticeEnabled_: { type: Boolean, - value() { -@@ -323,6 +334,7 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { - declare private enableWebPrintingContentSetting_: boolean; + value: () => +@@ -122,6 +133,7 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { + declare private showClearBrowsingDataDialog_: boolean; + declare private showPrivacyGuideDialog_: boolean; + declare private enableDeleteBrowsingDataRevamp_: boolean; ++ declare private referersPolicyOptions_: object[]; + declare private enableIncognitoTrackingProtections_: boolean; declare private isPrivacySandboxRestricted_: boolean; declare private isPrivacySandboxRestrictedNoticeEnabled_: boolean; -+ declare private referersPolicyOptions_: object[]; - private privateStateTokensEnabled_: boolean; - declare private autoPictureInPictureEnabled_: boolean; - declare private capturedSurfaceControlEnabled_: boolean; -@@ -397,6 +409,12 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { +@@ -153,6 +165,12 @@ export class SettingsPrivacyPageElement extends SettingsPrivacyPageElementBase { Router.getInstance().navigateTo(routes.COOKIES); } @@ -504,7 +504,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch 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 -@@ -1074,6 +1074,30 @@ For more settings that use data to improve your Chrome experience, go to @@ -562,7 +562,7 @@ diff --git a/chrome/browser/ui/prefs/prefs_tab_helper.cc b/chrome/browser/ui/pre diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -2067,6 +2067,10 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, +@@ -2081,6 +2081,10 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, {"dayHistory", IDS_SETTINGS_DAY_HISTORY_DESCRIPTION}, {"daysHistory", IDS_SETTINGS_DAYS_HISTORY_DESCRIPTION}, {"foreverHistory", IDS_SETTINGS_FOREVER_HISTORY_DESCRIPTION}, @@ -576,7 +576,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -1569,6 +1569,9 @@ inline constexpr char kEnableReferrers[] = "enable_referrers"; +@@ -1553,6 +1553,9 @@ inline constexpr char kEnableReferrers[] = "enable_referrers"; inline constexpr char kEnableEncryptedMedia[] = "webkit.webprefs.encrypted_media_enabled"; @@ -639,7 +639,7 @@ diff --git a/components/download/content/internal/context_menu_download.cc b/com diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc --- a/content/browser/renderer_host/navigation_request.cc +++ b/content/browser/renderer_host/navigation_request.cc -@@ -397,6 +397,15 @@ void AddAdditionalRequestHeaders( +@@ -403,6 +403,15 @@ void AddAdditionalRequestHeaders( blink::mojom::Referrer(GURL(), network::mojom::ReferrerPolicy::kNever); } @@ -658,7 +658,7 @@ diff --git a/content/browser/renderer_host/navigation_request.cc b/content/brows diff --git a/services/network/public/cpp/resource_request.h b/services/network/public/cpp/resource_request.h --- a/services/network/public/cpp/resource_request.h +++ b/services/network/public/cpp/resource_request.h -@@ -170,7 +170,7 @@ struct COMPONENT_EXPORT(NETWORK_CPP_BASE) ResourceRequest { +@@ -178,7 +178,7 @@ struct COMPONENT_EXPORT(NETWORK_CPP_BASE) ResourceRequest { std::vector navigation_redirect_chain; GURL referrer; diff --git a/build/patches/Remove-help-menu-item.patch b/build/patches/Remove-help-menu-item.patch index 4b8227ae..f12c96e0 100644 --- a/build/patches/Remove-help-menu-item.patch +++ b/build/patches/Remove-help-menu-item.patch @@ -26,7 +26,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java --- a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcuts.java -@@ -1128,9 +1128,6 @@ public class KeyboardShortcuts { +@@ -1134,9 +1134,6 @@ public class KeyboardShortcuts { currentTab.goForward(); } return true; @@ -39,7 +39,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcu diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -2496,15 +2496,6 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2544,15 +2544,6 @@ public abstract class ChromeActivity extends AsyncInitializationActivity final Tab currentTab = getActivityTab(); @@ -52,9 +52,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv - return true; - } - - if (id == R.id.open_history_menu_id) { - if (currentTab != null && UrlUtilities.isNtpUrl(currentTab.getUrl())) { - NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_HISTORY_MANAGER); + if (id == R.id.feedback_form) { + String url = currentTab != null ? currentTab.getUrl().getSpec() : ""; + String helpContextId = diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillPaymentMethodsFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillPaymentMethodsFragment.java --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillPaymentMethodsFragment.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillPaymentMethodsFragment.java @@ -80,7 +80,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settin diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java --- a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java -@@ -895,6 +895,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment +@@ -905,6 +905,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment TraceEventVectorDrawableCompat.create( getResources(), R.drawable.ic_help_and_feedback, getActivity().getTheme())); help.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); @@ -91,7 +91,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabActivity.java -@@ -1151,7 +1151,6 @@ public abstract class BaseCustomTabActivity extends ChromeActivity { +@@ -1153,7 +1153,6 @@ public abstract class BaseCustomTabActivity extends ChromeActivity { // Disable creating new tabs, bookmark, print, help, focus_url, etc. if (id == R.id.focus_url_bar || id == R.id.all_bookmarks_menu_id @@ -113,7 +113,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java -@@ -462,6 +462,7 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -701,6 +701,7 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity help.setIcon( TraceEventVectorDrawableCompat.create( getResources(), R.drawable.ic_help_and_feedback, getTheme())); @@ -124,7 +124,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/GoogleServicesSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/GoogleServicesSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/GoogleServicesSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/GoogleServicesSettings.java -@@ -170,6 +170,7 @@ public class GoogleServicesSettings extends ChromeBaseSettingsFragment +@@ -171,6 +171,7 @@ public class GoogleServicesSettings extends ChromeBaseSettingsFragment MenuItem help = menu.add(Menu.NONE, R.id.menu_id_targeted_help, Menu.NONE, R.string.menu_help); help.setIcon(R.drawable.ic_help_and_feedback); @@ -135,7 +135,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/G diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/ManageSyncSettings.java -@@ -317,6 +317,7 @@ public class ManageSyncSettings extends ChromeBaseSettingsFragment +@@ -318,6 +318,7 @@ public class ManageSyncSettings extends ChromeBaseSettingsFragment MenuItem help = menu.add(Menu.NONE, R.id.menu_id_targeted_help, Menu.NONE, R.string.menu_help); help.setIcon(R.drawable.ic_help_and_feedback); @@ -146,7 +146,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/settings/M diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java -@@ -379,7 +379,7 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -399,7 +399,7 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm } // Help @@ -191,7 +191,7 @@ diff --git a/chrome/browser/prefetch/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSettingsBaseFragment.java b/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSettingsBaseFragment.java --- a/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSettingsBaseFragment.java +++ b/chrome/browser/privacy_sandbox/android/java/src/org/chromium/chrome/browser/privacy_sandbox/PrivacySandboxSettingsBaseFragment.java -@@ -67,6 +67,7 @@ public abstract class PrivacySandboxSettingsBaseFragment extends ChromeBaseSetti +@@ -69,6 +69,7 @@ public abstract class PrivacySandboxSettingsBaseFragment extends ChromeBaseSetti help.setIcon( TraceEventVectorDrawableCompat.create( getResources(), R.drawable.ic_help_and_feedback, getActivity().getTheme())); @@ -213,7 +213,7 @@ diff --git a/chrome/browser/safe_browsing/android/java/src/org/chromium/chrome/b diff --git a/chrome/browser/ui/chrome_pages.cc b/chrome/browser/ui/chrome_pages.cc --- a/chrome/browser/ui/chrome_pages.cc +++ b/chrome/browser/ui/chrome_pages.cc -@@ -139,6 +139,15 @@ void LaunchReleaseNotesImpl(Profile* profile, apps::LaunchSource source) { +@@ -145,6 +145,15 @@ void LaunchReleaseNotesImpl(Profile* profile, apps::LaunchSource source) { // shown in the last active browser. If there is no such browser, a new browser // is created. void ShowHelpImpl(Browser* browser, Profile* profile, HelpSource source) { diff --git a/build/patches/Restore-Simplified-NTP-launch.patch b/build/patches/Restore-Simplified-NTP-launch.patch index 5fed3693..f2389ebd 100644 --- a/build/patches/Restore-Simplified-NTP-launch.patch +++ b/build/patches/Restore-Simplified-NTP-launch.patch @@ -28,12 +28,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../native_page/NativePageFactory.java | 20 +- .../NativePageNavigationDelegateImpl.java | 2 +- .../chrome/browser/ntp/NewTabPage.java | 8 +- - .../chrome/browser/ntp/NewTabPageLayout.java | 29 +- + .../chrome/browser/ntp/NewTabPageLayout.java | 28 +- .../suggestions/SuggestionsConfig.java | 2 +- .../SuggestionsNavigationDelegate.java | 27 +- .../tile/MostVisitedTilesCoordinator.java | 6 +- .../tile/MostVisitedTilesGridLayout.java | 287 ++++++++++++++++++ - .../tile/MostVisitedTilesMediator.java | 12 +- + .../tile/MostVisitedTilesMediator.java | 8 +- .../tile/TileDragDelegateImpl.java | 16 +- .../suggestions/tile/TileRenderer.java | 8 +- .../suggestions/tile/TilesLinearLayout.java | 2 +- @@ -47,7 +47,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../Restore-Simplified-NTP-launch.inc | 12 + .../Restore-Simplified-NTP-launch.inc | 10 + .../Restore-Simplified-NTP-launch.inc | 1 + - 41 files changed, 639 insertions(+), 60 deletions(-) + 41 files changed, 639 insertions(+), 55 deletions(-) create mode 100644 chrome/android/java/res/drawable-hdpi/ic_most_visited_placeholder.png create mode 100644 chrome/android/java/res/drawable-mdpi/ic_most_visited_placeholder.png create mode 100644 chrome/android/java/res/drawable-xhdpi/ic_most_visited_placeholder.png @@ -77,7 +77,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja "java/res/drawable-hdpi/ic_phone_googblue_36dp.png", "java/res/drawable-hdpi/ic_photo_camera.png", "java/res/drawable-hdpi/ic_place_googblue_36dp.png", -@@ -528,6 +533,7 @@ chrome_java_resources = [ +@@ -538,6 +543,7 @@ chrome_java_resources = [ "java/res/layout/manage_sync_settings_bottom_bar.xml", "java/res/layout/material_tooltip.xml", "java/res/layout/multiline_spinner_item.xml", @@ -85,7 +85,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja "java/res/layout/mv_tiles_layout.xml", "java/res/layout/navigation_bubble.xml", "java/res/layout/navigation_sheet.xml", -@@ -537,8 +543,10 @@ chrome_java_resources = [ +@@ -547,8 +553,10 @@ chrome_java_resources = [ "java/res/layout/new_custom_tab_toolbar.xml", "java/res/layout/new_tab_page_incognito.xml", "java/res/layout/new_tab_page_layout.xml", @@ -99,7 +99,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -613,6 +613,7 @@ chrome_java_sources = [ +@@ -617,6 +617,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/feedback/FeedFeedbackCollector.java", "java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherImpl.java", "java/src/org/chromium/chrome/browser/feedback/ScreenshotTask.java", @@ -107,7 +107,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/org/chromium/chrome/browser/findinpage/FindToolbar.java", "java/src/org/chromium/chrome/browser/findinpage/FindToolbarManager.java", "java/src/org/chromium/chrome/browser/findinpage/FindToolbarObserver.java", -@@ -1020,6 +1021,7 @@ chrome_java_sources = [ +@@ -1031,6 +1032,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesMetadataUtils.java", "java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java", "java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesLayout.java", @@ -573,12 +573,12 @@ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -3410,7 +3410,8 @@ public class ChromeTabbedActivity extends ChromeActivity { - mEdgeToEdgeControllerSupplier, +@@ -3482,7 +3482,8 @@ public class ChromeTabbedActivity extends ChromeActivity { mTopInsetCoordinatorSupplier, getStartupMetricsTracker(), -- mRootUiCoordinator.getExclusiveAccessManager()); -+ mRootUiCoordinator.getExclusiveAccessManager(), + mRootUiCoordinator.getExclusiveAccessManager(), +- mBackPressManager); ++ mBackPressManager, + mBookmarkManagerOpenerSupplier); } return mTabDelegateFactory; @@ -586,10 +586,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java --- a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java -@@ -13,6 +13,7 @@ import org.chromium.build.annotations.NullMarked; - import org.chromium.build.annotations.Nullable; +@@ -13,6 +13,7 @@ import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.tab_activity_glue.ActivityTabWebContentsDelegateAndroid; + import org.chromium.chrome.browser.back_press.BackPressManager; +import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; import org.chromium.chrome.browser.compositor.CompositorViewHolder; @@ -603,39 +603,39 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe /** * {@link TabDelegateFactory} class to be used in all {@link Tab} instances owned by a {@link * ChromeTabbedActivity}. -@@ -89,6 +92,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { +@@ -88,6 +91,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { private final ObservableSupplier mTopInsetCoordinatorSupplier; private final StartupMetricsTracker mStartupMetricsTracker; private final @Nullable ExclusiveAccessManager mExclusiveAccessManager; + private final ObservableSupplier mBookmarkManagerOpenerSupplier; + private @Nullable NativePageFactory mNativePageFactory; + private final BackPressManager mBackPressManager; - public TabbedModeTabDelegateFactory( @@ -119,7 +124,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { - ObservableSupplier edgeToEdgeControllerSupplier, ObservableSupplier topInsetCoordinatorSupplier, StartupMetricsTracker startupMetricsTracker, -- @Nullable ExclusiveAccessManager exclusiveAccessManager) { -+ @Nullable ExclusiveAccessManager exclusiveAccessManager, + @Nullable ExclusiveAccessManager exclusiveAccessManager, +- BackPressManager backPressManager) { ++ BackPressManager backPressManager, + @NonNull ObservableSupplier bookmarkManagerOpenerSupplier) { mActivity = activity; mAppBrowserControlsVisibilityDelegate = appBrowserControlsVisibilityDelegate; mShareDelegateSupplier = shareDelegateSupplier; @@ -148,6 +154,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { - mTopInsetCoordinatorSupplier = topInsetCoordinatorSupplier; mStartupMetricsTracker = startupMetricsTracker; mExclusiveAccessManager = exclusiveAccessManager; + mBackPressManager = backPressManager; + mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier; } @Override @@ -218,7 +225,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { - mModuleRegistrySupplier, mEdgeToEdgeControllerSupplier, mTopInsetCoordinatorSupplier, -- mStartupMetricsTracker); -+ mStartupMetricsTracker, + mStartupMetricsTracker, +- mBackPressManager); ++ mBackPressManager, + mBookmarkManagerOpenerSupplier); } return mNativePageFactory.createNativePage(url, candidatePage, tab, pdfInfo); @@ -712,23 +712,23 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/I diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java --- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java -@@ -12,6 +12,7 @@ import android.graphics.Rect; +@@ -17,6 +17,7 @@ import android.graphics.Rect; import android.view.View; import androidx.annotation.VisibleForTesting; +import androidx.annotation.NonNull; - import org.chromium.base.jank_tracker.JankTracker; + import org.chromium.base.metrics.RecordUserAction; import org.chromium.base.supplier.DestroyableObservableSupplier; -@@ -24,6 +25,7 @@ import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; - import org.chromium.chrome.browser.app.ChromeActivity; +@@ -30,6 +31,7 @@ import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.download.home.DownloadPage; + import org.chromium.chrome.browser.back_press.BackPressManager; import org.chromium.chrome.browser.bookmarks.BookmarkPage; +import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener; import org.chromium.chrome.browser.browser_controls.BrowserControlsMarginSupplier; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; - import org.chromium.chrome.browser.fullscreen.BrowserControlsManager; -@@ -87,6 +89,7 @@ public class NativePageFactory { + import org.chromium.chrome.browser.flags.ChromeFeatureList; +@@ -95,6 +97,7 @@ public class NativePageFactory { private final ObservableSupplier mEdgeToEdgeControllerSupplier; private final ObservableSupplier mTopInsetCoordinatorSupplier; private final StartupMetricsTracker mStartupMetricsTracker; @@ -736,38 +736,38 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat private @Nullable NewTabPageCreationTracker mNewTabPageCreationTracker; private @Nullable NativePageBuilder mNativePageBuilder; -@@ -110,7 +113,8 @@ public class NativePageFactory { - OneshotSupplier moduleRegistrySupplier, +@@ -119,7 +122,8 @@ public class NativePageFactory { ObservableSupplier edgeToEdgeControllerSupplier, ObservableSupplier topInsetCoordinatorSupplier, -- StartupMetricsTracker startupMetricsTracker) { -+ StartupMetricsTracker startupMetricsTracker, + StartupMetricsTracker startupMetricsTracker, +- BackPressManager backPressManager) { ++ BackPressManager backPressManager, + @NonNull ObservableSupplier bookmarkManagerOpenerSupplier) { mActivity = activity; mBottomSheetController = sheetController; mBrowserControlsManager = browserControlsManager; -@@ -129,6 +133,7 @@ public class NativePageFactory { - mEdgeToEdgeControllerSupplier = edgeToEdgeControllerSupplier; +@@ -138,6 +142,7 @@ public class NativePageFactory { mTopInsetCoordinatorSupplier = topInsetCoordinatorSupplier; mStartupMetricsTracker = startupMetricsTracker; + mBackPressManager = backPressManager; + mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier; } private NativePageBuilder getBuilder() { -@@ -153,7 +158,8 @@ public class NativePageFactory { - mModuleRegistrySupplier, +@@ -162,7 +167,8 @@ public class NativePageFactory { mEdgeToEdgeControllerSupplier, mTopInsetCoordinatorSupplier, -- mStartupMetricsTracker); -+ mStartupMetricsTracker, + mStartupMetricsTracker, +- mBackPressManager); ++ mBackPressManager, + mBookmarkManagerOpenerSupplier); } return mNativePageBuilder; } -@@ -187,9 +193,10 @@ public class NativePageFactory { - private final ObservableSupplier mEdgeToEdgeControllerSupplier; +@@ -196,9 +202,10 @@ public class NativePageFactory { private final ObservableSupplier mTopInsetCoordinatorSupplier; private final StartupMetricsTracker mStartupMetricsTracker; + private final BackPressManager mBackPressManager; + private final ObservableSupplier mBookmarkManagerOpenerSupplier; public NativePageBuilder( @@ -776,25 +776,25 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat Supplier newTabPageCreationTracker, BottomSheetController sheetController, BrowserControlsManager browserControlsManager, -@@ -207,7 +214,8 @@ public class NativePageFactory { - OneshotSupplier moduleRegistrySupplier, +@@ -216,7 +223,8 @@ public class NativePageFactory { ObservableSupplier edgeToEdgeControllerSupplier, ObservableSupplier topInsetCoordinatorSupplier, -- StartupMetricsTracker startupMetricsTracker) { -+ StartupMetricsTracker startupMetricsTracker, + StartupMetricsTracker startupMetricsTracker, +- BackPressManager backPressManager) { ++ BackPressManager backPressManager, + @NonNull ObservableSupplier bookmarkManagerOpenerSupplier) { mActivity = activity; mNewTabPageCreationTracker = newTabPageCreationTracker; mBottomSheetController = sheetController; -@@ -227,6 +235,7 @@ public class NativePageFactory { - mEdgeToEdgeControllerSupplier = edgeToEdgeControllerSupplier; +@@ -236,6 +244,7 @@ public class NativePageFactory { mTopInsetCoordinatorSupplier = topInsetCoordinatorSupplier; mStartupMetricsTracker = startupMetricsTracker; + mBackPressManager = backPressManager; + mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier; } protected NativePage buildNewTabPage(Tab tab, String url) { -@@ -265,7 +274,8 @@ public class NativePageFactory { +@@ -273,7 +282,8 @@ public class NativePageFactory { mModuleRegistrySupplier, mEdgeToEdgeControllerSupplier, mTopInsetCoordinatorSupplier, @@ -819,7 +819,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java -@@ -125,6 +125,9 @@ import org.chromium.ui.base.DeviceFormFactor; +@@ -126,6 +126,9 @@ import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.WindowAndroid; import org.chromium.url.GURL; @@ -829,7 +829,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. import java.util.List; import java.util.function.Supplier; -@@ -504,7 +507,8 @@ public class NewTabPage +@@ -502,7 +505,8 @@ public class NewTabPage OneshotSupplier moduleRegistrySupplier, ObservableSupplier edgeToEdgeControllerSupplier, ObservableSupplier topInsetCoordinatorSupplier, @@ -839,7 +839,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. mConstructedTimeNs = System.nanoTime(); TraceEvent.begin(TAG); -@@ -529,7 +533,7 @@ public class NewTabPage +@@ -526,7 +530,7 @@ public class NewTabPage SuggestionsNavigationDelegate navigationDelegate = new SuggestionsNavigationDelegate( @@ -851,7 +851,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java -@@ -13,6 +13,7 @@ import android.graphics.Rect; +@@ -12,6 +12,7 @@ import android.graphics.Rect; import android.text.Editable; import android.util.AttributeSet; import android.view.DragEvent; @@ -859,7 +859,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL import android.view.View; import android.view.ViewGroup; import android.view.ViewStub; -@@ -41,6 +42,7 @@ import org.chromium.chrome.browser.feed.FeedSurfaceScrollDelegate; +@@ -40,6 +41,7 @@ import org.chromium.chrome.browser.feed.FeedSurfaceScrollDelegate; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.incognito.IncognitoUtils; import org.chromium.chrome.browser.lens.LensEntryPoint; @@ -867,16 +867,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL import org.chromium.chrome.browser.lens.LensMetrics; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.logo.LogoBridge.Logo; -@@ -58,7 +60,7 @@ import org.chromium.chrome.browser.profiles.Profile; - import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesCoordinator; +@@ -58,6 +60,7 @@ import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesCoordinator; + import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesLayout; import org.chromium.chrome.browser.suggestions.tile.TileGroup; import org.chromium.chrome.browser.suggestions.tile.TileGroup.Delegate; --import org.chromium.chrome.browser.suggestions.tile.TilesLinearLayout; +import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesGridLayout; import org.chromium.chrome.browser.tab_ui.InvalidationAwareThumbnailProvider; import org.chromium.chrome.browser.ui.native_page.TouchEnabledDelegate; import org.chromium.chrome.browser.util.BrowserUiUtils; -@@ -105,6 +107,8 @@ public class NewTabPageLayout extends LinearLayout +@@ -104,6 +107,8 @@ public class NewTabPageLayout extends LinearLayout private @Nullable DisplayStyleObserver mDisplayStyleObserver; private CallbackController mCallbackController = new CallbackController(); @@ -885,7 +884,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL /** * Whether the tiles shown in the layout have finished loading. * With {@link #mHasShownView}, it's one of the 2 flags used to track initialisation progress. -@@ -117,7 +121,7 @@ public class NewTabPageLayout extends LinearLayout +@@ -116,7 +121,7 @@ public class NewTabPageLayout extends LinearLayout */ private boolean mHasShownView; @@ -894,7 +893,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL private boolean mSearchProviderIsGoogle; private boolean mShowingNonStandardGoogleLogo; private boolean mIsOmniboxMobileParityUpdateV2Enabled; -@@ -311,6 +315,7 @@ public class NewTabPageLayout extends LinearLayout +@@ -299,6 +304,7 @@ public class NewTabPageLayout extends LinearLayout initializeMostVisitedTilesCoordinator( mProfile, lifecycleDispatcher, tileGroupDelegate, touchEnabledDelegate); initializeDseIconView(shouldShowDseIcon()); @@ -902,16 +901,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL initializeSearchBoxTextView(); initializeVoiceSearchButton(); initializeLensButton(); -@@ -700,7 +705,7 @@ public class NewTabPageLayout extends LinearLayout +@@ -686,7 +692,7 @@ public class NewTabPageLayout extends LinearLayout + private void calculateTabletMvtWidth(int totalWidth) { + if (mMvTilesContainerLayout.getVisibility() == GONE) return; - if (mInitialTileNum == null) { - mInitialTileNum = -- ((TilesLinearLayout) findViewById(R.id.mv_tiles_layout)).getTileCount(); -+ ((MostVisitedTilesGridLayout) findViewById(R.id.mv_tiles_layout)).getTileCount(); - } - - int currentOrientation = getResources().getConfiguration().orientation; -@@ -768,7 +773,7 @@ public class NewTabPageLayout extends LinearLayout +- MostVisitedTilesLayout mvTilesLayout = findViewById(R.id.mv_tiles_layout); ++ MostVisitedTilesGridLayout mvTilesLayout = findViewById(R.id.mv_tiles_layout); + mMvtContentFits = mvTilesLayout.contentFitsOnTablet(totalWidth); + updateMvtOnTablet(); + } +@@ -737,7 +743,7 @@ public class NewTabPageLayout extends LinearLayout && mInitialized) { return; } @@ -920,7 +919,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL mSearchProviderIsGoogle = isGoogle; if (!mSearchProviderIsGoogle) { -@@ -1219,6 +1224,22 @@ public class NewTabPageLayout extends LinearLayout +@@ -1188,6 +1194,22 @@ public class NewTabPageLayout extends LinearLayout return mMostVisitedTilesCoordinator; } @@ -1335,7 +1334,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til TileRenderer renderer, PropertyModel propertyModel, boolean isTablet, -@@ -211,20 +211,14 @@ public class MostVisitedTilesMediator implements TileGroup.Observer { +@@ -211,12 +211,10 @@ public class MostVisitedTilesMediator implements TileGroup.Observer { @Override public void onCustomTileCreation(Tile tile) { @@ -1347,16 +1346,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til - mMvTilesLayout.ensureTileIsInViewOnNextLayout(newPos); } - @Override - public void onCustomTileNonReorderChange() { -- SuggestionsTileVerticalDivider divider = mMvTilesLayout.getDividerMaybeNull(); -- if (divider != null) { -- divider.showThenHide(); -- } - } - public void onConfigurationChanged() { -@@ -334,7 +328,5 @@ public class MostVisitedTilesMediator implements TileGroup.Observer { +@@ -326,7 +324,5 @@ public class MostVisitedTilesMediator implements TileGroup.Observer { double firstTileScore = mTileGroup.getSuggestionScore(firstTile.getUrl()); if (firstTileScore < MVT_CUSTOMIZATION_IPH_TILE_SCORE_THRESHOULD) return; @@ -1422,7 +1413,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java -@@ -176,7 +176,7 @@ public class TileRenderer { +@@ -174,7 +174,7 @@ public class TileRenderer { */ public void renderTileSection( List sectionTiles, @@ -1431,7 +1422,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til TileGroup.TileSetupDelegate setupDelegate) { try (TraceEvent e = TraceEvent.scoped("TileRenderer.renderTileSection")) { // Map the old tile views by url so they can be reused later. -@@ -265,7 +265,7 @@ public class TileRenderer { +@@ -263,7 +263,7 @@ public class TileRenderer { */ @VisibleForTesting SuggestionsTileView buildTileView( @@ -1440,7 +1431,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til SuggestionsTileView tileView = (SuggestionsTileView) LayoutInflater.from(parent.getContext()) -@@ -332,7 +332,7 @@ public class TileRenderer { +@@ -330,7 +330,7 @@ public class TileRenderer { return tileView; } @@ -1449,7 +1440,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til return (SuggestionsTileVerticalDivider) LayoutInflater.from(parent.getContext()) .inflate(R.layout.suggestions_tile_vertical_divider, parent, false); -@@ -353,7 +353,7 @@ public class TileRenderer { +@@ -351,7 +351,7 @@ public class TileRenderer { } TileView buildAddCustomLinksButton( @@ -1461,15 +1452,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TilesLinearLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TilesLinearLayout.java --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TilesLinearLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TilesLinearLayout.java -@@ -26,7 +26,7 @@ import java.util.List; - * #getChildCount()} and {@link #getChildAt()}. +@@ -32,7 +32,7 @@ import java.util.List; + * #getChildAt()}. */ @NullMarked -public class TilesLinearLayout extends LinearLayout { +class TilesLinearLayout extends LinearLayout { private final List mTileList = new ArrayList<>(); - protected float mNonTileViewsTotalWidthDp; + protected int mTileAndUiViewCount; diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/engagement/important_sites_util.cc --- a/chrome/browser/engagement/important_sites_util.cc +++ b/chrome/browser/engagement/important_sites_util.cc @@ -1485,7 +1476,7 @@ diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -347,6 +347,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -349,6 +349,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kIncognitoThemeOverlayTesting, &kInstanceSwitcherV2, &kKeyboardEscBackNavigation, @@ -1496,7 +1487,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -486,6 +486,7 @@ public abstract class ChromeFeatureList { +@@ -490,6 +490,7 @@ public abstract class ChromeFeatureList { public static final String MITIGATE_LEGACY_SEARCH_ENGINE_PROMO_OVERLAP = "MitigateLegacySearchEnginePromoOverlap"; public static final String MOST_VISITED_TILES_CUSTOMIZATION = "MostVisitedTilesCustomization"; @@ -1505,9 +1496,9 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String MOST_VISITED_TILES_RESELECT = "MostVisitedTilesReselect"; public static final String MULTI_INSTANCE_APPLICATION_STATUS_CLEANUP = @@ -980,7 +981,7 @@ public abstract class ChromeFeatureList { - newCachedFlag(LOCK_BACK_PRESS_HANDLER_AT_START, true); - public static final CachedFlag sLockTopControlsOnLargeTablets = - newCachedFlag(LOCK_TOP_CONTROLS_ON_LARGE_TABLETS, false); + // TODO(https://crbug.com/438970923): Remove the use of BuildConfig by 2025 EoY. + public static final CachedFlag sLockTopControlsOnLargeTabletsV2 = + newCachedFlag(LOCK_TOP_CONTROLS_ON_LARGE_TABLETS_V2, BuildConfig.IS_DESKTOP_ANDROID); - public static final CachedFlag sMagicStackAndroid = newCachedFlag(MAGIC_STACK_ANDROID, true); + public static final CachedFlag sMagicStackAndroid = newCachedFlag(MAGIC_STACK_ANDROID, false); public static final CachedFlag sMaliciousApkDownloadCheck = @@ -1527,7 +1518,7 @@ diff --git a/chrome/browser/segmentation_platform/android/java/src/org/chromium/ 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 -@@ -3902,6 +3902,12 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -3908,6 +3908,12 @@ To change this setting, BEGIN_LINKdelete the Chrome d Recent tabs diff --git a/build/patches/Restore-chrome-password-store.patch b/build/patches/Restore-chrome-password-store.patch index a4f93a3c..829f79e2 100644 --- a/build/patches/Restore-chrome-password-store.patch +++ b/build/patches/Restore-chrome-password-store.patch @@ -60,7 +60,6 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../settings/SavedPasswordEntry.java | 41 ++ .../settings/SingleThreadBarrierClosure.java | 49 ++ .../settings/TimedCallbackDelayer.java | 33 + - .../login_db_deprecation_runner_factory.cc | 2 +- .../android/password_manager_android_util.cc | 1 + .../android/password_ui_view_android.cc | 449 +++++++++++ .../android/password_ui_view_android.h | 196 +++++ @@ -70,12 +69,11 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../Import-Password-Android.grdp | 9 + .../autofill/core/common/autofill_features.cc | 1 + .../settings/SettingsNavigation.java | 3 + - .../core/browser/buildflags.gni | 2 +- .../password_manager_features_util.cc | 1 + .../core/browser/import/password_importer.cc | 11 + components/sync/service/sync_prefs.cc | 2 +- .../Restore-chrome-password-store.inc | 1 + - 67 files changed, 5511 insertions(+), 38 deletions(-) + 65 files changed, 5509 insertions(+), 36 deletions(-) create mode 100644 chrome/android/java/res/layout/password_no_result.xml create mode 100644 chrome/android/java/res/menu/save_password_preferences_action_bar_menu.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java @@ -121,7 +119,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -797,6 +797,10 @@ if (_is_default_toolchain) { +@@ -803,6 +803,10 @@ if (_is_default_toolchain) { "//url/mojom:url_mojom_origin_java", ] @@ -132,7 +130,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn deps += feed_deps srcjar_deps = [ -@@ -939,6 +943,10 @@ if (_is_default_toolchain) { +@@ -946,6 +950,10 @@ if (_is_default_toolchain) { "//components/visited_url_ranking/internal:internal_java", ] @@ -146,7 +144,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -629,3 +629,8 @@ chrome_java_resources = [ +@@ -643,3 +643,8 @@ chrome_java_resources = [ "java/res/xml/tracing_preferences.xml", "java/res/xml/unified_account_settings_preferences.xml", ] @@ -158,7 +156,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -866,6 +866,7 @@ chrome_java_sources = [ +@@ -875,6 +875,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/password_manager/PasswordManagerDialogViewBinder.java", "java/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridge.java", "java/src/org/chromium/chrome/browser/password_manager/PasswordManagerLauncher.java", @@ -169,7 +167,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml -@@ -457,10 +457,9 @@ by a child template that "extends" this file. +@@ -455,10 +455,9 @@ by a child template that "extends" this file. @@ -1006,7 +1004,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme import org.chromium.chrome.browser.password_manager.PasswordManagerHelper; import org.chromium.chrome.browser.password_manager.PasswordStoreBridge; import org.chromium.chrome.browser.privacy_guide.PrivacyGuideFragment; -@@ -136,6 +138,9 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -134,6 +136,9 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl PasswordManagerHelper.getForProfile(mProfile), new SettingsCustomTabLauncherImpl()); } @@ -1019,7 +1017,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java -@@ -480,18 +480,6 @@ public class MainSettings extends ChromeBaseSettingsFragment +@@ -481,18 +481,6 @@ public class MainSettings extends ChromeBaseSettingsFragment preference -> SettingsNavigationHelper.showAutofillProfileSettings( getActivity())); @@ -1069,7 +1067,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3371,6 +3371,13 @@ static_library("browser") { +@@ -3369,6 +3369,13 @@ static_library("browser") { "touch_to_fill/password_manager/touch_to_fill_controller_webauthn_delegate.h", ] @@ -1086,7 +1084,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/AutofillClientProviderUtils.java b/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/AutofillClientProviderUtils.java --- a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/AutofillClientProviderUtils.java +++ b/chrome/browser/autofill/android/java/src/org/chromium/chrome/browser/autofill/AutofillClientProviderUtils.java -@@ -122,6 +122,7 @@ public class AutofillClientProviderUtils { +@@ -121,6 +121,7 @@ public class AutofillClientProviderUtils { @CalledByNative public static void setAutofillOptionsDeepLinkPref(boolean featureOn) { @@ -2905,7 +2903,7 @@ new file mode 100644 diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/password_manager/android/BUILD.gn --- a/chrome/browser/password_manager/android/BUILD.gn +++ b/chrome/browser/password_manager/android/BUILD.gn -@@ -190,6 +190,27 @@ android_library("java") { +@@ -188,6 +188,27 @@ android_library("java") { "java/src/org/chromium/chrome/browser/password_manager/settings/PasswordsPreference.java", ] @@ -2933,7 +2931,7 @@ diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/p resources_package = "org.chromium.chrome.browser.password_manager" } -@@ -211,6 +232,8 @@ generate_jni("jni_headers") { +@@ -209,6 +230,8 @@ generate_jni("jni_headers") { "java/src/org/chromium/chrome/browser/password_manager/PasswordStoreCredential.java", "java/src/org/chromium/chrome/browser/password_manager/PasswordSyncControllerDelegateBridgeImpl.java", ] @@ -2945,7 +2943,7 @@ diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/p diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java --- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java +++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java -@@ -38,8 +38,9 @@ import org.chromium.chrome.browser.preferences.Pref; +@@ -37,8 +37,9 @@ import org.chromium.chrome.browser.password_manager.PasswordCheckupClientHelper. import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileKeyedMap; import org.chromium.chrome.browser.pwm_disabled.PasswordCsvDownloadFlowControllerFactory; @@ -2954,9 +2952,9 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom +import org.chromium.chrome.browser.settings.SettingsNavigationFactory; +import org.chromium.components.browser_ui.settings.SettingsNavigation; import org.chromium.components.browser_ui.settings.SettingsCustomTabLauncher; - import org.chromium.components.prefs.PrefService; import org.chromium.components.sync.SyncService; -@@ -187,6 +188,7 @@ public class PasswordManagerHelper { + import org.chromium.ui.modaldialog.ModalDialogManager; +@@ -173,6 +174,7 @@ public class PasswordManagerHelper { Context context, Supplier<@Nullable ModalDialogManager> modalDialogManagerSupplier, SettingsCustomTabLauncher settingsCustomTabLauncher) { @@ -2964,11 +2962,11 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom // Automotive doesn't support the export flow. if (!DeviceInfo.isAutomotive() && LoginDbDeprecationUtilBridge.hasPasswordsInCsv(mProfile)) { -@@ -194,16 +196,6 @@ public class PasswordManagerHelper { +@@ -180,16 +182,6 @@ public class PasswordManagerHelper { return true; } -- if (!PasswordManagerUtilBridge.isPasswordManagerAvailable(UserPrefs.get(mProfile))) { +- if (!PasswordManagerUtilBridge.isPasswordManagerAvailable()) { - new PasswordManagerUnavailableDialogCoordinator() - .showDialog( - context, @@ -2981,7 +2979,7 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom return false; } -@@ -432,6 +424,11 @@ public class PasswordManagerHelper { +@@ -417,6 +409,11 @@ public class PasswordManagerHelper { Supplier<@Nullable ModalDialogManager> modalDialogManagerSupplier, Context context, @Nullable String account) { @@ -2991,12 +2989,12 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom + context, SettingsNavigation.SettingsFragment.PASSWORDS); + if ((true)) return; assert syncService != null; - assert PasswordManagerUtilBridge.isPasswordManagerAvailable(prefService); + assert PasswordManagerUtilBridge.isPasswordManagerAvailable(); CredentialManagerLauncher credentialManagerLauncher = diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerUtilBridge.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerUtilBridge.java --- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerUtilBridge.java +++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerUtilBridge.java -@@ -41,8 +41,7 @@ public class PasswordManagerUtilBridge { +@@ -39,8 +39,7 @@ public class PasswordManagerUtilBridge { */ @CalledByNative public static boolean isGooglePlayServicesUpdatable() { @@ -4831,11 +4829,11 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom @@ -87,6 +87,7 @@ public class PasswordsPreference extends ChromeBasePreference implements Profile } - private void setUpPostDeprecationWarning(PreferenceViewHolder holder, PrefService prefService) { + private void setUpPostDeprecationWarning(PreferenceViewHolder holder) { + if ((true)) return; assert mProfile != null : "Profile is not set!"; - boolean isPasswordManagerAvailable = + boolean isPasswordManagerAvailable = PasswordManagerUtilBridge.isPasswordManagerAvailable(); diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/settings/ProgressBarDialogFragment.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/settings/ProgressBarDialogFragment.java new file mode 100644 --- /dev/null @@ -5252,22 +5250,10 @@ new file mode 100644 + mHandler.postDelayed(callback, mDelayMillis); + } +} -diff --git a/chrome/browser/password_manager/android/login_db_deprecation_runner_factory.cc b/chrome/browser/password_manager/android/login_db_deprecation_runner_factory.cc ---- a/chrome/browser/password_manager/android/login_db_deprecation_runner_factory.cc -+++ b/chrome/browser/password_manager/android/login_db_deprecation_runner_factory.cc -@@ -39,7 +39,7 @@ std::unique_ptr - LoginDbDeprecationRunnerFactory::BuildServiceInstanceForBrowserContext( - content::BrowserContext* context) const { - #if BUILDFLAG(USE_LOGIN_DATABASE_AS_BACKEND) -- return nullptr; -+ if ((true)) return nullptr; - #else - Profile* profile = Profile::FromBrowserContext(context); - PrefService* prefs = profile->GetPrefs(); diff --git a/chrome/browser/password_manager/android/password_manager_android_util.cc b/chrome/browser/password_manager/android/password_manager_android_util.cc --- a/chrome/browser/password_manager/android/password_manager_android_util.cc +++ b/chrome/browser/password_manager/android/password_manager_android_util.cc -@@ -31,6 +31,7 @@ namespace password_manager_android_util { +@@ -16,6 +16,7 @@ namespace password_manager_android_util { namespace { bool HasMinGmsVersionForFullUpmSupport() { @@ -5945,7 +5931,7 @@ diff --git a/chrome/browser/password_manager/android/pwm_disabled/BUILD.gn b/chr diff --git a/chrome/browser/password_manager/password_manager_settings_service_factory.cc b/chrome/browser/password_manager/password_manager_settings_service_factory.cc --- a/chrome/browser/password_manager/password_manager_settings_service_factory.cc +++ b/chrome/browser/password_manager/password_manager_settings_service_factory.cc -@@ -94,9 +94,7 @@ PasswordManagerSettingsServiceFactory::CreateService(Profile* profile) const { +@@ -90,9 +90,7 @@ PasswordManagerSettingsServiceFactory::CreateService(Profile* profile) const { return std::make_unique( profile->GetPrefs(), SyncServiceFactory::GetForProfile(profile)); } @@ -5959,7 +5945,7 @@ diff --git a/chrome/browser/password_manager/password_manager_settings_service_f 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 -@@ -679,7 +679,7 @@ For more settings that use data to improve your Chrome experience, go to @@ -5968,7 +5954,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Password saving is turned on by your administrator -@@ -779,6 +779,127 @@ For more settings that use data to improve your Chrome experience, go to @@ -6113,10 +6099,10 @@ new file mode 100644 diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc --- a/components/autofill/core/common/autofill_features.cc +++ b/components/autofill/core/common/autofill_features.cc -@@ -922,6 +922,7 @@ BASE_FEATURE(kAutofillAndroidDesktopSuppressAccessoryOnEmpty, - BASE_FEATURE(kAutofillDeepLinkAutofillOptions, - "AutofillDeepLinkAutofillOptions", - base::FEATURE_ENABLED_BY_DEFAULT); +@@ -786,6 +786,7 @@ BASE_FEATURE(kAutofillDeepLinkAutofillOptions, + // TODO: crbug.com/385172647 - Clean up after the feature is launched. + BASE_FEATURE(kAutofillEnableKeyboardAccessoryChipRedesign, + base::FEATURE_DISABLED_BY_DEFAULT); +SET_CROMITE_FEATURE_DISABLED(kAutofillDeepLinkAutofillOptions); // Controls if Chrome Autofill UI surfaces ignore touch events if something is @@ -6141,18 +6127,6 @@ diff --git a/components/browser_ui/settings/android/java/src/org/chromium/compon } /** -diff --git a/components/password_manager/core/browser/buildflags.gni b/components/password_manager/core/browser/buildflags.gni ---- a/components/password_manager/core/browser/buildflags.gni -+++ b/components/password_manager/core/browser/buildflags.gni -@@ -9,7 +9,7 @@ declare_args() { - # The legacy password store backend is supported on android but usually disabled - # in favor of a downstream implementation. Important: the support for this flag - # is planned to be removed in November 2024. -- use_login_database_as_backend = !is_android -+ use_login_database_as_backend = true - } - - # Drawables from the downstream clank/ repository are diff --git a/components/password_manager/core/browser/features/password_manager_features_util.cc b/components/password_manager/core/browser/features/password_manager_features_util.cc --- a/components/password_manager/core/browser/features/password_manager_features_util.cc +++ b/components/password_manager/core/browser/features/password_manager_features_util.cc diff --git a/build/patches/User-agent-customization.patch b/build/patches/User-agent-customization.patch index f27bf351..b17dc8cc 100644 --- a/build/patches/User-agent-customization.patch +++ b/build/patches/User-agent-customization.patch @@ -56,7 +56,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webview/browser/aw_content_browser_client.cc --- a/android_webview/browser/aw_content_browser_client.cc +++ b/android_webview/browser/aw_content_browser_client.cc -@@ -228,7 +228,7 @@ base::WeakPtr GetAsyncCheckTracker( +@@ -197,7 +197,7 @@ base::WeakPtr GetAsyncCheckTracker( } // anonymous namespace std::string GetProduct() { @@ -92,7 +92,7 @@ diff --git a/base/base_switches.h b/base/base_switches.h diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -639,6 +639,8 @@ chrome_java_resources = [ +@@ -653,6 +653,8 @@ chrome_java_resources = [ "java/res/xml/search_widget_info.xml", "java/res/xml/tracing_preferences.xml", "java/res/xml/unified_account_settings_preferences.xml", @@ -104,7 +104,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -899,6 +899,7 @@ chrome_java_sources = [ +@@ -908,6 +908,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/payments/ui/DimmingDialog.java", "java/src/org/chromium/chrome/browser/payments/ui/LineItem.java", "java/src/org/chromium/chrome/browser/payments/ui/PaymentAppComparator.java", @@ -271,7 +271,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -2657,6 +2657,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity +@@ -2716,6 +2716,7 @@ public abstract class ChromeActivity extends AsyncInitializationActivity TabUtils.switchUserAgent( currentTab, usingDesktopUserAgent, @@ -282,18 +282,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeBrowserInitializer.java -@@ -23,6 +23,7 @@ import org.chromium.chrome.browser.profiles.ProfileManager; - import org.chromium.chrome.browser.signin.SigninCheckerProvider; +@@ -24,6 +24,7 @@ import org.chromium.chrome.browser.signin.SigninCheckerProvider; import org.chromium.components.background_task_scheduler.BackgroundTaskSchedulerFactory; import org.chromium.content_public.browser.BrowserStartupController; + import org.chromium.content_public.browser.BrowserStartupController.StartupMetrics; +import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl; import java.util.ArrayList; import java.util.List; -@@ -244,11 +245,13 @@ public class ChromeBrowserInitializer { +@@ -245,11 +246,13 @@ public class ChromeBrowserInitializer { @Override - public void onSuccess() { + public void onSuccess(@Nullable StartupMetrics metrics) { + PrivacyPreferencesManagerImpl.getInstance().updateOverrideUserAgent(); tasks.start(false); } @@ -559,7 +559,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesktopUtils.java -@@ -132,6 +132,7 @@ public class RequestDesktopUtils { +@@ -142,6 +142,7 @@ public class RequestDesktopUtils { */ public static void setRequestDesktopSiteContentSettingsForUrl( Profile profile, GURL url, boolean useDesktopUserAgent) { @@ -570,7 +570,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesk diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java -@@ -81,6 +81,9 @@ import org.chromium.components.autofill.AutofillProvider; +@@ -82,6 +82,9 @@ import org.chromium.components.autofill.AutofillProvider; import org.chromium.components.autofill.AutofillProviderUMA; import org.chromium.components.autofill.AutofillSelectionActionMenuDelegate; import org.chromium.components.autofill.AutofillSelectionMenuItemHelper; @@ -580,7 +580,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils; import org.chromium.components.embedder_support.contextmenu.ContextMenuPopulatorFactory; import org.chromium.components.embedder_support.util.UrlConstants; -@@ -123,6 +126,9 @@ import org.chromium.chrome.browser.preferences.Pref; +@@ -124,6 +127,9 @@ import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.profiles.ProfileManager; import org.chromium.components.user_prefs.UserPrefs; @@ -590,7 +590,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav /** * Implementation of the interface {@link Tab}. Contains and manages a {@link ContentView}. This * class is not intended to be extended. -@@ -2195,9 +2201,6 @@ class TabImpl implements Tab { +@@ -2196,9 +2202,6 @@ class TabImpl implements Tab { } if (mWebContents != null) { @@ -600,7 +600,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav mWebContents.getNavigationController().loadIfNecessary(); } mIsBeingRestored = true; -@@ -2592,6 +2595,11 @@ class TabImpl implements Tab { +@@ -2594,6 +2597,11 @@ class TabImpl implements Tab { url = webContents.getVisibleUrl(); } @@ -609,10 +609,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav + else if (mUserAgent == TabUserAgent.DESKTOP) + return UserAgentOverrideOption.TRUE; + - CommandLine commandLine = CommandLine.getInstance(); - // For --request-desktop-sites, always override the user agent. - boolean alwaysRequestDesktopSite = -@@ -2633,7 +2641,7 @@ class TabImpl implements Tab { + boolean shouldRequestDesktopSite = + RequestDesktopUtils.shouldOverrideDesktopSite(mProfile, url, getContext()); + +@@ -2623,7 +2631,7 @@ class TabImpl implements Tab { } boolean usingDesktopUserAgent = getWebContents().getNavigationController().getUseDesktopUserAgent(); @@ -621,7 +621,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav } /** Sets the TabLaunchType for tabs launched with an unset launch type. */ -@@ -2774,6 +2782,54 @@ class TabImpl implements Tab { +@@ -2771,6 +2779,54 @@ class TabImpl implements Tab { /* allowDialog= */ false); } @@ -922,15 +922,15 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager_impl diff --git a/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.cc b/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.cc --- a/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.cc +++ b/chrome/browser/content_settings/request_desktop_site_web_contents_observer_android.cc -@@ -9,6 +9,7 @@ - #include "chrome/browser/content_settings/host_content_settings_map_factory.h" +@@ -10,6 +10,7 @@ #include "chrome/browser/flags/android/chrome_feature_list.h" + #include "chrome/browser/preferences/android/chrome_shared_preferences.h" #include "chrome/browser/profiles/profile.h" +#include "chrome/browser/ui/android/tab_model/tab_model.h" #include "chrome/common/chrome_switches.h" #include "components/content_settings/core/common/content_settings_utils.h" #include "components/content_settings/core/common/pref_names.h" -@@ -36,6 +37,7 @@ RequestDesktopSiteWebContentsObserverAndroid:: +@@ -37,6 +38,7 @@ RequestDesktopSiteWebContentsObserverAndroid:: host_content_settings_map_ = HostContentSettingsMapFactory::GetForProfile(profile); pref_service_ = profile->GetPrefs(); @@ -938,7 +938,7 @@ diff --git a/chrome/browser/content_settings/request_desktop_site_web_contents_o } RequestDesktopSiteWebContentsObserverAndroid:: -@@ -50,6 +52,15 @@ void RequestDesktopSiteWebContentsObserverAndroid::DidStartNavigation( +@@ -51,6 +53,15 @@ void RequestDesktopSiteWebContentsObserverAndroid::DidStartNavigation( return; } @@ -971,12 +971,12 @@ diff --git a/chrome/browser/content_settings/request_desktop_site_web_contents_o raw_ptr pref_service_ = nullptr; + raw_ptr tab_android_ = nullptr; - WEB_CONTENTS_USER_DATA_KEY_DECL(); - }; + // The display size threshold in inches for enabling desktop user agent on + // connected displays. diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java -@@ -1192,8 +1192,6 @@ public final class ChromePreferenceKeys { +@@ -1212,8 +1212,6 @@ public final class ChromePreferenceKeys { SIGNIN_PROMO_NTP_LAST_SHOWN_TIME, SYNC_PROMO_TOTAL_SHOW_COUNT, SEARCH_RESUMPTION_MODULE_COLLAPSE_ON_NTP, @@ -1058,7 +1058,7 @@ diff --git a/chrome/browser/tabwindow/internal/android/java/src/org/chromium/chr 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 -@@ -235,6 +235,32 @@ CHAR_LIMIT guidelines: +@@ -238,6 +238,32 @@ CHAR_LIMIT guidelines: Visit help page @@ -1094,7 +1094,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -1915,6 +1915,14 @@ inline constexpr char kNaviOnboardGroup[] = "browser.navi_onboard_group"; +@@ -1899,6 +1899,14 @@ inline constexpr char kNaviOnboardGroup[] = "browser.navi_onboard_group"; inline constexpr char kHadThreeConsecutiveNotificationPermissionDenies[] = "profile.content_settings.had_three_consecutive_denies.notifications"; @@ -1245,7 +1245,7 @@ diff --git a/content/browser/renderer_host/navigation_controller_android.cc b/co const JavaParamRef& j_initiator_origin, jboolean has_user_gesture, jboolean should_clear_history_list, -@@ -323,6 +324,9 @@ base::android::ScopedJavaLocalRef NavigationControllerAndroid::LoadUrl( +@@ -320,6 +321,9 @@ base::android::ScopedJavaLocalRef NavigationControllerAndroid::LoadUrl( params.navigation_ui_data = std::move(navigation_ui_data); @@ -1269,7 +1269,7 @@ diff --git a/content/browser/renderer_host/navigation_controller_android.h b/con diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc -@@ -3657,6 +3657,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( +@@ -3707,6 +3707,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( #if BUILDFLAG(IS_CHROMEOS) switches::kSchedulerBoostUrgent, #endif @@ -1288,7 +1288,7 @@ diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser #include "base/check_op.h" #include "base/command_line.h" #include "base/containers/contains.h" -@@ -2439,8 +2440,6 @@ void WebContentsImpl::SetUserAgentOverride( +@@ -2451,8 +2452,6 @@ void WebContentsImpl::SetUserAgentOverride( OPTIONAL_TRACE_EVENT2("content", "WebContentsImpl::SetUserAgentOverride", "ua_override", ua_override.ua_string_override, "override_in_new_tabs", override_in_new_tabs); @@ -1297,7 +1297,7 @@ diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser if (GetUserAgentOverride() == ua_override) { return; -@@ -3746,6 +3745,9 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences( +@@ -3764,6 +3763,9 @@ const blink::web_pref::WebPreferences WebContentsImpl::ComputeWebPreferences( #else prefs.viewport_meta_enabled = false; #endif @@ -1330,7 +1330,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/frameh diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc -@@ -859,7 +859,6 @@ void RenderThreadImpl::InitializeRenderer( +@@ -858,7 +858,6 @@ void RenderThreadImpl::InitializeRenderer( uint64_t trace_id) { TRACE_EVENT("navigation", "RenderThreadImpl::InitializeRenderer", perfetto::TerminatingFlow::Global(trace_id));