From 50c520687c5169533d1240360b4ee1cab4e4858e Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Tue, 12 Nov 2024 10:01:56 +0100 Subject: [PATCH] [REBASE] Patches for 131 (need revision) --- .../AImageReader-CFI-crash-mitigations.patch | 30 +- build/patches/Add-cromite-flags-support.patch | 588 ++++++++---------- .../Add-option-to-disable-snapshots.patch | 32 +- ...d-setting-to-invert-tap-and-long-tap.patch | 68 +- .../Disable-conversion-measurement-api.patch | 28 +- .../Enable-ImprovedBookmarks-by-default.patch | 17 +- .../Experimental-user-scripts-support.patch | 80 +-- .../Use-browser-navigation-handler.patch | 54 +- .../eyeo-beta-118.0.5993.48-base.patch | 34 +- 9 files changed, 434 insertions(+), 497 deletions(-) diff --git a/build/patches/AImageReader-CFI-crash-mitigations.patch b/build/patches/AImageReader-CFI-crash-mitigations.patch index 33f76f52..c1ea588a 100644 --- a/build/patches/AImageReader-CFI-crash-mitigations.patch +++ b/build/patches/AImageReader-CFI-crash-mitigations.patch @@ -22,7 +22,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- base/android/android_image_reader_compat.cc | 16 ++++++++++++++++ base/android/android_image_reader_compat.h | 14 ++++++++++++++ - chrome/browser/flag-metadata.json | 6 +++--- + chrome/browser/flag-metadata.json | 4 ++++ .../AImageReader-CFI-crash-mitigations.inc | 4 ++++ .../AImageReader-CFI-crash-mitigations.inc | 1 + gpu/config/gpu_driver_bug_list.json | 16 ++++++++++++++++ @@ -31,8 +31,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html gpu/config/gpu_util.cc | 8 ++++++++ gpu/config/gpu_workaround_list.txt | 1 + gpu/ipc/service/gpu_init.cc | 8 ++++++++ - gpu/ipc/service/stream_texture_android.cc | 11 ++++++++++- - 12 files changed, 87 insertions(+), 4 deletions(-) + gpu/ipc/service/stream_texture_android.cc | 10 +++++++++- + 12 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 cromite_flags/media/base/media_switches_cc/AImageReader-CFI-crash-mitigations.inc create mode 100644 cromite_flags/media/base/media_switches_h/AImageReader-CFI-crash-mitigations.inc @@ -90,13 +90,11 @@ diff --git a/base/android/android_image_reader_compat.h b/base/android/android_i diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json +++ b/chrome/browser/flag-metadata.json -@@ -3430,9 +3430,9 @@ +@@ -3401,6 +3401,10 @@ + "name": "enable-identity-in-auth-error", + "owners": [ "jlebel@chromium.org", "chrome-signin-team@google.com" ], "expiry_milestone": 135 - }, - { -- "name": "enable-image-reader", -- "owners": [ "vikassoni@chromium.org", "liberato@chromium.org" ], -- "expiry_milestone": 125 ++ },{ + "name": "enable-image-reader", // Bromite: do not expire + "owners": [ "vikassoni@chromium.org", "liberato@chromium.org" ], // flag + "expiry_milestone": -1 @@ -234,19 +232,11 @@ diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc diff --git a/gpu/ipc/service/stream_texture_android.cc b/gpu/ipc/service/stream_texture_android.cc --- a/gpu/ipc/service/stream_texture_android.cc +++ b/gpu/ipc/service/stream_texture_android.cc -@@ -6,6 +6,7 @@ - - #include - -+#include "base/android/android_image_reader_compat.h" - #include "base/android/scoped_hardware_buffer_fence_sync.h" - #include "base/feature_list.h" - #include "base/functional/bind.h" -@@ -49,7 +50,15 @@ std::unique_ptr MakeCurrent( +@@ -50,7 +50,15 @@ std::unique_ptr MakeCurrent( } TextureOwner::Mode GetTextureOwnerMode() { -- return features::IsAImageReaderEnabled() +- return base::android::EnableAndroidImageReader() + const bool a_image_reader_supported = + base::android::AndroidImageReader::GetInstance().IsSupported(); + @@ -254,7 +244,7 @@ diff --git a/gpu/ipc/service/stream_texture_android.cc b/gpu/ipc/service/stream_ + // AImageReader - one for MCVD and other for MediaPlayer here. Merge those 2 + // flags into a single flag. Keeping the 2 flags separate for now since finch + // experiment using this flag is in progress. -+ return a_image_reader_supported && features::IsAImageReaderEnabled() && ++ return a_image_reader_supported && base::android::EnableAndroidImageReader() && + base::FeatureList::IsEnabled(features::kAImageReaderMediaPlayer) ? TextureOwner::Mode::kAImageReaderInsecure : TextureOwner::Mode::kSurfaceTextureInsecure; diff --git a/build/patches/Add-cromite-flags-support.patch b/build/patches/Add-cromite-flags-support.patch index 1e2e0e64..f0b59ee1 100644 --- a/build/patches/Add-cromite-flags-support.patch +++ b/build/patches/Add-cromite-flags-support.patch @@ -15,7 +15,6 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- base/BUILD.gn | 4 +- base/android/feature_map.cc | 5 + - .../base/cached_flags/CachedFlag.java | 8 +- base/feature_list.cc | 76 ++++++++ base/feature_list.h | 72 +++++++- build/android/gyp/java_cpp_features.py | 17 ++ @@ -44,14 +43,17 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../res/xml/accessibility_preferences.xml | 3 +- .../android/java/res/values/attrs.xml | 4 + .../settings/ChromeSwitchPreference.java | 20 +++ + .../components/cached_flags/CachedFlag.java | 8 +- components/components_strings.grd | 1 + .../content_settings/core/common/features.cc | 1 + .../placeholder.txt | 1 + components/flags_ui/flags_state.cc | 54 ++++++ - components/flags_ui/resources/app.html | 40 +++++ - components/flags_ui/resources/app.ts | 41 ++++- - components/flags_ui/resources/experiment.html | 7 +- - components/flags_ui/resources/experiment.ts | 16 ++ + components/flags_ui/resources/app.css | 24 +++ + components/flags_ui/resources/app.html.ts | 28 +++ + components/flags_ui/resources/app.ts | 23 +++ + components/flags_ui/resources/experiment.css | 7 +- + .../flags_ui/resources/experiment.html.ts | 7 +- + components/flags_ui/resources/experiment.ts | 9 +- .../flags_ui/resources/flags_browser_proxy.ts | 5 + .../core/offline_page_feature.cc | 1 + .../offline_pages/core/offline_page_feature.h | 1 + @@ -97,7 +99,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 + - 84 files changed, 787 insertions(+), 22 deletions(-) + 86 files changed, 781 insertions(+), 22 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 @@ -142,7 +144,7 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn sources = [ "allocator/allocator_check.cc", "allocator/allocator_check.h", -@@ -1029,7 +1031,7 @@ component("base") { +@@ -1025,7 +1027,7 @@ component("base") { "//build/config/compiler:wglobal_constructors", ] @@ -154,7 +156,7 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn diff --git a/base/android/feature_map.cc b/base/android/feature_map.cc --- a/base/android/feature_map.cc +++ b/base/android/feature_map.cc -@@ -45,6 +45,11 @@ const Feature* FeatureMap::FindFeatureExposedToJava( +@@ -46,6 +46,11 @@ const Feature* FeatureMap::FindFeatureExposedToJava( static jboolean JNI_FeatureMap_IsEnabled(JNIEnv* env, jlong jfeature_map, std::string& feature_name) { @@ -166,35 +168,10 @@ diff --git a/base/android/feature_map.cc b/base/android/feature_map.cc FeatureMap* feature_map = reinterpret_cast(jfeature_map); const base::Feature* feature = feature_map->FindFeatureExposedToJava(feature_name); -diff --git a/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.java b/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.java ---- a/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.java -+++ b/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.java -@@ -142,7 +142,7 @@ public class CachedFlag extends Flag { - editor.putBoolean(getSharedPreferenceKey(), isEnabledInNative); - } - -- String getSharedPreferenceKey() { -+ public String getSharedPreferenceKey() { - // Create the key only once to avoid String concatenation every flag check. - if (mPreferenceKey == null) { - mPreferenceKey = CachedFlagsSharedPreferences.FLAGS_CACHED.createKey(mFeatureName); -@@ -169,6 +169,12 @@ public class CachedFlag extends Flag { - } - } - -+ public void setValueReturnedOverride(@Nullable Boolean value) { -+ synchronized (ValuesReturned.sBoolValues) { -+ ValuesReturned.sBoolValues.put(getSharedPreferenceKey(), value); -+ } -+ } -+ - /** Create a Map of feature names -> {@link CachedFlag} from multiple lists of CachedFlags. */ - public static Map createCachedFlagMap( - List> allCachedFlagsLists) { diff --git a/base/feature_list.cc b/base/feature_list.cc --- a/base/feature_list.cc +++ b/base/feature_list.cc -@@ -43,6 +43,31 @@ +@@ -42,6 +42,31 @@ namespace base { @@ -226,7 +203,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc namespace { // Pointer to the FeatureList instance singleton that was set via -@@ -470,6 +495,46 @@ bool FeatureList::IsEnabled(const Feature& feature) { +@@ -469,6 +494,46 @@ bool FeatureList::IsEnabled(const Feature& feature) { return g_feature_list_instance->IsFeatureEnabled(feature); } @@ -273,7 +250,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc // static bool FeatureList::IsValidFeatureOrFieldTrialName(std::string_view name) { return IsStringASCII(name) && name.find_first_of(",<*") == std::string::npos; -@@ -716,6 +781,17 @@ void FeatureList::VisitFeaturesAndParams(FeatureVisitor& visitor) { +@@ -739,6 +804,17 @@ void FeatureList::VisitFeaturesAndParams(FeatureVisitor& visitor, void FeatureList::FinalizeInitialization() { DCHECK(!initialized_); @@ -294,7 +271,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 -@@ -170,8 +170,10 @@ enum class FeatureMacroHandshake { kSecret }; +@@ -166,8 +166,10 @@ enum class FeatureMacroHandshake { kSecret }; struct BASE_EXPORT LOGICALLY_CONST Feature { constexpr Feature(const char* name, FeatureState default_state, @@ -307,7 +284,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) { -@@ -198,6 +200,9 @@ struct BASE_EXPORT LOGICALLY_CONST Feature { +@@ -194,6 +196,9 @@ struct BASE_EXPORT LOGICALLY_CONST Feature { // command line switch. const FeatureState default_state; @@ -317,7 +294,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h private: friend class FeatureList; -@@ -473,6 +478,11 @@ class BASE_EXPORT FeatureList { +@@ -469,6 +474,11 @@ class BASE_EXPORT FeatureList { // instance, which is checked in builds with DCHECKs enabled. static bool IsEnabled(const Feature& feature); @@ -329,7 +306,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 -@@ -738,4 +748,62 @@ class BASE_EXPORT FeatureList { +@@ -734,4 +744,62 @@ class BASE_EXPORT FeatureList { } // namespace base @@ -456,21 +433,21 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s @@ -18,6 +18,7 @@ import org.chromium.chrome.R; import org.chromium.chrome.browser.image_descriptions.ImageDescriptionsController; import org.chromium.chrome.browser.preferences.Pref; - import org.chromium.chrome.browser.settings.SettingsLauncherFactory; + import org.chromium.chrome.browser.settings.SettingsNavigationFactory; +import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment; import org.chromium.components.browser_ui.accessibility.AccessibilitySettingsDelegate; import org.chromium.components.browser_ui.accessibility.FontSizePrefs; import org.chromium.components.browser_ui.accessibility.FontSizePrefs.FontSizePrefsObserver; -@@ -36,7 +37,7 @@ import org.chromium.content_public.browser.ContentFeatureList; +@@ -37,7 +38,7 @@ import org.chromium.content_public.browser.ContentFeatureList; import org.chromium.content_public.browser.ContentFeatureMap; /** Fragment to keep track of all the accessibility related preferences. */ -public class AccessibilitySettings extends PreferenceFragmentCompat +public class AccessibilitySettings extends ChromeBaseSettingsFragment - implements SettingsPage, Preference.OnPreferenceChangeListener { + implements EmbeddableSettingsPage, Preference.OnPreferenceChangeListener { public static final String PREF_TEXT_SCALE = "text_scale"; public static final String PREF_PAGE_ZOOM_DEFAULT_ZOOM = "page_zoom_default_zoom"; -@@ -99,7 +100,7 @@ public class AccessibilitySettings extends PreferenceFragmentCompat +@@ -101,7 +102,7 @@ public class AccessibilitySettings extends PreferenceFragmentCompat } @Override @@ -494,7 +471,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/settin diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -79,7 +79,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -80,7 +80,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment private final ObservableSupplierImpl mPageTitle = new ObservableSupplierImpl<>(); @Override @@ -559,8 +536,8 @@ 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; -@@ -31,7 +32,9 @@ import org.chromium.base.BuildInfo; - import org.chromium.base.Callback; +@@ -32,7 +33,9 @@ import org.chromium.base.Callback; + import org.chromium.base.CallbackUtils; import org.chromium.base.Log; import org.chromium.base.metrics.RecordHistogram; +import org.chromium.base.supplier.Supplier; @@ -569,7 +546,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.base.supplier.OneshotSupplierImpl; import org.chromium.chrome.R; import org.chromium.chrome.browser.ChromeBaseAppCompatActivity; -@@ -40,12 +43,14 @@ import org.chromium.chrome.browser.back_press.SecondaryActivityBackPressUma.Seco +@@ -41,12 +44,14 @@ import org.chromium.chrome.browser.back_press.SecondaryActivityBackPressUma.Seco import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.init.ChromeBrowserInitializer; @@ -584,7 +561,7 @@ 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; -@@ -82,6 +87,40 @@ import java.util.Locale; +@@ -83,6 +88,40 @@ import java.util.Locale; */ public class SettingsActivity extends ChromeBaseAppCompatActivity implements PreferenceFragmentCompat.OnPreferenceStartFragmentCallback, SnackbarManageable { @@ -625,7 +602,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"; -@@ -135,7 +174,8 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -141,7 +180,8 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity mProfile, mSnackbarManagerSupplier, mBottomSheetControllerSupplier, @@ -638,7 +615,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin 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 -@@ -380,6 +380,10 @@ using flags_ui::kOsLinux; +@@ -388,6 +388,10 @@ using flags_ui::kOsLinux; using flags_ui::kOsMac; using flags_ui::kOsWin; @@ -649,7 +626,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc namespace about_flags { namespace { -@@ -4207,6 +4211,10 @@ const FeatureEntry::FeatureVariation +@@ -4210,6 +4214,10 @@ const FeatureEntry::FeatureVariation 1, nullptr}, }; @@ -660,7 +637,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. -@@ -4233,6 +4241,9 @@ const FeatureEntry::FeatureVariation +@@ -4236,6 +4244,9 @@ const FeatureEntry::FeatureVariation const FeatureEntry kFeatureEntries[] = { // Include generated flags for flag unexpiry; see //docs/flag_expiry.md and // //tools/flags/generate_unexpire_flags.py. @@ -673,7 +650,7 @@ 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 -@@ -450,4 +450,5 @@ BASE_FEATURE(kRemovalOfIWAsFromTabCapture, +@@ -392,4 +392,5 @@ BASE_FEATURE(kRemovalOfIWAsFromTabCapture, "RemovalOfIWAsFromTabCapture", base::FEATURE_ENABLED_BY_DEFAULT); @@ -689,7 +666,7 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn + sources += [ + "android/java/src/org/chromium/chrome/browser/flags/cromite/include_all_directory.java", + ] - public_deps = [ "//base:base_cached_flags_java" ] + public_deps = [ "//components/cached_flags:java" ] deps = [ + ":java_cromite_cached_flags", "//base:base_java", @@ -721,7 +698,7 @@ 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 -@@ -1074,5 +1074,6 @@ BASE_FEATURE(kWebApkAllowIconUpdate, +@@ -1095,5 +1095,6 @@ BASE_FEATURE(kWebApkAllowIconUpdate, "WebApkAllowIconUpdate", base::FEATURE_DISABLED_BY_DEFAULT); @@ -731,7 +708,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 -@@ -214,6 +214,7 @@ constexpr base::FeatureParam kQuickDeleteAndroidSurveyTriggerId( +@@ -222,6 +222,7 @@ constexpr base::FeatureParam kQuickDeleteAndroidSurveyTriggerId( "trigger_id", /*default_value=*/""); @@ -742,9 +719,9 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser 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 -@@ -16,6 +16,10 @@ import org.chromium.base.cached_flags.DoubleCachedFieldTrialParameter; - import org.chromium.base.cached_flags.IntCachedFieldTrialParameter; - import org.chromium.base.cached_flags.StringCachedFieldTrialParameter; +@@ -18,6 +18,10 @@ import org.chromium.components.cached_flags.DoubleCachedFieldTrialParameter; + import org.chromium.components.cached_flags.IntCachedFieldTrialParameter; + import org.chromium.components.cached_flags.StringCachedFieldTrialParameter; +import org.chromium.chrome.browser.flags.cromite.CromiteCachedFlagImplBase; +import java.util.Arrays; @@ -753,7 +730,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f import java.util.List; import java.util.Map; -@@ -732,7 +736,7 @@ public abstract class ChromeFeatureList { +@@ -765,7 +769,7 @@ public abstract class ChromeFeatureList { public static final CachedFlag sWebApkMinShellApkVersion = newCachedFlag(WEB_APK_MIN_SHELL_APK_VERSION, true); @@ -762,8 +739,8 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f List.of( sAccountReauthenticationRecentTimeWindow, sAndroidAppIntegration, -@@ -828,6 +832,13 @@ public abstract class ChromeFeatureList { - sVerticalAutomotiveBackButtonToolbar, +@@ -866,6 +870,13 @@ public abstract class ChromeFeatureList { + sUseLibunwindstackNativeUnwinderAndroid, sWebApkMinShellApkVersion); + private static List concatenateLists(List... collections) { @@ -856,7 +833,7 @@ 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.profiles.Profile; - import org.chromium.components.browser_ui.settings.SettingsPage; + import org.chromium.components.browser_ui.settings.EmbeddableSettingsPage; +import android.os.Bundle; +import androidx.preference.Preference; @@ -868,7 +845,7 @@ diff --git a/chrome/browser/settings/android/java/src/org/chromium/chrome/browse * Base class for settings in Chrome. * @@ -22,6 +29,49 @@ public abstract class ChromeBaseSettingsFragment extends PreferenceFragmentCompa - implements SettingsPage, ProfileDependentSetting { + implements EmbeddableSettingsPage, ProfileDependentSetting { private Profile mProfile; + private Supplier mRequireRestartDelegateSupplier; @@ -951,7 +928,7 @@ 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 -@@ -486,4 +486,5 @@ BASE_FEATURE(kPageSpecificDataDialogRelatedInstalledAppsSection, +@@ -458,4 +458,5 @@ BASE_FEATURE(kPageSpecificDataDialogRelatedInstalledAppsSection, "PageSpecificDataDialogRelatedInstalledAppsSection", base::FEATURE_DISABLED_BY_DEFAULT); @@ -960,7 +937,7 @@ diff --git a/chrome/browser/ui/ui_features.cc b/chrome/browser/ui/ui_features.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 -@@ -1756,4 +1756,5 @@ BASE_FEATURE(kPeriodicLogUploadMigration, +@@ -1737,4 +1737,5 @@ BASE_FEATURE(kPeriodicLogUploadMigration, base::FEATURE_DISABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -1037,6 +1014,31 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium } /** +diff --git a/components/cached_flags/android/java/src/org/chromium/components/cached_flags/CachedFlag.java b/components/cached_flags/android/java/src/org/chromium/components/cached_flags/CachedFlag.java +--- a/components/cached_flags/android/java/src/org/chromium/components/cached_flags/CachedFlag.java ++++ b/components/cached_flags/android/java/src/org/chromium/components/cached_flags/CachedFlag.java +@@ -147,7 +147,7 @@ public class CachedFlag extends Flag { + editor.putBoolean(getSharedPreferenceKey(), isEnabledInNative); + } + +- String getSharedPreferenceKey() { ++ public String getSharedPreferenceKey() { + // Create the key only once to avoid String concatenation every flag check. + if (mPreferenceKey == null) { + mPreferenceKey = CachedFlagsSharedPreferences.FLAGS_CACHED.createKey(mFeatureName); +@@ -155,6 +155,12 @@ public class CachedFlag extends Flag { + return mPreferenceKey; + } + ++ public void setValueReturnedOverride(@Nullable Boolean value) { ++ synchronized (ValuesReturned.sBoolValues) { ++ ValuesReturned.sBoolValues.put(getSharedPreferenceKey(), value); ++ } ++ } ++ + /** Create a Map of feature names -> {@link CachedFlag} from multiple lists of CachedFlags. */ + public static Map createCachedFlagMap( + List> allCachedFlagsLists) { diff --git a/components/components_strings.grd b/components/components_strings.grd --- a/components/components_strings.grd +++ b/components/components_strings.grd @@ -1051,7 +1053,7 @@ 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 -@@ -109,5 +109,6 @@ BASE_FEATURE(kContentSettingsPartitioning, +@@ -113,5 +113,6 @@ BASE_FEATURE(kContentSettingsPartitioning, "ContentSettingsPartitioning", base::FEATURE_DISABLED_BY_DEFAULT); @@ -1149,101 +1151,141 @@ diff --git a/components/flags_ui/flags_state.cc b/components/flags_ui/flags_stat for (const auto& entry : feature_entries_) { DCHECK(entry.IsValid()); if (!(entry.supported_platforms & platform_mask)) -diff --git a/components/flags_ui/resources/app.html b/components/flags_ui/resources/app.html ---- a/components/flags_ui/resources/app.html -+++ b/components/flags_ui/resources/app.html -@@ -473,7 +473,32 @@ - padding-top: 1.5rem; - } +diff --git a/components/flags_ui/resources/app.css b/components/flags_ui/resources/app.css +--- a/components/flags_ui/resources/app.css ++++ b/components/flags_ui/resources/app.css +@@ -383,3 +383,27 @@ cr-tabs { + padding-top: 1.5rem; } -+ #appcontainer { -+ overflow-y: scroll; -+ } -+ .cromite #header { -+ display: none; -+ } -+ .cromite .blurb-container { -+ display: none; -+ } -+ .cromite #tabs { -+ display: none; -+ } -+ .cromite #tab-content-available { -+ display: none; -+ } -+ .cromite #tab-content-unavailable { -+ display: none; -+ } -+ .cromite #tab-content-cromite { -+ display: block !important; -+ } -+ .cromite .section-header-title { -+ display: none; -+ } - + } ++#appcontainer { ++ overflow-y: scroll; ++} ++.cromite #header { ++ display: none; ++} ++.cromite .blurb-container { ++ display: none; ++} ++.cromite #tabs { ++ display: none; ++} ++.cromite #tab-content-available { ++ display: none; ++} ++.cromite #tab-content-unavailable { ++ display: none; ++} ++.cromite #tab-content-cromite { ++ display: block !important; ++} ++.cromite .section-header-title { ++ display: none; ++} +diff --git a/components/flags_ui/resources/app.html.ts b/components/flags_ui/resources/app.html.ts +--- a/components/flags_ui/resources/app.html.ts ++++ b/components/flags_ui/resources/app.html.ts +@@ -9,6 +9,7 @@ import type {AppElement} from './app.js'; + export function getHtml(this: AppElement) { + // clang-format off + return html` +
+ `; + // clang-format on + } diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resources/app.ts --- a/components/flags_ui/resources/app.ts +++ b/components/flags_ui/resources/app.ts -@@ -194,6 +194,7 @@ export class FlagsAppElement extends CustomElement { - return getTemplate(); - } +@@ -128,6 +128,7 @@ export class FlagsAppElement extends CrLitElement { + // + loadTimeData.getString('unavailable'), + // ++ "Cromite", + ]; + protected selectedTabIndex_: number = 0; + +@@ -149,8 +150,11 @@ export class FlagsAppElement extends CrLitElement { + + protected defaultFeatures: Feature[] = []; + protected nonDefaultFeatures: Feature[] = []; ++ protected defaultCromiteFeatures: Feature[] = []; ++ protected nonDefaultCromiteFeatures: Feature[] = []; + protected searching: boolean = false; + private onlyCromiteFlags: boolean = false; private announceStatusDelayMs: number = 100; private featuresResolver: PromiseResolver = new PromiseResolver(); - private flagSearch: FlagSearch = new FlagSearch(this); -@@ -209,6 +210,10 @@ export class FlagsAppElement extends CustomElement { - // + private flagSearch: FlagSearch|null = null; +@@ -184,10 +188,24 @@ export class FlagsAppElement extends CrLitElement { + if (changedPrivateProperties.has('data')) { + const defaultFeatures: Feature[] = []; + const nonDefaultFeatures: Feature[] = []; ++ const defaultCromiteFeatures: Feature[] = []; ++ const nonDefaultCromiteFeatures: Feature[] = []; - tabs: Tab[] = [ -+ { -+ tabEl: this.getRequiredElement('#tab-cromite')!, -+ panelEl: this.getRequiredElement('#tab-content-cromite')!, -+ }, - { - tabEl: this.getRequiredElement('#tab-available'), - panelEl: this.getRequiredElement('#tab-content-available'), -@@ -222,6 +227,11 @@ export class FlagsAppElement extends CustomElement { - ]; ++ if (this.onlyCromiteFlags) { ++ this.data.supportedFeatures = ++ this.data.supportedFeatures.filter(item => item.is_new); ++ } ++ this.data.supportedFeatures.forEach( ++ f => (f.is_cromite ++ ? (f.is_default ? defaultCromiteFeatures : nonDefaultCromiteFeatures).push(f) ++ : undefined)); ++ this.data.supportedFeatures.sort( ++ (a,b) => (a.internal_name.localeCompare(b.internal_name))); + this.data.supportedFeatures.forEach( + f => (f.is_default ? defaultFeatures : nonDefaultFeatures).push(f)); + ++ this.defaultCromiteFeatures = defaultCromiteFeatures; ++ this.nonDefaultCromiteFeatures = nonDefaultCromiteFeatures; + this.defaultFeatures = defaultFeatures; + this.nonDefaultFeatures = nonDefaultFeatures; + } +@@ -228,6 +246,11 @@ export class FlagsAppElement extends CrLitElement { + override connectedCallback() { + super.connectedCallback(); - connectedCallback() { + if (location.pathname == '/cromite') { + this.onlyCromiteFlags = true; + this.getRequiredElement("#appcontainer").classList.add('cromite'); @@ -1252,169 +1294,83 @@ diff --git a/components/flags_ui/resources/app.ts b/components/flags_ui/resource // const pathname = new URL(window.location.href).pathname; this.isFlagsDeprecatedUrl_ = -@@ -306,20 +316,29 @@ export class FlagsAppElement extends CustomElement { - const defaultFeatures: Feature[] = []; - const nonDefaultFeatures: Feature[] = []; +diff --git a/components/flags_ui/resources/experiment.css b/components/flags_ui/resources/experiment.css +--- a/components/flags_ui/resources/experiment.css ++++ b/components/flags_ui/resources/experiment.css +@@ -79,6 +79,11 @@ + resize: none; + } -+ if (this.onlyCromiteFlags) { -+ experimentalFeaturesData.supportedFeatures = -+ experimentalFeaturesData.supportedFeatures.filter(item => item.is_new); -+ } -+ experimentalFeaturesData.supportedFeatures.sort( -+ (a,b) => (a.internal_name.localeCompare(b.internal_name))); - experimentalFeaturesData.supportedFeatures.forEach( - f => (f.is_default ? defaultFeatures : nonDefaultFeatures).push(f)); - - this.renderExperiments( - nonDefaultFeatures, -- this.getRequiredElement('#non-default-experiments')); -+ this.getRequiredElement('#non-default-experiments'), -+ this.getRequiredElement('#non-default-cromite-experiments'), false); - - this.renderExperiments( -- defaultFeatures, this.getRequiredElement('#default-experiments')); -+ defaultFeatures, this.getRequiredElement('#default-experiments'), -+ this.getRequiredElement('#cromite-experiments'), false); - - // - this.renderExperiments( - experimentalFeaturesData.unsupportedFeatures, -- this.getRequiredElement('#unavailable-experiments'), true); -+ this.getRequiredElement('#unavailable-experiments'), -+ undefined, true); - // - - this.showRestartToast(experimentalFeaturesData.needsRestart); -@@ -438,16 +457,23 @@ export class FlagsAppElement extends CustomElement { - } - - private renderExperiments( -- features: Feature[], container: HTMLElement, unsupported = false) { -+ features: Feature[], container: HTMLElement, -+ cromiteContainer: HTMLElement | undefined, unsupported: boolean = false) { - const fragment = document.createDocumentFragment(); -+ const fragmentCromite = document.createDocumentFragment(); -+ const show_permalink = !document.body.classList.contains('cromite'); - for (const feature of features) { - const experiment = document.createElement('flags-experiment'); - - experiment.toggleAttribute('unsupported', unsupported); -+ experiment.permalink = show_permalink; - experiment.data = feature; - experiment.id = feature.internal_name; - - const select = experiment.getSelect(); -+ // if (select && feature.is_cromite && !feature.is_new) { -+ // select.disabled = true; -+ // } - if (select) { - experiment.addEventListener('select-change', e => { - e.preventDefault(); -@@ -471,9 +497,14 @@ export class FlagsAppElement extends CustomElement { - this.showRestartToast(true); - }); - } -- fragment.appendChild(experiment); -+ if (feature.is_cromite) -+ fragmentCromite.appendChild(experiment); -+ else -+ fragment.appendChild(experiment); - } - container.replaceChildren(fragment); -+ if (!!cromiteContainer) -+ cromiteContainer.replaceChildren(fragmentCromite); - } - - /** -diff --git a/components/flags_ui/resources/experiment.html b/components/flags_ui/resources/experiment.html ---- a/components/flags_ui/resources/experiment.html -+++ b/components/flags_ui/resources/experiment.html -@@ -119,6 +119,11 @@ - color: white; - } - -+ .experiment-on select { -+ background: #dddddd; -+ color: var(--link-color); -+ } ++.experiment-on select { ++ background: #dddddd; ++ color: var(--link-color); ++} + - .experiment-switched option { - background: white; - color: var(--link-color); -@@ -164,7 +169,6 @@ - .experiment .experiment-actions { - max-width: 100%; - padding-top: 12px; -- text-align: left; /* csschecker-disable-line left-right */ - width: 100%; - } + select { + background: white; + border: 1px solid var(--link-color); +@@ -172,7 +177,6 @@ input { + .experiment .experiment-actions { + max-width: 100%; + padding-top: 12px; +- text-align: left; /* csschecker-disable-line left-right */ + width: 100%; + } -@@ -172,7 +176,6 @@ - .body { - overflow: hidden; - text-overflow: ellipsis; -- white-space: nowrap; - width: 100%; - } +@@ -180,7 +184,6 @@ input { + .body { + overflow: hidden; + text-overflow: ellipsis; +- white-space: nowrap; + width: 100%; + } +diff --git a/components/flags_ui/resources/experiment.html.ts b/components/flags_ui/resources/experiment.html.ts +--- a/components/flags_ui/resources/experiment.html.ts ++++ b/components/flags_ui/resources/experiment.html.ts +@@ -10,7 +10,8 @@ export function getHtml(this: ExperimentElement) { + // clang-format off + return html` +
+-
++
+
+ ${this.showingSearchHit_? html` +

+ ${this.feature_.options!.map(option => html` + + `)} + diff --git a/components/flags_ui/resources/experiment.ts b/components/flags_ui/resources/experiment.ts --- a/components/flags_ui/resources/experiment.ts +++ b/components/flags_ui/resources/experiment.ts -@@ -61,11 +61,16 @@ function resetHighlights(element: HTMLElement) { - - export class FlagsExperimentElement extends CustomElement { - private feature_: Feature|null = null; -+ private permalink_: boolean = true; - - static override get template() { - return getTemplate(); +@@ -127,12 +127,15 @@ export class ExperimentElement extends CrLitElement { } -+ set permalink(visible: boolean) { -+ this.permalink_ = visible; -+ } -+ - set data(feature: Feature) { - this.feature_ = feature; + protected getExperimentTitle_(): string { ++ const suffix = ++ this.feature_.is_cromite && this.feature_.is_new ++ ? " (Cromite flag)" : ""; + if (this.showEnableDisableSelect_()) { +- return this.isDefault_ ? '' : +- loadTimeData.getString('experiment-enabled'); ++ return (this.isDefault_ ? '' : ++ loadTimeData.getString('experiment-enabled')) + suffix; + } -@@ -77,12 +82,18 @@ export class FlagsExperimentElement extends CustomElement { - 'experiment-default', feature.is_default); - experimentDefault.classList.toggle( - 'experiment-switched', !feature.is_default); -+ experimentDefault.classList.toggle( -+ 'cromite', feature.is_cromite && feature.is_new); -+ experimentDefault.classList.toggle( -+ 'experiment-on', !!feature.is_default_value_on); - - const experimentName = this.getRequiredElement('.experiment-name'); - experimentName.id = `${feature.internal_name}_name`; - experimentName.title = - feature.is_default ? '' : loadTimeData.getString('experiment-enabled'); - experimentName.textContent = feature.name; -+ if (feature.is_cromite && feature.is_new) -+ experimentName.textContent += " (Cromite flag)" - - const description = this.getRequiredElement('.description'); - description.textContent = feature.description; -@@ -134,6 +145,7 @@ export class FlagsExperimentElement extends CustomElement { - const permalink = this.getRequiredElement('.permalink'); - permalink.href = `#${feature.internal_name}`; - permalink.textContent = `#${feature.internal_name}`; -+ if (!this.permalink_) permalink.hidden = true; - - const smallScreenCheck = window.matchMedia('(max-width: 480px)'); - // Toggling of experiment description overflow content on smaller screens. -@@ -162,6 +174,10 @@ export class FlagsExperimentElement extends CustomElement { - const optionEl = document.createElement('option'); - optionEl.selected = option.selected; - optionEl.textContent = option.description; -+ if (option.description == "Default" && -+ feature.default_value !== undefined) { -+ optionEl.textContent += " (" + feature.default_value + ")"; -+ } - experimentSelect.appendChild(optionEl); - } +- return ''; ++ return suffix; + } + protected getPlatforms_(): string { diff --git a/components/flags_ui/resources/flags_browser_proxy.ts b/components/flags_ui/resources/flags_browser_proxy.ts --- a/components/flags_ui/resources/flags_browser_proxy.ts +++ b/components/flags_ui/resources/flags_browser_proxy.ts @@ -1453,7 +1409,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 -@@ -169,4 +169,5 @@ BASE_FEATURE(kEncryptAllPasswordsWithOSCryptAsync, +@@ -181,4 +181,5 @@ BASE_FEATURE(kEncryptAllPasswordsWithOSCryptAsync, "EncryptAllPasswordsWithOSCryptAsync", base::FEATURE_DISABLED_BY_DEFAULT); @@ -1462,10 +1418,10 @@ 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 -@@ -154,6 +154,7 @@ BASE_FEATURE(kCpssQuietChipTextUpdate, - "CpssQuietChipTextUpdate", +@@ -153,6 +153,7 @@ BASE_FEATURE(kCpssQuietChipTextUpdate, + BASE_FEATURE(kCpssUseTfliteSignatureRunner, + "CpssUseTfliteSignatureRunner", base::FEATURE_DISABLED_BY_DEFAULT); - +#include "cromite_flags/components_permissions_features_cc.inc" } // namespace features namespace feature_params { @@ -1473,19 +1429,19 @@ diff --git a/components/permissions/features.cc b/components/permissions/feature diff --git a/components/version_ui/version_handler_helper.cc b/components/version_ui/version_handler_helper.cc --- a/components/version_ui/version_handler_helper.cc +++ b/components/version_ui/version_handler_helper.cc -@@ -37,7 +37,7 @@ base::Value::List GetVariationsList() { - // displayed locally (and is useful for diagnostics purposes). +@@ -56,7 +56,7 @@ base::Value::List GetVariationsList() { base::FieldTrialListIncludingLowAnonymity::GetActiveFieldTrialGroups( &active_groups); + -#if !defined(NDEBUG) +#if true - const unsigned char kNonBreakingHyphenUTF8[] = {0xE2, 0x80, 0x91, '\0'}; - const std::string kNonBreakingHyphenUTF8String( - reinterpret_cast(kNonBreakingHyphenUTF8)); + for (const auto& group : active_groups) { + variations.push_back(GetActiveGroupNameAsString(group)); + } diff --git a/content/common/features.cc b/content/common/features.cc --- a/content/common/features.cc +++ b/content/common/features.cc -@@ -614,4 +614,5 @@ BASE_FEATURE(kScrollBubblingFix, +@@ -615,4 +615,5 @@ BASE_FEATURE(kLimitCrossOriginNonActivatedPaintHolding, // Please keep features in alphabetical order. @@ -1494,7 +1450,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 -@@ -1422,4 +1422,5 @@ bool IsVideoCaptureServiceEnabledForBrowserProcess() { +@@ -1442,4 +1442,5 @@ bool IsVideoCaptureServiceEnabledForBrowserProcess() { VideoCaptureServiceConfiguration::kEnabledForBrowserProcess; } @@ -1503,7 +1459,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 -@@ -329,6 +329,7 @@ CONTENT_EXPORT extern const base::FeatureParam +@@ -334,6 +334,7 @@ CONTENT_EXPORT extern const base::FeatureParam CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForOutOfProcess(); CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForBrowserProcess(); @@ -1837,7 +1793,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 -@@ -1927,5 +1927,5 @@ uint32_t GetPassthroughAudioFormats() { +@@ -1906,5 +1906,5 @@ uint32_t GetPassthroughAudioFormats() { return 0; #endif // BUILDFLAG(ENABLE_PASSTHROUGH_AUDIO_CODECS) } @@ -1847,7 +1803,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 -@@ -583,5 +583,5 @@ MEDIA_EXPORT OOPVDMode GetOutOfProcessVideoDecodingMode(); +@@ -585,5 +585,5 @@ MEDIA_EXPORT OOPVDMode GetOutOfProcessVideoDecodingMode(); MEDIA_EXPORT uint32_t GetPassthroughAudioFormats(); } // namespace media @@ -1857,18 +1813,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 -@@ -596,4 +596,5 @@ BASE_FEATURE(kNoVarySearchIgnoreUnrecognizedKeys, - "NoVarySearchIgnoreUnrecognizedKeys", - base::FEATURE_ENABLED_BY_DEFAULT); +@@ -616,4 +616,5 @@ const base::FeatureParam kDiskCacheBackendParam{ + &kDiskCacheBackendExperiment, "backend", DiskCacheBackend::kBlockfile, + &kDiskCacheBackendOptions}; +#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 -@@ -608,6 +608,7 @@ NET_EXPORT BASE_DECLARE_FEATURE(kKeepWhitespaceForDataUrls); - // Otherwise, unrecognized keys are treated as if the header was invalid. - NET_EXPORT BASE_DECLARE_FEATURE(kNoVarySearchIgnoreUnrecognizedKeys); +@@ -628,6 +628,7 @@ NET_EXPORT BASE_DECLARE_FEATURE(kDiskCacheBackendExperiment); + NET_EXPORT extern const base::FeatureParam + kDiskCacheBackendParam; +#include "cromite_flags/net_base_features_h.inc" } // namespace net::features @@ -1897,18 +1853,18 @@ 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 -@@ -2735,4 +2735,5 @@ bool IsCanvasSharedBitmapConversionEnabled() { - features::kCanvasSharedBitmapToSharedImage); - } +@@ -2801,4 +2801,5 @@ bool IsCanvasSharedBitmapConversionEnabled() { + // + // DO NOT ADD NEW FEATURES HERE. +#include "cromite_flags/third_party_blink_common_features_cc.inc" } // namespace blink::features 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 -@@ -1840,6 +1840,7 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kOptimizeLoadingDataUrls); - BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kCanvasSharedBitmapToSharedImage); - BLINK_COMMON_EXPORT bool IsCanvasSharedBitmapConversionEnabled(); +@@ -1879,6 +1879,7 @@ BLINK_COMMON_EXPORT bool IsCanvasSharedBitmapConversionEnabled(); + // + // DO NOT ADD NEW FEATURES HERE. +#include "cromite_flags/third_party_blink_common_features_h.inc" } // namespace features @@ -1917,7 +1873,7 @@ 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 -@@ -536,4 +536,5 @@ BASE_FEATURE(kAsyncFullscreenWindowState, +@@ -554,4 +554,5 @@ BASE_FEATURE(kAsyncFullscreenWindowState, "AsyncFullscreenWindowState", base::FEATURE_DISABLED_BY_DEFAULT); @@ -1926,7 +1882,7 @@ diff --git a/ui/base/ui_base_features.cc b/ui/base/ui_base_features.cc 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 -@@ -262,6 +262,7 @@ BASE_DECLARE_FEATURE(kUseUtf8EncodingForSvgImage); +@@ -273,6 +273,7 @@ BASE_DECLARE_FEATURE(kWriteBookmarkWithoutTitle); COMPONENT_EXPORT(UI_BASE_FEATURES) BASE_DECLARE_FEATURE(kAsyncFullscreenWindowState); diff --git a/build/patches/Add-option-to-disable-snapshots.patch b/build/patches/Add-option-to-disable-snapshots.patch index 0d37f652..c214adec 100644 --- a/build/patches/Add-option-to-disable-snapshots.patch +++ b/build/patches/Add-option-to-disable-snapshots.patch @@ -15,7 +15,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java -@@ -346,7 +346,12 @@ class TabGridViewBinder { +@@ -397,7 +397,12 @@ class TabGridViewBinder { if (result != null) { TabUtils.setDrawableAndUpdateImageMatrix(thumbnail, result, thumbnailSize); } else { @@ -29,18 +29,18 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser } }; if (sThumbnailFetcherForTesting != null) { -@@ -385,6 +390,7 @@ class TabGridViewBinder { - ViewLookupCachingFrameLayout rootView, - PropertyModel model, - TabListFaviconProvider.TabFavicon favicon) { +@@ -438,6 +443,7 @@ class TabGridViewBinder { + */ + private static void setFavicon( + ImageView faviconView, PropertyModel model, TabListFaviconProvider.TabFavicon favicon) { + model.set(TabProperties.FAVICON, favicon); - ImageView faviconView = (ImageView) rootView.fastFindViewById(R.id.tab_favicon); if (favicon == null) { faviconView.setImageDrawable(null); + return; diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabProperties.java -@@ -76,6 +76,9 @@ public class TabProperties { +@@ -72,6 +72,9 @@ public class TabProperties { public static final WritableBooleanPropertyKey FAVICON_FETCHED = new WritableBooleanPropertyKey(); @@ -84,7 +84,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi 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 -@@ -141,6 +141,7 @@ import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; +@@ -142,6 +142,7 @@ import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.printing.TabPrinter; @@ -92,7 +92,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileManager; import org.chromium.chrome.browser.profiles.ProfileProvider; -@@ -716,7 +717,7 @@ public abstract class ChromeActivity +@@ -715,7 +716,7 @@ public abstract class ChromeActivity new TabContentManager( this, mBrowserControlsManagerSupplier.get(), @@ -104,7 +104,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java -@@ -19,6 +19,7 @@ import androidx.preference.Preference; +@@ -21,6 +21,7 @@ import androidx.preference.Preference; import org.chromium.base.metrics.RecordHistogram; import org.chromium.base.metrics.RecordUserAction; @@ -112,7 +112,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import org.chromium.base.supplier.ObservableSupplier; import org.chromium.base.supplier.ObservableSupplierImpl; import org.chromium.base.ContextUtils; -@@ -74,12 +75,26 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; +@@ -75,12 +76,26 @@ import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; import org.chromium.components.browser_ui.settings.ManagedPreferenceDelegate; @@ -140,7 +140,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting private static final String PREF_CAN_MAKE_PAYMENT = "can_make_payment"; private static final String PREF_PRELOAD_PAGES = "preload_pages"; private static final String PREF_HTTPS_FIRST_MODE = "https_first_mode"; -@@ -165,6 +180,21 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -166,6 +181,21 @@ public class PrivacySettings extends ChromeBaseSettingsFragment } } @@ -162,7 +162,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting Preference privacyGuidePreference = findPreference(PREF_PRIVACY_GUIDE); // Record the launch of PG from the S&P link-row entry point privacyGuidePreference.setOnPreferenceClickListener( -@@ -376,6 +406,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -382,6 +412,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment public static final String PREF_ALLOW_CUSTOM_TAB_INTENTS = "allow_custom_tab_intents"; public static final String PREF_OPEN_EXTERNAL_LINKS_INCOGNITO = "open_external_links_incognito"; @@ -170,7 +170,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public boolean onPreferenceChange(Preference preference, Object newValue) { -@@ -418,6 +449,13 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -424,6 +455,13 @@ public class PrivacySettings extends ChromeBaseSettingsFragment SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit(); sharedPreferencesEditor.putBoolean(PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, (boolean)newValue); sharedPreferencesEditor.apply(); @@ -184,7 +184,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } return true; } -@@ -474,6 +512,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -480,6 +518,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment : R.string.text_off); } @@ -198,7 +198,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting 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 -@@ -5979,6 +5979,14 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -6027,6 +6027,14 @@ To change this setting, BEGIN_LINKdelete the Chrome d Your %1$swww.amazon.com timer ran out. It'll start again tomorrow. diff --git a/build/patches/Add-setting-to-invert-tap-and-long-tap.patch b/build/patches/Add-setting-to-invert-tap-and-long-tap.patch index 548798c0..ff5d6c18 100644 --- a/build/patches/Add-setting-to-invert-tap-and-long-tap.patch +++ b/build/patches/Add-setting-to-invert-tap-and-long-tap.patch @@ -46,7 +46,7 @@ diff --git a/android_webview/java/src/org/chromium/android_webview/contextmenu/A import org.chromium.content_public.browser.WebContents; import org.chromium.ui.base.Clipboard; import org.chromium.url.GURL; -@@ -54,6 +55,9 @@ public class AwContextMenuItemDelegate implements ContextMenuItemDelegate { +@@ -52,6 +53,9 @@ public class AwContextMenuItemDelegate implements ContextMenuItemDelegate { IntentUtils.safeStartActivity(mActivity, intent); } @@ -70,7 +70,7 @@ diff --git a/chrome/android/java/res/values/ids.xml b/chrome/android/java/res/va diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/AccessibilitySettings.java -@@ -59,6 +59,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment +@@ -60,6 +60,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment private BooleanPreferenceDelegate mMoveTopToolbarToBottomDelegate; private BooleanPreferenceDelegate mDisableToolbarSwipeUpDelegate; @@ -80,7 +80,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s private TextScalePreference mTextScalePref; private PageZoomPreference mPageZoomDefaultZoomPref; private ChromeSwitchPreference mPageZoomIncludeOSAdjustment; -@@ -182,6 +185,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment +@@ -184,6 +187,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment mDisableToolbarSwipeUpPref.setChecked(mDisableToolbarSwipeUpDelegate.isEnabled()); mDisableToolbarSwipeUpPref.setOnPreferenceChangeListener(this); @@ -93,7 +93,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s Preference captions = findPreference(PREF_CAPTIONS); captions.setOnPreferenceClickListener( preference -> { -@@ -271,6 +280,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment +@@ -279,6 +288,9 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment mDelegate.requestRestart(getActivity()); } else if (PREF_DISABLE_TOOLBAR_SWIPE_UP.equals(preference.getKey())) { mDisableToolbarSwipeUpDelegate.setEnabled((Boolean) newValue); @@ -102,7 +102,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s + mDelegate.requestRestart(getActivity()); } else if (PREF_PAGE_ZOOM_INCLUDE_OS_ADJUSTMENT.equals(preference.getKey())) { // TODO(mschillaci): Implement the override behavior for OS level. - } + } else if (OmniboxFeatures.KEY_JUMP_START_OMNIBOX.equals(preference.getKey())) { diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java @@ -164,7 +164,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/ChromeContextMenuPopulator.java -@@ -275,6 +275,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -279,6 +279,9 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { if (mParams.isAnchor()) { ModelList linkGroup = new ModelList(); @@ -174,7 +174,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr if (FirstRunStatus.getFirstRunFlowComplete() && !isEmptyUrl(mParams.getUrl()) && UrlUtilities.isAcceptedScheme(mParams.getUrl())) { -@@ -652,6 +655,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { +@@ -661,6 +664,8 @@ public class ChromeContextMenuPopulator implements ContextMenuPopulator { getProfile(), false); }); @@ -186,7 +186,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextmenu/Chr diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java -@@ -328,6 +328,14 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { +@@ -327,6 +327,14 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { mTab.loadUrl(loadUrlParams); } @@ -204,7 +204,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextM 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 -@@ -317,6 +317,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -325,6 +325,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kTabGroupCreationDialogAndroid, &kTabGroupParityAndroid, &kTabletTabSwitcherLongPressMenu, @@ -215,7 +215,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 -@@ -384,6 +384,8 @@ public abstract class ChromeFeatureList { +@@ -402,6 +402,8 @@ public abstract class ChromeFeatureList { "DisableToolbarSwipeUp"; public static final String MOVE_TOP_TOOLBAR_TO_BOTTOM = "MoveTopToolbarToBottom"; @@ -224,7 +224,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String NOTIFICATION_PERMISSION_VARIANT = "NotificationPermissionVariant"; public static final String NOTIFICATION_PERMISSION_BOTTOM_SHEET = "NotificationPermissionBottomSheet"; -@@ -688,6 +690,8 @@ public abstract class ChromeFeatureList { +@@ -725,6 +727,8 @@ public abstract class ChromeFeatureList { newCachedFlag(DISABLE_TOOLBAR_SWIPE_UP, false); public static final CachedFlag sMoveTopToolbarToBottom = newCachedFlag(MOVE_TOP_TOOLBAR_TO_BOTTOM, false); @@ -233,18 +233,18 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final CachedFlag sPrivacyGuidePreloadAndroid = newCachedFlag(PRIVACY_GUIDE_PRELOAD_ANDROID, false); public static final CachedFlag sOptimizationGuidePushNotifications = -@@ -853,6 +857,7 @@ public abstract class ChromeFeatureList { +@@ -892,6 +896,7 @@ public abstract class ChromeFeatureList { sTabWindowManagerReportIndicesMismatch, sTraceBinderIpc, sUseChimeAndroidSdk, + sShowAlwaysContextMenuOnLinks, sUseLibunwindstackNativeUnwinderAndroid, - sVerticalAutomotiveBackButtonToolbar, sWebApkMinShellApkVersion); + 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 -@@ -1786,6 +1786,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1807,6 +1807,12 @@ Your Google account may have other forms of browsing history like searches and a Disable toolbar swipe up @@ -257,7 +257,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro -@@ -3257,6 +3263,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -3293,6 +3299,9 @@ To change this setting, BEGIN_LINKdelete the Chrome d Open in new Chrome tab @@ -285,7 +285,7 @@ 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/AccessibilitySettingsDelegate.java b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java --- a/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java +++ b/components/browser_ui/accessibility/android/java/src/org/chromium/components/browser_ui/accessibility/AccessibilitySettingsDelegate.java -@@ -39,6 +39,8 @@ public interface AccessibilitySettingsDelegate { +@@ -38,6 +38,8 @@ public interface AccessibilitySettingsDelegate { BooleanPreferenceDelegate getMoveTopToolbarToBottomDelegate(); BooleanPreferenceDelegate getDisableToolbarSwipeUpDelegate(); @@ -352,16 +352,16 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third #include "third_party/blink/renderer/core/page/page.h" #include "third_party/blink/renderer/core/speculation_rules/document_speculation_rules.h" #include "third_party/blink/renderer/platform/heap/garbage_collected.h" -@@ -502,6 +503,17 @@ void HTMLAnchorElement::NavigateToHyperlink(ResourceRequest request, - bool is_trusted, - base::TimeTicks platform_time_stamp, - KURL completed_url) { +@@ -502,6 +503,17 @@ void HTMLAnchorElementBase::NavigateToHyperlink( + bool is_trusted, + base::TimeTicks platform_time_stamp, + KURL completed_url) { + UIEvent& event = *UIEvent::Create(); + NavigateToHyperlink2(std::move(request), navigation_policy, is_trusted, platform_time_stamp, + std::move(completed_url), event, true); +} + -+void HTMLAnchorElement::NavigateToHyperlink2(ResourceRequest request, ++void HTMLAnchorElementBase::NavigateToHyperlink2(ResourceRequest request, + NavigationPolicy navigation_policy, + bool is_trusted, + base::TimeTicks platform_time_stamp, @@ -370,7 +370,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third LocalDOMWindow* window = GetDocument().domWindow(); if (!window) { return; -@@ -568,6 +580,15 @@ void HTMLAnchorElement::NavigateToHyperlink(ResourceRequest request, +@@ -568,6 +580,15 @@ void HTMLAnchorElementBase::NavigateToHyperlink( request.GetReferrerPolicy())); } @@ -386,39 +386,39 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third Frame* target_frame = frame->Tree().FindOrCreateFrameForNavigation(frame_request, target).frame; -@@ -622,7 +643,7 @@ AtomicString HTMLAnchorElement::interestAction() const { +@@ -622,7 +643,7 @@ AtomicString HTMLAnchorElementBase::interestAction() const { return g_empty_atom; } --void HTMLAnchorElement::HandleClick(MouseEvent& event) { -+void HTMLAnchorElement::HandleClick(MouseEvent& event, bool do_not_show_context_menu) { +-void HTMLAnchorElementBase::HandleClick(MouseEvent& event) { ++void HTMLAnchorElementBase::HandleClick(MouseEvent& event, bool do_not_show_context_menu) { event.SetDefaultHandled(); LocalDOMWindow* window = GetDocument().domWindow(); -@@ -718,13 +739,12 @@ void HTMLAnchorElement::HandleClick(MouseEvent& event) { +@@ -718,13 +739,12 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) { return; } - base::OnceClosure navigate_closure = WTF::BindOnce( -- &HTMLAnchorElement::NavigateToHyperlink, WrapWeakPersistent(this), +- &HTMLAnchorElementBase::NavigateToHyperlink, WrapWeakPersistent(this), - std::move(request), navigation_policy, event.isTrusted(), - event.PlatformTimeStamp(), std::move(completed_url)); - if (navigation_policy == kNavigationPolicyDownload || navigation_policy == kNavigationPolicyLinkPreview) { + base::OnceClosure navigate_closure = WTF::BindOnce( -+ &HTMLAnchorElement::NavigateToHyperlink, WrapWeakPersistent(this), ++ &HTMLAnchorElementBase::NavigateToHyperlink, WrapWeakPersistent(this), + std::move(request), navigation_policy, event.isTrusted(), + event.PlatformTimeStamp(), std::move(completed_url)); // We distinguish single/double click with some modifiers. // See the comment of `EventHandler.delayed_navigation_task_handle_`. auto task_handle = PostDelayedCancellableTask( -@@ -734,7 +754,9 @@ void HTMLAnchorElement::HandleClick(MouseEvent& event) { +@@ -734,7 +754,9 @@ void HTMLAnchorElementBase::HandleClick(MouseEvent& event) { frame->GetEventHandler().SetDelayedNavigationTaskHandle( std::move(task_handle)); } else { - std::move(navigate_closure).Run(); -+ HTMLAnchorElement::NavigateToHyperlink2(std::move(request), navigation_policy, ++ HTMLAnchorElementBase::NavigateToHyperlink2(std::move(request), navigation_policy, + event.isTrusted(), event.PlatformTimeStamp(), std::move(completed_url), + event, do_not_show_context_menu); } @@ -427,15 +427,15 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third diff --git a/third_party/blink/renderer/core/html/html_anchor_element.h b/third_party/blink/renderer/core/html/html_anchor_element.h --- a/third_party/blink/renderer/core/html/html_anchor_element.h +++ b/third_party/blink/renderer/core/html/html_anchor_element.h -@@ -116,6 +116,7 @@ class CORE_EXPORT HTMLAnchorElement : public HTMLElement, public DOMURLUtils { +@@ -117,6 +117,7 @@ class CORE_EXPORT HTMLAnchorElementBase : public HTMLElement, AtomicString interestAction() const override; void Trace(Visitor*) const override; + void HandleClick(MouseEvent&, bool do_not_show_context_menu = false); protected: - void ParseAttribute(const AttributeModificationParams&) override; -@@ -146,7 +147,11 @@ class CORE_EXPORT HTMLAnchorElement : public HTMLElement, public DOMURLUtils { + HTMLAnchorElementBase(const QualifiedName& tag_name, Document&); +@@ -148,7 +149,11 @@ class CORE_EXPORT HTMLAnchorElementBase : public HTMLElement, bool is_trusted, base::TimeTicks platform_time_stamp, KURL); @@ -551,7 +551,7 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t // Clear any previously set cached results if we are resetting the hit test // result. image_selection_cached_result_ = nullptr; -@@ -835,11 +848,13 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, +@@ -836,11 +849,13 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, SetAutofillData(result.InnerNode(), data); SetPasswordManagerData(result.InnerElement(), data); diff --git a/build/patches/Disable-conversion-measurement-api.patch b/build/patches/Disable-conversion-measurement-api.patch index d16b28ee..8b8d7e79 100644 --- a/build/patches/Disable-conversion-measurement-api.patch +++ b/build/patches/Disable-conversion-measurement-api.patch @@ -44,7 +44,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 -@@ -1296,6 +1296,7 @@ network::mojom::AttributionSupport +@@ -1337,6 +1337,7 @@ network::mojom::AttributionSupport AwContentBrowserClient::GetAttributionSupport( AttributionReportingOsApiState state, bool client_os_disabled) { @@ -52,7 +52,7 @@ diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webv // WebView only supports OS-level attribution and not web-attribution. switch (state) { case AttributionReportingOsApiState::kDisabled: -@@ -1314,6 +1315,8 @@ bool AwContentBrowserClient::IsAttributionReportingOperationAllowed( +@@ -1355,6 +1356,8 @@ bool AwContentBrowserClient::IsAttributionReportingOperationAllowed( const url::Origin* destination_origin, const url::Origin* reporting_origin, bool* can_bypass) { @@ -93,7 +93,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro +@@ -149,6 +149,11 @@ for the previous order (main_preferences_legacy). --> android:key="useragent_settings" android:order="20" android:title="@string/prefs_useragent_settings"/> @@ -265,7 +265,7 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/DownloadUtils.java -@@ -75,6 +75,7 @@ import org.chromium.ui.base.DeviceFormFactor; +@@ -74,6 +74,7 @@ import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.MimeTypeUtils; import org.chromium.ui.widget.Toast; import org.chromium.url.GURL; @@ -273,7 +273,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo import java.io.File; -@@ -411,6 +412,11 @@ public class DownloadUtils { +@@ -426,6 +427,11 @@ public class DownloadUtils { String referrer, @DownloadOpenSource int source, Context context) { @@ -297,7 +297,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessIni /** * Handles the initialization dependences of the browser process. This is meant to handle the * initialization that is not tied to any particular Activity, and the logic that should only be -@@ -615,6 +617,8 @@ public class ProcessInitializationHandler { +@@ -610,6 +612,8 @@ public class ProcessInitializationHandler { DefaultBrowserInfo.initBrowserFetcher(); @@ -309,7 +309,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessIni diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni --- a/chrome/android/java_sources.gni +++ b/chrome/android/java_sources.gni -@@ -20,6 +20,7 @@ import("//chrome/browser/tab_group_sync/android/test_java_sources.gni") +@@ -19,6 +19,7 @@ import("//chrome/browser/tab_group_sync/android/test_java_sources.gni") import("//chrome/common/features.gni") import("//components/offline_pages/buildflags/features.gni") import("//device/vr/buildflags/buildflags.gni") @@ -317,7 +317,7 @@ diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni # Only used for testing, should not be shipped to end users. if (enable_offline_pages_harness) { -@@ -57,3 +58,5 @@ if (enable_cardboard) { +@@ -55,3 +56,5 @@ if (enable_cardboard) { "java/src/org/chromium/chrome/browser/vr/VrCompositorDelegateProviderImpl.java", ] } @@ -326,7 +326,7 @@ diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3475,6 +3475,13 @@ static_library("browser") { +@@ -3482,6 +3482,13 @@ static_library("browser") { ] deps += [ "//chrome/android/modules/dev_ui/provider:native" ] } @@ -343,7 +343,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn 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 -@@ -180,6 +180,7 @@ +@@ -181,6 +181,7 @@ #include "components/ui_devtools/switches.h" #include "components/variations/variations_switches.h" #include "components/version_info/channel.h" @@ -354,7 +354,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -275,6 +275,7 @@ +@@ -274,6 +274,7 @@ #include "components/ntp_tiles/popular_sites_impl.h" #include "components/permissions/contexts/geolocation_permission_context_android.h" #include "components/webapps/browser/android/install_prompt_prefs.h" @@ -362,7 +362,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse #else // BUILDFLAG(IS_ANDROID) #include "chrome/browser/cart/cart_service.h" #include "chrome/browser/companion/core/promo_handler.h" -@@ -1975,6 +1976,9 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2050,6 +2051,9 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, translate::TranslatePrefs::RegisterProfilePrefs(registry); omnibox::RegisterProfilePrefs(registry); ZeroSuggestProvider::RegisterProfilePrefs(registry); @@ -370,8 +370,8 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse + user_scripts::UserScriptsPrefs::RegisterProfilePrefs(registry); +#endif - #if !BUILDFLAG(IS_ANDROID) && BUILDFLAG(GOOGLE_CHROME_BRANDING) - promos_utils::RegisterProfilePrefs(registry); + #if BUILDFLAG(ENABLE_SESSION_SERVICE) + RegisterSessionServiceLogProfilePrefs(registry); diff --git a/chrome/browser/profiles/BUILD.gn b/chrome/browser/profiles/BUILD.gn --- a/chrome/browser/profiles/BUILD.gn +++ b/chrome/browser/profiles/BUILD.gn @@ -388,7 +388,7 @@ diff --git a/chrome/browser/profiles/BUILD.gn b/chrome/browser/profiles/BUILD.gn diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc -@@ -549,6 +549,10 @@ +@@ -540,6 +540,10 @@ #include "chrome/browser/enterprise/data_controls/reporting_service.h" #endif @@ -399,7 +399,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc namespace chrome { void AddProfilesExtraParts(ChromeBrowserMainParts* main_parts) { -@@ -1357,6 +1361,9 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -1312,6 +1316,9 @@ void ChromeBrowserMainExtraPartsProfiles:: #endif WebDataServiceFactory::GetInstance(); webrtc_event_logging::WebRtcEventLogManagerKeyedServiceFactory::GetInstance(); @@ -423,7 +423,7 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile #if BUILDFLAG(ENABLE_SESSION_SERVICE) #include "chrome/browser/sessions/app_session_service_factory.h" #include "chrome/browser/sessions/session_service_factory.h" -@@ -1528,6 +1532,13 @@ void ProfileManager::DoFinalInitForServices(Profile* profile, +@@ -1482,6 +1486,13 @@ void ProfileManager::DoFinalInitForServices(Profile* profile, ChildAccountServiceFactory::GetForProfile(profile)->Init(); SupervisedUserServiceFactory::GetForProfile(profile)->Init(); ListFamilyMembersServiceFactory::GetForProfile(profile)->Init(); @@ -501,15 +501,15 @@ diff --git a/chrome/browser/profiles/renderer_updater.h b/chrome/browser/profile diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc --- a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc +++ b/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc -@@ -80,6 +80,7 @@ - #include "components/security_interstitials/content/known_interception_disclosure_ui.h" - #include "components/security_interstitials/content/urls.h" - #include "components/site_engagement/content/site_engagement_service.h" +@@ -60,6 +60,7 @@ + #include "components/reading_list/features/reading_list_switches.h" + #include "components/safe_browsing/content/browser/web_ui/safe_browsing_ui.h" + #include "components/safe_browsing/core/common/web_ui_constants.h" +#include "components/user_scripts/browser/ui/user_scripts_ui.h" #include "content/public/browser/web_contents.h" #include "content/public/browser/web_ui.h" #include "content/public/common/content_client.h" -@@ -413,6 +414,10 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, +@@ -262,6 +263,10 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, history_clusters_internals::kChromeUIHistoryClustersInternalsHost) { return &NewWebUI; } @@ -519,21 +519,21 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom +#endif #if !BUILDFLAG(IS_ANDROID) - #if !BUILDFLAG(IS_CHROMEOS) + if (url.host_piece() == chrome::kChromeUINewTabHost) { diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni --- a/chrome/chrome_paks.gni +++ b/chrome/chrome_paks.gni -@@ -129,6 +129,7 @@ template("chrome_extra_paks") { - "$root_gen_dir/net/net_resources.pak", +@@ -130,6 +130,7 @@ template("chrome_extra_paks") { "$root_gen_dir/third_party/blink/public/resources/blink_resources.pak", "$root_gen_dir/third_party/blink/public/resources/inspector_overlay_resources.pak", + "$root_gen_dir/third_party/blink/public/strings/permission_element_generated_strings.pak", + "$root_gen_dir/chrome/userscripts_browser_resources.pak", "$root_gen_dir/ui/resources/webui_resources.pak", ] deps = [ -@@ -146,6 +147,7 @@ template("chrome_extra_paks") { - "//third_party/blink/public:devtools_inspector_resources", +@@ -148,6 +149,7 @@ template("chrome_extra_paks") { "//third_party/blink/public:resources", + "//third_party/blink/public/strings:permission_element_generated_strings", "//ui/resources", + "//components/user_scripts/browser:userscripts_browser_resources_grit", ] @@ -553,7 +553,7 @@ diff --git a/chrome/common/renderer_configuration.mojom b/chrome/common/renderer diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn --- a/chrome/renderer/BUILD.gn +++ b/chrome/renderer/BUILD.gn -@@ -242,6 +242,12 @@ static_library("renderer") { +@@ -243,6 +243,12 @@ static_library("renderer") { "//v8", ] @@ -569,7 +569,7 @@ diff --git a/chrome/renderer/BUILD.gn b/chrome/renderer/BUILD.gn diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc --- a/chrome/renderer/chrome_content_renderer_client.cc +++ b/chrome/renderer/chrome_content_renderer_client.cc -@@ -267,6 +267,11 @@ +@@ -270,6 +270,11 @@ #include "chrome/renderer/media/chrome_key_systems.h" #endif @@ -581,7 +581,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer using autofill::AutofillAgent; using autofill::PasswordAutofillAgent; using autofill::PasswordGenerationAgent; -@@ -465,6 +470,14 @@ void ChromeContentRendererClient::RenderThreadStarted() { +@@ -468,6 +473,14 @@ void ChromeContentRendererClient::RenderThreadStarted() { WebString::FromASCII(extensions::kExtensionScheme)); #endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE) @@ -596,7 +596,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer #if BUILDFLAG(ENABLE_SPELLCHECK) if (!spellcheck_) InitSpellCheck(); -@@ -625,6 +638,15 @@ void ChromeContentRendererClient::RenderFrameCreated( +@@ -635,6 +648,15 @@ void ChromeContentRendererClient::RenderFrameCreated( registry); #endif @@ -612,7 +612,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer #if BUILDFLAG(ENABLE_PPAPI) new PepperHelper(render_frame); #endif -@@ -1684,6 +1706,17 @@ void ChromeContentRendererClient::RunScriptsAtDocumentStart( +@@ -1703,6 +1725,17 @@ void ChromeContentRendererClient::RunScriptsAtDocumentStart( render_frame); // |render_frame| might be dead by now. #endif @@ -630,7 +630,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer } void ChromeContentRendererClient::RunScriptsAtDocumentEnd( -@@ -1693,6 +1726,17 @@ void ChromeContentRendererClient::RunScriptsAtDocumentEnd( +@@ -1712,6 +1745,17 @@ void ChromeContentRendererClient::RunScriptsAtDocumentEnd( render_frame); // |render_frame| might be dead by now. #endif @@ -648,7 +648,7 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer } void ChromeContentRendererClient::RunScriptsAtDocumentIdle( -@@ -1702,6 +1746,17 @@ void ChromeContentRendererClient::RunScriptsAtDocumentIdle( +@@ -1721,6 +1765,17 @@ void ChromeContentRendererClient::RunScriptsAtDocumentIdle( render_frame); // |render_frame| might be dead by now. #endif @@ -691,7 +691,7 @@ diff --git a/chrome/renderer/chrome_render_thread_observer.cc b/chrome/renderer/ diff --git a/components/components_strings.grd b/components/components_strings.grd --- a/components/components_strings.grd +++ b/components/components_strings.grd -@@ -341,6 +341,7 @@ +@@ -340,6 +340,7 @@ @@ -10472,15 +10472,15 @@ diff --git a/ipc/ipc_message_start.h b/ipc/ipc_message_start.h diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ids.spec --- a/tools/gritsettings/resource_ids.spec +++ b/tools/gritsettings/resource_ids.spec -@@ -1061,6 +1061,12 @@ - "components/search_engine_descriptions_strings.grd": { - "messages": [7260], +@@ -1018,6 +1018,12 @@ + "META": {"sizes": {"includes": [30],}}, + "includes": [7480], }, + "components/user_scripts/renderer/resources/user_scripts_renderer_resources.grd": { -+ "includes": [7280], ++ "includes": [7500], + }, + "components/user_scripts/browser/resources/browser_resources.grd": { -+ "includes": [7300], ++ "includes": [7620], + }, # END components/ section. diff --git a/build/patches/Use-browser-navigation-handler.patch b/build/patches/Use-browser-navigation-handler.patch index e6cac3c8..5fddae01 100644 --- a/build/patches/Use-browser-navigation-handler.patch +++ b/build/patches/Use-browser-navigation-handler.patch @@ -12,7 +12,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../GestureNavigationViewBinder.java | 6 ++-- .../HistoryNavigationCoordinator.java | 4 +++ .../gesturenav/HistoryNavigationLayout.java | 6 ++-- - .../browser/gesturenav/NavigationHandler.java | 12 +++++-- + .../browser/gesturenav/NavigationHandler.java | 11 +++++-- .../browser/gesturenav/SideSlideLayout.java | 25 +++++++++++--- .../tabbed_mode/TabbedRootUiCoordinator.java | 3 ++ .../cromite/sUseBrowserNavigationHandler.java | 33 +++++++++++++++++++ @@ -22,7 +22,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../Use-browser-navigation-handler.inc | 12 +++++++ .../Use-browser-navigation-handler.inc | 3 ++ .../Use-browser-navigation-handler.inc | 1 + - 15 files changed, 135 insertions(+), 16 deletions(-) + 15 files changed, 135 insertions(+), 15 deletions(-) create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sUseBrowserNavigationHandler.java create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Use-browser-navigation-handler.grdp create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Use-browser-navigation-handler.inc @@ -94,7 +94,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/Hist import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.lifecycle.PauseResumeWithNativeObserver; import org.chromium.chrome.browser.tab.CurrentTabObserver; -@@ -159,6 +160,9 @@ public class HistoryNavigationCoordinator +@@ -155,6 +156,9 @@ public class HistoryNavigationCoordinator * @return {@code} true if the feature is enabled. */ private boolean isFeatureEnabled() { @@ -107,9 +107,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/Hist diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/HistoryNavigationLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/HistoryNavigationLayout.java --- a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/HistoryNavigationLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/HistoryNavigationLayout.java -@@ -68,8 +68,8 @@ class HistoryNavigationLayout extends FrameLayout implements ViewGroup.OnHierarc +@@ -67,8 +67,8 @@ class HistoryNavigationLayout extends FrameLayout implements ViewGroup.OnHierarc + * @param forward {@code true} for forward navigation, or {@code false} for back. * @param initiatingEdge Which edge of the screen the gesture is navigating from. - * @param closeIndicator */ - void showBubble( - boolean forward, @@ -118,7 +118,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/Hist @BackGestureEventSwipeEdge int initiatingEdge, @CloseTarget int closeIndicator) { if (mSideSlideLayout == null) { -@@ -87,7 +87,7 @@ class HistoryNavigationLayout extends FrameLayout implements ViewGroup.OnHierarc +@@ -86,7 +86,7 @@ class HistoryNavigationLayout extends FrameLayout implements ViewGroup.OnHierarc }); } mSideSlideLayout.setEnabled(true); @@ -139,10 +139,22 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/Navi import static org.chromium.chrome.browser.gesturenav.GestureNavigationProperties.EDGE; import android.app.Activity; -@@ -233,15 +233,21 @@ class NavigationHandler implements TouchEventObserver { +@@ -277,6 +277,11 @@ class NavigationHandler implements TouchEventObserver { + boolean forward = isForward(); - mInitiatingEdge = initiatingEdge; + mModel.set(DIRECTION, forward); ++ if (mInitiatingEdge == edge && canNavigate(true)) { ++ mModel.set(CANFORWARD, true); ++ } else { ++ mModel.set(CANFORWARD, false); ++ } + mModel.set(EDGE, mInitiatingEdge); + if (canNavigate(forward)) { + if (mState != GestureState.STARTED) mModel.set(ACTION, GestureAction.RESET_BUBBLE); +@@ -483,12 +488,14 @@ class NavigationHandler implements TouchEventObserver { + } + private boolean isForward() { - boolean forward = mInitiatingEdge == BackGestureEventSwipeEdge.RIGHT; + boolean forward = false; + @BackGestureEventSwipeEdge int edge = BackGestureEventSwipeEdge.RIGHT; @@ -153,20 +165,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/Navi forward = !forward; + edge = BackGestureEventSwipeEdge.LEFT; } - -- mModel.set(DIRECTION, forward); -+ if (mInitiatingEdge == edge && canNavigate(true)) { -+ mModel.set(CANFORWARD, true); -+ } else { -+ mModel.set(CANFORWARD, false); -+ } - mModel.set(EDGE, mInitiatingEdge); - if (canNavigate(forward)) { - if (mState != GestureState.STARTED) mModel.set(ACTION, GestureAction.RESET_BUBBLE); + return forward; + } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/SideSlideLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/SideSlideLayout.java --- a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/SideSlideLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/SideSlideLayout.java -@@ -106,6 +106,7 @@ public class SideSlideLayout extends ViewGroup { +@@ -105,6 +105,7 @@ public class SideSlideLayout extends ViewGroup { private int mAnimationViewWidth; private boolean mIsForward; @@ -174,7 +178,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/Side private @CloseTarget int mCloseIndicator; private @BackGestureEventSwipeEdge int mInitiatingEdge; -@@ -223,10 +224,10 @@ public class SideSlideLayout extends ViewGroup { +@@ -220,10 +221,10 @@ public class SideSlideLayout extends ViewGroup { * Set the direction used for sliding gesture. * @param forward {@code true} if direction is forward. */ @@ -189,7 +193,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/Side } public void setInitiatingEdge(@BackGestureEventSwipeEdge int edge) { -@@ -332,7 +333,7 @@ public class SideSlideLayout extends ViewGroup { +@@ -329,7 +330,7 @@ public class SideSlideLayout extends ViewGroup { mWillNavigate = navigating; if (mCloseIndicator != CloseTarget.NONE) { @@ -198,7 +202,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/Side mArrowView.showCaption(mCloseIndicator); mArrowViewWidth = mArrowView.getMeasuredWidth(); } else { -@@ -348,6 +349,20 @@ public class SideSlideLayout extends ViewGroup { +@@ -345,6 +346,20 @@ public class SideSlideLayout extends ViewGroup { ? -targetDiff : targetDiff); setTargetOffsetLeftAndRight(targetX - mCurrentTargetOffset); @@ -222,7 +226,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/gesturenav/Side diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -54,6 +54,7 @@ import org.chromium.chrome.browser.firstrun.FirstRunStatus; +@@ -57,6 +57,7 @@ import org.chromium.chrome.browser.firstrun.FirstRunStatus; import org.chromium.chrome.browser.flags.ActivityType; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeSwitches; @@ -230,7 +234,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab import org.chromium.chrome.browser.fullscreen.BrowserControlsManager; import org.chromium.chrome.browser.fullscreen.FullscreenManager; import org.chromium.chrome.browser.gesturenav.BackActionDelegate; -@@ -614,6 +615,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -628,6 +629,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { @Override public void onInflationComplete() { mCoordinator = mActivity.findViewById(R.id.coordinator); @@ -297,7 +301,7 @@ new file mode 100644 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 -@@ -103,4 +103,13 @@ found in the LICENSE file. +@@ -108,4 +108,13 @@ found in the LICENSE file. android:summary="@string/selection_popup_smart_text_summary" android:title="@string/selection_popup_smart_text_title" /> diff --git a/build/patches/eyeo-beta-118.0.5993.48-base.patch b/build/patches/eyeo-beta-118.0.5993.48-base.patch index 7eea3bcc..7285d112 100644 --- a/build/patches/eyeo-beta-118.0.5993.48-base.patch +++ b/build/patches/eyeo-beta-118.0.5993.48-base.patch @@ -424,7 +424,7 @@ Based on Chromium 118.0.5993.48 diff --git a/DEPS b/DEPS --- a/DEPS +++ b/DEPS -@@ -176,6 +176,10 @@ vars = { +@@ -164,6 +164,10 @@ vars = { # flag is set True. 'checkout_wpr_archives': False, @@ -435,7 +435,7 @@ diff --git a/DEPS b/DEPS # By default, do not check out WebKit for iOS, as it is not needed unless # running against ToT WebKit rather than system WebKit. This can be overridden # e.g. with custom_vars. -@@ -286,6 +290,8 @@ vars = { +@@ -272,6 +276,8 @@ vars = { 'download_libvpx_testdata': False, 'android_git': 'https://android.googlesource.com', @@ -444,7 +444,7 @@ diff --git a/DEPS b/DEPS 'aomedia_git': 'https://aomedia.googlesource.com', 'boringssl_git': 'https://boringssl.googlesource.com', 'chrome_git': 'https://chrome-internal.googlesource.com', -@@ -502,6 +508,11 @@ vars = { +@@ -496,6 +502,11 @@ vars = { # and whatever else without interference from each other. 'betocore_revision': '89563fec14c756482afa08b016eeba9087c8d1e3', @@ -455,8 +455,8 @@ diff --git a/DEPS b/DEPS + # If you change this, also update the libc++ revision in # //buildtools/deps_revisions.gni. - 'libcxx_revision': '50ab693ecb611942ce4440d8c9ed707ee65ed5e8', -@@ -1295,6 +1306,10 @@ deps = { + 'libcxx_revision': '6a68fd412b9aecd515a20a7cf84d11b598bfaf96', +@@ -1289,6 +1300,10 @@ deps = { 'condition': 'checkout_android and checkout_src_internal', }, @@ -465,9 +465,9 @@ diff --git a/DEPS b/DEPS + }, + 'src/docs/website': { - 'url': Var('chromium_git') + '/website.git' + '@' + '052e29447b43b18da32fff653b9d58ef79fbc836', + 'url': Var('chromium_git') + '/website.git' + '@' + '4811f9e01c4cfcbf9c6957015063eaaa0d92be91', }, -@@ -1419,6 +1434,13 @@ deps = { +@@ -1424,6 +1439,13 @@ deps = { 'dep_type': 'cipd', }, @@ -551,7 +551,7 @@ diff --git a/build/install-build-deps.py b/build/install-build-deps.py import argparse import functools import os -@@ -557,7 +565,7 @@ def backwards_compatible_list(options): +@@ -558,7 +566,7 @@ def backwards_compatible_list(options): "msttcorefonts", "python-dev", "python-setuptools", @@ -573,7 +573,7 @@ diff --git a/components/BUILD.gn b/components/BUILD.gn import("//base/debug/debug.gni") import("//build/config/chrome_build.gni") -@@ -180,6 +183,14 @@ test("components_unittests") { +@@ -176,6 +179,14 @@ test("components_unittests") { deps = [ "//base", @@ -52295,7 +52295,7 @@ diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/brow #include "content/browser/loader/navigation_url_loader_impl.h" #include -@@ -1124,7 +1128,7 @@ void NavigationURLLoaderImpl::OnReceiveRedirect( +@@ -1132,7 +1136,7 @@ void NavigationURLLoaderImpl::OnReceiveRedirect( LogQueueTimeHistogram("Navigation.QueueTime.OnReceiveRedirect", resource_request_->is_outermost_main_frame); net::Error error = net::OK; @@ -52318,7 +52318,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/b #include "content/browser/renderer_host/render_frame_host_impl.h" -@@ -3114,6 +3118,12 @@ void RenderFrameHostImpl::ExecuteJavaScriptMethod( +@@ -3174,6 +3178,12 @@ void RenderFrameHostImpl::ExecuteJavaScriptMethod( std::move(callback)); } @@ -52345,7 +52345,7 @@ diff --git a/content/browser/renderer_host/render_frame_host_impl.h b/content/br #ifndef CONTENT_BROWSER_RENDERER_HOST_RENDER_FRAME_HOST_IMPL_H_ #define CONTENT_BROWSER_RENDERER_HOST_RENDER_FRAME_HOST_IMPL_H_ -@@ -464,6 +468,10 @@ class CONTENT_EXPORT RenderFrameHostImpl +@@ -484,6 +488,10 @@ class CONTENT_EXPORT RenderFrameHostImpl const std::u16string& method_name, base::Value::List arguments, JavaScriptResultCallback callback) override; @@ -52600,7 +52600,7 @@ diff --git a/third_party/blink/renderer/core/exported/web_document.cc b/third_pa diff --git a/third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc b/third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc --- a/third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc +++ b/third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc -@@ -360,6 +360,14 @@ LocalFrameMojoHandler::LocalFrameMojoHandler(blink::LocalFrame& frame) +@@ -355,6 +355,14 @@ LocalFrameMojoHandler::LocalFrameMojoHandler(blink::LocalFrame& frame) WrapWeakPersistent(this))); } @@ -53109,13 +53109,13 @@ diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ # This file is used to assign starting resource ids for resources and strings # used by Chromium. This is done to ensure that resource ids are unique # across all the grd files. If you are adding a new grd file, please add -@@ -1361,6 +1365,11 @@ - "includes": [8460], - }, +@@ -1384,6 +1388,11 @@ + "messages": [10080], + } + "<(SHARED_INTERMEDIATE_DIR)/chrome/browser/resources/adblock_internals/resources.grd": { + "META": {"sizes": {"includes": [10]}}, -+ "includes": [8480], ++ "includes": [10100], + }, + # END "everything else" section.