diff --git a/build/RELEASE b/build/RELEASE index a1b95edf..36181b88 100644 --- a/build/RELEASE +++ b/build/RELEASE @@ -1 +1 @@ -124.0.6367.202 \ No newline at end of file +125.0.6422.41 \ No newline at end of file diff --git a/build/cromite_patches_list.txt b/build/cromite_patches_list.txt index b07d1ddc..4bc5df2e 100644 --- a/build/cromite_patches_list.txt +++ b/build/cromite_patches_list.txt @@ -140,7 +140,6 @@ Re-introduce-override_build_timestamp.patch enable-ftrivial-auto-var-init-zero.patch disable-appending-variations-header.patch Disable-idle-detection.patch -Allow-building-without-supervised-users.patch Disable-minidump-upload-scheduling.patch Revert-Permit-blocking-of-view-source.patch Disable-safety-check.patch @@ -237,8 +236,6 @@ Add-webRTC-site-settings.patch Show-site-settings-for-cookies-javascript-and-ads.patch Viewport-Protection-flag.patch Revert-remove-allowscript-content-setting-secondary-url.patch -Revert-remove-allowimage-content-setting-secondary-url.patch -Temp-Alert-for-CC-revert.patch Timezone-customization.patch Change-popup-site-setting.patch Disable-speechSynthesis-getVoices-API.patch @@ -288,6 +285,8 @@ Enable-platform-aac-audio-and-h264-video.patch Disable-Paint-Preview-by-default.patch Do-not-use-Windows-ClearType-Text-Tuner-setting.patch Private-network-access-content-settings.patch +Allow-building-without-supervised-users.patch +Keep-ComputePressure-disabled.patch Temp-PerformanceNavigationTiming-privacy-fix.patch Temp-disable-predictive-back-gesture.patch diff --git a/build/patches/AImageReader-CFI-crash-mitigations.patch b/build/patches/AImageReader-CFI-crash-mitigations.patch index 43484f67..0c6a9065 100644 --- a/build/patches/AImageReader-CFI-crash-mitigations.patch +++ b/build/patches/AImageReader-CFI-crash-mitigations.patch @@ -90,8 +90,8 @@ 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 -@@ -3101,9 +3101,9 @@ - "expiry_milestone": 125 +@@ -3186,9 +3186,9 @@ + "expiry_milestone": 135 }, { - "name": "enable-image-reader", @@ -183,7 +183,7 @@ diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc if (!gpu_preferences.enable_android_surface_control) return kGpuFeatureStatusDisabled; -@@ -390,6 +393,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) { +@@ -385,6 +388,11 @@ void AdjustGpuFeatureStatusToWorkarounds(GpuFeatureInfo* gpu_feature_info) { gpu_feature_info->status_values[GPU_FEATURE_TYPE_CANVAS_OOP_RASTERIZATION] = kGpuFeatureStatusBlocklisted; } @@ -217,7 +217,7 @@ diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc #endif #if BUILDFLAG(ENABLE_VULKAN) -@@ -708,6 +709,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, +@@ -723,6 +724,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, } #endif // BUILDFLAG(IS_WIN) diff --git a/build/patches/Add-AllowUserCertificates-flag.patch b/build/patches/Add-AllowUserCertificates-flag.patch index ce8dee4d..01eb19eb 100644 --- a/build/patches/Add-AllowUserCertificates-flag.patch +++ b/build/patches/Add-AllowUserCertificates-flag.patch @@ -28,7 +28,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.printing.PrintManagerDelegateImpl; import org.chromium.printing.PrintingController; import org.chromium.printing.PrintingControllerImpl; -@@ -1060,6 +1061,8 @@ public abstract class ChromeActivity +@@ -1078,6 +1079,8 @@ public abstract class ChromeActivity super.onStartWithNative(); ChromeActivitySessionTracker.getInstance().onStartWithNative(); ChromeCachedFlags.getInstance().cacheNativeFlags(); @@ -40,26 +40,26 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv 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 -@@ -134,6 +134,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -138,6 +138,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &feed::kFeedShowSignInCommand, &feed::kFeedSignedOutViewDemotion, &feed::kFeedUserInteractionReliabilityReport, + &kAllowUserCertificates, &feed::kInterestFeedV2, &feed::kInterestFeedV2Hearts, - &feed::kWebFeed, + &feed::kWebFeedAwareness, 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 -@@ -141,6 +141,7 @@ public abstract class ChromeFeatureList { - return ChromeFeatureMap.getInstance().mutableFlagWithSafeDefault(featureName, defaultValue); - } - +@@ -146,6 +146,7 @@ public abstract class ChromeFeatureList { + /* Alphabetical: */ + public static final String ACCOUNT_REAUTHENTICATION_RECENT_TIME_WINDOW = + "AccountReauthenticationRecentTimeWindow"; + public static final String ALLOW_USER_CERTIFICATES = "AllowUserCertificates"; public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_TRANSLATE = "AdaptiveButtonInTopToolbarTranslate"; public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_ADD_TO_BOOKMARKS = -@@ -533,6 +534,8 @@ public abstract class ChromeFeatureList { +@@ -536,6 +537,8 @@ public abstract class ChromeFeatureList { public static final CachedFlag sAndroidTabGroupStableIds = newCachedFlag(ANDROID_TAB_GROUP_STABLE_IDS, false); public static final CachedFlag sAppSpecificHistory = newCachedFlag(APP_SPECIFIC_HISTORY, false); @@ -68,10 +68,10 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final CachedFlag sArchiveTabService = newCachedFlag(ARCHIVE_TAB_SERVICE, false); public static final CachedFlag sAsyncNotificationManager = newCachedFlag(ASYNC_NOTIFICATION_MANAGER, false); -@@ -684,6 +687,7 @@ public abstract class ChromeFeatureList { - +@@ -686,6 +689,7 @@ public abstract class ChromeFeatureList { public static final List sFlagsCachedFullBrowser = List.of( + sAccountReauthenticationRecentTimeWindow, + sAllowUserCertificates, sAndroidAppIntegration, sAndroidElegantTextHeight, diff --git a/build/patches/Add-IsCleartextPermitted-flag.patch b/build/patches/Add-IsCleartextPermitted-flag.patch index 4af1a40e..a64d326e 100644 --- a/build/patches/Add-IsCleartextPermitted-flag.patch +++ b/build/patches/Add-IsCleartextPermitted-flag.patch @@ -44,7 +44,7 @@ new file mode 100644 diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc --- a/net/url_request/url_request_http_job.cc +++ b/net/url_request/url_request_http_job.cc -@@ -300,6 +300,11 @@ std::unique_ptr URLRequestHttpJob::Create(URLRequest* request) { +@@ -306,6 +306,11 @@ std::unique_ptr URLRequestHttpJob::Create(URLRequest* request) { } } diff --git a/build/patches/Add-PartialLowEndModeOnMidRangeDevices-flag.patch b/build/patches/Add-PartialLowEndModeOnMidRangeDevices-flag.patch index 0a559d4a..1f894811 100644 --- a/build/patches/Add-PartialLowEndModeOnMidRangeDevices-flag.patch +++ b/build/patches/Add-PartialLowEndModeOnMidRangeDevices-flag.patch @@ -6,23 +6,26 @@ adds a new flag in chrome://flags to re-enable the experiment License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- - base/features.cc | 3 +++ + base/features.cc | 4 ++++ chrome/browser/about_flags.cc | 1 + .../Add-PartialLowEndModeOnMidRangeDevices-flag.inc | 12 ++++++++++++ - 3 files changed, 16 insertions(+) + 3 files changed, 17 insertions(+) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-PartialLowEndModeOnMidRangeDevices-flag.inc diff --git a/base/features.cc b/base/features.cc --- a/base/features.cc +++ b/base/features.cc -@@ -67,4 +67,7 @@ BASE_FEATURE(kCollectAndroidFrameTimelineMetrics, - base::FEATURE_DISABLED_BY_DEFAULT); +@@ -91,6 +91,10 @@ BASE_FEATURE(kCollectAndroidFrameTimelineMetrics, + FEATURE_DISABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_ANDROID) +#if BUILDFLAG(IS_ANDROID) +SET_CROMITE_FEATURE_DISABLED(kPartialLowEndModeOnMidRangeDevices); +#endif - } // namespace base::features ++ + void Init(EmitThreadControllerProfilerMetadata + emit_thread_controller_profiler_metadata) { + InitializeCpuReductionExperiment(); 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 diff --git a/build/patches/Add-a-flag-to-disable-GamePad-API.patch b/build/patches/Add-a-flag-to-disable-GamePad-API.patch index 3e8e61c2..69260be4 100644 --- a/build/patches/Add-a-flag-to-disable-GamePad-API.patch +++ b/build/patches/Add-a-flag-to-disable-GamePad-API.patch @@ -14,8 +14,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html 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 -@@ -7251,9 +7251,9 @@ - "expiry_milestone": 125 +@@ -7333,9 +7333,9 @@ + "expiry_milestone": 126 }, { - "name": "restrict-gamepad-access", @@ -29,7 +29,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc --- a/chrome/browser/flag_descriptions.cc +++ b/chrome/browser/flag_descriptions.cc -@@ -3083,7 +3083,7 @@ const char kResetShortcutCustomizationsDescription[] = +@@ -3005,7 +3005,7 @@ const char kResetShortcutCustomizationsDescription[] = const char kRestrictGamepadAccessName[] = "Restrict gamepad access"; const char kRestrictGamepadAccessDescription[] = diff --git a/build/patches/Add-a-proxy-configuration-page.patch b/build/patches/Add-a-proxy-configuration-page.patch index fbc51c0f..420c6615 100644 --- a/build/patches/Add-a-proxy-configuration-page.patch +++ b/build/patches/Add-a-proxy-configuration-page.patch @@ -50,7 +50,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml --- a/chrome/android/java/res/values/values.xml +++ b/chrome/android/java/res/values/values.xml -@@ -25,6 +25,9 @@ found in the LICENSE file. +@@ -19,6 +19,9 @@ found in the LICENSE file. true @@ -100,7 +100,7 @@ diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc diff --git a/chrome/browser/browser_resources.grd b/chrome/browser/browser_resources.grd --- a/chrome/browser/browser_resources.grd +++ b/chrome/browser/browser_resources.grd -@@ -234,6 +234,9 @@ +@@ -233,6 +233,9 @@ @@ -206,7 +206,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse #if BUILDFLAG(ENABLE_BACKGROUND_MODE) #include "chrome/browser/background/background_mode_manager.h" #endif -@@ -1483,6 +1485,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1523,6 +1525,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { component_updater::RegisterPrefs(registry); domain_reliability::RegisterPrefs(registry); embedder_support::OriginTrialPrefs::RegisterPrefs(registry); @@ -661,7 +661,7 @@ new file mode 100644 diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -306,6 +306,8 @@ static_library("ui") { +@@ -314,6 +314,8 @@ static_library("ui") { "webui/metrics_internals/metrics_internals_ui.h", "webui/net_export_ui.cc", "webui/net_export_ui.h", @@ -673,7 +673,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn 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 -@@ -53,6 +53,7 @@ +@@ -55,6 +55,7 @@ #include "chrome/browser/ui/webui/ntp_tiles_internals_ui.h" #include "chrome/browser/ui/webui/omnibox/omnibox_ui.h" #include "chrome/browser/ui/webui/policy/policy_ui.h" @@ -681,7 +681,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom #include "chrome/browser/ui/webui/predictors/predictors_ui.h" #include "chrome/browser/ui/webui/privacy_sandbox/privacy_sandbox_internals_ui.h" #include "chrome/browser/ui/webui/segmentation_internals/segmentation_internals_ui.h" -@@ -470,6 +471,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, +@@ -455,6 +456,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, return &NewWebUI; if (url.host_piece() == chrome::kChromeUINetExportHost) return &NewWebUI; @@ -1136,7 +1136,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons const char kChromeUIChromeURLsHost[] = "chrome-urls"; const char kChromeUIChromeURLsURL[] = "chrome://chrome-urls/"; const char kChromeUIComponentsHost[] = "components"; -@@ -466,6 +468,7 @@ bool IsSystemWebUIHost(base::StringPiece host) { +@@ -464,6 +466,7 @@ bool IsSystemWebUIHost(base::StringPiece host) { kChromeUILockScreenNetworkHost, kChromeUILockScreenStartReauthHost, kChromeUIMobileSetupHost, @@ -1144,7 +1144,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons kChromeUIMultiDeviceSetupHost, kChromeUINetworkHost, kChromeUINotificationTesterHost, -@@ -764,6 +767,7 @@ const char* const kChromeHostURLs[] = { +@@ -759,6 +762,7 @@ const char* const kChromeHostURLs[] = { #if !BUILDFLAG(IS_ANDROID) #if !BUILDFLAG(IS_CHROMEOS) kChromeUIAppLauncherPageHost, diff --git a/build/patches/Add-an-always-incognito-mode.patch b/build/patches/Add-an-always-incognito-mode.patch index 30a2b7d9..f3e8c777 100644 --- a/build/patches/Add-an-always-incognito-mode.patch +++ b/build/patches/Add-an-always-incognito-mode.patch @@ -66,7 +66,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/profiles/profile_selections.cc | 10 ++ chrome/browser/profiles/profile_selections.h | 7 +- .../browser/ui/android/native_page/BUILD.gn | 2 + - .../browser/ui/native_page/NativePage.java | 14 +- + .../browser/ui/native_page/NativePage.java | 23 ++- .../strings/android_chrome_strings.grd | 31 ++++ .../browser/toolbar/LocationBarModel.java | 5 +- chrome/browser/ui/messages/android/BUILD.gn | 1 + @@ -85,7 +85,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../add-an-always-incognito-mode.inc | 3 + .../add-an-always-incognito-mode.inc | 1 + net/base/file_stream_context.cc | 2 +- - 66 files changed, 775 insertions(+), 101 deletions(-) + 66 files changed, 781 insertions(+), 104 deletions(-) create mode 100644 chrome/android/java/res/xml/incognito_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java @@ -98,7 +98,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -646,6 +646,7 @@ chrome_java_resources = [ +@@ -642,6 +642,7 @@ chrome_java_resources = [ "java/res/xml/manage_sync_preferences.xml", "java/res/xml/personalize_google_services_preferences.xml", "java/res/xml/phone_as_a_security_key_accessory_filter.xml", @@ -255,7 +255,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.IntentHandler.TabOpenType; import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.metrics.LaunchCauseMetrics; -@@ -686,10 +690,15 @@ public class ChromeTabbedActivity extends ChromeActivity +@@ -2008,6 +2009,9 @@ public abstract class ChromeActivity throw new IllegalStateException( "Attempting to access TabCreator before initialization"); } @@ -331,7 +331,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App /** * Base implementation of {@link AppMenuPropertiesDelegate} that handles hiding and showing menu * items based on activity state. -@@ -593,6 +599,13 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -594,6 +600,13 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate } private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) { @@ -345,7 +345,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App // We have to iterate all menu items since same menu item ID may be associated with more // than one menu items. boolean isOverviewModeMenu = menuGroup == MenuGroup.OVERVIEW_MODE_MENU; -@@ -656,7 +669,15 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -657,7 +670,15 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate } if (item.getItemId() == R.id.recent_tabs_menu_id) { @@ -362,8 +362,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App } if (item.getItemId() == R.id.menu_select_tabs) { item.setVisible(isMenuSelectTabsVisible); -@@ -865,8 +886,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate - && !isChromeScheme +@@ -866,8 +887,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate + && !isNativePage && !isFileScheme && !isContentScheme - && !isIncognito @@ -472,12 +472,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust + downloadItemVisible = true; + } - boolean isChromeScheme = + boolean isNativePage = url.getScheme().equals(UrlConstants.CHROME_SCHEME) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java -@@ -83,6 +83,9 @@ import org.chromium.components.browser_ui.widget.TintedDrawable; +@@ -84,6 +84,9 @@ import org.chromium.components.browser_ui.widget.TintedDrawable; import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.device.mojom.ScreenOrientationLockType; @@ -487,7 +487,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.ArrayList; -@@ -1296,7 +1299,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -1307,7 +1310,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid @Override public boolean isIncognito() { @@ -499,7 +499,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust 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 -@@ -34,6 +34,7 @@ import org.chromium.base.FileUtils; +@@ -35,6 +35,7 @@ import org.chromium.base.FileUtils; import org.chromium.base.IntentUtils; import org.chromium.base.Log; import org.chromium.chrome.R; @@ -507,7 +507,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo import org.chromium.chrome.browser.ChromeTabbedActivity; import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.app.download.home.DownloadActivityLauncher; -@@ -76,6 +77,10 @@ import org.chromium.url.GURL; +@@ -77,6 +78,10 @@ import org.chromium.url.GURL; import java.io.File; @@ -518,7 +518,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo /** A class containing some utility static methods. */ public class DownloadUtils { private static final String TAG = "download"; -@@ -288,7 +293,16 @@ public class DownloadUtils { +@@ -290,7 +295,16 @@ public class DownloadUtils { // Offline pages isn't supported in Incognito. This should be checked before calling // OfflinePageBridge.getForProfile because OfflinePageBridge instance will not be found // for incognito profile. @@ -563,7 +563,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/history/HistoryManager.java -@@ -50,6 +50,14 @@ import org.chromium.ui.base.Clipboard; +@@ -52,6 +52,14 @@ import org.chromium.ui.base.Clipboard; import java.util.List; @@ -578,7 +578,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History /** Combines and manages the different UI components of browsing history. */ public class HistoryManager implements OnMenuItemClickListener, -@@ -140,7 +148,7 @@ public class HistoryManager +@@ -147,7 +155,7 @@ public class HistoryManager mUmaRecorder.recordOpenHistory(); // If incognito placeholder is shown, we don't need to create History UI elements. @@ -587,7 +587,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History mSelectableListLayout = null; mRootView = getIncognitoHistoryPlaceholderView(); return; -@@ -349,9 +357,22 @@ public class HistoryManager +@@ -355,9 +363,22 @@ public class HistoryManager onBackPressStateChanged(); } @@ -611,7 +611,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History // If Incognito placeholder is shown no need to call any destroy method. return; } -@@ -407,7 +428,7 @@ public class HistoryManager +@@ -417,7 +438,7 @@ public class HistoryManager * @return True if manager handles this event, false if it decides to ignore. */ private boolean onBackPressed() { @@ -664,20 +664,20 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.download.home.DownloadPage; import org.chromium.chrome.browser.bookmarks.BookmarkPage; -@@ -308,7 +309,8 @@ public class NativePageFactory { - String url, NativePage candidatePage, Tab tab, boolean isIncognito, boolean isPdf) { +@@ -307,7 +308,8 @@ public class NativePageFactory { + String url, NativePage candidatePage, Tab tab, boolean isIncognito, PdfInfo pdfInfo) { NativePage page; -- switch (NativePage.nativePageType(url, candidatePage, isIncognito, isPdf)) { +- switch (NativePage.nativePageType(url, candidatePage, isIncognito, pdfInfo != null)) { + boolean isAlwaysIncognito = AlwaysIncognitoLinkInterceptor.isAlwaysIncognito(); -+ switch (NativePage.nativePageType(url, candidatePage, isIncognito, isPdf, isAlwaysIncognito)) { ++ switch (NativePage.nativePageType(url, candidatePage, isIncognito, pdfInfo != null, isAlwaysIncognito)) { case NativePageType.NONE: return null; case NativePageType.CANDIDATE: diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java -@@ -36,6 +36,15 @@ import org.chromium.components.signin.metrics.SigninAccessPoint; +@@ -38,6 +38,15 @@ import org.chromium.components.signin.metrics.SigninAccessPoint; import org.chromium.components.sync.SyncService; import org.chromium.url.GURL; @@ -693,7 +693,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM import java.util.HashMap; import java.util.List; import java.util.Map; -@@ -102,7 +111,8 @@ public class RecentTabsManager +@@ -104,7 +113,8 @@ public class RecentTabsManager Profile profile, Context context, Runnable showHistoryManager) { @@ -703,7 +703,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM mActiveTab = tab; mTabModelSelector = tabModelSelector; mShowHistoryManager = showHistoryManager; -@@ -265,6 +275,22 @@ public class RecentTabsManager +@@ -270,6 +280,22 @@ public class RecentTabsManager */ public void openRecentlyClosedTab(RecentlyClosedTab tab, int windowDisposition) { if (mIsDestroyed) return; @@ -952,7 +952,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore/HistoricalTabSaverImpl.java -@@ -28,6 +28,8 @@ import java.util.Arrays; +@@ -29,6 +29,8 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -961,7 +961,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore /** Creates historical entries in TabRestoreService. */ @JNINamespace("historical_tab_saver") public class HistoricalTabSaverImpl implements HistoricalTabSaver { -@@ -66,10 +68,10 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { +@@ -67,10 +69,10 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { // HistoricalTabSaver implementation. @Override @@ -974,7 +974,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore } @Override -@@ -126,7 +128,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { +@@ -127,7 +129,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { // If there is only a single valid tab remaining save it individually. if (validEntries.size() == 1 && validEntries.get(0).isSingleTab()) { @@ -983,7 +983,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore return; } -@@ -165,14 +167,15 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { +@@ -166,14 +168,15 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { CollectionUtil.integerCollectionToIntArray(savedStateVersions)); } @@ -1001,7 +1001,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore } /** -@@ -180,7 +183,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { +@@ -181,7 +184,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { * internal Chrome scheme, about:blank, or a native page and it cannot be incognito. */ private boolean shouldSave(Tab tab) { @@ -1010,7 +1010,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore // {@link GURL#getScheme()} is not available in unit tests. if (mIgnoreUrlSchemesForTesting) return true; -@@ -261,7 +264,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { +@@ -262,7 +265,7 @@ public class HistoricalTabSaverImpl implements HistoricalTabSaver { @NativeMethods interface Natives { @@ -1022,7 +1022,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/tab_restore 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 -@@ -137,6 +137,8 @@ import org.chromium.components.webapps.bottomsheet.PwaBottomSheetController; +@@ -150,6 +150,8 @@ import org.chromium.components.webapps.bottomsheet.PwaBottomSheetController; import org.chromium.components.webapps.bottomsheet.PwaBottomSheetControllerFactory; import org.chromium.ui.base.ActivityWindowAndroid; import org.chromium.ui.base.DeviceFormFactor; @@ -1031,7 +1031,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab import org.chromium.ui.base.IntentRequestTracker; import org.chromium.ui.dragdrop.DragDropGlobalState; import org.chromium.ui.modaldialog.ModalDialogManager; -@@ -1006,7 +1008,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -1073,7 +1075,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { () -> { mTabCreatorManagerSupplier .get() @@ -1054,7 +1054,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome /** This class creates various kinds of new tabs and adds them to the right {@link TabModel}. */ public class ChromeTabCreator extends TabCreator { /** Interface to handle showing overview instead of NTP if needed. */ -@@ -499,7 +503,6 @@ public class ChromeTabCreator extends TabCreator { +@@ -500,7 +504,6 @@ public class ChromeTabCreator extends TabCreator { // TODO(crbug.com/1081924): Clean up the launches from SearchActivity/Chrome. public Tab launchUrlFromExternalApp( LoadUrlParams loadUrlParams, String appId, boolean forceNewTab, Intent intent) { @@ -1070,10 +1070,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod import org.chromium.base.supplier.OneshotSupplier; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; - import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; import org.chromium.chrome.browser.flags.ActivityType; import org.chromium.chrome.browser.ntp.RecentlyClosedBridge; -@@ -107,6 +108,8 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod + import org.chromium.chrome.browser.profiles.ProfileProvider; +@@ -108,6 +109,8 @@ public class TabModelSelectorImpl extends TabModelSelectorBase implements TabMod ProfileProvider profileProvider = mProfileProviderSupplier.get(); assert profileProvider != null; @@ -1085,7 +1085,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java -@@ -49,6 +49,8 @@ import org.chromium.chrome.features.start_surface.StartSurfaceUserData; +@@ -48,6 +48,8 @@ import org.chromium.chrome.features.start_surface.StartSurfaceUserData; import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.content_public.browser.LoadUrlParams; @@ -1094,7 +1094,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPer import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -@@ -671,6 +673,13 @@ public class TabPersistentStore { +@@ -670,6 +672,13 @@ public class TabPersistentStore { } } } @@ -1119,7 +1119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar import org.chromium.chrome.browser.IntentHandler; import org.chromium.chrome.browser.app.tab_activity_glue.TabReparentingController; import org.chromium.chrome.browser.app.tabmodel.TabWindowManagerSingleton; -@@ -626,7 +627,7 @@ public class ToolbarManager +@@ -634,7 +635,7 @@ public class ToolbarManager TraceEvent.end("isOfflinePage"); return ret; } @@ -1188,7 +1188,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and using base::android::JavaParamRef; using base::android::JavaRef; using base::android::ScopedJavaLocalRef; -@@ -87,7 +92,8 @@ std::vector> JavaTokensToTabGroupIds( +@@ -84,7 +89,8 @@ std::vector> JavaTokensToTabGroupIds( void CreateHistoricalTab( TabAndroid* tab_android, @@ -1198,7 +1198,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and if (!tab_android) { return; } -@@ -98,9 +104,14 @@ void CreateHistoricalTab( +@@ -95,9 +101,14 @@ void CreateHistoricalTab( return; } @@ -1215,7 +1215,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and if (!service) { return; } -@@ -162,7 +173,7 @@ void CreateHistoricalBulkClosure( +@@ -159,7 +170,7 @@ void CreateHistoricalBulkClosure( std::vector per_tab_root_id, std::vector> tabs, std::vector web_contents_state) { @@ -1224,7 +1224,7 @@ diff --git a/chrome/browser/android/historical_tab_saver.cc b/chrome/browser/and DCHECK_EQ(root_ids.size(), group_titles.size()); DCHECK_EQ(root_ids.size(), group_colors.size()); DCHECK_EQ(root_ids.size(), optional_tab_group_ids.size()); -@@ -286,11 +297,12 @@ static void JNI_HistoricalTabSaverImpl_CreateHistoricalTab( +@@ -283,11 +294,12 @@ static void JNI_HistoricalTabSaverImpl_CreateHistoricalTab( JNIEnv* env, const JavaParamRef& jtab_android, const JavaParamRef& state, @@ -1295,15 +1295,15 @@ diff --git a/chrome/browser/autocomplete/remote_suggestions_service_factory.cc b diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.cc b/chrome/browser/content_settings/host_content_settings_map_factory.cc --- a/chrome/browser/content_settings/host_content_settings_map_factory.cc +++ b/chrome/browser/content_settings/host_content_settings_map_factory.cc -@@ -16,6 +16,7 @@ - #include "chrome/browser/profiles/profiles_state.h" +@@ -18,6 +18,7 @@ #include "chrome/browser/search_engines/template_url_service_factory.h" + #include "chrome/browser/supervised_user/supervised_user_settings_service_factory.h" #include "chrome/common/buildflags.h" +#include "chrome/common/pref_names.h" #include "components/content_settings/core/browser/content_settings_pref_provider.h" #include "components/content_settings/core/browser/host_content_settings_map.h" #include "components/permissions/features.h" -@@ -105,9 +106,25 @@ scoped_refptr +@@ -99,9 +100,25 @@ scoped_refptr if (profile->IsOffTheRecord() && !profile->IsGuestSession()) GetForProfile(original_profile); @@ -1330,7 +1330,7 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c /*store_last_modified=*/true, profile->ShouldRestoreOldSessionCookies(), profiles::IsRegularUserProfile(profile))); -@@ -117,6 +134,9 @@ scoped_refptr +@@ -111,6 +128,9 @@ scoped_refptr HostContentSettingsMap::WEBUI_ALLOWLIST_PROVIDER, std::move(allowlist_provider)); @@ -1343,7 +1343,7 @@ diff --git a/chrome/browser/content_settings/host_content_settings_map_factory.c diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/history/history_tab_helper.cc --- a/chrome/browser/history/history_tab_helper.cc +++ b/chrome/browser/history/history_tab_helper.cc -@@ -41,6 +41,9 @@ +@@ -42,6 +42,9 @@ #include "components/feed/core/v2/public/feed_api.h" #include "components/feed/core/v2/public/feed_service.h" #include "content/public/browser/web_contents.h" @@ -1353,7 +1353,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo #else #include "chrome/browser/ui/browser.h" #include "chrome/browser/ui/browser_finder.h" -@@ -448,6 +451,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { +@@ -455,6 +458,13 @@ void HistoryTabHelper::TitleWasSet(NavigationEntry* entry) { history::HistoryService* HistoryTabHelper::GetHistoryService() { Profile* profile = Profile::FromBrowserContext(web_contents()->GetBrowserContext()); @@ -1367,7 +1367,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo if (profile->IsOffTheRecord()) return nullptr; -@@ -455,6 +465,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { +@@ -462,6 +472,16 @@ history::HistoryService* HistoryTabHelper::GetHistoryService() { profile, ServiceAccessType::IMPLICIT_ACCESS); } @@ -1429,9 +1429,9 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_bridge.cc b/chrom +#include "components/prefs/pref_service.h" +#include "chrome/common/pref_names.h" - using base::android::ConvertJavaStringToUTF8; - using base::android::ConvertUTF16ToJavaString; -@@ -780,9 +783,15 @@ void OfflinePageBridge::GetPageByOfflineIdDone( + using base::android::ConvertUTF8ToJavaString; + using base::android::JavaParamRef; +@@ -757,9 +760,15 @@ void OfflinePageBridge::GetPageByOfflineIdDone( } if (offline_page_model_->IsArchiveInInternalDir(offline_page->file_path)) { @@ -1716,7 +1716,7 @@ diff --git a/chrome/browser/offline_pages/request_coordinator_factory.h b/chrome 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 -@@ -249,6 +249,7 @@ +@@ -244,6 +244,7 @@ #if BUILDFLAG(IS_ANDROID) #include "chrome/browser/accessibility/accessibility_prefs/android/accessibility_prefs_controller.h" @@ -1724,7 +1724,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse #include "chrome/browser/android/bookmarks/partner_bookmarks_shim.h" #include "chrome/browser/android/ntp/recent_tabs_page_prefs.h" #include "chrome/browser/android/oom_intervention/oom_intervention_decider.h" -@@ -1892,6 +1893,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -1942,6 +1943,10 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, usage_stats::UsageStatsBridge::RegisterProfilePrefs(registry); variations::VariationsService::RegisterProfilePrefs(registry); webapps::InstallPromptPrefs::RegisterProfilePrefs(registry); @@ -1810,18 +1810,29 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ /** An interface for pages that will be using Android views instead of html/rendered Web content. */ public interface NativePage { /** -@@ -127,7 +129,7 @@ public interface NativePage { - static boolean isNativePageUrl(GURL url, boolean isIncognito) { - // TODO(shuyng): Propagate the real isPdf param. - return url != null -- && nativePageType(url, null, isIncognito, /* isPdf= */ false) -+ && nativePageType(url, null, isIncognito, /* isPdf= */ false, /*isAlwaysIncognito*/ false) - != NativePageType.NONE; +@@ -130,7 +132,9 @@ public interface NativePage { + * @return Whether the URL would navigate to a native page. + */ + static boolean isNativePageUrl(GURL url, boolean isIncognito, boolean isPdf) { +- return url != null && nativePageType(url, null, isIncognito, isPdf) != NativePageType.NONE; ++ return url != null ++ && nativePageType(url, null, isIncognito, isPdf, /*isAlwaysIncognito*/ false) ++ != NativePageType.NONE; } -@@ -140,11 +142,12 @@ public interface NativePage { + /** +@@ -140,7 +144,7 @@ public interface NativePage { + * not have chrome or chrome-native scheme. */ - // TODO(crbug/783819) - Convert to using GURL. + static boolean isChromePageUrl(GURL url, boolean isIncognito) { +- return url != null && chromePageType(url, null, isIncognito) != NativePageType.NONE; ++ return url != null && chromePageType(url, null, isIncognito, /*isAlwaysIncognito*/false) != NativePageType.NONE; + } + + /** +@@ -152,11 +156,12 @@ public interface NativePage { + */ + // TODO(crbug.com/40549331) - Convert to using GURL. static @NativePageType int nativePageType( - String url, NativePage candidatePage, boolean isIncognito, boolean isPdf) { + String url, NativePage candidatePage, boolean isIncognito, boolean isPdf, @@ -1834,16 +1845,29 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } /** -@@ -155,7 +158,7 @@ public interface NativePage { +@@ -167,9 +172,10 @@ public interface NativePage { * @return Type of the native page defined in {@link NativePageType}. */ private static @NativePageType int nativePageType( - GURL url, NativePage candidatePage, boolean isIncognito, boolean isPdf) { -+ GURL url, NativePage candidatePage, boolean isIncognito, boolean isPdf, boolean isAlwaysIncognito) { ++ GURL url, NativePage candidatePage, boolean isIncognito, boolean isPdf, ++ boolean isAlwaysIncognito) { + if (!isPdf) { +- return chromePageType(url, candidatePage, isIncognito); ++ return chromePageType(url, candidatePage, isIncognito, isAlwaysIncognito); + } + + if (candidatePage != null && candidatePage.getUrl().equals(url.getSpec())) { +@@ -187,7 +193,7 @@ public interface NativePage { + * which do not have chrome or chrome-native scheme. + */ + private static @NativePageType int chromePageType( +- GURL url, NativePage candidatePage, boolean isIncognito) { ++ GURL url, NativePage candidatePage, boolean isIncognito, boolean isAlwaysIncognito) { String host = url.getHost(); String scheme = url.getScheme(); - if (!isPdf -@@ -180,7 +183,8 @@ public interface NativePage { + if (!UrlConstants.CHROME_NATIVE_SCHEME.equals(scheme) +@@ -207,7 +213,8 @@ public interface NativePage { return NativePageType.DOWNLOADS; } else if (UrlConstants.HISTORY_HOST.equals(host)) { return NativePageType.HISTORY; @@ -1856,7 +1880,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ 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 -@@ -1257,6 +1257,37 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1265,6 +1265,37 @@ Your Google account may have other forms of browsing history like searches and a Clears history from all synced devices @@ -1962,7 +1986,7 @@ new file mode 100644 diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -3955,6 +3955,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] = +@@ -3988,6 +3988,12 @@ inline constexpr char kOutOfProcessSystemDnsResolutionEnabled[] = "net.out_of_process_system_dns_resolution_enabled"; #endif // BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) @@ -2028,7 +2052,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov diff --git a/components/content_settings/core/browser/host_content_settings_map.cc b/components/content_settings/core/browser/host_content_settings_map.cc --- a/components/content_settings/core/browser/host_content_settings_map.cc +++ b/components/content_settings/core/browser/host_content_settings_map.cc -@@ -277,6 +277,7 @@ struct ContentSettingEntry { +@@ -283,6 +283,7 @@ struct ContentSettingEntry { HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, bool is_off_the_record, @@ -2036,7 +2060,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. bool store_last_modified, bool restore_session, bool should_record_metrics) -@@ -286,6 +287,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, +@@ -292,6 +293,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, #endif prefs_(prefs), is_off_the_record_(is_off_the_record), @@ -2044,7 +2068,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. store_last_modified_(store_last_modified), allow_invalid_secondary_pattern_for_testing_(false), clock_(base::DefaultClock::GetInstance()) { -@@ -298,7 +300,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, +@@ -304,7 +306,7 @@ HostContentSettingsMap::HostContentSettingsMap(PrefService* prefs, policy_provider->AddObserver(this); auto pref_provider_ptr = std::make_unique( @@ -2064,7 +2088,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. bool store_last_modified, bool restore_session, bool should_record_metrics); -@@ -544,6 +545,8 @@ class HostContentSettingsMap : public content_settings::Observer, +@@ -546,6 +547,8 @@ class HostContentSettingsMap : public content_settings::Observer, // Whether this settings map is for an incognito or guest session. bool is_off_the_record_; @@ -2098,7 +2122,7 @@ diff --git a/components/omnibox/browser/autocomplete_provider_client.h b/compone diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omnibox/browser/base_search_provider.cc --- a/components/omnibox/browser/base_search_provider.cc +++ b/components/omnibox/browser/base_search_provider.cc -@@ -332,7 +332,7 @@ bool BaseSearchProvider::CanSendSuggestRequestWithoutPageURL( +@@ -350,7 +350,7 @@ bool BaseSearchProvider::CanSendSuggestRequestWithoutPageURL( } // Don't make a suggest request if in incognito mode. @@ -2110,7 +2134,7 @@ diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omn diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/browser/search_provider.cc --- a/components/omnibox/browser/search_provider.cc +++ b/components/omnibox/browser/search_provider.cc -@@ -775,7 +775,9 @@ bool SearchProvider::IsQuerySuitableForSuggest(bool* query_is_private) const { +@@ -778,7 +778,9 @@ bool SearchProvider::IsQuerySuitableForSuggest(bool* query_is_private) const { // keyword input to a keyword suggest server, if any.) const TemplateURL* default_url = providers_.GetDefaultProviderURL(); const TemplateURL* keyword_url = providers_.GetKeywordProviderURL(); diff --git a/build/patches/Add-autoplay-site-setting.patch b/build/patches/Add-autoplay-site-setting.patch index c32db66f..84d978e1 100644 --- a/build/patches/Add-autoplay-site-setting.patch +++ b/build/patches/Add-autoplay-site-setting.patch @@ -279,7 +279,7 @@ new file mode 100644 diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -245,7 +245,7 @@ void ContentSettingsRegistry::Init() { +@@ -248,7 +248,7 @@ void ContentSettingsRegistry::Init() { ContentSettingsInfo::INHERIT_IN_INCOGNITO, ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); diff --git a/build/patches/Add-bookmark-import-export-actions.patch b/build/patches/Add-bookmark-import-export-actions.patch index ac00f8df..1644d37d 100644 --- a/build/patches/Add-bookmark-import-export-actions.patch +++ b/build/patches/Add-bookmark-import-export-actions.patch @@ -128,7 +128,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe import org.chromium.chrome.browser.app.tab_activity_glue.ActivityTabWebContentsDelegateAndroid; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; import org.chromium.chrome.browser.compositor.CompositorViewHolder; -@@ -53,7 +54,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager; +@@ -54,7 +55,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager; * {@link ChromeTabbedActivity}. */ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { @@ -137,7 +137,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe private final BrowserControlsVisibilityDelegate mAppBrowserControlsVisibilityDelegate; private final Supplier mShareDelegateSupplier; private final Supplier mEphemeralTabCoordinatorSupplier; -@@ -82,7 +83,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { +@@ -83,7 +84,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { private NativePageFactory mNativePageFactory; public TabbedModeTabDelegateFactory( @@ -221,7 +221,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java -@@ -33,6 +33,48 @@ import org.chromium.url.GURL; +@@ -34,6 +34,48 @@ import org.chromium.url.GURL; import java.util.ArrayList; import java.util.List; @@ -270,7 +270,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm /** * Provides the communication channel for Android to fetch and manipulate the bookmark model stored * in native. -@@ -504,6 +546,212 @@ class BookmarkBridge { +@@ -505,6 +547,212 @@ class BookmarkBridge { .getTotalBookmarkCount(mNativeBookmarkBridge, id.getId(), id.getType()); } @@ -483,7 +483,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm /** * Synchronously gets a list of bookmarks that match the specified search query. * -@@ -1062,6 +1310,39 @@ class BookmarkBridge { +@@ -1063,6 +1311,39 @@ class BookmarkBridge { BookmarkUtils.clearLastUsedPrefs(); } @@ -523,7 +523,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm private static List> createPairsList(int[] left, int[] right) { List> pairList = new ArrayList<>(); for (int i = 0; i < left.length; i++) { -@@ -1128,6 +1409,10 @@ class BookmarkBridge { +@@ -1131,6 +1412,10 @@ class BookmarkBridge { void getChildIds( long nativeBookmarkBridge, long id, int type, List bookmarksList); @@ -785,7 +785,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat import org.chromium.chrome.browser.app.download.home.DownloadPage; import org.chromium.chrome.browser.bookmarks.BookmarkPage; import org.chromium.chrome.browser.browser_controls.BrowserControlsMarginSupplier; -@@ -55,7 +56,7 @@ import org.chromium.ui.util.ColorUtils; +@@ -56,7 +57,7 @@ import org.chromium.ui.util.ColorUtils; * Creates NativePage objects to show chrome-native:// URLs using the native Android view system. */ public class NativePageFactory { @@ -794,8 +794,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat private final BottomSheetController mBottomSheetController; private final BrowserControlsManager mBrowserControlsManager; private final Supplier mCurrentTabSupplier; -@@ -75,7 +76,7 @@ public class NativePageFactory { - private NativePageBuilder mNativePageBuilder; +@@ -77,7 +78,7 @@ public class NativePageFactory { + private static NativePage sTestPage; public NativePageFactory( - @NonNull Activity activity, @@ -803,7 +803,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat @NonNull BottomSheetController sheetController, @NonNull BrowserControlsManager browserControlsManager, @NonNull Supplier currentTabSupplier, -@@ -141,7 +142,7 @@ public class NativePageFactory { +@@ -143,7 +144,7 @@ public class NativePageFactory { @VisibleForTesting static class NativePageBuilder { @@ -812,7 +812,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat private final BottomSheetController mBottomSheetController; private final Supplier mUma; private final BrowserControlsManager mBrowserControlsManager; -@@ -159,7 +160,7 @@ public class NativePageFactory { +@@ -161,7 +162,7 @@ public class NativePageFactory { private final OneshotSupplier mModuleRegistrySupplier; public NativePageBuilder( @@ -821,7 +821,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat Supplier uma, BottomSheetController sheetController, BrowserControlsManager browserControlsManager, -@@ -229,7 +230,7 @@ public class NativePageFactory { +@@ -231,7 +232,7 @@ public class NativePageFactory { mActivity.getComponentName(), mSnackbarManagerSupplier.get(), tab.getProfile(), @@ -833,7 +833,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -201,6 +201,8 @@ static_library("browser") { +@@ -203,6 +203,8 @@ static_library("browser") { "bluetooth/chrome_bluetooth_delegate_impl_client.h", "bookmarks/bookmark_model_factory.cc", "bookmarks/bookmark_model_factory.h", @@ -842,7 +842,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "bookmarks/chrome_bookmark_client.cc", "bookmarks/chrome_bookmark_client.h", "bookmarks/managed_bookmark_service_factory.cc", -@@ -1942,6 +1944,13 @@ static_library("browser") { +@@ -1979,6 +1981,13 @@ static_library("browser") { ] } @@ -856,7 +856,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn configs += [ "//build/config/compiler:wexit_time_destructors", "//build/config:precompiled_headers", -@@ -3657,8 +3666,6 @@ static_library("browser") { +@@ -3711,8 +3720,6 @@ static_library("browser") { "badging/badge_manager_factory.h", "banners/app_banner_manager_desktop.cc", "banners/app_banner_manager_desktop.h", @@ -868,7 +868,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc --- a/chrome/browser/bookmarks/android/bookmark_bridge.cc +++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc -@@ -63,6 +63,28 @@ +@@ -61,6 +61,28 @@ #include "content/public/browser/web_contents.h" #include "url/gurl.h" @@ -894,10 +894,10 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse +#include "ui/shell_dialogs/selected_file_info.h" +#include "ui/shell_dialogs/select_file_dialog.h" + - using base::android::AttachCurrentThread; - using base::android::ConvertUTF16ToJavaString; - using base::android::ConvertUTF8ToJavaString; -@@ -80,12 +102,96 @@ using bookmarks::android::JavaBookmarkIdGetType; + // Must come after other includes, because FromJniType() uses Profile. + #include "chrome/android/chrome_jni_headers/BookmarkBridge_jni.h" + +@@ -79,12 +101,96 @@ using bookmarks::android::JavaBookmarkIdGetType; using content::BrowserThread; using power_bookmarks::PowerBookmarkMeta; @@ -994,7 +994,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse class BookmarkTitleComparer { public: explicit BookmarkTitleComparer(BookmarkBridge* bookmark_bridge, -@@ -242,6 +348,10 @@ BookmarkBridge::~BookmarkBridge() { +@@ -240,6 +346,10 @@ BookmarkBridge::~BookmarkBridge() { partner_bookmarks_shim_observation_.Reset(); bookmark_model_observation_.Reset(); profile_observation_.Reset(); @@ -1005,7 +1005,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse } void BookmarkBridge::Destroy(JNIEnv* env) { -@@ -818,6 +928,183 @@ jint BookmarkBridge::GetTotalBookmarkCount( +@@ -809,6 +919,183 @@ jint BookmarkBridge::GetTotalBookmarkCount( return count; } @@ -1220,7 +1220,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser public: // All of the injected pointers must be non-null and must outlive `this`. BookmarkBridge(Profile* profile, -@@ -97,6 +102,12 @@ class BookmarkBridge : public ProfileObserver, +@@ -95,6 +100,12 @@ class BookmarkBridge : public ProfileObserver, bool IsDoingExtensiveChanges(JNIEnv* env); @@ -1233,7 +1233,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser jboolean IsEditBookmarksEnabled(JNIEnv* env); void LoadEmptyPartnerBookmarkShimForTesting(JNIEnv* env); -@@ -109,6 +120,15 @@ class BookmarkBridge : public ProfileObserver, +@@ -107,6 +118,15 @@ class BookmarkBridge : public ProfileObserver, jlong id, jint type); @@ -1249,7 +1249,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser void GetAllFoldersWithDepths( JNIEnv* env, const base::android::JavaParamRef& j_folders_obj, -@@ -384,6 +404,9 @@ class BookmarkBridge : public ProfileObserver, +@@ -375,6 +395,9 @@ class BookmarkBridge : public ProfileObserver, void CreateOrDestroyAccountReadingListManagerIfNeeded(); const raw_ptr profile_; // weak @@ -1259,7 +1259,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser base::android::ScopedJavaGlobalRef java_bookmark_model_; const raw_ptr bookmark_model_; // weak const raw_ptr -@@ -400,6 +423,7 @@ class BookmarkBridge : public ProfileObserver, +@@ -391,6 +414,7 @@ class BookmarkBridge : public ProfileObserver, std::unique_ptr grouped_bookmark_actions_; PrefChangeRegistrar pref_change_registrar_; @@ -1267,7 +1267,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser // Information about the Partner bookmarks (must check for IsLoaded()). // This is owned by profile. -@@ -431,6 +455,10 @@ class BookmarkBridge : public ProfileObserver, +@@ -422,6 +446,10 @@ class BookmarkBridge : public ProfileObserver, bool suppress_observer_notifications_ = false; @@ -1349,7 +1349,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java --- a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java +++ b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationDialogCoordinator.java -@@ -37,18 +37,18 @@ import java.util.ArrayList; +@@ -38,18 +38,18 @@ import java.util.ArrayList; */ public class DownloadLocationDialogCoordinator implements ModalDialogProperties.Controller { @NonNull private DownloadLocationDialogController mController; @@ -1372,7 +1372,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse private boolean mLocationDialogManaged; /** -@@ -140,7 +140,7 @@ public class DownloadLocationDialogCoordinator implements ModalDialogProperties. +@@ -141,7 +141,7 @@ public class DownloadLocationDialogCoordinator implements ModalDialogProperties. * Called after retrieved the download directory options. * @param dirs An list of available download directories. */ @@ -1384,7 +1384,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse 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 -@@ -175,6 +175,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -180,6 +180,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kCacheActivityTaskID, &kCastDeviceFilter, &kClearOmniboxFocusAfterNavigation, @@ -1395,7 +1395,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 -@@ -499,6 +499,7 @@ public abstract class ChromeFeatureList { +@@ -504,6 +504,7 @@ public abstract class ChromeFeatureList { "UseLibunwindstackNativeUnwinderAndroid"; public static final String VERTICAL_AUTOMOTIVE_BACK_BUTTON_TOOLBAR = "VerticalAutomotiveBackButtonToolbar"; @@ -1458,7 +1458,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro /** * Whether Chrome is set as the default browser. -@@ -899,6 +901,7 @@ public final class ChromePreferenceKeys { +@@ -900,6 +902,7 @@ public final class ChromePreferenceKeys { AUTOFILL_ASSISTANT_PROACTIVE_HELP_ENABLED, APP_LAUNCH_LAST_KNOWN_ACTIVE_TAB_STATE, APP_LAUNCH_SEARCH_ENGINE_HAD_LOGO, @@ -1469,7 +1469,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -248,6 +248,24 @@ CHAR_LIMIT guidelines: +@@ -253,6 +253,24 @@ CHAR_LIMIT guidelines: Sites @@ -1497,7 +1497,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn --- a/chrome/common/BUILD.gn +++ b/chrome/common/BUILD.gn -@@ -401,6 +401,9 @@ static_library("common_lib") { +@@ -400,6 +400,9 @@ static_library("common_lib") { sources += [ "media/chrome_media_drm_bridge_client.cc", "media/chrome_media_drm_bridge_client.h", @@ -1510,7 +1510,7 @@ diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn --- a/chrome/utility/BUILD.gn +++ b/chrome/utility/BUILD.gn -@@ -84,8 +84,6 @@ static_library("utility") { +@@ -85,8 +85,6 @@ static_library("utility") { if (!is_android) { sources += [ @@ -1519,7 +1519,7 @@ diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn "importer/bookmarks_file_importer.cc", "importer/bookmarks_file_importer.h", "importer/external_process_importer_bridge.cc", -@@ -220,6 +218,11 @@ static_library("utility") { +@@ -224,6 +222,11 @@ static_library("utility") { ] } diff --git a/build/patches/Add-cromite-flags-support.patch b/build/patches/Add-cromite-flags-support.patch index 60ab0fe1..6f57d709 100644 --- a/build/patches/Add-cromite-flags-support.patch +++ b/build/patches/Add-cromite-flags-support.patch @@ -15,7 +15,7 @@ Need: bromite-build-utils.patch 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 | 8 +- + base/android/feature_map.cc | 5 + .../base/cached_flags/CachedFlag.java | 8 +- base/feature_list.cc | 78 +++++++++ base/feature_list.h | 72 ++++++++- @@ -88,7 +88,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html services/network/public/cpp/features.h | 1 + third_party/blink/common/features.cc | 1 + third_party/blink/public/common/features.h | 1 + - 74 files changed, 738 insertions(+), 20 deletions(-) + 74 files changed, 736 insertions(+), 19 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/placeholder.txt @@ -129,7 +129,7 @@ diff --git a/base/BUILD.gn b/base/BUILD.gn sources = [ "allocator/allocator_check.cc", "allocator/allocator_check.h", -@@ -1060,7 +1062,7 @@ component("base") { +@@ -1070,7 +1072,7 @@ component("base") { "//build/config/compiler:wglobal_constructors", ] @@ -141,23 +141,18 @@ 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 -@@ -46,9 +46,15 @@ static jboolean JNI_FeatureMap_IsEnabled( - JNIEnv* env, - jlong jfeature_map, - const android::JavaParamRef& jfeature_name) { -+ std::string feature_name = ConvertJavaStringToUTF8(env, jfeature_name); +@@ -43,6 +43,11 @@ const Feature* FeatureMap::FindFeatureExposedToJava( + static jboolean JNI_FeatureMap_IsEnabled(JNIEnv* env, + jlong jfeature_map, + std::string& feature_name) { + if (base::FeatureList::IsCromiteFlag(feature_name)) { + const base::Feature* cromite_feature = + base::FeatureList::GetCromiteFlag(feature_name); + return base::FeatureList::IsEnabled(*cromite_feature); + } FeatureMap* feature_map = reinterpret_cast(jfeature_map); - const base::Feature* feature = feature_map->FindFeatureExposedToJava( -- std::string_view(ConvertJavaStringToUTF8(env, jfeature_name))); -+ std::string_view(feature_name)); - return base::FeatureList::IsEnabled(*feature); - } - + 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 @@ -186,7 +181,7 @@ diff --git a/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.jav diff --git a/base/feature_list.cc b/base/feature_list.cc --- a/base/feature_list.cc +++ b/base/feature_list.cc -@@ -37,6 +37,31 @@ +@@ -38,6 +38,31 @@ namespace base { @@ -218,7 +213,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc namespace { // Pointer to the FeatureList instance singleton that was set via -@@ -464,6 +489,48 @@ bool FeatureList::IsEnabled(const Feature& feature) { +@@ -466,6 +491,48 @@ bool FeatureList::IsEnabled(const Feature& feature) { return g_feature_list_instance->IsFeatureEnabled(feature); } @@ -265,9 +260,9 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc +} + // static - bool FeatureList::IsValidFeatureOrFieldTrialName(StringPiece name) { + bool FeatureList::IsValidFeatureOrFieldTrialName(std::string_view name) { return IsStringASCII(name) && name.find_first_of(",<*") == std::string::npos; -@@ -710,6 +777,17 @@ void FeatureList::VisitFeaturesAndParams(FeatureVisitor& visitor) { +@@ -712,6 +779,17 @@ void FeatureList::VisitFeaturesAndParams(FeatureVisitor& visitor) { void FeatureList::FinalizeInitialization() { DCHECK(!initialized_); @@ -299,9 +294,9 @@ diff --git a/base/feature_list.h b/base/feature_list.h + : name(name), default_state(default_state), + is_cromite(cromite), is_new(is_new_flag) { #if BUILDFLAG(ENABLE_BANNED_BASE_FEATURE_PREFIX) - if (StringPiece(name).find(BUILDFLAG(BANNED_BASE_FEATURE_PREFIX)) == 0) { - LOG(FATAL) << "Invalid feature name " << name << " starts with " -@@ -126,6 +128,9 @@ struct BASE_EXPORT LOGICALLY_CONST Feature { + if (std::string_view(name).find(BUILDFLAG(BANNED_BASE_FEATURE_PREFIX)) == + 0) { +@@ -127,6 +129,9 @@ struct BASE_EXPORT LOGICALLY_CONST Feature { // command line switch. const FeatureState default_state; @@ -311,7 +306,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h private: friend class FeatureList; -@@ -401,6 +406,11 @@ class BASE_EXPORT FeatureList { +@@ -402,6 +407,11 @@ class BASE_EXPORT FeatureList { // instance, which is checked in builds with DCHECKs enabled. static bool IsEnabled(const Feature& feature); @@ -323,7 +318,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 -@@ -665,4 +675,62 @@ class BASE_EXPORT FeatureList { +@@ -667,4 +677,62 @@ class BASE_EXPORT FeatureList { } // namespace base @@ -538,7 +533,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 -@@ -368,6 +368,10 @@ using flags_ui::kOsLinux; +@@ -370,6 +370,10 @@ using flags_ui::kOsLinux; using flags_ui::kOsMac; using flags_ui::kOsWin; @@ -549,9 +544,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc namespace about_flags { namespace { -@@ -3776,6 +3780,10 @@ const FeatureEntry::FeatureVariation kDefaultBrowserPromptRefreshVariations[] = - kDefaultBrowserPromptRefreshTesting, - std::size(kDefaultBrowserPromptRefreshTesting), nullptr}}; +@@ -3879,6 +3883,10 @@ const FeatureEntry::FeatureVariation kDefaultBrowserPromptRefreshVariations[] = + kDefaultBrowserPromptRefreshAppMenuItem, + std::size(kDefaultBrowserPromptRefreshAppMenuItem), nullptr}}; +#define FEATURE_PARAM_SECTION +#include "cromite_flags/chrome_browser_about_flags_cc.inc" @@ -560,7 +555,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. -@@ -3802,6 +3810,9 @@ const FeatureEntry::FeatureVariation kDefaultBrowserPromptRefreshVariations[] = +@@ -3905,6 +3913,9 @@ const FeatureEntry::FeatureVariation kDefaultBrowserPromptRefreshVariations[] = const FeatureEntry kFeatureEntries[] = { // Include generated flags for flag unexpiry; see //docs/flag_expiry.md and // //tools/flags/generate_unexpire_flags.py. @@ -573,7 +568,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 -@@ -400,4 +400,5 @@ BASE_FEATURE(kWebUsbDeviceDetection, +@@ -422,4 +422,5 @@ BASE_FEATURE(kWebUsbDeviceDetection, "WebUsbDeviceDetection", base::FEATURE_ENABLED_BY_DEFAULT); @@ -621,9 +616,9 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -1011,5 +1011,6 @@ BASE_FEATURE(kWebApkIconUpdateThreshold, - "WebApkIconUpdateThreshold", - base::FEATURE_ENABLED_BY_DEFAULT); +@@ -1011,5 +1011,6 @@ BASE_FEATURE(kWebApkAllowIconUpdate, + "WebApkAllowIconUpdate", + base::FEATURE_DISABLED_BY_DEFAULT); +#include "cromite_flags/chrome_browser_flags_android_chrome_feature_list_cc.inc" } // namespace android @@ -631,7 +626,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 -@@ -195,6 +195,7 @@ constexpr base::FeatureParam kAuxiliarySearchMaxTabsCountParam( +@@ -191,6 +191,7 @@ constexpr base::FeatureParam kAuxiliarySearchMaxTabsCountParam( "auxiliary_search_max_donation_tab", 100); @@ -642,7 +637,7 @@ 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 -@@ -13,6 +13,10 @@ import org.chromium.base.cached_flags.DoubleCachedFieldTrialParameter; +@@ -14,6 +14,10 @@ import org.chromium.base.cached_flags.DoubleCachedFieldTrialParameter; import org.chromium.base.cached_flags.IntCachedFieldTrialParameter; import org.chromium.base.cached_flags.StringCachedFieldTrialParameter; @@ -653,16 +648,16 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f import java.util.List; import java.util.Map; -@@ -700,7 +704,7 @@ public abstract class ChromeFeatureList { +@@ -701,7 +705,7 @@ public abstract class ChromeFeatureList { public static final CachedFlag sVerticalAutomotiveBackButtonToolbar = newCachedFlag(VERTICAL_AUTOMOTIVE_BACK_BUTTON_TOOLBAR, true); - public static final List sFlagsCachedFullBrowser = + public static final List sFlagsCachedFullBrowserChromium = List.of( + sAccountReauthenticationRecentTimeWindow, sAllowUserCertificates, - sAndroidAppIntegration, -@@ -793,6 +797,13 @@ public abstract class ChromeFeatureList { +@@ -794,6 +798,13 @@ public abstract class ChromeFeatureList { sUseLibunwindstackNativeUnwinderAndroid, sVerticalAutomotiveBackButtonToolbar); @@ -829,7 +824,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 -@@ -503,4 +503,5 @@ BASE_FEATURE(kStopLoadingAnimationForHiddenWindow, +@@ -523,4 +523,5 @@ BASE_FEATURE(kStopLoadingAnimationForHiddenWindow, "StopLoadingAnimationForHiddenWindow", base::FEATURE_ENABLED_BY_DEFAULT); @@ -838,8 +833,8 @@ 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 -@@ -1660,4 +1660,5 @@ BASE_FEATURE(kSupportsRtcWakeOver24Hours, - base::FEATURE_ENABLED_BY_DEFAULT); +@@ -1666,4 +1666,5 @@ BASE_FEATURE(kEventBasedLogUpload, + base::FEATURE_DISABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_CHROMEOS_ASH) +#include "cromite_flags/chrome_common_chrome_features_cc.inc" @@ -883,10 +878,10 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium // TOOD(crbug.com/1451550): This is an interim solution. In the long-term, we should migrate // away from a switch with dynamically changing summaries onto a radio group. /** -@@ -46,6 +54,18 @@ public class ChromeSwitchPreference extends SwitchPreferenceCompat { - super(context, attrs); +@@ -49,6 +57,18 @@ public class ChromeSwitchPreference extends SwitchPreferenceCompat { mHasCustomLayout = ManagedPreferencesUtils.isCustomLayoutApplied(context, attrs); + mUseSummaryAsTitle = true; + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.ChromeBasePreference); + mFeatureName = a.getString(R.styleable.ChromeBasePreference_featureName); + mNeedRestart = a.getBoolean(R.styleable.ChromeBasePreference_needRestart, false); @@ -901,7 +896,7 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium + return mNeedRestart; } - /** Sets the ManagedPreferenceDelegate which will determine whether this preference is managed. */ + /** diff --git a/components/components_strings.grd b/components/components_strings.grd --- a/components/components_strings.grd +++ b/components/components_strings.grd @@ -910,15 +905,15 @@ 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 @@ -112,5 +112,6 @@ BASE_FEATURE(kIndexedHostContentSettingsMap, "IndexedHostContentSettingsMap", - base::FEATURE_DISABLED_BY_DEFAULT); + base::FEATURE_ENABLED_BY_DEFAULT); +#include "cromite_flags/components_content_settings_core_common_features_cc.inc" } // namespace features @@ -1346,7 +1341,7 @@ diff --git a/components/version_ui/version_handler_helper.cc b/components/versio diff --git a/content/common/features.cc b/content/common/features.cc --- a/content/common/features.cc +++ b/content/common/features.cc -@@ -595,4 +595,5 @@ BASE_FEATURE(kWindowOpenFileSelectFix, +@@ -574,4 +574,5 @@ BASE_FEATURE(kWindowOpenFileSelectFix, // Please keep features in alphabetical order. @@ -1355,7 +1350,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 -@@ -1402,4 +1402,5 @@ bool IsVideoCaptureServiceEnabledForBrowserProcess() { +@@ -1287,4 +1287,5 @@ bool IsVideoCaptureServiceEnabledForBrowserProcess() { VideoCaptureServiceConfiguration::kEnabledForBrowserProcess; } @@ -1364,7 +1359,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 -@@ -336,6 +336,7 @@ CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebRtcPipeWireCapturer); +@@ -280,6 +280,7 @@ CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebRtcPipeWireCapturer); CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForOutOfProcess(); CONTENT_EXPORT bool IsVideoCaptureServiceEnabledForBrowserProcess(); @@ -1662,7 +1657,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 -@@ -1909,5 +1909,5 @@ uint32_t GetPassthroughAudioFormats() { +@@ -1924,5 +1924,5 @@ uint32_t GetPassthroughAudioFormats() { return 0; #endif // BUILDFLAG(ENABLE_PASSTHROUGH_AUDIO_CODECS) } @@ -1672,7 +1667,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 -@@ -557,5 +557,5 @@ MEDIA_EXPORT OOPVDMode GetOutOfProcessVideoDecodingMode(); +@@ -561,5 +561,5 @@ MEDIA_EXPORT OOPVDMode GetOutOfProcessVideoDecodingMode(); MEDIA_EXPORT uint32_t GetPassthroughAudioFormats(); } // namespace media @@ -1682,18 +1677,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 -@@ -535,4 +535,5 @@ BASE_FEATURE(kReduceIPAddressChangeNotification, - base::FEATURE_ENABLED_BY_DEFAULT); - #endif // BUILDFLAG(IS_MAC) +@@ -561,4 +561,5 @@ BASE_FEATURE(kDeviceBoundSessions, + "DeviceBoundSessions", + base::FEATURE_DISABLED_BY_DEFAULT); +#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 -@@ -521,6 +521,7 @@ NET_EXPORT BASE_DECLARE_FEATURE(kTruncateBodyToContentLength); - NET_EXPORT BASE_DECLARE_FEATURE(kReduceIPAddressChangeNotification); - #endif // BUILDFLAG(IS_MAC) +@@ -549,6 +549,7 @@ NET_EXPORT BASE_DECLARE_FEATURE(kReduceIPAddressChangeNotification); + // the server assert sessions (and cookies) are bound to a specific device. + NET_EXPORT BASE_DECLARE_FEATURE(kDeviceBoundSessions); +#include "cromite_flags/net_base_features_h.inc" } // namespace net::features @@ -1702,18 +1697,18 @@ diff --git a/net/base/features.h b/net/base/features.h diff --git a/services/network/public/cpp/features.cc b/services/network/public/cpp/features.cc --- a/services/network/public/cpp/features.cc +++ b/services/network/public/cpp/features.cc -@@ -475,4 +475,5 @@ const base::FeatureParam kSkipTpcdMitigationsForAdsTopLevelTrial{ - /*name=*/"SkipTpcdMitigationsForAdsTopLevelTrial", - /*default_value=*/false}; +@@ -492,4 +492,5 @@ BASE_FEATURE(kDocumentIsolationPolicy, + "DocumentIsolationPolicy", + base::FEATURE_DISABLED_BY_DEFAULT); +#include "cromite_flags/services_network_public_cpp_features_cc.inc" } // namespace network::features diff --git a/services/network/public/cpp/features.h b/services/network/public/cpp/features.h --- a/services/network/public/cpp/features.h +++ b/services/network/public/cpp/features.h -@@ -193,6 +193,7 @@ extern const base::FeatureParam kSkipTpcdMitigationsForAdsTrial; - COMPONENT_EXPORT(NETWORK_CPP) - extern const base::FeatureParam kSkipTpcdMitigationsForAdsTopLevelTrial; +@@ -200,6 +200,7 @@ BASE_DECLARE_FEATURE(kAvoidResourceRequestCopies); + + COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kDocumentIsolationPolicy); +#include "cromite_flags/services_network_public_cpp_features_h.inc" } // namespace features @@ -1722,7 +1717,7 @@ diff --git a/services/network/public/cpp/features.h b/services/network/public/cp diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc --- a/third_party/blink/common/features.cc +++ b/third_party/blink/common/features.cc -@@ -2601,5 +2601,6 @@ BASE_FEATURE(kNoThrottlingVisibleAgent, +@@ -2674,5 +2674,6 @@ BASE_FEATURE(kNoThrottlingVisibleAgent, "NoThrottlingVisibleAgent", base::FEATURE_DISABLED_BY_DEFAULT); @@ -1732,7 +1727,7 @@ diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/fea diff --git a/third_party/blink/public/common/features.h b/third_party/blink/public/common/features.h --- a/third_party/blink/public/common/features.h +++ b/third_party/blink/public/common/features.h -@@ -1682,6 +1682,7 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE( +@@ -1710,6 +1710,7 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE( // Don't throttle frames that are same-agent with with a visible frame. BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kNoThrottlingVisibleAgent); diff --git a/build/patches/Add-custom-tab-intents-privacy-option.patch b/build/patches/Add-custom-tab-intents-privacy-option.patch index e70fc81b..ca2664ce 100644 --- a/build/patches/Add-custom-tab-intents-privacy-option.patch +++ b/build/patches/Add-custom-tab-intents-privacy-option.patch @@ -46,7 +46,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/LaunchIntentDispatcher.java b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java --- a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDispatcher.java -@@ -53,6 +53,9 @@ import java.lang.annotation.Retention; +@@ -52,6 +52,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.Set; @@ -56,7 +56,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis /** * Dispatches incoming intents to the appropriate activity based on the current configuration and * Intent fired. -@@ -242,6 +245,9 @@ public class LaunchIntentDispatcher { +@@ -239,6 +242,9 @@ public class LaunchIntentDispatcher { */ public static boolean isCustomTabIntent(Intent intent) { if (intent == null) return false; @@ -66,7 +66,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis Log.w( TAG, "CustomTabsIntent#shouldAlwaysUseBrowserUI() = " -@@ -263,6 +269,10 @@ public class LaunchIntentDispatcher { +@@ -260,6 +266,10 @@ public class LaunchIntentDispatcher { newIntent.setData(uri); newIntent.setClassName(context, CustomTabActivity.class.getName()); @@ -77,7 +77,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis // Since configureIntentForResizableCustomTab() might change the componenet/class // associated with the passed intent, it needs to be called after #setClassName(context, // CustomTabActivity.class.getName()); -@@ -411,6 +421,17 @@ public class LaunchIntentDispatcher { +@@ -407,6 +417,17 @@ public class LaunchIntentDispatcher { if (Intent.ACTION_VIEW.equals(newIntent.getAction()) && !IntentHandler.wasIntentSenderChrome(newIntent)) { @@ -98,7 +98,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java -@@ -853,6 +853,7 @@ public class CustomTabsConnection { +@@ -854,6 +854,7 @@ public class CustomTabsConnection { PostTask.postTask( TaskTraits.UI_DEFAULT, () -> { @@ -142,7 +142,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { getActivity().setTitle(R.string.prefs_privacy_security); -@@ -297,6 +300,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -298,6 +301,9 @@ public class PrivacySettings extends ChromeBaseSettingsFragment new SpanApplier.SpanInfo("", "", servicesLink)); } @@ -152,7 +152,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String key = preference.getKey(); -@@ -313,6 +319,14 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -314,6 +320,14 @@ public class PrivacySettings extends ChromeBaseSettingsFragment } else if (PREF_SEARCH_SUGGESTIONS.equals(key)) { UserPrefs.get(getProfile()) .setBoolean(Pref.SEARCH_SUGGEST_ENABLED, (boolean) newValue); @@ -167,7 +167,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } return true; } -@@ -335,6 +349,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -336,6 +350,16 @@ public class PrivacySettings extends ChromeBaseSettingsFragment UserPrefs.get(getProfile()).getBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED)); } @@ -203,7 +203,7 @@ diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAsso 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 -@@ -5204,6 +5204,20 @@ To change this setting, BEGIN_LINKclear the Chrome da +@@ -5217,6 +5217,20 @@ To change this setting, BEGIN_LINKclear the Chrome da Resume diff --git a/build/patches/Add-exit-menu-item.patch b/build/patches/Add-exit-menu-item.patch index 3d77823f..5ec82ba8 100644 --- a/build/patches/Add-exit-menu-item.patch +++ b/build/patches/Add-exit-menu-item.patch @@ -67,7 +67,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct /** * This is the main activity for ChromeMobile when not running in document mode. All the tabs are * accessible via a chrome specific tab switching UI. -@@ -2958,6 +2960,8 @@ public class ChromeTabbedActivity extends ChromeActivity +@@ -2571,6 +2572,11 @@ public abstract class ChromeActivity return true; } @@ -102,7 +102,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv 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 -@@ -3797,6 +3797,9 @@ To change this setting, BEGIN_LINKclear the Chrome da +@@ -3846,6 +3846,9 @@ To change this setting, BEGIN_LINKclear the Chrome da Dark theme diff --git a/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch b/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch index 6e785ee1..43888d2a 100644 --- a/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch +++ b/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch @@ -26,7 +26,7 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ #include "base/feature_list.h" #include "base/format_macros.h" #include "base/functional/bind.h" -@@ -407,6 +408,15 @@ AutocompleteController::AutocompleteController( +@@ -417,6 +418,15 @@ AutocompleteController::AutocompleteController( provider_client_->GetOmniboxTriggeredFeatureService()), steady_state_omnibox_position_( metrics::OmniboxEventProto::UNKNOWN_POSITION) { @@ -66,7 +66,7 @@ diff --git a/components/omnibox/browser/search_provider.cc b/components/omnibox/ #include "base/functional/callback.h" #include "base/i18n/break_iterator.h" #include "base/i18n/case_conversion.h" -@@ -644,6 +645,9 @@ void SearchProvider::Run(bool query_is_private) { +@@ -647,6 +648,9 @@ void SearchProvider::Run(bool query_is_private) { } void SearchProvider::DoHistoryQuery(bool minimal_changes) { diff --git a/build/patches/Add-flag-to-disable-IPv6-probes.patch b/build/patches/Add-flag-to-disable-IPv6-probes.patch index dfaaffec..3f00d03c 100644 --- a/build/patches/Add-flag-to-disable-IPv6-probes.patch +++ b/build/patches/Add-flag-to-disable-IPv6-probes.patch @@ -45,7 +45,7 @@ new file mode 100644 diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1037,6 +1037,7 @@ component("net") { +@@ -1045,6 +1045,7 @@ component("net") { "//build:chromeos_buildflags", "//components/miracle_parameter/common", "//net/http:transport_security_state_generated_files", @@ -56,7 +56,7 @@ diff --git a/net/BUILD.gn b/net/BUILD.gn diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc --- a/net/dns/host_resolver_manager.cc +++ b/net/dns/host_resolver_manager.cc -@@ -112,6 +112,7 @@ +@@ -113,6 +113,7 @@ #include "net/log/net_log_event_type.h" #include "net/log/net_log_source.h" #include "net/log/net_log_source_type.h" @@ -64,7 +64,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc #include "net/log/net_log_with_source.h" #include "net/socket/client_socket_factory.h" #include "net/url_request/url_request_context.h" -@@ -1351,6 +1352,13 @@ int HostResolverManager::StartIPv6ReachabilityCheck( +@@ -1388,6 +1389,13 @@ int HostResolverManager::StartIPv6ReachabilityCheck( return OK; } diff --git a/build/patches/Add-flag-to-disable-vibration.patch b/build/patches/Add-flag-to-disable-vibration.patch index 0638fd12..796c4663 100644 --- a/build/patches/Add-flag-to-disable-vibration.patch +++ b/build/patches/Add-flag-to-disable-vibration.patch @@ -20,7 +20,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc --- a/content/child/runtime_features.cc +++ b/content/child/runtime_features.cc -@@ -102,6 +102,7 @@ void SetRuntimeFeatureDefaultsForPlatform( +@@ -103,6 +103,7 @@ void SetRuntimeFeatureDefaultsForPlatform( if (command_line.HasSwitch(switches::kDisableMediaSessionAPI)) { WebRuntimeFeatures::EnableMediaSession(false); } @@ -104,7 +104,7 @@ diff --git a/third_party/blink/renderer/platform/exported/web_runtime_features.c diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -648,6 +648,10 @@ +@@ -660,6 +660,10 @@ status: {"Android": "stable"}, base_feature: "none", }, diff --git a/build/patches/Add-kill-switch-for-unsupported-clangd-flags.patch b/build/patches/Add-kill-switch-for-unsupported-clangd-flags.patch index a394157c..42ae06ae 100644 --- a/build/patches/Add-kill-switch-for-unsupported-clangd-flags.patch +++ b/build/patches/Add-kill-switch-for-unsupported-clangd-flags.patch @@ -14,7 +14,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn --- a/build/config/compiler/BUILD.gn +++ b/build/config/compiler/BUILD.gn -@@ -1902,7 +1902,6 @@ config("default_warnings") { +@@ -1926,7 +1926,6 @@ config("default_warnings") { # TODO(https://crbug.com/1490607): Fix and re-enable. "-Wno-thread-safety-reference-return", ] @@ -22,7 +22,7 @@ diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn cflags_cc += [ # TODO(crbug.com/328490295): Fix and re-enable for C flags. "-Wenum-compare-conditional", -@@ -1914,6 +1913,15 @@ config("default_warnings") { +@@ -1938,6 +1937,15 @@ config("default_warnings") { "-Wno-c++11-narrowing-const-reference", ] } @@ -41,7 +41,7 @@ diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn diff --git a/build_overrides/build.gni b/build_overrides/build.gni --- a/build_overrides/build.gni +++ b/build_overrides/build.gni -@@ -64,6 +64,9 @@ declare_args() { +@@ -58,6 +58,9 @@ declare_args() { # to lack of toolchain support. gtest_enable_absl_printers = !is_nacl diff --git a/build/patches/Add-lifetime-options-for-permissions.patch b/build/patches/Add-lifetime-options-for-permissions.patch index 154c2e24..f58ce42f 100644 --- a/build/patches/Add-lifetime-options-for-permissions.patch +++ b/build/patches/Add-lifetime-options-for-permissions.patch @@ -228,10 +228,10 @@ diff --git a/chrome/browser/permissions/one_time_permissions_tracker_factory.cc diff --git a/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc b/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc --- a/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc +++ b/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc -@@ -238,7 +238,7 @@ void EmbeddedPermissionPrompt::Allow() { - } +@@ -336,7 +336,7 @@ void EmbeddedPermissionPrompt::Allow() { void EmbeddedPermissionPrompt::AllowThisTime() { + PrecalculateVariantsForMetrics(); - delegate_->AcceptThisTime(); + delegate_->AcceptThisTime(content_settings::mojom::LifetimeMode::ONLY_THIS_TIME); CloseCurrentViewAndMaybeShowNext(/*first_prompt=*/false); @@ -240,7 +240,7 @@ diff --git a/chrome/browser/ui/views/permissions/embedded_permission_prompt.cc b diff --git a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc b/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc --- a/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc +++ b/chrome/browser/ui/views/permissions/permission_prompt_bubble_base_view.cc -@@ -264,7 +264,7 @@ void PermissionPromptBubbleBaseView::RunButtonCallback(int button_id) { +@@ -269,7 +269,7 @@ void PermissionPromptBubbleBaseView::RunButtonCallback(int button_id) { delegate_->Accept(); return; case PermissionDialogButton::kAcceptOnce: @@ -263,7 +263,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java -@@ -559,6 +559,11 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -557,6 +557,11 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment } } @@ -275,7 +275,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c private void setUpClearDataPreference() { ClearWebsiteStorage preference = findPreference(PREF_CLEAR_DATA); long usage = mSite.getTotalUsage(); -@@ -1070,6 +1075,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1083,6 +1088,10 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment if (contentType == mHighlightedPermission) { switchPreference.setBackgroundColor(mHighlightColor); } @@ -301,7 +301,7 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/components/browser_ui/strings/android/browser_ui_strings.grd --- a/components/browser_ui/strings/android/browser_ui_strings.grd +++ b/components/browser_ui/strings/android/browser_ui_strings.grd -@@ -673,6 +673,11 @@ +@@ -661,6 +661,11 @@ URL truncated @@ -316,7 +316,7 @@ diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/comp diff --git a/components/content_settings/core/browser/content_settings_utils.cc b/components/content_settings/core/browser/content_settings_utils.cc --- a/components/content_settings/core/browser/content_settings_utils.cc +++ b/components/content_settings/core/browser/content_settings_utils.cc -@@ -174,6 +174,42 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints) { +@@ -155,6 +155,42 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints) { return constraints.session_model() == mojom::SessionModel::DURABLE; } @@ -362,7 +362,7 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc diff --git a/components/content_settings/core/browser/content_settings_utils.h b/components/content_settings/core/browser/content_settings_utils.h --- a/components/content_settings/core/browser/content_settings_utils.h +++ b/components/content_settings/core/browser/content_settings_utils.h -@@ -73,6 +73,12 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints); +@@ -74,6 +74,12 @@ bool IsConstraintPersistent(const ContentSettingConstraints& constraints); // Returns whether the given type supports tracking last_visit timestamps. bool CanTrackLastVisit(ContentSettingsType type); @@ -378,7 +378,7 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.h b diff --git a/components/content_settings/core/common/content_settings_enums.mojom b/components/content_settings/core/common/content_settings_enums.mojom --- a/components/content_settings/core/common/content_settings_enums.mojom +++ b/components/content_settings/core/common/content_settings_enums.mojom -@@ -39,3 +39,12 @@ enum SessionModel { +@@ -57,3 +57,12 @@ enum SessionModel { // tab from the origin is closed. ONE_TIME, }; @@ -394,7 +394,7 @@ diff --git a/components/content_settings/core/common/content_settings_enums.mojo diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java --- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoController.java -@@ -378,9 +378,9 @@ public class PageInfoController +@@ -393,9 +393,9 @@ public class PageInfoController String name, String nameMidSentence, int type, @@ -493,7 +493,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.cc --- a/components/page_info/page_info.cc +++ b/components/page_info/page_info.cc -@@ -1157,6 +1157,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, +@@ -1175,6 +1175,8 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, permission_info.is_one_time = (info.metadata.session_model() == content_settings::mojom::SessionModel::ONE_TIME); @@ -505,7 +505,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. diff --git a/components/page_info/page_info.h b/components/page_info/page_info.h --- a/components/page_info/page_info.h +++ b/components/page_info/page_info.h -@@ -151,6 +151,7 @@ class PageInfo : private content_settings::CookieControlsObserver { +@@ -150,6 +150,7 @@ class PageInfo : private content_settings::CookieControlsObserver, content_settings::SETTING_SOURCE_NONE; // Whether the permission is a one-time grant. bool is_one_time = false; @@ -524,8 +524,8 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per import java.util.ArrayList; import java.util.List; -@@ -57,6 +58,9 @@ public class PermissionDialogDelegate { - /** The {@link ContentSettingsType}s requested in this dialog. */ +@@ -60,6 +61,9 @@ public class PermissionDialogDelegate { + /** The {@link ContentSettingsType}s requested in this dialog. */ private int[] mContentSettingsTypes; + /** Lifetime option selected by the user. */ @@ -534,7 +534,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per /** * Defines a (potentially empty) list of ranges represented as pairs of , * which shall be used by the UI to format the specified ranges as bold text. -@@ -110,6 +114,15 @@ public class PermissionDialogDelegate { +@@ -117,6 +121,15 @@ public class PermissionDialogDelegate { .acceptThisTime(mNativeDelegatePtr, PermissionDialogDelegate.this); } @@ -572,7 +572,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per /** This class creates the model for the permission dialog. */ class PermissionDialogModelFactory { public static PropertyModel getModel( -@@ -64,6 +76,74 @@ class PermissionDialogModelFactory { +@@ -72,6 +84,74 @@ class PermissionDialogModelFactory { ModalDialogProperties.NEGATIVE_BUTTON_TEXT, delegate.getNegativeButtonText()); } @@ -651,7 +651,7 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per diff --git a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc --- a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc +++ b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc -@@ -144,6 +144,11 @@ void PermissionDialogJavaDelegate::DismissDialog() { +@@ -150,6 +150,11 @@ void PermissionDialogJavaDelegate::DismissDialog() { Java_PermissionDialogDelegate_dismissFromNative(env, j_delegate_); } @@ -663,7 +663,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ // static void PermissionDialogDelegate::Create( content::WebContents* web_contents, -@@ -172,6 +177,13 @@ PermissionDialogDelegate* PermissionDialogDelegate::CreateForTesting( +@@ -178,6 +183,13 @@ PermissionDialogDelegate* PermissionDialogDelegate::CreateForTesting( void PermissionDialogDelegate::Accept(JNIEnv* env, const JavaParamRef& obj) { CHECK(permission_prompt_); @@ -677,7 +677,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ permission_prompt_->Accept(); } -@@ -179,12 +191,22 @@ void PermissionDialogDelegate::AcceptThisTime( +@@ -185,12 +197,22 @@ void PermissionDialogDelegate::AcceptThisTime( JNIEnv* env, const JavaParamRef& obj) { CHECK(permission_prompt_); @@ -715,7 +715,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ diff --git a/components/permissions/android/permission_prompt/permission_prompt_android.cc b/components/permissions/android/permission_prompt/permission_prompt_android.cc --- a/components/permissions/android/permission_prompt/permission_prompt_android.cc +++ b/components/permissions/android/permission_prompt/permission_prompt_android.cc -@@ -53,8 +53,12 @@ void PermissionPromptAndroid::Accept() { +@@ -58,8 +58,12 @@ void PermissionPromptAndroid::Accept() { delegate_->Accept(); } @@ -733,7 +733,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_prompt_ diff --git a/components/permissions/android/permission_prompt/permission_prompt_android.h b/components/permissions/android/permission_prompt/permission_prompt_android.h --- a/components/permissions/android/permission_prompt/permission_prompt_android.h +++ b/components/permissions/android/permission_prompt/permission_prompt_android.h -@@ -44,8 +44,9 @@ class PermissionPromptAndroid : public PermissionPrompt { +@@ -46,8 +46,9 @@ class PermissionPromptAndroid : public PermissionPrompt { void Closing(); void Accept(); @@ -1091,7 +1091,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio PermissionRequest::~PermissionRequest() { DCHECK(delete_callback_.is_null()); } -@@ -355,19 +363,37 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const { +@@ -364,19 +372,37 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const { return request_type() == RequestType::kStorageAccess; } @@ -1170,7 +1170,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission // Called when the user has cancelled the permission request. This // corresponds to a denial, but is segregated in case the context needs to -@@ -219,6 +228,9 @@ class PermissionRequest { +@@ -221,6 +230,9 @@ class PermissionRequest { // Called once a decision is made about the permission. PermissionDecidedCallback permission_decided_callback_; @@ -1192,7 +1192,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p request->RequestFinished(); return; } -@@ -232,7 +232,7 @@ void PermissionRequestManager::AddRequest( +@@ -233,7 +233,7 @@ void PermissionRequestManager::AddRequest( if (auto_approval_origin) { if (url::Origin::Create(request->requesting_origin()) == auto_approval_origin.value()) { @@ -1201,7 +1201,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } request->RequestFinished(); return; -@@ -593,7 +593,8 @@ void PermissionRequestManager::Accept() { +@@ -594,7 +594,8 @@ void PermissionRequestManager::Accept() { (*requests_iter)->request_type(), PermissionAction::GRANTED); PermissionGrantedIncludingDuplicates(*requests_iter, @@ -1211,7 +1211,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p #if !BUILDFLAG(IS_ANDROID) std::optional content_settings_type = -@@ -611,7 +612,7 @@ void PermissionRequestManager::Accept() { +@@ -612,7 +613,7 @@ void PermissionRequestManager::Accept() { CurrentRequestsDecided(PermissionAction::GRANTED); } @@ -1220,7 +1220,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p if (ignore_callbacks_from_prompt_) return; DCHECK(view_); -@@ -623,7 +624,8 @@ void PermissionRequestManager::AcceptThisTime() { +@@ -624,7 +625,8 @@ void PermissionRequestManager::AcceptThisTime() { (*requests_iter)->request_type(), PermissionAction::GRANTED_ONCE); PermissionGrantedIncludingDuplicates(*requests_iter, @@ -1230,7 +1230,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } NotifyRequestDecided(PermissionAction::GRANTED_ONCE); -@@ -631,6 +633,15 @@ void PermissionRequestManager::AcceptThisTime() { +@@ -632,6 +634,15 @@ void PermissionRequestManager::AcceptThisTime() { } void PermissionRequestManager::Deny() { @@ -1246,7 +1246,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p if (ignore_callbacks_from_prompt_) return; DCHECK(view_); -@@ -654,7 +665,7 @@ void PermissionRequestManager::Deny() { +@@ -655,7 +666,7 @@ void PermissionRequestManager::Deny() { StorePermissionActionForUMA((*requests_iter)->requesting_origin(), (*requests_iter)->request_type(), PermissionAction::DENIED); @@ -1255,7 +1255,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p } NotifyRequestDecided(PermissionAction::DENIED); -@@ -1213,32 +1224,32 @@ PermissionRequestManager::VisitDuplicateRequests( +@@ -1218,32 +1229,32 @@ PermissionRequestManager::VisitDuplicateRequests( void PermissionRequestManager::PermissionGrantedIncludingDuplicates( PermissionRequest* request, @@ -1298,7 +1298,7 @@ diff --git a/components/permissions/permission_request_manager.cc b/components/p request); } -@@ -1495,7 +1506,7 @@ void PermissionRequestManager::DoAutoResponseForTesting() { +@@ -1500,7 +1511,7 @@ void PermissionRequestManager::DoAutoResponseForTesting() { } switch (auto_response_for_test_) { case ACCEPT_ONCE: diff --git a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch index d6e6ae6f..be8bc40e 100644 --- a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch +++ b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch @@ -7,7 +7,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/android/java/res/menu/main_menu.xml | 7 ++ .../chrome/browser/ChromeTabbedActivity.java | 24 +++++++ .../browser/bookmarks/BookmarkBridge.java | 67 +++++++++++++++++++ - .../bookmarks/android/bookmark_bridge.cc | 42 ++++++++++++ + .../bookmarks/android/bookmark_bridge.cc | 44 +++++++++++- .../bookmarks/android/bookmark_bridge.h | 8 +++ .../browser/bookmarks/bookmark_html_writer.cc | 11 ++- .../dialogs/DownloadLocationCustomView.java | 4 +- @@ -26,7 +26,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/bookmarks/browser/bookmark_uuids.h | 1 + components/bookmarks/browser/model_loader.cc | 8 ++- .../bookmark_specifics_conversions.cc | 1 + - 22 files changed, 240 insertions(+), 14 deletions(-) + 22 files changed, 241 insertions(+), 15 deletions(-) diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml --- a/chrome/android/java/res/menu/main_menu.xml @@ -63,7 +63,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.compositor.layouts.Layout; import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome; import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromePhone; -@@ -2983,6 +2984,8 @@ public class ChromeTabbedActivity extends ChromeActivity getTabModelSelector().closeAllTabs()); RecordUserAction.record("MobileMenuCloseAllTabs"); @@ -72,7 +72,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct } else if (id == R.id.close_all_incognito_tabs_menu_id) { // Close only incognito tabs CloseAllTabsDialog.show( -@@ -3054,6 +3057,27 @@ public class ChromeTabbedActivity extends ChromeActivity mObservers = new ObserverList<>(); @@ -130,7 +130,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm private long mNativeBookmarkBridge; private boolean mIsDestroyed; private boolean mIsDoingExtensiveChanges; -@@ -423,6 +431,16 @@ class BookmarkBridge { +@@ -424,6 +432,16 @@ class BookmarkBridge { return mMobileFolderId; } @@ -147,7 +147,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm /** Returns Id representing the special "other" folder from bookmark model. */ public BookmarkId getOtherFolderId() { ThreadUtils.assertOnUiThread(); -@@ -1113,6 +1131,50 @@ class BookmarkBridge { +@@ -1114,6 +1132,50 @@ class BookmarkBridge { .addToReadingList(mNativeBookmarkBridge, parentId, title, url); } @@ -198,9 +198,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm /** * Helper method to mark an item as read. * -@@ -1366,6 +1428,9 @@ class BookmarkBridge { - - BookmarkId getMostRecentlyAddedUserBookmarkIdForUrl(long nativeBookmarkBridge, GURL url); +@@ -1368,6 +1430,9 @@ class BookmarkBridge { + BookmarkId getMostRecentlyAddedUserBookmarkIdForUrl( + long nativeBookmarkBridge, @JniType("GURL") GURL url); + BookmarkId getBookmarkIdForTabsCollection( + long nativeBookmarkBridge, GURL url); @@ -208,7 +208,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm BookmarkItem getBookmarkById(long nativeBookmarkBridge, long id, int type); void getTopLevelFolderIds( -@@ -1387,6 +1452,8 @@ class BookmarkBridge { +@@ -1389,6 +1454,8 @@ class BookmarkBridge { BookmarkId getRootFolderId(long nativeBookmarkBridge); @@ -220,7 +220,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc --- a/chrome/browser/bookmarks/android/bookmark_bridge.cc +++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc -@@ -399,6 +399,33 @@ void BookmarkBridge::GetImageUrlForBookmarkImpl( +@@ -180,7 +180,7 @@ class FileBookmarksExportObserver: public BookmarksExportObserver { + + JNIEnv* env = AttachCurrentThread(); + Java_BookmarkBridge_bookmarksExported(env, obj_, window_->GetJavaObject(), +- ConvertUTF8ToJavaString(env, export_path_), ++ base::android::ConvertUTF8ToJavaString(env, export_path_), + result == Result::kSuccess); + delete this; + } +@@ -396,6 +396,33 @@ void BookmarkBridge::GetImageUrlForBookmarkImpl( std::move(callback).Run(GURL()); } @@ -230,7 +239,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + const JavaParamRef& url) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); + -+ GURL gurl = *url::GURLAndroid::ToNativeGURL(env, url); ++ GURL gurl = url::GURLAndroid::ToNativeGURL(env, url); + + bookmarks::BookmarkModel* model = + BookmarkModelFactory::GetForBrowserContext(profile_); @@ -252,9 +261,9 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse +} + base::android::ScopedJavaLocalRef - BookmarkBridge::GetMostRecentlyAddedUserBookmarkIdForUrl( - JNIEnv* env, -@@ -514,6 +541,7 @@ void BookmarkBridge::GetAllFoldersWithDepths( + BookmarkBridge::GetMostRecentlyAddedUserBookmarkIdForUrl(JNIEnv* env, + const GURL& url) { +@@ -508,6 +535,7 @@ void BookmarkBridge::GetAllFoldersWithDepths( // Vector to temporarily contain all child bookmarks at same level for sorting std::vector bookmarks = { bookmark_model_->mobile_node(), @@ -262,7 +271,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse bookmark_model_->bookmark_bar_node(), bookmark_model_->other_node(), }; -@@ -607,6 +635,9 @@ std::vector BookmarkBridge::GetTopLevelFolderIdsImpl( +@@ -601,6 +629,9 @@ std::vector BookmarkBridge::GetTopLevelFolderIdsImpl( top_level_folders.push_back(other_node); } @@ -272,7 +281,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse const BookmarkNode* reading_list_node = local_or_syncable_reading_list_manager_->GetRoot(); if (IsPermanentFolderVisible(ignore_visibility, reading_list_node)) { -@@ -1326,6 +1357,17 @@ void BookmarkBridge::GetBookmarksOfType( +@@ -1313,6 +1344,17 @@ void BookmarkBridge::GetBookmarksOfType( AddBookmarkNodesToBookmarkIdList(env, j_list, results); } @@ -302,9 +311,9 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser + const base::android::JavaParamRef& url); + base::android::ScopedJavaLocalRef - GetMostRecentlyAddedUserBookmarkIdForUrl( - JNIEnv* env, -@@ -245,6 +249,10 @@ class BookmarkBridge : public ProfileObserver, + GetMostRecentlyAddedUserBookmarkIdForUrl(JNIEnv* env, const GURL& url); + const bookmarks::BookmarkNode* GetMostRecentlyAddedUserBookmarkIdForUrlImpl( +@@ -237,6 +241,10 @@ class BookmarkBridge : public ProfileObserver, const base::android::JavaParamRef& j_list, jint type); @@ -382,7 +391,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse 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 -@@ -3930,6 +3930,9 @@ To change this setting, BEGIN_LINKclear the Chrome da +@@ -3979,6 +3979,9 @@ To change this setting, BEGIN_LINKclear the Chrome da Select tabs diff --git a/build/patches/Add-menu-item-to-view-source.patch b/build/patches/Add-menu-item-to-view-source.patch index a94294ca..c9e56869 100644 --- a/build/patches/Add-menu-item-to-view-source.patch +++ b/build/patches/Add-menu-item-to-view-source.patch @@ -42,7 +42,7 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -3009,6 +3009,8 @@ public class ChromeTabbedActivity extends ChromeActivity +@@ -2722,6 +2722,11 @@ public abstract class ChromeActivity return doOpenWebApk(currentTab); } @@ -69,15 +69,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java -@@ -575,6 +575,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate - isChromeScheme, isFileScheme, isContentScheme, isIncognito, url)); +@@ -576,6 +576,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate + isNativePage, isFileScheme, isContentScheme, isIncognito, url)); - updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */, isChromeScheme); + updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */, isNativePage); + updateViewSourceMenuItem(menu, currentTab); - updateAutoDarkMenuItem(menu, currentTab, isChromeScheme); + updateAutoDarkMenuItem(menu, currentTab, isNativePage); -@@ -1285,6 +1286,23 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -1286,6 +1287,23 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate } } @@ -104,10 +104,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabAppMenuPropertiesDelegate.java -@@ -293,6 +293,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat +@@ -294,6 +294,7 @@ public class CustomTabAppMenuPropertiesDelegate extends AppMenuPropertiesDelegat updateRequestDesktopSiteMenuItem( - menu, currentTab, requestDesktopSiteVisible, isChromeScheme); + menu, currentTab, requestDesktopSiteVisible, isNativePage); + updateViewSourceMenuItem(menu, currentTab); prepareAddToHomescreenMenuItem(menu, currentTab, addToHomeScreenVisible); } @@ -115,7 +115,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust 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 -@@ -314,6 +314,10 @@ CHAR_LIMIT guidelines: +@@ -319,6 +319,10 @@ CHAR_LIMIT guidelines: USB diff --git a/build/patches/Add-option-to-disable-snapshots.patch b/build/patches/Add-option-to-disable-snapshots.patch index b9529082..e17fecde 100644 --- a/build/patches/Add-option-to-disable-snapshots.patch +++ b/build/patches/Add-option-to-disable-snapshots.patch @@ -8,15 +8,15 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../tasks/tab_management/TabProperties.java | 5 +++ .../java/res/xml/privacy_preferences.xml | 5 +++ .../chrome/browser/app/ChromeActivity.java | 3 +- - .../layouts/content/TabContentManager.java | 7 +++- .../privacy/settings/PrivacySettings.java | 42 ++++++++++++++++++- + .../browser/tab_ui/TabContentManager.java | 6 ++- .../strings/android_chrome_strings.grd | 8 ++++ - 7 files changed, 73 insertions(+), 7 deletions(-) + 7 files changed, 72 insertions(+), 7 deletions(-) diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabGridViewBinder.java -@@ -327,9 +327,12 @@ class TabGridViewBinder { +@@ -330,9 +330,12 @@ class TabGridViewBinder { // Adjust bitmap to thumbnail. TabUtils.setBitmapAndUpdateImageMatrix(thumbnail, result, thumbnailSize); } else if (isMostRecentRequest) { @@ -32,7 +32,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser } }; if (sThumbnailFetcherForTesting != null) { -@@ -368,6 +371,7 @@ class TabGridViewBinder { +@@ -371,6 +374,7 @@ class TabGridViewBinder { ViewLookupCachingFrameLayout rootView, PropertyModel model, TabListFaviconProvider.TabFavicon favicon) { @@ -43,7 +43,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser 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 -@@ -63,6 +63,9 @@ public class TabProperties { +@@ -64,6 +64,9 @@ public class TabProperties { public static final WritableBooleanPropertyKey FAVICON_FETCHED = new WritableBooleanPropertyKey(); @@ -53,7 +53,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser /** Property for lazily fetching favicons when required by an item in a UI. */ public static final WritableObjectPropertyKey FAVICON_FETCHER = new WritableObjectPropertyKey<>(); -@@ -164,6 +167,7 @@ public class TabProperties { +@@ -165,6 +168,7 @@ public class TabProperties { CARD_TYPE, CONTENT_DESCRIPTION_STRING, CLOSE_BUTTON_DESCRIPTION_STRING, @@ -61,7 +61,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser SHOPPING_PERSISTED_TAB_DATA_FETCHER, SHOULD_SHOW_PRICE_DROP_TOOLTIP, QUICK_DELETE_ANIMATION_STATUS, -@@ -177,6 +181,7 @@ public class TabProperties { +@@ -178,6 +182,7 @@ public class TabProperties { TAB_CLOSED_LISTENER, FAVICON_FETCHED, FAVICON_FETCHER, @@ -87,15 +87,15 @@ 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 -@@ -146,6 +146,7 @@ import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; +@@ -144,6 +144,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; +import org.chromium.chrome.browser.privacy.settings.PrivacySettings; import org.chromium.chrome.browser.profiles.Profile; + import org.chromium.chrome.browser.profiles.ProfileProvider; import org.chromium.chrome.browser.readaloud.ReadAloudController; - import org.chromium.chrome.browser.selection.SelectionPopupBackPressHandler; -@@ -702,7 +703,7 @@ public abstract class ChromeActivity +@@ -730,7 +731,7 @@ public abstract class ChromeActivity new TabContentManager( this, mBrowserControlsManagerSupplier.get(), @@ -104,26 +104,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv tabModelSelector != null ? tabModelSelector::getTabById : null)); getBrowserControlsManager() -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/content/TabContentManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/content/TabContentManager.java ---- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/content/TabContentManager.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/layouts/content/TabContentManager.java -@@ -325,11 +325,14 @@ public class TabContentManager { - */ - public void getTabThumbnailWithCallback( - @NonNull int tabId, -- @NonNull Size thumbnailSize, -+ @NonNull Size thumbnailSize, // - @NonNull Callback callback, - boolean forceUpdate, - boolean writeBack) { -- if (!mSnapshotsEnabled) return; -+ if (!mSnapshotsEnabled) { -+ callback.onResult(null); -+ return; -+ } - - // TODO(crbug/1444782): Remove forceUpdate and writeBack params once the following features - // launch: 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 @@ -176,7 +156,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( -@@ -344,6 +372,7 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -345,6 +373,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"; @@ -184,7 +164,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public boolean onPreferenceChange(Preference preference, Object newValue) { -@@ -369,6 +398,13 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -370,6 +399,13 @@ public class PrivacySettings extends ChromeBaseSettingsFragment SharedPreferences.Editor sharedPreferencesEditor = ContextUtils.getAppSharedPreferences().edit(); sharedPreferencesEditor.putBoolean(PREF_OPEN_EXTERNAL_LINKS_INCOGNITO, (boolean)newValue); sharedPreferencesEditor.apply(); @@ -198,7 +178,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } return true; } -@@ -417,6 +453,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment +@@ -418,6 +454,10 @@ public class PrivacySettings extends ChromeBaseSettingsFragment : R.string.text_off); } @@ -209,10 +189,26 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting Preference refererPolicyPref = findPreference(PREF_REFERER_POLICY); refererPolicyPref.setSummary( RefererSettingsFragment.getRefererSummaryString(getContext())); +diff --git a/chrome/browser/tab_ui/android/java/src/org/chromium/chrome/browser/tab_ui/TabContentManager.java b/chrome/browser/tab_ui/android/java/src/org/chromium/chrome/browser/tab_ui/TabContentManager.java +--- a/chrome/browser/tab_ui/android/java/src/org/chromium/chrome/browser/tab_ui/TabContentManager.java ++++ b/chrome/browser/tab_ui/android/java/src/org/chromium/chrome/browser/tab_ui/TabContentManager.java +@@ -328,8 +328,10 @@ public class TabContentManager { + @NonNull Callback callback, + boolean forceUpdate, + boolean writeBack) { +- if (!mSnapshotsEnabled) return; +- ++ if (!mSnapshotsEnabled) { ++ callback.onResult(null); ++ return; ++ } + // TODO(crbug/1444782): Remove forceUpdate and writeBack params once the following features + // launch: + // * GridTabSwitcherAndroidAnimations 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 -@@ -5423,6 +5423,14 @@ To change this setting, BEGIN_LINKclear the Chrome da +@@ -5436,6 +5436,14 @@ To change this setting, BEGIN_LINKclear the Chrome da Your %1$swww.amazon.com timer ran out. It'll start again tomorrow. diff --git a/build/patches/Add-option-to-force-tablet-UI.patch b/build/patches/Add-option-to-force-tablet-UI.patch index fb1c2a0d..90f96d0b 100644 --- a/build/patches/Add-option-to-force-tablet-UI.patch +++ b/build/patches/Add-option-to-force-tablet-UI.patch @@ -5,43 +5,44 @@ Subject: Add option to force tablet UI License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- .../start_surface/StartSurfaceMediator.java | 5 +++- - .../tasks/SingleTabSwitcherOnNtpMediator.java | 3 +- .../layout/custom_tabs_control_container.xml | 2 +- .../java/res/layout/recent_tabs_page.xml | 2 +- - .../java/res/values-sw600dp/dimens.xml | 6 ++-- - chrome/android/java/res/values/dimens.xml | 5 ++-- + .../java/res/values-sw600dp/dimens.xml | 4 +-- + chrome/android/java/res/values/dimens.xml | 6 +++- .../chrome/browser/ChromeTabbedActivity.java | 4 ++- .../chrome/browser/WarmupManager.java | 5 +++- .../settings/AccessibilitySettings.java | 13 +++++++++ .../ChromeAccessibilitySettingsDelegate.java | 19 +++++++++++++ .../chrome/browser/app/ChromeActivity.java | 4 ++- .../overlays/strip/StripLayoutHelper.java | 10 +++++-- - .../strip/StripLayoutHelperManager.java | 6 +++- + .../strip/StripLayoutHelperManager.java | 7 ++++- .../browser/tasks/ReturnToChromeUtil.java | 4 ++- .../chrome/browser/ui/RootUiCoordinator.java | 5 +++- chrome/browser/preferences/BUILD.gn | 1 + .../preferences/ChromePreferenceKeys.java | 1 + .../preferences/ChromeSharedPreferences.java | 8 ++++++ .../LegacyChromePreferenceKeys.java | 1 + + .../SingleTabSwitcherOnNtpMediator.java | 3 +- .../omnibox/LocationBarCoordinator.java | 2 +- .../strings/android_chrome_strings.grd | 7 +++++ .../java/res/layout/control_container.xml | 12 ++++---- .../java/res/layout/toolbar_tablet.xml | 2 +- - .../java/res/values-sw600dp/dimens.xml | 3 +- - .../toolbar/java/res/values/dimens.xml | 3 +- + .../java/res/values-sw600dp/dimens.xml | 5 ++-- + .../toolbar/java/res/values/dimens.xml | 5 ++-- .../browser/toolbar/ControlContainer.java | 2 +- + .../top/TabStripTransitionCoordinator.java | 2 +- .../toolbar/top/ToolbarControlContainer.java | 28 ++++++++++++++++++- .../browser/toolbar/top/ToolbarLayout.java | 5 +++- components/BUILD.gn | 6 ++-- .../res/xml/accessibility_preferences.xml | 5 ++++ .../AccessibilitySettingsDelegate.java | 11 ++++++++ .../chromium/ui/base/DeviceFormFactor.java | 9 ++++++ - 32 files changed, 165 insertions(+), 34 deletions(-) + 33 files changed, 171 insertions(+), 34 deletions(-) diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java --- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java +++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/start_surface/StartSurfaceMediator.java -@@ -102,6 +102,7 @@ import org.chromium.components.browser_ui.widget.gesture.BackPressHandler; +@@ -100,6 +100,7 @@ import org.chromium.components.browser_ui.widget.gesture.BackPressHandler; import org.chromium.components.embedder_support.util.UrlUtilities; import org.chromium.components.prefs.PrefService; import org.chromium.content_public.browser.LoadUrlParams; @@ -49,7 +50,7 @@ diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/ import org.chromium.ui.modelutil.PropertyModel; import org.chromium.ui.text.EmptyTextWatcher; import org.chromium.ui.util.ColorUtils; -@@ -1208,7 +1209,9 @@ class StartSurfaceMediator +@@ -1134,7 +1135,9 @@ class StartSurfaceMediator int getTopToolbarPlaceholderHeight() { // If logo is visible in Start surface instead of in the toolbar, we don't need to show the // top margin of the fake search box. @@ -60,26 +61,6 @@ diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/ + (isLogoVisible() ? 0 : getPixelSize(R.dimen.start_surface_fake_search_box_top_margin)); -diff --git a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/SingleTabSwitcherOnNtpMediator.java b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/SingleTabSwitcherOnNtpMediator.java ---- a/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/SingleTabSwitcherOnNtpMediator.java -+++ b/chrome/android/features/start_surface/java/src/org/chromium/chrome/features/tasks/SingleTabSwitcherOnNtpMediator.java -@@ -41,6 +41,7 @@ import org.chromium.components.browser_ui.widget.displaystyle.HorizontalDisplayS - import org.chromium.components.browser_ui.widget.displaystyle.UiConfig; - import org.chromium.components.browser_ui.widget.displaystyle.UiConfig.DisplayStyle; - import org.chromium.components.embedder_support.util.UrlUtilities; -+import org.chromium.ui.base.DeviceFormFactor; - import org.chromium.ui.modelutil.PropertyModel; - import org.chromium.url.GURL; - -@@ -91,7 +92,7 @@ public class SingleTabSwitcherOnNtpMediator implements ConfigurationChangedObser - mSingleTabCardClickedCallback = singleTabCardClickedCallback; - mIsSurfacePolishEnabled = tabContentManager != null; - mUiConfig = uiConfig; -- mIsTablet = isTablet; -+ mIsTablet = isTablet && !DeviceFormFactor.isForceTabletUI(); - mModuleDelegate = moduleDelegate; - - mMarginNarrowWindowOnTablet = diff --git a/chrome/android/java/res/layout/custom_tabs_control_container.xml b/chrome/android/java/res/layout/custom_tabs_control_container.xml --- a/chrome/android/java/res/layout/custom_tabs_control_container.xml +++ b/chrome/android/java/res/layout/custom_tabs_control_container.xml @@ -107,25 +88,21 @@ diff --git a/chrome/android/java/res/layout/recent_tabs_page.xml b/chrome/androi diff --git a/chrome/android/java/res/values-sw600dp/dimens.xml b/chrome/android/java/res/values-sw600dp/dimens.xml --- a/chrome/android/java/res/values-sw600dp/dimens.xml +++ b/chrome/android/java/res/values-sw600dp/dimens.xml -@@ -14,12 +14,10 @@ found in the LICENSE file. +@@ -14,8 +14,8 @@ found in the LICENSE file. 14sp - 96dp +- 64dp + 96dp + 96dp - 64dp -- -- 96dp -- 60dp - 48dp diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml --- a/chrome/android/java/res/values/dimens.xml +++ b/chrome/android/java/res/values/dimens.xml -@@ -121,11 +121,12 @@ found in the LICENSE file. +@@ -123,9 +123,13 @@ found in the LICENSE file. 16dp @@ -134,16 +111,16 @@ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res + 96dp 56dp - -- 56dp ++ + 56dp - ++ 375dp + 60dp diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -2247,7 +2247,9 @@ public class ChromeTabbedActivity extends ChromeActivity - // Inflate the correct toolbar layout for the device. - int toolbarLayoutId = getToolbarLayoutId(); - if (toolbarLayoutId != ActivityUtils.NO_RESOURCE_ID && controlContainer != null) { -- controlContainer.initWithToolbar(toolbarLayoutId); -+ controlContainer.initWithToolbar(toolbarLayoutId, +@@ -874,7 +874,9 @@ public abstract class ChromeActivity + // Inflate the correct toolbar layout for the device. + int toolbarLayoutId = getToolbarLayoutId(); + if (toolbarLayoutId != ActivityUtils.NO_RESOURCE_ID && controlContainer != null) { +- controlContainer.initWithToolbar(toolbarLayoutId); ++ controlContainer.initWithToolbar(toolbarLayoutId, + DeviceFormFactor.isForceTabletUI() + ? R.dimen.control_container_height_tabletui : 0); - } } onInitialLayoutInflationComplete(); + } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelper.java -@@ -66,6 +66,7 @@ import org.chromium.chrome.browser.tasks.tab_management.TabUiThemeUtil; +@@ -69,6 +69,7 @@ import org.chromium.chrome.browser.tasks.tab_management.TabUiThemeUtil; import org.chromium.components.browser_ui.styles.ChromeColors; import org.chromium.components.browser_ui.styles.SemanticColorUtils; import org.chromium.components.tab_groups.TabGroupColorId; @@ -274,7 +251,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import org.chromium.ui.base.LocalizationUtils; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.interpolators.Interpolators; -@@ -3806,8 +3807,13 @@ public class StripLayoutHelper +@@ -4576,8 +4577,13 @@ public class StripLayoutHelper implements StripLayoutTab.StripLayoutTabDelegate mTabMenu.setAnchorView(tabView); // 3. Set the vertical offset to align the tab menu with bottom of the tab strip int tabHeight = mManagerHost.getHeight(); @@ -293,7 +270,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutHelperManager.java -@@ -72,6 +72,7 @@ import org.chromium.chrome.browser.ui.system.StatusBarColorController; +@@ -77,6 +77,7 @@ import org.chromium.chrome.browser.ui.system.StatusBarColorController; import org.chromium.components.browser_ui.styles.SemanticColorUtils; import org.chromium.components.browser_ui.widget.scrim.ScrimProperties; import org.chromium.content_public.browser.LoadUrlParams; @@ -301,24 +278,29 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/over import org.chromium.ui.base.LocalizationUtils; import org.chromium.ui.base.PageTransition; import org.chromium.ui.base.WindowAndroid; -@@ -444,7 +445,10 @@ public class StripLayoutHelperManager - mModelSelectorButton.setClickSlop(MODEL_SELECTOR_BUTTON_CLICK_SLOP_DP); +@@ -396,11 +397,15 @@ public class StripLayoutHelperManager - Resources res = context.getResources(); -- mHeight = res.getDimension(R.dimen.tab_strip_height) / mDensity; -+ int tab_strip_height = (int) res.getDimension(R.dimen.tab_strip_height_cromite); -+ if (DeviceFormFactor.isForceTabletUI()) -+ tab_strip_height = (int) res.getDimension(R.dimen.tab_strip_height_tabletui); -+ mHeight = tab_strip_height / mDensity; - mModelSelectorButton.setAccessibilityDescription( - res.getString(R.string.accessibility_tabstrip_btn_incognito_toggle_standard), - res.getString(R.string.accessibility_tabstrip_btn_incognito_toggle_incognito)); + mIsLayoutOptimizationsEnabled = + ToolbarFeatures.isTabStripWindowLayoutOptimizationEnabled(true); +- mScrollableStripHeight = res.getDimension(R.dimen.tab_strip_height) / mDensity; ++ mScrollableStripHeight = ++ (DeviceFormFactor.isForceTabletUI() ++ ? res.getDimension(R.dimen.tab_strip_height_tabletui) ++ : res.getDimension(R.dimen.tab_strip_height_cromite)) / mDensity; + mHeight = + mIsLayoutOptimizationsEnabled + ? toolbarManager.getTabStripHeightSupplier().get() / mDensity + : mScrollableStripHeight; ++ + mTopPadding = mHeight - mScrollableStripHeight; + + CompositorOnClickHandler selectorClickHandler = time -> handleModelSelectorButtonClick(); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java b/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java -@@ -974,7 +974,9 @@ public final class ReturnToChromeUtil { - - public static boolean isScrollableMvtEnabled(Context context) { +@@ -933,7 +933,9 @@ public final class ReturnToChromeUtil { + // TODO(b/331667743): Clean up the flag for scrollable mvt while cleaning up surface polish + // code. boolean isSurfacePolishEnabled = ChromeFeatureList.sSurfacePolish.isEnabled(); - if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(context)) { + if (!DeviceFormFactor.isNonMultiDisplayContextOnTablet(context) || @@ -338,7 +320,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.price_tracking.PriceTrackingButtonController; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileManager; -@@ -1593,7 +1594,9 @@ public class RootUiCoordinator +@@ -1630,7 +1631,9 @@ public class RootUiCoordinator if (!mSupportsFindInPageSupplier.getAsBoolean()) return; int stubId = R.id.find_toolbar_stub; @@ -363,7 +345,7 @@ diff --git a/chrome/browser/preferences/BUILD.gn b/chrome/browser/preferences/BU diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromePreferenceKeys.java -@@ -270,6 +270,7 @@ public final class ChromePreferenceKeys { +@@ -264,6 +264,7 @@ public final class ChromePreferenceKeys { AccessibilityConstants.FONT_USER_SET_FORCE_ENABLE_ZOOM; public static final String HISTORY_SHOW_HISTORY_INFO = "history_home_show_info"; @@ -374,16 +356,16 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromeSharedPreferences.java b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromeSharedPreferences.java --- a/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromeSharedPreferences.java +++ b/chrome/browser/preferences/android/java/src/org/chromium/chrome/browser/preferences/ChromeSharedPreferences.java -@@ -11,6 +11,8 @@ import org.chromium.base.shared_preferences.PreferenceKeyRegistry; - import org.chromium.base.shared_preferences.SharedPreferencesManager; +@@ -12,6 +12,8 @@ import org.chromium.base.shared_preferences.SharedPreferencesManager; import org.chromium.build.BuildConfig; + import org.chromium.build.annotations.AssumeNonNull; +import org.chromium.ui.base.DeviceFormFactor; + @JNINamespace("android::shared_preferences") public class ChromeSharedPreferences { public static final PreferenceKeyRegistry REGISTRY = -@@ -22,6 +24,12 @@ public class ChromeSharedPreferences { +@@ -23,6 +25,12 @@ public class ChromeSharedPreferences { LegacyChromePreferenceKeys.getPrefixesInUse()) : null); @@ -407,6 +389,26 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro ChromePreferenceKeys.FONT_USER_SET_FORCE_ENABLE_ZOOM, ChromePreferenceKeys.HISTORY_SHOW_HISTORY_INFO, ChromePreferenceKeys.HOMEPAGE_ENABLED, +diff --git a/chrome/browser/single_tab/android/java/src/org/chromium/chrome/browser/single_tab/SingleTabSwitcherOnNtpMediator.java b/chrome/browser/single_tab/android/java/src/org/chromium/chrome/browser/single_tab/SingleTabSwitcherOnNtpMediator.java +--- a/chrome/browser/single_tab/android/java/src/org/chromium/chrome/browser/single_tab/SingleTabSwitcherOnNtpMediator.java ++++ b/chrome/browser/single_tab/android/java/src/org/chromium/chrome/browser/single_tab/SingleTabSwitcherOnNtpMediator.java +@@ -40,6 +40,7 @@ import org.chromium.components.browser_ui.widget.displaystyle.HorizontalDisplayS + import org.chromium.components.browser_ui.widget.displaystyle.UiConfig; + import org.chromium.components.browser_ui.widget.displaystyle.UiConfig.DisplayStyle; + import org.chromium.components.embedder_support.util.UrlUtilities; ++import org.chromium.ui.base.DeviceFormFactor; + import org.chromium.ui.modelutil.PropertyModel; + import org.chromium.url.GURL; + +@@ -90,7 +91,7 @@ public class SingleTabSwitcherOnNtpMediator implements ConfigurationChangedObser + mSingleTabCardClickedCallback = singleTabCardClickedCallback; + mIsSurfacePolishEnabled = tabContentManager != null; + mUiConfig = uiConfig; +- mIsTablet = isTablet; ++ mIsTablet = isTablet && !DeviceFormFactor.isForceTabletUI(); + mModuleDelegate = moduleDelegate; + + mMarginNarrowWindowOnTablet = diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java @@ -422,7 +424,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -1604,6 +1604,13 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1618,6 +1618,13 @@ Your Google account may have other forms of browsing history like searches and a Hide your IP address @@ -461,8 +463,8 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/control_container android:src="@drawable/toolbar_hairline" android:layout_width="match_parent" android:layout_height="wrap_content" -- android:layout_marginTop="@dimen/tab_strip_and_toolbar_height" -+ android:layout_marginTop="@dimen/tab_strip_and_toolbar_height_cromite" +- android:layout_marginTop="@dimen/control_container_height" ++ android:layout_marginTop="@dimen/control_container_height_cromite" android:scaleType="fitXY" android:importantForAccessibility="no" /> @@ -507,24 +509,28 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_tablet.xm diff --git a/chrome/browser/ui/android/toolbar/java/res/values-sw600dp/dimens.xml b/chrome/browser/ui/android/toolbar/java/res/values-sw600dp/dimens.xml --- a/chrome/browser/ui/android/toolbar/java/res/values-sw600dp/dimens.xml +++ b/chrome/browser/ui/android/toolbar/java/res/values-sw600dp/dimens.xml -@@ -7,5 +7,6 @@ found in the LICENSE file. +@@ -7,6 +7,7 @@ found in the LICENSE file. - 40dp +- 2dp + 40dp + 40dp ++ 2dp diff --git a/chrome/browser/ui/android/toolbar/java/res/values/dimens.xml b/chrome/browser/ui/android/toolbar/java/res/values/dimens.xml --- a/chrome/browser/ui/android/toolbar/java/res/values/dimens.xml +++ b/chrome/browser/ui/android/toolbar/java/res/values/dimens.xml -@@ -10,7 +10,8 @@ found in the LICENSE file. +@@ -10,8 +10,9 @@ found in the LICENSE file. 10dp - 0dp +- 0dp + 0dp + 40dp ++ 0dp -@@ -2834,6 +2840,9 @@ To change this setting, BEGIN_LINKclear the Chrome da +@@ -2871,6 +2877,9 @@ To change this setting, BEGIN_LINKclear the Chrome da Open in new Chrome tab @@ -314,7 +314,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third_party/blink/renderer/core/html/html_anchor_element.cc --- a/third_party/blink/renderer/core/html/html_anchor_element.cc +++ b/third_party/blink/renderer/core/html/html_anchor_element.cc -@@ -62,6 +62,7 @@ +@@ -63,6 +63,7 @@ #include "third_party/blink/renderer/core/loader/render_blocking_resource_manager.h" #include "third_party/blink/renderer/core/navigation_api/navigation_api.h" #include "third_party/blink/renderer/core/page/chrome_client.h" @@ -322,7 +322,7 @@ 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" -@@ -516,6 +517,17 @@ void HTMLAnchorElement::NavigateToHyperlink(ResourceRequest request, +@@ -518,6 +519,17 @@ void HTMLAnchorElement::NavigateToHyperlink(ResourceRequest request, bool is_trusted, base::TimeTicks platform_time_stamp, KURL completed_url) { @@ -340,7 +340,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third LocalDOMWindow* window = GetDocument().domWindow(); if (!window) { return; -@@ -576,6 +588,15 @@ void HTMLAnchorElement::NavigateToHyperlink(ResourceRequest request, +@@ -578,6 +590,15 @@ void HTMLAnchorElement::NavigateToHyperlink(ResourceRequest request, /*element=*/this, request.HasUserGesture())); } @@ -356,16 +356,16 @@ 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; -@@ -629,7 +650,7 @@ AtomicString HTMLAnchorElement::interestAction() const { +@@ -631,7 +652,7 @@ AtomicString HTMLAnchorElement::interestAction() const { return g_empty_atom; } --void HTMLAnchorElement::HandleClick(Event& event) { -+void HTMLAnchorElement::HandleClick(Event& event, bool do_not_show_context_menu) { +-void HTMLAnchorElement::HandleClick(MouseEvent& event) { ++void HTMLAnchorElement::HandleClick(MouseEvent& event, bool do_not_show_context_menu) { event.SetDefaultHandled(); LocalDOMWindow* window = GetDocument().domWindow(); -@@ -726,13 +747,12 @@ void HTMLAnchorElement::HandleClick(Event& event) { +@@ -727,13 +748,12 @@ void HTMLAnchorElement::HandleClick(MouseEvent& event) { return; } @@ -383,7 +383,7 @@ diff --git a/third_party/blink/renderer/core/html/html_anchor_element.cc b/third // We distinguish single/double click with some modifiers. // See the comment of `EventHandler.delayed_navigation_task_handle_`. auto task_handle = PostDelayedCancellableTask( -@@ -742,7 +762,9 @@ void HTMLAnchorElement::HandleClick(Event& event) { +@@ -743,7 +763,9 @@ void HTMLAnchorElement::HandleClick(MouseEvent& event) { frame->GetEventHandler().SetDelayedNavigationTaskHandle( std::move(task_handle)); } else { @@ -397,30 +397,24 @@ 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 -@@ -110,6 +110,7 @@ class CORE_EXPORT HTMLAnchorElement : public HTMLElement, public DOMURLUtils { - AtomicString interestAction() const; +@@ -112,6 +112,7 @@ class CORE_EXPORT HTMLAnchorElement : public HTMLElement, public DOMURLUtils { + AtomicString interestAction() const override; void Trace(Visitor*) const override; -+ void HandleClick(Event&, bool do_not_show_context_menu = false); ++ void HandleClick(MouseEvent&, bool do_not_show_context_menu = false); protected: void ParseAttribute(const AttributeModificationParams&) override; -@@ -136,12 +137,16 @@ class CORE_EXPORT HTMLAnchorElement : public HTMLElement, public DOMURLUtils { - bool IsInteractiveContent() const final; - InsertionNotificationRequest InsertedInto(ContainerNode&) override; - void RemovedFrom(ContainerNode&) override; -+ void NavigateToHyperlink2(ResourceRequest, +@@ -143,7 +144,11 @@ class CORE_EXPORT HTMLAnchorElement : public HTMLElement, public DOMURLUtils { + bool is_trusted, + base::TimeTicks platform_time_stamp, + KURL); +- void HandleClick(MouseEvent&); ++ void NavigateToHyperlink2(ResourceRequest, + NavigationPolicy, + bool is_trusted, + base::TimeTicks platform_time_stamp, + KURL, Event&, bool do_not_show_context_menu); - void NavigateToHyperlink(ResourceRequest, - NavigationPolicy, - bool is_trusted, - base::TimeTicks platform_time_stamp, -- KURL); -- void HandleClick(Event&); -+ KURL completed_url); unsigned link_relations_ : 31; mutable LinkHash cached_visited_link_hash_; @@ -510,14 +504,15 @@ diff --git a/third_party/blink/renderer/core/page/context_menu_controller.cc b/t // Displaying the context menu in this function is a big hack as we don't // have context, i.e. whether this is being invoked via a script or in // response to user input (Mouse event WM_RBUTTONDOWN, -@@ -476,6 +479,15 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, +@@ -476,6 +479,16 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, if (!result.InnerNodeOrImageMapImage()) return false; + if (!do_not_show_context_menu && + base::FeatureList::IsEnabled(features::kShowAlwaysContextMenuOnLinks)) { + if (auto* anchor_element = DynamicTo(result.URLElement())) { -+ Event event; ++ MouseEvent event; ++ event.SetTarget(mouse_event->target()); + anchor_element->HandleClick(event, /*do_not_show_context_menu*/true); + return true; + } @@ -526,7 +521,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; -@@ -830,11 +842,13 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, +@@ -830,11 +843,13 @@ bool ContextMenuController::ShowContextMenu(LocalFrame* frame, SetAutofillData(result.InnerNode(), data); SetPasswordManagerData(result.InnerElement(), data); diff --git a/build/patches/Add-site-engagement-flag.patch b/build/patches/Add-site-engagement-flag.patch index 2f338381..7152dde4 100644 --- a/build/patches/Add-site-engagement-flag.patch +++ b/build/patches/Add-site-engagement-flag.patch @@ -24,7 +24,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 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 -@@ -154,6 +154,7 @@ +@@ -155,6 +155,7 @@ #include "components/send_tab_to_self/features.h" #include "components/services/heap_profiling/public/cpp/switches.h" #include "components/services/storage/public/cpp/buckets/bucket_info.h" @@ -35,7 +35,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/engagement/important_sites_util.cc --- a/chrome/browser/engagement/important_sites_util.cc +++ b/chrome/browser/engagement/important_sites_util.cc -@@ -32,6 +32,7 @@ +@@ -33,6 +33,7 @@ #include "components/prefs/scoped_user_pref_update.h" #include "components/site_engagement/content/site_engagement_score.h" #include "components/site_engagement/content/site_engagement_service.h" @@ -43,7 +43,7 @@ diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/ #include "components/site_engagement/core/mojom/site_engagement_details.mojom.h" #include "components/webapps/browser/banners/app_banner_settings_helper.h" #include "net/base/registry_controlled_domains/registry_controlled_domain.h" -@@ -387,6 +388,10 @@ void ImportantSitesUtil::RegisterProfilePrefs( +@@ -388,6 +389,10 @@ void ImportantSitesUtil::RegisterProfilePrefs( // static std::set ImportantSitesUtil::GetInstalledRegisterableDomains( Profile* profile) { @@ -54,7 +54,7 @@ diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/ std::set installed_origins = GetOriginsWithInstalledWebApps(profile); std::set registerable_domains; -@@ -401,6 +406,10 @@ std::vector +@@ -402,6 +407,10 @@ std::vector ImportantSitesUtil::GetImportantRegisterableDomains(Profile* profile, size_t max_results) { SCOPED_UMA_HISTOGRAM_TIMER("Storage.ImportantSites.GenerationTime"); @@ -68,15 +68,15 @@ diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/ diff --git a/components/feature_engagement/internal/tracker_impl.cc b/components/feature_engagement/internal/tracker_impl.cc --- a/components/feature_engagement/internal/tracker_impl.cc +++ b/components/feature_engagement/internal/tracker_impl.cc -@@ -23,6 +23,7 @@ - #include "base/task/single_thread_task_runner.h" +@@ -24,6 +24,7 @@ #include "base/time/clock.h" #include "build/build_config.h" + #include "build/chromeos_buildflags.h" +#include "components/site_engagement/core/features.h" #include "components/feature_engagement/internal/availability_model_impl.h" #include "components/feature_engagement/internal/blocked_iph_features.h" #include "components/feature_engagement/internal/chrome_variations_configuration.h" -@@ -211,6 +212,8 @@ TrackerImpl::TrackerImpl( +@@ -212,6 +213,8 @@ TrackerImpl::TrackerImpl( TrackerImpl::~TrackerImpl() = default; void TrackerImpl::NotifyEvent(const std::string& event) { diff --git a/build/patches/Add-support-to-jxl.patch b/build/patches/Add-support-to-jxl.patch index db3ce805..43d31b4b 100644 --- a/build/patches/Add-support-to-jxl.patch +++ b/build/patches/Add-support-to-jxl.patch @@ -36,7 +36,7 @@ Enabled by default .../platform/graphics/bitmap_image_metrics.h | 4 +- .../renderer/platform/image-decoders/BUILD.gn | 9 + .../platform/image-decoders/image_decoder.cc | 23 + - .../image-decoders/jxl/jxl_image_decoder.cc | 684 ++++++++++++++++++ + .../image-decoders/jxl/jxl_image_decoder.cc | 685 ++++++++++++++++++ .../image-decoders/jxl/jxl_image_decoder.h | 123 ++++ .../jxl/jxl_image_decoder_test.cc | 626 ++++++++++++++++ .../blink/tools/commit_stats/git-dirs.txt | 1 + @@ -58,7 +58,7 @@ Enabled by default .../libjxl/gen_headers/jxl/jxl_export.h | 11 + tools/metrics/histograms/enums.xml | 1 + .../histograms/metadata/blink/enums.xml | 2 +- - 53 files changed, 1996 insertions(+), 17 deletions(-) + 53 files changed, 1997 insertions(+), 17 deletions(-) create mode 100644 build/linux/unbundle/libjxl.gn create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Add-support-to-jxl.inc create mode 100644 cromite_flags/third_party/blink/common/features_cc/Add-support-to-jxl.inc @@ -147,7 +147,7 @@ new file mode 100644 diff --git a/build/linux/unbundle/replace_gn_files.py b/build/linux/unbundle/replace_gn_files.py --- a/build/linux/unbundle/replace_gn_files.py +++ b/build/linux/unbundle/replace_gn_files.py -@@ -55,6 +55,7 @@ REPLACEMENTS = { +@@ -56,6 +56,7 @@ REPLACEMENTS = { 'libdrm': 'third_party/libdrm/BUILD.gn', 'libevent': 'third_party/libevent/BUILD.gn', 'libjpeg': 'third_party/libjpeg.gni', @@ -467,7 +467,7 @@ diff --git a/third_party/blink/common/mime_util/mime_util_unittest.cc b/third_pa diff --git a/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/third_party/blink/public/devtools_protocol/browser_protocol.pdl --- a/third_party/blink/public/devtools_protocol/browser_protocol.pdl +++ b/third_party/blink/public/devtools_protocol/browser_protocol.pdl -@@ -4323,6 +4323,7 @@ domain Emulation +@@ -4346,6 +4346,7 @@ domain Emulation experimental type DisabledImageType extends string enum avif @@ -478,7 +478,7 @@ diff --git a/third_party/blink/public/devtools_protocol/browser_protocol.pdl b/t diff --git a/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc b/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc --- a/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc +++ b/third_party/blink/renderer/core/inspector/inspector_emulation_agent.cc -@@ -501,10 +501,10 @@ AtomicString InspectorEmulationAgent::OverrideAcceptImageHeader( +@@ -500,10 +500,10 @@ AtomicString InspectorEmulationAgent::OverrideAcceptImageHeader( String header(network_utils::ImageAcceptHeader()); for (String type : *disabled_image_types) { // The header string is expected to be like @@ -492,7 +492,7 @@ diff --git a/third_party/blink/renderer/core/inspector/inspector_emulation_agent header.Replace(String(type + ","), ""); } return AtomicString(header); -@@ -849,6 +849,7 @@ protocol::Response InspectorEmulationAgent::setDisabledImageTypes( +@@ -848,6 +848,7 @@ protocol::Response InspectorEmulationAgent::setDisabledImageTypes( namespace DisabledImageTypeEnum = protocol::Emulation::DisabledImageTypeEnum; for (protocol::Emulation::DisabledImageType type : *disabled_types) { if (DisabledImageTypeEnum::Avif == type || @@ -608,7 +608,7 @@ diff --git a/third_party/blink/renderer/modules/webcodecs/image_decoder_fuzzer.c diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/renderer/platform/BUILD.gn --- a/third_party/blink/renderer/platform/BUILD.gn +++ b/third_party/blink/renderer/platform/BUILD.gn -@@ -2289,6 +2289,10 @@ source_set("blink_platform_unittests_sources") { +@@ -2327,6 +2327,10 @@ source_set("blink_platform_unittests_sources") { sources += [ "text/locale_icu_test.cc" ] } @@ -619,7 +619,7 @@ diff --git a/third_party/blink/renderer/platform/BUILD.gn b/third_party/blink/re sources += [ "testing/run_all_tests.cc" ] configs += [ -@@ -2331,6 +2335,7 @@ source_set("blink_platform_unittests_sources") { +@@ -2369,6 +2373,7 @@ source_set("blink_platform_unittests_sources") { "//third_party/blink/renderer/platform/network:unit_tests", "//third_party/blink/renderer/platform/scheduler:unit_tests", "//third_party/blink/renderer/platform/wtf", @@ -701,8 +701,8 @@ diff --git a/third_party/blink/renderer/platform/image-decoders/image_decoder.cc #include "base/containers/heap_array.h" #include "base/logging.h" +#include "base/feature_list.h" + #include "base/numerics/byte_conversions.h" #include "base/numerics/safe_conversions.h" - #include "base/sys_byteorder.h" #include "base/trace_event/trace_event.h" @@ -31,6 +32,7 @@ #include "media/media_buildflags.h" @@ -765,7 +765,7 @@ diff --git a/third_party/blink/renderer/platform/image-decoders/jxl/jxl_image_de new file mode 100644 --- /dev/null +++ b/third_party/blink/renderer/platform/image-decoders/jxl/jxl_image_decoder.cc -@@ -0,0 +1,684 @@ +@@ -0,0 +1,685 @@ +// Copyright 2021 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. @@ -1145,7 +1145,8 @@ new file mode 100644 + JXL_COLOR_PROFILE_TARGET_DATA, + icc_profile.data(), icc_profile.size())) { + profile = -+ ColorProfile::Create(icc_profile.data(), icc_profile.size()); ++ ColorProfile::Create( ++ base::span(icc_profile.data(), icc_profile.size())); + have_data_profile = true; + + // Detect whether the ICC profile approximately equals PQ or HLG, @@ -2223,7 +2224,7 @@ diff --git a/third_party/blink/tools/commit_stats/git-dirs.txt b/third_party/bli diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/web_tests/TestExpectations --- a/third_party/blink/web_tests/TestExpectations +++ b/third_party/blink/web_tests/TestExpectations -@@ -4636,6 +4636,12 @@ crbug.com/1199522 http/tests/devtools/layers/layers-3d-view-hit-testing.js [ Fai +@@ -4717,6 +4717,12 @@ crbug.com/1199522 http/tests/devtools/layers/layers-3d-view-hit-testing.js [ Fai # Started failing after rolling new version of check-layout-th.js css3/flexbox/perpendicular-writing-modes-inside-flex-item.html [ Failure ] @@ -2239,7 +2240,7 @@ diff --git a/third_party/blink/web_tests/TestExpectations b/third_party/blink/we diff --git a/third_party/blink/web_tests/VirtualTestSuites b/third_party/blink/web_tests/VirtualTestSuites --- a/third_party/blink/web_tests/VirtualTestSuites +++ b/third_party/blink/web_tests/VirtualTestSuites -@@ -102,6 +102,15 @@ +@@ -103,6 +103,15 @@ "--disable-threaded-compositing", "--disable-threaded-animation"], "expires": "Jul 1, 2023" }, @@ -2654,7 +2655,7 @@ new file mode 100644 diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml --- a/tools/metrics/histograms/enums.xml +++ b/tools/metrics/histograms/enums.xml -@@ -21300,6 +21300,7 @@ from previous Chrome versions. +@@ -21593,6 +21593,7 @@ from previous Chrome versions. diff --git a/build/patches/Add-webGL-site-setting.patch b/build/patches/Add-webGL-site-setting.patch index 34f9a5b1..b7847ac0 100644 --- a/build/patches/Add-webGL-site-setting.patch +++ b/build/patches/Add-webGL-site-setting.patch @@ -274,7 +274,7 @@ diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_ba diff --git a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h --- a/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h +++ b/third_party/blink/renderer/modules/webgl/webgl_rendering_context_base.h -@@ -1963,6 +1963,8 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext, +@@ -1978,6 +1978,8 @@ class MODULES_EXPORT WebGLRenderingContextBase : public CanvasRenderingContext, DOMArrayBufferView* pixels, int64_t offset); diff --git a/build/patches/Add-webRTC-site-settings.patch b/build/patches/Add-webRTC-site-settings.patch index ed149c06..67ccdcaa 100644 --- a/build/patches/Add-webRTC-site-settings.patch +++ b/build/patches/Add-webRTC-site-settings.patch @@ -219,7 +219,7 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver. #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtcp_parameters.h" -@@ -313,6 +315,14 @@ RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(ScriptState* state, +@@ -312,6 +314,14 @@ RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(ScriptState* state, if (kind != "audio" && kind != "video") return nullptr; @@ -246,7 +246,7 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_encoding_options.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h" -@@ -1073,6 +1075,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state, +@@ -1070,6 +1072,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state, if (kind != "audio" && kind != "video") return nullptr; diff --git a/build/patches/Allow-building-without-enable_reporting.patch b/build/patches/Allow-building-without-enable_reporting.patch index 99555542..dd04d2d3 100644 --- a/build/patches/Allow-building-without-enable_reporting.patch +++ b/build/patches/Allow-building-without-enable_reporting.patch @@ -41,7 +41,7 @@ diff --git a/chrome/browser/net/chrome_report_sender.cc b/chrome/browser/net/chr diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/browser/devtools/protocol/network_handler.cc --- a/content/browser/devtools/protocol/network_handler.cc +++ b/content/browser/devtools/protocol/network_handler.cc -@@ -1410,6 +1410,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) { +@@ -1417,6 +1417,7 @@ String BuildReportStatus(const net::ReportingReport::Status status) { } } @@ -49,7 +49,7 @@ diff --git a/content/browser/devtools/protocol/network_handler.cc b/content/brow std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { std::vector urls; frame_host->ForEachRenderFrameHostWithAction( -@@ -1423,6 +1424,7 @@ std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { +@@ -1430,6 +1431,7 @@ std::vector ComputeReportingURLs(RenderFrameHostImpl* frame_host) { }); return urls; } @@ -65,19 +65,19 @@ diff --git a/content/browser/network/cross_origin_embedder_policy_reporter.cc b/ #include "content/browser/network/cross_origin_embedder_policy_reporter.h" +#include "net/base/features.h" - #include "base/strings/string_piece.h" + #include + #include "base/values.h" - #include "content/public/browser/storage_partition.h" -@@ -95,8 +96,6 @@ void CrossOriginEmbedderPolicyReporter::Clone( +@@ -96,8 +97,6 @@ void CrossOriginEmbedderPolicyReporter::Clone( void CrossOriginEmbedderPolicyReporter::QueueAndNotify( - std::initializer_list> body, + std::initializer_list> body, bool report_only) { - const std::optional& endpoint = - report_only ? report_only_endpoint_ : endpoint_; const char* const disposition = report_only ? "reporting" : "enforce"; if (observer_) { std::vector list; -@@ -111,6 +110,9 @@ void CrossOriginEmbedderPolicyReporter::QueueAndNotify( +@@ -112,6 +111,9 @@ void CrossOriginEmbedderPolicyReporter::QueueAndNotify( observer_->Notify(blink::mojom::Report::New( kType, context_url_, blink::mojom::ReportBody::New(std::move(list)))); } @@ -87,7 +87,7 @@ diff --git a/content/browser/network/cross_origin_embedder_policy_reporter.cc b/ if (endpoint) { base::Value::Dict body_to_pass; for (const auto& pair : body) { -@@ -125,6 +127,7 @@ void CrossOriginEmbedderPolicyReporter::QueueAndNotify( +@@ -126,6 +128,7 @@ void CrossOriginEmbedderPolicyReporter::QueueAndNotify( /*user_agent=*/std::nullopt, std::move(body_to_pass)); } } @@ -201,16 +201,16 @@ diff --git a/content/browser/network/reporting_service_proxy.cc b/content/browse diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -13972,12 +13972,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport( - base::Value::Dict body; - if (!reason.empty()) - body.Set("reason", reason); +@@ -14056,12 +14056,6 @@ void RenderFrameHostImpl::MaybeGenerateCrashReport( + } + } + } - - // Send the crash report to the Reporting API. - GetProcess()->GetStoragePartition()->GetNetworkContext()->QueueReport( - /*type=*/"crash", /*group=*/"default", last_committed_url_, - GetReportingSource(), isolation_info_.network_anonymization_key(), -- std::nullopt /* user_agent */, std::move(body)); +- /*user_agent=*/std::nullopt, std::move(body)); } void RenderFrameHostImpl::SendCommitNavigation( @@ -254,7 +254,7 @@ new file mode 100644 diff --git a/net/base/features.cc b/net/base/features.cc --- a/net/base/features.cc +++ b/net/base/features.cc -@@ -218,6 +218,7 @@ extern const base::FeatureParam kTimeoutTcpConnectAttemptMax( +@@ -222,6 +222,7 @@ extern const base::FeatureParam kTimeoutTcpConnectAttemptMax( base::Seconds(30)); #if BUILDFLAG(ENABLE_REPORTING) @@ -297,7 +297,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mojom/BUILD.gn --- a/services/network/public/mojom/BUILD.gn +++ b/services/network/public/mojom/BUILD.gn -@@ -1453,7 +1453,6 @@ mojom("mojom") { +@@ -1467,7 +1467,6 @@ mojom("mojom") { export_define_blink = "BLINK_PLATFORM_IMPLEMENTATION=1" export_header_blink = "third_party/blink/public/platform/web_common.h" if (enable_reporting) { @@ -308,7 +308,7 @@ diff --git a/services/network/public/mojom/BUILD.gn b/services/network/public/mo diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom --- a/services/network/public/mojom/network_context.mojom +++ b/services/network/public/mojom/network_context.mojom -@@ -1209,6 +1209,7 @@ interface NetworkContext { +@@ -1221,6 +1221,7 @@ interface NetworkContext { // provided |network_isolation_key|. // // Spec: https://w3c.github.io/reporting/#concept-reports @@ -316,7 +316,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw QueueReport(string type, string group, url.mojom.Url url, -@@ -1222,6 +1223,7 @@ interface NetworkContext { +@@ -1234,6 +1235,7 @@ interface NetworkContext { // Note that this queued report will never be delivered if no reporting // endpoint matching is registered for with the provided // |network_isolation_key|. @@ -335,7 +335,7 @@ diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.c #include "base/containers/contains.h" #include "base/debug/dump_without_crashing.h" #include "base/ranges/algorithm.h" -@@ -1167,6 +1168,7 @@ void ContentSecurityPolicy::ReportViolation( +@@ -1215,6 +1216,7 @@ void ContentSecurityPolicy::ReportViolation( return; } @@ -343,7 +343,7 @@ diff --git a/third_party/blink/renderer/core/frame/csp/content_security_policy.c PostViolationReport(violation_data, context_frame, report_endpoints, use_reporting_api); -@@ -1174,6 +1176,7 @@ void ContentSecurityPolicy::ReportViolation( +@@ -1222,6 +1224,7 @@ void ContentSecurityPolicy::ReportViolation( // `context_frame` (i.e. we're not processing 'frame-ancestors'). if (delegate_ && !context_frame) delegate_->DispatchViolationEvent(*violation_data, element); @@ -362,7 +362,7 @@ diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/ #include "services/network/public/cpp/features.h" #include "services/network/public/mojom/content_security_policy.mojom-blink.h" #include "services/network/public/mojom/source_location.mojom-blink.h" -@@ -2650,9 +2651,11 @@ void LocalFrame::MainFrameFirstMeaningfulPaint() { +@@ -2656,9 +2657,11 @@ void LocalFrame::MainFrameFirstMeaningfulPaint() { v8_local_compile_hints_producer_->GenerateData(kIsFinalData); } diff --git a/build/patches/Allow-building-without-supervised-users.patch b/build/patches/Allow-building-without-supervised-users.patch index ff92354b..7755fd13 100644 --- a/build/patches/Allow-building-without-supervised-users.patch +++ b/build/patches/Allow-building-without-supervised-users.patch @@ -4,50 +4,37 @@ Subject: Allow building without supervised users License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/android/BUILD.gn | 1 - - chrome/android/chrome_java_sources.gni | 1 - - .../chrome/browser/feed/FeedSurfaceCoordinator.java | 5 +---- - chrome/browser/BUILD.gn | 6 ------ - chrome/browser/about_flags.cc | 2 ++ - .../browser/extensions/api/settings_private/prefs_util.cc | 2 ++ - chrome/browser/profiles/profile_impl.cc | 4 ++++ - chrome/browser/profiles/profile_manager.cc | 4 ++++ - chrome/browser/ui/webui/managed_ui_handler.cc | 2 ++ - chrome/browser/ui/webui/management/management_ui_handler.cc | 2 ++ - components/supervised_user/buildflags.gni | 6 +----- - .../core/browser/supervised_user_pref_store.cc | 1 + - .../core/browser/supervised_user_preferences.cc | 2 +- - .../supervised_user/core/browser/supervised_user_utils.cc | 4 ++++ - components/supervised_user/core/common/pref_names.h | 4 ++++ - .../core/common/supervised_user_constants.cc | 2 ++ - 16 files changed, 30 insertions(+), 18 deletions(-) + chrome/android/BUILD.gn | 1 - + .../browser/feed/FeedSurfaceCoordinator.java | 5 +---- + chrome/browser/BUILD.gn | 2 -- + .../prefs/chrome_pref_service_factory.cc | 2 +- + .../profiles/profile_attributes_entry.cc | 2 +- + chrome/browser/profiles/profile_impl.cc | 5 +---- + chrome/browser/profiles/profile_manager.cc | 20 ------------------- + chrome/browser/ui/webui/managed_ui_handler.cc | 4 ---- + .../webui/management/management_ui_handler.cc | 5 ----- + .../browser/supervised_user_pref_store.cc | 1 + + .../browser/supervised_user_preferences.cc | 6 +++++- + .../core/browser/supervised_user_service.cc | 1 + + .../core/browser/supervised_user_utils.cc | 1 + + .../supervised_user/core/common/features.cc | 6 ++++++ + 14 files changed, 18 insertions(+), 43 deletions(-) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -3726,7 +3726,6 @@ generate_jni("chrome_jni_headers") { - "java/src/org/chromium/chrome/browser/status_indicator/StatusIndicatorSceneLayer.java", - "java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSites.java", - "java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesBridge.java", -- "java/src/org/chromium/chrome/browser/supervised_user/ChildAccountService.java", - "java/src/org/chromium/chrome/browser/sync/TrustedVaultClient.java", - "java/src/org/chromium/chrome/browser/tab/TabBrowserControlsConstraintsHelper.java", - "java/src/org/chromium/chrome/browser/tab/TabFavicon.java", -diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni ---- a/chrome/android/chrome_java_sources.gni -+++ b/chrome/android/chrome_java_sources.gni -@@ -1087,7 +1087,6 @@ chrome_java_sources = [ - "java/src/org/chromium/chrome/browser/suggestions/tile/TileGroupDelegateImpl.java", - "java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java", - "java/src/org/chromium/chrome/browser/suggestions/tile/TopSitesTileView.java", -- "java/src/org/chromium/chrome/browser/supervised_user/ChildAccountService.java", - "java/src/org/chromium/chrome/browser/survey/ChromeSurveyController.java", - "java/src/org/chromium/chrome/browser/sync/SyncErrorNotifier.java", - "java/src/org/chromium/chrome/browser/sync/TrustedVaultClient.java", +@@ -749,7 +749,6 @@ if (current_toolchain == default_toolchain) { + "//components/dom_distiller/core:distiller_type_java", + "//components/ntp_tiles:ntp_tiles_enums_java", + "//components/offline_pages/core:offline_page_model_enums_java", +- "//components/supervised_user/core/browser:supervised_user_utils_enum_javagen", + "//net:effective_connection_type_java", + ] + diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java --- a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java +++ b/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/FeedSurfaceCoordinator.java -@@ -67,7 +67,6 @@ import org.chromium.components.browser_ui.widget.displaystyle.UiConfig; +@@ -68,7 +68,6 @@ import org.chromium.components.browser_ui.widget.displaystyle.UiConfig; import org.chromium.components.feature_engagement.EventConstants; import org.chromium.components.feature_engagement.Tracker; import org.chromium.components.prefs.PrefService; @@ -55,7 +42,7 @@ diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/ import org.chromium.components.user_prefs.UserPrefs; import org.chromium.third_party.android.swiperefresh.SwipeRefreshLayout; import org.chromium.ui.base.DeviceFormFactor; -@@ -759,9 +758,7 @@ public class FeedSurfaceCoordinator +@@ -753,9 +752,7 @@ public class FeedSurfaceCoordinator * Returns true if the supervised user feed should be displayed. */ public boolean shouldDisplaySupervisedFeed() { @@ -69,7 +56,7 @@ diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3166,8 +3166,6 @@ static_library("browser") { +@@ -3237,8 +3237,6 @@ static_library("browser") { "feed/android/refresh_task_scheduler_impl.cc", "feed/android/refresh_task_scheduler_impl.h", "feed/android/web_feed_bridge.cc", @@ -78,156 +65,118 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "file_select_helper_contacts_android.cc", "file_select_helper_contacts_android.h", "first_run/android/first_run_prefs.cc", -@@ -3372,10 +3370,6 @@ static_library("browser") { - "ssl/chrome_security_state_model_delegate.h", - "ssl/known_interception_disclosure_infobar.cc", - "ssl/known_interception_disclosure_infobar.h", -- "supervised_user/android/favicon_fetcher.cc", -- "supervised_user/android/favicon_fetcher.h", -- "supervised_user/android/supervised_user_web_content_handler_impl.cc", -- "supervised_user/android/supervised_user_web_content_handler_impl.h", - "sync/glue/synced_tab_delegate_android.cc", - "sync/glue/synced_tab_delegate_android.h", - "sync/glue/synced_window_delegate_android.cc", -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 -@@ -7864,6 +7864,7 @@ const FeatureEntry kFeatureEntries[] = { - #endif +diff --git a/chrome/browser/prefs/chrome_pref_service_factory.cc b/chrome/browser/prefs/chrome_pref_service_factory.cc +--- a/chrome/browser/prefs/chrome_pref_service_factory.cc ++++ b/chrome/browser/prefs/chrome_pref_service_factory.cc +@@ -317,7 +317,7 @@ void PrepareFactory( + policy::BrowserPolicyConnector* policy_connector) { + factory->SetManagedPolicies(policy_service, policy_connector); + factory->SetRecommendedPolicies(policy_service, policy_connector); +- if (supervised_user_settings) { ++ if (((false)) && supervised_user_settings) { + scoped_refptr supervised_user_prefs = + base::MakeRefCounted(supervised_user_settings); + DCHECK(async || supervised_user_prefs->IsInitializationComplete()); +diff --git a/chrome/browser/profiles/profile_attributes_entry.cc b/chrome/browser/profiles/profile_attributes_entry.cc +--- a/chrome/browser/profiles/profile_attributes_entry.cc ++++ b/chrome/browser/profiles/profile_attributes_entry.cc +@@ -422,7 +422,7 @@ bool ProfileAttributesEntry::IsSigninRequired() const { + } - #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) -+#if BUILDFLAG(ENABLE_SUPERVISED_USERS) - {"enable-family-link-extensions-permissions", - flag_descriptions:: - kEnableExtensionsPermissionsForSupervisedUsersOnDesktopName, -@@ -7873,6 +7874,7 @@ const FeatureEntry kFeatureEntries[] = { - FEATURE_VALUE_TYPE( - supervised_user:: - kEnableExtensionsPermissionsForSupervisedUsersOnDesktop)}, -+#endif - #endif + std::string ProfileAttributesEntry::GetSupervisedUserId() const { +- return GetString(kSupervisedUserId); ++ return ""; + } - {"notification-scheduler", flag_descriptions::kNotificationSchedulerName, -diff --git a/chrome/browser/extensions/api/settings_private/prefs_util.cc b/chrome/browser/extensions/api/settings_private/prefs_util.cc ---- a/chrome/browser/extensions/api/settings_private/prefs_util.cc -+++ b/chrome/browser/extensions/api/settings_private/prefs_util.cc -@@ -1047,9 +1047,11 @@ const PrefsUtil::TypedPrefMap& PrefsUtil::GetAllowlistedKeys() { - settings_api::PrefType::kBoolean; - #endif - -+#if BUILDFLAG(ENABLE_SUPERVISED_USERS) - // Supervised Users. This setting is queried in our Tast tests (b/241943380). - (*s_allowlist)[::prefs::kSupervisedUserExtensionsMayRequestPermissions] = - settings_api::PrefType::kBoolean; -+#endif - - #if BUILDFLAG(IS_CHROMEOS_LACROS) - (*s_allowlist)[::prefs::kUseAshProxy] = settings_api::PrefType::kBoolean; + bool ProfileAttributesEntry::IsEphemeral() const { diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/profile_impl.cc --- a/chrome/browser/profiles/profile_impl.cc +++ b/chrome/browser/profiles/profile_impl.cc -@@ -693,10 +693,12 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) { +@@ -690,10 +690,6 @@ void ProfileImpl::DoFinalInit(CreateMode create_mode) { prefs->SetTime(prefs::kProfileCreationTime, path_creation_time_); pref_change_registrar_.Init(prefs); -+#if BUILDFLAG(ENABLE_SUPERVISED_USERS) - pref_change_registrar_.Add( - prefs::kSupervisedUserId, - base::BindRepeating(&ProfileImpl::UpdateSupervisedUserIdInStorage, - base::Unretained(this))); -+#endif +- pref_change_registrar_.Add( +- prefs::kSupervisedUserId, +- base::BindRepeating(&ProfileImpl::UpdateSupervisedUserIdInStorage, +- base::Unretained(this))); // Changes in the profile avatar. pref_change_registrar_.Add( -@@ -1638,11 +1640,13 @@ GURL ProfileImpl::GetHomePage() { +@@ -1631,6 +1627,7 @@ GURL ProfileImpl::GetHomePage() { } void ProfileImpl::UpdateSupervisedUserIdInStorage() { -+#if BUILDFLAG(ENABLE_SUPERVISED_USERS) ++ if ((true)) return; ProfileManager* profile_manager = g_browser_process->profile_manager(); ProfileAttributesEntry* entry = profile_manager->GetProfileAttributesStorage() .GetProfileAttributesWithPath(GetPath()); - if (entry) - entry->SetSupervisedUserId(GetPrefs()->GetString(prefs::kSupervisedUserId)); -+#endif - } - - void ProfileImpl::UpdateNameInStorage() { diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profiles/profile_manager.cc --- a/chrome/browser/profiles/profile_manager.cc +++ b/chrome/browser/profiles/profile_manager.cc -@@ -1214,6 +1214,7 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) { +@@ -1214,23 +1214,6 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) { profile->GetPrefs()->SetString(prefs::kProfileName, profile_name); } -+#if BUILDFLAG(ENABLE_SUPERVISED_USERS) - base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); - bool force_supervised_user_id = - #if BUILDFLAG(IS_CHROMEOS_ASH) -@@ -1231,6 +1232,7 @@ void ProfileManager::InitProfileUserPrefs(Profile* profile) { - profile->GetPrefs()->SetString(prefs::kSupervisedUserId, - supervised_user_id); - } -+#endif +- base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); +- bool force_supervised_user_id = +-#if BUILDFLAG(IS_CHROMEOS_ASH) +- !ash::IsSigninBrowserContext(profile) && +- !ash::IsLockScreenAppBrowserContext(profile) && +-#endif +- command_line->HasSwitch(switches::kSupervisedUserId); +- +- if (force_supervised_user_id) { +- supervised_user_id = +- command_line->GetSwitchValueASCII(switches::kSupervisedUserId); +- } +- if (force_supervised_user_id || +- !profile->GetPrefs()->HasPrefPath(prefs::kSupervisedUserId)) { +- profile->GetPrefs()->SetString(prefs::kSupervisedUserId, +- supervised_user_id); +- } #if !BUILDFLAG(IS_ANDROID) if (profile->IsNewProfile()) { profile->GetPrefs()->SetBoolean(prefs::kHasSeenWelcomePage, false); -@@ -2029,8 +2031,10 @@ void ProfileManager::AddProfileToStorage(Profile* profile) { +@@ -2038,9 +2021,6 @@ void ProfileManager::AddProfileToStorage(Profile* profile) { init_params.icon_index = profile->GetPrefs()->GetInteger(prefs::kProfileAvatarIndex); -+#if BUILDFLAG(ENABLE_SUPERVISED_USERS) - init_params.supervised_user_id = - profile->GetPrefs()->GetString(prefs::kSupervisedUserId); -+#endif - +- init_params.supervised_user_id = +- profile->GetPrefs()->GetString(prefs::kSupervisedUserId); +- #if BUILDFLAG(IS_CHROMEOS_ASH) user_manager::User* user = + ash::ProfileHelper::Get()->GetUserByProfile(profile); diff --git a/chrome/browser/ui/webui/managed_ui_handler.cc b/chrome/browser/ui/webui/managed_ui_handler.cc --- a/chrome/browser/ui/webui/managed_ui_handler.cc +++ b/chrome/browser/ui/webui/managed_ui_handler.cc -@@ -90,9 +90,11 @@ void ManagedUIHandler::AddObservers() { +@@ -89,10 +89,6 @@ void ManagedUIHandler::AddObservers() { + auto domain = static_cast(i); policy_service->AddObserver(domain, this); } - -+#if BUILDFLAG(ENABLE_SUPERVISED_USERS) - pref_registrar_.Add(prefs::kSupervisedUserId, - base::BindRepeating(&ManagedUIHandler::NotifyIfChanged, - base::Unretained(this))); -+#endif +- +- pref_registrar_.Add(prefs::kSupervisedUserId, +- base::BindRepeating(&ManagedUIHandler::NotifyIfChanged, +- base::Unretained(this))); } void ManagedUIHandler::RemoveObservers() { diff --git a/chrome/browser/ui/webui/management/management_ui_handler.cc b/chrome/browser/ui/webui/management/management_ui_handler.cc --- a/chrome/browser/ui/webui/management/management_ui_handler.cc +++ b/chrome/browser/ui/webui/management/management_ui_handler.cc -@@ -1507,10 +1507,12 @@ void ManagementUIHandler::AddObservers() { +@@ -1496,11 +1496,6 @@ void ManagementUIHandler::AddObservers() { pref_registrar_.Init(profile->GetPrefs()); -+#if BUILDFLAG(ENABLE_SUPERVISED_USERS) - pref_registrar_.Add( - prefs::kSupervisedUserId, - base::BindRepeating(&ManagementUIHandler::UpdateManagedState, - base::Unretained(this))); -+#endif - +- pref_registrar_.Add( +- prefs::kSupervisedUserId, +- base::BindRepeating(&ManagementUIHandler::UpdateManagedState, +- base::Unretained(this))); +- #if BUILDFLAG(IS_CHROMEOS_ASH) pref_registrar_.Add( -diff --git a/components/supervised_user/buildflags.gni b/components/supervised_user/buildflags.gni ---- a/components/supervised_user/buildflags.gni -+++ b/components/supervised_user/buildflags.gni -@@ -4,9 +4,5 @@ - - declare_args() { - # Enables supervision for Family Link users. -- enable_supervised_users = -- # Platforms which fully support supervision features: -- is_android || is_chromeos || -- # Platforms for which support is currently in development: -- is_ios || is_linux || is_mac || is_win -+ enable_supervised_users = false - } + plugin_vm::prefs::kPluginVmDataCollectionAllowed, diff --git a/components/supervised_user/core/browser/supervised_user_pref_store.cc b/components/supervised_user/core/browser/supervised_user_pref_store.cc --- a/components/supervised_user/core/browser/supervised_user_pref_store.cc +++ b/components/supervised_user/core/browser/supervised_user_pref_store.cc @@ -242,7 +191,18 @@ diff --git a/components/supervised_user/core/browser/supervised_user_pref_store. diff --git a/components/supervised_user/core/browser/supervised_user_preferences.cc b/components/supervised_user/core/browser/supervised_user_preferences.cc --- a/components/supervised_user/core/browser/supervised_user_preferences.cc +++ b/components/supervised_user/core/browser/supervised_user_preferences.cc -@@ -187,7 +187,7 @@ bool IsSafeSitesEnabled(const PrefService& pref_service) { +@@ -162,6 +162,10 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) { + } + + void EnableParentalControls(PrefService& pref_service) { ++ if ((true)) { ++ DisableParentalControls(pref_service); ++ return; ++ } + pref_service.SetString(prefs::kSupervisedUserId, + supervised_user::kChildAccountSUID); + SetIsChildAccountStatusKnown(pref_service); +@@ -184,7 +188,7 @@ bool IsSafeSitesEnabled(const PrefService& pref_service) { } bool IsSubjectToParentalControls(const PrefService& pref_service) { @@ -251,63 +211,40 @@ diff --git a/components/supervised_user/core/browser/supervised_user_preferences } bool AreExtensionsPermissionsEnabled(const PrefService& pref_service) { +diff --git a/components/supervised_user/core/browser/supervised_user_service.cc b/components/supervised_user/core/browser/supervised_user_service.cc +--- a/components/supervised_user/core/browser/supervised_user_service.cc ++++ b/components/supervised_user/core/browser/supervised_user_service.cc +@@ -189,6 +189,7 @@ FirstTimeInterstitialBannerState SupervisedUserService::GetUpdatedBannerState( + } + + void SupervisedUserService::SetActive(bool active) { ++ active = false; + if (active_ == active) { + return; + } diff --git a/components/supervised_user/core/browser/supervised_user_utils.cc b/components/supervised_user/core/browser/supervised_user_utils.cc --- a/components/supervised_user/core/browser/supervised_user_utils.cc +++ b/components/supervised_user/core/browser/supervised_user_utils.cc -@@ -97,11 +97,15 @@ GURL NormalizeUrl(const GURL& url) { +@@ -99,6 +99,7 @@ GURL NormalizeUrl(const GURL& url) { } bool AreWebFilterPrefsDefault(const PrefService& pref_service) { -+#if BUILDFLAG(ENABLE_SUPERVISED_USERS) ++ if ((true)) return true; return pref_service .FindPreference(prefs::kDefaultSupervisedUserFilteringBehavior) ->IsDefaultValue() || - pref_service.FindPreference(prefs::kSupervisedUserSafeSites) - ->IsDefaultValue(); -+#else -+ return true; -+#endif +diff --git a/components/supervised_user/core/common/features.cc b/components/supervised_user/core/common/features.cc +--- a/components/supervised_user/core/common/features.cc ++++ b/components/supervised_user/core/common/features.cc +@@ -122,4 +122,10 @@ bool IsShadowKidsApiWithSafeSitesEnabled() { + return base::FeatureList::IsEnabled(kShadowKidsApiWithSafeSites); } - bool EmitLogRecordHistograms( -diff --git a/components/supervised_user/core/common/pref_names.h b/components/supervised_user/core/common/pref_names.h ---- a/components/supervised_user/core/common/pref_names.h -+++ b/components/supervised_user/core/common/pref_names.h -@@ -5,8 +5,10 @@ - #ifndef COMPONENTS_SUPERVISED_USER_CORE_COMMON_PREF_NAMES_H_ - #define COMPONENTS_SUPERVISED_USER_CORE_COMMON_PREF_NAMES_H_ - -+#include "components/supervised_user/core/common/buildflags.h" - #include "extensions/buildflags/buildflags.h" - -+#if BUILDFLAG(ENABLE_SUPERVISED_USERS) - namespace prefs { - - // A bool pref that keeps whether the child status for this profile was already -@@ -151,4 +153,6 @@ inline constexpr char kSupervisedUserLocallyParentApprovedExtensions[] = - - } // namespace prefs - -+#endif // BUILDFLAG(ENABLE_SUPERVISED_USERS) -+ - #endif // COMPONENTS_SUPERVISED_USER_CORE_COMMON_PREF_NAMES_H_ -diff --git a/components/supervised_user/core/common/supervised_user_constants.cc b/components/supervised_user/core/common/supervised_user_constants.cc ---- a/components/supervised_user/core/common/supervised_user_constants.cc -+++ b/components/supervised_user/core/common/supervised_user_constants.cc -@@ -69,6 +69,7 @@ const char kChromeOSAvatarIndex[] = "chromeos-avatar-index"; - - const char kChromeOSPasswordData[] = "chromeos-password-data"; - -+#if BUILDFLAG(ENABLE_SUPERVISED_USERS) - const char* const kCustodianInfoPrefs[] = { - prefs::kSupervisedUserCustodianName, - prefs::kSupervisedUserCustodianEmail, -@@ -81,6 +82,7 @@ const char* const kCustodianInfoPrefs[] = { - prefs::kSupervisedUserSecondCustodianProfileURL, - prefs::kSupervisedUserSecondCustodianProfileImageURL, - }; ++SET_CROMITE_FEATURE_DISABLED(kKidFriendlyContentFeed); ++SET_CROMITE_FEATURE_DISABLED(kLocalWebApprovals); ++#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) ++SET_CROMITE_FEATURE_DISABLED(kEnableExtensionsPermissionsForSupervisedUsersOnDesktop); +#endif - - const base::FilePath::CharType kSupervisedUserSettingsFilename[] = - FILE_PATH_LITERAL("Managed Mode Settings"); ++ + } // namespace supervised_user -- diff --git a/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch b/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch index e99e6450..a3729a6a 100644 --- a/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch +++ b/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch @@ -95,7 +95,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/thir #include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h" #include "third_party/blink/public/platform/web_audio_latency_hint.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h" -@@ -587,7 +588,9 @@ double AudioContext::baseLatency() const { +@@ -582,7 +583,9 @@ double AudioContext::baseLatency() const { DCHECK(IsMainThread()); DCHECK(destination()); @@ -117,7 +117,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/base_audio_context.cc b #include "third_party/blink/public/mojom/devtools/console_message.mojom-blink.h" #include "third_party/blink/public/mojom/frame/lifecycle.mojom-shared.h" #include "third_party/blink/public/platform/platform.h" -@@ -722,6 +723,17 @@ LocalDOMWindow* BaseAudioContext::GetWindow() const { +@@ -721,6 +722,17 @@ LocalDOMWindow* BaseAudioContext::GetWindow() const { return To(GetExecutionContext()); } @@ -150,7 +150,7 @@ diff --git a/third_party/blink/renderer/modules/webaudio/base_audio_context.h b/ diff --git a/third_party/blink/renderer/modules/webaudio/offline_audio_context.cc b/third_party/blink/renderer/modules/webaudio/offline_audio_context.cc --- a/third_party/blink/renderer/modules/webaudio/offline_audio_context.cc +++ b/third_party/blink/renderer/modules/webaudio/offline_audio_context.cc -@@ -369,6 +369,7 @@ void OfflineAudioContext::FireCompletionEvent() { +@@ -368,6 +368,7 @@ void OfflineAudioContext::FireCompletionEvent() { if (!rendered_buffer) { return; } diff --git a/build/patches/Battery-API-return-nothing.patch b/build/patches/Battery-API-return-nothing.patch index 9364c23e..9e074294 100644 --- a/build/patches/Battery-API-return-nothing.patch +++ b/build/patches/Battery-API-return-nothing.patch @@ -12,7 +12,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/third_party/blink/renderer/modules/battery/battery_manager.cc b/third_party/blink/renderer/modules/battery/battery_manager.cc --- a/third_party/blink/renderer/modules/battery/battery_manager.cc +++ b/third_party/blink/renderer/modules/battery/battery_manager.cc -@@ -80,46 +80,28 @@ ScriptPromiseTyped BatteryManager::StartRequest( +@@ -80,46 +80,28 @@ ScriptPromise BatteryManager::StartRequest( } bool BatteryManager::charging() { diff --git a/build/patches/Block-gateway-attacks-via-websockets.patch b/build/patches/Block-gateway-attacks-via-websockets.patch index 4e1fc87b..3a4c646c 100644 --- a/build/patches/Block-gateway-attacks-via-websockets.patch +++ b/build/patches/Block-gateway-attacks-via-websockets.patch @@ -72,7 +72,7 @@ diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.h b/third diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/third_party/blink/renderer/core/loader/frame_fetch_context.cc --- a/third_party/blink/renderer/core/loader/frame_fetch_context.cc +++ b/third_party/blink/renderer/core/loader/frame_fetch_context.cc -@@ -589,6 +589,26 @@ bool FrameFetchContext::ShouldBlockRequestByInspector(const KURL& url) const { +@@ -590,6 +590,26 @@ bool FrameFetchContext::ShouldBlockRequestByInspector(const KURL& url) const { return should_block_request; } @@ -208,7 +208,7 @@ diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetc scoped_refptr ExtractBlobHandle( Request* request, ExceptionState& exception_state) { -@@ -189,6 +213,13 @@ ScriptPromiseTyped BackgroundFetchManager::fetch( +@@ -189,6 +213,13 @@ ScriptPromise BackgroundFetchManager::fetch( exception_state); } @@ -240,7 +240,7 @@ diff --git a/third_party/blink/renderer/modules/websockets/websocket_channel_imp diff --git a/third_party/blink/renderer/modules/websockets/websocket_common.cc b/third_party/blink/renderer/modules/websockets/websocket_common.cc --- a/third_party/blink/renderer/modules/websockets/websocket_common.cc +++ b/third_party/blink/renderer/modules/websockets/websocket_common.cc -@@ -125,9 +125,39 @@ WebSocketCommon::ConnectResult WebSocketCommon::Connect( +@@ -136,9 +136,39 @@ WebSocketCommon::ConnectResult WebSocketCommon::Connect( return ConnectResult::kException; } diff --git a/build/patches/Block-qjz9zk-or-trk-requests.patch b/build/patches/Block-qjz9zk-or-trk-requests.patch index e1c7c64e..873c51ba 100644 --- a/build/patches/Block-qjz9zk-or-trk-requests.patch +++ b/build/patches/Block-qjz9zk-or-trk-requests.patch @@ -18,17 +18,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html net/url_request/trk_protocol_handler.h | 30 +++++++++++++++++++ net/url_request/url_request.cc | 8 +++++ .../url_request_context_builder.cc | 3 ++ - url/url_constants.cc | 1 + url/url_constants.h | 1 + url/url_util.cc | 2 ++ - 14 files changed, 91 insertions(+), 1 deletion(-) + 13 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 net/url_request/trk_protocol_handler.cc create mode 100644 net/url_request/trk_protocol_handler.h diff --git a/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc b/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc --- a/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc +++ b/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc -@@ -58,6 +58,7 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForScheme( +@@ -56,6 +56,7 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForScheme( if (base::IsStringASCII(scheme) && (ProfileIOData::IsHandledProtocol(scheme) || base::EqualsCaseInsensitiveASCII(scheme, content::kViewSourceScheme) || @@ -108,7 +107,7 @@ diff --git a/components/url_formatter/url_fixer.cc b/components/url_formatter/ur diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc --- a/content/browser/child_process_security_policy_impl.cc +++ b/content/browser/child_process_security_policy_impl.cc -@@ -848,6 +848,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() +@@ -837,6 +837,7 @@ ChildProcessSecurityPolicyImpl::ChildProcessSecurityPolicyImpl() RegisterPseudoScheme(url::kJavaScriptScheme); RegisterPseudoScheme(kViewSourceScheme); RegisterPseudoScheme(kGoogleChromeScheme); @@ -119,7 +118,7 @@ diff --git a/content/browser/child_process_security_policy_impl.cc b/content/bro diff --git a/net/BUILD.gn b/net/BUILD.gn --- a/net/BUILD.gn +++ b/net/BUILD.gn -@@ -1004,6 +1004,8 @@ component("net") { +@@ -1012,6 +1012,8 @@ component("net") { "url_request/url_request_http_job.cc", "url_request/url_request_http_job.h", "url_request/url_request_interceptor.cc", @@ -236,7 +235,7 @@ diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/ur #include "net/url_request/url_request_context.h" #include "net/url_request/url_request_job_factory.h" #include "url/url_constants.h" -@@ -559,6 +560,8 @@ std::unique_ptr URLRequestContextBuilder::Build() { +@@ -575,6 +576,8 @@ std::unique_ptr URLRequestContextBuilder::Build() { job_factory->SetProtocolHandler(scheme_handler.first, std::move(scheme_handler.second)); } @@ -245,17 +244,6 @@ diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/ur protocol_handlers_.clear(); context->set_job_factory(std::move(job_factory)); -diff --git a/url/url_constants.cc b/url/url_constants.cc ---- a/url/url_constants.cc -+++ b/url/url_constants.cc -@@ -29,6 +29,7 @@ const char16_t kDataScheme16[] = u"data"; - const char kFileScheme[] = "file"; - const char16_t kFileScheme16[] = u"file"; - const char kFileSystemScheme[] = "filesystem"; -+const char kTraceScheme[] = "trk"; - const char16_t kFileSystemScheme16[] = u"filesystem"; - const char kFtpScheme[] = "ftp"; - const char16_t kFtpScheme16[] = u"ftp"; diff --git a/url/url_constants.h b/url/url_constants.h --- a/url/url_constants.h +++ b/url/url_constants.h diff --git a/build/patches/Bookmarks-select-all-menu-entry.patch b/build/patches/Bookmarks-select-all-menu-entry.patch index a2248c17..74f11c80 100644 --- a/build/patches/Bookmarks-select-all-menu-entry.patch +++ b/build/patches/Bookmarks-select-all-menu-entry.patch @@ -93,7 +93,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm 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 -@@ -248,6 +248,9 @@ CHAR_LIMIT guidelines: +@@ -253,6 +253,9 @@ CHAR_LIMIT guidelines: Sites diff --git a/build/patches/Bromite-auto-updater.patch b/build/patches/Bromite-auto-updater.patch index 56cae2c7..f4973f8d 100644 --- a/build/patches/Bromite-auto-updater.patch +++ b/build/patches/Bromite-auto-updater.patch @@ -21,12 +21,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../inline/BromiteInlineUpdateController.java | 273 ++++++++++++++++++ .../omaha/inline/InlineUpdateController.java | 51 ++++ .../inline/InlineUpdateControllerFactory.java | 21 ++ - chrome/browser/BUILD.gn | 2 + + chrome/browser/BUILD.gn | 6 + chrome/browser/endpoint_fetcher/BUILD.gn | 32 ++ chrome/browser/endpoint_fetcher/DEPS | 3 + chrome/browser/endpoint_fetcher/OWNERS | 1 + - .../endpoint_fetcher_android.cc | 184 ++++++++++++ - .../endpoint_fetcher/EndpointFetcher.java | 165 +++++++++++ + .../endpoint_fetcher_android.cc | 149 ++++++++++ + .../endpoint_fetcher/EndpointFetcher.java | 116 ++++++++ .../EndpointHeaderResponse.java | 31 ++ .../endpoint_fetcher/EndpointResponse.java | 30 ++ .../flags/android/chrome_feature_list.cc | 1 + @@ -36,7 +36,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../endpoint_fetcher/endpoint_fetcher.h | 23 +- .../Bromite-auto-updater.inc | 3 + .../Bromite-auto-updater.inc | 1 + - 28 files changed, 1269 insertions(+), 52 deletions(-) + 28 files changed, 1189 insertions(+), 52 deletions(-) create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateController.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java @@ -53,7 +53,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/build/android/java/templates/BuildConfig.template b/build/android/java/templates/BuildConfig.template --- a/build/android/java/templates/BuildConfig.template +++ b/build/android/java/templates/BuildConfig.template -@@ -87,6 +87,8 @@ public class BuildConfig { +@@ -94,6 +94,8 @@ public class BuildConfig { public static MAYBE_FINAL boolean IS_FOR_TEST MAYBE_FALSE; #endif @@ -65,7 +65,7 @@ diff --git a/build/android/java/templates/BuildConfig.template b/build/android/j diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni --- a/build/config/android/rules.gni +++ b/build/config/android/rules.gni -@@ -1905,6 +1905,9 @@ if (enable_java_templates && is_android) { +@@ -1901,6 +1901,9 @@ if (is_robolectric) { sources = [ "//build/android/java/templates/BuildConfig.template" ] defines = [] @@ -1114,22 +1114,19 @@ new file mode 100644 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3116,6 +3116,7 @@ static_library("browser") { - "download/android/service/download_task_scheduler.h", - "download/android/string_utils.cc", - "download/download_crx_util_android.cc", +@@ -2761,6 +2761,12 @@ static_library("browser") { + } + + if (is_android) { ++ sources += [ + "endpoint_fetcher/endpoint_fetcher_android.cc", - "enterprise/reporting/browser_report_generator_android.cc", - "enterprise/reporting/browser_report_generator_android.h", - "enterprise/reporting/profile_report_generator_android.cc", -@@ -3451,6 +3452,7 @@ static_library("browser") { - "//chrome/browser/content_extraction/android:jni_headers", - "//chrome/browser/device_reauth/android:jni_headers", - "//chrome/browser/download/internal/android", ++ ] ++ deps += [ + "//chrome/browser/endpoint_fetcher:jni_headers", - "//chrome/browser/feed/android:jni_headers", - "//chrome/browser/feedback/android", - "//chrome/browser/feedback/android:jni_headers", ++ ] + sources += [ + "accessibility/accessibility_prefs/android/accessibility_prefs_controller.cc", + "accessibility/accessibility_prefs/android/accessibility_prefs_controller.h", diff --git a/chrome/browser/endpoint_fetcher/BUILD.gn b/chrome/browser/endpoint_fetcher/BUILD.gn new file mode 100644 --- /dev/null @@ -1185,7 +1182,7 @@ diff --git a/chrome/browser/endpoint_fetcher/endpoint_fetcher_android.cc b/chrom new file mode 100644 --- /dev/null +++ b/chrome/browser/endpoint_fetcher/endpoint_fetcher_android.cc -@@ -0,0 +1,184 @@ +@@ -0,0 +1,149 @@ +// Copyright 2019 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. @@ -1282,41 +1279,6 @@ new file mode 100644 + std::move(endpoint_fetcher))); +} + -+static void JNI_EndpointFetcher_NativeFetchChromeAPIKey( -+ JNIEnv* env, -+ const base::android::JavaParamRef& jprofile, -+ const base::android::JavaParamRef& jurl, -+ const base::android::JavaParamRef& jhttps_method, -+ const base::android::JavaParamRef& jcontent_type, -+ const base::android::JavaParamRef& jpost_data, -+ jlong jtimeout, -+ const base::android::JavaParamRef& jheaders, -+ jint jannotation_hash_code, -+ const base::android::JavaParamRef& jcallback) { -+ std::vector headers; -+ base::android::AppendJavaStringArrayToStringVector(env, jheaders, &headers); -+ auto endpoint_fetcher = std::make_unique( -+ ProfileAndroid::FromProfileAndroid(jprofile) -+ ->GetDefaultStoragePartition() -+ ->GetURLLoaderFactoryForBrowserProcess(), -+ GURL(base::android::ConvertJavaStringToUTF8(env, jurl)), -+ base::android::ConvertJavaStringToUTF8(env, jhttps_method), -+ base::android::ConvertJavaStringToUTF8(env, jcontent_type), -+ base::Milliseconds(jtimeout), -+ base::android::ConvertJavaStringToUTF8(env, jpost_data), headers, -+ net::NetworkTrafficAnnotationTag::FromJavaAnnotation( -+ jannotation_hash_code), -+ chrome::GetChannel() == version_info::Channel::STABLE); -+ auto* const endpoint_fetcher_ptr = endpoint_fetcher.get(); -+ endpoint_fetcher_ptr->PerformRequest( -+ base::BindOnce(&OnEndpointFetcherComplete, -+ base::android::ScopedJavaGlobalRef(jcallback), -+ // unique_ptr endpoint_fetcher is passed until the callback -+ // to ensure its lifetime across the request. -+ std::move(endpoint_fetcher)), -+ nullptr); -+} -+ +static void JNI_EndpointFetcher_NativeFetchWithNoAuth( + JNIEnv* env, + const base::android::JavaParamRef& jprofile, @@ -1374,7 +1336,7 @@ diff --git a/chrome/browser/endpoint_fetcher/java/src/org/chromium/chrome/browse new file mode 100644 --- /dev/null +++ b/chrome/browser/endpoint_fetcher/java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointFetcher.java -@@ -0,0 +1,165 @@ +@@ -0,0 +1,116 @@ +// Copyright 2019 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. @@ -1443,44 +1405,6 @@ new file mode 100644 + callback); + } + -+ /** -+ * Calls an endpoint using Chrome API Key returns the response via a callback -+ * @param callback to pass the response back in -+ * @param profile via which the endpoint is called -+ * @param url endpoint URL called -+ * @param httpsMethod the HTTPS method used e.g. "GET" or "POST" -+ * @param contentType the content type e.g. "application/json" -+ * @param postData data for a "POST" request -+ * @param timeout time after which the request will terminate in the event a response hasn't -+ * been received -+ * @param headers headers for the request. Key/value pairs are stored sequentially in the array. -+ */ -+ @MainThread -+ public static void fetchUsingChromeAPIKey( -+ Callback callback, -+ Profile profile, -+ String url, -+ String httpsMethod, -+ String contentType, -+ String postData, -+ long timeout, -+ String[] headers, -+ NetworkTrafficAnnotationTag annotation) { -+ // EndpointFetcher currently does not support incognito mode -+ // assert !profile.isOffTheRecord(); -+ EndpointFetcherJni.get() -+ .nativeFetchChromeAPIKey( -+ profile, -+ url, -+ httpsMethod, -+ contentType, -+ postData, -+ timeout, -+ headers, -+ annotation.getHashCode(), -+ callback); -+ } -+ + @MainThread + public static void nativeHeadWithNoAuth( + Callback callback, Profile profile, @@ -1513,17 +1437,6 @@ new file mode 100644 + int annotationHashCode, + Callback callback); + -+ void nativeFetchChromeAPIKey( -+ Profile profile, -+ String url, -+ String httpsMethod, -+ String contentType, -+ String postData, -+ long timeout, -+ String[] headers, -+ int annotationHashCode, -+ Callback callback); -+ + void nativeFetchWithNoAuth( + Profile profile, + String url, @@ -1614,7 +1527,7 @@ new file mode 100644 diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -237,6 +237,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -241,6 +241,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kPreconnectOnTabCreation, &kPriceChangeModule, &kPwaRestoreUi, @@ -1625,10 +1538,10 @@ 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 -@@ -311,6 +311,7 @@ public abstract class ChromeFeatureList { +@@ -319,6 +319,7 @@ public abstract class ChromeFeatureList { + public static final String INCOGNITO_REAUTHENTICATION_FOR_ANDROID = "IncognitoReauthenticationForAndroid"; public static final String INCOGNITO_SCREENSHOT = "IncognitoScreenshot"; - public static final String INSTANT_START = "InstantStart"; + public static final String INLINE_UPDATE_FLOW = "InlineUpdateFlow"; public static final String INTEREST_FEED_V2_HEARTS = "InterestFeedV2Hearts"; public static final String IP_PROTECTION_UX = "IpProtectionUx"; @@ -1636,7 +1549,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -2090,6 +2090,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -2104,6 +2104,12 @@ Your Google account may have other forms of browsing history like searches and a Chrome updates are no longer supported for this version of Android @@ -1649,7 +1562,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro -@@ -3784,7 +3790,10 @@ To change this setting, BEGIN_LINKclear the Chrome da +@@ -3833,7 +3839,10 @@ To change this setting, BEGIN_LINKclear the Chrome da @@ -1661,7 +1574,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Newer version is available -@@ -3795,6 +3804,18 @@ To change this setting, BEGIN_LINKclear the Chrome da +@@ -3844,6 +3853,18 @@ To change this setting, BEGIN_LINKclear the Chrome da Android version is unsupported @@ -1695,31 +1608,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi namespace { const char kContentTypeKey[] = "Content-Type"; const char kDeveloperKey[] = "X-Developer-Key"; -@@ -65,6 +70,7 @@ EndpointFetcher::EndpointFetcher( - http_method_(http_method), - content_type_(content_type), - timeout_(timeout), -+ intercept_redirect_(false), - post_data_(post_data), - headers_(headers), - annotation_tag_(annotation_tag), -@@ -83,6 +89,7 @@ EndpointFetcher::EndpointFetcher( - http_method_("GET"), - content_type_(std::string()), - timeout_(base::Milliseconds(0)), -+ intercept_redirect_(false), - post_data_(std::string()), - annotation_tag_(annotation_tag), - url_loader_factory_(url_loader_factory), -@@ -108,6 +115,7 @@ EndpointFetcher::EndpointFetcher( - http_method_(http_method), - content_type_(content_type), - timeout_(timeout), -+ intercept_redirect_(false), - post_data_(post_data), - annotation_tag_(annotation_tag), - url_loader_factory_(url_loader_factory), -@@ -135,6 +143,7 @@ EndpointFetcher::EndpointFetcher( +@@ -66,6 +71,7 @@ EndpointFetcher::EndpointFetcher( http_method_(http_method), content_type_(content_type), timeout_(timeout), @@ -1727,7 +1616,31 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi post_data_(post_data), headers_(headers), cors_exempt_headers_(cors_exempt_headers), -@@ -147,11 +156,29 @@ EndpointFetcher::EndpointFetcher( +@@ -85,6 +91,7 @@ EndpointFetcher::EndpointFetcher( + http_method_("GET"), + content_type_(std::string()), + timeout_(base::Milliseconds(0)), ++ intercept_redirect_(false), + post_data_(std::string()), + annotation_tag_(annotation_tag), + url_loader_factory_(url_loader_factory), +@@ -110,6 +117,7 @@ EndpointFetcher::EndpointFetcher( + http_method_(http_method), + content_type_(content_type), + timeout_(timeout), ++ intercept_redirect_(false), + post_data_(post_data), + annotation_tag_(annotation_tag), + url_loader_factory_(url_loader_factory), +@@ -137,6 +145,7 @@ EndpointFetcher::EndpointFetcher( + http_method_(http_method), + content_type_(content_type), + timeout_(timeout), ++ intercept_redirect_(false), + post_data_(post_data), + headers_(headers), + cors_exempt_headers_(cors_exempt_headers), +@@ -149,11 +158,29 @@ EndpointFetcher::EndpointFetcher( EndpointFetcher::EndpointFetcher( const net::NetworkTrafficAnnotationTag& annotation_tag) : timeout_(kDefaultTimeOut), @@ -1757,7 +1670,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi EndpointFetcher::~EndpointFetcher() = default; void EndpointFetcher::Fetch(EndpointFetcherCallback endpoint_fetcher_callback) { -@@ -210,6 +237,8 @@ void EndpointFetcher::PerformRequest( +@@ -212,6 +239,8 @@ void EndpointFetcher::PerformRequest( resource_request->method = http_method_; resource_request->url = url_; resource_request->credentials_mode = network::mojom::CredentialsMode::kOmit; @@ -1766,7 +1679,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi if (base::EqualsCaseInsensitiveASCII(http_method_, "POST")) { resource_request->headers.SetHeader(kContentTypeKey, content_type_); } -@@ -240,25 +269,50 @@ void EndpointFetcher::PerformRequest( +@@ -242,25 +271,50 @@ void EndpointFetcher::PerformRequest( default: break; } @@ -1823,7 +1736,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi } void EndpointFetcher::OnResponseFetched( -@@ -339,3 +393,38 @@ void EndpointFetcher::OnSanitizationResult( +@@ -341,3 +395,38 @@ void EndpointFetcher::OnSanitizationResult( std::string EndpointFetcher::GetUrlForTesting() { return url_.spec(); } @@ -1883,7 +1796,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin int http_status_code{-1}; std::optional error_type; }; -@@ -96,6 +100,14 @@ class EndpointFetcher { +@@ -99,6 +103,14 @@ class EndpointFetcher { const GURL& url, const net::NetworkTrafficAnnotationTag& annotation_tag); @@ -1898,7 +1811,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin // Used for tests. Can be used if caller constructs their own // url_loader_factory and identity_manager. EndpointFetcher( -@@ -151,6 +163,11 @@ class EndpointFetcher { +@@ -154,6 +166,11 @@ class EndpointFetcher { void OnSanitizationResult(std::unique_ptr response, EndpointFetcherCallback endpoint_fetcher_callback, data_decoder::JsonSanitizer::Result result); @@ -1910,7 +1823,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin enum AuthType { CHROME_API_KEY, OAUTH, NO_AUTH }; AuthType auth_type_; -@@ -158,10 +175,11 @@ class EndpointFetcher { +@@ -161,10 +178,11 @@ class EndpointFetcher { // Members set in constructor to be passed to network::ResourceRequest or // network::SimpleURLLoader. const std::string oauth_consumer_name_; @@ -1923,7 +1836,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin const std::string post_data_; const std::vector headers_; const std::vector cors_exempt_headers_; -@@ -185,6 +203,9 @@ class EndpointFetcher { +@@ -188,6 +206,9 @@ class EndpointFetcher { access_token_fetcher_; std::unique_ptr simple_url_loader_; diff --git a/build/patches/Bromite-subresource-adblocker.patch b/build/patches/Bromite-subresource-adblocker.patch index 32b9601a..aa487538 100644 --- a/build/patches/Bromite-subresource-adblocker.patch +++ b/build/patches/Bromite-subresource-adblocker.patch @@ -29,7 +29,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/browser_process_impl.cc | 21 ++ chrome/browser/browser_process_impl.h | 2 + chrome/browser/chrome_browser_main.cc | 3 + - chrome/browser/flags/BUILD.gn | 4 + + chrome/browser/flags/BUILD.gn | 3 + .../flags/android/adblock_native_gateway.cc | 31 ++ .../browser/flags/AdBlockNativeGateway.java | 30 ++ .../net/system_network_context_manager.cc | 8 + @@ -44,15 +44,15 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../component_updater/download_filters_task.h | 129 ++++++++ ...ent_subresource_filter_throttle_manager.cc | 15 + ...tent_subresource_filter_throttle_manager.h | 2 + - .../content/browser/ruleset_service.cc | 42 ++- - .../content/browser/ruleset_service.h | 7 +- + .../content/shared/browser/ruleset_service.cc | 46 ++- + .../content/shared/browser/ruleset_service.h | 8 +- .../unindexed_ruleset_stream_generator.cc | 3 + .../core/browser/ruleset_version.h | 4 + .../browser/subresource_filter_features.cc | 116 +------- .../core/browser/verified_ruleset_dealer.cc | 3 + .../core/common/indexed_ruleset.cc | 5 +- .../Bromite-subresource-adblocker.inc | 3 + - 40 files changed, 1254 insertions(+), 127 deletions(-) + 40 files changed, 1259 insertions(+), 126 deletions(-) create mode 100644 chrome/android/java/res/layout/adblock_editor.xml create mode 100644 chrome/android/java/res/xml/adblock_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/AdBlockEditor.java @@ -68,7 +68,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -334,6 +334,7 @@ if (current_toolchain == default_toolchain) { +@@ -338,6 +338,7 @@ if (current_toolchain == default_toolchain) { "//chrome/android/modules/cablev2_authenticator/public:java", "//chrome/android/modules/stack_unwinder/provider:java", "//chrome/android/webapk/libs/client:client_java", @@ -79,7 +79,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -431,6 +431,7 @@ chrome_java_resources = [ +@@ -427,6 +427,7 @@ chrome_java_resources = [ "java/res/layout/account_chooser_dialog_title.xml", "java/res/layout/account_divider_preference.xml", "java/res/layout/account_management_account_row.xml", @@ -87,7 +87,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja "java/res/layout/auto_sign_in_first_run_dialog.xml", "java/res/layout/autofill_billing_address_dropdown.xml", "java/res/layout/autofill_card_name_and_number.xml", -@@ -634,6 +635,7 @@ chrome_java_resources = [ +@@ -630,6 +631,7 @@ chrome_java_resources = [ "java/res/xml/about_chrome_preferences.xml", "java/res/xml/account_management_preferences.xml", "java/res/xml/ad_services_config.xml", @@ -210,7 +210,7 @@ diff --git a/chrome/android/java/res/values/styles.xml b/chrome/android/java/res diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res/values/values.xml --- a/chrome/android/java/res/values/values.xml +++ b/chrome/android/java/res/values/values.xml -@@ -25,6 +25,10 @@ found in the LICENSE file. +@@ -19,6 +19,10 @@ found in the LICENSE file. true @@ -428,7 +428,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelImpl.java -@@ -839,7 +839,7 @@ public class TabModelImpl extends TabModelJniBridge { +@@ -862,7 +862,7 @@ public class TabModelImpl extends TabModelJniBridge { protected boolean createTabWithWebContents( Tab parent, Profile profile, WebContents webContents) { return getTabCreator(profile.isOffTheRecord()) @@ -440,7 +440,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd -@@ -15085,6 +15085,16 @@ Please help our engineers fix this problem. Tell us what happened right before y +@@ -15173,6 +15173,16 @@ Please help our engineers fix this problem. Tell us what happened right before y Never show this again. @@ -500,7 +500,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h namespace extensions { class EventRouterForwarder; } -@@ -245,6 +250,7 @@ class BrowserProcess { +@@ -253,6 +258,7 @@ class BrowserProcess { #endif virtual component_updater::ComponentUpdateService* component_updater() = 0; @@ -511,7 +511,7 @@ diff --git a/chrome/browser/browser_process.h b/chrome/browser/browser_process.h diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc -@@ -1168,6 +1168,27 @@ BrowserProcessImpl::component_updater() { +@@ -1183,6 +1183,27 @@ BrowserProcessImpl::component_updater() { return component_updater_.get(); } @@ -542,7 +542,7 @@ diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_pro diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_process_impl.h --- a/chrome/browser/browser_process_impl.h +++ b/chrome/browser/browser_process_impl.h -@@ -209,6 +209,7 @@ class BrowserProcessImpl : public BrowserProcess, +@@ -212,6 +212,7 @@ class BrowserProcessImpl : public BrowserProcess, #endif component_updater::ComponentUpdateService* component_updater() override; @@ -550,13 +550,13 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc MediaFileSystemRegistry* media_file_system_registry() override; WebRtcLogUploader* webrtc_log_uploader() override; network_time::NetworkTimeTracker* network_time_tracker() override; -@@ -405,6 +406,7 @@ class BrowserProcessImpl : public BrowserProcess, +@@ -413,6 +414,7 @@ class BrowserProcessImpl : public BrowserProcess, // to concerns over integrity of data shared between profiles, // but some users of component updater only install per-user. std::unique_ptr component_updater_; + std::unique_ptr adblock_updater_; - #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS) + #if !BUILDFLAG(IS_ANDROID) // Used to create a singleton instance of SodaInstallerImpl, which can be diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc --- a/chrome/browser/chrome_browser_main.cc @@ -598,14 +598,6 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn deps = [ ":jni_headers", "//base", -@@ -71,6 +74,7 @@ robolectric_library("flags_junit_tests") { - "android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlagsAnnotationUnitTest.java", - "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureListWithProcessorUnitTest.java", - "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureListWithoutProcessorUnitTest.java", -+ "android/java/src/org/chromium/chrome/browser/flags/AdBlockNativeGateway.java", - ] - deps = [ - ":java", diff --git a/chrome/browser/flags/android/adblock_native_gateway.cc b/chrome/browser/flags/android/adblock_native_gateway.cc new file mode 100755 --- /dev/null @@ -714,8 +706,8 @@ diff --git a/chrome/browser/sessions/session_restore_android.cc b/chrome/browser 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 -@@ -220,6 +220,20 @@ CHAR_LIMIT guidelines: - Advanced +@@ -225,6 +225,20 @@ CHAR_LIMIT guidelines: + Control your data & accounts + @@ -738,7 +730,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h -@@ -2657,6 +2657,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled"; +@@ -2688,6 +2688,11 @@ inline constexpr char kAudioCaptureAllowed[] = "hardware.audio_capture_enabled"; inline constexpr char kAudioCaptureAllowedUrls[] = "hardware.audio_capture_allowed_urls"; @@ -753,7 +745,7 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h diff --git a/components/browser_ui/strings/android/site_settings.grdp b/components/browser_ui/strings/android/site_settings.grdp --- a/components/browser_ui/strings/android/site_settings.grdp +++ b/components/browser_ui/strings/android/site_settings.grdp -@@ -359,6 +359,9 @@ +@@ -368,6 +368,9 @@ This site shows intrusive or misleading ads @@ -1111,7 +1103,7 @@ new file mode 100644 +#include "components/component_updater/update_scheduler.h" +#include "url/gurl.h" +#include "components/component_updater/download_filters_task.h" -+#include "components/subresource_filter/content/browser/ruleset_service.h" ++#include "components/subresource_filter/content/shared/browser/ruleset_service.h" +#include "services/network/public/cpp/shared_url_loader_factory.h" + +namespace adblock_updater { @@ -1562,17 +1554,17 @@ new file mode 100644 diff --git a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc --- a/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc +++ b/components/subresource_filter/content/browser/content_subresource_filter_throttle_manager.cc -@@ -14,6 +14,9 @@ - #include "base/metrics/histogram_macros.h" +@@ -15,6 +15,9 @@ + #include "base/strings/stringprintf.h" #include "base/trace_event/trace_event.h" #include "base/trace_event/traced_value.h" +#include "components/content_settings/core/common/content_settings_types.h" +#include "components/subresource_filter/content/browser/subresource_filter_content_settings_manager.h" +#include "components/subresource_filter/content/browser/subresource_filter_profile_context.h" - #include "components/subresource_filter/content/browser/activation_state_computing_navigation_throttle.h" - #include "components/subresource_filter/content/browser/async_document_subresource_filter.h" + #include "components/subresource_filter/content/browser/ad_tagging_utils.h" #include "components/subresource_filter/content/browser/content_subresource_filter_web_contents_helper.h" -@@ -148,6 +151,7 @@ ContentSubresourceFilterThrottleManager:: + #include "components/subresource_filter/content/browser/page_load_statistics.h" +@@ -151,6 +154,7 @@ ContentSubresourceFilterThrottleManager:: profile_interaction_manager_( std::make_unique( profile_context)), @@ -1580,7 +1572,7 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f web_contents_helper_(web_contents_helper) {} ContentSubresourceFilterThrottleManager:: -@@ -667,6 +671,17 @@ ContentSubresourceFilterThrottleManager:: +@@ -675,6 +679,17 @@ ContentSubresourceFilterThrottleManager:: throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(), ad_tagging_state); } @@ -1610,10 +1602,10 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f // Unowned since the throttle manager cannot outlive the Page that owns it. // The throttle manager is held as user data first on NavigationHandle, then // transferred to Page once it is created. Once the Page is created and this -diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/components/subresource_filter/content/browser/ruleset_service.cc ---- a/components/subresource_filter/content/browser/ruleset_service.cc -+++ b/components/subresource_filter/content/browser/ruleset_service.cc -@@ -46,9 +46,7 @@ namespace { +diff --git a/components/subresource_filter/content/shared/browser/ruleset_service.cc b/components/subresource_filter/content/shared/browser/ruleset_service.cc +--- a/components/subresource_filter/content/shared/browser/ruleset_service.cc ++++ b/components/subresource_filter/content/shared/browser/ruleset_service.cc +@@ -47,9 +47,7 @@ namespace { void RecordIndexAndWriteRulesetResult( RulesetService::IndexAndWriteRulesetResult result) { @@ -1657,11 +1649,15 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ return; } -@@ -266,6 +270,18 @@ IndexedRulesetVersion RulesetService::GetMostRecentlyIndexedVersion() const { - IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( +@@ -267,6 +271,23 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( + const RulesetConfig& config, const base::FilePath& indexed_ruleset_base_dir, const UnindexedRulesetInfo& unindexed_ruleset_info) { -+ IndexedRulesetVersion version = IndexAndWriteRulesetInternal(indexed_ruleset_base_dir, unindexed_ruleset_info); ++ IndexedRulesetVersion version = ++ IndexAndWriteRulesetInternal( ++ config, ++ indexed_ruleset_base_dir, ++ unindexed_ruleset_info); + // cleanup temporary file when done + if (unindexed_ruleset_info.delete_ruleset_path) { + base::DeleteFile(unindexed_ruleset_info.ruleset_path); @@ -1671,34 +1667,35 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ + +// static +IndexedRulesetVersion RulesetService::IndexAndWriteRulesetInternal( ++ const RulesetConfig& config, + const base::FilePath& indexed_ruleset_base_dir, + const UnindexedRulesetInfo& unindexed_ruleset_info) { base::ScopedBlockingCall scoped_blocking_call(FROM_HERE, base::BlockingType::MAY_BLOCK); -@@ -273,6 +289,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( +@@ -274,6 +295,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( unindexed_ruleset_info); if (!unindexed_ruleset_stream_generator.ruleset_stream()) { + LOG(WARNING) << "RulesetService: failed to open: " << unindexed_ruleset_info.ruleset_path; RecordIndexAndWriteRulesetResult( IndexAndWriteRulesetResult::FAILED_OPENING_UNINDEXED_RULESET); - return IndexedRulesetVersion(kSafeBrowsingFilterTag); -@@ -286,6 +303,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( + return IndexedRulesetVersion(config.filter_tag); +@@ -287,6 +309,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( indexed_ruleset_base_dir, indexed_version); if (!base::CreateDirectory(indexed_ruleset_version_dir)) { + LOG(WARNING) << "RulesetService: failed to create version dir: " << indexed_ruleset_version_dir; RecordIndexAndWriteRulesetResult( IndexAndWriteRulesetResult::FAILED_CREATING_VERSION_DIR); - return IndexedRulesetVersion(kSafeBrowsingFilterTag); -@@ -293,12 +311,11 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( + return IndexedRulesetVersion(config.filter_tag); +@@ -294,12 +317,11 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( SentinelFile sentinel_file(indexed_ruleset_version_dir); if (sentinel_file.IsPresent()) { - RecordIndexAndWriteRulesetResult( - IndexAndWriteRulesetResult::ABORTED_BECAUSE_SENTINEL_FILE_PRESENT); -- return IndexedRulesetVersion(kSafeBrowsingFilterTag); +- return IndexedRulesetVersion(config.filter_tag); + LOG(WARNING) << "RulesetService: sentinel file is present in " << indexed_ruleset_version_dir; } @@ -1706,30 +1703,30 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ + LOG(WARNING) << "RulesetService: cannot create sentinel file in " << indexed_ruleset_version_dir; RecordIndexAndWriteRulesetResult( IndexAndWriteRulesetResult::FAILED_CREATING_SENTINEL_FILE); - return IndexedRulesetVersion(kSafeBrowsingFilterTag); -@@ -311,6 +328,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( + return IndexedRulesetVersion(config.filter_tag); +@@ -312,6 +334,7 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( RulesetIndexer indexer; if (!(*g_index_ruleset_func)(&unindexed_ruleset_stream_generator, &indexer)) { + LOG(WARNING) << "RulesetService: failed parsing."; RecordIndexAndWriteRulesetResult( IndexAndWriteRulesetResult::FAILED_PARSING_UNINDEXED_RULESET); - return IndexedRulesetVersion(kSafeBrowsingFilterTag); -@@ -328,8 +346,12 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( + return IndexedRulesetVersion(config.filter_tag); +@@ -329,8 +352,12 @@ IndexedRulesetVersion RulesetService::IndexAndWriteRuleset( WriteRuleset(indexed_ruleset_version_dir, unindexed_ruleset_info.license_path, indexer.data()); RecordIndexAndWriteRulesetResult(result); - if (result != IndexAndWriteRulesetResult::SUCCESS) + if (result != IndexAndWriteRulesetResult::SUCCESS) { + LOG(INFO) << "RulesetService: failed to index."; - return IndexedRulesetVersion(kSafeBrowsingFilterTag); + return IndexedRulesetVersion(config.filter_tag); + } + + LOG(INFO) << "RulesetService: successful parsing."; DCHECK(indexed_version.IsValid()); return indexed_version; -@@ -449,6 +471,7 @@ void RulesetService::IndexAndStoreRuleset( +@@ -452,6 +479,7 @@ void RulesetService::IndexAndStoreRuleset( void RulesetService::OnWrittenRuleset(WriteRulesetCallback result_callback, const IndexedRulesetVersion& version) { DCHECK(!result_callback.is_null()); @@ -1737,18 +1734,10 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.cc b/ if (!version.IsValid()) return; version.SaveToPrefs(local_state_); -@@ -461,7 +484,6 @@ void RulesetService::OpenAndPublishRuleset( - IndexedRulesetLocator::GetRulesetDataFilePath( - IndexedRulesetLocator::GetSubdirectoryPathForVersion( - indexed_ruleset_base_dir_, version)); -- - publisher_->TryOpenAndSetRulesetFile( - file_path, version.checksum, - base::BindOnce(&RulesetService::OnRulesetSet, -diff --git a/components/subresource_filter/content/browser/ruleset_service.h b/components/subresource_filter/content/browser/ruleset_service.h ---- a/components/subresource_filter/content/browser/ruleset_service.h -+++ b/components/subresource_filter/content/browser/ruleset_service.h -@@ -182,7 +182,7 @@ class RulesetService { +diff --git a/components/subresource_filter/content/shared/browser/ruleset_service.h b/components/subresource_filter/content/shared/browser/ruleset_service.h +--- a/components/subresource_filter/content/shared/browser/ruleset_service.h ++++ b/components/subresource_filter/content/shared/browser/ruleset_service.h +@@ -185,7 +185,7 @@ class RulesetService { // // Virtual so that it can be mocked out in tests. virtual void IndexAndStoreAndPublishRulesetIfNeeded( @@ -1757,21 +1746,22 @@ diff --git a/components/subresource_filter/content/browser/ruleset_service.h b/c // Get the ruleset version associated with the current local_state_. IndexedRulesetVersion GetMostRecentlyIndexedVersion() const; -@@ -215,6 +215,11 @@ class RulesetService { +@@ -219,6 +219,12 @@ class RulesetService { const base::FilePath& indexed_ruleset_base_dir, const UnindexedRulesetInfo& unindexed_ruleset_info); + // internal function used to wrap the temporary file deletion for unindexed rulesets + static IndexedRulesetVersion IndexAndWriteRulesetInternal( ++ const RulesetConfig& config, + const base::FilePath& indexed_ruleset_base_dir, + const UnindexedRulesetInfo& unindexed_ruleset_info); + // Reads the rules via the |unindexed_ruleset_stream_generator|, and indexes // them using |indexer|. Returns whether the entire ruleset could be parsed. static bool IndexRuleset( -diff --git a/components/subresource_filter/content/browser/unindexed_ruleset_stream_generator.cc b/components/subresource_filter/content/browser/unindexed_ruleset_stream_generator.cc ---- a/components/subresource_filter/content/browser/unindexed_ruleset_stream_generator.cc -+++ b/components/subresource_filter/content/browser/unindexed_ruleset_stream_generator.cc +diff --git a/components/subresource_filter/content/shared/browser/unindexed_ruleset_stream_generator.cc b/components/subresource_filter/content/shared/browser/unindexed_ruleset_stream_generator.cc +--- a/components/subresource_filter/content/shared/browser/unindexed_ruleset_stream_generator.cc ++++ b/components/subresource_filter/content/shared/browser/unindexed_ruleset_stream_generator.cc @@ -12,6 +12,7 @@ #include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl.h" #include "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.h" @@ -1792,7 +1782,7 @@ diff --git a/components/subresource_filter/content/browser/unindexed_ruleset_str diff --git a/components/subresource_filter/core/browser/ruleset_version.h b/components/subresource_filter/core/browser/ruleset_version.h --- a/components/subresource_filter/core/browser/ruleset_version.h +++ b/components/subresource_filter/core/browser/ruleset_version.h -@@ -53,6 +53,10 @@ struct UnindexedRulesetInfo { +@@ -54,6 +54,10 @@ struct UnindexedRulesetInfo { // can be indicated not only by setting |license_path| to empty, but also by // setting it to any non existent path. base::FilePath license_path; diff --git a/build/patches/Change-popup-site-setting.patch b/build/patches/Change-popup-site-setting.patch index 94f9f30a..26de75f0 100644 --- a/build/patches/Change-popup-site-setting.patch +++ b/build/patches/Change-popup-site-setting.patch @@ -12,9 +12,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html components/blocked_content_strings.grdp | 3 + .../impl/BromitePopupContentSetting.java | 106 ++++++++++++++++++ .../bromite_content_settings/popups.grdp | 12 ++ - .../bromite_content_settings/popups.inc | 7 ++ + .../bromite_content_settings/popups.inc | 8 ++ .../core/browser/content_settings_registry.cc | 2 +- - 8 files changed, 151 insertions(+), 3 deletions(-) + 8 files changed, 152 insertions(+), 3 deletions(-) create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromitePopupContentSetting.java create mode 100644 components/browser_ui/strings/bromite_content_settings/popups.grdp create mode 100644 components/content_settings/core/browser/bromite_content_settings/popups.inc @@ -239,18 +239,19 @@ diff --git a/components/content_settings/core/browser/bromite_content_settings/p new file mode 100644 --- /dev/null +++ b/components/content_settings/core/browser/bromite_content_settings/popups.inc -@@ -0,0 +1,7 @@ +@@ -0,0 +1,8 @@ + content_settings::WebsiteSettingsRegistry::GetInstance() + ->GetMutable(ContentSettingsType::POPUPS) + ->set_show_into_info_page() + .set_desktop_ui() ++ .set_is_renderer_content_setting() + .set_allowed_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_ALLOWED) + .set_ask_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_BLOCK_ALL) + .set_blocked_ui(IDS_WEBSITE_SETTINGS_CATEGORY_POPUP_BLOCKED); diff --git a/components/content_settings/core/browser/content_settings_registry.cc b/components/content_settings/core/browser/content_settings_registry.cc --- a/components/content_settings/core/browser/content_settings_registry.cc +++ b/components/content_settings/core/browser/content_settings_registry.cc -@@ -131,7 +131,7 @@ void ContentSettingsRegistry::Init() { +@@ -134,7 +134,7 @@ void ContentSettingsRegistry::Init() { WebsiteSettingsInfo::SYNCABLE, /*allowlisted_primary_schemes=*/ {kChromeUIScheme, kChromeDevToolsScheme, kExtensionScheme}, diff --git a/build/patches/Chrome-web-store-protection.patch b/build/patches/Chrome-web-store-protection.patch index e452eaec..9bb6a5ca 100644 --- a/build/patches/Chrome-web-store-protection.patch +++ b/build/patches/Chrome-web-store-protection.patch @@ -75,10 +75,10 @@ diff --git a/chrome/browser/extensions/api/developer_private/developer_private_a +#include "components/flags_ui/feature_entry.h" +#include "components/flags_ui/flags_storage.h" + - #if BUILDFLAG(ENABLE_SUPERVISED_USERS) - #include "components/supervised_user/core/browser/supervised_user_preferences.h" - #endif // BUILDFLAG(ENABLE_SUPERVISED_USERS) -@@ -476,9 +482,32 @@ std::unique_ptr DeveloperPrivateAPI::CreateProfileInfo( + namespace extensions { + + namespace developer = api::developer_private; +@@ -466,9 +472,32 @@ std::unique_ptr DeveloperPrivateAPI::CreateProfileInfo( info->can_load_unpacked = ExtensionManagementFactory::GetForBrowserContext(profile) ->HasAllowlistedExtension(); @@ -111,7 +111,7 @@ diff --git a/chrome/browser/extensions/api/developer_private/developer_private_a template <> void BrowserContextKeyedAPIFactory< DeveloperPrivateAPI>::DeclareFactoryDependencies() { -@@ -908,6 +937,7 @@ ExtensionFunction::ResponseAction DeveloperPrivateAutoUpdateFunction::Run() { +@@ -898,6 +927,7 @@ ExtensionFunction::ResponseAction DeveloperPrivateAutoUpdateFunction::Run() { ExtensionUpdater::CheckParams params; params.fetch_priority = DownloadFetchPriority::kForeground; params.install_immediately = true; @@ -119,7 +119,7 @@ diff --git a/chrome/browser/extensions/api/developer_private/developer_private_a params.callback = base::BindOnce(&DeveloperPrivateAutoUpdateFunction::OnComplete, this); updater->CheckNow(std::move(params)); -@@ -1048,7 +1078,7 @@ DeveloperPrivateUpdateProfileConfigurationFunction::Run() { +@@ -1038,7 +1068,7 @@ DeveloperPrivateUpdateProfileConfigurationFunction::Run() { const developer::ProfileConfigurationUpdate& update = params->update; @@ -127,8 +127,8 @@ diff --git a/chrome/browser/extensions/api/developer_private/developer_private_a + if (update.in_developer_mode.has_value() && update.in_developer_mode) { Profile* profile = Profile::FromBrowserContext(browser_context()); CHECK(profile); - #if BUILDFLAG(ENABLE_SUPERVISED_USERS) -@@ -1060,6 +1090,11 @@ DeveloperPrivateUpdateProfileConfigurationFunction::Run() { + if (supervised_user::AreExtensionsPermissionsEnabled( +@@ -1048,6 +1078,11 @@ DeveloperPrivateUpdateProfileConfigurationFunction::Run() { util::SetDeveloperModeForProfile(profile, *update.in_developer_mode); } @@ -156,7 +156,7 @@ diff --git a/chrome/browser/extensions/api/developer_private/developer_private_a diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc --- a/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc +++ b/chrome/browser/extensions/api/webstore_private/webstore_private_api.cc -@@ -61,6 +61,7 @@ +@@ -63,6 +63,7 @@ #include "extensions/browser/extension_system.h" #include "extensions/browser/extension_util.h" #include "extensions/common/extension.h" @@ -164,7 +164,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api #include "extensions/common/manifest.h" #include "extensions/common/manifest_constants.h" #include "extensions/common/manifest_handlers/permissions_parser.h" -@@ -227,12 +228,16 @@ WebstorePrivateApi::Delegate* test_delegate = nullptr; +@@ -220,12 +221,16 @@ WebstorePrivateApi::Delegate* test_delegate = nullptr; // there was previously stored data, or an empty string otherwise. The Set will // overwrite any previous login. std::string GetWebstoreLogin(Profile* profile) { @@ -181,7 +181,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api profile->GetPrefs()->SetString(kWebstoreLogin, login); } -@@ -242,6 +247,8 @@ void RecordWebstoreExtensionInstallResult(bool success) { +@@ -235,6 +240,8 @@ void RecordWebstoreExtensionInstallResult(bool success) { api::webstore_private::ExtensionInstallStatus ConvertExtensionInstallStatusForAPI(ExtensionInstallStatus status) { @@ -190,7 +190,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api switch (status) { case kCanRequest: return api::webstore_private::ExtensionInstallStatus::kCanRequest; -@@ -1199,7 +1206,8 @@ ExtensionFunction::ResponseAction +@@ -1150,7 +1157,8 @@ ExtensionFunction::ResponseAction WebstorePrivateIsInIncognitoModeFunction::Run() { Profile* profile = Profile::FromBrowserContext(browser_context()); return RespondNow(ArgumentList(IsInIncognitoMode::Results::Create( @@ -200,7 +200,7 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api } WebstorePrivateIsPendingCustodianApprovalFunction:: -@@ -1298,11 +1306,14 @@ WebstorePrivateGetReferrerChainFunction::Run() { +@@ -1245,11 +1253,14 @@ WebstorePrivateGetReferrerChainFunction::Run() { request.mutable_referrer_chain_options()->set_recent_navigations_to_collect( recent_navigations_to_collect); @@ -539,7 +539,7 @@ diff --git a/chrome/browser/resources/extensions/toolbar.html b/chrome/browser/r diff --git a/chrome/browser/resources/extensions/toolbar.ts b/chrome/browser/resources/extensions/toolbar.ts --- a/chrome/browser/resources/extensions/toolbar.ts +++ b/chrome/browser/resources/extensions/toolbar.ts -@@ -26,6 +26,8 @@ export interface ToolbarDelegate { +@@ -25,6 +25,8 @@ export interface ToolbarDelegate { */ setProfileInDevMode(inDevMode: boolean): void; @@ -548,7 +548,7 @@ diff --git a/chrome/browser/resources/extensions/toolbar.ts b/chrome/browser/res /** Opens the dialog to load unpacked extensions. */ loadUnpacked(): Promise; -@@ -72,6 +74,13 @@ export class ExtensionsToolbarElement extends ExtensionsToolbarElementBase { +@@ -71,6 +73,13 @@ export class ExtensionsToolbarElement extends ExtensionsToolbarElementBase { reflectToAttribute: true, }, @@ -562,7 +562,7 @@ diff --git a/chrome/browser/resources/extensions/toolbar.ts b/chrome/browser/res devModeControlledByPolicy: Boolean, isChildAccount: Boolean, -@@ -88,6 +97,7 @@ export class ExtensionsToolbarElement extends ExtensionsToolbarElementBase { +@@ -87,6 +96,7 @@ export class ExtensionsToolbarElement extends ExtensionsToolbarElementBase { expanded_: Boolean, showPackDialog_: Boolean, @@ -570,7 +570,7 @@ diff --git a/chrome/browser/resources/extensions/toolbar.ts b/chrome/browser/res /** * Prevents initiating update while update is in progress. -@@ -99,6 +109,8 @@ export class ExtensionsToolbarElement extends ExtensionsToolbarElementBase { +@@ -98,6 +108,8 @@ export class ExtensionsToolbarElement extends ExtensionsToolbarElementBase { extensions: chrome.developerPrivate.ExtensionInfo[]; delegate: ToolbarDelegate; inDevMode: boolean; @@ -579,7 +579,7 @@ diff --git a/chrome/browser/resources/extensions/toolbar.ts b/chrome/browser/res devModeControlledByPolicy: boolean; isChildAccount: boolean; -@@ -151,6 +163,14 @@ export class ExtensionsToolbarElement extends ExtensionsToolbarElementBase { +@@ -150,6 +162,14 @@ export class ExtensionsToolbarElement extends ExtensionsToolbarElementBase { 'Options_ToggleDeveloperMode_' + (e.detail ? 'Enabled' : 'Disabled')); } @@ -613,7 +613,7 @@ diff --git a/chrome/browser/resources/webstore_app/manifest.json b/chrome/browse diff --git a/chrome/browser/ui/webui/extensions/extensions_ui.cc b/chrome/browser/ui/webui/extensions/extensions_ui.cc --- a/chrome/browser/ui/webui/extensions/extensions_ui.cc +++ b/chrome/browser/ui/webui/extensions/extensions_ui.cc -@@ -58,6 +58,8 @@ +@@ -59,6 +59,8 @@ #include "chrome/browser/ui/webui/extensions/ash/kiosk_apps_handler.h" #endif @@ -622,16 +622,16 @@ diff --git a/chrome/browser/ui/webui/extensions/extensions_ui.cc b/chrome/browse namespace extensions { namespace { -@@ -340,6 +342,8 @@ content::WebUIDataSource* CreateAndAddExtensionsSource(Profile* profile, - {"itemSuspiciousInstallLearnMore", - IDS_EXTENSIONS_ADDED_WITHOUT_KNOWLEDGE_LEARN_MORE}, - {"toolbarDevMode", IDS_EXTENSIONS_DEVELOPER_MODE}, -+ {"toolbarExtensionUpdateEnabled", IDS_EXTENSIONS_EXTENSION_UPDATE_ENABLED}, -+ {"toolbarExtensionUpdateEnabledNeedRestart", IDS_EXTENSIONS_EXTENSION_UPDATE_ENABLED_NR}, - {"toolbarLoadUnpacked", IDS_EXTENSIONS_TOOLBAR_LOAD_UNPACKED}, - {"toolbarLoadUnpackedDone", IDS_EXTENSIONS_TOOLBAR_LOAD_UNPACKED_DONE}, - {"toolbarPack", IDS_EXTENSIONS_TOOLBAR_PACK}, -@@ -420,6 +424,10 @@ content::WebUIDataSource* CreateAndAddExtensionsSource(Profile* profile, +@@ -345,6 +347,8 @@ content::WebUIDataSource* CreateAndAddExtensionsSource(Profile* profile, + {"itemSuspiciousInstallLearnMore", + IDS_EXTENSIONS_ADDED_WITHOUT_KNOWLEDGE_LEARN_MORE}, + {"toolbarDevMode", IDS_EXTENSIONS_DEVELOPER_MODE}, ++ {"toolbarExtensionUpdateEnabled", IDS_EXTENSIONS_EXTENSION_UPDATE_ENABLED}, ++ {"toolbarExtensionUpdateEnabledNeedRestart", IDS_EXTENSIONS_EXTENSION_UPDATE_ENABLED_NR}, + {"toolbarLoadUnpacked", IDS_EXTENSIONS_TOOLBAR_LOAD_UNPACKED}, + {"toolbarLoadUnpackedDone", IDS_EXTENSIONS_TOOLBAR_LOAD_UNPACKED_DONE}, + {"toolbarPack", IDS_EXTENSIONS_TOOLBAR_PACK}, +@@ -418,6 +422,10 @@ content::WebUIDataSource* CreateAndAddExtensionsSource(Profile* profile, source->AddString("hostPermissionsLearnMoreLink", chrome_extension_constants::kRuntimeHostPermissionsHelpURL); source->AddBoolean(kInDevModeKey, in_dev_mode); @@ -1110,8 +1110,8 @@ diff --git a/extensions/browser/updater/safe_manifest_parser.cc b/extensions/bro diff --git a/extensions/common/extension_features.cc b/extensions/common/extension_features.cc --- a/extensions/common/extension_features.cc +++ b/extensions/common/extension_features.cc -@@ -158,4 +158,19 @@ BASE_FEATURE(kDeclarativeNetRequestResponseHeaderMatching, - "DeclarativeNetRequestResponseHeaderMatching", +@@ -162,4 +162,19 @@ BASE_FEATURE(kUseItemSnippetsAPI, + "UseItemSnippetsAPI", base::FEATURE_DISABLED_BY_DEFAULT); +// Activates the auto update of extensions. @@ -1133,9 +1133,9 @@ diff --git a/extensions/common/extension_features.cc b/extensions/common/extensi diff --git a/extensions/common/extension_features.h b/extensions/common/extension_features.h --- a/extensions/common/extension_features.h +++ b/extensions/common/extension_features.h -@@ -200,6 +200,10 @@ BASE_DECLARE_FEATURE(kDeclarativeNetRequestSafeRuleLimits); - // matching condition. - BASE_DECLARE_FEATURE(kDeclarativeNetRequestResponseHeaderMatching); +@@ -202,6 +202,10 @@ BASE_DECLARE_FEATURE(kDeclarativeNetRequestResponseHeaderMatching); + // If enabled, use the new CWS itemSnippets API to fetch extension info. + BASE_DECLARE_FEATURE(kUseItemSnippetsAPI); +BASE_DECLARE_FEATURE(kEnableExtensionAutoupdate); + diff --git a/build/patches/Clear-CORS-Preflight-Cache-on-clearing-data.patch b/build/patches/Clear-CORS-Preflight-Cache-on-clearing-data.patch index 280c3040..bf15aed5 100644 --- a/build/patches/Clear-CORS-Preflight-Cache-on-clearing-data.patch +++ b/build/patches/Clear-CORS-Preflight-Cache-on-clearing-data.patch @@ -79,7 +79,7 @@ diff --git a/services/network/cors/preflight_result.cc b/services/network/cors/p diff --git a/services/network/network_context.cc b/services/network/network_context.cc --- a/services/network/network_context.cc +++ b/services/network/network_context.cc -@@ -1179,6 +1179,8 @@ void NetworkContext::ClearHttpCache(base::Time start_time, +@@ -1186,6 +1186,8 @@ void NetworkContext::ClearHttpCache(base::Time start_time, base::BindOnce(&NetworkContext::OnHttpCacheCleared, base::Unretained(this), std::move(callback)))); diff --git a/build/patches/Client-hints-overrides.patch b/build/patches/Client-hints-overrides.patch index 1a0a7467..19411e90 100644 --- a/build/patches/Client-hints-overrides.patch +++ b/build/patches/Client-hints-overrides.patch @@ -92,7 +92,7 @@ diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/clie diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/browser/loader/navigation_url_loader_impl.cc --- a/content/browser/loader/navigation_url_loader_impl.cc +++ b/content/browser/loader/navigation_url_loader_impl.cc -@@ -1179,6 +1179,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived( +@@ -1185,6 +1185,11 @@ void NavigationURLLoaderImpl::OnAcceptCHFrameReceived( return; } @@ -133,7 +133,7 @@ new file mode 100644 diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc --- a/net/http/http_network_transaction.cc +++ b/net/http/http_network_transaction.cc -@@ -101,6 +101,7 @@ const size_t kMaxRestarts = 32; +@@ -102,6 +102,7 @@ const size_t kMaxRestarts = 32; // Returns true when Early Hints are allowed on the given protocol. bool EarlyHintsAreAllowedOn(HttpConnectionInfo connection_info) { @@ -222,7 +222,7 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_ua.idl b/third_part diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.cc b/third_party/blink/renderer/core/frame/navigator_ua_data.cc --- a/third_party/blink/renderer/core/frame/navigator_ua_data.cc +++ b/third_party/blink/renderer/core/frame/navigator_ua_data.cc -@@ -220,6 +220,7 @@ ScriptPromiseTyped NavigatorUAData::getHighEntropyValues( +@@ -219,6 +219,7 @@ ScriptPromise NavigatorUAData::getHighEntropyValues( Dactyloscoper::RecordDirectSurface( GetExecutionContext(), WebFeature::kNavigatorUAData_Platform, platform()); @@ -278,9 +278,9 @@ diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.cc b/thir diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -324,6 +324,11 @@ - name: "AsyncClipboardImplicitPermission", - status: "stable", +@@ -340,6 +340,11 @@ + name: "AtomicMoveOverride", + // No "status" field, so that this is not enabled on WPTs by default. }, + { + name: "UserAgentClientHint", diff --git a/build/patches/Content-settings-infrastructure.patch b/build/patches/Content-settings-infrastructure.patch index db00b4ac..449b3d60 100644 --- a/build/patches/Content-settings-infrastructure.patch +++ b/build/patches/Content-settings-infrastructure.patch @@ -12,6 +12,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html Require: bromite-build-utils.patch --- .../ChromeSiteSettingsDelegate.java | 17 +- + ...page_specific_content_settings_delegate.cc | 2 +- .../settings/privacy_page/privacy_page.html | 1 + .../settings/privacy_page/privacy_page.ts | 77 +++- chrome/browser/resources/settings/route.ts | 2 + @@ -65,24 +66,24 @@ Require: bromite-build-utils.patch .../core/browser/website_settings_registry.h | 1 + .../content_settings/core/common/BUILD.gn | 7 + .../bromite_content_settings/placeholder.txt | 1 + - .../core/common/content_settings.cc | 18 + - .../core/common/content_settings.h | 10 + + .../core/common/content_settings.cc | 30 +- + .../core/common/content_settings.h | 12 + .../core/common/content_settings.mojom | 6 + .../common/content_settings_mojom_traits.cc | 12 +- .../common/content_settings_mojom_traits.h | 24 + - .../core/common/content_settings_types.mojom | 2 + - .../renderer/content_settings_agent_impl.cc | 33 ++ - .../renderer/content_settings_agent_impl.h | 5 + + .../core/common/content_settings_types.mojom | 1 + + .../renderer/content_settings_agent_impl.cc | 45 +- + .../renderer/content_settings_agent_impl.h | 9 +- .../PageInfoPermissionsController.java | 9 + .../PermissionParamsListBuilder.java | 1 + .../android/page_info_controller_android.cc | 18 + components/page_info/page_info.cc | 23 +- components/page_info/page_info_ui.cc | 18 + components/site_settings_strings.grdp | 1 + - .../platform/web_content_settings_client.h | 5 + + .../platform/web_content_settings_client.h | 9 + .../execution_context/execution_context.cc | 16 + .../execution_context/execution_context.h | 5 + - 71 files changed, 1836 insertions(+), 89 deletions(-) + 72 files changed, 1865 insertions(+), 95 deletions(-) create mode 100644 components/browser_ui/settings/android/java/res/layout/preference_spinner_single_widget.xml create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java @@ -96,8 +97,8 @@ Require: bromite-build-utils.patch diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java -@@ -60,6 +60,10 @@ import org.chromium.url.GURL; - import java.util.Map; +@@ -59,6 +59,10 @@ import org.chromium.url.GURL; + import java.util.Set; +import android.content.Intent; @@ -107,7 +108,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C /** A SiteSettingsDelegate instance that contains Chrome-specific Site Settings logic. */ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { public static final String EMBEDDED_CONTENT_HELP_CENTER_URL = -@@ -198,7 +202,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { +@@ -208,7 +212,7 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { @Override public boolean isHelpAndFeedbackEnabled() { @@ -116,7 +117,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C } @Override -@@ -311,6 +315,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { +@@ -328,6 +332,17 @@ public class ChromeSiteSettingsDelegate implements SiteSettingsDelegate { return PrivacySandboxBridge.getFirstPartySetOwner(memberOrigin); } @@ -134,10 +135,22 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/site_settings/C @Override public boolean canLaunchClearBrowsingDataDialog() { return true; +diff --git a/chrome/browser/content_settings/page_specific_content_settings_delegate.cc b/chrome/browser/content_settings/page_specific_content_settings_delegate.cc +--- a/chrome/browser/content_settings/page_specific_content_settings_delegate.cc ++++ b/chrome/browser/content_settings/page_specific_content_settings_delegate.cc +@@ -163,7 +163,7 @@ namespace { + void GetGuestViewDefaultContentSettingRules( + bool incognito, + RendererContentSettingRules* rules) { +- rules->mixed_content_rules.clear(); ++ rules->mixed_content_rules.clear(); // do not remove + rules->mixed_content_rules.push_back(ContentSettingPatternSource( + ContentSettingsPattern::Wildcard(), ContentSettingsPattern::Wildcard(), + content_settings::ContentSettingToValue(CONTENT_SETTING_BLOCK), diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.html b/chrome/browser/resources/settings/privacy_page/privacy_page.html --- a/chrome/browser/resources/settings/privacy_page/privacy_page.html +++ b/chrome/browser/resources/settings/privacy_page/privacy_page.html -@@ -1385,4 +1385,5 @@ +@@ -1496,4 +1496,5 @@ @@ -241,7 +254,7 @@ diff --git a/chrome/browser/resources/settings/privacy_page/privacy_page.ts b/ch diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resources/settings/route.ts --- a/chrome/browser/resources/settings/route.ts +++ b/chrome/browser/resources/settings/route.ts -@@ -8,6 +8,7 @@ import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; +@@ -8,6 +8,7 @@ import {loadTimeData} from './i18n_setup.js'; import {pageVisibility} from './page_visibility.js'; import type {SettingsRoutes} from './router.js'; import {Route, Router} from './router.js'; @@ -249,9 +262,9 @@ diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resourc /** * Add all of the child routes that originate from the privacy route, -@@ -142,6 +143,7 @@ function addPrivacyChildRoutes(r: Partial) { +@@ -148,6 +149,7 @@ function addPrivacyChildRoutes(r: Partial) { r.SITE_SETTINGS_AUTOMATIC_FULLSCREEN = - r.SITE_SETTINGS.createChild('automaticFullscreen'); + r.SITE_SETTINGS.createChild('automaticFullScreen'); } + setupContentSettingsRoutes(r); } @@ -324,7 +337,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d private getAllowOptionForCategory_(): ContentSetting { switch (this.category) { case ContentSettingsTypes.ADS: -@@ -166,6 +181,8 @@ export class SettingsCategoryDefaultRadioGroupElement extends +@@ -169,6 +184,8 @@ export class SettingsCategoryDefaultRadioGroupElement extends // "Ask" vs "Blocked". return ContentSetting.ASK; default: @@ -333,7 +346,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d assertNotReached('Invalid category: ' + this.category); } } -@@ -190,6 +207,7 @@ export class SettingsCategoryDefaultRadioGroupElement extends +@@ -193,6 +210,7 @@ export class SettingsCategoryDefaultRadioGroupElement extends /** @type {!ContentSetting} */ (this.getAllowOptionForCategory_()); this.browserProxy.setDefaultValueForContentType( this.category, @@ -341,7 +354,7 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d this.categoryEnabled_ ? allowOption : ContentSetting.BLOCK); } -@@ -221,7 +239,9 @@ export class SettingsCategoryDefaultRadioGroupElement extends +@@ -224,7 +242,9 @@ export class SettingsCategoryDefaultRadioGroupElement extends } const enabled = this.computeIsSettingEnabled(update.setting); @@ -355,11 +368,11 @@ diff --git a/chrome/browser/resources/settings/site_settings/settings_category_d diff --git a/chrome/browser/resources/settings/site_settings/site_details.html b/chrome/browser/resources/settings/site_settings/site_details.html --- a/chrome/browser/resources/settings/site_settings/site_details.html +++ b/chrome/browser/resources/settings/site_settings/site_details.html -@@ -289,4 +289,5 @@ - label="$i18n{siteSettingsAutomaticFullscreen}"> +@@ -308,4 +308,5 @@ + icon="settings:usb" label="$i18n{siteSettingsPointerLock}"> - -+
+ ++
diff --git a/chrome/browser/resources/settings/site_settings/site_details.ts b/chrome/browser/resources/settings/site_settings/site_details.ts --- a/chrome/browser/resources/settings/site_settings/site_details.ts @@ -574,7 +587,7 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ { route: routes.SITE_SETTINGS_ADS, id: Id.ADS, -@@ -398,10 +398,36 @@ function getCategoryItemMap(): Map { +@@ -429,10 +429,36 @@ function getCategoryItemMap(): Map { disabledLabel: 'trackingProtectionLinkRowSubLabel', }); } @@ -611,7 +624,7 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ function buildItemListFromIds(orderedIdList: ContentSettingsTypes[]): CategoryListItem[] { const map = getCategoryItemMap(); -@@ -484,7 +510,7 @@ export class SettingsSiteSettingsPageElement extends +@@ -518,7 +544,7 @@ export class SettingsSiteSettingsPageElement extends Id.IMAGES, Id.POPUPS, ]), @@ -678,7 +691,7 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ /** * Determine localization string for i18n for a given content settings type. * Sorted alphabetically by |ContentSettingsType|. -@@ -94,6 +142,13 @@ export function getLocalizationStringForContentType( +@@ -100,6 +148,13 @@ export function getLocalizationStringForContentType( case ContentSettingsTypes.SITE_DATA: return null; default: @@ -695,7 +708,7 @@ diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -2069,6 +2069,7 @@ static_library("ui") { +@@ -2115,6 +2115,7 @@ static_library("ui") { "//components/commerce/core:shopping_service", "//components/commerce/core/webui", "//components/endpoint_fetcher:endpoint_fetcher", @@ -731,7 +744,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b #include "ui/views/view_class_properties.h" #if BUILDFLAG(FULL_SAFE_BROWSING) -@@ -244,8 +245,20 @@ void PageInfoMainView::SetPermissionInfo( +@@ -251,8 +252,20 @@ void PageInfoMainView::SetPermissionInfo( scroll_view->SetDrawOverflowIndicator(false); auto* content_view = scroll_view->SetContents(std::make_unique()); @@ -754,7 +767,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b content_view->SetID(PageInfoViewFactory::VIEW_ID_PAGE_INFO_PERMISSION_VIEW); content_view->SetProperty(views::kElementIdentifierKey, kPermissionsElementId); -@@ -260,17 +273,24 @@ void PageInfoMainView::SetPermissionInfo( +@@ -267,11 +280,16 @@ void PageInfoMainView::SetPermissionInfo( } } @@ -762,7 +775,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b for (const auto& permission : permission_info_list) { + if (++count % 2 == 0) + table_layout->AddRows(/*n=*/1, views::TableLayout::kFixedSize); - auto* toggle_row = + PermissionToggleRowView* toggle_row = content_view->AddChildView(std::make_unique( ui_delegate_, navigation_handler_, permission, should_show_spacer)); toggle_row->AddObserver(this); @@ -770,7 +783,8 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b + gfx::Insets::TLBR(0, 0, 0, 0)); toggle_row->SetProperty(views::kCrossAxisAlignmentKey, views::LayoutAlignment::kStretch); - toggle_rows_.push_back(std::move(toggle_row)); + syncable_permission_rows_.emplace(permission.type, toggle_row); +@@ -279,6 +297,8 @@ void PageInfoMainView::SetPermissionInfo( } for (auto& object : chosen_object_info_list) { @@ -779,7 +793,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_main_view.cc b/chrome/b // The view takes ownership of the object info. auto object_view = std::make_unique( std::move(object), -@@ -281,6 +301,10 @@ void PageInfoMainView::SetPermissionInfo( +@@ -289,6 +309,10 @@ void PageInfoMainView::SetPermissionInfo( content_view->AddChildView(std::move(object_view))); } @@ -802,7 +816,7 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom #include "components/page_info/core/features.h" #include "components/page_info/core/proto/about_this_site_metadata.pb.h" #include "components/page_info/page_info.h" -@@ -256,7 +258,14 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( +@@ -258,7 +260,14 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( ContentSetting setting = info.setting == CONTENT_SETTING_DEFAULT ? info.default_setting : info.setting; @@ -817,8 +831,8 @@ diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrom // For guard content settings and Automatic Picture-in-Picture, ASK is treated // as an "on" state. const bool show_blocked_badge = -@@ -521,6 +530,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( - icon = &kFullscreenIcon; +@@ -548,6 +557,17 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( + icon = &vector_icons::kUsbIcon; break; default: + bool found = false; @@ -902,8 +916,8 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c if (permission.requesting_origin.has_value()) { std::u16string requesting_origin_string; switch (permission.type) { -@@ -143,6 +163,90 @@ void PermissionToggleRowView::PermissionChanged() { - } +@@ -149,6 +169,90 @@ void PermissionToggleRowView::UpdatePermission( + UpdateUiOnPermissionChanged(); } +void PermissionToggleRowView::OnShowOptionsMenu() { @@ -993,7 +1007,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c void PermissionToggleRowView::OnToggleButtonPressed() { PageInfoUI::ToggleBetweenAllowAndBlock(permission_); PermissionChanged(); -@@ -151,24 +255,19 @@ void PermissionToggleRowView::OnToggleButtonPressed() { +@@ -157,24 +261,19 @@ void PermissionToggleRowView::OnToggleButtonPressed() { void PermissionToggleRowView::InitForUserSource( bool should_show_spacer_view, const std::u16string& toggle_accessible_name) { @@ -1025,7 +1039,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c const int icon_size = GetLayoutConstant(PAGE_INFO_ICON_SIZE); // TODO(crbug.com/1011533): Update below code to only display the updated -@@ -226,9 +325,6 @@ void PermissionToggleRowView::InitForUserSource( +@@ -232,9 +331,6 @@ void PermissionToggleRowView::InitForUserSource( auto spacer_view = std::make_unique(); spacer_view->SetPreferredSize(gfx::Size(icon_size, icon_size)); spacer_view_ = row_view_->AddControl(std::move(spacer_view)); @@ -1035,7 +1049,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c } } } -@@ -286,6 +382,33 @@ void PermissionToggleRowView::UpdateUiOnPermissionChanged() { +@@ -292,6 +388,33 @@ void PermissionToggleRowView::UpdateUiOnPermissionChanged() { state_label_ = row_view_->AddSecondaryLabel(state_text); } } @@ -1094,7 +1108,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.h b/ch METADATA_HEADER(PermissionToggleRowView, views::View) public: -@@ -55,6 +61,12 @@ class PermissionToggleRowView : public views::View { +@@ -56,6 +62,12 @@ class PermissionToggleRowView : public views::View { private: friend class test::PageInfoBubbleViewTestApi; @@ -1107,7 +1121,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.h b/ch void OnToggleButtonPressed(); void InitForUserSource(bool should_show_spacer_view, const std::u16string& toggle_accessible_name); -@@ -69,6 +81,10 @@ class PermissionToggleRowView : public views::View { +@@ -70,6 +82,10 @@ class PermissionToggleRowView : public views::View { raw_ptr toggle_button_ = nullptr; raw_ptr spacer_view_ = nullptr; @@ -1129,7 +1143,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide #include "build/branding_buildflags.h" #include "build/build_config.h" #include "build/buildflag.h" -@@ -72,6 +73,9 @@ +@@ -70,6 +71,9 @@ #include "components/google/core/common/google_util.h" #include "components/history/core/common/pref_names.h" #include "components/omnibox/common/omnibox_features.h" @@ -1139,7 +1153,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide #include "components/password_manager/core/browser/leak_detection_dialog_utils.h" #include "components/password_manager/core/browser/manage_passwords_referrer.h" #include "components/password_manager/core/common/password_manager_features.h" -@@ -3785,6 +3789,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, +@@ -3577,6 +3581,56 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, policy_indicator::AddLocalizedStrings(html_source); AddSecurityKeysStrings(html_source); @@ -1199,7 +1213,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/browser/ui/webui/settings/site_settings_helper.cc --- a/chrome/browser/ui/webui/settings/site_settings_helper.cc +++ b/chrome/browser/ui/webui/settings/site_settings_helper.cc -@@ -43,6 +43,8 @@ +@@ -44,6 +44,8 @@ #include "chrome/common/url_constants.h" #include "chrome/grit/generated_resources.h" #include "components/content_settings/core/browser/host_content_settings_map.h" @@ -1208,8 +1222,8 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b #include "components/content_settings/core/common/content_settings.h" #include "components/content_settings/core/common/content_settings_pattern.h" #include "components/content_settings/core/common/content_settings_utils.h" -@@ -220,13 +222,13 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { - {ContentSettingsType::DIRECT_SOCKETS, nullptr}, +@@ -224,13 +226,13 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { + {ContentSettingsType::TOP_LEVEL_TPCD_ORIGIN_TRIAL, nullptr}, }; -static_assert( @@ -1229,7 +1243,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b struct SiteSettingSourceStringMapping { SiteSettingSource source; -@@ -476,6 +478,13 @@ bool HasRegisteredGroupName(ContentSettingsType type) { +@@ -480,6 +482,13 @@ bool HasRegisteredGroupName(ContentSettingsType type) { return true; } } @@ -1243,7 +1257,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b return false; } -@@ -489,11 +498,24 @@ ContentSettingsType ContentSettingsTypeFromGroupName(base::StringPiece name) { +@@ -493,11 +502,24 @@ ContentSettingsType ContentSettingsTypeFromGroupName(base::StringPiece name) { return entry.type; } } @@ -1269,7 +1283,7 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b for (const auto& entry : kContentSettingsTypeGroupNames) { if (type == entry.type) { // Content setting types that aren't represented in the settings UI -@@ -508,7 +530,6 @@ base::StringPiece ContentSettingsTypeToGroupName(ContentSettingsType type) { +@@ -512,7 +534,6 @@ base::StringPiece ContentSettingsTypeToGroupName(ContentSettingsType type) { return entry.name ? entry.name : base::StringPiece(); } } @@ -1277,8 +1291,8 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b NOTREACHED() << static_cast(type) << " is not a recognized content settings type."; return base::StringPiece(); -@@ -594,6 +615,13 @@ std::vector GetVisiblePermissionCategories( - base_types->push_back(ContentSettingsType::SPEAKER_SELECTION); +@@ -610,6 +631,13 @@ std::vector GetVisiblePermissionCategories( + base_types->push_back(ContentSettingsType::POINTER_LOCK); } + content_settings::WebsiteSettingsRegistry* website_settings = @@ -1457,7 +1471,7 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/browser_ui/site_settings/android/BUILD.gn --- a/components/browser_ui/site_settings/android/BUILD.gn +++ b/components/browser_ui/site_settings/android/BUILD.gn -@@ -142,6 +142,23 @@ android_library("java") { +@@ -146,6 +146,23 @@ android_library("java") { ":site_settings_jni_headers", "//components/content_settings/android:java_pref_names_srcjar", ] @@ -1481,7 +1495,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b } android_library("javatests") { -@@ -187,6 +204,7 @@ robolectric_library("junit") { +@@ -194,6 +211,7 @@ robolectric_library("junit") { } android_resources("java_resources") { @@ -1492,7 +1506,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/AllSiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/AllSiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/AllSiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/AllSiteSettings.java -@@ -366,7 +366,8 @@ public class AllSiteSettings extends BaseSiteSettingsFragment +@@ -372,7 +372,8 @@ public class AllSiteSettings extends BaseSiteSettingsFragment if (queryHasChanged) getInfoForOrigins(); }); @@ -1502,7 +1516,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c MenuItem help = menu.add( Menu.NONE, -@@ -378,6 +379,8 @@ public class AllSiteSettings extends BaseSiteSettingsFragment +@@ -384,6 +385,8 @@ public class AllSiteSettings extends BaseSiteSettingsFragment getResources(), R.drawable.ic_help_and_feedback, getContext().getTheme())); @@ -2137,7 +2151,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c int icon, int title, @ContentSettingValues @Nullable Integer defaultEnabledValue, -@@ -427,6 +427,8 @@ public class ContentSettingsResources { +@@ -415,6 +415,8 @@ public class ContentSettingsResources { R.string.website_settings_category_vr_blocked, R.string.website_settings_category_vr_a11y); } @@ -2146,8 +2160,8 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c assert false; // NOTREACHED return null; } -@@ -590,6 +592,14 @@ public class ContentSettingsResources { - return getResourceItem(contentType, null).getDefaultDisabledValue(); +@@ -573,6 +575,14 @@ public class ContentSettingsResources { + return getResourceItem(contentType).getDefaultDisabledValue(); } + public static int getCategorySummary(int contentType, @@ -2161,7 +2175,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c /** * Returns the string resource id for a given ContentSetting to show with a permission category. * -@@ -752,6 +762,8 @@ public class ContentSettingsResources { +@@ -736,6 +746,8 @@ public class ContentSettingsResources { * Blocked states, in that order. */ public static int[] getTriStateSettingDescriptionIDs(int contentType) { @@ -2173,7 +2187,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleCategorySettings.java -@@ -329,6 +329,10 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -328,6 +328,10 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment website.site() .getContentSetting( browserContextHandle, mCategory.getContentSettingsType()); @@ -2184,7 +2198,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (contentSetting != null) { return ContentSettingValues.BLOCK == contentSetting; } -@@ -493,6 +497,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -492,6 +496,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment ? new HashSet<>(getArguments().getStringArrayList(EXTRA_SELECTED_DOMAINS)) : null; @@ -2192,7 +2206,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c configureGlobalToggles(); if (mCategory.getType() == SiteSettingsCategory.Type.REQUEST_DESKTOP_SITE) { RecordUserAction.record("DesktopSiteContentSetting.SettingsPage.Entered"); -@@ -523,7 +528,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -522,7 +527,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment if (queryHasChanged) getInfoForOrigins(); }); @@ -2202,7 +2216,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c MenuItem help = menu.add( Menu.NONE, -@@ -535,12 +541,20 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -534,12 +540,20 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment getResources(), R.drawable.ic_help_and_feedback, getContext().getTheme())); @@ -2223,7 +2237,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (mCategory.getType() == SiteSettingsCategory.Type.PROTECTED_MEDIA) { getSiteSettingsDelegate() .launchProtectedContentHelpAndFeedbackActivity(getActivity()); -@@ -612,6 +626,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -611,6 +625,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment BrowserContextHandle browserContextHandle = getSiteSettingsDelegate().getBrowserContextHandle(); PrefService prefService = UserPrefs.get(browserContextHandle); @@ -2235,7 +2249,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (BINARY_TOGGLE_KEY.equals(preference.getKey())) { assert !mCategory.isManaged(); boolean toggleValue = (boolean) newValue; -@@ -804,6 +823,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -803,6 +822,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment .website_settings_allowed_group_heading_request_desktop_site; break; } @@ -2244,7 +2258,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c assert resource > 0; return getString(resource); } -@@ -919,6 +940,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -918,6 +939,8 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment default: break; } @@ -2253,7 +2267,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (allowSpecifyingExceptions) { getPreferenceScreen() .addPreference( -@@ -1107,8 +1130,16 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1104,8 +1127,16 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment private boolean isBlocked() { switch (mGlobalToggleLayout) { case GlobalToggleLayout.TRI_STATE_TOGGLE: @@ -2270,7 +2284,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c return (triStateToggle.getCheckedSetting() == ContentSettingValues.BLOCK); case GlobalToggleLayout.TRI_STATE_COOKIE_TOGGLE: TriStateCookieSettingsPreference triStateCookieToggle = -@@ -1173,7 +1204,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1170,7 +1201,11 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment } else if (mCategory.getType() == SiteSettingsCategory.Type.STORAGE_ACCESS) { infoText.setSummary(getStorageAccessSummary()); } else { @@ -2283,7 +2297,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } // Hide the anti-abuse text preferences, as needed. -@@ -1197,6 +1232,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1194,6 +1229,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment screen.removePreference(antiAbuseThingsToConsiderHeader); screen.removePreference(antiAbuseThingsToConsiderSectionOne); } @@ -2291,7 +2305,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c if (permissionBlockedByOs) { maybeShowOsWarning(screen); -@@ -1348,7 +1384,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1345,7 +1381,7 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment getSiteSettingsDelegate().getBrowserContextHandle(), contentType); int[] descriptionIds = ContentSettingsResources.getTriStateSettingDescriptionIDs(contentType); @@ -2300,7 +2314,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } private void configureBinaryToggle(ChromeSwitchPreference binaryToggle, int contentType) { -@@ -1459,6 +1495,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment +@@ -1450,6 +1486,14 @@ public class SingleCategorySettings extends BaseSiteSettingsFragment @ContentSettingValues Integer value = site.getContentSetting(browserContextHandle, contentSettingsType); @@ -2318,7 +2332,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SingleWebsiteSettings.java -@@ -46,6 +46,7 @@ import java.util.Collection; +@@ -47,6 +47,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -2326,7 +2340,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c /** Shows the permissions and other settings for a particular website. */ public class SingleWebsiteSettings extends BaseSiteSettingsFragment -@@ -164,7 +165,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -165,7 +166,7 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment case ContentSettingsType.CLIPBOARD_READ_WRITE: return "clipboard_permission_list"; default: @@ -2335,7 +2349,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } } -@@ -534,8 +535,21 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -532,8 +533,21 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment private void setupContentSettingsPreferences() { mMaxPermissionOrder = findPreference(PREF_PERMISSIONS_HEADER).getOrder(); @@ -2359,7 +2373,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c preference.setKey(getPreferenceKey(type)); if (type == ContentSettingsType.ADS) { -@@ -1060,20 +1074,32 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1073,20 +1087,32 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment @ContentSettingValues @Nullable Integer value, boolean isEmbargoed, boolean isOneTime) { @@ -2398,7 +2412,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } if (isSessionPermission(contentType)) { switchPreference.setSummary(switchPreference.getSummary() + " " + -@@ -1288,14 +1314,20 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment +@@ -1300,14 +1326,20 @@ public class SingleWebsiteSettings extends BaseSiteSettingsFragment permission = (Boolean) newValue ? ContentSettingValues.ALLOW : ContentSettingValues.BLOCK; } else { @@ -2450,7 +2464,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c Preference p = findPreference(prefCategory); int contentType = SiteSettingsCategory.contentSettingsType(prefCategory); // p can be null if the Preference was removed in configurePreferences. -@@ -142,19 +143,21 @@ public class SiteSettings extends BaseSiteSettingsFragment +@@ -140,19 +141,21 @@ public class SiteSettings extends BaseSiteSettingsFragment } else if (Type.ZOOM == prefCategory) { // Don't want to set a summary for Zoom because we don't want any message to display // under the Zoom row on site settings. @@ -2559,7 +2573,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsDelegate.java -@@ -150,6 +150,8 @@ public interface SiteSettingsDelegate { +@@ -172,6 +172,8 @@ public interface SiteSettingsDelegate { */ String getFirstPartySetOwner(String memberOrigin); @@ -2631,7 +2645,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePermissionsFetcher.java -@@ -102,7 +102,7 @@ public class WebsitePermissionsFetcher { +@@ -106,7 +106,7 @@ public class WebsitePermissionsFetcher { case ContentSettingsType.USB_GUARD: return WebsitePermissionsType.CHOSEN_OBJECT_INFO; default: @@ -2728,7 +2742,7 @@ new file mode 100644 diff --git a/components/content_settings/android/BUILD.gn b/components/content_settings/android/BUILD.gn --- a/components/content_settings/android/BUILD.gn +++ b/components/content_settings/android/BUILD.gn -@@ -58,6 +58,7 @@ android_library("content_settings_enums_java") { +@@ -59,6 +59,7 @@ android_library("content_settings_enums_java") { } java_cpp_enum("content_settings_enums_javagen") { @@ -2739,7 +2753,7 @@ diff --git a/components/content_settings/android/BUILD.gn b/components/content_s diff --git a/components/content_settings/core/browser/BUILD.gn b/components/content_settings/core/browser/BUILD.gn --- a/components/content_settings/core/browser/BUILD.gn +++ b/components/content_settings/core/browser/BUILD.gn -@@ -89,6 +89,13 @@ static_library("browser") { +@@ -85,6 +85,13 @@ static_library("browser") { } configs += [ "//build/config/compiler:wexit_time_destructors" ] @@ -2752,7 +2766,7 @@ diff --git a/components/content_settings/core/browser/BUILD.gn b/components/cont + output_file = "bromite_content_settings.inc" } - source_set("unit_tests") { + source_set("cookie_settings") { diff --git a/components/content_settings/core/browser/bromite_content_settings/placeholder.txt b/components/content_settings/core/browser/bromite_content_settings/placeholder.txt new file mode 100644 --- /dev/null @@ -2770,10 +2784,10 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. namespace content_settings { -@@ -750,6 +751,7 @@ void ContentSettingsRegistry::Init() { - WebsiteSettingsRegistry::DESKTOP, - ContentSettingsInfo::INHERIT_IN_INCOGNITO, - ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); +@@ -776,6 +777,7 @@ void ContentSettingsRegistry::Init() { + WebsiteSettingsRegistry::PLATFORM_ANDROID, + ContentSettingsInfo::INHERIT_IN_INCOGNITO, + ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); +#include "components/content_settings/core/browser/bromite_content_settings.inc" } @@ -2781,7 +2795,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. diff --git a/components/content_settings/core/browser/content_settings_uma_util.cc b/components/content_settings/core/browser/content_settings_uma_util.cc --- a/components/content_settings/core/browser/content_settings_uma_util.cc +++ b/components/content_settings/core/browser/content_settings_uma_util.cc -@@ -190,11 +190,7 @@ void RecordContentSettingsHistogram(const std::string& name, +@@ -193,11 +193,7 @@ void RecordContentSettingsHistogram(const std::string& name, } int ContentSettingTypeToHistogramValue(ContentSettingsType content_setting) { @@ -2821,8 +2835,8 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc + } + } #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_IOS) - rules->image_rules = map->GetSettingsForOneType(ContentSettingsType::IMAGES); rules->mixed_content_rules = + map->GetSettingsForOneType(ContentSettingsType::MIXEDSCRIPT); diff --git a/components/content_settings/core/browser/website_settings_info.h b/components/content_settings/core/browser/website_settings_info.h --- a/components/content_settings/core/browser/website_settings_info.h +++ b/components/content_settings/core/browser/website_settings_info.h @@ -2931,7 +2945,7 @@ new file mode 100644 diff --git a/components/content_settings/core/common/content_settings.cc b/components/content_settings/core/common/content_settings.cc --- a/components/content_settings/core/common/content_settings.cc +++ b/components/content_settings/core/common/content_settings.cc -@@ -16,6 +16,7 @@ +@@ -16,10 +16,11 @@ #include "components/content_settings/core/common/content_settings_metadata.h" #include "components/content_settings/core/common/content_settings_types.h" #include "components/content_settings/core/common/content_settings_utils.h" @@ -2939,7 +2953,12 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo namespace { -@@ -104,6 +105,13 @@ std::ostream& operator<<(std::ostream& os, +-void FilterRulesForType(ContentSettingsForOneType& settings, ++void FilterRulesForType(ContentSettingsForOneType& settings, // do not remove + const GURL& primary_url) { + std::erase_if(settings, + [&primary_url](const ContentSettingPatternSource& source) { +@@ -98,6 +99,13 @@ std::ostream& operator<<(std::ostream& os, // static bool RendererContentSettingRules::IsRendererContentSetting( ContentSettingsType content_type) { @@ -2953,20 +2972,27 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo return content_type == ContentSettingsType::IMAGES || content_type == ContentSettingsType::JAVASCRIPT || content_type == ContentSettingsType::POPUPS || -@@ -113,6 +121,9 @@ bool RendererContentSettingRules::IsRendererContentSetting( +@@ -107,7 +115,10 @@ bool RendererContentSettingRules::IsRendererContentSetting( void RendererContentSettingRules::FilterRulesByOutermostMainFrameURL( const GURL& outermost_main_frame_url) { +- FilterRulesForType(mixed_content_rules, outermost_main_frame_url); + for (ContentSettingRuleSource& info : settings_rules) { + FilterRulesForType(info.rules, outermost_main_frame_url); + } - FilterRulesForType(image_rules, outermost_main_frame_url); - FilterRulesForType(script_rules, outermost_main_frame_url); - FilterRulesForType(popup_redirect_rules, outermost_main_frame_url); -@@ -144,3 +155,10 @@ bool RendererContentSettingRules::operator==( - other.popup_redirect_rules, other.mixed_content_rules, - other.auto_dark_content_rules); ++ FilterRulesForType(mixed_content_rules, outermost_main_frame_url); // do not remove } + + RendererContentSettingRules::RendererContentSettingRules() = default; +@@ -127,4 +138,17 @@ RendererContentSettingRules& RendererContentSettingRules::operator=( + RendererContentSettingRules&& rules) = default; + + bool RendererContentSettingRules::operator==( +- const RendererContentSettingRules& other) const = default; ++ const RendererContentSettingRules& other) const { ++ return std::tie(settings_rules, mixed_content_rules) == ++ std::tie(other.settings_rules, other.mixed_content_rules); ++} + +ContentSettingRuleSource::ContentSettingRuleSource() = default; + @@ -2974,10 +3000,13 @@ diff --git a/components/content_settings/core/common/content_settings.cc b/compo + +ContentSettingRuleSource::ContentSettingRuleSource( + const ContentSettingRuleSource&) = default; ++ ++bool ContentSettingRuleSource::operator==( ++ const ContentSettingRuleSource& other) const = default; diff --git a/components/content_settings/core/common/content_settings.h b/components/content_settings/core/common/content_settings.h --- a/components/content_settings/core/common/content_settings.h +++ b/components/content_settings/core/common/content_settings.h -@@ -71,10 +71,20 @@ std::ostream& operator<<(std::ostream& os, +@@ -72,10 +72,22 @@ std::ostream& operator<<(std::ostream& os, typedef std::vector ContentSettingsForOneType; @@ -2988,6 +3017,8 @@ diff --git a/components/content_settings/core/common/content_settings.h b/compon + ContentSettingRuleSource(); + ~ContentSettingRuleSource(); + ContentSettingRuleSource(const ContentSettingRuleSource& source); ++ ++ bool operator==(const ContentSettingRuleSource& other) const; +}; + struct RendererContentSettingRules { @@ -3001,8 +3032,8 @@ diff --git a/components/content_settings/core/common/content_settings.h b/compon diff --git a/components/content_settings/core/common/content_settings.mojom b/components/content_settings/core/common/content_settings.mojom --- a/components/content_settings/core/common/content_settings.mojom +++ b/components/content_settings/core/common/content_settings.mojom -@@ -70,6 +70,11 @@ struct RuleMetaData { - TpcdMetadataRuleSource tpcd_metadata_rule_source; +@@ -71,6 +71,11 @@ struct RuleMetaData { + TpcdMetadataCohort tpcd_metadata_cohort; }; +struct ContentSettingRuleSource { @@ -3013,18 +3044,17 @@ diff --git a/components/content_settings/core/common/content_settings.mojom b/co // This mirrors the C++ type in content_settings.h. struct ContentSettingPatternSource { ContentSettingsPattern primary_pattern; -@@ -83,6 +88,7 @@ struct ContentSettingPatternSource { +@@ -84,5 +89,6 @@ struct ContentSettingPatternSource { // This mirrors the C++ type in content_settings.h. - // TODO(https://crbug.com/1485360): This should be removed. + // TODO(crbug.com/40282541): This should be removed. struct RendererContentSettingRules { + array settings_rules; - array image_rules; - array script_rules; - array popup_redirect_rules; + array mixed_content_rules; + }; diff --git a/components/content_settings/core/common/content_settings_mojom_traits.cc b/components/content_settings/core/common/content_settings_mojom_traits.cc --- a/components/content_settings/core/common/content_settings_mojom_traits.cc +++ b/components/content_settings/core/common/content_settings_mojom_traits.cc -@@ -117,12 +117,22 @@ bool StructTraitsmetadata) && data.ReadSource(&out->source); } @@ -3042,16 +3072,16 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai RendererContentSettingRules>:: Read(content_settings::mojom::RendererContentSettingRulesDataView data, RendererContentSettingRules* out) { -- return data.ReadImageRules(&out->image_rules) && +- return data.ReadMixedContentRules(&out->mixed_content_rules); + return data.ReadSettingsRules(&out->settings_rules) && -+ data.ReadImageRules(&out->image_rules) && - data.ReadScriptRules(&out->script_rules) && - data.ReadPopupRedirectRules(&out->popup_redirect_rules) && - data.ReadMixedContentRules(&out->mixed_content_rules) && ++ data.ReadMixedContentRules(&out->mixed_content_rules); + } + + } // namespace mojo diff --git a/components/content_settings/core/common/content_settings_mojom_traits.h b/components/content_settings/core/common/content_settings_mojom_traits.h --- a/components/content_settings/core/common/content_settings_mojom_traits.h +++ b/components/content_settings/core/common/content_settings_mojom_traits.h -@@ -164,10 +164,34 @@ struct StructTraits< +@@ -170,10 +170,34 @@ struct StructTraits< ContentSettingPatternSource* out); }; @@ -3083,23 +3113,22 @@ diff --git a/components/content_settings/core/common/content_settings_mojom_trai + return r.settings_rules; + } + - static const std::vector& image_rules( + static const std::vector& mixed_content_rules( const RendererContentSettingRules& r) { - return r.image_rules; + return r.mixed_content_rules; diff --git a/components/content_settings/core/common/content_settings_types.mojom b/components/content_settings/core/common/content_settings_types.mojom --- a/components/content_settings/core/common/content_settings_types.mojom +++ b/components/content_settings/core/common/content_settings_types.mojom -@@ -408,4 +408,6 @@ enum ContentSettingsType { - // Pointer Lock API allows a site to hide the cursor and have exclusive access - // to mouse inputs. - POINTER_LOCK, -+ +@@ -424,4 +424,5 @@ enum ContentSettingsType { + // BLOCK: Protections enabled. This is the default state. + // ALLOW: Protections disabled. + TRACKING_PROTECTION, +#include "components/content_settings/core/common/bromite_content_settings.inc" }; diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc b/components/content_settings/renderer/content_settings_agent_impl.cc --- a/components/content_settings/renderer/content_settings_agent_impl.cc +++ b/components/content_settings/renderer/content_settings_agent_impl.cc -@@ -206,6 +206,39 @@ void ContentSettingsAgentImpl::SendRendererContentSettingRules( +@@ -202,6 +202,49 @@ void ContentSettingsAgentImpl::SendRendererContentSettingRules( std::move(renderer_settings)); } @@ -3127,6 +3156,16 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc + blink::WebLocalFrame* frame = render_frame()->GetWebFrame(); + const GURL secondary_url = + url::Origin(frame->GetDocument().GetSecurityOrigin()).GetURL(); ++ return AllowContentSetting(type, secondary_url, default_value); ++} ++ ++bool ContentSettingsAgentImpl::AllowContentSetting( ++ ContentSettingsType type, ++ const blink::WebURL& secondary_url, ++ bool default_value) { ++ if (!content_setting_rules_) ++ return default_value; ++ + for (ContentSettingRuleSource& info : content_setting_rules_->settings_rules) { + if (info.type == (int)type) { + return CONTENT_SETTING_ALLOW == GetContentSettingFromRules( @@ -3139,13 +3178,24 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.cc void ContentSettingsAgentImpl::OnContentSettingsAgentRequest( mojo::PendingAssociatedReceiver receiver) { receivers_.Add(this, std::move(receiver)); +@@ -353,7 +396,7 @@ void ContentSettingsAgentImpl::ClearBlockedContentSettings() { + cached_storage_permissions_.clear(); + } + +-bool ContentSettingsAgentImpl::IsAllowlistedForContentSettings() const { ++bool ContentSettingsAgentImpl::IsAllowlistedForContentSettingsCromite() const { + if (should_allowlist_) + return true; + diff --git a/components/content_settings/renderer/content_settings_agent_impl.h b/components/content_settings/renderer/content_settings_agent_impl.h --- a/components/content_settings/renderer/content_settings_agent_impl.h +++ b/components/content_settings/renderer/content_settings_agent_impl.h -@@ -80,6 +80,11 @@ class ContentSettingsAgentImpl +@@ -80,6 +80,13 @@ class ContentSettingsAgentImpl static mojom::ContentSettingsManager::StorageType ConvertToMojoStorageType( StorageType storage_type); ++ bool AllowContentSetting( ++ ContentSettingsType type, const blink::WebURL& secondary_url, bool default_value) override; + bool AllowContentSetting( + ContentSettingsType type, bool default_value) override; + ContentSetting GetContentSetting( @@ -3154,6 +3204,15 @@ diff --git a/components/content_settings/renderer/content_settings_agent_impl.h // blink::WebContentSettingsClient: void AllowStorageAccess(StorageType storage_type, base::OnceCallback callback) override; +@@ -135,7 +142,7 @@ class ContentSettingsAgentImpl + // Helpers. + // True if `render_frame()` contains content that is allowlisted for content + // settings. +- bool IsAllowlistedForContentSettings() const; ++ bool IsAllowlistedForContentSettingsCromite() const; + + // A getter for `content_settings_manager_` that ensures it is bound. + mojom::ContentSettingsManager& GetContentSettingsManager(); diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java --- a/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PageInfoPermissionsController.java @@ -3229,15 +3288,15 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp diff --git a/components/page_info/page_info.cc b/components/page_info/page_info.cc --- a/components/page_info/page_info.cc +++ b/components/page_info/page_info.cc -@@ -24,6 +24,7 @@ +@@ -23,6 +23,7 @@ + #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "components/browsing_data/content/browsing_data_helper.h" - #include "components/content_settings/browser/page_specific_content_settings.h" +#include "components/content_settings/core/browser/website_settings_registry.h" #include "components/content_settings/browser/ui/cookie_controls_controller.h" #include "components/content_settings/core/browser/content_settings_registry.h" #include "components/content_settings/core/browser/content_settings_uma_util.h" -@@ -1219,6 +1220,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, +@@ -1237,6 +1238,14 @@ void PageInfo::PopulatePermissionInfo(PermissionInfo& permission_info, // applies to permissions listed in |kPermissionType|. bool PageInfo::ShouldShowPermission( const PageInfo::PermissionInfo& info) const { @@ -3252,7 +3311,7 @@ diff --git a/components/page_info/page_info.cc b/components/page_info/page_info. // Note |ContentSettingsType::ADS| will show up regardless of its default // value when it has been activated on the current origin. if (info.type == ContentSettingsType::ADS) { -@@ -1325,7 +1334,19 @@ void PageInfo::PresentSitePermissions() { +@@ -1344,7 +1353,19 @@ void PageInfo::PresentSitePermissions() { HostContentSettingsMap* content_settings = GetContentSettings(); DCHECK(web_contents_); @@ -3284,7 +3343,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in #include "components/page_info/core/features.h" #include "components/page_info/page_info.h" #include "components/page_info/page_info_ui_delegate.h" -@@ -615,6 +616,12 @@ PageInfoUI::~PageInfoUI() = default; +@@ -608,6 +609,12 @@ PageInfoUI::~PageInfoUI() = default; // static std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { @@ -3297,7 +3356,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in for (const PermissionUIInfo& info : GetContentSettingsUIInfo()) { if (info.type == type) return l10n_util::GetStringUTF16(info.string_id); -@@ -626,6 +633,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { +@@ -619,6 +626,12 @@ std::u16string PageInfoUI::PermissionTypeToUIString(ContentSettingsType type) { // static std::u16string PageInfoUI::PermissionTypeToUIStringMidSentence( ContentSettingsType type) { @@ -3310,7 +3369,7 @@ diff --git a/components/page_info/page_info_ui.cc b/components/page_info/page_in for (const PermissionUIInfo& info : GetContentSettingsUIInfo()) { if (info.type == type) return l10n_util::GetStringUTF16(info.string_id_mid_sentence); -@@ -1063,6 +1076,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) { +@@ -1056,6 +1069,11 @@ bool PageInfoUI::ContentSettingsTypeInPageInfo(ContentSettingsType type) { if (info.type == type) return true; } @@ -3343,13 +3402,17 @@ diff --git a/third_party/blink/public/platform/web_content_settings_client.h b/t #include "third_party/blink/public/common/client_hints/enabled_client_hints.h" #include "third_party/blink/public/mojom/navigation/renderer_content_settings.mojom.h" -@@ -46,6 +47,10 @@ class WebContentSettingsClient { +@@ -46,6 +47,14 @@ class WebContentSettingsClient { // Blocks until done. virtual bool AllowStorageAccessSync(StorageType storage_type) { return true; } + virtual bool AllowContentSetting(ContentSettingsType type, bool enabled_per_settings) { + return enabled_per_settings; + } ++ ++ virtual bool AllowContentSetting(ContentSettingsType type, const WebURL& secondary_url, bool enabled_per_settings) { ++ return enabled_per_settings; ++ } + // Controls whether insecure scripts are allowed to execute for this frame. virtual bool AllowRunningInsecureContent(bool enabled_per_settings, diff --git a/build/patches/Cromite-Branding.patch b/build/patches/Cromite-Branding.patch index 7ebdbe51..e5db8306 100644 --- a/build/patches/Cromite-Branding.patch +++ b/build/patches/Cromite-Branding.patch @@ -76,9 +76,9 @@ diff --git a/build/BUILD.gn b/build/BUILD.gn diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn --- a/build/config/BUILDCONFIG.gn +++ b/build/config/BUILDCONFIG.gn -@@ -177,6 +177,10 @@ assert(!(is_debug && is_official_build), "Can't do official debug builds") - assert(!(current_os == "ios" && is_component_build), - "Can't use component build on iOS") +@@ -183,6 +183,10 @@ declare_args() { + clang_unsafe_buffers_paths = "" + } +declare_args() { + cromite_pref_hash_seed_bin = "" @@ -90,7 +90,7 @@ diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml -@@ -171,7 +171,7 @@ by a child template that "extends" this file. +@@ -174,7 +174,7 @@ by a child template that "extends" this file. @@ -13152,7 +13152,7 @@ e)fqMZZ`3a)Ds&5H CreateProfilePrefStoreManager( +@@ -270,10 +271,7 @@ std::unique_ptr CreateProfilePrefStoreManager( #endif std::string seed; CHECK(ui::ResourceBundle::HasSharedInstance()); @@ -13214,7 +13214,7 @@ diff --git a/chrome/browser/resources/settings/settings_menu/settings_menu.html 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 -@@ -2164,7 +2164,7 @@ Your Google account may have other forms of browsing history like searches and a +@@ -2178,7 +2178,7 @@ Your Google account may have other forms of browsing history like searches and a About Chrome @@ -13247,7 +13247,7 @@ diff --git a/chrome/common/url_constants.h b/chrome/common/url_constants.h diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/components/browser_ui/strings/android/browser_ui_strings.grd --- a/components/browser_ui/strings/android/browser_ui_strings.grd +++ b/components/browser_ui/strings/android/browser_ui_strings.grd -@@ -999,7 +999,7 @@ +@@ -987,7 +987,7 @@ @@ -18908,7 +18908,7 @@ diff --git a/tools/grit/grit/grd_reader.py b/tools/grit/grit/grd_reader.py 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 -@@ -653,4 +653,6 @@ BASE_FEATURE(kUseGammaContrastRegistrySettings, +@@ -659,4 +659,6 @@ BASE_FEATURE(kUseGammaContrastRegistrySettings, base::FEATURE_ENABLED_BY_DEFAULT); #endif // BUILDFLAG(IS_WIN) diff --git a/build/patches/Customize-selection-popup.patch b/build/patches/Customize-selection-popup.patch index 6754cca9..4056fa25 100644 --- a/build/patches/Customize-selection-popup.patch +++ b/build/patches/Customize-selection-popup.patch @@ -35,7 +35,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeActionMod diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -748,10 +748,17 @@ public class ChromeTabbedActivity extends ChromeActivityRegisterTimePref(kPlusAddressLastFetchedTime, base::Time()); // Deprecated 03/2024. @@ -48,7 +48,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse + registry->RegisterBooleanPref(kPrivacySandboxApisEnabled, false); // Deprecated 03/2024. - registry->RegisterBooleanPref(kDefaultSearchProviderChoicePendingDeprecated, + registry->RegisterBooleanPref(kShowInternalAccessibilityTree, false); diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_delegate.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_settings_delegate.cc --- a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_delegate.cc +++ b/chrome/browser/privacy_sandbox/privacy_sandbox_settings_delegate.cc @@ -108,14 +108,15 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_attestations/privacy_san diff --git a/components/privacy_sandbox/privacy_sandbox_features.cc b/components/privacy_sandbox/privacy_sandbox_features.cc --- a/components/privacy_sandbox/privacy_sandbox_features.cc +++ b/components/privacy_sandbox/privacy_sandbox_features.cc -@@ -175,4 +175,8 @@ BASE_FEATURE(kTrackingProtectionNoticeRequestTracking, +@@ -193,4 +193,9 @@ BASE_FEATURE(kTrackingProtectionReminder, + "TrackingProtectionReminder", base::FEATURE_DISABLED_BY_DEFAULT); - #endif // BUILDFLAG(IS_ANDROID) +SET_CROMITE_FEATURE_DISABLED(kPrivacySandboxSettings4); +SET_CROMITE_FEATURE_ENABLED(kDisablePrivacySandboxPrompts); +SET_CROMITE_FEATURE_DISABLED(kEnforcePrivacySandboxAttestations); +SET_CROMITE_FEATURE_DISABLED(kPrivacySandboxFirstPartySetsUI); ++ } // namespace privacy_sandbox diff --git a/components/privacy_sandbox/privacy_sandbox_prefs.cc b/components/privacy_sandbox/privacy_sandbox_prefs.cc --- a/components/privacy_sandbox/privacy_sandbox_prefs.cc @@ -132,7 +133,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_prefs.cc b/components/pr diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/components/privacy_sandbox/privacy_sandbox_settings_impl.cc --- a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc +++ b/components/privacy_sandbox/privacy_sandbox_settings_impl.cc -@@ -123,7 +123,7 @@ std::set GetTopicsSetFromString( +@@ -125,7 +125,7 @@ std::set GetTopicsSetFromString( // static bool PrivacySandboxSettingsImpl::IsAllowed(Status status) { @@ -141,7 +142,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo } // static -@@ -232,7 +232,8 @@ PrivacySandboxSettingsImpl::GetFinchPrioritizedTopics() { +@@ -245,7 +245,8 @@ PrivacySandboxSettingsImpl::GetFinchPrioritizedTopics() { return finch_prioritized_topics_; } @@ -151,7 +152,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo Status status = GetM1TopicAllowedStatus(); JoinHistogram(kIsTopicsAllowedHistogram, status); return IsAllowed(status); -@@ -264,7 +265,8 @@ bool PrivacySandboxSettingsImpl::IsTopicsAllowedForContext( +@@ -277,7 +278,8 @@ bool PrivacySandboxSettingsImpl::IsTopicsAllowedForContext( return IsAllowed(status); } @@ -161,7 +162,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo const auto& blocked_topics = pref_service_->GetList(prefs::kPrivacySandboxBlockedTopics); -@@ -466,6 +468,7 @@ bool PrivacySandboxSettingsImpl:: +@@ -479,6 +481,7 @@ bool PrivacySandboxSettingsImpl:: void PrivacySandboxSettingsImpl::SetFledgeJoiningAllowed( const std::string& top_frame_etld_plus1, bool allowed) { @@ -169,7 +170,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo ScopedDictPrefUpdate scoped_pref_update( pref_service_, prefs::kPrivacySandboxFledgeJoinBlocked); -@@ -536,7 +539,8 @@ void PrivacySandboxSettingsImpl::ClearFledgeJoiningAllowedSettings( +@@ -549,7 +552,8 @@ void PrivacySandboxSettingsImpl::ClearFledgeJoiningAllowedSettings( } bool PrivacySandboxSettingsImpl::IsFledgeJoiningAllowed( @@ -179,7 +180,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo ScopedDictPrefUpdate scoped_pref_update( pref_service_, prefs::kPrivacySandboxFledgeJoinBlocked); auto& pref_data = scoped_pref_update.Get(); -@@ -782,7 +786,10 @@ void PrivacySandboxSettingsImpl::SetDelegateForTesting( +@@ -795,7 +799,10 @@ void PrivacySandboxSettingsImpl::SetDelegateForTesting( delegate_ = std::move(delegate); } @@ -191,7 +192,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo pref_service_->SetTime(prefs::kPrivacySandboxTopicsDataAccessibleSince, base::Time::Now()); -@@ -795,6 +802,7 @@ PrivacySandboxSettingsImpl::Status +@@ -808,6 +815,7 @@ PrivacySandboxSettingsImpl::Status PrivacySandboxSettingsImpl::GetSiteAccessAllowedStatus( const url::Origin& top_frame_origin, const GURL& url) const { @@ -199,7 +200,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_settings_impl.cc b/compo // Relying on |host_content_settings_map_| instead of |cookie_settings_| // allows to query whether the site associated with the |url| is allowed to // access Site data (aka ContentSettingsType::COOKIES) without considering any -@@ -809,6 +817,7 @@ PrivacySandboxSettingsImpl::GetSiteAccessAllowedStatus( +@@ -822,6 +830,7 @@ PrivacySandboxSettingsImpl::GetSiteAccessAllowedStatus( PrivacySandboxSettingsImpl::Status PrivacySandboxSettingsImpl::GetPrivacySandboxAllowedStatus( bool should_ignore_restriction /*=false*/) const { @@ -227,12 +228,12 @@ new file mode 100644 +SET_CROMITE_FEATURE_DISABLED(kFencedFrames); +SET_CROMITE_FEATURE_DISABLED(kSharedStorageAPI); +SET_CROMITE_FEATURE_DISABLED(kSharedStorageAPIM118); -+SET_CROMITE_FEATURE_DISABLED(kSharedStorageAPIM124); ++SET_CROMITE_FEATURE_DISABLED(kSharedStorageAPIM125); 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 -@@ -2519,6 +2519,7 @@ bool IsAllowPageWithIDBConnectionAndTransactionInBFCacheEnabled() { - } +@@ -2602,6 +2602,7 @@ BASE_FEATURE(kWebviewAccelerateSmallCanvases, + // constants for features in the section above. bool IsAllowURNsInIframeEnabled() { + if ((true)) return false; // see https://chromium-review.googlesource.com/c/chromium/src/+/3690741 diff --git a/build/patches/Disable-FedCm.patch b/build/patches/Disable-FedCm.patch index 8fddb0b8..7ae28bac 100644 --- a/build/patches/Disable-FedCm.patch +++ b/build/patches/Disable-FedCm.patch @@ -18,7 +18,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -1597,7 +1597,7 @@ +@@ -1559,7 +1559,7 @@ { name: "FedCm", public: true, diff --git a/build/patches/Disable-FirstPartySets-and-StorageAccessAPI.patch b/build/patches/Disable-FirstPartySets-and-StorageAccessAPI.patch index fd1cb6cc..03c0772d 100644 --- a/build/patches/Disable-FirstPartySets-and-StorageAccessAPI.patch +++ b/build/patches/Disable-FirstPartySets-and-StorageAccessAPI.patch @@ -70,13 +70,14 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_prefs.cc b/components/pr diff --git a/components/privacy_sandbox/tracking_protection_prefs.cc b/components/privacy_sandbox/tracking_protection_prefs.cc --- a/components/privacy_sandbox/tracking_protection_prefs.cc +++ b/components/privacy_sandbox/tracking_protection_prefs.cc -@@ -64,13 +64,13 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) { +@@ -64,14 +64,14 @@ void RegisterProfilePrefs(PrefRegistrySimple* registry) { // Tracking Protection Settings Prefs registry->RegisterBooleanPref( - prefs::kBlockAll3pcToggleEnabled, false, + prefs::kBlockAll3pcToggleEnabled, false, // with true enables FPS user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); + registry->RegisterBooleanPref(prefs::kAllowAll3pcToggleEnabled, false); registry->RegisterIntegerPref( prefs::kTrackingProtectionLevel, static_cast(TrackingProtectionLevel::kStandard), diff --git a/build/patches/Disable-GSA-by-default.patch b/build/patches/Disable-GSA-by-default.patch index 7b02db7a..7a3c1d30 100644 --- a/build/patches/Disable-GSA-by-default.patch +++ b/build/patches/Disable-GSA-by-default.patch @@ -19,10 +19,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j import org.chromium.chrome.browser.externalnav.IntentWithRequestMetadataHandler.RequestMetadata; import org.chromium.chrome.browser.flags.ChromeFeatureList; -import org.chromium.chrome.browser.gsa.GSAState; - import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteControllerProvider; + import org.chromium.chrome.browser.omnibox.suggestions.AutocompleteCoordinator; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileManager; -@@ -255,8 +254,6 @@ public class IntentHandler { +@@ -258,8 +257,6 @@ public class IntentHandler { private static int sReferrerId; private static String sPendingIncognitoUrl; @@ -31,7 +31,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.j private static final String PACKAGE_GMAIL = "com.google.android.gm"; private static final String PACKAGE_PLUS = "com.google.android.apps.plus"; private static final String PACKAGE_HANGOUTS = "com.google.android.talk"; -@@ -472,8 +469,6 @@ public class IntentHandler { +@@ -475,8 +472,6 @@ public class IntentHandler { return ExternalAppId.LINE; } else if (packageName.equals(PACKAGE_WHATSAPP)) { return ExternalAppId.WHATSAPP; diff --git a/build/patches/Disable-GetInstalledRelatedApps-API.patch b/build/patches/Disable-GetInstalledRelatedApps-API.patch index abf18eef..42dac5ef 100644 --- a/build/patches/Disable-GetInstalledRelatedApps-API.patch +++ b/build/patches/Disable-GetInstalledRelatedApps-API.patch @@ -43,7 +43,7 @@ new file mode 100644 diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -2183,9 +2183,9 @@ +@@ -2166,9 +2166,9 @@ status: {"Android": "test", "default": "stable"}, }, { diff --git a/build/patches/Disable-PrivacyGuide.patch b/build/patches/Disable-PrivacyGuide.patch index 536a978c..4a038f30 100644 --- a/build/patches/Disable-PrivacyGuide.patch +++ b/build/patches/Disable-PrivacyGuide.patch @@ -24,7 +24,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/browser/ui/webui/settings/settings_ui.cc b/chrome/browser/ui/webui/settings/settings_ui.cc --- a/chrome/browser/ui/webui/settings/settings_ui.cc +++ b/chrome/browser/ui/webui/settings/settings_ui.cc -@@ -358,8 +358,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui) +@@ -365,8 +365,7 @@ SettingsUI::SettingsUI(content::WebUI* web_ui) #endif // !BUILDFLAG(IS_CHROMEOS_LACROS) bool show_privacy_guide = diff --git a/build/patches/Disable-Real-Box.patch b/build/patches/Disable-Real-Box.patch index 5522caa7..12b694f9 100644 --- a/build/patches/Disable-Real-Box.patch +++ b/build/patches/Disable-Real-Box.patch @@ -4,16 +4,16 @@ Subject: Disable Real Box Real-box is search box in ntp --- - chrome/browser/prefs/browser_prefs.cc | 2 +- - chrome/browser/resources/new_tab_page/app.html | 5 ----- - chrome/browser/ui/webui/searchbox/realbox_handler.cc | 2 +- - components/search/ntp_features.cc | 6 +++--- - 4 files changed, 5 insertions(+), 10 deletions(-) + chrome/browser/prefs/browser_prefs.cc | 2 +- + chrome/browser/resources/new_tab_page/app.html | 5 ----- + chrome/browser/ui/webui/searchbox/searchbox_handler.cc | 1 + + components/search/ntp_features.cc | 6 +++--- + 4 files changed, 5 insertions(+), 9 deletions(-) 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 -@@ -2108,7 +2108,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2159,7 +2159,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry, registry->RegisterBooleanPref( prefs::kLensRegionSearchEnabled, true, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); @@ -25,7 +25,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse diff --git a/chrome/browser/resources/new_tab_page/app.html b/chrome/browser/resources/new_tab_page/app.html --- a/chrome/browser/resources/new_tab_page/app.html +++ b/chrome/browser/resources/new_tab_page/app.html -@@ -504,11 +504,6 @@ +@@ -423,11 +423,6 @@ hidden$="[[!logoEnabled_]]">
@@ -37,22 +37,21 @@ diff --git a/chrome/browser/resources/new_tab_page/app.html b/chrome/browser/res