From 4887cbf832e7b4ccb1d8a08393efc265a40cbf3f Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Wed, 28 Dec 2022 17:15:33 +0100 Subject: [PATCH] merge with upstream --- build/bromite_patches_list.txt | 92 +- ...lowUserCertificates-flag--win-fixup-.patch | 26 + .../patches/00Add-AudioContextAPI-flags.patch | 542 ----------- ...rk-import-export-actions--win-fixup-.patch | 4 +- ...nfigure-maximum-connecti--win-fixup-.patch | 2 +- ...g-to-disable-IPv6-probes--win-fixup-.patch | 34 +- ...sable-external-intent-re--win-fixup-.patch | 2 +- ...menu-item-to-view-source--add-fixup-.patch | 29 - ...Add-webRTC-site-settings--win-fixup-.patch | 15 +- ...ays-open-browser-controls-in-new-tab.patch | 45 + ...00Client-hints-overrides--add-fixup-.patch | 24 + ...00Client-hints-overrides--win-fixup-.patch | 26 - ...hing-of-all-field-trials--add-fixup-.patch | 30 +- .../00Disable-safe-browsing--win-fixup-.patch | 10 +- ...e-ThirdPartyStoragePartitioning-flag.patch | 22 - ...eDifferentPartitionSameOriginBlocked.patch | 22 + ...tal-user-scripts-support--win-fixup-.patch | 4 +- .../00Eyeo-Adblock-Remove--fixup-.patch | 71 ++ build/patches/00Eyeo-Adblock.patch | 6 +- ...for-user-agent-reduction--add-fixup-.patch | 67 ++ ...navigation-bar-to-bottom--add-fixup-.patch | 146 +++ ...ferrals-in-cross-origin-navi--fixup-.patch | 522 +++++++++++ ...in-and-sync-integrations--win-fixup-.patch | 4 +- ...earch-Ready-Omnibox-flag--win-fixup-.patch | 2 +- ...e-kAutomaticLazyFrameLoadingToEmbeds.patch | 22 + .../00Viewport-Protection--win-fixup-.patch | 252 ------ .../00Viewport-Protection-Site-Setting.patch | 650 ++++++++++++++ .../patches/00Viewport-Protection-flag.patch | 636 +++++++++++++ .../00temporary-fix-libaom-build-error.patch | 6 +- ...no-special-hosts-domains--add-fixup-.patch | 179 +--- .../00win-disable-annotate-downloads.patch | 24 + ...enable-HighEfficiencyMode-by-default.patch | 42 + build/patches/00win-enable-pdf-plugin.patch | 23 + .../AImageReader-CFI-crash-mitigations.patch | 36 +- ...I-level-21-prevent-crash-on-download.patch | 47 - build/patches/AV1-codec-support.patch | 60 -- .../Add-AllowUserCertificates-flag.patch | 66 +- .../Add-IsCleartextPermitted-flag.patch | 16 +- .../Add-a-proxy-configuration-page.patch | 24 +- .../Add-an-always-incognito-mode.patch | 130 ++- .../Add-bookmark-import-export-actions.patch | 34 +- ...dd-custom-tab-intents-privacy-option.patch | 2 +- build/patches/Add-exit-menu-item.patch | 4 +- ...g-for-omnibox-autocomplete-filtering.patch | 2 +- .../Add-flag-for-save-data-header.patch | 19 +- ...nfigure-maximum-connections-per-host.patch | 2 +- ...ontrol-video-playback-resume-feature.patch | 27 +- .../Add-flag-to-disable-IPv6-probes.patch | 26 +- ...-to-disable-external-intent-requests.patch | 6 +- .../Add-flag-to-disable-vibration.patch | 37 +- ...Add-lifetime-options-for-permissions.patch | 20 +- .../Add-menu-item-to-bookmark-all-tabs.patch | 37 +- .../Add-menu-item-to-view-source.patch | 32 +- .../Add-option-to-force-tablet-UI.patch | 2 +- ...-to-not-persist-tabs-across-sessions.patch | 12 +- .../Add-option-to-use-home-page-as-NTP.patch | 2 +- build/patches/Add-site-engagement-flag.patch | 12 +- ...-support-for-ISupportHelpAndFeedback.patch | 4 +- build/patches/Add-webGL-site-setting.patch | 8 +- build/patches/Add-webRTC-site-settings.patch | 6 +- ...ow-building-without-enable_reporting.patch | 27 +- .../Ask-user-before-closing-all-tabs.patch | 25 - ...ioBuffer-AnalyserNode-fp-mitigations.patch | 304 ++++++- ...Block-gateway-attacks-via-websockets.patch | 4 +- build/patches/Bromite-auto-updater.patch | 29 +- build/patches/Bromite-package-name.patch | 2 +- ...ch => Bromite-subresource-adblocker.patch} | 74 +- ...resolution-in-requestAnimationFrame.patch} | 18 +- build/patches/Client-hints-overrides.patch | 75 +- .../Content-settings-infrastructure.patch | 24 +- build/patches/Disable-AGSA-by-default.patch | 20 +- ...ble-Accessibility-service-by-default.patch | 2 +- .../patches/Disable-AsyncDNS-by-default.patch | 4 +- ...DRM-media-origin-IDs-preprovisioning.patch | 12 +- .../Disable-FLoC-and-privacy-sandbox.patch | 13 +- ...le-NTP-remote-suggestions-by-default.patch | 20 +- .../Disable-StartSurface-feature.patch | 27 + build/patches/Disable-TLS-resumption.patch | 14 +- .../Disable-add-to-home-screen-prompt.patch | 4 +- .../patches/Disable-all-predictors-code.patch | 122 +-- build/patches/Disable-all-promo-dialogs.patch | 6 +- .../Disable-conversion-measurement-api.patch | 50 +- build/patches/Disable-crash-reporting.patch | 6 +- .../Disable-feeds-support-by-default.patch | 17 +- ...Disable-fetching-of-all-field-trials.patch | 15 +- build/patches/Disable-idle-detection.patch | 2 +- ...-lock-icon-in-address-bar-by-default.patch | 12 +- .../Disable-offline-pages-in-CCT.patch | 12 +- build/patches/Disable-safe-browsing.patch | 265 +++--- build/patches/Disable-safety-check.patch | 10 +- .../Disable-smart-selection-by-default.patch | 22 +- ...isable-some-signed-exchange-features.patch | 17 +- .../Disable-text-fragments-by-default.patch | 54 +- build/patches/Disable-update-scheduler.patch | 2 +- build/patches/Disable-various-metrics.patch | 20 +- .../Do-not-build-API-keys-infobar.patch | 2 +- .../Do-not-compile-QR-code-sharing.patch | 2 +- .../Enable-Certificate-Transparency.patch | 53 +- build/patches/Enable-ECH-by-default.patch | 25 + build/patches/Enable-HEVC-by-default.patch | 27 + ...tBlockExternalFormRedirectsNoGesture.patch | 23 - ...able-PermuteTLSExtensions-by-default.patch | 25 + ...-SPPI-for-devices-with-enough-memory.patch | 23 +- ...ctOriginIsolation-and-SitePerProcess.patch | 14 +- ...e-darken-websites-checkbox-in-themes.patch | 12 +- .../Enable-native-Android-autofill.patch | 28 +- .../Enable-network-isolation-features.patch | 46 +- ...-prefetch-privacy-changes-by-default.patch | 12 +- build/patches/Enable-share-intent.patch | 40 +- ...ble-third-party-storage-partitioning.patch | 25 + .../Experimental-user-scripts-support.patch | 18 +- .../Guard-for-user-agent-reduction.patch | 25 + ...story-number-of-days-privacy-setting.patch | 8 +- ...e-enterprise-policies-for-secure-DNS.patch | 24 +- ...number-of-autocomplete-matches-to-10.patch | 14 +- build/patches/JIT-site-settings.patch | 22 +- .../Make-all-favicon-requests-on-demand.patch | 55 -- .../patches/Modify-default-preferences.patch | 20 +- .../Move-navigation-bar-to-bottom.patch | 16 +- ...nt-settings-back-to-privacy-settings.patch | 18 +- .../Multiple-fingerprinting-mitigations.patch | 4 +- build/patches/OpenSearch-miscellaneous.patch | 34 +- .../patches/Override-Navigator-Language.patch | 3 + .../Partition-Blink-memory-cache.patch | 9 +- .../Partition-blobs-by-top-frame-url.patch | 7 +- .../patches/Re-introduce-kWebAuthCable.patch | 27 +- ...-modal-dialog-flag-to-close-all-tabs.patch | 41 +- ...ders-in-DoH-requests-to-bare-minimum.patch | 7 +- .../Remove-binary-blob-integrations.patch | 255 ++++-- .../Remove-contextual-search-manager.patch | 248 +++-- build/patches/Remove-help-menu-item.patch | 2 +- ...referrals-in-cross-origin-navigation.patch | 21 +- .../Remove-navigator.connection-info.patch | 42 +- ...-offline-measurement-background-task.patch | 31 - ...price-shopping-commerce-integrations.patch | 294 +++--- .../Remove-segmentation-platform.patch | 31 +- .../Remove-signin-and-sync-integrations.patch | 637 ++++++++----- ...Remove-voice-recognition-integration.patch | 14 +- .../Restore-Search-Ready-Omnibox-flag.patch | 28 +- .../Restore-Simplified-NTP-launch.patch | 12 +- ...-button-in-top-toolbar-customization.patch | 287 ++++++ .../Restore-offline-indicator-v2-flag.patch | 34 +- ...Delete-block-external-form-redirects.patch | 11 +- ...ard-user-gesture-requirement-removal.patch | 29 - ...emove-disable-pull-to-refresh-effect.patch | 9 +- ...vert-flags-remove-num-raster-threads.patch | 17 +- ...l-of-execution-context-address-space.patch | 4 +- ...moval-of-an-option-to-block-autoplay.patch | 18 +- ...tings-for-cookies-javascript-and-ads.patch | 16 +- build/patches/Site-setting-for-images.patch | 18 +- build/patches/Timezone-customization.patch | 53 +- build/patches/Unexpire-tab-groups-flags.patch | 29 +- build/patches/Update-i18n-zh_CN-support.patch | 15 +- build/patches/User-agent-customization.patch | 66 +- build/patches/Viewport-Protection.patch | 848 ------------------ build/patches/Welcome-screen.patch | 2 +- build/patches/autofill-miscellaneous.patch | 22 +- ...build-remove-calling-untrusted-hooks.patch | 11 +- ...gled-chromium-Disable-profile-avatar.patch | 2 +- ...romium-Disable-translate-integration.patch | 14 +- ...ed-chromium-no-special-hosts-domains.patch | 234 +++-- ...RTC-do-not-expose-local-IP-addresses.patch | 4 +- 162 files changed, 5535 insertions(+), 4116 deletions(-) create mode 100644 build/patches/00Add-AllowUserCertificates-flag--win-fixup-.patch delete mode 100644 build/patches/00Add-AudioContextAPI-flags.patch delete mode 100644 build/patches/00Add-menu-item-to-view-source--add-fixup-.patch create mode 100644 build/patches/00Always-open-browser-controls-in-new-tab.patch create mode 100644 build/patches/00Client-hints-overrides--add-fixup-.patch delete mode 100644 build/patches/00Client-hints-overrides--win-fixup-.patch delete mode 100644 build/patches/00Enable-ThirdPartyStoragePartitioning-flag.patch create mode 100644 build/patches/00Enable-kPostMessageDifferentPartitionSameOriginBlocked.patch create mode 100644 build/patches/00Eyeo-Adblock-Remove--fixup-.patch create mode 100644 build/patches/00Guard-for-user-agent-reduction--add-fixup-.patch create mode 100644 build/patches/00Move-navigation-bar-to-bottom--add-fixup-.patch create mode 100644 build/patches/00Remove-HTTP-referrals-in-cross-origin-navi--fixup-.patch create mode 100644 build/patches/00Temp-Disable-kAutomaticLazyFrameLoadingToEmbeds.patch delete mode 100644 build/patches/00Viewport-Protection--win-fixup-.patch create mode 100644 build/patches/00Viewport-Protection-Site-Setting.patch create mode 100644 build/patches/00Viewport-Protection-flag.patch create mode 100644 build/patches/00win-disable-annotate-downloads.patch create mode 100644 build/patches/00win-enable-HighEfficiencyMode-by-default.patch create mode 100644 build/patches/00win-enable-pdf-plugin.patch delete mode 100644 build/patches/API-level-21-prevent-crash-on-download.patch delete mode 100644 build/patches/AV1-codec-support.patch delete mode 100644 build/patches/Ask-user-before-closing-all-tabs.patch rename build/patches/{Bromite-AdBlockUpdaterService.patch => Bromite-subresource-adblocker.patch} (96%) rename build/patches/{Fix-WebWorker-requestAnimationFrame.patch => Clamp-time-resolution-in-requestAnimationFrame.patch} (81%) create mode 100644 build/patches/Disable-StartSurface-feature.patch create mode 100644 build/patches/Enable-ECH-by-default.patch create mode 100644 build/patches/Enable-HEVC-by-default.patch delete mode 100644 build/patches/Enable-IntentBlockExternalFormRedirectsNoGesture.patch create mode 100644 build/patches/Enable-PermuteTLSExtensions-by-default.patch create mode 100644 build/patches/Enable-third-party-storage-partitioning.patch create mode 100644 build/patches/Guard-for-user-agent-reduction.patch delete mode 100644 build/patches/Make-all-favicon-requests-on-demand.patch delete mode 100644 build/patches/Remove-offline-measurement-background-task.patch create mode 100644 build/patches/Restore-adaptive-button-in-top-toolbar-customization.patch delete mode 100644 build/patches/Revert-clipboard-user-gesture-requirement-removal.patch delete mode 100644 build/patches/Viewport-Protection.patch diff --git a/build/bromite_patches_list.txt b/build/bromite_patches_list.txt index 2d963120..b7eaa80e 100644 --- a/build/bromite_patches_list.txt +++ b/build/bromite_patches_list.txt @@ -3,7 +3,26 @@ do-not-hide-.orig-files.patch Do-not-link-with-libatomic.patch do-not-add-suffix-to-package-name.patch exit-on-failure-of-inclusion.patch -AV1-codec-support.patch +Disable-safe-browsing.patch +Remove-signin-and-sync-integrations.patch +Move-some-account-settings-back-to-privacy-settings.patch +Remove-contextual-search-manager.patch +kill-Vision.patch +kill-Location-fall-back-to-system.patch +kill-Auth.patch +Remove-binary-blob-integrations.patch +Remove-SMS-integration.patch +Remove-price-shopping-commerce-integrations.patch +Remove-voice-recognition-integration.patch +Do-not-compile-QR-code-sharing.patch +Timezone-customization.patch +Revert-the-removal-of-an-option-to-block-autoplay.patch +Add-support-for-ISupportHelpAndFeedback.patch +JIT-site-settings.patch +Site-setting-for-images.patch +Content-settings-infrastructure.patch +Add-webGL-site-setting.patch +Add-webRTC-site-settings.patch Switch-to-fstack-protector-strong.patch Enable-fwrapv-in-Clang-for-non-UBSan-builds.patch Bromite-package-name.patch @@ -28,9 +47,7 @@ ungoogled-chromium-Disable-intranet-detector.patch ungoogled-chromium-no-special-hosts-domains.patch ungoogled-chromium-Disable-Gaia.patch ungoogled-chromium-Disable-Network-Time-Tracker.patch -Disable-safe-browsing.patch Disable-all-promo-dialogs.patch -Remove-signin-and-sync-integrations.patch Disable-update-scheduler.patch Add-English-only-search-engine.patch Add-DuckDuckGo-Lite-search-engine.patch @@ -41,7 +58,6 @@ Allow-playing-audio-in-background.patch Add-flag-to-control-video-playback-resume-feature.patch Add-exit-menu-item.patch Remove-help-menu-item.patch -AudioBuffer-AnalyserNode-fp-mitigations.patch Multiple-fingerprinting-mitigations.patch Add-flag-to-configure-maximum-connections-per-host.patch Do-not-ignore-download-location-prompt-setting.patch @@ -52,8 +68,6 @@ Add-an-always-incognito-mode.patch Keep-flag-to-allow-screenshots-in-Incognito-mode.patch Add-option-to-not-persist-tabs-across-sessions.patch Add-a-proxy-configuration-page.patch -Move-some-account-settings-back-to-privacy-settings.patch -Remove-contextual-search-manager.patch Add-custom-tab-intents-privacy-option.patch Disable-FLoC-and-privacy-sandbox.patch History-number-of-days-privacy-setting.patch @@ -68,14 +82,6 @@ autofill-miscellaneous.patch Enable-native-Android-autofill.patch first_run-deactivate-autoupdate-globally.patch translate-disable-fetching-of-languages-from-server.patch -kill-Vision.patch -kill-Location-fall-back-to-system.patch -kill-Auth.patch -Remove-binary-blob-integrations.patch -Remove-SMS-integration.patch -Remove-price-shopping-commerce-integrations.patch -Remove-voice-recognition-integration.patch -Do-not-compile-QR-code-sharing.patch Offer-builtin-autocomplete-for-chrome-flags.patch Use-4-tile-rows-never-show-logo.patch Disable-various-metrics.patch @@ -87,7 +93,8 @@ Disable-offline-pages-in-CCT.patch Disable-media-router-and-remoting-by-default.patch Restore-Search-Ready-Omnibox-flag.patch disable-AdsBlockedInfoBar.patch -Bromite-AdBlockUpdaterService.patch +Bromite-subresource-adblocker.patch +Bromite-auto-updater.patch Replace-DoH-probe-domain-with-RIPE-domain.patch Increase-number-of-autocomplete-matches-to-10.patch Disable-requests-for-single-word-Omnibar-searches.patch @@ -100,6 +107,7 @@ Disable-feeds-support-by-default.patch Show-site-settings-for-cookies-javascript-and-ads.patch Disable-DRM-media-origin-IDs-preprovisioning.patch Disable-smart-selection-by-default.patch +Guard-for-user-agent-reduction.patch AImageReader-CFI-crash-mitigations.patch Add-menu-item-to-view-source.patch Revert-removal-of-execution-context-address-space.patch @@ -112,10 +120,8 @@ Disable-the-DIAL-repeating-discovery.patch Block-qjz9zk-or-trk-requests.patch Hardening-against-incognito-mode-detection.patch Remove-weblayer-dependency-on-Play-Services.patch -Timezone-customization.patch Restore-Simplified-NTP-launch.patch Add-option-to-use-home-page-as-NTP.patch -Revert-the-removal-of-an-option-to-block-autoplay.patch Disable-text-fragments-by-default.patch disable-WebView-variations-support.patch Enable-network-isolation-features.patch @@ -123,32 +129,24 @@ Revert-flags-remove-num-raster-threads.patch webview-Hard-no-to-persistent-histograms.patch Ignore-enterprise-policies-for-secure-DNS.patch Add-menu-item-to-bookmark-all-tabs.patch -Ask-user-before-closing-all-tabs.patch +Re-introduce-modal-dialog-flag-to-close-all-tabs.patch Add-option-to-force-tablet-UI.patch -Make-all-favicon-requests-on-demand.patch Add-Alt-D-hotkey-to-focus-address-bar.patch -Remove-offline-measurement-background-task.patch User-agent-customization.patch Add-AllowUserCertificates-flag.patch Add-IsCleartextPermitted-flag.patch Unexpire-tab-groups-flags.patch Add-flag-for-omnibox-autocomplete-filtering.patch Revert-Delete-block-external-form-redirects.patch -Enable-IntentBlockExternalFormRedirectsNoGesture.patch Add-flag-to-disable-external-intent-requests.patch +Enable-share-intent.patch Logcat-crash-reports-UI.patch -Add-support-for-ISupportHelpAndFeedback.patch -JIT-site-settings.patch -API-level-21-prevent-crash-on-download.patch Add-flag-to-disable-vibration.patch mime_util-force-text-x-suse-ymp-to-be-downloaded.patch Client-hints-overrides.patch Disable-AGSA-by-default.patch Allow-building-without-enable_reporting.patch Disable-lock-icon-in-address-bar-by-default.patch -Enable-share-intent.patch -Site-setting-for-images.patch -Bromite-auto-updater.patch Experimental-user-scripts-support.patch Keep-empty-tabs-between-sessions.patch Disable-third-party-origin-trials.patch @@ -178,10 +176,7 @@ Disable-TLS-resumption.patch Remove-mremap-from-seccomp-baseline-policy.patch Move-navigation-bar-to-bottom.patch Welcome-screen.patch -Content-settings-infrastructure.patch -Add-webGL-site-setting.patch Add-site-engagement-flag.patch -Add-webRTC-site-settings.patch Enable-Certificate-Transparency.patch Invalidate-components-public-key.patch Improve-plain-text-rendering-on-mobile.patch @@ -192,19 +187,21 @@ Remove-preload-of-com.google.android.gms.fonts.patch Partition-Blink-memory-cache.patch Remove-navigator.connection-info.patch Disable-PrivacyGuide.patch -Re-introduce-modal-dialog-flag-to-close-all-tabs.patch sharing-hub-always-use-visible-URL.patch Re-introduce-kWebAuthCable.patch -Revert-clipboard-user-gesture-requirement-removal.patch -Viewport-Protection.patch +Enable-HEVC-by-default.patch +Partition-blobs-by-top-frame-URL.patch Override-Navigator-Language.patch -Partition-blobs-by-top-frame-url.patch Disable-add-to-home-screen-prompt.patch -Remove-http-referrals-in-cross-origin-navigation.patch +Remove-HTTP-referrals-in-cross-origin-navigation.patch +Enable-ECH-by-default.patch +Disable-StartSurface-feature.patch +Clamp-time-resolution-in-requestAnimationFrame.patch +Enable-PermuteTLSExtensions-by-default.patch +Enable-third-party-storage-partitioning.patch +Restore-adaptive-button-in-top-toolbar-customization.patch Add-kill-switch-for-unsupported-clangd-flags.patch -Fix-WebWorker-requestAnimationFrame.patch -00Enable-ThirdPartyStoragePartitioning-flag.patch 00OpenSearch--miscellaneous--fixup-.patch 00Eyeo-Adblock.patch 00Eyeo-Adblock-Remove-Privacy-Issues.patch @@ -234,17 +231,28 @@ Fix-WebWorker-requestAnimationFrame.patch 00Timezone-customization--win-fixup-.patch 00Add-webGL-site-setting--win-fixup-.patch 00Add-webRTC-site-settings--win-fixup-.patch -00Viewport-Protection--win-fixup-.patch 00Eyeo-Adblock--win-fixup-.patch 00Content-settings-infrastructure--win-fixup-.patch 00ungoogled-chromium--no-special-hosts-d--win-fixup-.patch -00Client-hints-overrides--win-fixup-.patch 00Logcat-crash-reports-UI--win-fixup-.patch 00Fix-windows-build.patch 00ungoogled-chr-no-special-hosts-domains--add-fixup-.patch 00Disable-fetching-of-all-field-trials--add-fixup-.patch -00Add-menu-item-to-view-source--add-fixup-.patch -00Add-AudioContextAPI-flags.patch +AudioBuffer-AnalyserNode-fp-mitigations.patch 00Disable-Component-Updates.patch 00wip-add-browser-policy.patch -00temporary-fix-libaom-build-error.patch \ No newline at end of file +00temporary-fix-libaom-build-error.patch +00Guard-for-user-agent-reduction--add-fixup-.patch +00Client-hints-overrides--add-fixup-.patch +00Add-AllowUserCertificates-flag--win-fixup-.patch +00Viewport-Protection-flag.patch +00Viewport-Protection-Site-Setting.patch +00Temp-Disable-kAutomaticLazyFrameLoadingToEmbeds.patch +00Enable-kPostMessageDifferentPartitionSameOriginBlocked.patch +00Move-navigation-bar-to-bottom--add-fixup-.patch +00Always-open-browser-controls-in-new-tab.patch +00Eyeo-Adblock-Remove--fixup-.patch +00Remove-HTTP-referrals-in-cross-origin-navi--fixup-.patch +00win-enable-pdf-plugin.patch +00win-disable-annotate-downloads.patch +00win-enable-HighEfficiencyMode-by-default.patch \ No newline at end of file diff --git a/build/patches/00Add-AllowUserCertificates-flag--win-fixup-.patch b/build/patches/00Add-AllowUserCertificates-flag--win-fixup-.patch new file mode 100644 index 00000000..cb0133cc --- /dev/null +++ b/build/patches/00Add-AllowUserCertificates-flag--win-fixup-.patch @@ -0,0 +1,26 @@ +From: Your Name +Date: Mon, 19 Dec 2022 11:23:10 +0000 +Subject: Add AllowUserCertificates flag (win fixup) + +--- + chrome/browser/about_flags.cc | 2 ++ + 1 file changed, 2 insertions(+) + +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 +@@ -8897,10 +8897,12 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(features::kWin10TabSearchCaptionButton)}, + #endif // BUILDFLAG(IS_WIN) + ++#if BUILDFLAG(IS_ANDROID) + {"allow-user-certificates", + flag_descriptions::kAllowUserCertificatesName, + flag_descriptions::kAllowUserCertificatesDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kAllowUserCertificates)}, ++#endif + {"omnibox-updated-connection-security-indicators", + flag_descriptions::kOmniboxUpdatedConnectionSecurityIndicatorsName, + flag_descriptions::kOmniboxUpdatedConnectionSecurityIndicatorsDescription, +-- +2.25.1 diff --git a/build/patches/00Add-AudioContextAPI-flags.patch b/build/patches/00Add-AudioContextAPI-flags.patch deleted file mode 100644 index 14ea0b13..00000000 --- a/build/patches/00Add-AudioContextAPI-flags.patch +++ /dev/null @@ -1,542 +0,0 @@ -From: Your Name -Date: Mon, 7 Nov 2022 16:45:13 +0000 -Subject: Add AudioContextAPI flags - ---- - chrome/browser/about_flags.cc | 8 ++++ - chrome/browser/flag_descriptions.cc | 9 ++++ - chrome/browser/flag_descriptions.h | 5 +++ - third_party/blink/common/features.cc | 5 +++ - third_party/blink/public/common/features.h | 3 ++ - .../modules/webaudio/analyser_handler.h | 16 +++---- - .../modules/webaudio/analyser_node.cc | 20 +++++---- - .../renderer/modules/webaudio/analyser_node.h | 8 ++-- - .../modules/webaudio/analyser_node.idl | 8 ++-- - .../renderer/modules/webaudio/audio_buffer.cc | 34 ++++++++++++-- - .../renderer/modules/webaudio/audio_buffer.h | 7 +-- - .../modules/webaudio/audio_buffer.idl | 6 +++ - .../modules/webaudio/audio_context.cc | 5 +++ - .../modules/webaudio/base_audio_context.cc | 12 +++++ - .../modules/webaudio/base_audio_context.h | 2 + - .../modules/webaudio/realtime_analyser.cc | 45 +++++++++++++++++-- - .../modules/webaudio/realtime_analyser.h | 10 +++-- - 17 files changed, 164 insertions(+), 39 deletions(-) - -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 -@@ -3667,6 +3667,14 @@ const FeatureEntry kFeatureEntries[] = { - flag_descriptions::kKioskEnableAppServiceDescription, kOsCrOS, - FEATURE_VALUE_TYPE(features::kKioskEnableAppService)}, - #endif // BUILDFLAG(IS_CHROMEOS) -+ {"audio-context-api", -+ flag_descriptions::kAudioContextAPIEnabledName, -+ flag_descriptions::kAudioContextAPIEnabledDescription, kOsAll, -+ FEATURE_VALUE_TYPE(blink::features::kAudioContextAPIEnabled)}, -+ {"fingerprinting-audio-context-data-noise", -+ flag_descriptions::kAudioContextShuffleEnabledName, -+ flag_descriptions::kAudioContextShuffleEnabledDescription, kOsAll, -+ FEATURE_VALUE_TYPE(blink::features::kAudioContextShuffleEnabled)}, - #if !BUILDFLAG(IS_ANDROID) - {"enable-webrtc-remote-event-log", - flag_descriptions::kWebRtcRemoteEventLogName, -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 -@@ -3353,6 +3353,15 @@ const char kWebrtcUseMinMaxVEADimensionsDescription[] = - "When enabled, WebRTC will only use the Video Encode Accelerator for " - "video resolutions inside those published as supported."; - -+const char kAudioContextAPIEnabledName[] = -+ "Audio Context API"; -+const char kAudioContextAPIEnabledDescription[] = -+ "When enabled, api are available for the audio context."; -+const char kAudioContextShuffleEnabledName[] = -+ "Enable Audio Context fingerprint deception"; -+const char kAudioContextShuffleEnabledDescription[] = -+ "Scale the output values of xxx with a randomly selected factor."; -+ - const char kWebUsbDeviceDetectionName[] = - "Automatic detection of WebUSB-compatible devices"; - const char kWebUsbDeviceDetectionDescription[] = -diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h ---- a/chrome/browser/flag_descriptions.h -+++ b/chrome/browser/flag_descriptions.h -@@ -1905,6 +1905,11 @@ extern const char kWebrtcSrtpAesGcmDescription[]; - extern const char kWebrtcUseMinMaxVEADimensionsName[]; - extern const char kWebrtcUseMinMaxVEADimensionsDescription[]; - -+extern const char kAudioContextAPIEnabledName[]; -+extern const char kAudioContextAPIEnabledDescription[]; -+extern const char kAudioContextShuffleEnabledName[]; -+extern const char kAudioContextShuffleEnabledDescription[]; -+ - extern const char kWebUsbDeviceDetectionName[]; - extern const char kWebUsbDeviceDetectionDescription[]; - -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 -@@ -621,6 +621,11 @@ BASE_FEATURE(kWebRtcUseMinMaxVEADimensions, - #endif - ); - -+const base::Feature kAudioContextAPIEnabled { -+ "AudioContextAPIEnabled", base::FEATURE_ENABLED_BY_DEFAULT}; -+const base::Feature kAudioContextShuffleEnabled { -+ "AudioContextShuffleEnabled", base::FEATURE_ENABLED_BY_DEFAULT}; -+ - // Blink garbage collection. - // Enables compaction of backing stores on Blink's heap. - BASE_FEATURE(kBlinkHeapCompaction, -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 -@@ -247,6 +247,9 @@ BLINK_COMMON_EXPORT bool IsPlzDedicatedWorkerEnabled(); - - BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kWebRtcUseMinMaxVEADimensions); - -+BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kAudioContextAPIEnabled); -+BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kAudioContextShuffleEnabled); -+ - // Blink garbage collection. - BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kBlinkHeapCompaction); - BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kBlinkHeapConcurrentMarking); -diff --git a/third_party/blink/renderer/modules/webaudio/analyser_handler.h b/third_party/blink/renderer/modules/webaudio/analyser_handler.h ---- a/third_party/blink/renderer/modules/webaudio/analyser_handler.h -+++ b/third_party/blink/renderer/modules/webaudio/analyser_handler.h -@@ -40,17 +40,17 @@ class AnalyserHandler final : public AudioBasicInspectorHandler { - return analyser_.SmoothingTimeConstant(); - } - -- void GetFloatFrequencyData(DOMFloat32Array* array, double current_time) { -- analyser_.GetFloatFrequencyData(array, current_time); -+ void GetFloatFrequencyData(DOMFloat32Array* array, double current_time, ExceptionState& exception_state) { -+ analyser_.GetFloatFrequencyData(array, current_time, exception_state); - } -- void GetByteFrequencyData(DOMUint8Array* array, double current_time) { -- analyser_.GetByteFrequencyData(array, current_time); -+ void GetByteFrequencyData(DOMUint8Array* array, double current_time, ExceptionState& exception_state) { -+ analyser_.GetByteFrequencyData(array, current_time, exception_state); - } -- void GetFloatTimeDomainData(DOMFloat32Array* array) { -- analyser_.GetFloatTimeDomainData(array); -+ void GetFloatTimeDomainData(DOMFloat32Array* array, ExceptionState& exception_state) { -+ analyser_.GetFloatTimeDomainData(array, exception_state); - } -- void GetByteTimeDomainData(DOMUint8Array* array) { -- analyser_.GetByteTimeDomainData(array); -+ void GetByteTimeDomainData(DOMUint8Array* array, ExceptionState& exception_state) { -+ analyser_.GetByteTimeDomainData(array, exception_state); - } - - // AnalyserNode needs special handling when updating the pull status -diff --git a/third_party/blink/renderer/modules/webaudio/analyser_node.cc b/third_party/blink/renderer/modules/webaudio/analyser_node.cc ---- a/third_party/blink/renderer/modules/webaudio/analyser_node.cc -+++ b/third_party/blink/renderer/modules/webaudio/analyser_node.cc -@@ -117,22 +117,26 @@ double AnalyserNode::smoothingTimeConstant() const { - return GetAnalyserHandler().SmoothingTimeConstant(); - } - --void AnalyserNode::getFloatFrequencyData(NotShared array) { -+void AnalyserNode::getFloatFrequencyData(NotShared array, -+ ExceptionState& exception_state) { - GetAnalyserHandler().GetFloatFrequencyData(array.Get(), -- context()->currentTime()); -+ context()->currentTime(), exception_state); - } - --void AnalyserNode::getByteFrequencyData(NotShared array) { -+void AnalyserNode::getByteFrequencyData(NotShared array, -+ ExceptionState& exception_state) { - GetAnalyserHandler().GetByteFrequencyData(array.Get(), -- context()->currentTime()); -+ context()->currentTime(), exception_state); - } - --void AnalyserNode::getFloatTimeDomainData(NotShared array) { -- GetAnalyserHandler().GetFloatTimeDomainData(array.Get()); -+void AnalyserNode::getFloatTimeDomainData(NotShared array, -+ ExceptionState& exception_state) { -+ GetAnalyserHandler().GetFloatTimeDomainData(array.Get(), exception_state); - } - --void AnalyserNode::getByteTimeDomainData(NotShared array) { -- GetAnalyserHandler().GetByteTimeDomainData(array.Get()); -+void AnalyserNode::getByteTimeDomainData(NotShared array, -+ ExceptionState& exception_state) { -+ GetAnalyserHandler().GetByteTimeDomainData(array.Get(), exception_state); - } - - void AnalyserNode::ReportDidCreate() { -diff --git a/third_party/blink/renderer/modules/webaudio/analyser_node.h b/third_party/blink/renderer/modules/webaudio/analyser_node.h ---- a/third_party/blink/renderer/modules/webaudio/analyser_node.h -+++ b/third_party/blink/renderer/modules/webaudio/analyser_node.h -@@ -57,10 +57,10 @@ class AnalyserNode final : public AudioBasicInspectorNode { - double maxDecibels() const; - void setSmoothingTimeConstant(double, ExceptionState&); - double smoothingTimeConstant() const; -- void getFloatFrequencyData(NotShared); -- void getByteFrequencyData(NotShared); -- void getFloatTimeDomainData(NotShared); -- void getByteTimeDomainData(NotShared); -+ void getFloatFrequencyData(NotShared, ExceptionState&); -+ void getByteFrequencyData(NotShared, ExceptionState&); -+ void getFloatTimeDomainData(NotShared, ExceptionState&); -+ void getByteTimeDomainData(NotShared, ExceptionState&); - - // InspectorHelperMixin - void ReportDidCreate() final; -diff --git a/third_party/blink/renderer/modules/webaudio/analyser_node.idl b/third_party/blink/renderer/modules/webaudio/analyser_node.idl ---- a/third_party/blink/renderer/modules/webaudio/analyser_node.idl -+++ b/third_party/blink/renderer/modules/webaudio/analyser_node.idl -@@ -40,10 +40,10 @@ - - // Copies the current frequency data into the passed array. - // If the array has fewer elements than the frequencyBinCount, the excess elements will be dropped. -- //[HighEntropy, Measure] void getFloatFrequencyData(Float32Array array); -- //[HighEntropy, Measure] void getByteFrequencyData(Uint8Array array); -+ [HighEntropy, Measure, RaisesException] void getFloatFrequencyData(Float32Array array); -+ [HighEntropy, Measure, RaisesException] void getByteFrequencyData(Uint8Array array); - - // Real-time waveform data -- //[HighEntropy, Measure] void getFloatTimeDomainData(Float32Array array); -- //[HighEntropy, Measure] void getByteTimeDomainData(Uint8Array array); -+ [HighEntropy, Measure, RaisesException] void getFloatTimeDomainData(Float32Array array); -+ [HighEntropy, Measure, RaisesException] void getByteTimeDomainData(Uint8Array array); - }; -diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.cc b/third_party/blink/renderer/modules/webaudio/audio_buffer.cc ---- a/third_party/blink/renderer/modules/webaudio/audio_buffer.cc -+++ b/third_party/blink/renderer/modules/webaudio/audio_buffer.cc -@@ -29,6 +29,7 @@ - #include "third_party/blink/renderer/modules/webaudio/audio_buffer.h" - - #include -+#include "third_party/blink/public/common/features.h" - #include "third_party/blink/renderer/bindings/modules/v8/v8_audio_buffer_options.h" - #include "third_party/blink/renderer/modules/webaudio/base_audio_context.h" - #include "third_party/blink/renderer/platform/audio/audio_bus.h" -@@ -197,8 +198,14 @@ AudioBuffer::AudioBuffer(AudioBus* bus) - } - - NotShared AudioBuffer::getChannelData( -+ ScriptState* script_state, - unsigned channel_index, - ExceptionState& exception_state) { -+ if (!base::FeatureList::IsEnabled(features::kAudioContextAPIEnabled)) { -+ exception_state.ThrowDOMException( -+ DOMExceptionCode::kNotSupportedError, "getChannelData() is unavailable"); -+ return NotShared(nullptr); -+ } - if (channel_index >= channels_.size()) { - exception_state.ThrowDOMException( - DOMExceptionCode::kIndexSizeError, -@@ -208,7 +215,16 @@ NotShared AudioBuffer::getChannelData( - return NotShared(nullptr); - } - -- return getChannelData(channel_index); -+ NotShared array = getChannelData(channel_index); -+ DOMFloat32Array* destination_array = array.Get(); -+ size_t len = destination_array->length(); -+ if (len > 0) { -+ float* destination = destination_array->Data(); -+ for (unsigned i = 0; i < len; ++i) { -+ destination[i] = BaseAudioContext::ShuffleAudioData(destination[i], i); -+ } -+ } -+ return array; - } - - NotShared AudioBuffer::getChannelData(unsigned channel_index) { -@@ -219,13 +235,20 @@ NotShared AudioBuffer::getChannelData(unsigned channel_index) { - return NotShared(channels_[channel_index].Get()); - } - --void AudioBuffer::copyFromChannel(NotShared destination, -+void AudioBuffer::copyFromChannel(ScriptState* script_state, -+ NotShared destination, - int32_t channel_number, - ExceptionState& exception_state) { -- return copyFromChannel(destination, channel_number, 0, exception_state); -+ if (!base::FeatureList::IsEnabled(features::kAudioContextAPIEnabled)) { -+ exception_state.ThrowDOMException( -+ DOMExceptionCode::kNotSupportedError, "copyFromChannel() is unavailable"); -+ return; -+ } -+ return copyFromChannel(script_state, destination, channel_number, 0, exception_state); - } - --void AudioBuffer::copyFromChannel(NotShared destination, -+void AudioBuffer::copyFromChannel(ScriptState* script_state, -+ NotShared destination, - int32_t channel_number, - size_t buffer_offset, - ExceptionState& exception_state) { -@@ -264,6 +287,9 @@ void AudioBuffer::copyFromChannel(NotShared destination, - DCHECK_LE(buffer_offset + count, data_length); - - memmove(dst, src + buffer_offset, count * sizeof(*src)); -+ for (unsigned i = 0; i < count; i++) { -+ dst[i] = BaseAudioContext::ShuffleAudioData(dst[i], i); -+ } - } - - void AudioBuffer::copyToChannel(NotShared source, -diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.h b/third_party/blink/renderer/modules/webaudio/audio_buffer.h ---- a/third_party/blink/renderer/modules/webaudio/audio_buffer.h -+++ b/third_party/blink/renderer/modules/webaudio/audio_buffer.h -@@ -44,6 +44,7 @@ class AudioBus; - class AudioBufferOptions; - class ExceptionState; - class SharedAudioBuffer; -+class ScriptState; - - class MODULES_EXPORT AudioBuffer final : public ScriptWrappable { - DEFINE_WRAPPERTYPEINFO(); -@@ -88,13 +89,13 @@ class MODULES_EXPORT AudioBuffer final : public ScriptWrappable { - - // Channel data access - unsigned numberOfChannels() const { return channels_.size(); } -- NotShared getChannelData(unsigned channel_index, -+ NotShared getChannelData(ScriptState*, unsigned channel_index, - ExceptionState&); - NotShared getChannelData(unsigned channel_index); -- void copyFromChannel(NotShared, -+ void copyFromChannel(ScriptState*, NotShared, - int32_t channel_number, - ExceptionState&); -- void copyFromChannel(NotShared, -+ void copyFromChannel(ScriptState*, NotShared, - int32_t channel_number, - size_t buffer_offset, - ExceptionState&); -diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl b/third_party/blink/renderer/modules/webaudio/audio_buffer.idl ---- a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl -+++ b/third_party/blink/renderer/modules/webaudio/audio_buffer.idl -@@ -37,6 +37,12 @@ - - // Channel access - readonly attribute unsigned long numberOfChannels; -+ [CallWith=ScriptState, HighEntropy=Direct, Measure, RaisesException] Float32Array getChannelData( -+ unsigned long channelIndex); -+ [CallWith=ScriptState, HighEntropy, Measure, RaisesException] void copyFromChannel( -+ Float32Array destination, -+ unsigned long channelNumber, -+ optional unsigned long bufferOffset = 0); - [RaisesException] void copyToChannel( - Float32Array source, - unsigned long channelNumber, -diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/third_party/blink/renderer/modules/webaudio/audio_context.cc ---- a/third_party/blink/renderer/modules/webaudio/audio_context.cc -+++ b/third_party/blink/renderer/modules/webaudio/audio_context.cc -@@ -10,6 +10,7 @@ - #include "services/metrics/public/cpp/ukm_builders.h" - #include "services/metrics/public/cpp/ukm_recorder.h" - #include "third_party/blink/public/common/browser_interface_broker_proxy.h" -+#include "third_party/blink/public/common/features.h" - #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" -@@ -508,6 +509,10 @@ double AudioContext::baseLatency() const { - DCHECK(IsMainThread()); - DCHECK(destination()); - -+ if (!base::FeatureList::IsEnabled(features::kAudioContextShuffleEnabled) && -+ !base::FeatureList::IsEnabled(features::kAudioContextAPIEnabled)) { -+ return base_latency_; -+ } - // remove precision past two decimal digits - int l = base_latency_ * 100; - return double(l)/100; -diff --git a/third_party/blink/renderer/modules/webaudio/base_audio_context.cc b/third_party/blink/renderer/modules/webaudio/base_audio_context.cc ---- a/third_party/blink/renderer/modules/webaudio/base_audio_context.cc -+++ b/third_party/blink/renderer/modules/webaudio/base_audio_context.cc -@@ -29,6 +29,7 @@ - - #include "base/metrics/histogram_functions.h" - #include "build/build_config.h" -+#include "third_party/blink/public/common/features.h" - #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" -@@ -702,6 +703,17 @@ Document* BaseAudioContext::GetDocument() const { - return window ? window->document() : nullptr; - } - -+/*static*/ -+float BaseAudioContext::ShuffleAudioData(float data, unsigned index) { -+ if (base::FeatureList::IsEnabled(features::kAudioContextShuffleEnabled)) { -+ float rnd = 1.0f + -+ (base::RandDouble() / 10000.0) * -+ (base::RandInt(0,10) > 5 ? 1.f : -1.f); -+ return data * rnd; -+ } -+ return data; -+} -+ - void BaseAudioContext::NotifySourceNodeStartedProcessing(AudioNode* node) { - DCHECK(IsMainThread()); - GraphAutoLocker locker(this); -diff --git a/third_party/blink/renderer/modules/webaudio/base_audio_context.h b/third_party/blink/renderer/modules/webaudio/base_audio_context.h ---- a/third_party/blink/renderer/modules/webaudio/base_audio_context.h -+++ b/third_party/blink/renderer/modules/webaudio/base_audio_context.h -@@ -338,6 +338,8 @@ class MODULES_EXPORT BaseAudioContext - // if the execution context does not exist. - bool CheckExecutionContextAndThrowIfNecessary(ExceptionState&); - -+ static float ShuffleAudioData(float data, unsigned index); -+ - protected: - enum ContextType { kRealtimeContext, kOfflineContext }; - -diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc ---- a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc -+++ b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc -@@ -29,6 +29,9 @@ - #include - #include - -+#include "third_party/blink/public/common/features.h" -+#include "third_party/blink/renderer/modules/webaudio/realtime_analyser.h" -+#include "third_party/blink/renderer/modules/webaudio/base_audio_context.h" - #include "third_party/blink/renderer/platform/audio/audio_bus.h" - #include "third_party/blink/renderer/platform/audio/audio_utilities.h" - #include "third_party/blink/renderer/platform/audio/vector_math.h" -@@ -95,10 +98,17 @@ bool RealtimeAnalyser::SetFftSize(uint32_t size) { - } - - void RealtimeAnalyser::GetFloatFrequencyData(DOMFloat32Array* destination_array, -- double current_time) { -+ double current_time, -+ ExceptionState& exception_state) { - DCHECK(IsMainThread()); - DCHECK(destination_array); - -+ if (!base::FeatureList::IsEnabled(features::kAudioContextAPIEnabled)) { -+ exception_state.ThrowDOMException( -+ DOMExceptionCode::kNotSupportedError, "GetFloatFrequencyData() is unavailable"); -+ return; -+ } -+ - if (current_time <= last_analysis_time_) { - ConvertFloatToDb(destination_array); - return; -@@ -112,10 +122,17 @@ void RealtimeAnalyser::GetFloatFrequencyData(DOMFloat32Array* destination_array, - } - - void RealtimeAnalyser::GetByteFrequencyData(DOMUint8Array* destination_array, -- double current_time) { -+ double current_time, -+ ExceptionState& exception_state) { - DCHECK(IsMainThread()); - DCHECK(destination_array); - -+ if (!base::FeatureList::IsEnabled(features::kAudioContextAPIEnabled)) { -+ exception_state.ThrowDOMException( -+ DOMExceptionCode::kNotSupportedError, "GetByteFrequencyData() is unavailable"); -+ return; -+ } -+ - if (current_time <= last_analysis_time_) { - // FIXME: Is it worth caching the data so we don't have to do the conversion - // every time? Perhaps not, since we expect many calls in the same -@@ -132,10 +149,17 @@ void RealtimeAnalyser::GetByteFrequencyData(DOMUint8Array* destination_array, - } - - void RealtimeAnalyser::GetFloatTimeDomainData( -- DOMFloat32Array* destination_array) { -+ DOMFloat32Array* destination_array, -+ ExceptionState& exception_state) { - DCHECK(IsMainThread()); - DCHECK(destination_array); - -+ if (!base::FeatureList::IsEnabled(features::kAudioContextAPIEnabled)) { -+ exception_state.ThrowDOMException( -+ DOMExceptionCode::kNotSupportedError, "GetFloatTimeDomainData() is unavailable"); -+ return; -+ } -+ - unsigned fft_size = FftSize(); - size_t len = - std::min(static_cast(fft_size), destination_array->length()); -@@ -154,15 +178,23 @@ void RealtimeAnalyser::GetFloatTimeDomainData( - input_buffer[(i + write_index - fft_size + kInputBufferSize) % - kInputBufferSize]; - -+ value = BaseAudioContext::ShuffleAudioData(value, i); - destination[i] = value; - } - } - } - --void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) { -+void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array, -+ ExceptionState& exception_state) { - DCHECK(IsMainThread()); - DCHECK(destination_array); - -+ if (!base::FeatureList::IsEnabled(features::kAudioContextAPIEnabled)) { -+ exception_state.ThrowDOMException( -+ DOMExceptionCode::kNotSupportedError, "GetByteTimeDomainData() is unavailable"); -+ return; -+ } -+ - unsigned fft_size = FftSize(); - size_t len = - std::min(static_cast(fft_size), destination_array->length()); -@@ -181,6 +213,8 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) { - input_buffer[(i + write_index - fft_size + kInputBufferSize) % - kInputBufferSize]; - -+ value = BaseAudioContext::ShuffleAudioData(value, i); -+ - // Scale from nominal -1 -> +1 to unsigned byte. - double scaled_value = 128 * (value + 1); - -@@ -308,6 +342,8 @@ void RealtimeAnalyser::ConvertToByteData(DOMUint8Array* destination_array) { - double scaled_value = - UCHAR_MAX * (db_mag - min_decibels) * range_scale_factor; - -+ scaled_value = BaseAudioContext::ShuffleAudioData(scaled_value, i); -+ - // Clip to valid range. - if (scaled_value < 0) { - scaled_value = 0; -@@ -333,6 +369,7 @@ void RealtimeAnalyser::ConvertFloatToDb(DOMFloat32Array* destination_array) { - float linear_value = source[i]; - double db_mag = audio_utilities::LinearToDecibels(linear_value); - destination[i] = static_cast(db_mag); -+ destination[i] = BaseAudioContext::ShuffleAudioData(destination[i], i); - } - } - } -diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.h b/third_party/blink/renderer/modules/webaudio/realtime_analyser.h ---- a/third_party/blink/renderer/modules/webaudio/realtime_analyser.h -+++ b/third_party/blink/renderer/modules/webaudio/realtime_analyser.h -@@ -32,6 +32,8 @@ - #include "third_party/blink/renderer/core/typed_arrays/dom_typed_array.h" - #include "third_party/blink/renderer/platform/audio/audio_array.h" - #include "third_party/blink/renderer/platform/audio/fft_frame.h" -+#include "third_party/blink/renderer/platform/bindings/exception_messages.h" -+#include "third_party/blink/renderer/platform/bindings/exception_state.h" - - namespace blink { - -@@ -71,10 +73,10 @@ class RealtimeAnalyser final { - void SetSmoothingTimeConstant(double k) { smoothing_time_constant_ = k; } - double SmoothingTimeConstant() const { return smoothing_time_constant_; } - -- void GetFloatFrequencyData(DOMFloat32Array*, double); -- void GetByteFrequencyData(DOMUint8Array*, double); -- void GetFloatTimeDomainData(DOMFloat32Array*); -- void GetByteTimeDomainData(DOMUint8Array*); -+ void GetFloatFrequencyData(DOMFloat32Array*, double, ExceptionState&); -+ void GetByteFrequencyData(DOMUint8Array*, double, ExceptionState&); -+ void GetFloatTimeDomainData(DOMFloat32Array*, ExceptionState&); -+ void GetByteTimeDomainData(DOMUint8Array*, ExceptionState&); - - // The audio thread writes input data here. - void WriteInput(AudioBus*, uint32_t frames_to_process); --- -2.25.1 diff --git a/build/patches/00Add-bookmark-import-export-actions--win-fixup-.patch b/build/patches/00Add-bookmark-import-export-actions--win-fixup-.patch index 7c517183..14ba7432 100644 --- a/build/patches/00Add-bookmark-import-export-actions--win-fixup-.patch +++ b/build/patches/00Add-bookmark-import-export-actions--win-fixup-.patch @@ -13,7 +13,7 @@ Subject: Add bookmark import/export actions (win fixup) diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3632,6 +3632,8 @@ static_library("browser") { +@@ -3630,6 +3630,8 @@ static_library("browser") { "badging/badge_manager_factory.h", "banners/app_banner_manager_desktop.cc", "banners/app_banner_manager_desktop.h", @@ -25,7 +25,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -9145,11 +9145,13 @@ const FeatureEntry kFeatureEntries[] = { +@@ -9138,11 +9138,13 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(net::features::kIsCleartextPermitted)}, #endif diff --git a/build/patches/00Add-flag-to-configure-maximum-connecti--win-fixup-.patch b/build/patches/00Add-flag-to-configure-maximum-connecti--win-fixup-.patch index 2a8acc2d..18c4ca5f 100644 --- a/build/patches/00Add-flag-to-configure-maximum-connecti--win-fixup-.patch +++ b/build/patches/00Add-flag-to-configure-maximum-connecti--win-fixup-.patch @@ -9,7 +9,7 @@ Subject: Add flag to configure maximum connecti (win fixup) 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 -@@ -1070,10 +1070,12 @@ const FeatureEntry::Choice kForceColorProfileChoices[] = { +@@ -1064,10 +1064,12 @@ const FeatureEntry::Choice kForceColorProfileChoices[] = { switches::kForceDisplayColorProfile, "hdr10"}, }; diff --git a/build/patches/00Add-flag-to-disable-IPv6-probes--win-fixup-.patch b/build/patches/00Add-flag-to-disable-IPv6-probes--win-fixup-.patch index 1ec0476e..8c5e3b30 100644 --- a/build/patches/00Add-flag-to-disable-IPv6-probes--win-fixup-.patch +++ b/build/patches/00Add-flag-to-disable-IPv6-probes--win-fixup-.patch @@ -10,14 +10,12 @@ Subject: Add flag to disable IPv6 probes (win fixup) net/base/features.cc | 4 ++++ net/base/features.h | 3 +++ net/dns/host_resolver_manager.cc | 2 +- - services/network/public/cpp/features.cc | 4 ---- - services/network/public/cpp/features.h | 2 -- - 9 files changed, 11 insertions(+), 16 deletions(-) + 7 files changed, 11 insertions(+), 10 deletions(-) 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 -@@ -6098,7 +6098,7 @@ const FeatureEntry kFeatureEntries[] = { +@@ -6087,7 +6087,7 @@ const FeatureEntry kFeatureEntries[] = { {"ipv6-probing", flag_descriptions::kIPv6ProbingName, flag_descriptions::kIPv6ProbingDescription, kOsAll, @@ -102,7 +100,7 @@ diff --git a/net/base/features.h b/net/base/features.h kUseDnsHttpsSvcbEnforceSecureResponse; +// Enable IPv6 ping probes to RIPE DNS. -+NET_EXPORT extern const base::Feature kIPv6Probing; ++NET_EXPORT BASE_DECLARE_FEATURE(kIPv6Probing); + // If we are still waiting for an HTTPS transaction after all the // other transactions in an insecure DnsTask have completed, we will compute a @@ -119,31 +117,5 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc // pretend IPv6 connectivy probe is successful when probing is disabled SetLastIPv6ProbeResult(true); } else { -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 -@@ -42,10 +42,6 @@ BASE_FEATURE(kThrottleDelayable, - "ThrottleDelayable", - base::FEATURE_ENABLED_BY_DEFAULT); - --// Enable IPv6 ping probes to RIPE DNS. --const base::Feature kIPv6Probing{"IPv6Probing", -- base::FEATURE_ENABLED_BY_DEFAULT}; -- - // When kPriorityRequestsDelayableOnSlowConnections is enabled, HTTP - // requests fetched from a SPDY/QUIC/H2 proxies can be delayed by the - // ResourceScheduler just as HTTP/1.1 resources are. However, requests from such -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 -@@ -48,8 +48,6 @@ COMPONENT_EXPORT(NETWORK_CPP) - extern const base::FeatureParam - kTrustTokenOperationsRequiringOriginTrial; - COMPONENT_EXPORT(NETWORK_CPP) --extern const base::Feature kIPv6Probing; --COMPONENT_EXPORT(NETWORK_CPP) - extern const base::FeatureParam kPlatformProvidedTrustTokenIssuance; - - COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kEnableSaveDataHeader); -- 2.25.1 diff --git a/build/patches/00Add-flag-to-disable-external-intent-re--win-fixup-.patch b/build/patches/00Add-flag-to-disable-external-intent-re--win-fixup-.patch index 48e14cb2..80323bb4 100644 --- a/build/patches/00Add-flag-to-disable-external-intent-re--win-fixup-.patch +++ b/build/patches/00Add-flag-to-disable-external-intent-re--win-fixup-.patch @@ -9,7 +9,7 @@ Subject: Add flag to disable external intent re (win fixup) 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 -@@ -3628,9 +3628,11 @@ const FeatureEntry kFeatureEntries[] = { +@@ -3621,9 +3621,11 @@ const FeatureEntry kFeatureEntries[] = { {"ui-disable-partial-swap", flag_descriptions::kUiPartialSwapName, flag_descriptions::kUiPartialSwapDescription, kOsAll, SINGLE_DISABLE_VALUE_TYPE(switches::kUIDisablePartialSwap)}, diff --git a/build/patches/00Add-menu-item-to-view-source--add-fixup-.patch b/build/patches/00Add-menu-item-to-view-source--add-fixup-.patch deleted file mode 100644 index 57a0a865..00000000 --- a/build/patches/00Add-menu-item-to-view-source--add-fixup-.patch +++ /dev/null @@ -1,29 +0,0 @@ -From: Your Name -Date: Mon, 7 Nov 2022 16:10:21 +0000 -Subject: Add menu item to view source (add fixup) - ---- - .../app/appmenu/AppMenuPropertiesDelegateImpl.java | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -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 -@@ -1212,8 +1212,13 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate - protected void updateViewSourceMenuItem( - Menu menu, Tab currentTab) { - MenuItem viewSourceMenuItem = menu.findItem(R.id.view_source_id); -- String url = currentTab.getUrl().getSpec(); -- viewSourceMenuItem.setVisible(!url.isEmpty() && !url.startsWith("view-source:")); -+ if (currentTab != null) { -+ String url = currentTab.getUrl().getSpec(); -+ viewSourceMenuItem.setVisible(!url.isEmpty() && !url.startsWith("view-source:")); -+ } else { -+ // currentTab maybe null with start surface -+ viewSourceMenuItem.setVisible(false); -+ } - } - - /** --- -2.25.1 diff --git a/build/patches/00Add-webRTC-site-settings--win-fixup-.patch b/build/patches/00Add-webRTC-site-settings--win-fixup-.patch index c977238d..4f351b22 100644 --- a/build/patches/00Add-webRTC-site-settings--win-fixup-.patch +++ b/build/patches/00Add-webRTC-site-settings--win-fixup-.patch @@ -17,8 +17,7 @@ Subject: Add webRTC site settings (win fixup) .../views/page_info/page_info_view_factory.cc | 3 +++ .../settings_localized_strings_provider.cc | 7 ++++++ .../ui/webui/settings/site_settings_helper.cc | 1 + - .../core/browser/content_settings_registry.cc | 2 +- - 15 files changed, 76 insertions(+), 1 deletion(-) + 14 files changed, 75 insertions(+) diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp --- a/chrome/app/settings_strings.grdp @@ -236,17 +235,5 @@ diff --git a/chrome/browser/ui/webui/settings/site_settings_helper.cc b/chrome/b // Add new content settings here if a corresponding Javascript string // representation for it is not required, for example if the content setting -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 -@@ -709,7 +709,7 @@ void ContentSettingsRegistry::Init() { - ValidSettings(CONTENT_SETTING_ALLOW, - CONTENT_SETTING_BLOCK), - WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, -- WebsiteSettingsRegistry::PLATFORM_ANDROID, -+ WebsiteSettingsRegistry::ALL_PLATFORMS, - ContentSettingsInfo::INHERIT_IN_INCOGNITO, - ContentSettingsInfo::PERSISTENT, - ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS, -- 2.25.1 diff --git a/build/patches/00Always-open-browser-controls-in-new-tab.patch b/build/patches/00Always-open-browser-controls-in-new-tab.patch new file mode 100644 index 00000000..815e5df2 --- /dev/null +++ b/build/patches/00Always-open-browser-controls-in-new-tab.patch @@ -0,0 +1,45 @@ +From: Your Name +Date: Wed, 28 Dec 2022 07:19:58 +0000 +Subject: Always open browser controls in new tab + +--- + .../chrome/browser/tab/TabContextMenuItemDelegate.java | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabContextMenuItemDelegate.java +@@ -19,6 +19,7 @@ import org.chromium.base.IntentUtils; + import org.chromium.base.PackageManagerUtils; + import org.chromium.base.metrics.RecordUserAction; + import org.chromium.base.supplier.Supplier; ++import org.chromium.cc.input.BrowserControlsState; + import org.chromium.chrome.browser.DefaultBrowserInfo; + import org.chromium.chrome.browser.IntentHandler; + import org.chromium.chrome.browser.bookmarks.BookmarkModel; +@@ -33,6 +34,7 @@ import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; + import org.chromium.chrome.browser.offlinepages.OfflinePageBridge; + import org.chromium.chrome.browser.offlinepages.RequestCoordinatorBridge; + import org.chromium.chrome.browser.profiles.Profile; ++import org.chromium.chrome.browser.tab.TabBrowserControlsConstraintsHelper; + import org.chromium.chrome.browser.tab.state.CriticalPersistedTabData; + import org.chromium.chrome.browser.tabmodel.TabModelSelector; + import org.chromium.chrome.browser.tabmodel.document.TabDelegate; +@@ -202,6 +204,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { + + @Override + public void onOpenInNewTab(GURL url, Referrer referrer, boolean navigateToTab) { ++ TabBrowserControlsConstraintsHelper.get(mTab).update(BrowserControlsState.SHOWN, true); + RecordUserAction.record("MobileNewTabOpened"); + RecordUserAction.record("LinkOpenedInNewTab"); + LoadUrlParams loadUrlParams = new LoadUrlParams(url.getSpec()); +@@ -214,6 +217,7 @@ public class TabContextMenuItemDelegate implements ContextMenuItemDelegate { + + @Override + public void onOpenInNewTabInGroup(GURL url, Referrer referrer) { ++ TabBrowserControlsConstraintsHelper.get(mTab).update(BrowserControlsState.SHOWN, true); + RecordUserAction.record("MobileNewTabOpened"); + RecordUserAction.record("LinkOpenedInNewTab"); + LoadUrlParams loadUrlParams = new LoadUrlParams(url.getSpec()); +-- +2.25.1 diff --git a/build/patches/00Client-hints-overrides--add-fixup-.patch b/build/patches/00Client-hints-overrides--add-fixup-.patch new file mode 100644 index 00000000..5e67c1f3 --- /dev/null +++ b/build/patches/00Client-hints-overrides--add-fixup-.patch @@ -0,0 +1,24 @@ +From: Your Name +Date: Sun, 18 Dec 2022 16:38:48 +0000 +Subject: Client hints overrides (add fixup) + +--- + .../blink/renderer/platform/runtime_enabled_features.json5 | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +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 +@@ -2716,8 +2716,8 @@ + public: true, + }, + { +- name: "UserAgentClientHint", +- status: "stable", ++ name: "UserAgentClientHint", // always disabled ++ status: "experimental", // in bromite + base_feature: "UserAgentClientHint", + }, + { +-- +2.25.1 diff --git a/build/patches/00Client-hints-overrides--win-fixup-.patch b/build/patches/00Client-hints-overrides--win-fixup-.patch deleted file mode 100644 index 7ab7a3de..00000000 --- a/build/patches/00Client-hints-overrides--win-fixup-.patch +++ /dev/null @@ -1,26 +0,0 @@ -From: Your Name -Date: Thu, 13 Oct 2022 10:33:34 +0000 -Subject: Client hints overrides (win fixup) - ---- - content/common/user_agent.cc | 6 +++++- - 1 file changed, 5 insertions(+), 1 deletion(-) - -diff --git a/content/common/user_agent.cc b/content/common/user_agent.cc ---- a/content/common/user_agent.cc -+++ b/content/common/user_agent.cc -@@ -323,7 +323,11 @@ std::string BuildUserAgentFromProduct(const std::string& product) { - } - - std::string BuildModelInfo() { -- return "SAMSUNG SM-G960U"; -+ std::string model; -+#if BUILDFLAG(IS_ANDROID) -+ model = "SAMSUNG SM-G960U"; -+#endif -+ return model; - } - - #if BUILDFLAG(IS_ANDROID) --- -2.25.1 diff --git a/build/patches/00Disable-fetching-of-all-field-trials--add-fixup-.patch b/build/patches/00Disable-fetching-of-all-field-trials--add-fixup-.patch index 323f1221..5cd0304f 100644 --- a/build/patches/00Disable-fetching-of-all-field-trials--add-fixup-.patch +++ b/build/patches/00Disable-fetching-of-all-field-trials--add-fixup-.patch @@ -6,8 +6,10 @@ Subject: Disable fetching of all field trials (add fixup) chrome/browser/net/system_network_context_manager.cc | 1 - components/variations/net/BUILD.gn | 2 -- content/browser/loader/url_loader_throttles.cc | 2 -- + content/browser/origin_trials/origin_trials_utils.cc | 2 +- + content/public/common/content_features.cc | 4 ++-- content/renderer/variations_render_thread_observer.cc | 9 --------- - 4 files changed, 14 deletions(-) + 6 files changed, 3 insertions(+), 17 deletions(-) diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc --- a/chrome/browser/net/system_network_context_manager.cc @@ -44,6 +46,32 @@ diff --git a/content/browser/loader/url_loader_throttles.cc b/content/browser/lo ClientHintsControllerDelegate* client_hint_delegate = browser_context->GetClientHintsControllerDelegate(); +diff --git a/content/browser/origin_trials/origin_trials_utils.cc b/content/browser/origin_trials/origin_trials_utils.cc +--- a/content/browser/origin_trials/origin_trials_utils.cc ++++ b/content/browser/origin_trials/origin_trials_utils.cc +@@ -14,7 +14,7 @@ namespace { + std::vector GetHeaderValues( + base::StringPiece header_name, + const net::HttpResponseHeaders* headers) { +- if (!headers) { ++ if ((true)) { + return {}; + } + size_t iter = 0; +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 +@@ -773,8 +773,8 @@ BASE_FEATURE(kPepperCrossOriginRedirectRestriction, + // things before receiving the response, for instance it can affect the next + // navigation's network request. + BASE_FEATURE(kPersistentOriginTrials, +- "PersistentOriginTrials", +- base::FEATURE_DISABLED_BY_DEFAULT); ++ "PersistentOriginTrials", // always disabled ++ base::FEATURE_DISABLED_BY_DEFAULT); // in bromite + + // A browser-side equivalent of the Blink feature "DocumentPictureInPictureAPI". + // This is used for sanity checks to ensure that the feature can't be enabled by diff --git a/content/renderer/variations_render_thread_observer.cc b/content/renderer/variations_render_thread_observer.cc --- a/content/renderer/variations_render_thread_observer.cc +++ b/content/renderer/variations_render_thread_observer.cc diff --git a/build/patches/00Disable-safe-browsing--win-fixup-.patch b/build/patches/00Disable-safe-browsing--win-fixup-.patch index 958e0814..2b8f743b 100644 --- a/build/patches/00Disable-safe-browsing--win-fixup-.patch +++ b/build/patches/00Disable-safe-browsing--win-fixup-.patch @@ -81,7 +81,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "//chrome/browser/share", "//chrome/browser/sharing:buildflags", "//chrome/browser/sharing/proto", -@@ -3771,10 +3764,6 @@ static_library("browser") { +@@ -3769,10 +3762,6 @@ static_library("browser") { "enterprise/connectors/analysis/content_analysis_dialog.h", "enterprise/connectors/analysis/content_analysis_downloads_delegate.cc", "enterprise/connectors/analysis/content_analysis_downloads_delegate.h", @@ -92,7 +92,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "enterprise/connectors/analysis/request_handler_base.cc", "enterprise/connectors/analysis/request_handler_base.h", "enterprise/connectors/common.cc", -@@ -8229,7 +8218,6 @@ static_library("test_support") { +@@ -8227,7 +8216,6 @@ static_library("test_support") { public_deps = [ ":browser", "//chrome/browser/profiles:profile", @@ -1038,16 +1038,16 @@ diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b // Retrieves and formats the saved passwords domains from signon_realms. std::vector GetMatchingDomains( const std::vector& -@@ -982,7 +982,7 @@ void ChromePasswordManagerClient::CheckProtectedPasswordEntry( +@@ -981,7 +981,7 @@ void ChromePasswordManagerClient::CheckProtectedPasswordEntry( + bool password_field_exists, uint64_t reused_password_hash, const std::string& domain) { - -#if !BUILDFLAG(IS_ANDROID) +#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_WIN) // If the webpage is not an extension page, do nothing. if (!GURL(domain).SchemeIs(kExtensionScheme)) { return; -@@ -1022,7 +1022,18 @@ void ChromePasswordManagerClient::CheckProtectedPasswordEntry( +@@ -1021,7 +1021,18 @@ void ChromePasswordManagerClient::CheckProtectedPasswordEntry( void ChromePasswordManagerClient::LogPasswordReuseDetectedEvent() { } diff --git a/build/patches/00Enable-ThirdPartyStoragePartitioning-flag.patch b/build/patches/00Enable-ThirdPartyStoragePartitioning-flag.patch deleted file mode 100644 index e36f09a2..00000000 --- a/build/patches/00Enable-ThirdPartyStoragePartitioning-flag.patch +++ /dev/null @@ -1,22 +0,0 @@ -From: Your Name -Date: Fri, 23 Sep 2022 11:24:45 +0000 -Subject: Enable ThirdPartyStoragePartitioning flag - ---- - net/base/features.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/net/base/features.cc b/net/base/features.cc ---- a/net/base/features.cc -+++ b/net/base/features.cc -@@ -366,7 +366,7 @@ const base::FeatureParam kStorageAccessAPIAutoDenyOutsideFPS{ - // by the top level site to reduce fingerprinting. - BASE_FEATURE(kThirdPartyStoragePartitioning, - "ThirdPartyStoragePartitioning", -- base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_ENABLED_BY_DEFAULT); - - BASE_FEATURE(kAlpsParsing, "AlpsParsing", base::FEATURE_ENABLED_BY_DEFAULT); - --- -2.25.1 diff --git a/build/patches/00Enable-kPostMessageDifferentPartitionSameOriginBlocked.patch b/build/patches/00Enable-kPostMessageDifferentPartitionSameOriginBlocked.patch new file mode 100644 index 00000000..b778af8f --- /dev/null +++ b/build/patches/00Enable-kPostMessageDifferentPartitionSameOriginBlocked.patch @@ -0,0 +1,22 @@ +From: Your Name +Date: Wed, 21 Dec 2022 13:44:39 +0000 +Subject: Enable kPostMessageDifferentPartitionSameOriginBlocked + +--- + third_party/blink/common/features.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +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 +@@ -1650,7 +1650,7 @@ const base::FeatureParam kDocumentMaxEventNodePathCachedEntries{ + + BASE_FEATURE(kPostMessageDifferentPartitionSameOriginBlocked, + "PostMessageDifferentPartitionSameOriginBlocked", +- base::FEATURE_DISABLED_BY_DEFAULT); ++ base::FEATURE_ENABLED_BY_DEFAULT); + + } // namespace features + } // namespace blink +-- +2.25.1 diff --git a/build/patches/00Experimental-user-scripts-support--win-fixup-.patch b/build/patches/00Experimental-user-scripts-support--win-fixup-.patch index 3db4095d..7a95a723 100644 --- a/build/patches/00Experimental-user-scripts-support--win-fixup-.patch +++ b/build/patches/00Experimental-user-scripts-support--win-fixup-.patch @@ -20,7 +20,7 @@ Subject: Experimental user scripts support (win fixup) diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3536,11 +3536,13 @@ static_library("browser") { +@@ -3534,11 +3534,13 @@ static_library("browser") { ] deps += [ "//chrome/android/modules/dev_ui/provider:native" ] } @@ -42,7 +42,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -7773,9 +7773,11 @@ const FeatureEntry kFeatureEntries[] = { +@@ -7762,9 +7762,11 @@ const FeatureEntry kFeatureEntries[] = { chromeos::features::kClipboardHistoryNudgeSessionReset)}, #endif // BUILDFLAG(IS_CHROMEOS_ASH) diff --git a/build/patches/00Eyeo-Adblock-Remove--fixup-.patch b/build/patches/00Eyeo-Adblock-Remove--fixup-.patch new file mode 100644 index 00000000..4009c8f3 --- /dev/null +++ b/build/patches/00Eyeo-Adblock-Remove--fixup-.patch @@ -0,0 +1,71 @@ +From: Your Name +Date: Wed, 28 Dec 2022 07:32:41 +0000 +Subject: Eyeo Adblock Remove (fixup) + +--- + third_party/blink/renderer/core/css/style_engine.cc | 8 ++++++++ + third_party/blink/renderer/core/css/style_engine.h | 1 + + .../blink/renderer/core/exported/web_document.cc | 13 ++++++++++--- + 3 files changed, 19 insertions(+), 3 deletions(-) + +diff --git a/third_party/blink/renderer/core/css/style_engine.cc b/third_party/blink/renderer/core/css/style_engine.cc +--- a/third_party/blink/renderer/core/css/style_engine.cc ++++ b/third_party/blink/renderer/core/css/style_engine.cc +@@ -503,6 +503,14 @@ void StyleEngine::UpdateActiveStyleSheetsInShadow( + } + } + ++bool StyleEngine::ActiveUserStyleSheetsContainsKey(const StyleSheetKey& injection_key) { ++ for (auto& sheet : injected_user_style_sheets_) ++ if (sheet.first == injection_key) ++ return true; ++ ++ return false; ++} ++ + void StyleEngine::UpdateActiveUserStyleSheets() { + DCHECK(user_style_dirty_); + +diff --git a/third_party/blink/renderer/core/css/style_engine.h b/third_party/blink/renderer/core/css/style_engine.h +--- a/third_party/blink/renderer/core/css/style_engine.h ++++ b/third_party/blink/renderer/core/css/style_engine.h +@@ -236,6 +236,7 @@ class CORE_EXPORT StyleEngine final : public GarbageCollected, + } + void ViewportStyleSettingChanged(); + ++ bool ActiveUserStyleSheetsContainsKey(const StyleSheetKey& injection_key); + void InjectSheet(const StyleSheetKey&, + StyleSheetContents*, + WebCssOrigin = WebCssOrigin::kAuthor); +diff --git a/third_party/blink/renderer/core/exported/web_document.cc b/third_party/blink/renderer/core/exported/web_document.cc +--- a/third_party/blink/renderer/core/exported/web_document.cc ++++ b/third_party/blink/renderer/core/exported/web_document.cc +@@ -272,6 +272,16 @@ WebStyleSheetKey WebDocument::InsertAbpElemhideStylesheet( + Document* document = Unwrap(); + DCHECK(document); + ++ const WebStyleSheetKey& injection_key = ++ key && !key->IsNull() ? *key : WebString::FromUTF8("abp"); ++ DCHECK(!injection_key.IsEmpty()); ++ ++ // Check if the css in already present ++ if (document->GetStyleEngine().ActiveUserStyleSheetsContainsKey(injection_key)) { ++ LOG(WARNING) << "[eyeo] Skip add css as already in collection"; ++ return injection_key; ++ } ++ + auto* parsed_sheet = MakeGarbageCollected( + MakeGarbageCollected(*document)); + parsed_sheet->ParseString(source_code); +@@ -293,9 +303,6 @@ WebStyleSheetKey WebDocument::InsertAbpElemhideStylesheet( + {SchedulingPolicy::DisableBackForwardCache()}); + } + +- const WebStyleSheetKey& injection_key = +- key && !key->IsNull() ? *key : GenerateStyleSheetKey(); +- DCHECK(!injection_key.IsEmpty()); + document->GetStyleEngine().InjectSheet(injection_key, parsed_sheet, origin); + return injection_key; + } +-- +2.25.1 diff --git a/build/patches/00Eyeo-Adblock.patch b/build/patches/00Eyeo-Adblock.patch index 00105aa8..5dec55d5 100644 --- a/build/patches/00Eyeo-Adblock.patch +++ b/build/patches/00Eyeo-Adblock.patch @@ -1111,7 +1111,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//components/autofill/android:autofill_java", "//components/autofill/android:prefeditor_autofill_java", "//components/autofill_assistant/android:public_dependencies_java", -@@ -1603,6 +1609,7 @@ if (current_toolchain == default_toolchain) { +@@ -1599,6 +1605,7 @@ if (current_toolchain == default_toolchain) { "//chrome/test/android:chrome_java_integration_test_support", "//chrome/test/android:chrome_java_test_pagecontroller", "//chrome/test/android/test_trusted_web_activity:test_trusted_web_activity_java", @@ -1119,7 +1119,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//components/autofill/android:autofill_java", "//components/autofill/android:prefeditor_autofill_java", "//components/autofill_assistant/android:public_dependencies_java", -@@ -4161,6 +4168,7 @@ group("jni_headers") { +@@ -4157,6 +4164,7 @@ group("jni_headers") { "//chrome/browser/ui/messages/android:jni_headers", "//chrome/browser/util:jni_headers", "//chrome/browser/webauthn/android:jni_headers", @@ -1293,7 +1293,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "android/android_theme_resources.h", "android/autocomplete/tab_matcher_android.cc", "android/autocomplete/tab_matcher_android.h", -@@ -3293,6 +3326,7 @@ static_library("browser") { +@@ -3291,6 +3324,7 @@ static_library("browser") { "webauthn/android/conditional_ui_delegate_android.cc", "webauthn/android/conditional_ui_delegate_android.h", ] diff --git a/build/patches/00Guard-for-user-agent-reduction--add-fixup-.patch b/build/patches/00Guard-for-user-agent-reduction--add-fixup-.patch new file mode 100644 index 00000000..41301b5f --- /dev/null +++ b/build/patches/00Guard-for-user-agent-reduction--add-fixup-.patch @@ -0,0 +1,67 @@ +From: Your Name +Date: Sun, 18 Dec 2022 16:37:43 +0000 +Subject: Guard for user-agent reduction (add fixup) + +--- + chrome/browser/chrome_content_browser_client.cc | 2 +- + content/common/user_agent.cc | 13 +++++-------- + .../platform/runtime_enabled_features.json5 | 3 ++- + 3 files changed, 8 insertions(+), 10 deletions(-) + +diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc +--- a/chrome/browser/chrome_content_browser_client.cc ++++ b/chrome/browser/chrome_content_browser_client.cc +@@ -1475,7 +1475,7 @@ void ChromeContentBrowserClient::RegisterProfilePrefs( + registry->RegisterIntegerPref( + prefs::kUserAgentReduction, + static_cast( +- embedder_support::UserAgentReductionEnterprisePolicyState::kDefault)); ++ embedder_support::UserAgentReductionEnterprisePolicyState::kForceEnabled)); + registry->RegisterBooleanPref(prefs::kOriginAgentClusterDefaultEnabled, true); + registry->RegisterIntegerPref( + prefs::kForceMajorVersionToMinorPositionInUserAgent, +diff --git a/content/common/user_agent.cc b/content/common/user_agent.cc +--- a/content/common/user_agent.cc ++++ b/content/common/user_agent.cc +@@ -323,14 +323,7 @@ std::string BuildUserAgentFromProduct(const std::string& product) { + } + + std::string BuildModelInfo() { +- std::string model; +-#if BUILDFLAG(IS_ANDROID) +- // Only send the model information if on the release build of Android, +- // matching user agent behaviour. +- if (base::SysInfo::GetAndroidBuildCodename() == "REL") +- model = base::SysInfo::HardwareModelName(); +-#endif +- return model; ++ return std::string(); + } + + #if BUILDFLAG(IS_ANDROID) +@@ -351,6 +344,10 @@ std::string GetAndroidOSInfo( + IncludeAndroidModel include_android_model) { + std::string android_info_str; + ++ // Do not send information about the device. ++ include_android_model = IncludeAndroidModel::Exclude; ++ include_android_build_number = IncludeAndroidBuildNumber::Exclude; ++ + // Send information about the device. + bool semicolon_inserted = false; + if (include_android_model == IncludeAndroidModel::Include) { +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 +@@ -2721,7 +2721,8 @@ + base_feature: "UserAgentClientHint", + }, + { +- name: "UserAgentReduction", ++ name: "UserAgentReduction", // always enabled ++ status: "stable", // in bromite + origin_trial_feature_name: "UserAgentReduction", + origin_trial_allows_third_party: true, + // iOS not included as it should not send a reduced User-Agent string. +-- +2.25.1 diff --git a/build/patches/00Move-navigation-bar-to-bottom--add-fixup-.patch b/build/patches/00Move-navigation-bar-to-bottom--add-fixup-.patch new file mode 100644 index 00000000..025eab80 --- /dev/null +++ b/build/patches/00Move-navigation-bar-to-bottom--add-fixup-.patch @@ -0,0 +1,146 @@ +From: Your Name +Date: Tue, 27 Dec 2022 16:58:28 +0000 +Subject: Move navigation bar to bottom (add fixup) + +--- + .../TabListContainerViewBinder.java | 4 -- + .../tab_management/TabListCoordinator.java | 69 ++++++++++++++++++- + .../tab_management/TabSwitcherMediator.java | 3 + + 3 files changed, 69 insertions(+), 7 deletions(-) + +diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerViewBinder.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerViewBinder.java +--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerViewBinder.java ++++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListContainerViewBinder.java +@@ -21,8 +21,6 @@ import androidx.recyclerview.widget.LinearLayoutManager; + import org.chromium.components.browser_ui.styles.ChromeColors; + import org.chromium.ui.modelutil.PropertyKey; + import org.chromium.ui.modelutil.PropertyModel; +-import org.chromium.chrome.browser.flags.CachedFeatureFlags; +-import org.chromium.chrome.browser.flags.ChromeFeatureList; + + /** + * ViewBinder for TabListRecyclerView. +@@ -59,8 +57,6 @@ class TabListContainerViewBinder { + params.topMargin = newTopMargin; + view.requestLayout(); + } else if (BOTTOM_CONTROLS_HEIGHT == propertyKey) { +- if (CachedFeatureFlags.isEnabled(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM)) +- return; + FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) view.getLayoutParams(); + params.bottomMargin = model.get(BOTTOM_CONTROLS_HEIGHT); + view.requestLayout(); +diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java +--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java ++++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListCoordinator.java +@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.tasks.tab_management; + import static org.chromium.chrome.browser.tasks.tab_management.TabListModel.CardProperties.CARD_TYPE; + + import android.content.Context; ++import android.content.res.Configuration; + import android.content.res.Resources; + import android.graphics.Bitmap; + import android.graphics.BitmapFactory; +@@ -98,6 +99,62 @@ public class TabListCoordinator + private boolean mLayoutListenerRegistered; + private @Nullable TabStripSnapshotter mTabStripSnapshotter; + ++ public class GridLayoutManagerDockBottom extends GridLayoutManager { ++ Context mContext; ++ ++ TabListRecyclerView mRecyclerView; ++ ++ int mTopPadding = -1; ++ int mLastPosition = -1; ++ boolean mIsFirstLayout = true; ++ ++ public GridLayoutManagerDockBottom(Context context, int spanCount) { ++ super(context, spanCount); ++ mContext = context; ++ } ++ ++ public void setTabListRecyclerView(TabListRecyclerView recyclerView) { ++ mRecyclerView = recyclerView; ++ } ++ ++ public void ResetTopPosition() { ++ mIsFirstLayout = true; ++ } ++ ++ @Override ++ public int getPaddingTop() { ++ if (mContext.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) ++ return 0; ++ if (mTopPadding == -1) return super.getPaddingTop(); ++ return mTopPadding; ++ } ++ ++ @Override ++ public void scrollToPositionWithOffset(int position, int offset) { ++ mLastPosition = position; ++ super.scrollToPositionWithOffset(position, -1); ++ } ++ ++ @Override ++ public void onLayoutCompleted(RecyclerView.State state) { ++ super.onLayoutCompleted(state); ++ ++ View lastView = findViewByPosition(findFirstVisibleItemPosition()); ++ if (lastView != null) { ++ mTopPadding = mRecyclerView.getHeight() - lastView.getHeight(); ++ if (mIsFirstLayout) { ++ mIsFirstLayout = false; ++ scrollToPositionWithOffset(mLastPosition, 0); ++ } ++ } ++ ++ if (mLastPosition != -1 && mLastPosition >= state.getItemCount()) { ++ ResetTopPosition(); ++ scrollToPositionWithOffset(state.getItemCount()-getSpanCount(), 0); ++ } ++ } ++ } ++ + /** + * Construct a coordinator for UI that shows a list of tabs. + * @param mode Modes of showing the list of tabs. Can be used in GRID or STRIP. +@@ -258,9 +315,12 @@ public class TabListCoordinator + if (mMode == TabListMode.GRID) { + GridLayoutManager gridLayoutManager = + new GridLayoutManager(context, GRID_LAYOUT_SPAN_COUNT_COMPACT); +- // invert the order if the toolbar is at bottom +- if (titleProvider != null && CachedFeatureFlags.isEnabled(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM)) +- gridLayoutManager.setReverseLayout(true); ++ if (titleProvider != null && CachedFeatureFlags.isEnabled(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM)) { ++ gridLayoutManager = ++ new GridLayoutManagerDockBottom(context, GRID_LAYOUT_SPAN_COUNT_COMPACT); ++ ((GridLayoutManagerDockBottom)gridLayoutManager) ++ .setTabListRecyclerView(mRecyclerView); ++ } + mRecyclerView.setLayoutManager(gridLayoutManager); + mMediator.registerOrientationListener(gridLayoutManager); + mMediator.updateSpanCount(gridLayoutManager, +@@ -440,6 +500,9 @@ public class TabListCoordinator + } + registerLayoutChangeListener(); + mRecyclerView.prepareTabSwitcherView(); ++ GridLayoutManager glm = (GridLayoutManager) mRecyclerView.getLayoutManager(); ++ if (glm instanceof GridLayoutManagerDockBottom) ++ ((GridLayoutManagerDockBottom)glm).ResetTopPosition(); + mMediator.prepareTabSwitcherView(); + mMediator.registerOnScrolledListener(mRecyclerView); + } +diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java +--- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java ++++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherMediator.java +@@ -760,6 +760,9 @@ class TabSwitcherMediator implements TabSwitcher.Controller, TabListRecyclerView + private void setInitialScrollIndexOffset() { + int offset = mMode == TabListMode.CAROUSEL ? INITIAL_SCROLL_INDEX_OFFSET_CAROUSEL + : INITIAL_SCROLL_INDEX_OFFSET_GTS; ++ if (CachedFeatureFlags.isEnabled(ChromeFeatureList.MOVE_TOP_TOOLBAR_TO_BOTTOM)) { ++ offset = 0; ++ } + int initialPosition = Math.max( + mTabModelSelector.getTabModelFilterProvider().getCurrentTabModelFilter().index() + - offset, +-- +2.25.1 diff --git a/build/patches/00Remove-HTTP-referrals-in-cross-origin-navi--fixup-.patch b/build/patches/00Remove-HTTP-referrals-in-cross-origin-navi--fixup-.patch new file mode 100644 index 00000000..c6c76dbf --- /dev/null +++ b/build/patches/00Remove-HTTP-referrals-in-cross-origin-navi--fixup-.patch @@ -0,0 +1,522 @@ +From: Your Name +Date: Wed, 28 Dec 2022 12:22:07 +0000 +Subject: Remove HTTP referrals in cross origin navi (fixup) + +--- + chrome/android/chrome_java_resources.gni | 2 + + chrome/android/chrome_java_sources.gni | 2 + + ...button_group_referer_policy_preference.xml | 47 ++++++++++ + .../java/res/xml/privacy_preferences.xml | 8 +- + .../res/xml/referer_policy_preferences.xml | 31 +++++++ + .../privacy/settings/PrivacySettings.java | 12 ++- + .../RadioButtonGroupRefererSettings.java | 89 +++++++++++++++++++ + .../settings/RefererSettingsFragment.java | 79 ++++++++++++++++ + .../net/system_network_context_manager.cc | 4 + + chrome/browser/renderer_preferences_util.cc | 1 + + .../strings/android_chrome_strings.grd | 25 +++++- + chrome/browser/ui/prefs/pref_watcher.cc | 2 + + chrome/browser/ui/prefs/prefs_tab_helper.cc | 2 + + chrome/common/pref_names.cc | 3 + + chrome/common/pref_names.h | 1 + + .../renderer_host/navigation_request.cc | 5 +- + .../renderer_preferences.h | 1 + + 17 files changed, 299 insertions(+), 15 deletions(-) + create mode 100644 chrome/android/java/res/layout/radio_button_group_referer_policy_preference.xml + create mode 100644 chrome/android/java/res/xml/referer_policy_preferences.xml + create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/RadioButtonGroupRefererSettings.java + create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/RefererSettingsFragment.java + +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 +@@ -658,6 +658,8 @@ chrome_java_resources = [ + "java/res/xml/phone_as_a_security_key_accessory_filter.xml", + "java/res/xml/incognito_preferences.xml", + "java/res/xml/privacy_preferences.xml", ++ "java/res/xml/referer_policy_preferences.xml", ++ "java/res/layout/radio_button_group_referer_policy_preference.xml", + "java/res/xml/search_widget_info.xml", + "java/res/xml/tracing_preferences.xml", + "java/res/xml/useragent_preferences.xml", +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 +@@ -923,6 +923,8 @@ chrome_java_sources = [ + "java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl.java", + "java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java", + "java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java", ++ "java/src/org/chromium/chrome/browser/privacy/settings/RefererSettingsFragment.java", ++ "java/src/org/chromium/chrome/browser/privacy/settings/RadioButtonGroupRefererSettings.java", + "java/src/org/chromium/chrome/browser/provider/BaseColumns.java", + "java/src/org/chromium/chrome/browser/provider/BookmarkColumns.java", + "java/src/org/chromium/chrome/browser/provider/ChromeBrowserProviderImpl.java", +diff --git a/chrome/android/java/res/layout/radio_button_group_referer_policy_preference.xml b/chrome/android/java/res/layout/radio_button_group_referer_policy_preference.xml +new file mode 100644 +--- /dev/null ++++ b/chrome/android/java/res/layout/radio_button_group_referer_policy_preference.xml +@@ -0,0 +1,47 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ +diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml +--- a/chrome/android/java/res/xml/privacy_preferences.xml ++++ b/chrome/android/java/res/xml/privacy_preferences.xml +@@ -60,10 +60,10 @@ found in the LICENSE file. + android:title="@string/close_tabs_on_exit_title" + android:summary="@string/close_tabs_on_exit_summary" + android:defaultValue="false" /> +- ++ + ++ ++ ++ ++ ++ ++ ++ +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 +@@ -24,6 +24,7 @@ import org.chromium.chrome.browser.flags.ChromeFeatureList; + import org.chromium.chrome.browser.incognito.reauth.IncognitoReauthSettingSwitchPreference; + import org.chromium.chrome.browser.preferences.Pref; + import org.chromium.chrome.browser.prefetch.settings.PreloadPagesSettingsFragment; ++import org.chromium.chrome.browser.privacy.settings.RefererSettingsFragment; + import org.chromium.chrome.browser.privacy.secure_dns.SecureDnsSettings; + import org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxBridge; + import org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxReferrer; +@@ -61,7 +62,7 @@ public class PrivacySettings + private static final String PREF_HTTPS_FIRST_MODE = "https_first_mode"; + private static final String PREF_SECURE_DNS = "secure_dns"; + private static final String PREF_DO_NOT_TRACK = "do_not_track"; +- private static final String PREF_ENABLE_REFERRERS = "enable_referrers"; ++ private static final String PREF_REFERER_POLICY = "referers_policy"; + private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data"; + private static final String PREF_PRIVACY_GUIDE = "privacy_guide"; + private static final String PREF_INCOGNITO_LOCK = "incognito_lock"; +@@ -175,9 +176,6 @@ public class PrivacySettings + } else if (PREF_CAN_MAKE_PAYMENT.equals(key)) { + UserPrefs.get(Profile.getLastUsedRegularProfile()) + .setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue); +- } else if (PREF_ENABLE_REFERRERS.equals(key)) { +- UserPrefs.get(Profile.getLastUsedRegularProfile()) +- .setBoolean(Pref.ENABLE_REFERRERS, (boolean) newValue); + } else if (PREF_HTTPS_FIRST_MODE.equals(key)) { + UserPrefs.get(Profile.getLastUsedRegularProfile()) + .setBoolean(Pref.HTTPS_ONLY_MODE_ENABLED, (boolean) newValue); +@@ -231,9 +229,9 @@ public class PrivacySettings + : R.string.text_off); + } + +- ChromeSwitchPreference enableReferrerPref = findPreference(PREF_ENABLE_REFERRERS); +- enableReferrerPref.setChecked(prefService.getBoolean(Pref.ENABLE_REFERRERS)); +- enableReferrerPref.setOnPreferenceChangeListener(this); ++ Preference refererPolicyPref = findPreference(PREF_REFERER_POLICY); ++ refererPolicyPref.setSummary( ++ RefererSettingsFragment.getRefererSummaryString(getContext())); + + Preference preloadPagesPreference = findPreference(PREF_PRELOAD_PAGES); + if (preloadPagesPreference != null) { +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/RadioButtonGroupRefererSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/RadioButtonGroupRefererSettings.java +new file mode 100644 +--- /dev/null ++++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/RadioButtonGroupRefererSettings.java +@@ -0,0 +1,89 @@ ++/* ++ This file is part of Bromite. ++ ++ Bromite is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ Bromite is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with Bromite. If not, see . ++*/ ++ ++package org.chromium.chrome.browser.privacy.settings; ++ ++import android.content.Context; ++import android.util.AttributeSet; ++import android.view.View; ++import android.widget.RadioGroup; ++ ++import androidx.preference.Preference; ++import androidx.preference.PreferenceViewHolder; ++ ++import org.chromium.chrome.R; ++import org.chromium.chrome.browser.flags.ChromeFeatureList; ++import org.chromium.components.browser_ui.widget.RadioButtonWithDescription; ++import org.chromium.components.browser_ui.widget.RadioButtonWithDescriptionLayout; ++ ++public class RadioButtonGroupRefererSettings extends Preference ++ implements RadioGroup.OnCheckedChangeListener { ++ ++ private RadioButtonWithDescription mStandardReferer; ++ private RadioButtonWithDescription mNoCrossOriginReferer; ++ private RadioButtonWithDescription mNoReferer; ++ private int mRefererPolicy; ++ ++ public RadioButtonGroupRefererSettings(Context context, AttributeSet attrs) { ++ super(context, attrs); ++ setLayoutResource(R.layout.radio_button_group_referer_policy_preference); ++ } ++ ++ public void init(boolean enableReferer, int refererPolicy) { ++ if (!enableReferer) ++ mRefererPolicy = 0; ++ else ++ mRefererPolicy = refererPolicy; ++ } ++ ++ @Override ++ public void onCheckedChanged(RadioGroup group, int checkedId) { ++ if (checkedId == mStandardReferer.getId()) { ++ mRefererPolicy = 1; ++ } else if (checkedId == mNoCrossOriginReferer.getId()) { ++ mRefererPolicy = 2; ++ } else if (checkedId == mNoReferer.getId()) { ++ mRefererPolicy = 0; ++ } else { ++ assert false : "Should not be reached."; ++ } ++ callChangeListener(mRefererPolicy); ++ } ++ ++ @Override ++ public void onBindViewHolder(PreferenceViewHolder holder) { ++ super.onBindViewHolder(holder); ++ ++ mStandardReferer = (RadioButtonWithDescription) holder.findViewById( ++ R.id.standard_referer_policy); ++ mNoCrossOriginReferer = (RadioButtonWithDescription) holder.findViewById( ++ R.id.no_cross_origin_top_frame_policy); ++ mNoReferer = (RadioButtonWithDescription) holder.findViewById(R.id.disable_referer_policy); ++ ++ RadioButtonWithDescriptionLayout groupLayout = ++ (RadioButtonWithDescriptionLayout) mNoReferer.getRootView(); ++ setCheckedState(mRefererPolicy); ++ groupLayout.setOnCheckedChangeListener(this); ++ } ++ ++ public void setCheckedState(int checkedState) { ++ mRefererPolicy = checkedState; ++ mStandardReferer.setChecked(checkedState == 1); ++ mNoCrossOriginReferer.setChecked(checkedState == 2); ++ mNoReferer.setChecked(checkedState == 0); ++ } ++} +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/RefererSettingsFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/RefererSettingsFragment.java +new file mode 100644 +--- /dev/null ++++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/RefererSettingsFragment.java +@@ -0,0 +1,79 @@ ++/* ++ This file is part of Bromite. ++ ++ Bromite is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ Bromite is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with Bromite. If not, see . ++*/ ++ ++package org.chromium.chrome.browser.privacy.settings; ++ ++import android.os.Bundle; ++import android.content.Context; ++ ++import androidx.preference.Preference; ++import androidx.preference.PreferenceFragmentCompat; ++ ++import org.chromium.chrome.R; ++import org.chromium.chrome.browser.preferences.Pref; ++import org.chromium.chrome.browser.profiles.Profile; ++import org.chromium.components.browser_ui.settings.TextMessagePreference; ++import org.chromium.components.browser_ui.settings.SettingsUtils; ++import org.chromium.components.prefs.PrefService; ++import org.chromium.components.user_prefs.UserPrefs; ++ ++public class RefererSettingsFragment ++ extends PreferenceFragmentCompat ++ implements Preference.OnPreferenceChangeListener { ++ ++ static final String PREF_REFERER_POLICY = "referer_page_radio_button_group"; ++ ++ private RadioButtonGroupRefererSettings mRefererPreference; ++ private final PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); ++ ++ public static String getRefererSummaryString(Context context) { ++ int policy = UserPrefs.get(Profile.getLastUsedRegularProfile()) ++ .getInteger(Pref.REFERRERS_POLICY); ++ ++ if (policy == 0) { ++ return context.getString(R.string.disable_referer_policy_title); ++ } ++ if (policy == 1) { ++ return context.getString(R.string.standard_referer_policy_title); ++ } ++ if (policy == 2) { ++ return context.getString(R.string.no_cross_origin_top_frame_policy_title); ++ } ++ assert false : "Should not be reached"; ++ return ""; ++ } ++ ++ @Override ++ public void onCreatePreferences(Bundle bundle, String s) { ++ SettingsUtils.addPreferencesFromResource(this, R.xml.referer_policy_preferences); ++ getActivity().setTitle(R.string.referers_policy_title); ++ ++ mRefererPreference = findPreference(PREF_REFERER_POLICY); ++ mRefererPreference.init(prefService.getBoolean(Pref.ENABLE_REFERRERS), ++ prefService.getInteger(Pref.REFERRERS_POLICY)); ++ mRefererPreference.setOnPreferenceChangeListener(this); ++ } ++ ++ @Override ++ public boolean onPreferenceChange(Preference preference, Object newValue) { ++ UserPrefs.get(Profile.getLastUsedRegularProfile()) ++ .setInteger(Pref.REFERRERS_POLICY, (int)newValue); ++ UserPrefs.get(Profile.getLastUsedRegularProfile()) ++ .setBoolean(Pref.ENABLE_REFERRERS, (int)newValue != 0); ++ return true; ++ } ++} +diff --git a/chrome/browser/net/system_network_context_manager.cc b/chrome/browser/net/system_network_context_manager.cc +--- a/chrome/browser/net/system_network_context_manager.cc ++++ b/chrome/browser/net/system_network_context_manager.cc +@@ -479,6 +479,9 @@ SystemNetworkContextManager::SystemNetworkContextManager( + base::BindRepeating(&SystemNetworkContextManager::UpdateReferrersEnabled, + base::Unretained(this))); + ++ local_state_->SetDefaultPrefValue( ++ prefs::kReferrersPolicy, base::Value(2)); ++ + pref_change_registrar_.Add( + prefs::kExplicitlyAllowedNetworkPorts, + base::BindRepeating( +@@ -545,6 +548,7 @@ void SystemNetworkContextManager::RegisterPrefs(PrefRegistrySimple* registry) { + // the system NetworkContext, and the per-profile pref values are used for + // the profile NetworkContexts. + registry->RegisterBooleanPref(prefs::kEnableReferrers, true); ++ registry->RegisterIntegerPref(prefs::kReferrersPolicy, 2); + + registry->RegisterBooleanPref(prefs::kQuickCheckEnabled, true); + +diff --git a/chrome/browser/renderer_preferences_util.cc b/chrome/browser/renderer_preferences_util.cc +--- a/chrome/browser/renderer_preferences_util.cc ++++ b/chrome/browser/renderer_preferences_util.cc +@@ -115,6 +115,7 @@ void UpdateFromSystemSettings(blink::RendererPreferences* prefs, + prefs->accept_languages = GetLanguageListForProfile( + profile, pref_service->GetString(language::prefs::kAcceptLanguages)); + prefs->enable_referrers = pref_service->GetBoolean(prefs::kEnableReferrers); ++ prefs->referrers_policy = pref_service->GetInteger(prefs::kReferrersPolicy); + prefs->enable_do_not_track = + pref_service->GetBoolean(prefs::kEnableDoNotTrack); + prefs->enable_encrypted_media = +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 +@@ -879,8 +879,29 @@ CHAR_LIMIT guidelines: + + For example, some websites may respond to this request by showing you ads that aren’t based on other websites you’ve visited. Many websites will still collect and use your browsing data — for example to improve security, to provide content, ads and recommendations, and to generate reporting statistics. + +- +- Enable HTTP Referer header ++ ++ HTTP Referer header policy ++ ++ ++ Allow to change default HTTP Referer header policy ++ ++ ++ Standard HTTP Referrer header policy ++ ++ ++ Send only origin if the request is cross-origin ++ ++ ++ Disable if cross-origin and user begins navigation ++ ++ ++ Remove referrer if the navigation is cross-origin and occurs in the top frame otherwise send only origin if the request is cross-origin ++ ++ ++ Disable all referrers ++ ++ ++ Disable all referrers, may break navigation + + + Access payment methods +diff --git a/chrome/browser/ui/prefs/pref_watcher.cc b/chrome/browser/ui/prefs/pref_watcher.cc +--- a/chrome/browser/ui/prefs/pref_watcher.cc ++++ b/chrome/browser/ui/prefs/pref_watcher.cc +@@ -97,6 +97,8 @@ PrefWatcher::PrefWatcher(Profile* profile) : profile_(profile) { + renderer_callback); + profile_pref_change_registrar_.Add(prefs::kEnableReferrers, + renderer_callback); ++ profile_pref_change_registrar_.Add(prefs::kReferrersPolicy, ++ renderer_callback); + profile_pref_change_registrar_.Add(prefs::kEnableEncryptedMedia, + renderer_callback); + profile_pref_change_registrar_.Add(prefs::kWebRTCIPHandlingPolicy, +diff --git a/chrome/browser/ui/prefs/prefs_tab_helper.cc b/chrome/browser/ui/prefs/prefs_tab_helper.cc +--- a/chrome/browser/ui/prefs/prefs_tab_helper.cc ++++ b/chrome/browser/ui/prefs/prefs_tab_helper.cc +@@ -360,6 +360,8 @@ void PrefsTabHelper::RegisterProfilePrefs( + registry->RegisterBooleanPref( + prefs::kEnableReferrers, + !base::FeatureList::IsEnabled(features::kNoReferrers)); ++ registry->RegisterIntegerPref( ++ prefs::kReferrersPolicy, 2); // NoCrossOriginReferer + registry->RegisterBooleanPref(prefs::kEnableEncryptedMedia, true); + registry->RegisterBooleanPref(prefs::kScrollToTextFragmentEnabled, false); + #if BUILDFLAG(IS_ANDROID) +diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc +--- a/chrome/common/pref_names.cc ++++ b/chrome/common/pref_names.cc +@@ -1432,6 +1432,9 @@ const char kEnableHyperlinkAuditing[] = "enable_a_ping"; + // Whether to enable sending referrers. + const char kEnableReferrers[] = "enable_referrers"; + ++// Set referrer policy. ++const char kReferrersPolicy[] = "referrers_policy"; ++ + // Whether to send the DNT header. + const char kEnableDoNotTrack[] = "enable_do_not_track"; + +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 +@@ -442,6 +442,7 @@ extern const char kPinnedTabs[]; + extern const char kDisable3DAPIs[]; + extern const char kEnableHyperlinkAuditing[]; + extern const char kEnableReferrers[]; ++extern const char kReferrersPolicy[]; + extern const char kEnableDoNotTrack[]; + extern const char kEnableEncryptedMedia[]; + +diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc +--- a/content/browser/renderer_host/navigation_request.cc ++++ b/content/browser/renderer_host/navigation_request.cc +@@ -431,8 +431,9 @@ void AddAdditionalRequestHeaders( + blink::mojom::Referrer(GURL(), network::mojom::ReferrerPolicy::kNever); + } + +- if (!url::IsSameOriginWith(referrer->url.GetAsReferrer(), url) && +- frame_tree_node->IsOutermostMainFrame()) { ++ if (render_prefs.enable_referrers && render_prefs.referrers_policy == 2 && ++ !url::IsSameOriginWith(referrer->url.GetAsReferrer(), url) && ++ frame_tree_node->IsOutermostMainFrame()) { + // remove referrer if the navigation is done on the top frame + *referrer = + blink::mojom::Referrer(GURL(), network::mojom::ReferrerPolicy::kNever); +diff --git a/third_party/blink/public/common/renderer_preferences/renderer_preferences.h b/third_party/blink/public/common/renderer_preferences/renderer_preferences.h +--- a/third_party/blink/public/common/renderer_preferences/renderer_preferences.h ++++ b/third_party/blink/public/common/renderer_preferences/renderer_preferences.h +@@ -40,6 +40,7 @@ struct BLINK_COMMON_EXPORT RendererPreferences { + absl::optional caret_blink_interval; + bool use_custom_colors{true}; + bool enable_referrers{true}; ++ uint32_t referrers_policy{2}; + bool allow_cross_origin_auth_prompt{false}; + bool enable_do_not_track{false}; + bool enable_encrypted_media{true}; +-- +2.25.1 diff --git a/build/patches/00Remove-signin-and-sync-integrations--win-fixup-.patch b/build/patches/00Remove-signin-and-sync-integrations--win-fixup-.patch index b6bf3096..3520875b 100644 --- a/build/patches/00Remove-signin-and-sync-integrations--win-fixup-.patch +++ b/build/patches/00Remove-signin-and-sync-integrations--win-fixup-.patch @@ -24,7 +24,7 @@ Subject: Remove signin and sync integrations (win fixup) diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -4282,8 +4282,6 @@ static_library("browser") { +@@ -4280,8 +4280,6 @@ static_library("browser") { "sharing_hub/sharing_hub_service_factory.h", "signin/signin_promo.cc", "signin/signin_promo.h", @@ -33,7 +33,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "signin/signin_ui_util.cc", "signin/signin_ui_util.h", "speech/chrome_speech_recognition_service.cc", -@@ -6999,12 +6997,6 @@ static_library("browser") { +@@ -6997,12 +6995,6 @@ static_library("browser") { "signin/signin_ui_delegate_impl_dice.cc", "signin/signin_ui_delegate_impl_dice.h", ] diff --git a/build/patches/00Restore-Search-Ready-Omnibox-flag--win-fixup-.patch b/build/patches/00Restore-Search-Ready-Omnibox-flag--win-fixup-.patch index 998b486b..7a5820ea 100644 --- a/build/patches/00Restore-Search-Ready-Omnibox-flag--win-fixup-.patch +++ b/build/patches/00Restore-Search-Ready-Omnibox-flag--win-fixup-.patch @@ -9,7 +9,7 @@ Subject: Restore Search Ready Omnibox flag (win fixup) 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 -@@ -9187,9 +9187,11 @@ const FeatureEntry kFeatureEntries[] = { +@@ -9180,9 +9180,11 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kPervasiveSystemAccentColorDescription, kOsWin, SINGLE_VALUE_TYPE(switches::kPervasiveSystemAccentColor)}, #endif diff --git a/build/patches/00Temp-Disable-kAutomaticLazyFrameLoadingToEmbeds.patch b/build/patches/00Temp-Disable-kAutomaticLazyFrameLoadingToEmbeds.patch new file mode 100644 index 00000000..6032b016 --- /dev/null +++ b/build/patches/00Temp-Disable-kAutomaticLazyFrameLoadingToEmbeds.patch @@ -0,0 +1,22 @@ +From: Your Name +Date: Tue, 20 Dec 2022 15:09:46 +0000 +Subject: Temp Disable kAutomaticLazyFrameLoadingToEmbeds + +--- + third_party/blink/common/features.cc | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +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 +@@ -50,7 +50,7 @@ const base::FeatureParam kSkipFrameCountForLazyAds( + // Vitals. + BASE_FEATURE(kAutomaticLazyFrameLoadingToEmbeds, + "AutomaticLazyFrameLoadingToEmbeds", // must be enabled +- base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite + + // The timeout value that forces loading iframes that are lazy loaded by + // LazyEmbeds. After this timeout, the frame loading is triggered even when the +-- +2.25.1 diff --git a/build/patches/00Viewport-Protection--win-fixup-.patch b/build/patches/00Viewport-Protection--win-fixup-.patch deleted file mode 100644 index cf0dfdea..00000000 --- a/build/patches/00Viewport-Protection--win-fixup-.patch +++ /dev/null @@ -1,252 +0,0 @@ -From: Your Name -Date: Thu, 13 Oct 2022 10:10:26 +0000 -Subject: Viewport Protection (win fixup) - ---- - chrome/app/settings_strings.grdp | 19 ++++++++++++++++ - chrome/browser/resources/settings/icons.html | 2 ++ - .../settings/privacy_page/privacy_page.html | 22 +++++++++++++++++++ - chrome/browser/resources/settings/route.ts | 1 + - .../resources/settings/settings_routes.ts | 1 + - .../site_settings/category_default_setting.ts | 1 + - .../settings/site_settings/constants.ts | 1 + - .../settings_category_default_radio_group.ts | 1 + - .../settings/site_settings/site_details.html | 5 +++++ - .../recent_site_permissions.ts | 2 ++ - .../site_settings_page/site_settings_page.ts | 9 ++++++++ - .../views/page_info/page_info_view_factory.cc | 3 +++ - .../settings_localized_strings_provider.cc | 7 ++++++ - .../ui/webui/settings/site_settings_helper.cc | 1 + - .../core/browser/content_settings_registry.cc | 2 +- - 15 files changed, 76 insertions(+), 1 deletion(-) - -diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp ---- a/chrome/app/settings_strings.grdp -+++ b/chrome/app/settings_strings.grdp -@@ -3869,6 +3869,25 @@ - Not allowed to use WebRTC - - -+ -+ Viewport Protection -+ -+ -+ Enable Viewport Protection -+ -+ -+ Viewport Protection is enabled -+ -+ -+ Viewport Protection is disabled -+ -+ -+ Allowed to use Viewport Protection -+ -+ -+ Not allowed to use Viewport Protection -+ -+ - - - -diff --git a/chrome/browser/resources/settings/icons.html b/chrome/browser/resources/settings/icons.html ---- a/chrome/browser/resources/settings/icons.html -+++ b/chrome/browser/resources/settings/icons.html -@@ -180,6 +180,8 @@ NOTE: Chrome OS icons go in ./chromeos/os_icons.html. - - - -+ -+ - - - -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 -@@ -1102,4 +1102,26 @@ - - - -+ - -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 -@@ -105,6 +105,7 @@ function addPrivacyChildRoutes(r: Partial) { - r.SITE_SETTINGS_TIMEZONE_OVERRIDE = r.SITE_SETTINGS.createChild('timezone-override'); - r.SITE_SETTINGS_WEBGL = r.SITE_SETTINGS.createChild('webgl'); - r.SITE_SETTINGS_WEBRTC = r.SITE_SETTINGS.createChild('webrtc'); -+ r.SITE_SETTINGS_VIEWPORT = r.SITE_SETTINGS.createChild('viewport-protection'); - } - - /** -diff --git a/chrome/browser/resources/settings/settings_routes.ts b/chrome/browser/resources/settings/settings_routes.ts ---- a/chrome/browser/resources/settings/settings_routes.ts -+++ b/chrome/browser/resources/settings/settings_routes.ts -@@ -99,4 +99,5 @@ export interface SettingsRoutes { - SITE_SETTINGS_TIMEZONE_OVERRIDE: Route; - SITE_SETTINGS_WEBGL: Route; - SITE_SETTINGS_WEBRTC: Route; -+ SITE_SETTINGS_VIEWPORT: Route; - } -diff --git a/chrome/browser/resources/settings/site_settings/category_default_setting.ts b/chrome/browser/resources/settings/site_settings/category_default_setting.ts ---- a/chrome/browser/resources/settings/site_settings/category_default_setting.ts -+++ b/chrome/browser/resources/settings/site_settings/category_default_setting.ts -@@ -200,6 +200,7 @@ export class CategoryDefaultSettingElement extends - case ContentSettingsTypes.TIMEZONE_OVERRIDE: - case ContentSettingsTypes.WEBGL: - case ContentSettingsTypes.WEBRTC: -+ case ContentSettingsTypes.VIEWPORT: - // "Allowed" vs "Blocked". - this.browserProxy.setDefaultValueForContentType( - this.category, -diff --git a/chrome/browser/resources/settings/site_settings/constants.ts b/chrome/browser/resources/settings/site_settings/constants.ts ---- a/chrome/browser/resources/settings/site_settings/constants.ts -+++ b/chrome/browser/resources/settings/site_settings/constants.ts -@@ -47,6 +47,7 @@ export enum ContentSettingsTypes { - TIMEZONE_OVERRIDE = 'timezone-override', - WEBGL = 'webgl', - WEBRTC = 'webrtc', -+ VIEWPORT = 'viewport', - - // The following item is not in the C++ kContentSettingsTypeGroupNames, but it - // is used everywhere where ContentSettingsTypes is used in JS. -diff --git a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts ---- a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts -+++ b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts -@@ -144,6 +144,7 @@ export class SettingsCategoryDefaultRadioGroupElement extends - case ContentSettingsTypes.TIMEZONE_OVERRIDE: - case ContentSettingsTypes.WEBGL: - case ContentSettingsTypes.WEBRTC: -+ case ContentSettingsTypes.VIEWPORT: - // "Allowed" vs "Blocked". - return ContentSetting.ALLOW; - case ContentSettingsTypes.AR: -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 -@@ -278,4 +278,9 @@ - icon="settings:webrtc" - label="$i18n{siteSettingsWebRTC}"> - -+ -+ - -diff --git a/chrome/browser/resources/settings/site_settings_page/recent_site_permissions.ts b/chrome/browser/resources/settings/site_settings_page/recent_site_permissions.ts ---- a/chrome/browser/resources/settings/site_settings_page/recent_site_permissions.ts -+++ b/chrome/browser/resources/settings/site_settings_page/recent_site_permissions.ts -@@ -206,6 +206,8 @@ export class SettingsRecentSitePermissionsElement extends - return this.i18n('siteSettingsWebglMidSentence'); - case ContentSettingsTypes.WEBRTC: - return this.i18n('siteSettingsWebRTCMidSentence'); -+ case ContentSettingsTypes.VIEWPORT: -+ return this.i18n('siteSettingsViewportProtectionMidSentence'); - default: - return ''; - } -diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts ---- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts -+++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts -@@ -353,6 +353,14 @@ function getCategoryItemMap(): Map { - enabledLabel: 'siteSettingsWebRTCAllowed', - disabledLabel: 'siteSettingsWebRTCBlocked', - }, -+ { -+ route: routes.SITE_SETTINGS_VIEWPORT, -+ id: Id.VIEWPORT, -+ label: 'siteSettingsViewportProtection', -+ icon: 'settings:viewport-protection', -+ enabledLabel: 'siteSettingsViewportProtectionAllowed', -+ disabledLabel: 'siteSettingsViewportProtectionBlocked', -+ }, - ]; - - categoryItemMap = new Map(categoryList.map(item => [item.id, item])); -@@ -440,6 +448,7 @@ export class SettingsSiteSettingsPageElement extends PolymerElement { - Id.TIMEZONE_OVERRIDE, - Id.WEBGL, - Id.WEBRTC, -+ Id.VIEWPORT, - ]), - }; - }, -diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrome/browser/ui/views/page_info/page_info_view_factory.cc ---- a/chrome/browser/ui/views/page_info/page_info_view_factory.cc -+++ b/chrome/browser/ui/views/page_info/page_info_view_factory.cc -@@ -347,6 +347,9 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( - case ContentSettingsType::WEBRTC: - icon = &vector_icons::kProtectedContentIcon; - break; -+ case ContentSettingsType::VIEWPORT: -+ icon = &vector_icons::kProtectedContentIcon; -+ break; - default: - // All other |ContentSettingsType|s do not have icons on desktop or are - // not shown in the Page Info bubble. -diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc ---- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -2171,6 +2171,13 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source, - {"siteSettingsWebRTCAllowedExceptions",IDS_SETTINGS_SITE_SETTINGS_WEBRTC_ALLOWED_EXCEPTIONS}, - {"siteSettingsWebRTCBlockedExceptions", IDS_SETTINGS_SITE_SETTINGS_WEBRTC_BLOCKED_EXCEPTIONS}, - {"siteSettingsWebRTCMidSentence", IDS_SITE_SETTINGS_WEBRTC_TITLE}, -+ {"siteSettingsViewportProtection", IDS_SITE_SETTINGS_VIEWPORT_PROTECTION_TITLE}, -+ {"siteSettingsViewportProtectionDescription", IDS_SETTINGS_SITE_SETTINGS_VIEWPORT_PROTECTION_DESCRIPTION}, -+ {"siteSettingsViewportProtectionAllowed", IDS_SETTINGS_SITE_SETTINGS_VIEWPORT_PROTECTION_ALLOWED}, -+ {"siteSettingsViewportProtectionBlocked", IDS_SETTINGS_SITE_SETTINGS_VIEWPORT_PROTECTION_BLOCKED}, -+ {"siteSettingsViewportProtectionAllowedExceptions",IDS_SETTINGS_SITE_SETTINGS_VIEWPORT_PROTECTION_ALLOWED_EXCEPTIONS}, -+ {"siteSettingsViewportProtectionBlockedExceptions", IDS_SETTINGS_SITE_SETTINGS_VIEWPORT_PROTECTION_BLOCKED_EXCEPTIONS}, -+ {"siteSettingsViewportProtectionMidSentence", IDS_SITE_SETTINGS_VIEWPORT_PROTECTION_TITLE}, - {"addSite", IDS_SETTINGS_ADD_SITE}, - {"addSiteTitle", IDS_SETTINGS_ADD_SITE_TITLE}, - #if BUILDFLAG(IS_CHROMEOS_ASH) -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 -@@ -119,6 +119,7 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { - {ContentSettingsType::TIMEZONE_OVERRIDE, "timezone-override"}, - {ContentSettingsType::WEBGL, "webgl"}, - {ContentSettingsType::WEBRTC, "webrtc"}, -+ {ContentSettingsType::VIEWPORT, "viewport"}, - - // Add new content settings here if a corresponding Javascript string - // representation for it is not required, for example if the content setting -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 -@@ -681,7 +681,7 @@ void ContentSettingsRegistry::Init() { - ValidSettings(CONTENT_SETTING_ALLOW, - CONTENT_SETTING_BLOCK), - WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, -- WebsiteSettingsRegistry::PLATFORM_ANDROID, -+ WebsiteSettingsRegistry::ALL_PLATFORMS, - ContentSettingsInfo::INHERIT_IN_INCOGNITO, - ContentSettingsInfo::PERSISTENT, - ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS, --- -2.25.1 diff --git a/build/patches/00Viewport-Protection-Site-Setting.patch b/build/patches/00Viewport-Protection-Site-Setting.patch new file mode 100644 index 00000000..f7950925 --- /dev/null +++ b/build/patches/00Viewport-Protection-Site-Setting.patch @@ -0,0 +1,650 @@ +From: Your Name +Date: Tue, 20 Dec 2022 14:27:02 +0000 +Subject: Viewport Protection Site Setting + +--- + chrome/app/settings_strings.grdp | 19 ++++ + chrome/browser/resources/settings/icons.html | 2 + + .../settings/privacy_page/privacy_page.html | 22 +++++ + chrome/browser/resources/settings/route.ts | 1 + + .../resources/settings/settings_routes.ts | 1 + + .../site_settings/category_default_setting.ts | 1 + + .../settings/site_settings/constants.ts | 1 + + .../settings_category_default_radio_group.ts | 1 + + .../settings/site_settings/site_details.html | 5 ++ + .../recent_site_permissions.ts | 2 + + .../site_settings_page/site_settings_page.ts | 9 ++ + .../views/page_info/page_info_view_factory.cc | 3 + + .../settings_localized_strings_provider.cc | 7 ++ + .../ui/webui/settings/site_settings_helper.cc | 1 + + .../browser_ui/site_settings/android/BUILD.gn | 3 + + .../BromiteCustomContentSettingImpl.java | 1 + + .../BromiteViewportContentSetting.java | 86 +++++++++++++++++++ + .../site_settings/SiteSettingsCategory.java | 5 +- + .../strings/android/browser_ui_strings.grd | 1 + + .../browser_ui/strings/android/viewport.grdp | 18 ++++ + components/components_strings.grd | 1 + + .../core/browser/content_settings_registry.cc | 16 +++- + .../core/browser/content_settings_utils.cc | 2 + + .../core/common/content_settings.cc | 4 +- + .../core/common/content_settings.h | 1 + + .../core/common/content_settings.mojom | 1 + + .../common/content_settings_mojom_traits.cc | 3 +- + .../common/content_settings_mojom_traits.h | 5 ++ + .../core/common/content_settings_types.h | 2 + + .../renderer/content_settings_agent_impl.cc | 9 ++ + .../renderer/content_settings_agent_impl.h | 1 + + third_party/blink/common/features.cc | 2 +- + .../platform/web_content_settings_client.h | 2 + + .../renderer/core/frame/local_dom_window.cc | 1 + + third_party/blink/renderer/core/page/page.cc | 2 + + 35 files changed, 235 insertions(+), 6 deletions(-) + create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteViewportContentSetting.java + create mode 100644 components/browser_ui/strings/android/viewport.grdp + +diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp +--- a/chrome/app/settings_strings.grdp ++++ b/chrome/app/settings_strings.grdp +@@ -3869,6 +3869,25 @@ + Not allowed to use WebRTC + + ++ ++ Viewport Protection ++ ++ ++ Enable Viewport Protection ++ ++ ++ Viewport Protection is enabled ++ ++ ++ Viewport Protection is disabled ++ ++ ++ Allowed to use Viewport Protection ++ ++ ++ Not allowed to use Viewport Protection ++ ++ + + + +diff --git a/chrome/browser/resources/settings/icons.html b/chrome/browser/resources/settings/icons.html +--- a/chrome/browser/resources/settings/icons.html ++++ b/chrome/browser/resources/settings/icons.html +@@ -180,6 +180,8 @@ NOTE: Chrome OS icons go in ./chromeos/os_icons.html. + + + ++ ++ + + + +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 +@@ -1102,4 +1102,26 @@ + + + ++ + +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 +@@ -105,6 +105,7 @@ function addPrivacyChildRoutes(r: Partial) { + r.SITE_SETTINGS_TIMEZONE_OVERRIDE = r.SITE_SETTINGS.createChild('timezone-override'); + r.SITE_SETTINGS_WEBGL = r.SITE_SETTINGS.createChild('webgl'); + r.SITE_SETTINGS_WEBRTC = r.SITE_SETTINGS.createChild('webrtc'); ++ r.SITE_SETTINGS_VIEWPORT = r.SITE_SETTINGS.createChild('viewport-protection'); + } + + /** +diff --git a/chrome/browser/resources/settings/settings_routes.ts b/chrome/browser/resources/settings/settings_routes.ts +--- a/chrome/browser/resources/settings/settings_routes.ts ++++ b/chrome/browser/resources/settings/settings_routes.ts +@@ -99,4 +99,5 @@ export interface SettingsRoutes { + SITE_SETTINGS_TIMEZONE_OVERRIDE: Route; + SITE_SETTINGS_WEBGL: Route; + SITE_SETTINGS_WEBRTC: Route; ++ SITE_SETTINGS_VIEWPORT: Route; + } +diff --git a/chrome/browser/resources/settings/site_settings/category_default_setting.ts b/chrome/browser/resources/settings/site_settings/category_default_setting.ts +--- a/chrome/browser/resources/settings/site_settings/category_default_setting.ts ++++ b/chrome/browser/resources/settings/site_settings/category_default_setting.ts +@@ -200,6 +200,7 @@ export class CategoryDefaultSettingElement extends + case ContentSettingsTypes.TIMEZONE_OVERRIDE: + case ContentSettingsTypes.WEBGL: + case ContentSettingsTypes.WEBRTC: ++ case ContentSettingsTypes.VIEWPORT: + // "Allowed" vs "Blocked". + this.browserProxy.setDefaultValueForContentType( + this.category, +diff --git a/chrome/browser/resources/settings/site_settings/constants.ts b/chrome/browser/resources/settings/site_settings/constants.ts +--- a/chrome/browser/resources/settings/site_settings/constants.ts ++++ b/chrome/browser/resources/settings/site_settings/constants.ts +@@ -47,6 +47,7 @@ export enum ContentSettingsTypes { + TIMEZONE_OVERRIDE = 'timezone-override', + WEBGL = 'webgl', + WEBRTC = 'webrtc', ++ VIEWPORT = 'viewport', + + // The following item is not in the C++ kContentSettingsTypeGroupNames, but it + // is used everywhere where ContentSettingsTypes is used in JS. +diff --git a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts +--- a/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts ++++ b/chrome/browser/resources/settings/site_settings/settings_category_default_radio_group.ts +@@ -144,6 +144,7 @@ export class SettingsCategoryDefaultRadioGroupElement extends + case ContentSettingsTypes.TIMEZONE_OVERRIDE: + case ContentSettingsTypes.WEBGL: + case ContentSettingsTypes.WEBRTC: ++ case ContentSettingsTypes.VIEWPORT: + // "Allowed" vs "Blocked". + return ContentSetting.ALLOW; + case ContentSettingsTypes.AR: +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 +@@ -278,4 +278,9 @@ + icon="settings:webrtc" + label="$i18n{siteSettingsWebRTC}"> + ++ ++ + +diff --git a/chrome/browser/resources/settings/site_settings_page/recent_site_permissions.ts b/chrome/browser/resources/settings/site_settings_page/recent_site_permissions.ts +--- a/chrome/browser/resources/settings/site_settings_page/recent_site_permissions.ts ++++ b/chrome/browser/resources/settings/site_settings_page/recent_site_permissions.ts +@@ -206,6 +206,8 @@ export class SettingsRecentSitePermissionsElement extends + return this.i18n('siteSettingsWebglMidSentence'); + case ContentSettingsTypes.WEBRTC: + return this.i18n('siteSettingsWebRTCMidSentence'); ++ case ContentSettingsTypes.VIEWPORT: ++ return this.i18n('siteSettingsViewportProtectionMidSentence'); + default: + return ''; + } +diff --git a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts +--- a/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts ++++ b/chrome/browser/resources/settings/site_settings_page/site_settings_page.ts +@@ -353,6 +353,14 @@ function getCategoryItemMap(): Map { + enabledLabel: 'siteSettingsWebRTCAllowed', + disabledLabel: 'siteSettingsWebRTCBlocked', + }, ++ { ++ route: routes.SITE_SETTINGS_VIEWPORT, ++ id: Id.VIEWPORT, ++ label: 'siteSettingsViewportProtection', ++ icon: 'settings:viewport-protection', ++ enabledLabel: 'siteSettingsViewportProtectionAllowed', ++ disabledLabel: 'siteSettingsViewportProtectionBlocked', ++ }, + ]; + + categoryItemMap = new Map(categoryList.map(item => [item.id, item])); +@@ -440,6 +448,7 @@ export class SettingsSiteSettingsPageElement extends PolymerElement { + Id.TIMEZONE_OVERRIDE, + Id.WEBGL, + Id.WEBRTC, ++ Id.VIEWPORT, + ]), + }; + }, +diff --git a/chrome/browser/ui/views/page_info/page_info_view_factory.cc b/chrome/browser/ui/views/page_info/page_info_view_factory.cc +--- a/chrome/browser/ui/views/page_info/page_info_view_factory.cc ++++ b/chrome/browser/ui/views/page_info/page_info_view_factory.cc +@@ -347,6 +347,9 @@ const ui::ImageModel PageInfoViewFactory::GetPermissionIcon( + case ContentSettingsType::WEBRTC: + icon = &vector_icons::kProtectedContentIcon; + break; ++ case ContentSettingsType::VIEWPORT: ++ icon = &vector_icons::kProtectedContentIcon; ++ break; + default: + // All other |ContentSettingsType|s do not have icons on desktop or are + // not shown in the Page Info bubble. +diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc ++++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +@@ -2171,6 +2171,13 @@ void AddSiteSettingsStrings(content::WebUIDataSource* html_source, + {"siteSettingsWebRTCAllowedExceptions",IDS_SETTINGS_SITE_SETTINGS_WEBRTC_ALLOWED_EXCEPTIONS}, + {"siteSettingsWebRTCBlockedExceptions", IDS_SETTINGS_SITE_SETTINGS_WEBRTC_BLOCKED_EXCEPTIONS}, + {"siteSettingsWebRTCMidSentence", IDS_SITE_SETTINGS_WEBRTC_TITLE}, ++ {"siteSettingsViewportProtection", IDS_SITE_SETTINGS_VIEWPORT_PROTECTION_TITLE}, ++ {"siteSettingsViewportProtectionDescription", IDS_SETTINGS_SITE_SETTINGS_VIEWPORT_PROTECTION_DESCRIPTION}, ++ {"siteSettingsViewportProtectionAllowed", IDS_SETTINGS_SITE_SETTINGS_VIEWPORT_PROTECTION_ALLOWED}, ++ {"siteSettingsViewportProtectionBlocked", IDS_SETTINGS_SITE_SETTINGS_VIEWPORT_PROTECTION_BLOCKED}, ++ {"siteSettingsViewportProtectionAllowedExceptions",IDS_SETTINGS_SITE_SETTINGS_VIEWPORT_PROTECTION_ALLOWED_EXCEPTIONS}, ++ {"siteSettingsViewportProtectionBlockedExceptions", IDS_SETTINGS_SITE_SETTINGS_VIEWPORT_PROTECTION_BLOCKED_EXCEPTIONS}, ++ {"siteSettingsViewportProtectionMidSentence", IDS_SITE_SETTINGS_VIEWPORT_PROTECTION_TITLE}, + {"addSite", IDS_SETTINGS_ADD_SITE}, + {"addSiteTitle", IDS_SETTINGS_ADD_SITE_TITLE}, + #if BUILDFLAG(IS_CHROMEOS_ASH) +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 +@@ -119,6 +119,7 @@ const ContentSettingsTypeNameEntry kContentSettingsTypeGroupNames[] = { + {ContentSettingsType::TIMEZONE_OVERRIDE, "timezone-override"}, + {ContentSettingsType::WEBGL, "webgl"}, + {ContentSettingsType::WEBRTC, "webrtc"}, ++ {ContentSettingsType::VIEWPORT, "viewport"}, + + // Add new content settings here if a corresponding Javascript string + // representation for it is not required, for example if the content setting +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 +@@ -98,6 +98,9 @@ android_library("java") { + sources += [ + "java/src/org/chromium/components/browser_ui/site_settings/BromiteWebRTCContentSetting.java", + ] ++ sources += [ ++ "java/src/org/chromium/components/browser_ui/site_settings/BromiteViewportContentSetting.java", ++ ] + annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] + resources_package = "org.chromium.components.browser_ui.site_settings" + deps = [ +diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java +--- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java ++++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java +@@ -45,6 +45,7 @@ public abstract class BromiteCustomContentSettingImpl { + mItemList = new ArrayList(); + mItemList.add(new BromiteWebGLContentSetting()); + mItemList.add(new BromiteWebRTCContentSetting()); ++ mItemList.add(new BromiteViewportContentSetting()); + } + + public static SiteSettingsCategory createFromType( +diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteViewportContentSetting.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteViewportContentSetting.java +new file mode 100644 +--- /dev/null ++++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteViewportContentSetting.java +@@ -0,0 +1,86 @@ ++/* ++ This file is part of Bromite. ++ ++ Bromite is free software: you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation, either version 3 of the License, or ++ (at your option) any later version. ++ ++ Bromite is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with Bromite. If not, see . ++*/ ++ ++package org.chromium.components.browser_ui.site_settings; ++ ++import org.chromium.components.browser_ui.site_settings.ContentSettingsResources; ++import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory; ++import org.chromium.components.content_settings.ContentSettingValues; ++import org.chromium.components.content_settings.ContentSettingsType; ++import org.chromium.content_public.browser.BrowserContextHandle; ++ ++import androidx.annotation.Nullable; ++import androidx.preference.Preference; ++import androidx.preference.PreferenceScreen; ++ ++import java.util.ArrayList; ++ ++public class BromiteViewportContentSetting extends BromiteCustomContentSetting { ++ public BromiteViewportContentSetting() { ++ super(/*contentSettingsType*/ ContentSettingsType.VIEWPORT, ++ /*siteSettingsCategory*/ SiteSettingsCategory.Type.VIEWPORT, ++ /*defaultEnabledValue*/ ContentSettingValues.ALLOW, ++ /*defaultDisabledValue*/ ContentSettingValues.BLOCK, ++ /*allowException*/ true, ++ /*preferenceKey*/ "viewport", ++ /*profilePrefKey*/ "viewport"); ++ } ++ ++ @Override ++ public ContentSettingsResources.ResourceItem getResourceItem() { ++ return new ContentSettingsResources.ResourceItem( ++ /*icon*/ R.drawable.web_asset, ++ /*title*/ R.string.viewport_permission_title, ++ /*defaultEnabledValue*/ getDefaultEnabledValue(), ++ /*defaultDisabledValue*/ getDefaultDisabledValue(), ++ /*enabledSummary*/ R.string.website_settings_category_viewport_enabled, ++ /*disabledSummary*/ R.string.website_settings_category_viewport_disabled); ++ } ++ ++ @Override ++ public int getCategorySummary(@Nullable @ContentSettingValues int value) { ++ switch (value) { ++ case ContentSettingValues.ALLOW: ++ return R.string.website_settings_category_viewport_enabled; ++ case ContentSettingValues.BLOCK: ++ return R.string.website_settings_category_viewport_disabled; ++ default: ++ // this will cause a runtime exception ++ return 0; ++ } ++ } ++ ++ @Override ++ public boolean requiresTriStateContentSetting() { ++ return false; ++ } ++ ++ @Override ++ public boolean showOnlyDescriptions() { ++ return true; ++ } ++ ++ @Override ++ public int getAddExceptionDialogMessage() { ++ return R.string.website_settings_category_viewport_enabled; ++ } ++ ++ @Override ++ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) { ++ return value != ContentSettingValues.BLOCK; ++ } ++} +diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java +--- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java ++++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java +@@ -44,7 +44,7 @@ public class SiteSettingsCategory { + Type.PROTECTED_MEDIA, Type.SENSORS, Type.SOUND, Type.USB, Type.VIRTUAL_REALITY, + Type.USE_STORAGE, Type.AUTO_DARK_WEB_CONTENT, Type.REQUEST_DESKTOP_SITE, + Type.FEDERATED_IDENTITY_API, Type.TIMEZONE_OVERRIDE, Type.AUTOPLAY, Type.JAVASCRIPT_JIT, +- Type.IMAGES, Type.WEBGL, Type.WEBRTC}) ++ Type.IMAGES, Type.WEBGL, Type.WEBRTC, Type.VIEWPORT}) + @Retention(RetentionPolicy.SOURCE) + public @interface Type { + // All updates here must also be reflected in {@link #preferenceKey(int) +@@ -81,10 +81,11 @@ public class SiteSettingsCategory { + int IMAGES = 29; + int WEBGL = 30; + int WEBRTC = 31; ++ int VIEWPORT = 32; + /** + * Number of handled categories used for calculating array sizes. + */ +- int NUM_ENTRIES = 32; ++ int NUM_ENTRIES = 33; + } + + private final BrowserContextHandle mBrowserContextHandle; +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 +@@ -176,6 +176,7 @@ + + + ++ + + + Got it +diff --git a/components/browser_ui/strings/android/viewport.grdp b/components/browser_ui/strings/android/viewport.grdp +new file mode 100644 +--- /dev/null ++++ b/components/browser_ui/strings/android/viewport.grdp +@@ -0,0 +1,18 @@ ++ ++ ++ ++ Viewport Size Protection ++ ++ ++ Viewport Size Protection ++ ++ ++ Viewport Size Protection ++ ++ ++ Enabled ++ ++ ++ Disabled ++ ++ +diff --git a/components/components_strings.grd b/components/components_strings.grd +--- a/components/components_strings.grd ++++ b/components/components_strings.grd +@@ -341,6 +341,7 @@ + + + ++ + + + +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 +@@ -681,7 +681,7 @@ void ContentSettingsRegistry::Init() { + ValidSettings(CONTENT_SETTING_ALLOW, + CONTENT_SETTING_BLOCK), + WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, +- WebsiteSettingsRegistry::PLATFORM_ANDROID, ++ WebsiteSettingsRegistry::ALL_PLATFORMS, + ContentSettingsInfo::INHERIT_IN_INCOGNITO, + ContentSettingsInfo::PERSISTENT, + ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS, +@@ -702,6 +702,20 @@ void ContentSettingsRegistry::Init() { + /*show_into_info_page*/ true, + /*permission_type_ui*/ IDS_SITE_SETTINGS_TYPE_WEBRTC, + /*permission_type_ui_mid_sentence*/ IDS_SITE_SETTINGS_TYPE_WEBRTC_MID_SENTENCE); ++ ++ Register(ContentSettingsType::VIEWPORT, "viewport", CONTENT_SETTING_BLOCK, ++ WebsiteSettingsInfo::SYNCABLE, ++ AllowlistedSchemes(), ++ ValidSettings(CONTENT_SETTING_ALLOW, ++ CONTENT_SETTING_BLOCK), ++ WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, ++ WebsiteSettingsRegistry::ALL_PLATFORMS, ++ ContentSettingsInfo::INHERIT_IN_INCOGNITO, ++ ContentSettingsInfo::PERSISTENT, ++ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS, ++ /*show_into_info_page*/ true, ++ /*permission_type_ui*/ IDS_SITE_SETTINGS_TYPE_VIEWPORT, ++ /*permission_type_ui_mid_sentence*/ IDS_SITE_SETTINGS_TYPE_VIEWPORT_MID_SENTENCE); + } + + void ContentSettingsRegistry::Register( +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 +@@ -160,6 +160,8 @@ void GetRendererContentSettingRules(const HostContentSettingsMap* map, + &(rules->webgl_rules)); + map->GetSettingsForOneType(ContentSettingsType::WEBRTC, + &(rules->webrtc_rules)); ++ map->GetSettingsForOneType(ContentSettingsType::VIEWPORT, ++ &(rules->viewport_rules)); + } + + bool IsMorePermissive(ContentSetting a, ContentSetting b) { +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 +@@ -209,7 +209,8 @@ bool RendererContentSettingRules::IsRendererContentSetting( + content_type == ContentSettingsType::AUTO_DARK_WEB_CONTENT || + content_type == ContentSettingsType::TIMEZONE_OVERRIDE || + content_type == ContentSettingsType::WEBGL || +- content_type == ContentSettingsType::WEBRTC; ++ content_type == ContentSettingsType::WEBRTC || ++ content_type == ContentSettingsType::VIEWPORT; + } + + void RendererContentSettingRules::FilterRulesByOutermostMainFrameURL( +@@ -223,6 +224,7 @@ void RendererContentSettingRules::FilterRulesByOutermostMainFrameURL( + FilterRulesForType(autoplay_rules, outermost_main_frame_url); + FilterRulesForType(webgl_rules, outermost_main_frame_url); + FilterRulesForType(webrtc_rules, outermost_main_frame_url); ++ FilterRulesForType(viewport_rules, outermost_main_frame_url); + } + + RendererContentSettingRules::RendererContentSettingRules() = 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 +@@ -98,6 +98,7 @@ struct RendererContentSettingRules { + std::string timezone_override_value; + ContentSettingsForOneType webgl_rules; + ContentSettingsForOneType webrtc_rules; ++ ContentSettingsForOneType viewport_rules; + }; + + namespace content_settings { +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 +@@ -83,4 +83,5 @@ struct RendererContentSettingRules { + string timezone_override_value; + array webgl_rules; + array webrtc_rules; ++ array viewport_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 +@@ -107,7 +107,8 @@ bool StructTraitstimezone_override_rules) && + data.ReadTimezoneOverrideValue(&out->timezone_override_value) && + data.ReadWebglRules(&out->webgl_rules) && +- data.ReadWebrtcRules(&out->webrtc_rules); ++ data.ReadWebrtcRules(&out->webrtc_rules) && ++ data.ReadViewportRules(&out->viewport_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 +@@ -175,6 +175,11 @@ struct StructTraits< + return r.webrtc_rules; + } + ++ static const std::vector& viewport_rules( ++ const RendererContentSettingRules& r) { ++ return r.viewport_rules; ++ } ++ + static bool Read( + content_settings::mojom::RendererContentSettingRulesDataView data, + RendererContentSettingRules* out); +diff --git a/components/content_settings/core/common/content_settings_types.h b/components/content_settings/core/common/content_settings_types.h +--- a/components/content_settings/core/common/content_settings_types.h ++++ b/components/content_settings/core/common/content_settings_types.h +@@ -281,6 +281,8 @@ enum class ContentSettingsType : int32_t { + + WEBRTC, + ++ VIEWPORT, ++ + // Setting to indicate whether browser should allow signing into a website via + // the browser FedCM API. + FEDERATED_IDENTITY_API, +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 +@@ -467,6 +467,15 @@ bool ContentSettingsAgentImpl::AllowWebRTC(bool enabled_per_settings) { + url::Origin(frame->GetDocument().GetSecurityOrigin()).GetURL()); + } + ++bool ContentSettingsAgentImpl::AllowViewportChange(bool enabled_per_settings) { ++ if (!content_setting_rules_) ++ return false; ++ blink::WebLocalFrame* frame = render_frame()->GetWebFrame(); ++ return CONTENT_SETTING_ALLOW == GetContentSettingFromRules( ++ content_setting_rules_->viewport_rules, ++ url::Origin(frame->GetDocument().GetSecurityOrigin()).GetURL()); ++} ++ + bool ContentSettingsAgentImpl::IsAllowlistedForContentSettings() 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 +@@ -101,6 +101,7 @@ class ContentSettingsAgentImpl + bool ShouldAutoupgradeMixedContent() override; + bool AllowWebgl(bool enabled_per_settings) override; + bool AllowWebRTC(bool enabled_per_settings) override; ++ bool AllowViewportChange(bool enabled_per_settings) override; + + bool allow_running_insecure_content() const { + return allow_running_insecure_content_; +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 +@@ -1639,7 +1639,7 @@ BASE_FEATURE(kDocumentEventNodePathCaching, + + BASE_FEATURE(kViewportProtection, + "ViewportProtection", +- base::FEATURE_ENABLED_BY_DEFAULT); ++ base::FEATURE_DISABLED_BY_DEFAULT); + + BASE_FEATURE(kNewGetDisplayMediaPickerOrder, + "NewGetDisplayMediaPickerOrder", +diff --git a/third_party/blink/public/platform/web_content_settings_client.h b/third_party/blink/public/platform/web_content_settings_client.h +--- a/third_party/blink/public/platform/web_content_settings_client.h ++++ b/third_party/blink/public/platform/web_content_settings_client.h +@@ -103,6 +103,8 @@ class WebContentSettingsClient { + + virtual bool AllowWebRTC(bool default_value) { return default_value; } + ++ virtual bool AllowViewportChange(bool default_value) { return default_value; } ++ + // Reports that passive mixed content was found at the provided URL. + virtual void PassiveInsecureContentFound(const WebURL&) {} + +diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_party/blink/renderer/core/frame/local_dom_window.cc +--- a/third_party/blink/renderer/core/frame/local_dom_window.cc ++++ b/third_party/blink/renderer/core/frame/local_dom_window.cc +@@ -2224,6 +2224,7 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate, + // var w = window.open() + // var not_emulated_screen_info = w.screen + bool protection_enabled = base::FeatureList::IsEnabled(features::kViewportProtection); ++ protection_enabled |= GetFrame()->GetContentSettingsClient()->AllowViewportChange(false); + result.frame->GetPage()->CalculateEmulatedScreenSetting( + To(result.frame), + /*force*/ protection_enabled); +diff --git a/third_party/blink/renderer/core/page/page.cc b/third_party/blink/renderer/core/page/page.cc +--- a/third_party/blink/renderer/core/page/page.cc ++++ b/third_party/blink/renderer/core/page/page.cc +@@ -887,6 +887,8 @@ void Page::UpdateAcceleratedCompositingSettings() { + + void Page::CalculateEmulatedScreenSetting(LocalFrame* frame, bool force) { + bool isEnabled = base::FeatureList::IsEnabled(features::kViewportProtection); ++ blink::WebContentSettingsClient* settings = frame->GetContentSettingsClient(); ++ isEnabled |= (settings && settings->AllowViewportChange(false)); + if (isEnabled || force) { + // this is the maximum (and minimum) value which in percentage + // corresponds to +- 0.03% +-- +2.25.1 diff --git a/build/patches/00Viewport-Protection-flag.patch b/build/patches/00Viewport-Protection-flag.patch new file mode 100644 index 00000000..eda889e8 --- /dev/null +++ b/build/patches/00Viewport-Protection-flag.patch @@ -0,0 +1,636 @@ +From: Your Name +Date: Tue, 20 Dec 2022 11:06:42 +0000 +Subject: Viewport Protection flag + +--- + chrome/browser/about_flags.cc | 5 ++ + chrome/browser/flag_descriptions.cc | 6 ++ + chrome/browser/flag_descriptions.h | 3 + + third_party/blink/common/features.cc | 4 + + third_party/blink/public/common/features.h | 3 + + .../common/widget/device_emulation_params.h | 6 +- + .../core/css/resolver/style_resolver.cc | 10 ++- + .../blink/renderer/core/events/mouse_event.h | 19 ++++- + .../renderer/core/events/pointer_event.h | 11 +++ + .../renderer/core/exported/web_view_impl.cc | 2 +- + .../renderer/core/frame/local_dom_window.cc | 28 ++++++- + .../blink/renderer/core/frame/local_frame.cc | 12 ++- + .../blink/renderer/core/frame/local_frame.h | 6 +- + .../core/frame/screen_metrics_emulator.cc | 18 ++++- + .../core/frame/screen_metrics_emulator.h | 14 ++++ + .../core/frame/web_frame_widget_impl.cc | 8 ++ + .../core/frame/web_remote_frame_impl.cc | 3 +- + .../blink/renderer/core/input/touch.cc | 17 ++++- + third_party/blink/renderer/core/page/page.cc | 76 +++++++++++++++++++ + third_party/blink/renderer/core/page/page.h | 7 ++ + 20 files changed, 241 insertions(+), 17 deletions(-) + +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 +@@ -7627,6 +7627,11 @@ const FeatureEntry kFeatureEntries[] = { + "PaintPreviewShowOnStartup")}, + #endif // BUILDFLAG(ENABLE_PAINT_PREVIEW) && BUILDFLAG(IS_ANDROID) + ++ {"viewport-protection", ++ flag_descriptions::kViewportProtectionName, ++ flag_descriptions::kViewportProtectionDescription, kOsAll, ++ FEATURE_VALUE_TYPE(blink::features::kViewportProtection)}, ++ + #if BUILDFLAG(IS_ANDROID) + {"block-external-form-redirects-no-gesture", + flag_descriptions::kIntentBlockExternalFormRedirectsNoGestureName, +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 +@@ -6847,6 +6847,12 @@ const char kPaintPreviewStartupDescription[] = + "instead."; + #endif // ENABLE_PAINT_PREVIEW && BUILDFLAG(IS_ANDROID) + ++const char kViewportProtectionName[] = "Viewport Protection"; ++const char kViewportProtectionDescription[] = ++ "Scale the viewport and the screen by a random factor to prevent " ++ "coordinate-based fingerprinting scripts. The factor is changed at each " ++ "change of origin."; ++ + #if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP) + const char kWebUITabStripFlagId[] = "webui-tab-strip"; + const char kWebUITabStripName[] = "WebUI tab strip"; +diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h +--- a/chrome/browser/flag_descriptions.h ++++ b/chrome/browser/flag_descriptions.h +@@ -3948,6 +3948,9 @@ extern const char kPaintPreviewStartupName[]; + extern const char kPaintPreviewStartupDescription[]; + #endif // ENABLE_PAINT_PREVIEW && BUILDFLAG(IS_ANDROID) + ++extern const char kViewportProtectionName[]; ++extern const char kViewportProtectionDescription[]; ++ + #if BUILDFLAG(ENABLE_WEBUI_TAB_STRIP) + extern const char kWebUITabStripFlagId[]; + extern const char kWebUITabStripName[]; +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 +@@ -1637,6 +1637,10 @@ BASE_FEATURE(kDocumentEventNodePathCaching, + "DocumentEventNodePathCaching", + base::FEATURE_DISABLED_BY_DEFAULT); + ++BASE_FEATURE(kViewportProtection, ++ "ViewportProtection", ++ base::FEATURE_ENABLED_BY_DEFAULT); ++ + BASE_FEATURE(kNewGetDisplayMediaPickerOrder, + "NewGetDisplayMediaPickerOrder", + base::FEATURE_DISABLED_BY_DEFAULT); +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 +@@ -867,6 +867,9 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kThreadedBodyLoader); + // If enabled, will cache for each node's EventPath::NodePath in document. + BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kDocumentEventNodePathCaching); + ++// Enable blink viewport protection ++BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kViewportProtection); ++ + // When an application calls getDisplayMedia(), a media-picker is displayed + // to the user, allowing them to share a tab, a window or a screen. + // * If this flag is enabled, the order is - tabs, windows, screens. +diff --git a/third_party/blink/public/common/widget/device_emulation_params.h b/third_party/blink/public/common/widget/device_emulation_params.h +--- a/third_party/blink/public/common/widget/device_emulation_params.h ++++ b/third_party/blink/public/common/widget/device_emulation_params.h +@@ -19,6 +19,9 @@ namespace blink { + struct DeviceEmulationParams { + mojom::EmulatedScreenType screen_type = mojom::EmulatedScreenType::kDesktop; + ++ // Forces screen recalculation the same way as mobile ++ bool force_mobile_calc = false; ++ + // Emulated screen size. Typically full / physical size of the device screen + // in DIP. Empty size means using default value: original one for kDesktop + // screen position, equal to |view_size| for kMobile. +@@ -71,7 +74,8 @@ inline bool operator==(const DeviceEmulationParams& a, + a.screen_orientation_angle == b.screen_orientation_angle && + a.viewport_offset == b.viewport_offset && + a.viewport_scale == b.viewport_scale && +- a.window_segments == b.window_segments; ++ a.window_segments == b.window_segments && ++ a.force_mobile_calc == b.force_mobile_calc; + } + + inline bool operator!=(const DeviceEmulationParams& a, +diff --git a/third_party/blink/renderer/core/css/resolver/style_resolver.cc b/third_party/blink/renderer/core/css/resolver/style_resolver.cc +--- a/third_party/blink/renderer/core/css/resolver/style_resolver.cc ++++ b/third_party/blink/renderer/core/css/resolver/style_resolver.cc +@@ -1557,8 +1557,14 @@ scoped_refptr StyleResolver::InitialStyleForElement() const { + + initial_style->SetRtlOrdering( + GetDocument().VisuallyOrdered() ? EOrder::kVisual : EOrder::kLogical); +- initial_style->SetZoom(InitialZoom()); +- initial_style->SetEffectiveZoom(initial_style->Zoom()); ++ if (GetDocument().GetPage() && GetDocument().GetPage()->IsScreenEmulated()) { ++ // hides the zoom override to the dom on the html tag ++ initial_style->SetZoom(1); ++ initial_style->SetEffectiveZoom(InitialZoom()); ++ } else { ++ initial_style->SetZoom(InitialZoom()); ++ initial_style->SetEffectiveZoom(initial_style->Zoom()); ++ } + initial_style->SetInForcedColorsMode(GetDocument().InForcedColorsMode()); + initial_style->SetTapHighlightColor( + ComputedStyleInitialValues::InitialTapHighlightColor()); +diff --git a/third_party/blink/renderer/core/events/mouse_event.h b/third_party/blink/renderer/core/events/mouse_event.h +--- a/third_party/blink/renderer/core/events/mouse_event.h ++++ b/third_party/blink/renderer/core/events/mouse_event.h +@@ -31,6 +31,7 @@ + #include "third_party/blink/renderer/core/dom/events/simulated_click_options.h" + #include "third_party/blink/renderer/core/events/ui_event_with_key_state.h" + #include "third_party/blink/renderer/platform/wtf/casting.h" ++#include "third_party/blink/renderer/core/page/page.h" + + namespace blink { + +@@ -143,8 +144,22 @@ class CORE_EXPORT MouseEvent : public UIEventWithKeyState { + + // Note that these values are adjusted to counter the effects of zoom, so that + // values exposed via DOM APIs are invariant under zooming. +- virtual double screenX() const { return std::floor(screen_x_); } +- virtual double screenY() const { return std::floor(screen_y_); } ++ virtual double screenX() const { ++ if (view() && view()->GetFrame() && ++ view()->GetFrame()->GetPage() && ++ view()->GetFrame()->GetPage()->IsScreenEmulated()) { ++ return std::floor(page_x_); ++ } ++ return std::floor(screen_x_); ++ } ++ virtual double screenY() const { ++ if (view() && view()->GetFrame() && ++ view()->GetFrame()->GetPage() && ++ view()->GetFrame()->GetPage()->IsScreenEmulated()) { ++ return std::floor(page_y_); ++ } ++ return std::floor(screen_y_); ++ } + + virtual double clientX() const { return std::floor(client_x_); } + virtual double clientY() const { return std::floor(client_y_); } +diff --git a/third_party/blink/renderer/core/events/pointer_event.h b/third_party/blink/renderer/core/events/pointer_event.h +--- a/third_party/blink/renderer/core/events/pointer_event.h ++++ b/third_party/blink/renderer/core/events/pointer_event.h +@@ -9,6 +9,7 @@ + #include "third_party/blink/renderer/core/core_export.h" + #include "third_party/blink/renderer/core/events/mouse_event.h" + #include "third_party/blink/renderer/platform/wtf/casting.h" ++#include "third_party/blink/renderer/core/page/page.h" + + namespace blink { + +@@ -57,11 +58,21 @@ class CORE_EXPORT PointerEvent : public MouseEvent { + double screenX() const override { + if (ShouldHaveIntegerCoordinates()) + return MouseEvent::screenX(); ++ if (view() && view()->GetFrame() && ++ view()->GetFrame()->GetPage() && ++ view()->GetFrame()->GetPage()->IsScreenEmulated()) { ++ return page_x_; ++ } + return screen_x_; + } + double screenY() const override { + if (ShouldHaveIntegerCoordinates()) + return MouseEvent::screenY(); ++ if (view() && view()->GetFrame() && ++ view()->GetFrame()->GetPage() && ++ view()->GetFrame()->GetPage()->IsScreenEmulated()) { ++ return page_y_; ++ } + return screen_y_; + } + double clientX() const override { +diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc +--- a/third_party/blink/renderer/core/exported/web_view_impl.cc ++++ b/third_party/blink/renderer/core/exported/web_view_impl.cc +@@ -1031,7 +1031,7 @@ WebPagePopupImpl* WebViewImpl::OpenPagePopup(PagePopupClient* client) { + page_popup_ = WebPagePopupImpl::Create( + std::move(popup_widget_host), std::move(widget_host), + std::move(widget_receiver), this, agent_group_scheduler, +- opener_widget->GetOriginalScreenInfos(), client); ++ opener_widget->GetScreenInfos(), client); + EnablePopupMouseWheelEventListener(web_opener_frame->LocalRoot()); + return page_popup_.get(); + } +diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_party/blink/renderer/core/frame/local_dom_window.cc +--- a/third_party/blink/renderer/core/frame/local_dom_window.cc ++++ b/third_party/blink/renderer/core/frame/local_dom_window.cc +@@ -1437,6 +1437,11 @@ int LocalDOMWindow::outerHeight() const { + if (!page) + return 0; + ++ // If screen is emulated and this frame is remote cross-origin ++ // return innerHeight ++ if (page->IsScreenEmulated() && frame->IsCrossOriginToOutermostMainFrame()) ++ return innerHeight(); ++ + ChromeClient& chrome_client = page->GetChromeClient(); + if (page->GetSettings().GetReportScreenSizeInPhysicalPixelsQuirk()) { + return static_cast( +@@ -1462,6 +1467,11 @@ int LocalDOMWindow::outerWidth() const { + if (!page) + return 0; + ++ // If screen is emulated and this frame is remote cross-origin ++ // return innerWidth ++ if (page->IsScreenEmulated() && frame->IsCrossOriginToOutermostMainFrame()) ++ return innerWidth(); ++ + ChromeClient& chrome_client = page->GetChromeClient(); + if (page->GetSettings().GetReportScreenSizeInPhysicalPixelsQuirk()) { + return static_cast( +@@ -1650,7 +1660,8 @@ double LocalDOMWindow::devicePixelRatio() const { + if (!GetFrame()) + return 0.0; + +- return GetFrame()->DevicePixelRatio(); ++ // never send the zoom factor override value ++ return GetFrame()->DevicePixelRatio(/*with_zoom_factor*/false); + } + + void LocalDOMWindow::scrollBy(double x, double y) const { +@@ -2203,6 +2214,21 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate, + if (!completed_url.IsEmpty() || result.new_window) + result.frame->Navigate(frame_request, WebFrameLoadType::kStandard); + ++ if (result.frame->IsLocalFrame()) { ++ // we need to use opener setting when opening a iframe without url ++ // (as "about:blank") to force emulated screen ++ // since result.frame.GetContentSettingsClient()->AllowViewportChange() ++ // in the Page::DidCommitLoad() event returns false for these urls ++ // ++ // prevent this js code: ++ // var w = window.open() ++ // var not_emulated_screen_info = w.screen ++ bool protection_enabled = base::FeatureList::IsEnabled(features::kViewportProtection); ++ result.frame->GetPage()->CalculateEmulatedScreenSetting( ++ To(result.frame), ++ /*force*/ protection_enabled); ++ } ++ + // TODO(japhet): window-open-noopener.html?_top and several tests in + // html/browsers/windows/browsing-context-names/ appear to require that + // the special case target names (_top, _parent, _self) ignore opener +diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc +--- a/third_party/blink/renderer/core/frame/local_frame.cc ++++ b/third_party/blink/renderer/core/frame/local_frame.cc +@@ -1278,6 +1278,10 @@ gfx::SizeF LocalFrame::ResizePageRectsKeepingRatio( + return gfx::SizeF(result_width, result_height); + } + ++void LocalFrame::SetPageZoomFactorBaseValue(float factor) { ++ page_zoom_factor_base_value_ = factor; ++} ++ + void LocalFrame::SetPageZoomFactor(float factor) { + SetPageAndTextZoomFactors(factor, text_zoom_factor_); + } +@@ -1417,12 +1421,16 @@ device::mojom::blink::DevicePostureType LocalFrame::GetDevicePosture() { + return mojo_handler_->GetDevicePosture(); + } + +-double LocalFrame::DevicePixelRatio() const { ++double LocalFrame::DevicePixelRatio(bool with_zoom_factor) const { + if (!page_) + return 0; + + double ratio = page_->InspectorDeviceScaleFactorOverride(); +- ratio *= PageZoomFactor(); ++ // with_zoom_factor is default true ++ if (with_zoom_factor) ++ ratio *= PageZoomFactor(); ++ else ++ ratio = page_zoom_factor_; + return ratio; + } + +diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h +--- a/third_party/blink/renderer/core/frame/local_frame.h ++++ b/third_party/blink/renderer/core/frame/local_frame.h +@@ -381,13 +381,14 @@ class CORE_EXPORT LocalFrame final + void SetInViewSourceMode(bool = true); + + void SetPageZoomFactor(float); +- float PageZoomFactor() const { return page_zoom_factor_; } ++ void SetPageZoomFactorBaseValue(float factor); ++ float PageZoomFactor() const { return page_zoom_factor_ + page_zoom_factor_base_value_; } + void SetTextZoomFactor(float); + float TextZoomFactor() const { return text_zoom_factor_; } + void SetPageAndTextZoomFactors(float page_zoom_factor, + float text_zoom_factor); + +- double DevicePixelRatio() const; ++ double DevicePixelRatio(bool with_zoom_factor = true) const; + + // Informs the local root's document and its local descendant subtree that a + // media query value changed. +@@ -934,6 +935,7 @@ class CORE_EXPORT LocalFrame final + unsigned hidden_ : 1; + + float page_zoom_factor_; ++ float page_zoom_factor_base_value_ = 0; + float text_zoom_factor_; + + Member probe_sink_; +diff --git a/third_party/blink/renderer/core/frame/screen_metrics_emulator.cc b/third_party/blink/renderer/core/frame/screen_metrics_emulator.cc +--- a/third_party/blink/renderer/core/frame/screen_metrics_emulator.cc ++++ b/third_party/blink/renderer/core/frame/screen_metrics_emulator.cc +@@ -34,6 +34,7 @@ void ScreenMetricsEmulator::Trace(Visitor* vistor) const { + } + + void ScreenMetricsEmulator::DisableAndApply() { ++ override_screen_type_ = false; + frame_widget_->SetScreenMetricsEmulationParameters(false, emulation_params_); + frame_widget_->SetScreenRects(original_view_screen_rect_, + original_window_screen_rect_); +@@ -45,7 +46,16 @@ void ScreenMetricsEmulator::DisableAndApply() { + + void ScreenMetricsEmulator::ChangeEmulationParams( + const DeviceEmulationParams& params) { ++ if (!params.force_mobile_calc) { ++ // user has activated device emulator via devtools ++ override_screen_type_ = true; ++ // we need to save requested value ++ last_screen_type_ = params.screen_type; ++ } + emulation_params_ = params; ++ if (override_screen_type_) { ++ emulation_params_.screen_type = last_screen_type_; ++ } + Apply(); + } + +@@ -163,6 +173,9 @@ void ScreenMetricsEmulator::Apply() { + frame_widget_->SetScreenInfoAndSize(emulated_screen_infos, + /*widget_size=*/widget_size, + /*visible_viewport_size=*/widget_size); ++ ++ // save emulated window size ++ window_size_ = window_size; + } + + void ScreenMetricsEmulator::UpdateVisualProperties( +@@ -191,9 +204,8 @@ void ScreenMetricsEmulator::OnUpdateScreenRects( + const gfx::Rect& window_screen_rect) { + original_view_screen_rect_ = view_screen_rect; + original_window_screen_rect_ = window_screen_rect; +- if (emulating_desktop()) { +- Apply(); +- } ++ // needed as we need browser ui size ++ Apply(); + } + + } // namespace blink +diff --git a/third_party/blink/renderer/core/frame/screen_metrics_emulator.h b/third_party/blink/renderer/core/frame/screen_metrics_emulator.h +--- a/third_party/blink/renderer/core/frame/screen_metrics_emulator.h ++++ b/third_party/blink/renderer/core/frame/screen_metrics_emulator.h +@@ -61,6 +61,11 @@ class ScreenMetricsEmulator : public GarbageCollected { + // Emulated position of the main frame widget (aka view) rect. + gfx::Point ViewRectOrigin(); + ++ // Get emulated window size ++ const gfx::Size& ViewWindowSize() const { ++ return window_size_; ++ } ++ + // Disables emulation and applies non-emulated values to the + // WebFrameWidgetImpl. Call this before destroying the ScreenMetricsEmulator. + void DisableAndApply(); +@@ -77,6 +82,8 @@ class ScreenMetricsEmulator : public GarbageCollected { + + private: + bool emulating_desktop() const { ++ if (emulation_params_.force_mobile_calc == true) ++ return false; + return emulation_params_.screen_type == + mojom::blink::EmulatedScreenType::kDesktop; + } +@@ -89,6 +96,10 @@ class ScreenMetricsEmulator : public GarbageCollected { + // Parameters as passed by `WebFrameWidgetImpl::EnableDeviceEmulation()` + DeviceEmulationParams emulation_params_; + ++ // Used to remember the user's choice if devtools are activated ++ bool override_screen_type_ = false; ++ mojom::EmulatedScreenType last_screen_type_; ++ + // Original values to restore back after emulation ends. + display::ScreenInfos original_screen_infos_; + gfx::Size original_widget_size_; +@@ -96,6 +107,9 @@ class ScreenMetricsEmulator : public GarbageCollected { + gfx::Rect original_view_screen_rect_; + gfx::Rect original_window_screen_rect_; + std::vector original_root_window_segments_; ++ ++ // Actual size after apply ++ gfx::Size window_size_; + }; + + } // namespace blink +diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc +--- a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc ++++ b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc +@@ -1578,6 +1578,14 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( + + if (auto* device_emulator = DeviceEmulator()) { + device_emulator->UpdateVisualProperties(visual_properties); ++ // Shink the view according to browsercontrols ++ size_ = widget_base_->DIPsToCeiledBlinkSpace( ++ device_emulator->ViewWindowSize()); ++ View()->ResizeWithBrowserControls( ++ size_.value(), ++ widget_base_->DIPsToCeiledBlinkSpace( ++ widget_base_->VisibleViewportSizeInDIPs()), ++ visual_properties.browser_controls_params); + return; + } + +diff --git a/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc b/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc +--- a/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc ++++ b/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc +@@ -349,7 +349,8 @@ void WebRemoteFrameImpl::InitializeFrameVisualProperties( + visual_properties.page_scale_factor = ancestor_widget->PageScaleInMainFrame(); + visual_properties.is_pinch_gesture_active = + ancestor_widget->PinchGestureActiveInMainFrame(); +- visual_properties.screen_infos = ancestor_widget->GetOriginalScreenInfos(); ++ // for a cross-site iframe, set the actual (original or emulated) screen infos ++ visual_properties.screen_infos = ancestor_widget->GetScreenInfos(); + visual_properties.visible_viewport_size = + ancestor_widget->VisibleViewportSizeInDIPs(); + const WebVector& window_segments = +diff --git a/third_party/blink/renderer/core/input/touch.cc b/third_party/blink/renderer/core/input/touch.cc +--- a/third_party/blink/renderer/core/input/touch.cc ++++ b/third_party/blink/renderer/core/input/touch.cc +@@ -30,6 +30,7 @@ + #include "third_party/blink/renderer/core/frame/local_frame_view.h" + #include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h" + #include "ui/gfx/geometry/point_f.h" ++#include "third_party/blink/renderer/core/page/page.h" + + namespace blink { + +@@ -75,7 +76,13 @@ Touch::Touch(LocalFrame* frame, + radius_(radius), + rotation_angle_(rotation_angle), + force_(force), +- absolute_location_(PageToAbsolute(frame, page_pos)) {} ++ absolute_location_(PageToAbsolute(frame, page_pos)) { ++ if (frame->GetPage() && frame->GetPage()->IsScreenEmulated()) { ++ // use page_pos instead of screen_pos ++ screen_pos_.set_x(page_pos_.x()); ++ screen_pos_.set_y(page_pos_.y()); ++ } ++ } + + Touch::Touch(EventTarget* target, + int identifier, +@@ -105,7 +112,13 @@ Touch::Touch(LocalFrame* frame, const TouchInit* initializer) + radius_(initializer->radiusX(), initializer->radiusY()), + rotation_angle_(initializer->rotationAngle()), + force_(initializer->force()), +- absolute_location_(PageToAbsolute(frame, page_pos_)) {} ++ absolute_location_(PageToAbsolute(frame, page_pos_)) { ++ if (frame->GetPage() && frame->GetPage()->IsScreenEmulated()) { ++ // use page_pos instead of screen_pos ++ screen_pos_.set_x(page_pos_.x()); ++ screen_pos_.set_y(page_pos_.y()); ++ } ++ } + + Touch* Touch::CloneWithNewTarget(EventTarget* event_target) const { + return MakeGarbageCollected( +diff --git a/third_party/blink/renderer/core/page/page.cc b/third_party/blink/renderer/core/page/page.cc +--- a/third_party/blink/renderer/core/page/page.cc ++++ b/third_party/blink/renderer/core/page/page.cc +@@ -23,6 +23,7 @@ + + #include "base/compiler_specific.h" + #include "base/feature_list.h" ++#include "build/build_config.h" + #include "third_party/blink/public/common/features.h" + #include "third_party/blink/public/mojom/frame/lifecycle.mojom-blink-forward.h" + #include "third_party/blink/public/platform/platform.h" +@@ -92,6 +93,9 @@ + #include "third_party/blink/renderer/platform/scheduler/public/agent_group_scheduler.h" + #include "third_party/blink/renderer/platform/scheduler/public/frame_scheduler.h" + #include "third_party/skia/include/core/SkColor.h" ++#include "base/rand_util.h" ++#include "third_party/blink/public/common/widget/device_emulation_params.h" ++#include "third_party/blink/renderer/core/exported/web_view_impl.h" + + namespace blink { + +@@ -881,7 +885,79 @@ void Page::UpdateAcceleratedCompositingSettings() { + } + } + ++void Page::CalculateEmulatedScreenSetting(LocalFrame* frame, bool force) { ++ bool isEnabled = base::FeatureList::IsEnabled(features::kViewportProtection); ++ if (isEnabled || force) { ++ // this is the maximum (and minimum) value which in percentage ++ // corresponds to +- 0.03% ++ // more or less 3-6 pixels according to the resolution 300-600px ++ // little enough not to change the page view the user is used to, ++ // but enough to change all bounds, especially those in floating point ++ const int max_range = 300; ++ ++ // only for the local main frame ++ // the other local frames use the values from main ++ // while the remote ones do not communicate the values to the parent ++ // (and they will be local main frame in their page context) ++ if (main_frame_ == frame) { ++ // set the scale factor ++ double scale_factor = 0; ++ if (override_window_scale_factor_ != 0) { ++ scale_factor = override_window_scale_factor_; ++ } else { ++ // we allow the increase or decrease of the screen size (and view) ++ scale_factor = 1.0 + base::RandInt(-max_range, max_range) / 10000.0; ++ } ++ ++ // save the value, so a same domain navigation will reuse same value ++ override_window_scale_factor_ = scale_factor; ++ ++ // we divide the value in half: half for the screen and the view, ++ // which then the latter will be scaled again by the zoom ++ double half_random = (scale_factor - 1.0) / 2.0; ++ ++ // set emulation params ++ DeviceEmulationParams params; ++ // the screen size is changed to match the widget size with force_mobile_calc ++ params.force_mobile_calc = true; ++ params.screen_type = mojom::EmulatedScreenType::kDesktop; ++ // scale the widget size (and the screen size) by half_random scale factor ++ params.scale = 1 / (1.0 + half_random); ++ ++ GetChromeClient().GetWebView()->EnableDeviceEmulation(params); ++ ++ // set zoom factor ++ // the zoom factor is used by all the functions that manage the bounds, ++ // which is multiplied by the values in pixels when computed ++ // we do not modify the actual value but only the one used internally ++ // it becomes the base value used as the zoom property of the css, but ++ // it does not appear on the dom (which always remains 1.0) ++ double zoom_factor = 0; ++ if (override_zoom_factor_ != 0) { ++ zoom_factor = override_zoom_factor_; ++ } else { ++ // we only allow the page size to decrease, otherwise the scroll ++ // bars would not be visible ++ zoom_factor = base::RandInt(0, max_range/2) / 10000.0; ++ } ++ ++ // save the value, so a same domain navigation will reuse same value ++ override_zoom_factor_ = zoom_factor; ++ ++ frame->SetPageZoomFactorBaseValue(zoom_factor); ++ } ++ is_screen_emulated = true; ++ } else { ++ if (is_screen_emulated && main_frame_ == frame) { ++ GetChromeClient().GetWebView()->DisableDeviceEmulation(); ++ frame->SetPageZoomFactorBaseValue(0); ++ } ++ is_screen_emulated = false; ++ } ++} ++ + void Page::DidCommitLoad(LocalFrame* frame) { ++ CalculateEmulatedScreenSetting(frame); + if (main_frame_ == frame) { + GetConsoleMessageStorage().Clear(); + GetInspectorIssueStorage().Clear(); +diff --git a/third_party/blink/renderer/core/page/page.h b/third_party/blink/renderer/core/page/page.h +--- a/third_party/blink/renderer/core/page/page.h ++++ b/third_party/blink/renderer/core/page/page.h +@@ -410,6 +410,9 @@ class CORE_EXPORT Page final : public GarbageCollected, + } + mojom::blink::FencedFrameMode FencedFrameMode() { return fenced_frame_mode_; } + ++ void CalculateEmulatedScreenSetting(LocalFrame* frame, bool force = false); ++ bool IsScreenEmulated() { return is_screen_emulated; } ++ + private: + friend class ScopedPagePauser; + +@@ -539,6 +542,10 @@ class CORE_EXPORT Page final : public GarbageCollected, + // browser side FrameTree has the FrameTree::Type of kFencedFrame. + bool is_fenced_frame_tree_ = false; + ++ bool is_screen_emulated = false; ++ double override_window_scale_factor_ = 0; ++ double override_zoom_factor_ = 0; ++ + // If the page is hosted inside an MPArch fenced frame, this tracks the + // mode that the fenced frame is set to. This will always be set to kDefault + // for the ShadowDOM implementation of fenced frames. +-- +2.25.1 diff --git a/build/patches/00temporary-fix-libaom-build-error.patch b/build/patches/00temporary-fix-libaom-build-error.patch index 8e0fd5da..71a215fd 100644 --- a/build/patches/00temporary-fix-libaom-build-error.patch +++ b/build/patches/00temporary-fix-libaom-build-error.patch @@ -9,9 +9,9 @@ Subject: temporary fix libaom build error diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn --- a/third_party/libaom/BUILD.gn +++ b/third_party/libaom/BUILD.gn -@@ -260,11 +260,11 @@ static_library("libaom") { - # will detect CPU - sources += aom_ports_arm_sources +@@ -258,11 +258,11 @@ static_library("libaom") { + cpu_arch_full == "arm-neon-cpu-detect") { + deps += [ ":libaom_intrinsics_neon" ] } - if (current_cpu == "arm64" || current_cpu == "arm") { - # This is needed by all arm boards due to aom_arm_cpu_caps() diff --git a/build/patches/00ungoogled-chr-no-special-hosts-domains--add-fixup-.patch b/build/patches/00ungoogled-chr-no-special-hosts-domains--add-fixup-.patch index b962f4b9..ecacbc03 100644 --- a/build/patches/00ungoogled-chr-no-special-hosts-domains--add-fixup-.patch +++ b/build/patches/00ungoogled-chr-no-special-hosts-domains--add-fixup-.patch @@ -3,39 +3,39 @@ Date: Wed, 19 Oct 2022 13:01:32 +0000 Subject: ungoogled-chr no special hosts/domains (add fixup) --- - chrome/browser/BUILD.gn | 8 - - .../android/metrics/uma_session_stats.cc | 10 -- - chrome/browser/browser_process_impl.cc | 1 - - .../browser/chrome_content_browser_client.cc | 13 +- - chrome/browser/extensions/BUILD.gn | 1 - - .../log_sources/chrome_internal_log_source.cc | 5 - - chrome/browser/first_run/first_run.cc | 9 -- - chrome/browser/google/BUILD.gn | 2 +- - .../long_screenshots_tab_service.cc | 22 --- - .../metrics/chrome_metrics_service_client.cc | 2 +- - .../chrome_metrics_services_manager_client.cc | 5 +- - .../metrics/metrics_reporting_state.cc | 76 --------- - .../net/system_network_context_manager.cc | 1 - - .../modules/recipes/recipes_service.cc | 3 +- - .../one_google_bar_loader_impl.cc | 3 +- - .../new_tab_page/promos/promo_service.cc | 6 +- - .../page_load_metrics_initialize.cc | 2 - - ...hrome_browser_main_extra_parts_profiles.cc | 1 - - .../ui_thread_search_terms_data.cc | 4 - - chrome/browser/ui/BUILD.gn | 1 - - .../ui/webui/new_tab_page/new_tab_page_ui.cc | 5 - - .../webui/settings/reset_settings_handler.cc | 1 - - .../upgrade_detector/upgrade_detector_impl.cc | 2 +- - chrome/common/BUILD.gn | 2 - - .../url_loader_throttle_provider_impl.cc | 7 - - chrome/test/BUILD.gn | 1 - - components/google/core/common/google_util.cc | 151 +----------------- - components/google/core/common/google_util.h | 14 +- - .../search_engines/search_terms_data.cc | 4 +- - components/search_provider_logos/BUILD.gn | 2 - - .../logo_service_impl.cc | 16 +- - components/url_matcher/url_util.cc | 83 ---------- - 32 files changed, 20 insertions(+), 443 deletions(-) + chrome/browser/BUILD.gn | 8 -- + .../android/metrics/uma_session_stats.cc | 10 --- + chrome/browser/browser_process_impl.cc | 1 - + .../browser/chrome_content_browser_client.cc | 13 +-- + chrome/browser/extensions/BUILD.gn | 1 - + .../log_sources/chrome_internal_log_source.cc | 5 -- + chrome/browser/first_run/first_run.cc | 9 -- + chrome/browser/google/BUILD.gn | 2 +- + .../long_screenshots_tab_service.cc | 22 ----- + .../metrics/chrome_metrics_service_client.cc | 2 +- + .../chrome_metrics_services_manager_client.cc | 5 +- + .../metrics/metrics_reporting_state.cc | 76 ----------------- + .../net/system_network_context_manager.cc | 1 - + .../modules/recipes/recipes_service.cc | 3 +- + .../one_google_bar_loader_impl.cc | 3 +- + .../new_tab_page/promos/promo_service.cc | 6 +- + .../page_load_metrics_initialize.cc | 2 - + ...hrome_browser_main_extra_parts_profiles.cc | 1 - + .../ui_thread_search_terms_data.cc | 4 - + chrome/browser/ui/BUILD.gn | 1 - + .../ui/webui/new_tab_page/new_tab_page_ui.cc | 5 -- + .../webui/settings/reset_settings_handler.cc | 1 - + .../upgrade_detector/upgrade_detector_impl.cc | 2 +- + chrome/common/BUILD.gn | 2 - + .../url_loader_throttle_provider_impl.cc | 7 -- + chrome/test/BUILD.gn | 1 - + components/google/core/common/google_util.cc | 70 +--------------- + components/google/core/common/google_util.h | 10 +-- + .../search_engines/search_terms_data.cc | 4 +- + components/search_provider_logos/BUILD.gn | 2 - + .../logo_service_impl.cc | 16 +--- + components/url_matcher/url_util.cc | 83 ------------------- + 32 files changed, 19 insertions(+), 359 deletions(-) diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn @@ -67,7 +67,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "//chrome/common", "//chrome/common:buildflags", "//chrome/common:constants", -@@ -7692,8 +7686,6 @@ static_library("browser") { +@@ -7690,8 +7684,6 @@ static_library("browser") { "supervised_user/supervised_user_constants.h", "supervised_user/supervised_user_denylist.cc", "supervised_user/supervised_user_denylist.h", @@ -575,7 +575,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn diff --git a/components/google/core/common/google_util.cc b/components/google/core/common/google_util.cc --- a/components/google/core/common/google_util.cc +++ b/components/google/core/common/google_util.cc -@@ -29,7 +29,7 @@ namespace google_util { +@@ -52,7 +52,7 @@ bool IsCanonicalHostGoogleHostname(base::StringPiece canonical_host, // Global functions ----------------------------------------------------------- @@ -584,7 +584,7 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co std::string GetGoogleLocale(const std::string& application_locale) { // Google does not recognize "nb" for Norwegian Bokmal; it uses "no". -@@ -38,8 +38,7 @@ std::string GetGoogleLocale(const std::string& application_locale) { +@@ -61,8 +61,7 @@ std::string GetGoogleLocale(const std::string& application_locale) { GURL AppendGoogleLocaleParam(const GURL& url, const std::string& application_locale) { @@ -594,47 +594,7 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co } std::string GetGoogleCountryCode(const GURL& google_homepage_url) { -@@ -83,156 +82,12 @@ bool IsYoutubeDomainUrl(const GURL& url, SubdomainPermission subdomain_permissio - } - - bool IsGoogleAssociatedDomainUrl(const GURL& url) { // disabled on Bromite -- if ((true)) -- return false; -- -- // Some domains don't have international TLD extensions, so testing for them -- // is very straightforward. -- static const char* kSuffixesToSetHeadersFor[] = { -- ".android.com", -- ".doubleclick.com", -- ".doubleclick.net", -- ".ggpht.com", -- ".googleadservices.com", -- ".googleapis.com", -- ".googlesyndication.com", -- ".googleusercontent.com", -- ".googlevideo.com", -- ".gstatic.com", -- ".litepages.googlezip.net", -- ".youtubekids.com", -- ".ytimg.com", -- }; -- const std::string host = url.host(); -- for (size_t i = 0; i < std::size(kSuffixesToSetHeadersFor); ++i) { -- if (base::EndsWith(host, kSuffixesToSetHeadersFor[i], -- base::CompareCase::INSENSITIVE_ASCII)) { -- return true; -- } -- } -- -- // Exact hostnames in lowercase to set headers for. -- static const char* kHostsToSetHeadersFor[] = { -- "googleweblight.com", -- }; -- for (size_t i = 0; i < std::size(kHostsToSetHeadersFor); ++i) { -- if (base::EqualsCaseInsensitiveASCII(host, kHostsToSetHeadersFor[i])) -- return true; -- } -- +@@ -133,69 +132,4 @@ bool IsGoogleAssociatedDomainUrl(const GURL& url) { return false; } @@ -664,9 +624,9 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co - return *kGoogleRegisterableDomains; -} - - GURL AppendToAsyncQueryParam(const GURL& url, - const std::string& key, - const std::string& value) { +-GURL AppendToAsyncQueryParam(const GURL& url, +- const std::string& key, +- const std::string& value) { - const std::string param_name = "async"; - const std::string key_value = key + ":" + value; - bool replaced = false; @@ -701,54 +661,6 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co - GURL::Replacements replacements; - replacements.SetQueryStr(output); - return url.ReplaceComponents(replacements); -+ return url; - } -- --GoogleSearchMode GoogleSearchModeFromUrl(const GURL& url) { -- static_assert(GoogleSearchMode::kMaxValue == GoogleSearchMode::kFlights, -- "This function should be updated if new values are added to " -- "GoogleSearchMode"); -- -- base::StringPiece query_str = url.query_piece(); -- url::Component query(0, static_cast(url.query_piece().length())); -- url::Component key, value; -- GoogleSearchMode mode = GoogleSearchMode::kUnspecified; -- while (url::ExtractQueryKeyValue(query_str.data(), &query, &key, &value)) { -- base::StringPiece key_str = query_str.substr(key.begin, key.len); -- if (key_str != "tbm") { -- continue; -- } -- if (mode != GoogleSearchMode::kUnspecified) { -- // There is more than one tbm parameter, which is not expected. Return -- // kUnknown to signify the result can't be trusted. -- return GoogleSearchMode::kUnknown; -- } -- base::StringPiece value_str = query_str.substr(value.begin, value.len); -- if (value_str == "isch") { -- mode = GoogleSearchMode::kImages; -- } else if (value_str == "web") { -- mode = GoogleSearchMode::kWeb; -- } else if (value_str == "nws") { -- mode = GoogleSearchMode::kNews; -- } else if (value_str == "shop") { -- mode = GoogleSearchMode::kShopping; -- } else if (value_str == "vid") { -- mode = GoogleSearchMode::kVideos; -- } else if (value_str == "bks") { -- mode = GoogleSearchMode::kBooks; -- } else if (value_str == "flm") { -- mode = GoogleSearchMode::kFlights; -- } else if (value_str == "lcl") { -- mode = GoogleSearchMode::kLocal; -- } else { -- mode = GoogleSearchMode::kUnknown; -- } -- } -- if (mode == GoogleSearchMode::kUnspecified) { -- // No tbm query parameter means this is the Web mode. -- mode = GoogleSearchMode::kWeb; -- } -- return mode; -} - } // namespace google_util @@ -779,17 +691,6 @@ diff --git a/components/google/core/common/google_util.h b/components/google/cor // Appends the provided |key| and |value| pair to the "async" query param list, // according to the format used by the Google servers: // -@@ -154,10 +146,6 @@ GURL AppendToAsyncQueryParam(const GURL& url, - const std::string& key, - const std::string& value); - --// Returns Google Search mode used by the user. This corresponds to the tab --// (e.g. web result, image results, video results, etc.) the user is on. This --// information is extracted from the "tbm" query parameter on the Search URL. --GoogleSearchMode GoogleSearchModeFromUrl(const GURL& url); - - } // namespace google_util - diff --git a/components/search_engines/search_terms_data.cc b/components/search_engines/search_terms_data.cc --- a/components/search_engines/search_terms_data.cc +++ b/components/search_engines/search_terms_data.cc diff --git a/build/patches/00win-disable-annotate-downloads.patch b/build/patches/00win-disable-annotate-downloads.patch new file mode 100644 index 00000000..7ff29128 --- /dev/null +++ b/build/patches/00win-disable-annotate-downloads.patch @@ -0,0 +1,24 @@ +From: Your Name +Date: Wed, 28 Dec 2022 15:46:59 +0000 +Subject: win disable annotate downloads + +--- + components/download/internal/common/download_file_impl.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/components/download/internal/common/download_file_impl.cc b/components/download/internal/common/download_file_impl.cc +--- a/components/download/internal/common/download_file_impl.cc ++++ b/components/download/internal/common/download_file_impl.cc +@@ -358,8 +358,8 @@ void DownloadFileImpl::RenameAndAnnotate( + std::unique_ptr parameters(new RenameParameters( + ANNOTATE_WITH_SOURCE_INFORMATION, full_path, std::move(callback))); + parameters->client_guid = client_guid; +- parameters->source_url = source_url; +- parameters->referrer_url = referrer_url; ++ parameters->source_url = GURL(); ++ parameters->referrer_url = GURL(); + parameters->remote_quarantine = std::move(remote_quarantine); + RenameWithRetryInternal(std::move(parameters)); + } +-- +2.25.1 diff --git a/build/patches/00win-enable-HighEfficiencyMode-by-default.patch b/build/patches/00win-enable-HighEfficiencyMode-by-default.patch new file mode 100644 index 00000000..73c3ff24 --- /dev/null +++ b/build/patches/00win-enable-HighEfficiencyMode-by-default.patch @@ -0,0 +1,42 @@ +From: Your Name +Date: Wed, 28 Dec 2022 15:47:58 +0000 +Subject: win enable HighEfficiencyMode by default + +--- + components/performance_manager/features.cc | 2 +- + components/performance_manager/user_tuning/prefs.cc | 4 ++-- + 2 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/components/performance_manager/features.cc b/components/performance_manager/features.cc +--- a/components/performance_manager/features.cc ++++ b/components/performance_manager/features.cc +@@ -25,7 +25,7 @@ BASE_FEATURE(kBackgroundTabLoadingFromPerformanceManager, + + BASE_FEATURE(kHighEfficiencyModeAvailable, + "HighEfficiencyModeAvailable", +- base::FEATURE_DISABLED_BY_DEFAULT); ++ base::FEATURE_ENABLED_BY_DEFAULT); + + BASE_FEATURE(kBatterySaverModeAvailable, + "BatterySaverModeAvailable", +diff --git a/components/performance_manager/user_tuning/prefs.cc b/components/performance_manager/user_tuning/prefs.cc +--- a/components/performance_manager/user_tuning/prefs.cc ++++ b/components/performance_manager/user_tuning/prefs.cc +@@ -23,7 +23,7 @@ const char kManagedTabDiscardingExceptions[] = + "performance_tuning.tab_discarding.exceptions.managed"; + + void RegisterLocalStatePrefs(PrefRegistrySimple* registry) { +- registry->RegisterBooleanPref(kHighEfficiencyModeEnabled, false); ++ registry->RegisterBooleanPref(kHighEfficiencyModeEnabled, true); + registry->RegisterIntegerPref( + kBatterySaverModeState, + static_cast(BatterySaverModeState::kEnabledBelowThreshold)); +@@ -48,4 +48,4 @@ BatterySaverModeState GetCurrentBatterySaverModeState( + return static_cast(state); + } + +-} // namespace performance_manager::user_tuning::prefs +\ No newline at end of file ++} // namespace performance_manager::user_tuning::prefs +-- +2.25.1 diff --git a/build/patches/00win-enable-pdf-plugin.patch b/build/patches/00win-enable-pdf-plugin.patch new file mode 100644 index 00000000..4eaa0b08 --- /dev/null +++ b/build/patches/00win-enable-pdf-plugin.patch @@ -0,0 +1,23 @@ +From: Your Name +Date: Wed, 28 Dec 2022 15:46:38 +0000 +Subject: win enable pdf plugin + +--- + third_party/blink/renderer/core/frame/local_frame.cc | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc +--- a/third_party/blink/renderer/core/frame/local_frame.cc ++++ b/third_party/blink/renderer/core/frame/local_frame.cc +@@ -1929,7 +1929,9 @@ WebContentSettingsClient* LocalFrame::GetContentSettingsClient() { + } + + PluginData* LocalFrame::GetPluginData() const { ++ if (!Loader().AllowPlugins()) + return nullptr; ++ return GetPage()->GetPluginData(); + } + + void LocalFrame::SetAdTrackerForTesting(AdTracker* ad_tracker) { +-- +2.25.1 diff --git a/build/patches/AImageReader-CFI-crash-mitigations.patch b/build/patches/AImageReader-CFI-crash-mitigations.patch index f0626509..e60d7ba1 100644 --- a/build/patches/AImageReader-CFI-crash-mitigations.patch +++ b/build/patches/AImageReader-CFI-crash-mitigations.patch @@ -84,7 +84,7 @@ 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 -@@ -2502,9 +2502,9 @@ +@@ -2501,9 +2501,9 @@ "expiry_milestone": 115 }, { @@ -177,14 +177,14 @@ diff --git a/gpu/config/gpu_util.cc b/gpu/config/gpu_util.cc diff --git a/gpu/config/gpu_workaround_list.txt b/gpu/config/gpu_workaround_list.txt --- a/gpu/config/gpu_workaround_list.txt +++ b/gpu/config/gpu_workaround_list.txt -@@ -16,6 +16,7 @@ depth_stencil_renderbuffer_resize_emulation +@@ -15,6 +15,7 @@ decode_encode_srgb_for_generatemipmap + depth_stencil_renderbuffer_resize_emulation disable_2d_canvas_auto_flush disable_accelerated_av1_decode - disable_accelerated_av1_encode +disable_aimagereader + disable_accelerated_av1_encode disable_accelerated_h264_encode disable_accelerated_hevc_decode - disable_accelerated_vp8_decode diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc --- a/gpu/ipc/service/gpu_init.cc +++ b/gpu/ipc/service/gpu_init.cc @@ -231,28 +231,28 @@ diff --git a/gpu/ipc/service/stream_texture_android.cc b/gpu/ipc/service/stream_ 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 -@@ -854,6 +854,11 @@ BASE_FEATURE(kMediaDrmPreprovisioningAtStartup, - "MediaDrmPreprovisioningAtStartup", - base::FEATURE_ENABLED_BY_DEFAULT); - +@@ -750,6 +750,11 @@ BASE_FEATURE(kHardwareSecureDecryptionExperiment, + // Allows automatically disabling hardware secure Content Decryption Module + // (CDM) after failures or crashes to fallback to software secure CDMs. If this + // feature is disabled, the fallback will never happen and users could be stuck +// Enables the Android Image Reader path for Video decoding(for AVDA and MCVD) +BASE_FEATURE(kAImageReaderVideoOutput, + "AImageReaderVideoOutput", + base::FEATURE_ENABLED_BY_DEFAULT); + - // Enable picture in picture web api for android. - BASE_FEATURE(kPictureInPictureAPI, - "PictureInPictureAPI", + // in playback failures. + BASE_FEATURE(kHardwareSecureDecryptionFallback, + "HardwareSecureDecryptionFallback", 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 -@@ -246,6 +246,7 @@ MEDIA_EXPORT BASE_DECLARE_FEATURE(kMediaControlsExpandGesture); - MEDIA_EXPORT BASE_DECLARE_FEATURE(kMediaDrmPersistentLicense); - MEDIA_EXPORT BASE_DECLARE_FEATURE(kMediaDrmPreprovisioning); - MEDIA_EXPORT BASE_DECLARE_FEATURE(kMediaDrmPreprovisioningAtStartup); +@@ -232,6 +232,7 @@ MEDIA_EXPORT BASE_DECLARE_FEATURE(kVaapiVp8TemporalLayerHWEncoding); + MEDIA_EXPORT BASE_DECLARE_FEATURE(kVaapiVp9kSVCHWEncoding); + #endif // defined(ARCH_CPU_X86_FAMILY) && BUILDFLAG(IS_CHROMEOS) + MEDIA_EXPORT BASE_DECLARE_FEATURE(kVideoBlitColorAccuracy); +MEDIA_EXPORT BASE_DECLARE_FEATURE(kAImageReaderVideoOutput); - MEDIA_EXPORT BASE_DECLARE_FEATURE(kCanPlayHls); - MEDIA_EXPORT BASE_DECLARE_FEATURE(kPictureInPictureAPI); - MEDIA_EXPORT BASE_DECLARE_FEATURE(kHlsPlayer); + MEDIA_EXPORT BASE_DECLARE_FEATURE(kVp9kSVCHWDecoding); + MEDIA_EXPORT BASE_DECLARE_FEATURE(kWakeLockOptimisationHiddenMuted); + MEDIA_EXPORT BASE_DECLARE_FEATURE(kWebContentsCaptureHiDpi); -- 2.25.1 diff --git a/build/patches/API-level-21-prevent-crash-on-download.patch b/build/patches/API-level-21-prevent-crash-on-download.patch deleted file mode 100644 index b49b0404..00000000 --- a/build/patches/API-level-21-prevent-crash-on-download.patch +++ /dev/null @@ -1,47 +0,0 @@ -From: csagan5 <32685696+csagan5@users.noreply.github.com> -Date: Sun, 27 Jun 2021 16:53:48 +0200 -Subject: API level 21: prevent crash on download - -On Lollipop 5.0.x it is not possible to use the system persistent bundle. -This patch ignores boolean settings for them and prevents the crash. - -See also: https://github.com/bromite/bromite/issues/1184 - -License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ---- - .../BundleToPersistableBundleConverter.java | 13 +++++++++++-- - 1 file changed, 11 insertions(+), 2 deletions(-) - -diff --git a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BundleToPersistableBundleConverter.java b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BundleToPersistableBundleConverter.java ---- a/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BundleToPersistableBundleConverter.java -+++ b/components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BundleToPersistableBundleConverter.java -@@ -4,6 +4,7 @@ - - package org.chromium.components.background_task_scheduler.internal; - -+import android.os.Build; - import android.os.Bundle; - import android.os.PersistableBundle; - -@@ -82,9 +83,17 @@ class BundleToPersistableBundleConverter { - if (obj == null) { - persistableBundle.putString(key, null); - } else if (obj instanceof Boolean) { -- persistableBundle.putBoolean(key, (Boolean) obj); -+ if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP) { -+ failedKeys.add(key); -+ } else { -+ persistableBundle.putBoolean(key, (Boolean) obj); -+ } - } else if (obj instanceof boolean[]) { -- persistableBundle.putBooleanArray(key, (boolean[]) obj); -+ if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP) { -+ failedKeys.add(key); -+ } else { -+ persistableBundle.putBooleanArray(key, (boolean[]) obj); -+ } - } else if (obj instanceof Double) { - persistableBundle.putDouble(key, (Double) obj); - } else if (obj instanceof double[]) { --- -2.25.1 diff --git a/build/patches/AV1-codec-support.patch b/build/patches/AV1-codec-support.patch deleted file mode 100644 index c60c61e0..00000000 --- a/build/patches/AV1-codec-support.patch +++ /dev/null @@ -1,60 +0,0 @@ -From: csagan5 <32685696+csagan5@users.noreply.github.com> -Date: Sun, 16 Dec 2018 15:24:19 +0100 -Subject: AV1 codec support - -libaom build fixes (requires -fPIC) -Report AV1 as playable on Android - -License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ---- - third_party/libaom/BUILD.gn | 6 ++++-- - third_party/libaom/libaom_srcs.gni | 5 +++++ - 2 files changed, 9 insertions(+), 2 deletions(-) - -diff --git a/third_party/libaom/BUILD.gn b/third_party/libaom/BUILD.gn ---- a/third_party/libaom/BUILD.gn -+++ b/third_party/libaom/BUILD.gn -@@ -85,7 +85,7 @@ if (current_cpu == "x86" || (current_cpu == "x64" && !is_msan)) { - sources += aom_dsp_encoder_asm_sse2_x86_64 - sources += aom_dsp_encoder_asm_ssse3_x86_64 - } -- defines = [ "CHROMIUM" ] -+ defines = [ "CHROMIUM", "PIC" ] - include_dirs = libaom_include_dirs - } - -@@ -197,7 +197,7 @@ if (current_cpu == "arm64" || cpu_arch_full == "arm-neon" || - configs += [ "//build/config/compiler:no_chromium_code" ] - if (current_cpu == "arm") { - configs -= [ "//build/config/compiler:compiler_arm_fpu" ] -- cflags = [ "-mfpu=neon" ] -+ cflags = [ "-mfpu=neon", "-fPIC" ] - } - configs += [ ":libaom_config" ] - -@@ -257,6 +257,8 @@ static_library("libaom") { - if (current_cpu == "arm64" || cpu_arch_full == "arm-neon" || - cpu_arch_full == "arm-neon-cpu-detect") { - deps += [ ":libaom_intrinsics_neon" ] -+ # will detect CPU -+ sources += aom_ports_arm_sources - } - if (current_cpu == "arm64" || current_cpu == "arm") { - # This is needed by all arm boards due to aom_arm_cpu_caps() -diff --git a/third_party/libaom/libaom_srcs.gni b/third_party/libaom/libaom_srcs.gni ---- a/third_party/libaom/libaom_srcs.gni -+++ b/third_party/libaom/libaom_srcs.gni -@@ -635,6 +635,11 @@ aom_rc_interface_sources = [ - "//third_party/libaom/source/libaom/test/yuv_video_source.h", - ] - -+aom_ports_arm_sources = [ -+ "//third_party/libaom/source/libaom/aom_ports/arm_cpudetect.c", -+ "//third_party/libaom/source/libaom/aom_ports/arm.h", -+ ] -+ - aom_rtcd_sources = [ - "//third_party/libaom/source/libaom/aom_dsp/aom_dsp_rtcd.c", - "//third_party/libaom/source/libaom/aom_scale/aom_scale_rtcd.c", --- -2.25.1 diff --git a/build/patches/Add-AllowUserCertificates-flag.patch b/build/patches/Add-AllowUserCertificates-flag.patch index 4a188a91..92a873d2 100644 --- a/build/patches/Add-AllowUserCertificates-flag.patch +++ b/build/patches/Add-AllowUserCertificates-flag.patch @@ -5,17 +5,17 @@ Subject: Add AllowUserCertificates flag Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../src/org/chromium/chrome/browser/app/ChromeActivity.java | 3 +++ - .../chrome/browser/app/flags/ChromeCachedFlags.java | 1 + - chrome/browser/about_flags.cc | 6 +++++- - chrome/browser/flag_descriptions.cc | 5 +++++ - chrome/browser/flag_descriptions.h | 3 +++ - chrome/browser/flags/android/chrome_feature_list.cc | 5 +++++ - chrome/browser/flags/android/chrome_feature_list.h | 1 + - .../chromium/chrome/browser/flags/CachedFeatureFlags.java | 1 + - .../chromium/chrome/browser/flags/ChromeFeatureList.java | 3 +++ - net/android/java/src/org/chromium/net/X509Util.java | 5 +++++ - 10 files changed, 32 insertions(+), 1 deletion(-) + .../src/org/chromium/chrome/browser/app/ChromeActivity.java | 3 +++ + .../chromium/chrome/browser/app/flags/ChromeCachedFlags.java | 1 + + chrome/browser/about_flags.cc | 4 ++++ + chrome/browser/flag_descriptions.cc | 5 +++++ + chrome/browser/flag_descriptions.h | 3 +++ + chrome/browser/flags/android/chrome_feature_list.cc | 5 +++++ + chrome/browser/flags/android/chrome_feature_list.h | 1 + + .../chromium/chrome/browser/flags/CachedFeatureFlags.java | 1 + + .../org/chromium/chrome/browser/flags/ChromeFeatureList.java | 3 +++ + net/android/java/src/org/chromium/net/X509Util.java | 5 +++++ + 10 files changed, 31 insertions(+) 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 @@ -51,19 +51,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/flags/Chrom 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 -@@ -3695,7 +3695,11 @@ const FeatureEntry kFeatureEntries[] = { - flag_descriptions::kExtensionsOnChromeUrlsDescription, kOsAll, - SINGLE_VALUE_TYPE(extensions::switches::kExtensionsOnChromeURLs)}, - #endif // ENABLE_EXTENSIONS --#if BUILDFLAG(IS_ANDROID) -+#if BUILDFLAG(IS_ANDROID) // Bromite allow user certificates +@@ -8830,6 +8830,10 @@ const FeatureEntry kFeatureEntries[] = { + FEATURE_VALUE_TYPE(features::kWin10TabSearchCaptionButton)}, + #endif // BUILDFLAG(IS_WIN) + + {"allow-user-certificates", + flag_descriptions::kAllowUserCertificatesName, + flag_descriptions::kAllowUserCertificatesDescription, kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kAllowUserCertificates)}, - {"osk-resizes-visual-viewport-by-default", - flag_descriptions::kEnableOskResizesVisualViewportByDefaultName, - flag_descriptions::kEnableOskResizesVisualViewportByDefaultDescription, + {"omnibox-updated-connection-security-indicators", + flag_descriptions::kOmniboxUpdatedConnectionSecurityIndicatorsName, + flag_descriptions::kOmniboxUpdatedConnectionSecurityIndicatorsDescription, 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 @@ -95,7 +93,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio 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 -@@ -149,6 +149,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -148,6 +148,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &feed::kFeedNoViewCache, &feed::kFeedReplaceAll, &feed::kInterestFeedContentSuggestions, @@ -103,28 +101,28 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse &feed::kInterestFeedV1ClicksAndViewsConditionalUpload, &feed::kInterestFeedV2, &feed::kInterestFeedV2Autoplay, -@@ -467,6 +468,10 @@ BASE_FEATURE(kAdaptiveButtonInTopToolbarCustomizationV2, - "AdaptiveButtonInTopToolbarCustomizationV2", +@@ -468,6 +469,10 @@ BASE_FEATURE(kAllowNewIncognitoTabIntents, + "AllowNewIncognitoTabIntents", base::FEATURE_ENABLED_BY_DEFAULT); +BASE_FEATURE(kAllowUserCertificates, + "AllowUserCertificates", + base::FEATURE_DISABLED_BY_DEFAULT); + - BASE_FEATURE(kAddToHomescreenIPH, - "AddToHomescreenIPH", - base::FEATURE_DISABLED_BY_DEFAULT); + BASE_FEATURE(kFocusOmniboxInIncognitoTabIntents, + "FocusOmniboxInIncognitoTabIntents", + base::FEATURE_ENABLED_BY_DEFAULT); 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 -@@ -12,6 +12,7 @@ - namespace chrome { - namespace android { - -+extern const base::Feature kAllowUserCertificates; - // Alphabetical: - BASE_DECLARE_FEATURE(kAdaptiveButtonInTopToolbar); +@@ -17,6 +17,7 @@ BASE_DECLARE_FEATURE(kAdaptiveButtonInTopToolbar); BASE_DECLARE_FEATURE(kAdaptiveButtonInTopToolbarCustomizationV2); + BASE_DECLARE_FEATURE(kAddToHomescreenIPH); + BASE_DECLARE_FEATURE(kAllowNewIncognitoTabIntents); ++BASE_DECLARE_FEATURE(kAllowUserCertificates); + BASE_DECLARE_FEATURE(kAndroidScrollOptimizations); + BASE_DECLARE_FEATURE(kAndroidSearchEngineChoiceNotification); + BASE_DECLARE_FEATURE(kAssistantConsentModal); diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlags.java @@ -147,7 +145,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String ABOUT_THIS_SITE_BANNER = "AboutThisSiteBanner"; public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR = "AdaptiveButtonInTopToolbar"; public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_CUSTOMIZATION_V2 = -@@ -646,6 +647,8 @@ public abstract class ChromeFeatureList { +@@ -648,6 +649,8 @@ public abstract class ChromeFeatureList { public static final String FEED_REPLACE_ALL = "FeedReplaceAll"; /* Alphabetical: */ diff --git a/build/patches/Add-IsCleartextPermitted-flag.patch b/build/patches/Add-IsCleartextPermitted-flag.patch index 91e83aa1..105ca155 100644 --- a/build/patches/Add-IsCleartextPermitted-flag.patch +++ b/build/patches/Add-IsCleartextPermitted-flag.patch @@ -16,7 +16,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 -@@ -9071,6 +9071,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -9070,6 +9070,10 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kRequestDesktopSiteExceptionsName, flag_descriptions::kRequestDesktopSiteExceptionsDescription, kOsAndroid, FEATURE_VALUE_TYPE(features::kRequestDesktopSiteExceptions)}, @@ -44,7 +44,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -957,6 +957,9 @@ extern const char kHideShelfControlsInTabletModeDescription[]; +@@ -960,6 +960,9 @@ extern const char kHideShelfControlsInTabletModeDescription[]; extern const char kHttpsOnlyModeName[]; extern const char kHttpsOnlyModeDescription[]; @@ -57,16 +57,16 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio diff --git a/net/base/features.cc b/net/base/features.cc --- a/net/base/features.cc +++ b/net/base/features.cc -@@ -73,6 +73,10 @@ BASE_FEATURE(kEncryptedClientHello, - "EncryptedClientHello", - base::FEATURE_DISABLED_BY_DEFAULT); +@@ -113,6 +113,10 @@ BASE_FEATURE(kPartitionNelAndReportingByNetworkIsolationKey, + "PartitionNelAndReportingByNetworkIsolationKey", // must be enabled + base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite +BASE_FEATURE(kIsCleartextPermitted, + "IsCleartextPermitted", + base::FEATURE_ENABLED_BY_DEFAULT); + - BASE_FEATURE(kNetworkQualityEstimator, - "NetworkQualityEstimator", + BASE_FEATURE(kEnableDoubleKeyNetworkAnonymizationKey, + "EnableDoubleKeyNetworkAnonymizationKey", base::FEATURE_DISABLED_BY_DEFAULT); diff --git a/net/base/features.h b/net/base/features.h --- a/net/base/features.h @@ -75,7 +75,7 @@ diff --git a/net/base/features.h b/net/base/features.h // origin requests are restricted to contain at most the source origin. NET_EXPORT BASE_DECLARE_FEATURE(kCapReferrerToOriginOnCrossOrigin); -+NET_EXPORT extern const base::Feature kIsCleartextPermitted; ++NET_EXPORT BASE_DECLARE_FEATURE(kIsCleartextPermitted); + // Support for altering the parameters used for DNS transaction timeout. See // ResolveContext::SecureTransactionTimeout(). diff --git a/build/patches/Add-a-proxy-configuration-page.patch b/build/patches/Add-a-proxy-configuration-page.patch index fb363542..9469d8f9 100644 --- a/build/patches/Add-a-proxy-configuration-page.patch +++ b/build/patches/Add-a-proxy-configuration-page.patch @@ -3,11 +3,15 @@ Date: Thu, 29 Mar 2018 00:43:32 +0200 Subject: Add a proxy configuration page Accessible from proxy settings and chrome://proxy -Allows to use a PAC script URL, automatic configuration and explicit proxy -settings. +Allows to use a PAC script URL, automatic configuration and explicit proxy settings. Offer auto-complete for the proxy page URL. -Store proxy settings in LocalState instead of Profile, so that proxy is used -for SimpleURLLoaders as well. +Store proxy settings in LocalState instead of Profile, so that proxy is used for SimpleURLLoaders as well; +this implementation is the same as the one in ChromeOS which gets proxy information from the LocalState +for the system network context; this is strictly not correct on Android because the network context is +never connected to any user profile and only gets proxy information from the system. +Existing settings on Profile are migrated to LocalState on startup. + +Credits to @uazo for the LocalState integration. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- @@ -72,7 +76,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/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 -@@ -54,6 +54,7 @@ public class PrivacySettings +@@ -59,6 +59,7 @@ public class PrivacySettings private static final String PREF_DO_NOT_TRACK = "do_not_track"; private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data"; private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox"; @@ -637,7 +641,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 -@@ -287,6 +287,8 @@ static_library("ui") { +@@ -285,6 +285,8 @@ static_library("ui") { "webui/metrics_internals/metrics_internals_ui.h", "webui/net_export_ui.cc", "webui/net_export_ui.h", @@ -649,7 +653,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 -@@ -61,6 +61,7 @@ +@@ -60,6 +60,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" @@ -657,7 +661,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/segmentation_internals/segmentation_internals_ui.h" #include "chrome/browser/ui/webui/signin_internals_ui.h" -@@ -798,6 +799,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, +@@ -795,6 +796,8 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, return &NewWebUI; if (url.host_piece() == chrome::kChromeUINetExportHost) return &NewWebUI; @@ -1288,7 +1292,7 @@ diff --git a/components/proxy_config/proxy_config_dictionary.h b/components/prox static base::Value::Dict CreateFixedServers(const std::string& proxy_server, - const std::string& bypass_list); + const std::string& bypass_list, -+ bool reverse_bypass); ++ bool reverse_bypass); static base::Value::Dict CreateSystem(); // Encodes the proxy server as "=://". @@ -1298,7 +1302,7 @@ diff --git a/components/proxy_config/proxy_config_dictionary.h b/components/prox const std::string& proxy_server, - const std::string& bypass_list); + const std::string& bypass_list, -+ bool reverse_bypass); ++ bool reverse_bypass); base::Value::Dict dict_; }; diff --git a/build/patches/Add-an-always-incognito-mode.patch b/build/patches/Add-an-always-incognito-mode.patch index b294c235..b2dd4d11 100644 --- a/build/patches/Add-an-always-incognito-mode.patch +++ b/build/patches/Add-an-always-incognito-mode.patch @@ -35,7 +35,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/history/HistoryManager.java | 18 +- .../chrome/browser/history/HistoryPage.java | 16 ++ .../native_page/NativePageFactory.java | 4 +- - .../chrome/browser/ntp/RecentTabsManager.java | 27 ++- + .../chrome/browser/ntp/RecentTabsManager.java | 28 ++- .../privacy/settings/IncognitoSettings.java | 160 ++++++++++++++++++ .../browser/settings/SettingsActivity.java | 4 + .../HistoricalTabModelObserver.java | 6 +- @@ -59,7 +59,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/history/history_tab_helper.h | 10 +- .../android/offline_page_bridge.cc | 11 +- .../android/offline_page_model_factory.cc | 20 ++- - .../android/request_coordinator_factory.cc | 26 ++- + .../android/request_coordinator_factory.cc | 27 ++- .../offline_page_model_factory.h | 1 + .../offline_pages/recent_tab_helper.cc | 19 ++- .../browser/offline_pages/recent_tab_helper.h | 3 + @@ -68,7 +68,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/ui/android/native_page/BUILD.gn | 2 + .../browser/ui/native_page/NativePage.java | 12 +- .../strings/android_chrome_strings.grd | 31 ++++ - .../browser/toolbar/LocationBarModel.java | 11 +- + .../browser/toolbar/LocationBarModel.java | 7 +- chrome/browser/ui/messages/android/BUILD.gn | 1 + .../snackbar/INeedSnackbarManager.java | 27 +++ chrome/common/pref_names.cc | 6 + @@ -84,7 +84,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../omnibox/browser/base_search_provider.cc | 2 +- components/omnibox/browser/search_provider.cc | 4 +- .../host_content_settings_map_factory.cc | 1 + - 65 files changed, 721 insertions(+), 77 deletions(-) + 65 files changed, 719 insertions(+), 77 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 @@ -93,7 +93,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 -@@ -661,6 +661,7 @@ chrome_java_resources = [ +@@ -652,6 +652,7 @@ chrome_java_resources = [ "java/res/xml/main_preferences.xml", "java/res/xml/manage_sync_preferences.xml", "java/res/xml/phone_as_a_security_key_accessory_filter.xml", @@ -112,7 +112,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/com/google/android/apps/chrome/appwidget/bookmarks/BookmarkThumbnailWidgetProvider.java", "java/src/org/chromium/chrome/browser/ActivityTabProvider.java", "java/src/org/chromium/chrome/browser/ActivityUtils.java", -@@ -964,6 +965,7 @@ chrome_java_sources = [ +@@ -914,6 +915,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/privacy/settings/IncognitoLockSettings.java", "java/src/org/chromium/chrome/browser/privacy/settings/PrivacyPreferencesManagerImpl.java", "java/src/org/chromium/chrome/browser/privacy/settings/PrivacySettings.java", @@ -228,7 +228,7 @@ new file mode 100644 + public static void migrateSettingToNative() { + if (isAlwaysIncognito()) { + PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); -+ if(!prefService.getBoolean(Pref.ALWAYS_INCOGNITO_ENABLED)) { ++ if (!prefService.getBoolean(Pref.ALWAYS_INCOGNITO_ENABLED)) { + Log.i(TAG, "Pref migration from java to native"); + prefService.setBoolean(Pref.ALWAYS_INCOGNITO_ENABLED, true); + } @@ -272,15 +272,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct 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 -@@ -98,6 +98,7 @@ import org.chromium.chrome.browser.contextualsearch.ContextualSearchFieldTrial; - import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager; - import org.chromium.chrome.browser.contextualsearch.ContextualSearchManager.ContextualSearchTabPromotionDelegate; +@@ -93,6 +93,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.ContentOffsetProvi + import org.chromium.chrome.browser.compositor.layouts.content.TabContentManager; + import org.chromium.chrome.browser.compositor.layouts.content.TabContentManagerHandler; import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; import org.chromium.chrome.browser.dependency_injection.ChromeActivityComponent; import org.chromium.chrome.browser.dependency_injection.ModuleFactoryOverrides; import org.chromium.chrome.browser.device.DeviceClassManager; -@@ -1830,6 +1831,9 @@ public abstract class ChromeActivity +@@ -1808,6 +1809,9 @@ public abstract class ChromeActivity throw new IllegalStateException( "Attempting to access TabCreator before initialization"); } @@ -301,7 +301,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App import org.chromium.chrome.browser.banners.AppMenuVerbiage; import org.chromium.chrome.browser.bookmarks.BookmarkFeatures; import org.chromium.chrome.browser.bookmarks.BookmarkModel; -@@ -101,6 +102,10 @@ import java.util.ArrayList; +@@ -99,6 +100,10 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -312,7 +312,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. -@@ -562,6 +567,13 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -560,6 +565,13 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate } private void prepareCommonMenuItems(Menu menu, @MenuGroup int menuGroup, boolean isIncognito) { @@ -326,7 +326,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; -@@ -640,7 +652,15 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -636,7 +648,15 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate } if (item.getItemId() == R.id.recent_tabs_menu_id) { @@ -343,7 +343,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App } if (item.getItemId() == R.id.menu_group_tabs) { item.setVisible(isMenuGroupTabsVisible); -@@ -880,7 +900,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -876,7 +896,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate // is not persisted when adding to the homescreen. // * If creating shortcuts it not supported by the current home screen. return WebappsUtils.isAddToHomeIntentSupported() && !isChromeScheme && !isFileScheme @@ -616,8 +616,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/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 -@@ -24,6 +24,15 @@ import org.chromium.components.signin.identitymanager.ConsentLevel; - import org.chromium.components.signin.metrics.SigninAccessPoint; +@@ -21,6 +21,15 @@ import org.chromium.chrome.browser.ui.favicon.FaviconHelper; + import org.chromium.chrome.browser.ui.favicon.FaviconHelper.FaviconImageCallback; import org.chromium.url.GURL; +import android.content.Intent; @@ -632,7 +632,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; -@@ -81,7 +90,8 @@ public class RecentTabsManager implements AccountsChangeObserver { +@@ -78,7 +87,8 @@ public class RecentTabsManager { */ public RecentTabsManager(Tab tab, TabModelSelector tabModelSelector, Profile profile, Context context, Runnable showHistoryManager) { @@ -642,7 +642,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM mActiveTab = tab; mTabModelSelector = tabModelSelector; mShowHistoryManager = showHistoryManager; -@@ -213,6 +223,21 @@ public class RecentTabsManager implements AccountsChangeObserver { +@@ -210,6 +220,22 @@ public class RecentTabsManager { */ public void openRecentlyClosedTab(RecentlyClosedTab tab, int windowDisposition) { if (mIsDestroyed) return; @@ -654,8 +654,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM + Intent intent = new Intent(Intent.ACTION_VIEW, + Uri.parse(tab.getUrl().getSpec())); + intent.putExtra(Browser.EXTRA_APPLICATION_ID, context.getPackageName()); -+ if (windowDisposition != WindowOpenDisposition.CURRENT_TAB) -+ intent.putExtra(Browser.EXTRA_CREATE_NEW_TAB, true); ++ if (windowDisposition != WindowOpenDisposition.CURRENT_TAB) { ++ intent.putExtra(IntentHandler.EXTRA_OPEN_NEW_INCOGNITO_TAB, true); ++ } + intent.setPackage(context.getPackageName()); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + IntentHandler.startActivityForTrustedIntent(intent); @@ -840,7 +841,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarManageable; import org.chromium.components.browser_ui.accessibility.AccessibilitySettings; -@@ -253,6 +254,9 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -254,6 +255,9 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity if (fragment instanceof AdPersonalizationRemovedFragment) { ((AdPersonalizationRemovedFragment) fragment).setSnackbarManager(getSnackbarManager()); } @@ -962,7 +963,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 -@@ -126,6 +126,8 @@ import org.chromium.components.webapps.bottomsheet.PwaBottomSheetControllerFacto +@@ -122,6 +122,8 @@ import org.chromium.components.webapps.bottomsheet.PwaBottomSheetControllerFacto import org.chromium.content_public.browser.WebContents; import org.chromium.ui.base.ActivityWindowAndroid; import org.chromium.ui.base.DeviceFormFactor; @@ -971,7 +972,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.modaldialog.ModalDialogManager; -@@ -492,7 +494,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -482,7 +484,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { mAppMenuCoordinator == null ? null : mAppMenuCoordinator.getAppMenuHandler(); mEmptyBackgroundViewWrapper = new EmptyBackgroundViewWrapper(mTabModelSelectorSupplier.get(), @@ -1059,7 +1060,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; -@@ -526,7 +527,8 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve +@@ -523,7 +524,8 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve return ret; } }, @@ -1117,7 +1118,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI 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 -@@ -4886,6 +4886,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -4837,6 +4837,10 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kOfflinePagesLivePageSharingName, flag_descriptions::kOfflinePagesLivePageSharingDescription, kOsAndroid, FEATURE_VALUE_TYPE(offline_pages::kOfflinePagesLivePageSharingFeature)}, @@ -1294,15 +1295,14 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio 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 -@@ -570,9 +570,9 @@ BASE_FEATURE(kCCTNewDownloadTab, - +@@ -561,8 +561,8 @@ BASE_FEATURE(kCCTNewDownloadTab, BASE_FEATURE(kCCTIncognito, "CCTIncognito", base::FEATURE_ENABLED_BY_DEFAULT); --BASE_FEATURE(kCCTIncognitoAvailableToThirdParty, -+BASE_FEATURE(kCCTIncognitoAvailableToThirdParty, // Enabled by default in Bromite - "CCTIncognitoAvailableToThirdParty", + BASE_FEATURE(kCCTIncognitoAvailableToThirdParty, +- "CCTIncognitoAvailableToThirdParty", - base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_ENABLED_BY_DEFAULT); ++ "CCTIncognitoAvailableToThirdParty", // must be enabled ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kCCTPackageNameRecording, "CCTPackageNameRecording", @@ -1325,7 +1325,7 @@ diff --git a/chrome/browser/history/history_tab_helper.cc b/chrome/browser/histo Profile::FromBrowserContext(web_contents()->GetBrowserContext()); + +#if BUILDFLAG(IS_ANDROID) -+ if(profile->GetOriginalProfile()->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled)) { ++ if (profile->GetOriginalProfile()->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled)) { + return HistoryServiceFactory::GetForProfile(profile, ServiceAccessType::IMPLICIT_ACCESS); + } +#endif @@ -1402,7 +1402,7 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_bridge.cc b/chrom + bool is_trusted = true; + // in always incognito, never trust input file (show file name in url) + ProfileKey* profile_key = ProfileKey::FromSimpleFactoryKey(key_); -+ if(profile_key->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled)) ++ if (profile_key->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled)) + is_trusted = false; + ValidateFileCallback(launch_location, j_callback_obj, @@ -1458,11 +1458,11 @@ diff --git a/chrome/browser/offline_pages/android/offline_page_model_factory.cc +SimpleFactoryKey* OfflinePageModelFactory::GetKeyToUse( + SimpleFactoryKey* key) const { + ProfileKey* profile_key = ProfileKey::FromSimpleFactoryKey(key); -+ if(profile_key->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled) == false) { ++ if (profile_key->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled) == false) { + return SimpleKeyedServiceFactory::GetKeyToUse(key); -+ } else { -+ return profile_key->GetOriginalKey(); + } ++ ++ return profile_key->GetOriginalKey(); +} + } // namespace offline_pages @@ -1499,31 +1499,32 @@ diff --git a/chrome/browser/offline_pages/android/request_coordinator_factory.cc // Depends on OfflinePageModelFactory in SimpleDependencyManager. } -@@ -79,6 +86,11 @@ RequestCoordinator* RequestCoordinatorFactory::GetForBrowserContext( +@@ -79,6 +86,12 @@ RequestCoordinator* RequestCoordinatorFactory::GetForBrowserContext( KeyedService* RequestCoordinatorFactory::BuildServiceInstanceFor( content::BrowserContext* context) const { -+ if(context->IsOffTheRecord() && ++ if (context->IsOffTheRecord() && + Profile::FromBrowserContext(context)->GetOriginalProfile() + ->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled) == false) { ++ // do not track history in incognito mode if preference is disabled + return nullptr; + } std::unique_ptr policy(new OfflinerPolicy()); std::unique_ptr offliner; OfflinePageModel* model = -@@ -111,4 +123,16 @@ KeyedService* RequestCoordinatorFactory::BuildServiceInstanceFor( +@@ -111,4 +124,16 @@ KeyedService* RequestCoordinatorFactory::BuildServiceInstanceFor( return request_coordinator; } +content::BrowserContext* +RequestCoordinatorFactory::GetBrowserContextToUse( + content::BrowserContext* context) const { -+ if(Profile::FromBrowserContext(context)->GetOriginalProfile() ++ if (Profile::FromBrowserContext(context)->GetOriginalProfile() + ->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled) == false) { + return BrowserContextKeyedServiceFactory::GetBrowserContextToUse(context); -+ } else { -+ return chrome::GetBrowserContextRedirectedInIncognito(context); + } ++ ++ return chrome::GetBrowserContextRedirectedInIncognito(context); +} + + @@ -1558,8 +1559,8 @@ diff --git a/chrome/browser/offline_pages/recent_tab_helper.cc b/chrome/browser/ // WebContents with its origin as well. snapshots_enabled_ = !tab_id_.empty() && !web_contents()->GetBrowserContext()->IsOffTheRecord(); -+ if(!tab_id_.empty() && web_contents()->GetBrowserContext()->IsOffTheRecord()) { -+ if(Profile::FromBrowserContext(web_contents()->GetBrowserContext()) ++ if (!tab_id_.empty() && web_contents()->GetBrowserContext()->IsOffTheRecord()) { ++ if (Profile::FromBrowserContext(web_contents()->GetBrowserContext()) + ->GetOriginalProfile() + ->GetPrefs()->GetBoolean(prefs::kIncognitoTabHistoryEnabled) == true) { + snapshots_enabled_ = true; @@ -1701,7 +1702,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 -@@ -1177,6 +1177,37 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1151,6 +1151,37 @@ Your Google account may have other forms of browsing history like searches and a Clears history from all synced devices. @@ -1768,26 +1769,15 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow } /** -@@ -430,6 +433,10 @@ public class LocationBarModel implements ToolbarDataProvider, LocationBarDataPro - if (mOptimizationsEnabled) { - autocompleteSchemeClassifier = mChromeAutocompleteSchemeClassifier; - cachedSpannableDisplayText = mSpannableDisplayTextCache.get(cacheKey); -+ if (mIsAlwaysIncognito) { -+ // the profile may be destroyed and no longer be valid -+ autocompleteSchemeClassifier = new ChromeAutocompleteSchemeClassifier(getProfile()); -+ } - } else { - autocompleteSchemeClassifier = new ChromeAutocompleteSchemeClassifier(getProfile()); - } -@@ -447,7 +454,7 @@ public class LocationBarModel implements ToolbarDataProvider, LocationBarDataPro - } - } - } finally { -- if (!mOptimizationsEnabled) { -+ if (!mOptimizationsEnabled || mIsAlwaysIncognito) { - autocompleteSchemeClassifier.destroy(); - } - } +@@ -207,7 +210,7 @@ public class LocationBarModel implements ToolbarDataProvider, LocationBarDataPro + */ + public void initializeWithNative() { + mOptimizationsEnabled = +- ChromeFeatureList.isEnabled(ChromeFeatureList.ANDROID_SCROLL_OPTIMIZATIONS); ++ ChromeFeatureList.isEnabled(ChromeFeatureList.ANDROID_SCROLL_OPTIMIZATIONS) && !mIsAlwaysIncognito; + mLastUsedNonOTRProfile = Profile.getLastUsedRegularProfile(); + mNativeLocationBarModelAndroid = LocationBarModelJni.get().init(LocationBarModel.this); + diff --git a/chrome/browser/ui/messages/android/BUILD.gn b/chrome/browser/ui/messages/android/BUILD.gn --- a/chrome/browser/ui/messages/android/BUILD.gn +++ b/chrome/browser/ui/messages/android/BUILD.gn @@ -1873,7 +1863,7 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h diff --git a/components/content_settings/core/browser/content_settings_pref_provider.cc b/components/content_settings/core/browser/content_settings_pref_provider.cc --- a/components/content_settings/core/browser/content_settings_pref_provider.cc +++ b/components/content_settings/core/browser/content_settings_pref_provider.cc -@@ -120,10 +120,12 @@ void PrefProvider::RegisterProfilePrefs( +@@ -122,10 +122,12 @@ void PrefProvider::RegisterProfilePrefs( PrefProvider::PrefProvider(PrefService* prefs, bool off_the_record, @@ -1886,7 +1876,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov store_last_modified_(store_last_modified), clock_(base::DefaultClock::GetInstance()) { TRACE_EVENT_BEGIN("startup", "PrefProvider::PrefProvider"); -@@ -157,7 +159,9 @@ PrefProvider::PrefProvider(PrefService* prefs, +@@ -159,7 +161,9 @@ PrefProvider::PrefProvider(PrefService* prefs, content_settings_prefs_.insert(std::make_pair( info->type(), std::make_unique( info->type(), prefs_, &pref_change_registrar_, @@ -1908,7 +1898,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov bool store_last_modified, bool restore_session); -@@ -85,6 +86,7 @@ class PrefProvider : public UserModifiableProvider { +@@ -88,6 +89,7 @@ class PrefProvider : public UserModifiableProvider { raw_ptr prefs_; const bool off_the_record_; @@ -1955,7 +1945,7 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. bool store_last_modified, bool restore_session); -@@ -439,6 +440,8 @@ class HostContentSettingsMap : public content_settings::Observer, +@@ -442,6 +443,8 @@ class HostContentSettingsMap : public content_settings::Observer, // Whether this settings map is for an incognito or guest session. bool is_off_the_record_; diff --git a/build/patches/Add-bookmark-import-export-actions.patch b/build/patches/Add-bookmark-import-export-actions.patch index 62fd48b0..540aa606 100644 --- a/build/patches/Add-bookmark-import-export-actions.patch +++ b/build/patches/Add-bookmark-import-export-actions.patch @@ -249,7 +249,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm import android.text.TextUtils; import android.util.Pair; -@@ -45,6 +58,32 @@ import java.util.HashMap; +@@ -42,6 +55,32 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -282,7 +282,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. -@@ -526,6 +565,209 @@ class BookmarkBridge { +@@ -442,6 +481,209 @@ class BookmarkBridge { mNativeBookmarkBridge, BookmarkBridge.this, id.getId(), id.getType()); } @@ -492,7 +492,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. * @param query Keyword used for searching bookmarks. -@@ -1074,6 +1316,39 @@ class BookmarkBridge { +@@ -990,6 +1232,39 @@ class BookmarkBridge { depthList.add(depth); } @@ -532,7 +532,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++) { -@@ -1145,6 +1420,9 @@ class BookmarkBridge { +@@ -1061,6 +1336,9 @@ class BookmarkBridge { int getChildCount(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type); void getChildIDs(long nativeBookmarkBridge, BookmarkBridge caller, long id, int type, List bookmarksList); @@ -565,7 +565,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java -@@ -37,6 +37,8 @@ import org.chromium.components.browser_ui.util.ConversionUtils; +@@ -36,6 +36,8 @@ import org.chromium.components.browser_ui.util.ConversionUtils; import org.chromium.components.browser_ui.widget.dragreorder.DragStateDelegate; import org.chromium.components.browser_ui.widget.selectable_list.SelectableListLayout; import org.chromium.components.browser_ui.widget.selectable_list.SelectableListToolbar.SearchDelegate; @@ -574,7 +574,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm import org.chromium.components.browser_ui.widget.selectable_list.SelectionDelegate; import org.chromium.components.favicon.LargeIconBridge; import org.chromium.url.GURL; -@@ -60,6 +62,8 @@ public class BookmarkManager +@@ -59,6 +61,8 @@ public class BookmarkManager private ComponentName mOpenBookmarkComponentName; private ViewGroup mMainView; private BookmarkModel mBookmarkModel; @@ -583,7 +583,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm private BookmarkUndoController mUndoController; private final ObserverList mUIObservers = new ObserverList<>(); private BasicNativePage mNativePage; -@@ -356,6 +360,14 @@ public class BookmarkManager +@@ -344,6 +348,14 @@ public class BookmarkManager mNativePage = nativePage; } @@ -598,7 +598,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm /** * @return Current URL representing the UI state of bookmark manager. If no state has been shown * yet in this session, on phone return last used state stored in preference; on tablet -@@ -552,6 +564,16 @@ public class BookmarkManager +@@ -540,6 +552,16 @@ public class BookmarkManager } } @@ -718,7 +718,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn configs += [ "//build/config/compiler:wexit_time_destructors", "//build/config:precompiled_headers", -@@ -2919,6 +2926,8 @@ static_library("browser") { +@@ -2904,6 +2911,8 @@ static_library("browser") { "autofill/manual_filling_controller.h", "autofill/manual_filling_controller_impl.cc", "autofill/manual_filling_controller_impl.h", @@ -727,7 +727,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "autofill/manual_filling_utils.cc", "autofill/manual_filling_utils.h", "autofill/manual_filling_view_interface.h", -@@ -3602,8 +3611,6 @@ static_library("browser") { +@@ -3583,8 +3592,6 @@ static_library("browser") { "badging/badge_manager_factory.h", "banners/app_banner_manager_desktop.cc", "banners/app_banner_manager_desktop.h", @@ -739,7 +739,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -9088,6 +9088,12 @@ const FeatureEntry kFeatureEntries[] = { +@@ -9039,6 +9039,12 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(features::kRequestDesktopSiteExceptions)}, #endif @@ -1279,7 +1279,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio 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 -@@ -182,6 +182,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -181,6 +181,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kCastDeviceFilter, &kClearOmniboxFocusAfterNavigation, &kCloseTabSuggestions, @@ -1287,7 +1287,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse &kCriticalPersistedTabData, &kCommerceCoupons, &kCCTBackgroundTab, -@@ -1156,6 +1157,11 @@ BASE_FEATURE(kWebApkTrampolineOnInitialIntent, +@@ -1114,6 +1115,11 @@ BASE_FEATURE(kWebApkTrampolineOnInitialIntent, "WebApkTrampolineOnInitialIntent", base::FEATURE_ENABLED_BY_DEFAULT); @@ -1302,14 +1302,14 @@ 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 -@@ -171,6 +171,7 @@ BASE_DECLARE_FEATURE(kTabSwitcherOnReturn); +@@ -161,6 +161,7 @@ BASE_DECLARE_FEATURE(kDiscoverFeedMultiColumn); + BASE_DECLARE_FEATURE(kTabStripRedesign); + BASE_DECLARE_FEATURE(kTabSwitcherOnReturn); BASE_DECLARE_FEATURE(kTabToGTSAnimation); ++BASE_DECLARE_FEATURE(kBookmarksExportUseSaf); BASE_DECLARE_FEATURE(kTestDefaultDisabled); BASE_DECLARE_FEATURE(kTestDefaultEnabled); -+BASE_DECLARE_FEATURE(kBookmarksExportUseSaf); BASE_DECLARE_FEATURE(kToolbarMicIphAndroid); - BASE_DECLARE_FEATURE(kToolbarPhoneOptimizations); - BASE_DECLARE_FEATURE(kToolbarScrollAblationAndroid); 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 diff --git a/build/patches/Add-custom-tab-intents-privacy-option.patch b/build/patches/Add-custom-tab-intents-privacy-option.patch index 81b52d17..c188fbaf 100644 --- a/build/patches/Add-custom-tab-intents-privacy-option.patch +++ b/build/patches/Add-custom-tab-intents-privacy-option.patch @@ -196,7 +196,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 -@@ -4791,6 +4791,21 @@ To change this setting, <resetlink>reset sync

<resetlink>reset sync

Show original diff --git a/build/patches/Add-exit-menu-item.patch b/build/patches/Add-exit-menu-item.patch index 37da3fb0..1454b425 100644 --- a/build/patches/Add-exit-menu-item.patch +++ b/build/patches/Add-exit-menu-item.patch @@ -88,7 +88,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.ChromeActivitySessionTracker; import org.chromium.chrome.browser.ChromeApplicationImpl; import org.chromium.chrome.browser.ChromeKeyboardVisibilityDelegate; -@@ -2342,6 +2343,11 @@ public abstract class ChromeActivity +@@ -2292,6 +2293,11 @@ public abstract class ChromeActivity return true; } @@ -119,7 +119,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLife 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 -@@ -3496,6 +3496,9 @@ To change this setting, <resetlink>reset sync

<resetlink>reset sync

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 5cd603aa..9ea09477 100644 --- a/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch +++ b/build/patches/Add-flag-for-omnibox-autocomplete-filtering.patch @@ -40,7 +40,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc const FeatureEntry::FeatureParam kAdaptiveButton_AlwaysNone[] = { {"mode", "always-none"}}; const FeatureEntry::FeatureParam kAdaptiveButton_AlwaysNewTab[] = { -@@ -4376,7 +4392,11 @@ const FeatureEntry kFeatureEntries[] = { +@@ -4371,7 +4387,11 @@ const FeatureEntry kFeatureEntries[] = { kOsMac | kOsLinux | kOsWin, FEATURE_VALUE_TYPE(features::kSystemNotifications)}, #endif // BUILDFLAG(ENABLE_SYSTEM_NOTIFICATIONS) && !BUILDFLAG(IS_CHROMEOS_ASH) diff --git a/build/patches/Add-flag-for-save-data-header.patch b/build/patches/Add-flag-for-save-data-header.patch index 0a97d121..14aafb4e 100644 --- a/build/patches/Add-flag-for-save-data-header.patch +++ b/build/patches/Add-flag-for-save-data-header.patch @@ -8,14 +8,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/flag_descriptions.cc | 4 ++++ chrome/browser/flag_descriptions.h | 3 +++ .../browser/loader/browser_initiated_resource_request.cc | 8 ++++++++ - services/network/public/cpp/features.cc | 4 ++++ - services/network/public/cpp/features.h | 2 ++ - 6 files changed, 25 insertions(+), 1 deletion(-) + services/network/public/cpp/features.cc | 5 +++++ + services/network/public/cpp/features.h | 2 +- + 6 files changed, 25 insertions(+), 2 deletions(-) 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 -@@ -4986,7 +4986,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -4981,7 +4981,10 @@ const FeatureEntry kFeatureEntries[] = { {"force-text-direction", flag_descriptions::kForceTextDirectionName, flag_descriptions::kForceTextDirectionDescription, kOsAll, MULTI_VALUE_TYPE(kForceTextDirectionChoices)}, @@ -44,7 +44,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -659,6 +659,9 @@ extern const char kDeprecateAltClickDescription[]; +@@ -662,6 +662,9 @@ extern const char kDeprecateAltClickDescription[]; extern const char kDeprecateAltBasedSixPackName[]; extern const char kDeprecateAltBasedSixPackDescription[]; @@ -84,10 +84,11 @@ diff --git a/content/browser/loader/browser_initiated_resource_request.cc b/cont 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 -@@ -20,6 +20,10 @@ BASE_FEATURE(kExpectCTReporting, +@@ -20,6 +20,11 @@ BASE_FEATURE(kExpectCTReporting, "ExpectCTReporting", base::FEATURE_ENABLED_BY_DEFAULT); ++// Enable save-data header separately (without enabled data reduction service). +BASE_FEATURE(kEnableSaveDataHeader, + "EnableSaveDataHeader", + base::FEATURE_DISABLED_BY_DEFAULT); @@ -98,12 +99,12 @@ diff --git a/services/network/public/cpp/features.cc b/services/network/public/c 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 -@@ -52,6 +52,8 @@ extern const base::Feature kIPv6Probing; +@@ -50,7 +50,7 @@ extern const base::FeatureParam + kTrustTokenOperationsRequiringOriginTrial; COMPONENT_EXPORT(NETWORK_CPP) extern const base::FeatureParam kPlatformProvidedTrustTokenIssuance; - +- +COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kEnableSaveDataHeader); -+ COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kWebSocketReassembleShortMessages); diff --git a/build/patches/Add-flag-to-configure-maximum-connections-per-host.patch b/build/patches/Add-flag-to-configure-maximum-connections-per-host.patch index 2ee91813..cbff4376 100644 --- a/build/patches/Add-flag-to-configure-maximum-connections-per-host.patch +++ b/build/patches/Add-flag-to-configure-maximum-connections-per-host.patch @@ -33,7 +33,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc const FeatureEntry::Choice kMemlogModeChoices[] = { {flags_ui::kGenericExperimentChoiceDisabled, "", ""}, {flag_descriptions::kMemlogModeMinimal, heap_profiling::kMemlogMode, -@@ -4933,6 +4938,9 @@ const FeatureEntry kFeatureEntries[] = { +@@ -4884,6 +4889,9 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kAndroidPictureInPictureAPIName, flag_descriptions::kAndroidPictureInPictureAPIDescription, kOsAndroid, FEATURE_VALUE_TYPE(media::kPictureInPictureAPI)}, diff --git a/build/patches/Add-flag-to-control-video-playback-resume-feature.patch b/build/patches/Add-flag-to-control-video-playback-resume-feature.patch index b61f63fe..2910990c 100644 --- a/build/patches/Add-flag-to-control-video-playback-resume-feature.patch +++ b/build/patches/Add-flag-to-control-video-playback-resume-feature.patch @@ -9,23 +9,23 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/about_flags.cc | 4 ++++ chrome/browser/flag_descriptions.cc | 5 +++++ chrome/browser/flag_descriptions.h | 3 +++ - media/base/media_switches.cc | 4 ---- - 4 files changed, 12 insertions(+), 4 deletions(-) + media/base/media_switches.cc | 8 ++------ + 4 files changed, 14 insertions(+), 6 deletions(-) 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 -@@ -3648,6 +3648,10 @@ const FeatureEntry kFeatureEntries[] = { - flag_descriptions::kWebRtcRemoteEventLogName, - flag_descriptions::kWebRtcRemoteEventLogDescription, kOsDesktop, - FEATURE_VALUE_TYPE(features::kWebRtcRemoteEventLog)}, +@@ -3661,6 +3661,10 @@ const FeatureEntry kFeatureEntries[] = { + SINGLE_VALUE_TYPE(extensions::switches::kExtensionsOnChromeURLs)}, + #endif // ENABLE_EXTENSIONS + #if BUILDFLAG(IS_ANDROID) + {"resume-background-video", + flag_descriptions::kResumeBackgroundVideoName, + flag_descriptions::kResumeBackgroundVideoDescription, kOsAll, + FEATURE_VALUE_TYPE(media::kResumeBackgroundVideo)}, - #endif - {"enable-webrtc-srtp-aes-gcm", flag_descriptions::kWebrtcSrtpAesGcmName, - flag_descriptions::kWebrtcSrtpAesGcmDescription, kOsAll, + {"osk-resizes-visual-viewport-by-default", + flag_descriptions::kEnableOskResizesVisualViewportByDefaultName, + flag_descriptions::kEnableOskResizesVisualViewportByDefaultDescription, 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 @@ -57,15 +57,18 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio 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 -@@ -303,11 +303,7 @@ BASE_FEATURE(kPreloadMetadataLazyLoad, +@@ -302,12 +302,8 @@ BASE_FEATURE(kPreloadMetadataLazyLoad, + // Let videos be resumed via remote controls (for example, the notification) // when in background. BASE_FEATURE(kResumeBackgroundVideo, - "resume-background-video", +- "resume-background-video", -#if BUILDFLAG(IS_ANDROID) - base::FEATURE_ENABLED_BY_DEFAULT -#else - base::FEATURE_DISABLED_BY_DEFAULT +- base::FEATURE_DISABLED_BY_DEFAULT -#endif ++ "resume-background-video", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT // in Bromite ); // When enabled, MediaCapabilities will check with GPU Video Accelerator diff --git a/build/patches/Add-flag-to-disable-IPv6-probes.patch b/build/patches/Add-flag-to-disable-IPv6-probes.patch index e23eae47..e0bf9c84 100644 --- a/build/patches/Add-flag-to-disable-IPv6-probes.patch +++ b/build/patches/Add-flag-to-disable-IPv6-probes.patch @@ -10,14 +10,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/subresource_filter/tools/BUILD.gn | 6 ++++++ .../url_formatter/spoof_checks/top_domains/BUILD.gn | 3 ++- net/dns/host_resolver_manager.cc | 9 ++++++++- - services/network/public/cpp/features.cc | 4 ++++ - services/network/public/cpp/features.h | 2 ++ + services/network/public/cpp/features.cc | 5 +++++ + services/network/public/cpp/features.h | 1 + 8 files changed, 33 insertions(+), 2 deletions(-) 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 -@@ -6037,6 +6037,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -6036,6 +6036,10 @@ const FeatureEntry kFeatureEntries[] = { {"enable-reader-mode-in-cct", flag_descriptions::kReaderModeInCCTName, flag_descriptions::kReaderModeInCCTDescription, kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kReaderModeInCCT)}, @@ -128,13 +128,14 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc 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 -@@ -38,6 +38,10 @@ BASE_FEATURE(kThrottleDelayable, +@@ -38,6 +38,11 @@ BASE_FEATURE(kThrottleDelayable, "ThrottleDelayable", base::FEATURE_ENABLED_BY_DEFAULT); +// Enable IPv6 ping probes to RIPE DNS. -+const base::Feature kIPv6Probing{"IPv6Probing", -+ base::FEATURE_ENABLED_BY_DEFAULT}; ++BASE_FEATURE(kIPv6Probing, ++ "IPv6Probing", ++ base::FEATURE_ENABLED_BY_DEFAULT); + // When kPriorityRequestsDelayableOnSlowConnections is enabled, HTTP // requests fetched from a SPDY/QUIC/H2 proxies can be delayed by the @@ -142,14 +143,13 @@ diff --git a/services/network/public/cpp/features.cc b/services/network/public/c 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 -@@ -48,6 +48,8 @@ COMPONENT_EXPORT(NETWORK_CPP) - extern const base::FeatureParam - kTrustTokenOperationsRequiringOriginTrial; +@@ -17,6 +17,7 @@ COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kExpectCTReporting); + COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kNetworkErrorLogging); + COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kReporting); + COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kThrottleDelayable); ++COMPONENT_EXPORT(NETWORK_CPP) BASE_DECLARE_FEATURE(kIPv6Probing); COMPONENT_EXPORT(NETWORK_CPP) -+extern const base::Feature kIPv6Probing; -+COMPONENT_EXPORT(NETWORK_CPP) - extern const base::FeatureParam kPlatformProvidedTrustTokenIssuance; - + BASE_DECLARE_FEATURE(kDelayRequestsOnMultiplexedConnections); COMPONENT_EXPORT(NETWORK_CPP) -- 2.25.1 diff --git a/build/patches/Add-flag-to-disable-external-intent-requests.patch b/build/patches/Add-flag-to-disable-external-intent-requests.patch index 34ff0d26..7c29ed67 100644 --- a/build/patches/Add-flag-to-disable-external-intent-requests.patch +++ b/build/patches/Add-flag-to-disable-external-intent-requests.patch @@ -15,7 +15,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 -@@ -3622,6 +3622,9 @@ const FeatureEntry kFeatureEntries[] = { +@@ -3621,6 +3621,9 @@ const FeatureEntry kFeatureEntries[] = { {"ui-disable-partial-swap", flag_descriptions::kUiPartialSwapName, flag_descriptions::kUiPartialSwapDescription, kOsAll, SINGLE_DISABLE_VALUE_TYPE(switches::kUIDisablePartialSwap)}, @@ -28,7 +28,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc 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 -@@ -3961,6 +3961,12 @@ const char kPhotoPickerVideoSupportName[] = "Photo Picker Video Support"; +@@ -3966,6 +3966,12 @@ const char kPhotoPickerVideoSupportName[] = "Photo Picker Video Support"; const char kPhotoPickerVideoSupportDescription[] = "Enables video files to be shown in the Photo Picker dialog"; @@ -44,7 +44,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -2271,6 +2271,9 @@ extern const char kQueryTilesNTPDescription[]; +@@ -2274,6 +2274,9 @@ extern const char kQueryTilesNTPDescription[]; extern const char kQueryTilesOnStartName[]; extern const char kQueryTilesOnStartDescription[]; extern const char kQueryTilesSingleTierName[]; diff --git a/build/patches/Add-flag-to-disable-vibration.patch b/build/patches/Add-flag-to-disable-vibration.patch index 5ad7f1f5..5ed4c84b 100644 --- a/build/patches/Add-flag-to-disable-vibration.patch +++ b/build/patches/Add-flag-to-disable-vibration.patch @@ -4,22 +4,22 @@ Subject: Add flag to disable vibration License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/browser/about_flags.cc | 4 ++++ - chrome/browser/flag_descriptions.cc | 3 +++ - chrome/browser/flag_descriptions.h | 2 ++ - content/child/runtime_features.cc | 1 + - content/public/common/content_features.cc | 4 ++++ - content/public/common/content_features.h | 2 ++ - third_party/blink/public/platform/web_runtime_features.h | 1 + - .../blink/renderer/modules/vibration/vibration_controller.cc | 3 +++ - .../blink/renderer/platform/exported/web_runtime_features.cc | 4 ++++ - .../blink/renderer/platform/runtime_enabled_features.json5 | 4 ++++ - 10 files changed, 28 insertions(+) + chrome/browser/about_flags.cc | 4 ++++ + chrome/browser/flag_descriptions.cc | 3 +++ + chrome/browser/flag_descriptions.h | 2 ++ + content/child/runtime_features.cc | 1 + + content/public/common/content_features.cc | 5 +++++ + content/public/common/content_features.h | 2 ++ + third_party/blink/public/platform/web_runtime_features.h | 1 + + .../blink/renderer/modules/vibration/vibration_controller.cc | 3 +++ + .../blink/renderer/platform/exported/web_runtime_features.cc | 4 ++++ + .../blink/renderer/platform/runtime_enabled_features.json5 | 4 ++++ + 10 files changed, 29 insertions(+) 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 -@@ -7468,6 +7468,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -7467,6 +7467,10 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(features::kNewMacNotificationAPI)}, #endif @@ -33,7 +33,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc 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 -@@ -6453,6 +6453,9 @@ extern const char kLacrosScreenCoordinatesDescription[]; +@@ -6463,6 +6463,9 @@ extern const char kLacrosScreenCoordinatesDescription[]; #endif // #if BUILDFLAG(IS_CHROMEOS_LACROS) @@ -46,7 +46,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -3932,6 +3932,8 @@ extern const char kWebUITabStripTabDragIntegrationName[]; +@@ -3938,6 +3938,8 @@ extern const char kWebUITabStripTabDragIntegrationName[]; extern const char kWebUITabStripTabDragIntegrationDescription[]; #endif // BUILDFLAG(ENABLE_WEBUI_TAB_STRIP) && BUILDFLAG(IS_CHROMEOS_ASH) @@ -69,13 +69,14 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features. 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 -@@ -130,6 +130,10 @@ BASE_FEATURE(kBackForwardCacheMemoryControls, +@@ -130,6 +130,11 @@ BASE_FEATURE(kBackForwardCacheMemoryControls, #endif ); +// Enables vibration; an user gesture will still be required if enabled. -+const base::Feature kVibration{"Vibration", -+ base::FEATURE_DISABLED_BY_DEFAULT}; ++BASE_FEATURE(kVibration, ++ "Vibration", ++ base::FEATURE_DISABLED_BY_DEFAULT); + // When this feature is enabled, private network requests initiated from // non-secure contexts in the `public` address space are blocked. @@ -87,7 +88,7 @@ diff --git a/content/public/common/content_features.h b/content/public/common/co kCompositorLockTimeout; #endif // BUILDFLAG(IS_ANDROID) -+CONTENT_EXPORT extern const base::Feature kVibration; ++CONTENT_EXPORT BASE_DECLARE_FEATURE(kVibration); + #if BUILDFLAG(IS_MAC) diff --git a/build/patches/Add-lifetime-options-for-permissions.patch b/build/patches/Add-lifetime-options-for-permissions.patch index ac30180e..7cf564ee 100644 --- a/build/patches/Add-lifetime-options-for-permissions.patch +++ b/build/patches/Add-lifetime-options-for-permissions.patch @@ -258,7 +258,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c import org.chromium.components.embedder_support.util.Origin; import org.chromium.content_public.browser.BrowserContextHandle; import org.chromium.content_public.browser.ContentFeatureList; -@@ -537,6 +538,11 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -539,6 +540,11 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment } } @@ -270,7 +270,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(); -@@ -955,6 +961,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -963,6 +969,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment if (contentType == mHighlightedPermission) { switchPreference.setBackgroundColor(mHighlightColor); } @@ -345,7 +345,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 -@@ -606,6 +606,11 @@ +@@ -608,6 +608,11 @@ URL truncated @@ -371,7 +371,7 @@ diff --git a/components/content_settings/android/BUILD.gn b/components/content_s 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 -@@ -185,6 +185,35 @@ base::Time GetConstraintExpiration(const base::TimeDelta duration) { +@@ -189,6 +189,35 @@ base::Time GetConstraintExpiration(const base::TimeDelta duration) { return base::Time::Now() + duration; } @@ -492,7 +492,7 @@ diff --git a/components/page_info/android/java/src/org/chromium/components/page_ } } -@@ -123,13 +128,15 @@ public class PermissionParamsListBuilder { +@@ -124,13 +129,15 @@ public class PermissionParamsListBuilder { public final String nameMidSentence; public final int type; public final @ContentSettingValues int setting; @@ -512,7 +512,7 @@ diff --git a/components/page_info/android/java/src/org/chromium/components/page_ diff --git a/components/page_info/android/page_info_controller_android.cc b/components/page_info/android/page_info_controller_android.cc --- a/components/page_info/android/page_info_controller_android.cc +++ b/components/page_info/android/page_info_controller_android.cc -@@ -162,6 +162,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -171,6 +171,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( std::map user_specified_settings_to_display; @@ -521,7 +521,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp for (const auto& permission : permission_info_list) { if (base::Contains(permissions_to_display, permission.type)) { -@@ -170,6 +172,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -179,6 +181,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( if (setting_to_display) { user_specified_settings_to_display[permission.type] = *setting_to_display; @@ -530,7 +530,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp } } } -@@ -186,7 +190,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -195,7 +199,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( ConvertUTF16ToJavaString(env, setting_title), ConvertUTF16ToJavaString(env, setting_title_mid_sentence), static_cast(permission), @@ -540,7 +540,7 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp } } -@@ -199,7 +204,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( +@@ -208,7 +213,8 @@ void PageInfoControllerAndroid::SetPermissionInfo( env, controller_jobject_, ConvertUTF16ToJavaString(env, object_title), ConvertUTF16ToJavaString(env, object_title), static_cast(chosen_object->ui_info.content_settings_type), @@ -553,7 +553,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 -@@ -1168,6 +1168,8 @@ void PageInfo::PresentSitePermissions() { +@@ -1189,6 +1189,8 @@ void PageInfo::PresentSitePermissions() { permission_info.source = info.source; permission_info.is_one_time = (info.metadata.session_model == content_settings::SessionModel::OneTime); 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 fbf60ec1..6660250a 100644 --- a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch +++ b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch @@ -6,7 +6,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 | 60 +++++++++++++++++++ + .../browser/bookmarks/BookmarkBridge.java | 61 +++++++++++++++++++ .../browser/bookmarks/BookmarkUtils.java | 4 ++ .../bookmarks/android/bookmark_bridge.cc | 17 ++++++ .../bookmarks/android/bookmark_bridge.h | 4 ++ @@ -25,7 +25,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/bookmarks/browser/bookmark_node.h | 5 ++ components/bookmarks/browser/model_loader.cc | 3 +- .../bookmark_specifics_conversions.cc | 1 + - 21 files changed, 200 insertions(+), 10 deletions(-) + 21 files changed, 201 insertions(+), 10 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 @@ -41,16 +41,16 @@ diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/re -@@ -187,6 +191,9 @@ found in the LICENSE file. - +@@ -184,6 +188,9 @@ found in the LICENSE file. + + - + 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 @@ -110,7 +110,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm import org.chromium.base.ObserverList; import org.chromium.base.ThreadUtils; import org.chromium.base.annotations.CalledByNative; -@@ -39,6 +40,10 @@ import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksShim; +@@ -40,6 +41,10 @@ import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksShim; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.read_later.ReadingListUtils; import org.chromium.chrome.browser.tab.Tab; @@ -121,15 +121,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm import org.chromium.components.bookmarks.BookmarkId; import org.chromium.components.bookmarks.BookmarkItem; import org.chromium.components.bookmarks.BookmarkType; -@@ -85,6 +90,7 @@ import java.io.File; +@@ -86,6 +91,8 @@ import java.io.File; * bookmark model stored in native. */ class BookmarkBridge { + private static final String TAG = "BookmarkBridge"; ++ private final Profile mProfile; private boolean mIsDestroyed; private boolean mIsDoingExtensiveChanges; -@@ -392,6 +398,16 @@ class BookmarkBridge { +@@ -393,6 +400,16 @@ class BookmarkBridge { mNativeBookmarkBridge, BookmarkBridge.this); } @@ -146,7 +147,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm /** * @return Id representing the special "other" folder from bookmark model. */ -@@ -1029,6 +1045,49 @@ class BookmarkBridge { +@@ -1030,6 +1047,49 @@ class BookmarkBridge { mNativeBookmarkBridge, BookmarkBridge.this, title, url); } @@ -196,7 +197,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm /** * @param url The URL of the reading list item. * @return The reading list item with the URL, or null if no such reading list item. -@@ -1326,6 +1385,7 @@ class BookmarkBridge { +@@ -1327,6 +1387,7 @@ class BookmarkBridge { void getAllFoldersWithDepths(long nativeBookmarkBridge, BookmarkBridge caller, List folderList, List depthList); BookmarkId getRootFolderId(long nativeBookmarkBridge, BookmarkBridge caller); @@ -348,7 +349,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 -@@ -3588,6 +3588,9 @@ To change this setting, <resetlink>reset sync

<resetlink>reset sync

Track prices @@ -506,14 +507,14 @@ diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmark int64_t* max_node_id, std::string* sync_metadata_str); -@@ -114,6 +116,7 @@ class BookmarkCodec { +@@ -113,6 +115,7 @@ class BookmarkCodec { + // Allows the BookmarkClient to read and a write a string blob from the JSON // file. That string captures the bookmarks sync metadata. static const char kSyncMetadata[]; - static const char kDateLastUsed[]; + static const char kTabsBookmarkFolderNameKey[]; + static const char kDateLastUsed[]; // Possible values for kTypeKey. - static const char kTypeURL[]; @@ -130,6 +133,7 @@ class BookmarkCodec { bool DecodeHelper(BookmarkNode* bb_node, BookmarkNode* other_folder_node, diff --git a/build/patches/Add-menu-item-to-view-source.patch b/build/patches/Add-menu-item-to-view-source.patch index 469a5faa..e9acf4b9 100644 --- a/build/patches/Add-menu-item-to-view-source.patch +++ b/build/patches/Add-menu-item-to-view-source.patch @@ -4,14 +4,14 @@ Subject: Add menu item to view source License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/android/java/res/menu/custom_tabs_menu.xml | 3 +++ - chrome/android/java/res/menu/main_menu.xml | 3 +++ - .../chrome/browser/ChromeTabbedActivity.java | 2 ++ - .../chrome/browser/app/ChromeActivity.java | 5 +++++ - .../app/appmenu/AppMenuPropertiesDelegateImpl.java | 14 ++++++++++++++ - .../CustomTabAppMenuPropertiesDelegate.java | 1 + - .../ui/android/strings/android_chrome_strings.grd | 4 ++++ - 7 files changed, 32 insertions(+) + .../android/java/res/menu/custom_tabs_menu.xml | 3 +++ + chrome/android/java/res/menu/main_menu.xml | 3 +++ + .../chrome/browser/ChromeTabbedActivity.java | 2 ++ + .../chrome/browser/app/ChromeActivity.java | 5 +++++ + .../appmenu/AppMenuPropertiesDelegateImpl.java | 18 ++++++++++++++++++ + .../CustomTabAppMenuPropertiesDelegate.java | 1 + + .../android/strings/android_chrome_strings.grd | 4 ++++ + 7 files changed, 36 insertions(+) diff --git a/chrome/android/java/res/menu/custom_tabs_menu.xml b/chrome/android/java/res/menu/custom_tabs_menu.xml --- a/chrome/android/java/res/menu/custom_tabs_menu.xml @@ -54,7 +54,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct 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 -@@ -2448,6 +2448,11 @@ public abstract class ChromeActivity +@@ -2445,6 +2445,11 @@ public abstract class ChromeActivity return true; } @@ -69,7 +69,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/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 -@@ -540,6 +540,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -543,6 +543,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate isChromeScheme, isFileScheme, isContentScheme, isIncognito, url)); updateRequestDesktopSiteMenuItem(menu, currentTab, true /* can show */, isChromeScheme); @@ -77,8 +77,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App updateAutoDarkMenuItem(menu, currentTab, isChromeScheme); -@@ -1202,6 +1203,19 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate - stopPriceTrackingMenuItem.setVisible(false); +@@ -1242,6 +1243,23 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate + stopPriceTrackingMenuItem.setVisible(false); } + /** @@ -90,8 +90,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App + protected void updateViewSourceMenuItem( + Menu menu, Tab currentTab) { + MenuItem viewSourceMenuItem = menu.findItem(R.id.view_source_id); -+ String url = currentTab.getUrl().getSpec(); -+ viewSourceMenuItem.setVisible(!url.isEmpty() && !url.startsWith("view-source:")); ++ boolean visible = false; ++ if (currentTab != null) { ++ String url = currentTab.getUrl().getSpec(); ++ visible = !url.isEmpty() && !url.startsWith("view-source:"); ++ } ++ viewSourceMenuItem.setVisible(visible); + } + /** diff --git a/build/patches/Add-option-to-force-tablet-UI.patch b/build/patches/Add-option-to-force-tablet-UI.patch index 842b04c5..2e86a4a6 100644 --- a/build/patches/Add-option-to-force-tablet-UI.patch +++ b/build/patches/Add-option-to-force-tablet-UI.patch @@ -84,7 +84,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 -@@ -1442,6 +1442,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1439,6 +1439,12 @@ Your Google account may have other forms of browsing history like searches and a Temporarily links this data to your Google Account when you’re signed in, to protect you across Google apps diff --git a/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch b/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch index b222951a..29952c8d 100644 --- a/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch +++ b/build/patches/Add-option-to-not-persist-tabs-across-sessions.patch @@ -68,16 +68,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import org.chromium.chrome.R; import org.chromium.chrome.browser.feedback.HelpAndFeedbackLauncherImpl; import org.chromium.chrome.browser.flags.ChromeFeatureList; -@@ -54,6 +57,8 @@ public class PrivacySettings - private static final String PREF_PRIVACY_GUIDE = "privacy_guide"; - private static final String PREF_INCOGNITO_LOCK = "incognito_lock"; +@@ -67,6 +70,8 @@ public class PrivacySettings + SharedPreferencesManager.getInstance(); + private final PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); + private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit"; + private ManagedPreferenceDelegate mManagedPreferenceDelegate; private IncognitoLockSettings mIncognitoLockSettings; -@@ -115,7 +120,11 @@ public class PrivacySettings +@@ -132,7 +137,11 @@ public class PrivacySettings @Override public boolean onPreferenceChange(Preference preference, Object newValue) { String key = preference.getKey(); @@ -90,7 +90,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting UserPrefs.get(Profile.getLastUsedRegularProfile()) .setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue); } else if (PREF_HTTPS_FIRST_MODE.equals(key)) { -@@ -156,6 +165,11 @@ public class PrivacySettings +@@ -176,6 +185,11 @@ public class PrivacySettings PreloadPagesSettingsFragment.getPreloadPagesSummaryString(getContext())); } @@ -105,7 +105,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -4478,6 +4478,12 @@ To change this setting, <resetlink>reset sync

<resetlink>reset sync

IMAGE diff --git a/build/patches/Add-option-to-use-home-page-as-NTP.patch b/build/patches/Add-option-to-use-home-page-as-NTP.patch index 27a2baef..76c8e8b4 100644 --- a/build/patches/Add-option-to-use-home-page-as-NTP.patch +++ b/build/patches/Add-option-to-use-home-page-as-NTP.patch @@ -156,7 +156,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 -@@ -1257,6 +1257,9 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1254,6 +1254,9 @@ Your Google account may have other forms of browsing history like searches and a Last hour diff --git a/build/patches/Add-site-engagement-flag.patch b/build/patches/Add-site-engagement-flag.patch index 5155a89d..704cf6bb 100644 --- a/build/patches/Add-site-engagement-flag.patch +++ b/build/patches/Add-site-engagement-flag.patch @@ -29,7 +29,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc #include "components/shared_highlighting/core/common/shared_highlighting_features.h" #include "components/signin/core/browser/dice_account_reconcilor_delegate.h" #include "components/signin/public/base/signin_buildflags.h" -@@ -9175,6 +9176,11 @@ const FeatureEntry kFeatureEntries[] = { +@@ -9174,6 +9175,11 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kSearchReadyOmniboxDescription, kOsAndroid, FEATURE_VALUE_TYPE(chrome::android::kSearchReadyOmniboxFeature)}, @@ -59,15 +59,15 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -1969,6 +1969,9 @@ extern const char kReduceUserAgentMinorVersionDescription[]; - extern const char kReduceUserAgentPlatformOsCpuName[]; - extern const char kReduceUserAgentPlatformOsCpuDescription[]; +@@ -1975,6 +1975,9 @@ extern const char kReduceUserAgentPlatformOsCpuDescription[]; + extern const char kSkipServiceWorkerFetchHandlerName[]; + extern const char kSkipServiceWorkerFetchHandlerDescription[]; +extern const char kSiteEngagementName[]; +extern const char kSiteEngagementDescription[]; + - extern const char kSkipServiceWorkerFetchHandlerName[]; - extern const char kSkipServiceWorkerFetchHandlerDescription[]; + extern const char kWebSQLAccessName[]; + extern const char kWebSQLAccessDescription[]; diff --git a/components/site_engagement/content/site_engagement_score.cc b/components/site_engagement/content/site_engagement_score.cc --- a/components/site_engagement/content/site_engagement_score.cc diff --git a/build/patches/Add-support-for-ISupportHelpAndFeedback.patch b/build/patches/Add-support-for-ISupportHelpAndFeedback.patch index 8e1b704c..f984e8ab 100644 --- a/build/patches/Add-support-for-ISupportHelpAndFeedback.patch +++ b/build/patches/Add-support-for-ISupportHelpAndFeedback.patch @@ -12,7 +12,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/SettingsActivity.java -@@ -67,6 +67,7 @@ import org.chromium.components.browser_ui.bottomsheet.BottomSheetControllerFacto +@@ -66,6 +66,7 @@ import org.chromium.components.browser_ui.bottomsheet.BottomSheetControllerFacto import org.chromium.components.browser_ui.modaldialog.AppModalPresenter; import org.chromium.components.browser_ui.settings.FragmentSettingsLauncher; import org.chromium.components.browser_ui.settings.SettingsLauncher; @@ -20,7 +20,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin import org.chromium.components.browser_ui.site_settings.SiteSettingsPreferenceFragment; import org.chromium.components.browser_ui.widget.displaystyle.UiConfig; import org.chromium.components.browser_ui.widget.displaystyle.ViewResizer; -@@ -333,9 +334,13 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity +@@ -329,9 +330,13 @@ public class SettingsActivity extends ChromeBaseAppCompatActivity finish(); return true; } else if (item.getItemId() == R.id.menu_id_general_help) { diff --git a/build/patches/Add-webGL-site-setting.patch b/build/patches/Add-webGL-site-setting.patch index 1845ef7c..e817de2f 100644 --- a/build/patches/Add-webGL-site-setting.patch +++ b/build/patches/Add-webGL-site-setting.patch @@ -214,11 +214,11 @@ diff --git a/components/components_strings.grd b/components/components_strings.g @@ -338,6 +338,7 @@ - -+ ++ + 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 @@ -414,7 +414,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context diff --git a/third_party/blink/renderer/core/execution_context/execution_context.h b/third_party/blink/renderer/core/execution_context/execution_context.h --- a/third_party/blink/renderer/core/execution_context/execution_context.h +++ b/third_party/blink/renderer/core/execution_context/execution_context.h -@@ -97,6 +97,7 @@ class SecurityOrigin; +@@ -96,6 +96,7 @@ class SecurityOrigin; class ScriptState; class ScriptWrappable; class TrustedTypePolicyFactory; @@ -422,7 +422,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context enum ReasonForCallingCanExecuteScripts { kAboutToExecuteScript, -@@ -105,6 +106,10 @@ enum ReasonForCallingCanExecuteScripts { +@@ -104,6 +105,10 @@ enum ReasonForCallingCanExecuteScripts { enum ReferrerPolicySource { kPolicySourceHttpHeader, kPolicySourceMetaTag }; diff --git a/build/patches/Add-webRTC-site-settings.patch b/build/patches/Add-webRTC-site-settings.patch index 3d71d55e..8c7b3246 100644 --- a/build/patches/Add-webRTC-site-settings.patch +++ b/build/patches/Add-webRTC-site-settings.patch @@ -209,12 +209,12 @@ diff --git a/components/components_strings.grd b/components/components_strings.g +++ b/components/components_strings.grd @@ -339,6 +339,7 @@ - + + - + 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 @@ -385,7 +385,7 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_d #include "third_party/blink/public/platform/web_url.h" #include "third_party/blink/public/web/modules/mediastream/media_stream_video_source.h" #include "third_party/blink/public/web/web_document.h" -@@ -767,6 +768,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator( +@@ -765,6 +766,11 @@ PeerConnectionDependencyFactory::CreatePortAllocator( // origin. WebRTCIPHandlingPolicy policy = GetWebRTCIPHandlingPolicy(webrtc_ip_handling_policy); diff --git a/build/patches/Allow-building-without-enable_reporting.patch b/build/patches/Allow-building-without-enable_reporting.patch index 02071495..140c170a 100644 --- a/build/patches/Allow-building-without-enable_reporting.patch +++ b/build/patches/Allow-building-without-enable_reporting.patch @@ -5,7 +5,7 @@ Subject: Allow building without enable_reporting License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../browser/devtools/protocol/network_handler.cc | 2 ++ - .../cross_origin_embedder_policy_reporter.cc | 3 +++ + .../cross_origin_embedder_policy_reporter.cc | 7 +++++-- .../cross_origin_opener_policy_reporter.cc | 16 +++++++--------- .../browser/network/reporting_service_proxy.cc | 3 +++ .../renderer_host/render_frame_host_impl.cc | 6 ------ @@ -19,7 +19,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../blink/renderer/core/frame/local_frame.h | 6 +++--- .../renderer/core/frame/reporting_context.cc | 9 +++++++++ .../renderer/core/frame/reporting_context.h | 7 +++++-- - 15 files changed, 48 insertions(+), 23 deletions(-) + 15 files changed, 50 insertions(+), 25 deletions(-) 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 @@ -51,22 +51,33 @@ diff --git a/content/browser/network/cross_origin_embedder_policy_reporter.cc b/ #include "base/strings/string_piece.h" #include "base/values.h" #include "content/public/browser/storage_partition.h" -@@ -112,6 +113,7 @@ void CrossOriginEmbedderPolicyReporter::QueueAndNotify( +@@ -95,8 +96,6 @@ void CrossOriginEmbedderPolicyReporter::Clone( + void CrossOriginEmbedderPolicyReporter::QueueAndNotify( + std::initializer_list> body, + bool report_only) { +- const absl::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( + observer_->Notify(blink::mojom::Report::New( kType, context_url_, blink::mojom::ReportBody::New(std::move(list)))); } - if (endpoint) { +#if BUILDFLAG(ENABLE_REPORTING) ++ const absl::optional& endpoint = ++ report_only ? report_only_endpoint_ : endpoint_; + if (endpoint) { base::Value::Dict body_to_pass; for (const auto& pair : body) { - body_to_pass.Set(pair.first, pair.second); -@@ -124,6 +126,7 @@ void CrossOriginEmbedderPolicyReporter::QueueAndNotify( - network_anonymization_key_, +@@ -125,6 +127,7 @@ void CrossOriginEmbedderPolicyReporter::QueueAndNotify( /*user_agent=*/absl::nullopt, std::move(body_to_pass)); } -+#endif } ++#endif } + } // namespace content diff --git a/content/browser/network/cross_origin_opener_policy_reporter.cc b/content/browser/network/cross_origin_opener_policy_reporter.cc --- a/content/browser/network/cross_origin_opener_policy_reporter.cc +++ b/content/browser/network/cross_origin_opener_policy_reporter.cc diff --git a/build/patches/Ask-user-before-closing-all-tabs.patch b/build/patches/Ask-user-before-closing-all-tabs.patch deleted file mode 100644 index 17693e02..00000000 --- a/build/patches/Ask-user-before-closing-all-tabs.patch +++ /dev/null @@ -1,25 +0,0 @@ -From: uazo -Date: Sat, 20 Nov 2021 17:42:41 +0000 -Subject: Ask user before closing all tabs - -License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ---- - chrome/browser/flags/android/chrome_feature_list.cc | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -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 -@@ -543,8 +543,8 @@ BASE_FEATURE(kClearOmniboxFocusAfterNavigation, - base::FEATURE_DISABLED_BY_DEFAULT); - - BASE_FEATURE(kCloseTabSuggestions, -- "CloseTabSuggestions", -- base::FEATURE_DISABLED_BY_DEFAULT); -+ "CloseTabSuggestions", // Enabled by default in Bromite -+ base::FEATURE_ENABLED_BY_DEFAULT); // ^ - - BASE_FEATURE(kCriticalPersistedTabData, - "CriticalPersistedTabData", --- -2.25.1 diff --git a/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch b/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch index c7bdae5a..af5f3cda 100644 --- a/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch +++ b/build/patches/AudioBuffer-AnalyserNode-fp-mitigations.patch @@ -6,49 +6,209 @@ Truncate base latency precision to two digits License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../blink/renderer/modules/webaudio/analyser_node.idl | 8 ++++---- - .../blink/renderer/modules/webaudio/audio_buffer.idl | 6 ------ - .../blink/renderer/modules/webaudio/audio_context.cc | 4 +++- - 3 files changed, 7 insertions(+), 11 deletions(-) + chrome/browser/about_flags.cc | 4 ++++ + chrome/browser/flag_descriptions.cc | 5 ++++ + chrome/browser/flag_descriptions.h | 3 +++ + third_party/blink/common/features.cc | 4 ++++ + third_party/blink/public/common/features.h | 2 ++ + .../renderer/modules/webaudio/audio_buffer.cc | 24 +++++++++++++++---- + .../renderer/modules/webaudio/audio_buffer.h | 7 +++--- + .../modules/webaudio/audio_buffer.idl | 4 ++-- + .../modules/webaudio/audio_context.cc | 5 +++- + .../modules/webaudio/base_audio_context.cc | 12 ++++++++++ + .../modules/webaudio/base_audio_context.h | 2 ++ + .../modules/webaudio/realtime_analyser.cc | 9 +++++++ + 12 files changed, 71 insertions(+), 10 deletions(-) -diff --git a/third_party/blink/renderer/modules/webaudio/analyser_node.idl b/third_party/blink/renderer/modules/webaudio/analyser_node.idl ---- a/third_party/blink/renderer/modules/webaudio/analyser_node.idl -+++ b/third_party/blink/renderer/modules/webaudio/analyser_node.idl -@@ -40,10 +40,10 @@ +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 +@@ -3660,6 +3660,10 @@ const FeatureEntry kFeatureEntries[] = { + flag_descriptions::kKioskEnableAppServiceDescription, kOsCrOS, + FEATURE_VALUE_TYPE(features::kKioskEnableAppService)}, + #endif // BUILDFLAG(IS_CHROMEOS) ++ {"fingerprinting-audio-context-data-noise", ++ flag_descriptions::kAudioContextShuffleEnabledName, ++ flag_descriptions::kAudioContextShuffleEnabledDescription, kOsAll, ++ FEATURE_VALUE_TYPE(blink::features::kAudioContextShuffleEnabled)}, + #if !BUILDFLAG(IS_ANDROID) + {"enable-webrtc-remote-event-log", + flag_descriptions::kWebRtcRemoteEventLogName, +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 +@@ -3353,6 +3353,11 @@ const char kWebrtcUseMinMaxVEADimensionsDescription[] = + "When enabled, WebRTC will only use the Video Encode Accelerator for " + "video resolutions inside those published as supported."; - // Copies the current frequency data into the passed array. - // If the array has fewer elements than the frequencyBinCount, the excess elements will be dropped. -- [HighEntropy, Measure] void getFloatFrequencyData(Float32Array array); -- [HighEntropy, Measure] void getByteFrequencyData(Uint8Array array); -+ //[HighEntropy, Measure] void getFloatFrequencyData(Float32Array array); -+ //[HighEntropy, Measure] void getByteFrequencyData(Uint8Array array); ++const char kAudioContextShuffleEnabledName[] = ++ "Enable Audio Context fingerprint deception"; ++const char kAudioContextShuffleEnabledDescription[] = ++ "Scale the output values of xxx with a randomly selected factor."; ++ + const char kWebUsbDeviceDetectionName[] = + "Automatic detection of WebUSB-compatible devices"; + const char kWebUsbDeviceDetectionDescription[] = +diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h +--- a/chrome/browser/flag_descriptions.h ++++ b/chrome/browser/flag_descriptions.h +@@ -1905,6 +1905,9 @@ extern const char kWebrtcSrtpAesGcmDescription[]; + extern const char kWebrtcUseMinMaxVEADimensionsName[]; + extern const char kWebrtcUseMinMaxVEADimensionsDescription[]; - // Real-time waveform data -- [HighEntropy, Measure] void getFloatTimeDomainData(Float32Array array); -- [HighEntropy, Measure] void getByteTimeDomainData(Uint8Array array); -+ //[HighEntropy, Measure] void getFloatTimeDomainData(Float32Array array); -+ //[HighEntropy, Measure] void getByteTimeDomainData(Uint8Array array); - }; ++extern const char kAudioContextShuffleEnabledName[]; ++extern const char kAudioContextShuffleEnabledDescription[]; ++ + extern const char kWebUsbDeviceDetectionName[]; + extern const char kWebUsbDeviceDetectionDescription[]; + +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 +@@ -617,6 +617,10 @@ BASE_FEATURE(kWebRtcUseMinMaxVEADimensions, + #endif + ); + ++BASE_FEATURE(kAudioContextShuffleEnabled, ++ "AudioContextShuffleEnabled", ++ base::FEATURE_ENABLED_BY_DEFAULT); ++ + // Blink garbage collection. + // Enables compaction of backing stores on Blink's heap. + BASE_FEATURE(kBlinkHeapCompaction, +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 +@@ -247,6 +247,8 @@ BLINK_COMMON_EXPORT bool IsPlzDedicatedWorkerEnabled(); + + BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kWebRtcUseMinMaxVEADimensions); + ++BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kAudioContextShuffleEnabled); ++ + // Blink garbage collection. + BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kBlinkHeapCompaction); + BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kBlinkHeapConcurrentMarking); +diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.cc b/third_party/blink/renderer/modules/webaudio/audio_buffer.cc +--- a/third_party/blink/renderer/modules/webaudio/audio_buffer.cc ++++ b/third_party/blink/renderer/modules/webaudio/audio_buffer.cc +@@ -29,6 +29,7 @@ + #include "third_party/blink/renderer/modules/webaudio/audio_buffer.h" + + #include ++#include "third_party/blink/public/common/features.h" + #include "third_party/blink/renderer/bindings/modules/v8/v8_audio_buffer_options.h" + #include "third_party/blink/renderer/modules/webaudio/base_audio_context.h" + #include "third_party/blink/renderer/platform/audio/audio_bus.h" +@@ -197,6 +198,7 @@ AudioBuffer::AudioBuffer(AudioBus* bus) + } + + NotShared AudioBuffer::getChannelData( ++ ScriptState* script_state, + unsigned channel_index, + ExceptionState& exception_state) { + if (channel_index >= channels_.size()) { +@@ -208,7 +210,16 @@ NotShared AudioBuffer::getChannelData( + return NotShared(nullptr); + } + +- return getChannelData(channel_index); ++ NotShared array = getChannelData(channel_index); ++ DOMFloat32Array* destination_array = array.Get(); ++ size_t len = destination_array->length(); ++ if (len > 0) { ++ float* destination = destination_array->Data(); ++ for (unsigned i = 0; i < len; ++i) { ++ destination[i] = BaseAudioContext::ShuffleAudioData(destination[i], i); ++ } ++ } ++ return array; + } + + NotShared AudioBuffer::getChannelData(unsigned channel_index) { +@@ -219,13 +230,15 @@ NotShared AudioBuffer::getChannelData(unsigned channel_index) { + return NotShared(channels_[channel_index].Get()); + } + +-void AudioBuffer::copyFromChannel(NotShared destination, ++void AudioBuffer::copyFromChannel(ScriptState* script_state, ++ NotShared destination, + int32_t channel_number, + ExceptionState& exception_state) { +- return copyFromChannel(destination, channel_number, 0, exception_state); ++ return copyFromChannel(script_state, destination, channel_number, 0, exception_state); + } + +-void AudioBuffer::copyFromChannel(NotShared destination, ++void AudioBuffer::copyFromChannel(ScriptState* script_state, ++ NotShared destination, + int32_t channel_number, + size_t buffer_offset, + ExceptionState& exception_state) { +@@ -264,6 +277,9 @@ void AudioBuffer::copyFromChannel(NotShared destination, + DCHECK_LE(buffer_offset + count, data_length); + + memmove(dst, src + buffer_offset, count * sizeof(*src)); ++ for (unsigned i = 0; i < count; i++) { ++ dst[i] = BaseAudioContext::ShuffleAudioData(dst[i], i); ++ } + } + + void AudioBuffer::copyToChannel(NotShared source, +diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.h b/third_party/blink/renderer/modules/webaudio/audio_buffer.h +--- a/third_party/blink/renderer/modules/webaudio/audio_buffer.h ++++ b/third_party/blink/renderer/modules/webaudio/audio_buffer.h +@@ -44,6 +44,7 @@ class AudioBus; + class AudioBufferOptions; + class ExceptionState; + class SharedAudioBuffer; ++class ScriptState; + + class MODULES_EXPORT AudioBuffer final : public ScriptWrappable { + DEFINE_WRAPPERTYPEINFO(); +@@ -88,13 +89,13 @@ class MODULES_EXPORT AudioBuffer final : public ScriptWrappable { + + // Channel data access + unsigned numberOfChannels() const { return channels_.size(); } +- NotShared getChannelData(unsigned channel_index, ++ NotShared getChannelData(ScriptState*, unsigned channel_index, + ExceptionState&); + NotShared getChannelData(unsigned channel_index); +- void copyFromChannel(NotShared, ++ void copyFromChannel(ScriptState*, NotShared, + int32_t channel_number, + ExceptionState&); +- void copyFromChannel(NotShared, ++ void copyFromChannel(ScriptState*, NotShared, + int32_t channel_number, + size_t buffer_offset, + ExceptionState&); diff --git a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl b/third_party/blink/renderer/modules/webaudio/audio_buffer.idl --- a/third_party/blink/renderer/modules/webaudio/audio_buffer.idl +++ b/third_party/blink/renderer/modules/webaudio/audio_buffer.idl -@@ -37,12 +37,6 @@ +@@ -37,9 +37,9 @@ // Channel access readonly attribute unsigned long numberOfChannels; - [HighEntropy=Direct, Measure, RaisesException] Float32Array getChannelData( -- unsigned long channelIndex); ++ [CallWith=ScriptState, HighEntropy=Direct, Measure, RaisesException] Float32Array getChannelData( + unsigned long channelIndex); - [HighEntropy, Measure, RaisesException] void copyFromChannel( -- Float32Array destination, -- unsigned long channelNumber, -- optional unsigned long bufferOffset = 0); - [RaisesException] void copyToChannel( - Float32Array source, ++ [CallWith=ScriptState, HighEntropy, Measure, RaisesException] void copyFromChannel( + Float32Array destination, unsigned long channelNumber, + optional unsigned long bufferOffset = 0); diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/third_party/blink/renderer/modules/webaudio/audio_context.cc --- a/third_party/blink/renderer/modules/webaudio/audio_context.cc +++ b/third_party/blink/renderer/modules/webaudio/audio_context.cc -@@ -508,7 +508,9 @@ double AudioContext::baseLatency() const { +@@ -10,6 +10,7 @@ + #include "services/metrics/public/cpp/ukm_builders.h" + #include "services/metrics/public/cpp/ukm_recorder.h" + #include "third_party/blink/public/common/browser_interface_broker_proxy.h" ++#include "third_party/blink/public/common/features.h" + #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" +@@ -508,7 +509,9 @@ double AudioContext::baseLatency() const { DCHECK(IsMainThread()); DCHECK(destination()); @@ -59,5 +219,93 @@ diff --git a/third_party/blink/renderer/modules/webaudio/audio_context.cc b/thir } double AudioContext::outputLatency() const { +diff --git a/third_party/blink/renderer/modules/webaudio/base_audio_context.cc b/third_party/blink/renderer/modules/webaudio/base_audio_context.cc +--- a/third_party/blink/renderer/modules/webaudio/base_audio_context.cc ++++ b/third_party/blink/renderer/modules/webaudio/base_audio_context.cc +@@ -29,6 +29,7 @@ + + #include "base/metrics/histogram_functions.h" + #include "build/build_config.h" ++#include "third_party/blink/public/common/features.h" + #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" +@@ -702,6 +703,17 @@ Document* BaseAudioContext::GetDocument() const { + return window ? window->document() : nullptr; + } + ++/*static*/ ++float BaseAudioContext::ShuffleAudioData(float data, unsigned index) { ++ if (base::FeatureList::IsEnabled(features::kAudioContextShuffleEnabled)) { ++ float rnd = 1.0f + ++ (base::RandDouble() / 10000.0) * ++ (base::RandInt(0,10) > 5 ? 1.f : -1.f); ++ return data * rnd; ++ } ++ return data; ++} ++ + void BaseAudioContext::NotifySourceNodeStartedProcessing(AudioNode* node) { + DCHECK(IsMainThread()); + GraphAutoLocker locker(this); +diff --git a/third_party/blink/renderer/modules/webaudio/base_audio_context.h b/third_party/blink/renderer/modules/webaudio/base_audio_context.h +--- a/third_party/blink/renderer/modules/webaudio/base_audio_context.h ++++ b/third_party/blink/renderer/modules/webaudio/base_audio_context.h +@@ -338,6 +338,8 @@ class MODULES_EXPORT BaseAudioContext + // if the execution context does not exist. + bool CheckExecutionContextAndThrowIfNecessary(ExceptionState&); + ++ static float ShuffleAudioData(float data, unsigned index); ++ + protected: + enum ContextType { kRealtimeContext, kOfflineContext }; + +diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc +--- a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc ++++ b/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc +@@ -29,6 +29,9 @@ + #include + #include + ++#include "third_party/blink/public/common/features.h" ++#include "third_party/blink/renderer/modules/webaudio/realtime_analyser.h" ++#include "third_party/blink/renderer/modules/webaudio/base_audio_context.h" + #include "third_party/blink/renderer/platform/audio/audio_bus.h" + #include "third_party/blink/renderer/platform/audio/audio_utilities.h" + #include "third_party/blink/renderer/platform/audio/vector_math.h" +@@ -154,6 +157,7 @@ void RealtimeAnalyser::GetFloatTimeDomainData( + input_buffer[(i + write_index - fft_size + kInputBufferSize) % + kInputBufferSize]; + ++ value = BaseAudioContext::ShuffleAudioData(value, i); + destination[i] = value; + } + } +@@ -181,6 +185,8 @@ void RealtimeAnalyser::GetByteTimeDomainData(DOMUint8Array* destination_array) { + input_buffer[(i + write_index - fft_size + kInputBufferSize) % + kInputBufferSize]; + ++ value = BaseAudioContext::ShuffleAudioData(value, i); ++ + // Scale from nominal -1 -> +1 to unsigned byte. + double scaled_value = 128 * (value + 1); + +@@ -308,6 +314,8 @@ void RealtimeAnalyser::ConvertToByteData(DOMUint8Array* destination_array) { + double scaled_value = + UCHAR_MAX * (db_mag - min_decibels) * range_scale_factor; + ++ scaled_value = BaseAudioContext::ShuffleAudioData(scaled_value, i); ++ + // Clip to valid range. + if (scaled_value < 0) { + scaled_value = 0; +@@ -333,6 +341,7 @@ void RealtimeAnalyser::ConvertFloatToDb(DOMFloat32Array* destination_array) { + float linear_value = source[i]; + double db_mag = audio_utilities::LinearToDecibels(linear_value); + destination[i] = static_cast(db_mag); ++ destination[i] = BaseAudioContext::ShuffleAudioData(destination[i], i); + } + } + } -- 2.25.1 diff --git a/build/patches/Block-gateway-attacks-via-websockets.patch b/build/patches/Block-gateway-attacks-via-websockets.patch index a210ea1e..3055a074 100644 --- a/build/patches/Block-gateway-attacks-via-websockets.patch +++ b/build/patches/Block-gateway-attacks-via-websockets.patch @@ -23,7 +23,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/third_party/blink/renderer/core/execution_context/execution_context.cc b/third_party/blink/renderer/core/execution_context/execution_context.cc --- a/third_party/blink/renderer/core/execution_context/execution_context.cc +++ b/third_party/blink/renderer/core/execution_context/execution_context.cc -@@ -670,4 +670,20 @@ bool ExecutionContext::RequireTrustedTypes() const { +@@ -693,4 +693,20 @@ bool ExecutionContext::RequireTrustedTypes() const { return require_safe_types_; } @@ -47,7 +47,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context diff --git a/third_party/blink/renderer/core/execution_context/execution_context.h b/third_party/blink/renderer/core/execution_context/execution_context.h --- a/third_party/blink/renderer/core/execution_context/execution_context.h +++ b/third_party/blink/renderer/core/execution_context/execution_context.h -@@ -391,6 +391,7 @@ class CORE_EXPORT ExecutionContext : public Supplementable, +@@ -396,6 +396,7 @@ class CORE_EXPORT ExecutionContext : public Supplementable, void SetAddressSpace(network::mojom::blink::IPAddressSpace ip_address_space); HeapObserverSet& ContextLifecycleObserverSet(); diff --git a/build/patches/Bromite-auto-updater.patch b/build/patches/Bromite-auto-updater.patch index 6bbba2f2..00d57278 100644 --- a/build/patches/Bromite-auto-updater.patch +++ b/build/patches/Bromite-auto-updater.patch @@ -3,6 +3,7 @@ Date: Thu, 7 Oct 2021 14:27:12 +0000 Subject: Bromite auto updater Enable checking for new versions, with notifications and proxy support. +Restore InlineUpdateFlow feature. Some parts authored by csagan5. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html @@ -62,7 +63,7 @@ diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -814,6 +814,9 @@ chrome_java_sources = [ +@@ -812,6 +812,9 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/omaha/UpdateConfigs.java", "java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java", "java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java", @@ -1250,7 +1251,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 -@@ -263,6 +263,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -251,6 +251,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kNewWindowAppMenu, &kNotificationPermissionVariant, &kPageAnnotationsService, @@ -1258,32 +1259,32 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse &kBookmarksImprovedSaveFlow, &kBookmarksRefresh, &kBackGestureRefactorAndroid, -@@ -810,6 +811,10 @@ BASE_FEATURE(kIncognitoScreenshot, - "IncognitoScreenshot", +@@ -693,6 +694,10 @@ BASE_FEATURE(kContextMenuTranslateWithGoogleLens, + "ContextMenuTranslateWithGoogleLens", base::FEATURE_DISABLED_BY_DEFAULT); +BASE_FEATURE(kInlineUpdateFlow, + "InlineUpdateFlow", + base::FEATURE_ENABLED_BY_DEFAULT); + - BASE_FEATURE(kInfobarScrollOptimization, - "InfobarScrollOptimization", - base::FEATURE_DISABLED_BY_DEFAULT); + BASE_FEATURE(kLensCameraAssistedSearch, + "LensCameraAssistedSearch", + base::FEATURE_ENABLED_BY_DEFAULT); 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 -@@ -102,6 +102,7 @@ BASE_DECLARE_FEATURE(kHandleMediaIntents); +@@ -91,6 +91,7 @@ BASE_DECLARE_FEATURE(kGridTabSwitcherForTablets); + BASE_DECLARE_FEATURE(kHandleMediaIntents); BASE_DECLARE_FEATURE(kImmersiveUiMode); BASE_DECLARE_FEATURE(kIncognitoReauthenticationForAndroid); - BASE_DECLARE_FEATURE(kIncognitoScreenshot); +BASE_DECLARE_FEATURE(kInlineUpdateFlow); + BASE_DECLARE_FEATURE(kIncognitoScreenshot); BASE_DECLARE_FEATURE(kInfobarScrollOptimization); BASE_DECLARE_FEATURE(kImprovedA2HS); - BASE_DECLARE_FEATURE(kInstanceSwitcher); 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 -@@ -387,6 +387,7 @@ public abstract class ChromeFeatureList { +@@ -385,6 +385,7 @@ public abstract class ChromeFeatureList { "IncognitoReauthenticationForAndroid"; public static final String INCOGNITO_SCREENSHOT = "IncognitoScreenshot"; public static final String INFOBAR_SCROLL_OPTIMIZATION = "InfobarScrollOptimization"; @@ -1294,7 +1295,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 -@@ -1888,6 +1888,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1837,6 +1837,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 @@ -1307,7 +1308,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro -@@ -3504,7 +3510,10 @@ To change this setting, <resetlink>reset sync

<resetlink>reset sync

@@ -1319,7 +1320,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Newer version is available -@@ -3515,6 +3524,18 @@ To change this setting, <resetlink>reset sync

<resetlink>reset sync

Android version is unsupported diff --git a/build/patches/Bromite-package-name.patch b/build/patches/Bromite-package-name.patch index debd5515..866067b4 100644 --- a/build/patches/Bromite-package-name.patch +++ b/build/patches/Bromite-package-name.patch @@ -10,7 +10,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 -@@ -51,7 +51,7 @@ chrome_jni_registration_header = +@@ -47,7 +47,7 @@ chrome_jni_registration_header = chrome_jni_for_test_registration_header = "$root_build_dir/gen/chrome/browser/android/chrome_jni_for_test_registration.h" if (current_toolchain == default_toolchain) { diff --git a/build/patches/Bromite-AdBlockUpdaterService.patch b/build/patches/Bromite-subresource-adblocker.patch similarity index 96% rename from build/patches/Bromite-AdBlockUpdaterService.patch rename to build/patches/Bromite-subresource-adblocker.patch index 42b801d2..cf6c962d 100644 --- a/build/patches/Bromite-AdBlockUpdaterService.patch +++ b/build/patches/Bromite-subresource-adblocker.patch @@ -1,6 +1,6 @@ From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Sat, 14 Sep 2019 10:20:08 +0200 -Subject: Bromite AdBlockUpdaterService +Subject: Bromite subresource adblocker Add option to configure the ad blocker filters URL Disable look-alike, metrics, ablation and navigation throttles @@ -8,6 +8,7 @@ Do not use experiments to enable/disable presets Always enable ad filtering Download filters by checking Last-Modified header first Fix RestoreForeignSessionTab by recreating the tab (issue #681) +Enable AutomaticLazyFrameLoadingToAds and AutomaticLazyFrameLoadingToEmbeds features License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- @@ -49,7 +50,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/subresource_filter_features.cc | 116 +------- .../core/common/indexed_ruleset.cc | 5 +- .../navigation_throttle_runner.cc | 5 - - 38 files changed, 1160 insertions(+), 129 deletions(-) + third_party/blink/common/features.cc | 12 +- + 39 files changed, 1166 insertions(+), 135 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 @@ -62,14 +64,14 @@ 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 -@@ -401,6 +401,7 @@ if (current_toolchain == default_toolchain) { - "//chrome/browser/download/android:java", - "//chrome/browser/download/android:java_resources", - "//chrome/browser/enterprise/util:java", +@@ -372,6 +372,7 @@ if (current_toolchain == default_toolchain) { + "//chrome/android/modules/image_editor/provider:java", + "//chrome/android/modules/stack_unwinder/provider:java", + "//chrome/android/webapk/libs/client:client_java", + "//chrome/browser/endpoint_fetcher:java", - "//chrome/browser/feature_engagement:java", - "//chrome/browser/feature_guide/notifications:java", - "//chrome/browser/feed/android:java", + "//chrome/android/webapk/libs/common:common_java", + "//chrome/android/webapk/libs/common:splash_java", + "//chrome/android/webapk/libs/runtime_library:webapk_service_aidl_java", 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 @@ -77,7 +79,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja "java/res/layout/account_chooser_dialog_title.xml", "java/res/layout/account_divider_preference.xml", "java/res/layout/account_management_account_row.xml", -+ "java/res/layout/adblock_editor.xml", ++ "java/res/layout/adblock_editor.xml", "java/res/layout/auto_sign_in_first_run_dialog.xml", "java/res/layout/autofill_billing_address_dropdown.xml", "java/res/layout/autofill_card_unmask_prompt.xml", @@ -92,7 +94,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -908,6 +908,8 @@ chrome_java_sources = [ +@@ -907,6 +907,8 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/permissions/PermissionSettingsBridge.java", "java/src/org/chromium/chrome/browser/permissions/PermissionUpdateRequester.java", "java/src/org/chromium/chrome/browser/photo_picker/DecoderServiceImpl.java", @@ -555,16 +557,16 @@ diff --git a/chrome/browser/browser_process_impl.h b/chrome/browser/browser_proc diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc --- a/chrome/browser/chrome_browser_main.cc +++ b/chrome/browser/chrome_browser_main.cc -@@ -1753,6 +1753,9 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { - // Just initialize the policy prefs service here. Variations seed fetching - // will be initialized when the app enters foreground mode. - variations_service->set_policy_pref_service(profile->GetPrefs()); +@@ -415,6 +415,9 @@ StartupProfileInfo CreateInitialProfile( + // missing code in the above test. + CHECK(profile_info.profile) << "Cannot get default profile."; + + // force AdBlock updater initialisation + g_browser_process->adblock_updater(); + #else - // We are in regular browser boot sequence. Open initial tabs and enter the - // main message loop. + #if BUILDFLAG(IS_CHROMEOS_LACROS) + // Lacros has a special "primary" profile that is tied to the active ChromeOS diff --git a/chrome/browser/flags/android/cached_feature_flags.cc b/chrome/browser/flags/android/cached_feature_flags.cc --- a/chrome/browser/flags/android/cached_feature_flags.cc +++ b/chrome/browser/flags/android/cached_feature_flags.cc @@ -702,7 +704,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 -@@ -282,8 +282,8 @@ +@@ -303,8 +303,8 @@ This site shows intrusive or misleading ads @@ -1866,5 +1868,41 @@ diff --git a/content/browser/renderer_host/navigation_throttle_runner.cc b/conte } NavigationThrottle* NavigationThrottleRunner::GetDeferringThrottle() const { +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 +@@ -28,8 +28,8 @@ BASE_FEATURE(kAnonymousIframeOriginTrial, + // Apply lazy-loading to ad frames which have embeds likely impacting Core Web + // Vitals. + BASE_FEATURE(kAutomaticLazyFrameLoadingToAds, +- "AutomaticLazyFrameLoadingToAds", +- base::FEATURE_DISABLED_BY_DEFAULT); ++ "AutomaticLazyFrameLoadingToAds", // must be enabled ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite + + // The timeout value that forces loading iframes that are lazy loaded by + // LazyAds. After this timeout, the frame loading is triggered even when the +@@ -49,8 +49,8 @@ const base::FeatureParam kSkipFrameCountForLazyAds( + // Apply lazy-loading to frames which have embeds likely impacting Core Web + // Vitals. + BASE_FEATURE(kAutomaticLazyFrameLoadingToEmbeds, +- "AutomaticLazyFrameLoadingToEmbeds", +- base::FEATURE_DISABLED_BY_DEFAULT); ++ "AutomaticLazyFrameLoadingToEmbeds", // must be enabled ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite + + // The timeout value that forces loading iframes that are lazy loaded by + // LazyEmbeds. After this timeout, the frame loading is triggered even when the +@@ -72,8 +72,8 @@ const base::FeatureParam kSkipFrameCountForLazyEmbeds( + // to gather Blink.AutomaticLazyLoadFrame.LazyEmbedFrameCount UKM data even when + // kAutomaticLazyFrameLoadingToEmbeds is disabled. + BASE_FEATURE(kAutomaticLazyFrameLoadingToEmbedUrls, +- "AutomaticLazyFrameLoadingToEmbedUrls", +- base::FEATURE_DISABLED_BY_DEFAULT); ++ "AutomaticLazyFrameLoadingToEmbedUrls", // must be disabled ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite + + // Define the strategy for LazyEmbeds to decide which frames we apply + // lazy-loading or not. If the loading strategy is kAllowList, the detection -- 2.25.1 diff --git a/build/patches/Fix-WebWorker-requestAnimationFrame.patch b/build/patches/Clamp-time-resolution-in-requestAnimationFrame.patch similarity index 81% rename from build/patches/Fix-WebWorker-requestAnimationFrame.patch rename to build/patches/Clamp-time-resolution-in-requestAnimationFrame.patch index 3acfcce5..eff06cbc 100644 --- a/build/patches/Fix-WebWorker-requestAnimationFrame.patch +++ b/build/patches/Clamp-time-resolution-in-requestAnimationFrame.patch @@ -1,9 +1,12 @@ From: uazo Date: Mon, 3 Oct 2022 09:39:07 +0000 -Subject: Fix WebWorker requestAnimationFrame +Subject: Clamp time resolution in requestAnimationFrame -Aligns requestAnimationFrame's callback to the w3c specification -See bugid 1236113 +Aligns requestAnimationFrame's WebWorker callback to the W3C specification +See https://bugs.chromium.org/p/chromium/issues/detail?id=1236113 + +Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html +License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../animation_frame/worker_animation_frame_provider.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) @@ -11,16 +14,15 @@ See bugid 1236113 diff --git a/third_party/blink/renderer/core/animation_frame/worker_animation_frame_provider.cc b/third_party/blink/renderer/core/animation_frame/worker_animation_frame_provider.cc --- a/third_party/blink/renderer/core/animation_frame/worker_animation_frame_provider.cc +++ b/third_party/blink/renderer/core/animation_frame/worker_animation_frame_provider.cc -@@ -8,7 +8,9 @@ +@@ -7,6 +7,8 @@ + #include "base/trace_event/trace_event.h" #include "third_party/blink/renderer/core/execution_context/agent.h" #include "third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.h" - #include "third_party/blink/renderer/core/timing/worker_global_scope_performance.h" +#include "third_party/blink/renderer/core/workers/worker_global_scope.h" - #include "third_party/blink/renderer/platform/scheduler/public/event_loop.h" +#include "third_party/blink/renderer/platform/wtf/casting.h" + #include "third_party/blink/renderer/core/timing/worker_global_scope_performance.h" + #include "third_party/blink/renderer/platform/scheduler/public/event_loop.h" #include "third_party/blink/renderer/platform/wtf/cross_thread_functional.h" - - namespace blink { @@ -63,7 +65,11 @@ void WorkerAnimationFrameProvider::BeginFrame(const viz::BeginFrameArgs& args) { } } diff --git a/build/patches/Client-hints-overrides.patch b/build/patches/Client-hints-overrides.patch index 9c1a2a3b..8d9b0527 100644 --- a/build/patches/Client-hints-overrides.patch +++ b/build/patches/Client-hints-overrides.patch @@ -3,22 +3,19 @@ Date: Thu, 22 Jul 2021 23:10:52 +0200 Subject: Client hints overrides Disable critical client hints -Hard-code model to SAMSUNG SM-G960U -use Google Chrome branding for client hints +Use Google Chrome branding for client hints License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - components/embedder_support/user_agent_utils.cc | 4 +--- - content/browser/client_hints/client_hints.cc | 3 ++- - content/browser/loader/navigation_url_loader_impl.cc | 5 +++++ - content/common/user_agent.cc | 9 +-------- - content/public/common/content_features.cc | 2 +- - services/network/public/cpp/client_hints.cc | 1 + - services/network/public/cpp/features.cc | 2 +- - third_party/blink/common/client_hints/client_hints.cc | 1 + - .../blink/common/client_hints/enabled_client_hints.cc | 4 +++- - third_party/blink/common/features.cc | 4 ++-- - 10 files changed, 18 insertions(+), 17 deletions(-) + components/embedder_support/user_agent_utils.cc | 4 +--- + content/browser/client_hints/client_hints.cc | 3 ++- + content/browser/loader/navigation_url_loader_impl.cc | 5 +++++ + content/public/common/content_features.cc | 4 ++-- + services/network/public/cpp/client_hints.cc | 1 + + services/network/public/cpp/features.cc | 2 +- + third_party/blink/common/client_hints/client_hints.cc | 1 + + .../blink/common/client_hints/enabled_client_hints.cc | 4 +++- + 8 files changed, 16 insertions(+), 8 deletions(-) diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedder_support/user_agent_utils.cc --- a/components/embedder_support/user_agent_utils.cc @@ -62,34 +59,17 @@ diff --git a/content/browser/loader/navigation_url_loader_impl.cc b/content/brow LogAcceptCHFrameStatus(AcceptCHFrameRestart::kFramePresent); // Given that this is happening in the middle of navigation, there should -diff --git a/content/common/user_agent.cc b/content/common/user_agent.cc ---- a/content/common/user_agent.cc -+++ b/content/common/user_agent.cc -@@ -323,14 +323,7 @@ std::string BuildUserAgentFromProduct(const std::string& product) { - } - - std::string BuildModelInfo() { -- std::string model; --#if BUILDFLAG(IS_ANDROID) -- // Only send the model information if on the release build of Android, -- // matching user agent behaviour. -- if (base::SysInfo::GetAndroidBuildCodename() == "REL") -- model = base::SysInfo::HardwareModelName(); --#endif -- return model; -+ return "SAMSUNG SM-G960U"; - } - - #if BUILDFLAG(IS_ANDROID) 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 -@@ -248,7 +248,7 @@ BASE_FEATURE(kCrashReporting, +@@ -248,8 +248,8 @@ BASE_FEATURE(kCrashReporting, + // Enables support for the `Critical-CH` response header. // https://github.com/WICG/client-hints-infrastructure/blob/master/reliability.md#critical-ch BASE_FEATURE(kCriticalClientHint, - "CriticalClientHint", +- "CriticalClientHint", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "CriticalClientHint", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite // Enable debugging the issue crbug.com/1201355 BASE_FEATURE(kDebugHistoryInterventionNoUserActivation, @@ -107,12 +87,12 @@ diff --git a/services/network/public/cpp/client_hints.cc b/services/network/publ 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 -@@ -197,7 +197,7 @@ BASE_FEATURE(kWebSocketReassembleShortMessages, +@@ -198,7 +198,7 @@ BASE_FEATURE(kWebSocketReassembleShortMessages, // Enable support for ACCEPT_CH H2/3 frame as part of Client Hint Reliability. // See: // https://tools.ietf.org/html/draft-davidben-http-client-hint-reliability-02#section-4.3 -BASE_FEATURE(kAcceptCHFrame, "AcceptCHFrame", base::FEATURE_ENABLED_BY_DEFAULT); -+BASE_FEATURE(kAcceptCHFrame, "AcceptCHFrame", base::FEATURE_DISABLED_BY_DEFAULT); // disabled by default ++BASE_FEATURE(kAcceptCHFrame, "AcceptCHFrame", base::FEATURE_DISABLED_BY_DEFAULT); // disabled by default in Bromite BASE_FEATURE(kSCTAuditingRetryReports, "SCTAuditingRetryReports", @@ -155,26 +135,5 @@ diff --git a/third_party/blink/common/client_hints/enabled_client_hints.cc b/thi for (const auto& elem : network::GetClientHintToNameMap()) { const auto& type = elem.first; if (IsEnabled(type)) -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 -@@ -553,7 +553,7 @@ BASE_FEATURE(kAudioWorkletThreadRealtimePriority, - BASE_FEATURE(kLightweightNoStatePrefetch, - "LightweightNoStatePrefetch", - #if BUILDFLAG(IS_ANDROID) -- base::FEATURE_ENABLED_BY_DEFAULT -+ base::FEATURE_DISABLED_BY_DEFAULT - #else - base::FEATURE_DISABLED_BY_DEFAULT - #endif -@@ -1091,7 +1091,7 @@ BASE_FEATURE(kForceMajorVersionInMinorPositionInUserAgent, - // Enable `sec-ch-device-memory` client hint. - BASE_FEATURE(kClientHintsDeviceMemory, - "ClientHintsDeviceMemory", -- base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); - - // Enable `sec-ch-dpr` client hint. - BASE_FEATURE(kClientHintsDPR, -- 2.25.1 diff --git a/build/patches/Content-settings-infrastructure.patch b/build/patches/Content-settings-infrastructure.patch index 19c8aa72..cd1e1de9 100644 --- a/build/patches/Content-settings-infrastructure.patch +++ b/build/patches/Content-settings-infrastructure.patch @@ -763,7 +763,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 -@@ -43,6 +43,7 @@ import org.chromium.content_public.browser.ContentFeatureList; +@@ -42,6 +42,7 @@ import org.chromium.content_public.browser.ContentFeatureList; import java.util.Collection; import java.util.HashMap; import java.util.Map; @@ -771,7 +771,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. -@@ -172,7 +173,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -171,7 +172,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment case ContentSettingsType.CLIPBOARD_READ_WRITE: return "clipboard_permission_list"; default: @@ -780,7 +780,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } } -@@ -505,7 +506,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -504,7 +505,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment private void setupContentSettingsPreferences() { mMaxPermissionOrder = findPreference(PREF_PERMISSIONS_HEADER).getOrder(); @@ -818,7 +818,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c switchPreference.setOnPreferenceChangeListener(this); @ContentSettingsType int contentType = getContentSettingsTypeFromPreferenceKey(preference.getKey()); -@@ -1216,7 +1224,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -1206,7 +1214,7 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment } mSite.setContentSetting(browserContextHandle, type, permission); @@ -929,7 +929,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/Website.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java -@@ -282,6 +282,10 @@ public final class Website implements WebsiteEntry { +@@ -277,6 +277,10 @@ public final class Website implements WebsiteEntry { /*isEmbargoed=*/false); setContentSettingException(type, exception); } @@ -955,7 +955,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/WebsitePreferenceBridge.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java -@@ -248,7 +248,7 @@ public class WebsitePreferenceBridge { +@@ -246,7 +246,7 @@ public class WebsitePreferenceBridge { case ContentSettingsType.TIMEZONE_OVERRIDE: return true; default: @@ -1120,7 +1120,7 @@ diff --git a/components/content_settings/core/browser/website_settings_registry. diff --git a/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java b/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java --- a/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java +++ b/components/page_info/android/java/src/org/chromium/components/page_info/PermissionParamsListBuilder.java -@@ -109,6 +109,7 @@ public class PermissionParamsListBuilder { +@@ -104,6 +104,7 @@ public class PermissionParamsListBuilder { permissionParams.allowed = true; break; case ContentSettingValues.BLOCK: @@ -1153,8 +1153,8 @@ diff --git a/components/page_info/android/page_info_controller_android.cc b/comp + std::map user_specified_settings_to_display; - std::map -@@ -242,6 +251,15 @@ absl::optional PageInfoControllerAndroid::GetSettingToDisplay( + +@@ -236,6 +245,15 @@ absl::optional PageInfoControllerAndroid::GetSettingToDisplay( // The images content setting should show up if it is blocked globally // to give users an easy way to create exceptions. return permission.default_setting; @@ -1173,14 +1173,14 @@ 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 -@@ -25,6 +25,7 @@ +@@ -24,6 +24,7 @@ + #include "components/browser_ui/util/android/url_constants.h" #include "components/browsing_data/content/local_storage_helper.h" #include "components/content_settings/browser/page_specific_content_settings.h" - #include "components/content_settings/browser/ui/cookie_controls_controller.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_utils.h" - #include "components/content_settings/core/browser/host_content_settings_map.h" @@ -167,6 +168,15 @@ bool ShouldShowPermission(const PageInfo::PermissionInfo& info, return true; } diff --git a/build/patches/Disable-AGSA-by-default.patch b/build/patches/Disable-AGSA-by-default.patch index c15ab412..35562541 100644 --- a/build/patches/Disable-AGSA-by-default.patch +++ b/build/patches/Disable-AGSA-by-default.patch @@ -13,16 +13,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../init/ProcessInitializationHandler.java | 8 ------ .../browser/ntp/search/SearchBoxMediator.java | 1 - .../chrome/browser/share/LensUtils.java | 12 +-------- - .../flags/android/chrome_feature_list.cc | 2 +- + .../flags/android/chrome_feature_list.cc | 4 +-- .../browser/flags/CachedFeatureFlags.java | 2 +- chrome/browser/ui/android/omnibox/BUILD.gn | 2 -- .../browser/omnibox/LocationBarMediator.java | 1 - - 13 files changed, 3 insertions(+), 77 deletions(-) + 13 files changed, 4 insertions(+), 78 deletions(-) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -409,7 +409,6 @@ if (current_toolchain == default_toolchain) { +@@ -408,7 +408,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/first_run/android:java", "//chrome/browser/flags:java", "//chrome/browser/fullscreen/android:java", @@ -30,7 +30,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/history_clusters:java", "//chrome/browser/history_clusters:java_resources", "//chrome/browser/image_descriptions:java", -@@ -1004,7 +1003,6 @@ if (current_toolchain == default_toolchain) { +@@ -1002,7 +1001,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/flags:flags_junit_tests", "//chrome/browser/flags:java", "//chrome/browser/fullscreen/android:java", @@ -38,7 +38,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/history_clusters:java", "//chrome/browser/image_descriptions:java", "//chrome/browser/image_editor/public:java", -@@ -1522,7 +1520,6 @@ if (current_toolchain == default_toolchain) { +@@ -1517,7 +1515,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/first_run/android:java", "//chrome/browser/flags:java", "//chrome/browser/fullscreen/android:java", @@ -196,7 +196,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/init/ProcessInitializationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java -@@ -358,14 +358,6 @@ public class ProcessInitializationHandler { +@@ -360,14 +360,6 @@ public class ProcessInitializationHandler { } }); @@ -262,12 +262,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils 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 -@@ -785,7 +785,7 @@ BASE_FEATURE(kDuetTabStripIntegrationAndroid, +@@ -750,8 +750,8 @@ BASE_FEATURE(kDuetTabStripIntegrationAndroid, + base::FEATURE_DISABLED_BY_DEFAULT); BASE_FEATURE(kExperimentsForAgsa, - "ExperimentsForAgsa", +- "ExperimentsForAgsa", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "ExperimentsForAgsa", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kExploreSites, "ExploreSites", base::FEATURE_DISABLED_BY_DEFAULT); diff --git a/build/patches/Disable-Accessibility-service-by-default.patch b/build/patches/Disable-Accessibility-service-by-default.patch index f3f90487..5018d937 100644 --- a/build/patches/Disable-Accessibility-service-by-default.patch +++ b/build/patches/Disable-Accessibility-service-by-default.patch @@ -14,7 +14,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.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 -@@ -1503,6 +1503,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1500,6 +1500,12 @@ Your Google account may have other forms of browsing history like searches and a Check now diff --git a/build/patches/Disable-AsyncDNS-by-default.patch b/build/patches/Disable-AsyncDNS-by-default.patch index bb039bc2..e0d806a5 100644 --- a/build/patches/Disable-AsyncDNS-by-default.patch +++ b/build/patches/Disable-AsyncDNS-by-default.patch @@ -23,8 +23,8 @@ diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc -#else - base::FEATURE_DISABLED_BY_DEFAULT -#endif -+ "AsyncDns", // Bromite guard for this feature to be always disabled -+ base::FEATURE_DISABLED_BY_DEFAULT // ^ ++ "AsyncDns", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT // in Bromite ); #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ diff --git a/build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch b/build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch index 4e56f62d..a982b942 100644 --- a/build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch +++ b/build/patches/Disable-DRM-media-origin-IDs-preprovisioning.patch @@ -4,18 +4,20 @@ Subject: Disable DRM media origin IDs preprovisioning License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - media/base/media_switches.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + media/base/media_switches.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) 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 -@@ -844,7 +844,7 @@ BASE_FEATURE(kMediaDrmPersistentLicense, +@@ -843,8 +843,8 @@ BASE_FEATURE(kMediaDrmPersistentLicense, + // MediaDrmBridge. If disabled, MediaDrmBridge will get unprovisioned origin IDs // which will trigger provisioning process after MediaDrmBridge is created. BASE_FEATURE(kMediaDrmPreprovisioning, - "MediaDrmPreprovisioning", +- "MediaDrmPreprovisioning", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "MediaDrmPreprovisioning", // must be disabled ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite // Determines if MediaDrmOriginIdManager should attempt to pre-provision origin // IDs at startup (whenever a profile is loaded). Also used by tests that diff --git a/build/patches/Disable-FLoC-and-privacy-sandbox.patch b/build/patches/Disable-FLoC-and-privacy-sandbox.patch index c91ef77a..0177b253 100644 --- a/build/patches/Disable-FLoC-and-privacy-sandbox.patch +++ b/build/patches/Disable-FLoC-and-privacy-sandbox.patch @@ -11,13 +11,13 @@ Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../java/res/xml/privacy_preferences.xml | 4 --- - .../privacy/settings/PrivacySettings.java | 22 ------------ + .../privacy/settings/PrivacySettings.java | 23 ------------ .../browser/chrome_content_browser_client.cc | 3 ++ .../history/core/browser/history_backend.cc | 13 +------ .../privacy_sandbox/privacy_sandbox_prefs.cc | 2 +- .../privacy_sandbox_settings.cc | 35 +++++++++++-------- .../privacy_sandbox_settings.h | 1 - - 7 files changed, 25 insertions(+), 55 deletions(-) + 7 files changed, 25 insertions(+), 56 deletions(-) diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml --- a/chrome/android/java/res/xml/privacy_preferences.xml @@ -36,15 +36,16 @@ 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/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 -@@ -58,7 +58,6 @@ public class PrivacySettings +@@ -58,8 +58,6 @@ public class PrivacySettings private static final String PREF_SECURE_DNS = "secure_dns"; private static final String PREF_DO_NOT_TRACK = "do_not_track"; private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data"; - private static final String PREF_PRIVACY_SANDBOX = "privacy_sandbox"; - private static final String PREF_PROXY_OPTIONS = "proxy"; +- private static final String PREF_PROXY_OPTIONS = "proxy"; private static final String PREF_PRIVACY_GUIDE = "privacy_guide"; private static final String PREF_INCOGNITO_LOCK = "incognito_lock"; -@@ -86,21 +85,6 @@ public class PrivacySettings + +@@ -86,21 +84,6 @@ public class PrivacySettings SettingsUtils.addPreferencesFromResource(this, R.xml.privacy_preferences); getActivity().setTitle(R.string.prefs_privacy_security); @@ -66,7 +67,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting Preference privacyGuidePreference = findPreference(PREF_PRIVACY_GUIDE); if (!ChromeFeatureList.isEnabled(ChromeFeatureList.PRIVACY_GUIDE)) { getPreferenceScreen().removePreference(privacyGuidePreference); -@@ -220,12 +204,6 @@ public class PrivacySettings +@@ -220,12 +203,6 @@ public class PrivacySettings secureDnsPref.setSummary(SecureDnsSettings.getSummary(getContext())); } diff --git a/build/patches/Disable-NTP-remote-suggestions-by-default.patch b/build/patches/Disable-NTP-remote-suggestions-by-default.patch index 3b5e5697..359fdcc8 100644 --- a/build/patches/Disable-NTP-remote-suggestions-by-default.patch +++ b/build/patches/Disable-NTP-remote-suggestions-by-default.patch @@ -5,8 +5,8 @@ Subject: Disable NTP remote suggestions by default License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- components/feed/core/shared_prefs/pref_names.cc | 4 ++-- - components/ntp_snippets/features.cc | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) + components/ntp_snippets/features.cc | 8 ++++---- + 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/components/feed/core/shared_prefs/pref_names.cc b/components/feed/core/shared_prefs/pref_names.cc --- a/components/feed/core/shared_prefs/pref_names.cc @@ -25,21 +25,25 @@ diff --git a/components/feed/core/shared_prefs/pref_names.cc b/components/feed/c diff --git a/components/ntp_snippets/features.cc b/components/ntp_snippets/features.cc --- a/components/ntp_snippets/features.cc +++ b/components/ntp_snippets/features.cc -@@ -40,7 +40,7 @@ const base::Feature* const kAllFeatures[] = { +@@ -39,8 +39,8 @@ const base::Feature* const kAllFeatures[] = { + &kOptionalImagesEnabledFeature}; BASE_FEATURE(kArticleSuggestionsFeature, - "NTPArticleSuggestions", +- "NTPArticleSuggestions", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "NTPArticleSuggestions", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kRemoteSuggestionsEmulateM58FetchingSchedule, "RemoteSuggestionsEmulateM58FetchingSchedule", -@@ -72,7 +72,7 @@ const char kNotificationsIgnoredLimitParam[] = "ignored_limit"; +@@ -71,8 +71,8 @@ const char kNotificationsDailyLimit[] = "daily_limit"; + const char kNotificationsIgnoredLimitParam[] = "ignored_limit"; BASE_FEATURE(kKeepPrefetchedContentSuggestions, - "KeepPrefetchedContentSuggestions", +- "KeepPrefetchedContentSuggestions", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "KeepPrefetchedContentSuggestions", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kOptionalImagesEnabledFeature, "NTPRemoteSuggestionsOptionalImages", diff --git a/build/patches/Disable-StartSurface-feature.patch b/build/patches/Disable-StartSurface-feature.patch new file mode 100644 index 00000000..a6c98316 --- /dev/null +++ b/build/patches/Disable-StartSurface-feature.patch @@ -0,0 +1,27 @@ +From: csagan5 <32685696+csagan5@users.noreply.github.com> +Date: Wed, 16 Nov 2022 11:18:07 +0100 +Subject: Disable StartSurface feature + +This feature would normally show a search box but leads to crashes. + +License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html +--- + chrome/browser/flags/android/chrome_feature_list.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +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 +@@ -1081,8 +1081,8 @@ BASE_FEATURE(kShowExtendedPreloadingSetting, + base::FEATURE_ENABLED_BY_DEFAULT); + + BASE_FEATURE(kStartSurfaceAndroid, +- "StartSurfaceAndroid", +- base::FEATURE_ENABLED_BY_DEFAULT); ++ "StartSurfaceAndroid", // must be disabled ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite + + BASE_FEATURE(kFeedPositionAndroid, + "FeedPositionAndroid", +-- +2.25.1 diff --git a/build/patches/Disable-TLS-resumption.patch b/build/patches/Disable-TLS-resumption.patch index fd4ed7a5..ff76fe1e 100644 --- a/build/patches/Disable-TLS-resumption.patch +++ b/build/patches/Disable-TLS-resumption.patch @@ -39,7 +39,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 -@@ -5021,6 +5021,12 @@ const FeatureEntry kFeatureEntries[] = { +@@ -5016,6 +5016,12 @@ const FeatureEntry kFeatureEntries[] = { {"enable-tls13-early-data", flag_descriptions::kEnableTLS13EarlyDataName, flag_descriptions::kEnableTLS13EarlyDataDescription, kOsAll, FEATURE_VALUE_TYPE(net::features::kEnableTLS13EarlyData)}, @@ -73,7 +73,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -592,6 +592,12 @@ extern const char kEnablePreinstalledWebAppDuplicationFixerDescription[]; +@@ -595,6 +595,12 @@ extern const char kEnablePreinstalledWebAppDuplicationFixerDescription[]; extern const char kEnableTLS13EarlyDataName[]; extern const char kEnableTLS13EarlyDataDescription[]; @@ -89,9 +89,9 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio diff --git a/net/base/features.cc b/net/base/features.cc --- a/net/base/features.cc +++ b/net/base/features.cc -@@ -69,6 +69,14 @@ BASE_FEATURE(kEnableTLS13EarlyData, - "EnableTLS13EarlyData", - base::FEATURE_DISABLED_BY_DEFAULT); +@@ -61,6 +61,14 @@ const base::FeatureParam kUseDnsHttpsSvcbSecureExtraTimeMin{ + &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbSecureExtraTimeMin", + base::Milliseconds(5)}; +BASE_FEATURE(kDisableTLSResumption, + "DisableTLSResumption", @@ -101,8 +101,8 @@ diff --git a/net/base/features.cc b/net/base/features.cc + "LogTLSResumption", + base::FEATURE_DISABLED_BY_DEFAULT); + - BASE_FEATURE(kEncryptedClientHello, - "EncryptedClientHello", + BASE_FEATURE(kUseDnsHttpsSvcbAlpn, + "UseDnsHttpsSvcbAlpn", base::FEATURE_DISABLED_BY_DEFAULT); diff --git a/net/base/features.h b/net/base/features.h --- a/net/base/features.h diff --git a/build/patches/Disable-add-to-home-screen-prompt.patch b/build/patches/Disable-add-to-home-screen-prompt.patch index a5ab8374..94c2c85f 100644 --- a/build/patches/Disable-add-to-home-screen-prompt.patch +++ b/build/patches/Disable-add-to-home-screen-prompt.patch @@ -1,5 +1,5 @@ -From: Your Name -Date: Sat, 22 Oct 2022 07:47:07 +0000 +From: csagan5 <32685696+csagan5@users.noreply.github.com> +Date: Wed, 28 Sep 2022 00:54:10 +0200 Subject: Disable add to home screen prompt License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/build/patches/Disable-all-predictors-code.patch b/build/patches/Disable-all-predictors-code.patch index 6940ddae..77de78e6 100644 --- a/build/patches/Disable-all-predictors-code.patch +++ b/build/patches/Disable-all-predictors-code.patch @@ -7,17 +7,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../chrome_hints_manager.cc | 1 + .../optimization_guide_keyed_service.cc | 1 - - chrome/common/chrome_features.cc | 6 ++--- + chrome/common/chrome_features.cc | 8 ++-- .../optimization_guide/core/hints_fetcher.cc | 1 + - .../optimization_guide/core/hints_manager.cc | 5 ++++ - .../core/optimization_guide_features.cc | 24 +++++++++---------- - .../core/prediction_model_download_manager.cc | 6 +++-- + .../optimization_guide/core/hints_manager.cc | 5 +++ + .../core/optimization_guide_features.cc | 38 +++++++++---------- + .../core/prediction_model_download_manager.cc | 6 ++- .../core/prediction_model_fetcher_impl.cc | 1 + - components/optimization_guide/features.gni | 4 +--- - components/permissions/features.cc | 8 +++---- - .../segmentation_platform/public/features.cc | 2 +- - third_party/blink/common/features.cc | 2 +- - 12 files changed, 34 insertions(+), 27 deletions(-) + components/optimization_guide/features.gni | 4 +- + components/permissions/features.cc | 8 ++-- + third_party/blink/common/features.cc | 8 +--- + 11 files changed, 40 insertions(+), 41 deletions(-) diff --git a/chrome/browser/optimization_guide/chrome_hints_manager.cc b/chrome/browser/optimization_guide/chrome_hints_manager.cc --- a/chrome/browser/optimization_guide/chrome_hints_manager.cc @@ -33,7 +32,7 @@ diff --git a/chrome/browser/optimization_guide/chrome_hints_manager.cc b/chrome/ diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc --- a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc +++ b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc -@@ -324,7 +324,6 @@ void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel( +@@ -320,7 +320,6 @@ void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel( void OptimizationGuideKeyedService::RegisterOptimizationTypes( const std::vector& optimization_types) { @@ -50,17 +49,19 @@ diff --git a/chrome/common/chrome_features.cc b/chrome/common/chrome_features.cc BASE_FEATURE(kPermissionPredictions, - "PermissionPredictions", - base::FEATURE_ENABLED_BY_DEFAULT); -+ "PermissionPredictions", // always disabled ++ "PermissionPredictions", // disabled by default + base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite // The holdback chance is 30% but it can also be configured/updated // through finch if needed. -@@ -896,7 +896,7 @@ const base::FeatureParam kPermissionPredictionsHoldbackChance( +@@ -895,8 +895,8 @@ const base::FeatureParam kPermissionPredictionsHoldbackChance( + // Enables using the prediction service for geolocation permission prompts. BASE_FEATURE(kPermissionGeolocationPredictions, - "PermissionGeolocationPredictions", +- "PermissionGeolocationPredictions", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); // always disabled in Bromite ++ "PermissionGeolocationPredictions", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite const base::FeatureParam kPermissionGeolocationPredictionsHoldbackChance( @@ -118,64 +119,73 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b // Enables fetching from a remote Optimization Guide Service. BASE_FEATURE(kRemoteOptimizationGuideFetching, - "OptimizationHintsFetching", +- "OptimizationHintsFetching", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); // disabled by default in Bromite ++ "OptimizationHintsFetching", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kRemoteOptimizationGuideFetchingAnonymousDataConsent, - "OptimizationHintsFetchingAnonymousDataConsent", - base::FEATURE_ENABLED_BY_DEFAULT); -+ "OptimizationHintsFetchingAnonymousDataConsent", // disabled by default -+ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite ++ "OptimizationHintsFetchingAnonymousDataConsent", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite // Enables performance info in the context menu and fetching from a remote // Optimization Guide Service. -@@ -99,15 +99,15 @@ BASE_FEATURE(kContextMenuPerformanceInfoAndRemoteHintFetching, +@@ -98,17 +98,13 @@ BASE_FEATURE(kContextMenuPerformanceInfoAndRemoteHintFetching, + // Enables the prediction of optimization targets. BASE_FEATURE(kOptimizationTargetPrediction, - "OptimizationTargetPrediction", +- "OptimizationTargetPrediction", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); // disabled by default in Bromite ++ "OptimizationTargetPrediction", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite // Enables the downloading of models. BASE_FEATURE(kOptimizationGuideModelDownloading, - "OptimizationGuideModelDownloading", - #if BUILDFLAG(BUILD_WITH_TFLITE_LIB) +- "OptimizationGuideModelDownloading", +-#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) - base::FEATURE_ENABLED_BY_DEFAULT -#else // BUILD_WITH_TFLITE_LIB - base::FEATURE_DISABLED_BY_DEFAULT -+#else // BUILD_WITH_TFLITE_LIB -+ base::FEATURE_DISABLED_BY_DEFAULT // guard this - #endif // !BUILD_WITH_TFLITE_LIB +- base::FEATURE_DISABLED_BY_DEFAULT +-#endif // !BUILD_WITH_TFLITE_LIB ++ "OptimizationGuideModelDownloading", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT // in Bromite ); -@@ -144,7 +144,7 @@ BASE_FEATURE(kPageEntitiesModelResetOnShutdown, + // Enables page content to be annotated. +@@ -143,8 +139,8 @@ BASE_FEATURE(kPageEntitiesModelResetOnShutdown, + // Enables push notification of hints. BASE_FEATURE(kPushNotifications, - "OptimizationGuidePushNotifications", +- "OptimizationGuidePushNotifications", - base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); // guard this ++ "OptimizationGuidePushNotifications", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite // This feature flag does not turn off any behavior, it is only used for // experiment parameters. -@@ -159,14 +159,14 @@ BASE_FEATURE(kOptimizationGuideMetadataValidation, +@@ -158,15 +154,15 @@ BASE_FEATURE(kOptimizationGuideMetadataValidation, + base::FEATURE_DISABLED_BY_DEFAULT); BASE_FEATURE(kPageTopicsBatchAnnotations, - "PageTopicsBatchAnnotations", +- "PageTopicsBatchAnnotations", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "PageTopicsBatchAnnotations", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kPageVisibilityBatchAnnotations, "PageVisibilityBatchAnnotations", base::FEATURE_ENABLED_BY_DEFAULT); BASE_FEATURE(kUseLocalPageEntitiesMetadataProvider, - "UseLocalPageEntitiesMetadataProvider", +- "UseLocalPageEntitiesMetadataProvider", - base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); // guard this ++ "UseLocalPageEntitiesMetadataProvider", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kPageContentAnnotationsValidation, "PageContentAnnotationsValidation", -@@ -408,7 +408,7 @@ size_t MaxURLKeyedHintCacheSize() { +@@ -408,7 +404,7 @@ size_t MaxURLKeyedHintCacheSize() { bool ShouldPersistHintsToDisk() { return GetFieldTrialParamByFeatureAsBool(kOptimizationHints, @@ -255,40 +265,34 @@ diff --git a/components/permissions/features.cc b/components/permissions/feature BASE_FEATURE(kPermissionPredictionServiceUseUrlOverride, - "kPermissionPredictionServiceUseUrlOverride", - base::FEATURE_DISABLED_BY_DEFAULT); -+ "kPermissionPredictionServiceUseUrlOverride", // disabled by default -+ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite ++ "kPermissionPredictionServiceUseUrlOverride", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kPermissionOnDeviceNotificationPredictions, - "PermissionOnDeviceNotificationPredictions", - base::FEATURE_ENABLED_BY_DEFAULT); -+ "PermissionOnDeviceNotificationPredictions", // disabled by default -+ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite ++ "PermissionOnDeviceNotificationPredictions", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kPermissionOnDeviceGeolocationPredictions, "PermissionOnDeviceGeolocationPredictions", -diff --git a/components/segmentation_platform/public/features.cc b/components/segmentation_platform/public/features.cc ---- a/components/segmentation_platform/public/features.cc -+++ b/components/segmentation_platform/public/features.cc -@@ -35,7 +35,7 @@ BASE_FEATURE(kSegmentationPlatformSearchUser, - BASE_FEATURE(kSegmentationPlatformFeedSegmentFeature, - "SegmentationPlatformFeedSegmentFeature", - #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) -- base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); - #else - base::FEATURE_DISABLED_BY_DEFAULT); - #endif 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 -@@ -216,7 +216,7 @@ BASE_FEATURE(kMixedContentAutoupgrade, +@@ -214,12 +214,8 @@ BASE_FEATURE(kMixedContentAutoupgrade, + // predictor may preconnect/prefetch to resources/origins to make the + // future navigations faster. BASE_FEATURE(kNavigationPredictor, - "NavigationPredictor", - #if BUILDFLAG(IS_ANDROID) +- "NavigationPredictor", +-#if BUILDFLAG(IS_ANDROID) - base::FEATURE_ENABLED_BY_DEFAULT -+ base::FEATURE_DISABLED_BY_DEFAULT - #else - base::FEATURE_DISABLED_BY_DEFAULT - #endif +-#else +- base::FEATURE_DISABLED_BY_DEFAULT +-#endif ++ "NavigationPredictor", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT // in Bromite + ); + + // Anchor Element Interaction -- 2.25.1 diff --git a/build/patches/Disable-all-promo-dialogs.patch b/build/patches/Disable-all-promo-dialogs.patch index 6404a087..e15bb581 100644 --- a/build/patches/Disable-all-promo-dialogs.patch +++ b/build/patches/Disable-all-promo-dialogs.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/src/org/chromium/chrome/browser/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 -@@ -876,7 +876,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -851,7 +851,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { * displayed. */ private boolean triggerPromo(boolean intentWithEffect) { @@ -19,7 +19,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab if (CommandLine.getInstance().hasSwitch(ChromeSwitches.DISABLE_STARTUP_PROMOS)) { return false; } -@@ -911,8 +911,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -886,8 +886,8 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { preferenceManager.writeBoolean( ChromePreferenceKeys.PROMOS_SKIPPED_ON_FIRST_START, true); } @@ -29,6 +29,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab + return false; } - private boolean maybeShowPromo() { + @VisibleForTesting -- 2.25.1 diff --git a/build/patches/Disable-conversion-measurement-api.patch b/build/patches/Disable-conversion-measurement-api.patch index ce2845bb..b06a423d 100644 --- a/build/patches/Disable-conversion-measurement-api.patch +++ b/build/patches/Disable-conversion-measurement-api.patch @@ -11,40 +11,50 @@ being sent and being saved to disk, although it is currently in uncalled code. Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../browser/flags/android/chrome_feature_list.cc | 2 +- - .../embedder_support/origin_trials/features.cc | 2 +- + .../browser/flags/android/chrome_feature_list.cc | 4 ++-- + .../embedder_support/origin_trials/features.cc | 8 ++++---- .../render_view_context_menu_base.cc | 3 --- .../aggregatable_report_sender.cc | 15 +++++++-------- .../attribution_reporting/attribution_host.cc | 1 + .../attribution_report_network_sender.cc | 15 ++++++++------- - .../attribution_storage_sql.cc | 4 +++- + .../attribution_storage_sql.cc | 8 +++++--- content/browser/storage_partition_impl.cc | 7 +------ content/public/browser/navigation_controller.cc | 1 - - third_party/blink/common/features.cc | 2 +- + third_party/blink/common/features.cc | 4 ++-- .../platform/runtime_enabled_features.json5 | 7 +++++++ - 11 files changed, 30 insertions(+), 29 deletions(-) + 11 files changed, 37 insertions(+), 36 deletions(-) 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 -@@ -530,7 +530,7 @@ BASE_FEATURE(kAppMenuMobileSiteOption, +@@ -521,8 +521,8 @@ BASE_FEATURE(kAppMenuMobileSiteOption, + base::FEATURE_DISABLED_BY_DEFAULT); BASE_FEATURE(kAppToWebAttribution, - "AppToWebAttribution", +- "AppToWebAttribution", - base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); // guard this ++ "AppToWebAttribution", // must be disabled ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kBackgroundThreadPool, "BackgroundThreadPool", diff --git a/components/embedder_support/origin_trials/features.cc b/components/embedder_support/origin_trials/features.cc --- a/components/embedder_support/origin_trials/features.cc +++ b/components/embedder_support/origin_trials/features.cc -@@ -19,6 +19,6 @@ BASE_FEATURE(kOriginTrialsSampleAPIThirdPartyAlternativeUsage, +@@ -14,11 +14,11 @@ namespace embedder_support { + // Users from control group will have the feature disabled, excluding them + // from the origin trial. + BASE_FEATURE(kOriginTrialsSampleAPIThirdPartyAlternativeUsage, +- "OriginTrialsSampleAPIThirdPartyAlternativeUsage", +- base::FEATURE_ENABLED_BY_DEFAULT); ++ "OriginTrialsSampleAPIThirdPartyAlternativeUsage", // must be disabled ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kConversionMeasurementAPIAlternativeUsage, - "ConversionMeasurementAPIAlternativeUsage", +- "ConversionMeasurementAPIAlternativeUsage", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "ConversionMeasurementAPIAlternativeUsage", // must be disabled ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite } // namespace embedder_support diff --git a/components/renderer_context_menu/render_view_context_menu_base.cc b/components/renderer_context_menu/render_view_context_menu_base.cc @@ -145,15 +155,19 @@ diff --git a/content/browser/attribution_reporting/attribution_storage_sql.cc b/ } // namespace // static -@@ -433,7 +435,7 @@ bool AttributionStorageSql::DeleteStorageForTesting( +@@ -433,9 +435,9 @@ bool AttributionStorageSql::DeleteStorageForTesting( AttributionStorageSql::AttributionStorageSql( const base::FilePath& user_data_directory, std::unique_ptr delegate) - : path_to_database_(user_data_directory.empty() +- ? base::FilePath() +- : DatabasePath(user_data_directory)), + : path_to_database_(user_data_directory.empty() || g_run_in_memory - ? base::FilePath() - : DatabasePath(user_data_directory)), ++ ? base::FilePath() ++ : DatabasePath(user_data_directory)), delegate_(std::move(delegate)), + rate_limit_table_(delegate_.get()) { + DCHECK(delegate_); diff --git a/content/browser/storage_partition_impl.cc b/content/browser/storage_partition_impl.cc --- a/content/browser/storage_partition_impl.cc +++ b/content/browser/storage_partition_impl.cc @@ -185,12 +199,14 @@ diff --git a/content/public/browser/navigation_controller.cc b/content/public/br 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 -@@ -106,7 +106,7 @@ BASE_FEATURE(kBlockingDownloadsInAdFrameWithoutUserActivation, +@@ -105,8 +105,8 @@ BASE_FEATURE(kBlockingDownloadsInAdFrameWithoutUserActivation, + // Controls whether the Conversion Measurement API infrastructure is enabled. BASE_FEATURE(kConversionMeasurement, - "ConversionMeasurement", +- "ConversionMeasurement", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "ConversionMeasurement", // must be disabled ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite // Controls whether LCP calculations should exclude low-entropy images. If // enabled, then the associated parameter sets the cutoff, expressed as the diff --git a/build/patches/Disable-crash-reporting.patch b/build/patches/Disable-crash-reporting.patch index e86b509c..7863913a 100644 --- a/build/patches/Disable-crash-reporting.patch +++ b/build/patches/Disable-crash-reporting.patch @@ -10,14 +10,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 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 -@@ -241,8 +241,8 @@ BASE_FEATURE(kCooperativeScheduling, +@@ -242,8 +242,8 @@ BASE_FEATURE(kCooperativeScheduling, // Enables crash reporting via Reporting API. // https://www.w3.org/TR/reporting/#crash-report BASE_FEATURE(kCrashReporting, - "CrashReporting", - base::FEATURE_ENABLED_BY_DEFAULT); -+ "CrashReporting", // disabled by default on Bromite -+ base::FEATURE_DISABLED_BY_DEFAULT); // ^ ++ "CrashReporting", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite // Enables support for the `Critical-CH` response header. // https://github.com/WICG/client-hints-infrastructure/blob/master/reliability.md#critical-ch diff --git a/build/patches/Disable-feeds-support-by-default.patch b/build/patches/Disable-feeds-support-by-default.patch index 56d160d0..77376a4c 100644 --- a/build/patches/Disable-feeds-support-by-default.patch +++ b/build/patches/Disable-feeds-support-by-default.patch @@ -6,8 +6,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../org/chromium/chrome/browser/feed/FeedFeatures.java | 8 +------- .../chromium/chrome/browser/flags/CachedFeatureFlags.java | 2 +- - components/feed/feed_feature_list.cc | 4 ++-- - 3 files changed, 4 insertions(+), 10 deletions(-) + components/feed/feed_feature_list.cc | 8 ++++---- + 3 files changed, 6 insertions(+), 12 deletions(-) diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedFeatures.java b/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedFeatures.java --- a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/feed/FeedFeatures.java @@ -42,19 +42,22 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f diff --git a/components/feed/feed_feature_list.cc b/components/feed/feed_feature_list.cc --- a/components/feed/feed_feature_list.cc +++ b/components/feed/feed_feature_list.cc -@@ -18,13 +18,13 @@ namespace feed { +@@ -17,14 +17,14 @@ + namespace feed { BASE_FEATURE(kInterestFeedContentSuggestions, - "InterestFeedContentSuggestions", +- "InterestFeedContentSuggestions", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "InterestFeedContentSuggestions", // must be disabled ++ base::FEATURE_DISABLED_BY_DEFAULT); // by default in Bromite // InterestFeedV2 takes precedence over InterestFeedContentSuggestions. // InterestFeedV2 is cached in ChromeCachedFlags. If the default value here is // changed, please update the cached one's default value in CachedFeatureFlags. BASE_FEATURE(kInterestFeedV2, - "InterestFeedV2", +- "InterestFeedV2", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "InterestFeedV2", // must be disabled ++ base::FEATURE_DISABLED_BY_DEFAULT); // by default in Bromite BASE_FEATURE(kInterestFeedV2Autoplay, "InterestFeedV2Autoplay", diff --git a/build/patches/Disable-fetching-of-all-field-trials.patch b/build/patches/Disable-fetching-of-all-field-trials.patch index 3aad3597..dd52a1bd 100644 --- a/build/patches/Disable-fetching-of-all-field-trials.patch +++ b/build/patches/Disable-fetching-of-all-field-trials.patch @@ -2,7 +2,8 @@ From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Sun, 8 Jul 2018 18:16:34 +0200 Subject: Disable fetching of all field trials -Disable seed-based field trials +Disable seed-based field trials. +Disable reporting of Omnibox suggestions header. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- @@ -12,12 +13,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/ukm/ukm_recorder_impl.cc | 3 +++ .../firstrun/VariationsSeedBridge.java | 2 +- .../firstrun/VariationsSeedFetcher.java | 26 ++++--------------- - .../variations/net/omnibox_http_headers.cc | 2 +- + .../variations/net/omnibox_http_headers.cc | 4 +-- .../variations/net/variations_http_headers.cc | 3 +++ .../service/variations_field_trial_creator.cc | 3 ++- .../variations/service/variations_service.cc | 15 +++-------- .../renderer/core/loader/document_loader.cc | 7 ----- - 11 files changed, 22 insertions(+), 47 deletions(-) + 11 files changed, 23 insertions(+), 48 deletions(-) diff --git a/android_webview/nonembedded/BUILD.gn b/android_webview/nonembedded/BUILD.gn --- a/android_webview/nonembedded/BUILD.gn @@ -145,12 +146,14 @@ diff --git a/components/variations/android/java/src/org/chromium/components/vari diff --git a/components/variations/net/omnibox_http_headers.cc b/components/variations/net/omnibox_http_headers.cc --- a/components/variations/net/omnibox_http_headers.cc +++ b/components/variations/net/omnibox_http_headers.cc -@@ -22,7 +22,7 @@ const char kOmniboxOnDeviceSuggestionsHeader[] = +@@ -21,8 +21,8 @@ const char kOmniboxOnDeviceSuggestionsHeader[] = + // Whether to enable reporting the header. Included as a quick escape hatch in // case of crashes. BASE_FEATURE(kReportOmniboxOnDeviceSuggestionsHeader, - "ReportOmniboxOnDeviceSuggestionsHeader", +- "ReportOmniboxOnDeviceSuggestionsHeader", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "ReportOmniboxOnDeviceSuggestionsHeader", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite std::string GetHeaderValue() { const std::string group = diff --git a/build/patches/Disable-idle-detection.patch b/build/patches/Disable-idle-detection.patch index 2dad020b..8ee087b2 100644 --- a/build/patches/Disable-idle-detection.patch +++ b/build/patches/Disable-idle-detection.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 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 -@@ -479,7 +479,7 @@ BASE_FEATURE(kGreaseUACH, "GreaseUACH", base::FEATURE_ENABLED_BY_DEFAULT); +@@ -480,7 +480,7 @@ BASE_FEATURE(kGreaseUACH, "GreaseUACH", base::FEATURE_ENABLED_BY_DEFAULT); // This is intended as a kill switch for the Idle Detection feature. To enable // this feature, the experimental web platform features flag should be set, // or the site should obtain an Origin Trial token. diff --git a/build/patches/Disable-lock-icon-in-address-bar-by-default.patch b/build/patches/Disable-lock-icon-in-address-bar-by-default.patch index 52e406b6..1e8766f3 100644 --- a/build/patches/Disable-lock-icon-in-address-bar-by-default.patch +++ b/build/patches/Disable-lock-icon-in-address-bar-by-default.patch @@ -4,18 +4,20 @@ Subject: Disable lock icon in address bar by default License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - components/omnibox/common/omnibox_features.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + components/omnibox/common/omnibox_features.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/omnibox/common/omnibox_features.cc b/components/omnibox/common/omnibox_features.cc --- a/components/omnibox/common/omnibox_features.cc +++ b/components/omnibox/common/omnibox_features.cc -@@ -434,7 +434,7 @@ BASE_FEATURE(kSiteSearchStarterPack, +@@ -433,8 +433,8 @@ BASE_FEATURE(kSiteSearchStarterPack, + // Experiment to introduce new security indicators for HTTPS. BASE_FEATURE(kUpdatedConnectionSecurityIndicators, - "OmniboxUpdatedConnectionSecurityIndicators", +- "OmniboxUpdatedConnectionSecurityIndicators", - base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_ENABLED_BY_DEFAULT); ++ "OmniboxUpdatedConnectionSecurityIndicators", // enabled by default ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite // Feature used to default typed navigations to use HTTPS instead of HTTP. // This only applies to navigations that don't have a scheme such as diff --git a/build/patches/Disable-offline-pages-in-CCT.patch b/build/patches/Disable-offline-pages-in-CCT.patch index 911ccb3b..f350d536 100644 --- a/build/patches/Disable-offline-pages-in-CCT.patch +++ b/build/patches/Disable-offline-pages-in-CCT.patch @@ -4,18 +4,20 @@ Subject: Disable offline pages in CCT License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - components/offline_pages/core/offline_page_feature.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + components/offline_pages/core/offline_page_feature.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/offline_pages/core/offline_page_feature.cc b/components/offline_pages/core/offline_page_feature.cc --- a/components/offline_pages/core/offline_page_feature.cc +++ b/components/offline_pages/core/offline_page_feature.cc -@@ -42,7 +42,7 @@ BASE_FEATURE(kOfflinePagesDescriptivePendingStatusFeature, +@@ -41,8 +41,8 @@ BASE_FEATURE(kOfflinePagesDescriptivePendingStatusFeature, + base::FEATURE_ENABLED_BY_DEFAULT); BASE_FEATURE(kOfflinePagesInDownloadHomeOpenInCctFeature, - "OfflinePagesInDownloadHomeOpenInCct", +- "OfflinePagesInDownloadHomeOpenInCct", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "OfflinePagesInDownloadHomeOpenInCct", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kOfflineIndicatorFeature, "OfflineIndicator", diff --git a/build/patches/Disable-safe-browsing.patch b/build/patches/Disable-safe-browsing.patch index 13ff0bf6..361f31d7 100644 --- a/build/patches/Disable-safe-browsing.patch +++ b/build/patches/Disable-safe-browsing.patch @@ -11,8 +11,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../res/xml/google_services_preferences.xml | 5 -- .../android/java/res/xml/main_preferences.xml | 5 -- - .../java/res/xml/privacy_preferences.xml | 9 --- - .../privacy/settings/PrivacySettings.java | 40 ---------- + .../java/res/xml/privacy_preferences.xml | 9 -- + .../privacy/settings/PrivacySettings.java | 40 --------- .../SafeBrowsingSettingsLauncher.java | 8 -- .../usage_stats/UsageStatsConsentDialog.java | 5 -- .../android/chrome_main_delegate_android.cc | 1 + @@ -22,47 +22,47 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/browser_process_impl.cc | 29 ------- chrome/browser/browser_process_impl.h | 4 - .../chrome_browsing_data_remover_delegate.cc | 2 + - .../browser/chrome_content_browser_client.cc | 32 ++++---- + .../browser/chrome_content_browser_client.cc | 32 +++---- .../browser/chrome_content_browser_client.h | 2 + ...ontent_browser_client_receiver_bindings.cc | 2 + .../file_type_policies_component_installer.cc | 16 +--- .../browser/component_updater/registration.cc | 7 -- - .../chrome_download_manager_delegate.cc | 46 +++++------ + .../chrome_download_manager_delegate.cc | 46 +++++----- .../chrome_download_manager_delegate.h | 8 +- .../browser/download/download_item_model.cc | 15 +++- chrome/browser/download/download_item_model.h | 4 + chrome/browser/download/download_prefs.cc | 17 ++-- chrome/browser/download/download_stats.cc | 6 ++ - .../download/download_target_determiner.cc | 66 +++++----------- + .../download/download_target_determiner.cc | 66 +++++---------- .../download/download_target_determiner.h | 6 ++ .../browser/download/download_target_info.cc | 4 + .../browser/download/download_target_info.h | 4 + chrome/browser/download/download_ui_model.cc | 4 + chrome/browser/download/download_ui_model.h | 4 + - .../extensions/api/downloads/downloads_api.cc | 41 +--------- + .../extensions/api/downloads/downloads_api.cc | 41 +-------- .../extensions/api/downloads/downloads_api.h | 12 --- - .../webstore_private/webstore_private_api.cc | 18 +---- - ...e_file_system_access_permission_context.cc | 12 +++ + .../webstore_private/webstore_private_api.cc | 18 +--- + ...e_file_system_access_permission_context.cc | 12 ++- ...me_file_system_access_permission_context.h | 5 +- .../lookalike_url_controller_client.cc | 4 - .../metrics/chrome_metrics_service_client.cc | 3 - ...ial_comparison_cert_verifier_controller.cc | 3 - - .../chrome_password_manager_client.cc | 25 +----- + .../chrome_password_manager_client.cc | 28 +------ .../permissions/chrome_permissions_client.cc | 14 ---- .../permissions/chrome_permissions_client.h | 3 - .../permission_revocation_request.cc | 6 ++ ...quiet_notification_permission_ui_config.cc | 4 +- chrome/browser/prefs/browser_prefs.cc | 3 + - chrome/browser/privacy_guide/android/BUILD.gn | 1 - + chrome/browser/privacy_guide/android/BUILD.gn | 2 - .../privacy_guide/PrivacyGuideFragment.java | 3 - - .../PrivacyGuidePagerAdapter.java | 8 +- + .../PrivacyGuidePagerAdapter.java | 2 - .../privacy_guide/StepDisplayHandlerImpl.java | 2 +- ...hrome_browser_main_extra_parts_profiles.cc | 4 +- chrome/browser/profiles/profile_impl.cc | 4 +- chrome/browser/safe_browsing/BUILD.gn | 4 +- chrome/browser/safe_browsing/android/BUILD.gn | 4 - - .../safe_browsing/SafeBrowsingBridge.java | 79 ------------------- - .../android/safe_browsing_bridge.cc | 59 -------------- + .../safe_browsing/SafeBrowsingBridge.java | 83 ------------------- + .../android/safe_browsing_bridge.cc | 59 ------------- .../download_protection_service.cc | 2 + .../download_protection_service.h | 3 +- .../url_lookup_service_factory.cc | 4 + @@ -70,7 +70,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/ssl/security_state_tab_helper.cc | 10 +-- ...urce_filter_web_contents_helper_factory.cc | 4 + chrome/browser/ui/BUILD.gn | 2 - - .../strings/android_chrome_strings.grd | 21 ----- + .../strings/android_chrome_strings.grd | 9 -- chrome/browser/ui/tab_helpers.cc | 8 ++ .../ui/webui/interstitials/interstitial_ui.cc | 12 +-- chrome/common/safe_browsing/BUILD.gn | 7 -- @@ -84,18 +84,18 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../permissions/permission_request_manager.cc | 5 +- .../safe_browsing/content/browser/BUILD.gn | 1 - .../content/common/file_type_policies.cc | 3 +- - .../safe_browsing/core/common/features.cc | 2 +- - .../content/captive_portal_blocking_page.cc | 9 ++- - .../content/cert_report_helper.cc | 2 - + .../safe_browsing/core/common/features.cc | 4 +- + .../content/captive_portal_blocking_page.cc | 9 +- + .../content/cert_report_helper.cc | 5 +- .../unified_consent_service.cc | 2 +- .../file_system_access_file_writer_impl.cc | 3 +- .../file_system_access_file_writer_impl.h | 5 -- - .../file_system_access_safe_move_helper.cc | 48 +---------- + .../file_system_access_safe_move_helper.cc | 14 +--- .../file_system_access_safe_move_helper.h | 8 +- .../file_system_access_permission_context.h | 6 -- weblayer/BUILD.gn | 4 - weblayer/test/BUILD.gn | 1 - - 86 files changed, 212 insertions(+), 720 deletions(-) + 86 files changed, 215 insertions(+), 678 deletions(-) diff --git a/chrome/android/java/res/xml/google_services_preferences.xml b/chrome/android/java/res/xml/google_services_preferences.xml --- a/chrome/android/java/res/xml/google_services_preferences.xml @@ -313,7 +313,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "permissions/crowd_deny_preload_data.cc", "permissions/crowd_deny_preload_data.h", "permissions/crowd_deny_safe_browsing_request.cc", -@@ -1515,15 +1509,6 @@ static_library("browser") { +@@ -1517,15 +1511,6 @@ static_library("browser") { "renderer_host/chrome_navigation_ui_data.h", "renderer_preferences_util.cc", "renderer_preferences_util.h", @@ -329,7 +329,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "resource_coordinator/resource_coordinator_parts.cc", "resource_coordinator/resource_coordinator_parts.h", "resource_coordinator/session_restore_policy.cc", -@@ -2260,11 +2245,8 @@ static_library("browser") { +@@ -2262,11 +2247,8 @@ static_library("browser") { "//components/reporting/util:status_macros", "//components/reporting/util:status_proto", "//components/reporting/util:task_runner_context", @@ -341,7 +341,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "//components/safe_browsing/content/browser:safe_browsing_service", "//components/safe_browsing/content/browser/password_protection", "//components/safe_browsing/content/browser/web_ui", -@@ -3243,12 +3225,6 @@ static_library("browser") { +@@ -3245,12 +3227,6 @@ static_library("browser") { "profiles/profile_manager_android.cc", "profiles/profile_manager_android.h", "query_tiles/android/tile_provider_factory.cc", @@ -354,7 +354,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "safe_browsing/android/password_reuse_controller_android.cc", "safe_browsing/android/password_reuse_controller_android.h", "safe_browsing/android/safe_browsing_referring_app_bridge_android.cc", -@@ -3731,8 +3707,6 @@ static_library("browser") { +@@ -3733,8 +3709,6 @@ static_library("browser") { "download/download_commands.h", "download/download_crx_util.cc", "download/download_crx_util.h", @@ -363,7 +363,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "download/download_dir_policy_handler.cc", "download/download_dir_policy_handler.h", "download/download_dir_util.cc", -@@ -8257,8 +8231,6 @@ static_library("test_support") { +@@ -8259,8 +8233,6 @@ static_library("test_support") { "//components/reporting/util:status_macros", "//components/reporting/util:status_proto", "//components/reporting/util:task_runner_context", @@ -1043,18 +1043,17 @@ diff --git a/chrome/browser/download/download_item_model.cc b/chrome/browser/dow #include "chrome/browser/safe_browsing/download_protection/download_protection_util.h" #include "chrome/browser/safe_browsing/safe_browsing_service.h" #include "chrome/browser/signin/identity_manager_factory.h" -@@ -46,9 +48,11 @@ +@@ -46,8 +48,10 @@ #include "components/download/public/common/download_item.h" #include "components/safe_browsing/buildflags.h" #include "components/safe_browsing/content/browser/web_ui/safe_browsing_ui.h" +#if BUILDFLAG(FULL_SAFE_BROWSING) #include "components/safe_browsing/content/common/file_type_policies.h" #include "components/safe_browsing/content/common/proto/download_file_types.pb.h" - #include "components/safe_browsing/core/common/features.h" +#endif + #include "components/safe_browsing/core/common/features.h" #include "components/signin/public/base/consent_level.h" #include "components/signin/public/identity_manager/account_info.h" - #include "components/signin/public/identity_manager/identity_manager.h" @@ -67,7 +71,9 @@ using download::DownloadItem; @@ -1212,14 +1211,14 @@ diff --git a/chrome/browser/download/download_stats.cc b/chrome/browser/download } void RecordOpenedDangerousConfirmDialog( -@@ -42,6 +46,7 @@ void RecordOpenedDangerousConfirmDialog( - - void RecordDownloadOpen(ChromeDownloadOpenMethod open_method, - const std::string& mime_type_string) { -+#if defined(FULL_SAFE_BROWSING) +@@ -45,6 +49,7 @@ void RecordDownloadOpen(ChromeDownloadOpenMethod open_method, base::RecordAction(base::UserMetricsAction("Download.Open")); base::UmaHistogramEnumeration("Download.OpenMethod", open_method, DOWNLOAD_OPEN_METHOD_LAST_ENTRY); ++#if defined(FULL_SAFE_BROWSING) + download::DownloadContent download_content = + download::DownloadContentFromMimeType( + mime_type_string, /*record_content_subcategory=*/false); @@ -61,6 +66,7 @@ void RecordDownloadOpen(ChromeDownloadOpenMethod open_method, } base::UmaHistogramEnumeration("Download.Open.ContentType", download_content, @@ -1690,28 +1689,27 @@ diff --git a/chrome/browser/extensions/api/webstore_private/webstore_private_api diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc --- a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc +++ b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.cc -@@ -37,8 +37,10 @@ +@@ -37,8 +37,11 @@ #include "chrome/browser/file_system_access/file_system_access_permission_request_manager.h" #include "chrome/browser/installable/installable_utils.h" #include "chrome/browser/profiles/profile.h" +#if defined(FULL_SAFE_BROWSING) #include "chrome/browser/safe_browsing/download_protection/download_protection_service.h" #include "chrome/browser/safe_browsing/safe_browsing_service.h" ++#include "components/safe_browsing/content/common/file_type_policies.h" +#endif #include "chrome/browser/ui/file_system_access_dialogs.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/pdf_util.h" -@@ -48,7 +50,9 @@ +@@ -48,7 +51,6 @@ #include "components/content_settings/core/common/content_settings_utils.h" #include "components/permissions/permission_util.h" #include "components/safe_browsing/buildflags.h" -+#if defined(FULL_SAFE_BROWSING) - #include "components/safe_browsing/content/common/file_type_policies.h" -+#endif +-#include "components/safe_browsing/content/common/file_type_policies.h" #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/browser/disallow_activation_reason.h" -@@ -146,6 +150,7 @@ void ShowFileSystemAccessRestrictedDirectoryDialogOnUIThread( +@@ -146,6 +148,7 @@ void ShowFileSystemAccessRestrictedDirectoryDialogOnUIThread( origin, path, handle_type, std::move(callback), web_contents); } @@ -1719,7 +1717,7 @@ diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permiss void ShowFileSystemAccessDangerousFileDialogOnUIThread( content::GlobalRenderFrameHostId frame_id, const url::Origin& origin, -@@ -174,6 +179,7 @@ void ShowFileSystemAccessDangerousFileDialogOnUIThread( +@@ -174,6 +177,7 @@ void ShowFileSystemAccessDangerousFileDialogOnUIThread( ShowFileSystemAccessDangerousFileDialog(origin, path, std::move(callback), web_contents); } @@ -1727,7 +1725,7 @@ diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permiss // Sentinel used to indicate that no PathService key is specified for a path in // the struct below. -@@ -344,6 +350,7 @@ BindResultCallbackToCurrentSequence( +@@ -344,6 +348,7 @@ BindResultCallbackToCurrentSequence( base::SequencedTaskRunnerHandle::Get(), std::move(callback)); } @@ -1735,7 +1733,7 @@ diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permiss void DoSafeBrowsingCheckOnUIThread( content::GlobalRenderFrameHostId frame_id, std::unique_ptr item, -@@ -422,6 +429,7 @@ InterpretSafeBrowsingResult(safe_browsing::DownloadCheckResult result) { +@@ -422,6 +427,7 @@ InterpretSafeBrowsingResult(safe_browsing::DownloadCheckResult result) { NOTREACHED(); return ChromeFileSystemAccessPermissionContext::AfterWriteCheckResult::kBlock; } @@ -1743,7 +1741,7 @@ diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permiss std::string GenerateLastPickedDirectoryKey(const std::string& id) { return id.empty() ? kDefaultLastPickedDirectoryKey -@@ -1204,6 +1212,7 @@ void ChromeFileSystemAccessPermissionContext::ConfirmSensitiveEntryAccess( +@@ -1204,6 +1210,7 @@ void ChromeFileSystemAccessPermissionContext::ConfirmSensitiveEntryAccess( frame_id, std::move(callback))); } @@ -1751,7 +1749,7 @@ diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permiss void ChromeFileSystemAccessPermissionContext::PerformAfterWriteChecks( std::unique_ptr item, content::GlobalRenderFrameHostId frame_id, -@@ -1225,6 +1234,7 @@ void ChromeFileSystemAccessPermissionContext::PerformAfterWriteChecks( +@@ -1225,6 +1232,7 @@ void ChromeFileSystemAccessPermissionContext::PerformAfterWriteChecks( }, base::SequencedTaskRunnerHandle::Get(), std::move(callback)))); } @@ -1759,22 +1757,22 @@ diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permiss void ChromeFileSystemAccessPermissionContext:: DidConfirmSensitiveDirectoryAccess( -@@ -1239,6 +1249,7 @@ void ChromeFileSystemAccessPermissionContext:: +@@ -1236,6 +1244,7 @@ void ChromeFileSystemAccessPermissionContext:: + base::OnceCallback callback, + bool should_block) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++#if defined(FULL_SAFE_BROWSING) if (!should_block) { // If attempting to save a file with a dangerous extension, prompt the user // to make them confirm they actually want to save the file. -+#if defined(FULL_SAFE_BROWSING) - if (user_action == UserAction::kSave) { - safe_browsing::DownloadFileType::DangerLevel danger_level = - safe_browsing::FileTypePolicies::GetInstance()->GetFileDangerLevel( -@@ -1258,6 +1269,7 @@ void ChromeFileSystemAccessPermissionContext:: - return; - } - } -+#endif +@@ -1261,6 +1270,7 @@ void ChromeFileSystemAccessPermissionContext:: std::move(callback).Run(SensitiveEntryResult::kAllowed); return; } ++#endif + + auto result_callback = + BindResultCallbackToCurrentSequence(std::move(callback)); diff --git a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h --- a/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h +++ b/chrome/browser/file_system_access/chrome_file_system_access_permission_context.h @@ -1846,6 +1844,18 @@ diff --git a/chrome/browser/net/trial_comparison_cert_verifier_controller.cc b/c diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b/chrome/browser/password_manager/chrome_password_manager_client.cc --- a/chrome/browser/password_manager/chrome_password_manager_client.cc +++ b/chrome/browser/password_manager/chrome_password_manager_client.cc +@@ -127,10 +127,10 @@ + #include "ui/base/data_transfer_policy/data_transfer_endpoint.h" + #include "url/url_constants.h" + ++#include "third_party/blink/public/mojom/clipboard/clipboard.mojom.h" + #if BUILDFLAG(SAFE_BROWSING_AVAILABLE) + #include "chrome/browser/safe_browsing/advanced_protection_status_manager.h" + #include "chrome/browser/safe_browsing/advanced_protection_status_manager_factory.h" +-#include "third_party/blink/public/mojom/clipboard/clipboard.mojom.h" + #endif + + #if BUILDFLAG(IS_ANDROID) @@ -963,21 +963,13 @@ autofill::LanguageCode ChromePasswordManagerClient::GetPageLanguage() const { safe_browsing::PasswordProtectionService* @@ -1869,7 +1879,7 @@ diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b } #endif // defined(ON_FOCUS_PING_ENABLED) -@@ -989,14 +981,6 @@ void ChromePasswordManagerClient::CheckProtectedPasswordEntry( +@@ -989,15 +981,6 @@ void ChromePasswordManagerClient::CheckProtectedPasswordEntry( bool password_field_exists, uint64_t reused_password_hash, const std::string& domain) { @@ -1881,10 +1891,11 @@ diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b - pps->MaybeStartProtectedPasswordEntryRequest( - web_contents(), web_contents()->GetLastCommittedURL(), username, - password_type, matching_reused_credentials, password_field_exists); - +- #if !BUILDFLAG(IS_ANDROID) // If the webpage is not an extension page, do nothing. -@@ -1036,11 +1020,6 @@ void ChromePasswordManagerClient::CheckProtectedPasswordEntry( + if (!GURL(domain).SchemeIs(kExtensionScheme)) { +@@ -1036,11 +1019,6 @@ void ChromePasswordManagerClient::CheckProtectedPasswordEntry( } void ChromePasswordManagerClient::LogPasswordReuseDetectedEvent() { @@ -1896,7 +1907,7 @@ diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b } #if !BUILDFLAG(IS_ANDROID) -@@ -1671,6 +1650,7 @@ bool ChromePasswordManagerClient::IsPasswordManagementEnabledForCurrentPage( +@@ -1671,6 +1649,7 @@ bool ChromePasswordManagerClient::IsPasswordManagementEnabledForCurrentPage( is_enabled = false; } @@ -1904,7 +1915,7 @@ diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b // SafeBrowsing Delayed Warnings experiment can delay some SafeBrowsing // warnings until user interaction. If the current page has a delayed warning, // it'll have a user interaction observer attached. Disable password -@@ -1681,6 +1661,7 @@ bool ChromePasswordManagerClient::IsPasswordManagementEnabledForCurrentPage( +@@ -1681,6 +1660,7 @@ bool ChromePasswordManagerClient::IsPasswordManagementEnabledForCurrentPage( observer->OnPasswordSaveOrAutofillDenied(); is_enabled = false; } @@ -2036,6 +2047,14 @@ diff --git a/chrome/browser/privacy_guide/android/BUILD.gn b/chrome/browser/priv "java/src/org/chromium/chrome/browser/privacy_guide/StepDisplayHandler.java", "java/src/org/chromium/chrome/browser/privacy_guide/StepDisplayHandlerImpl.java", "java/src/org/chromium/chrome/browser/privacy_guide/SyncFragment.java", +@@ -44,7 +43,6 @@ robolectric_library("junit") { + "junit/src/org/chromium/chrome/browser/privacy_guide/CookiesFragmentTest.java", + "junit/src/org/chromium/chrome/browser/privacy_guide/MSBBFragmentTest.java", + "junit/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuidePagerAdapterTest.java", +- "junit/src/org/chromium/chrome/browser/privacy_guide/SafeBrowsingFragmentTest.java", + "junit/src/org/chromium/chrome/browser/privacy_guide/StepDisplayHandlerImplTest.java", + ] + deps = [ diff --git a/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideFragment.java b/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideFragment.java --- a/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideFragment.java +++ b/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuideFragment.java @@ -2052,31 +2071,7 @@ diff --git a/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/b diff --git a/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuidePagerAdapter.java b/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuidePagerAdapter.java --- a/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuidePagerAdapter.java +++ b/chrome/browser/privacy_guide/android/java/src/org/chromium/chrome/browser/privacy_guide/PrivacyGuidePagerAdapter.java -@@ -21,12 +21,11 @@ public class PrivacyGuidePagerAdapter extends FragmentStateAdapter { - * The types of fragments supported. Each fragment corresponds to a step in the privacy guide. - */ - @Retention(RetentionPolicy.SOURCE) -- @IntDef({FragmentType.COOKIES, FragmentType.MSBB, FragmentType.SAFE_BROWSING, -+ @IntDef({FragmentType.COOKIES, FragmentType.MSBB, - FragmentType.SYNC}) - private @interface FragmentType { - int MSBB = 0; - int SYNC = 1; -- int SAFE_BROWSING = 2; - int COOKIES = 3; - } - -@@ -39,9 +38,6 @@ public class PrivacyGuidePagerAdapter extends FragmentStateAdapter { - if (displayHandler.shouldDisplaySync()) { - mFragmentTypeList.add(FragmentType.SYNC); - } -- if (displayHandler.shouldDisplaySafeBrowsing()) { -- mFragmentTypeList.add(FragmentType.SAFE_BROWSING); -- } - if (displayHandler.shouldDisplayCookies()) { - mFragmentTypeList.add(FragmentType.COOKIES); - } -@@ -56,8 +52,6 @@ public class PrivacyGuidePagerAdapter extends FragmentStateAdapter { +@@ -56,8 +56,6 @@ public class PrivacyGuidePagerAdapter extends FragmentStateAdapter { return new MSBBFragment(); case FragmentType.SYNC: return new SyncFragment(); @@ -2208,7 +2203,7 @@ diff --git a/chrome/browser/safe_browsing/android/BUILD.gn b/chrome/browser/safe diff --git a/chrome/browser/safe_browsing/android/java/src/org/chromium/chrome/browser/safe_browsing/SafeBrowsingBridge.java b/chrome/browser/safe_browsing/android/java/src/org/chromium/chrome/browser/safe_browsing/SafeBrowsingBridge.java --- a/chrome/browser/safe_browsing/android/java/src/org/chromium/chrome/browser/safe_browsing/SafeBrowsingBridge.java +++ b/chrome/browser/safe_browsing/android/java/src/org/chromium/chrome/browser/safe_browsing/SafeBrowsingBridge.java -@@ -14,87 +14,8 @@ import org.chromium.base.annotations.NativeMethods; +@@ -14,87 +14,4 @@ import org.chromium.base.annotations.NativeMethods; */ @JNINamespace("safe_browsing") public final class SafeBrowsingBridge { @@ -2281,9 +2276,9 @@ diff --git a/chrome/browser/safe_browsing/android/java/src/org/chromium/chrome/b - return SafeBrowsingBridgeJni.get().isLeakDetectionUnauthenticatedEnabled(); - } - - @NativeMethods - @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE) - public interface Natives { +- @NativeMethods +- @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE) +- public interface Natives { - int umaValueForFile(String path); - boolean getSafeBrowsingExtendedReportingEnabled(); - void setSafeBrowsingExtendedReportingEnabled(boolean enabled); @@ -2294,7 +2289,7 @@ diff --git a/chrome/browser/safe_browsing/android/java/src/org/chromium/chrome/b - boolean isSafeBrowsingManaged(); - boolean hasAccountForLeakCheckRequest(); - boolean isLeakDetectionUnauthenticatedEnabled(); - } +- } } diff --git a/chrome/browser/safe_browsing/android/safe_browsing_bridge.cc b/chrome/browser/safe_browsing/android/safe_browsing_bridge.cc --- a/chrome/browser/safe_browsing/android/safe_browsing_bridge.cc @@ -2536,22 +2531,10 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn 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 -@@ -399,24 +399,6 @@ CHAR_LIMIT guidelines: - - Make searches and browsing better +@@ -411,12 +411,6 @@ CHAR_LIMIT guidelines: + + For more settings that relate to privacy, security, and data collection, see <link>Google services</link> -- -- Sends URLs of pages you visit to Google -- -- -- For more settings that relate to privacy, security, and data collection, see <link>Sync and Google services</link> -- -- -- For more settings that relate to privacy, security, and data collection, see <link1>Sync</link1> and <link2>Google services</link2> -- -- -- For more settings that relate to privacy, security, and data collection, see <link>Google services</link> -- - - Help improve Chrome\u2019s features and performance - @@ -2561,7 +2544,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro -@@ -4834,9 +4816,6 @@ To change this setting, <resetlink>reset sync

<resetlink>reset sync

<link>Make searches and browsing better</link> must be turned on @@ -2891,12 +2874,14 @@ diff --git a/components/safe_browsing/content/common/file_type_policies.cc b/com diff --git a/components/safe_browsing/core/common/features.cc b/components/safe_browsing/core/common/features.cc --- a/components/safe_browsing/core/common/features.cc +++ b/components/safe_browsing/core/common/features.cc -@@ -201,7 +201,7 @@ BASE_FEATURE(kSevenZipEvaluationEnabled, +@@ -200,8 +200,8 @@ BASE_FEATURE(kSevenZipEvaluationEnabled, + base::FEATURE_DISABLED_BY_DEFAULT); BASE_FEATURE(kSuspiciousSiteTriggerQuotaFeature, - "SafeBrowsingSuspiciousSiteTriggerQuota", +- "SafeBrowsingSuspiciousSiteTriggerQuota", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "SafeBrowsingSuspiciousSiteTriggerQuota", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kThreatDomDetailsTagAndAttributeFeature, "ThreatDomDetailsTagAttributes", @@ -2943,7 +2928,17 @@ diff --git a/components/security_interstitials/content/captive_portal_blocking_p diff --git a/components/security_interstitials/content/cert_report_helper.cc b/components/security_interstitials/content/cert_report_helper.cc --- a/components/security_interstitials/content/cert_report_helper.cc +++ b/components/security_interstitials/content/cert_report_helper.cc -@@ -176,8 +176,6 @@ void CertReportHelper::FinishCertCollection() { +@@ -62,8 +62,7 @@ CertReportHelper::CertReportHelper( + interstitial_reason_(interstitial_reason), + overridable_(overridable), + interstitial_time_(interstitial_time), +- can_show_enhanced_protection_message_( +- can_show_enhanced_protection_message), ++ can_show_enhanced_protection_message_(false), // always disabled in Bromite + metrics_helper_(metrics_helper) {} + + CertReportHelper::~CertReportHelper() = default; +@@ -176,8 +175,6 @@ void CertReportHelper::FinishCertCollection() { LOG(ERROR) << "Failed to serialize certificate report."; return; } @@ -3012,14 +3007,14 @@ diff --git a/content/browser/file_system_access/file_system_access_safe_move_hel FileSystemAccessSafeMoveHelper::~FileSystemAccessSafeMoveHelper() = default; -@@ -166,15 +165,9 @@ void FileSystemAccessSafeMoveHelper::Start( +@@ -166,15 +165,8 @@ void FileSystemAccessSafeMoveHelper::Start( return; } - if (!RequireSecurityChecks() || !manager_->permission_context()) { DidAfterWriteCheck( FileSystemAccessPermissionContext::AfterWriteCheckResult::kAllow); - return; +- return; - } - - ComputeHashForSourceFile( @@ -3028,52 +3023,24 @@ diff --git a/content/browser/file_system_access/file_system_access_safe_move_hel } void FileSystemAccessSafeMoveHelper::ComputeHashForSourceFile( -@@ -195,45 +188,6 @@ void FileSystemAccessSafeMoveHelper::ComputeHashForSourceFile( +@@ -195,7 +187,7 @@ void FileSystemAccessSafeMoveHelper::ComputeHashForSourceFile( std::move(wrapped_callback), source_url())); } -void FileSystemAccessSafeMoveHelper::DoAfterWriteCheck( -- base::File::Error hash_result, -- const std::string& hash, -- int64_t size) { -- DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -- -- if (hash_result != base::File::FILE_OK) { -- // Calculating the hash failed. -- std::move(callback_).Run(file_system_access_error::FromStatus( -- blink::mojom::FileSystemAccessStatus::kOperationAborted, -- "Failed to perform Safe Browsing check.")); -- return; -- } -- -- if (!manager_) { -- std::move(callback_).Run(file_system_access_error::FromStatus( -- blink::mojom::FileSystemAccessStatus::kOperationAborted)); -- return; -- } -- -- content::GlobalRenderFrameHostId outermost_main_frame_id; -- auto* rfh = content::RenderFrameHost::FromID(context_.frame_id); -- if (rfh) -- outermost_main_frame_id = rfh->GetOutermostMainFrame()->GetGlobalId(); -- -- auto item = std::make_unique(); -- item->target_file_path = dest_url().path(); -- item->full_path = source_url().path(); -- item->sha256_hash = hash; -- item->size = size; -- item->frame_url = context_.url; -- item->outermost_main_frame_id = outermost_main_frame_id; -- item->has_user_gesture = has_transient_user_activation_; -- manager_->permission_context()->PerformAfterWriteChecks( -- std::move(item), context_.frame_id, -- base::BindOnce(&FileSystemAccessSafeMoveHelper::DidAfterWriteCheck, -- weak_factory_.GetWeakPtr())); ++/*void FileSystemAccessSafeMoveHelper::DoAfterWriteCheck( + base::File::Error hash_result, + const std::string& hash, + int64_t size) { +@@ -232,7 +224,7 @@ void FileSystemAccessSafeMoveHelper::DoAfterWriteCheck( + std::move(item), context_.frame_id, + base::BindOnce(&FileSystemAccessSafeMoveHelper::DidAfterWriteCheck, + weak_factory_.GetWeakPtr())); -} -- ++}*/ + void FileSystemAccessSafeMoveHelper::DidAfterWriteCheck( FileSystemAccessPermissionContext::AfterWriteCheckResult result) { - DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); diff --git a/content/browser/file_system_access/file_system_access_safe_move_helper.h b/content/browser/file_system_access/file_system_access_safe_move_helper.h --- a/content/browser/file_system_access/file_system_access_safe_move_helper.h +++ b/content/browser/file_system_access/file_system_access_safe_move_helper.h diff --git a/build/patches/Disable-safety-check.patch b/build/patches/Disable-safety-check.patch index 56e742e6..a1e95fb2 100644 --- a/build/patches/Disable-safety-check.patch +++ b/build/patches/Disable-safety-check.patch @@ -13,7 +13,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 -@@ -443,7 +443,6 @@ if (current_toolchain == default_toolchain) { +@@ -442,7 +442,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/privacy_sandbox/android:java", "//chrome/browser/profiles/android:java", "//chrome/browser/safe_browsing/android:java", @@ -21,7 +21,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/search_engines/android:java", "//chrome/browser/search_resumption:java", "//chrome/browser/segmentation_platform:factory_java", -@@ -1034,8 +1033,6 @@ if (current_toolchain == default_toolchain) { +@@ -1032,8 +1031,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/privacy_guide/android:java", "//chrome/browser/privacy_guide/android:junit", "//chrome/browser/profiles/android:java", @@ -30,7 +30,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/search_engines/android:java", "//chrome/browser/search_resumption:junit", "//chrome/browser/segmentation_platform:factory_java", -@@ -1561,8 +1558,6 @@ if (current_toolchain == default_toolchain) { +@@ -1556,8 +1553,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/profiles/android:java", "//chrome/browser/safe_browsing/android:java", "//chrome/browser/safe_browsing/android:javatests", @@ -42,7 +42,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn 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 -@@ -947,7 +947,6 @@ chrome_java_sources = [ +@@ -946,7 +946,6 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/safe_browsing/SafeBrowsingPasswordReuseDialogBridge.java", "java/src/org/chromium/chrome/browser/safe_browsing/SafeBrowsingReferringAppBridge.java", "java/src/org/chromium/chrome/browser/safe_browsing/SafeBrowsingSettingsLauncher.java", @@ -85,7 +85,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/omnibox/Omn diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3348,7 +3348,6 @@ static_library("browser") { +@@ -3346,7 +3346,6 @@ static_library("browser") { "//chrome/browser/privacy_sandbox/android:jni_headers", "//chrome/browser/reading_list/android", "//chrome/browser/safe_browsing/android:safe_browsing_enums", diff --git a/build/patches/Disable-smart-selection-by-default.patch b/build/patches/Disable-smart-selection-by-default.patch index 464be5d0..4ff61ec5 100644 --- a/build/patches/Disable-smart-selection-by-default.patch +++ b/build/patches/Disable-smart-selection-by-default.patch @@ -42,7 +42,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextualsearc 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 -@@ -189,6 +189,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -188,6 +188,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kCCTBrandTransparency, &kCCTClientDataHeader, &kCCTIncognito, @@ -50,28 +50,28 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse &kCCTIncognitoAvailableToThirdParty, &kCCTNewDownloadTab, &kCCTPackageNameRecording, -@@ -670,6 +671,10 @@ BASE_FEATURE(kChromeSurveyNextAndroid, - "ChromeSurveyNextAndroid", - base::FEATURE_ENABLED_BY_DEFAULT); +@@ -996,6 +997,10 @@ BASE_FEATURE(kDiscoverFeedMultiColumn, + "DiscoverFeedMultiColumn", + base::FEATURE_DISABLED_BY_DEFAULT); +BASE_FEATURE(kChromeSmartSelection, + "ChromeSmartSelection", + base::FEATURE_DISABLED_BY_DEFAULT); + - BASE_FEATURE(kCommandLineOnNonRooted, - "CommandLineOnNonRooted", + BASE_FEATURE(kTabStripRedesign, + "TabStripRedesign", base::FEATURE_DISABLED_BY_DEFAULT); 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 -@@ -63,6 +63,7 @@ BASE_DECLARE_FEATURE(kCacheDeprecatedSystemLocationSetting); +@@ -62,6 +62,7 @@ BASE_DECLARE_FEATURE(kDontAutoHideBrowserControls); + BASE_DECLARE_FEATURE(kCacheDeprecatedSystemLocationSetting); BASE_DECLARE_FEATURE(kChromeNewDownloadTab); BASE_DECLARE_FEATURE(kChromeShareLongScreenshot); - BASE_DECLARE_FEATURE(kChromeShareScreenshot); +BASE_DECLARE_FEATURE(kChromeSmartSelection); + BASE_DECLARE_FEATURE(kChromeShareScreenshot); BASE_DECLARE_FEATURE(kChromeSharingHub); BASE_DECLARE_FEATURE(kChromeSharingHubLaunchAdjacent); - BASE_DECLARE_FEATURE(kChromeSurveyNextAndroid); 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 @@ -98,7 +98,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variations/fieldtrial_testing_config.json --- a/testing/variations/fieldtrial_testing_config.json +++ b/testing/variations/fieldtrial_testing_config.json -@@ -2702,6 +2702,21 @@ +@@ -3045,6 +3045,21 @@ ] } ], @@ -117,7 +117,7 @@ diff --git a/testing/variations/fieldtrial_testing_config.json b/testing/variati + ] + } + ], - "ChromeTipsInMainMenu": [ + "CommerceHintAndroid": [ { "platforms": [ -- diff --git a/build/patches/Disable-some-signed-exchange-features.patch b/build/patches/Disable-some-signed-exchange-features.patch index 061d5732..24458d05 100644 --- a/build/patches/Disable-some-signed-exchange-features.patch +++ b/build/patches/Disable-some-signed-exchange-features.patch @@ -4,25 +4,28 @@ Subject: Disable some signed exchange features License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - content/public/common/content_features.cc | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) + content/public/common/content_features.cc | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) 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 -@@ -1000,13 +1000,13 @@ BASE_FEATURE(kSharedArrayBufferOnDesktop, +@@ -999,14 +999,14 @@ BASE_FEATURE(kSharedArrayBufferOnDesktop, + // Signed Exchange Reporting for distributors // https://www.chromestatus.com/feature/5687904902840320 BASE_FEATURE(kSignedExchangeReportingForDistributors, - "SignedExchangeReportingForDistributors", +- "SignedExchangeReportingForDistributors", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "SignedExchangeReportingForDistributors", // must be disabled ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite // Origin-Signed HTTP Exchanges (for WebPackage Loading) // https://www.chromestatus.com/feature/5745285984681984 BASE_FEATURE(kSignedHTTPExchange, - "SignedHTTPExchange", +- "SignedHTTPExchange", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "SignedHTTPExchange", // must be disabled ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite // Delays RenderProcessHost shutdown by a few seconds to allow the subframe's // process to be potentially reused. This aims to reduce process churn in diff --git a/build/patches/Disable-text-fragments-by-default.patch b/build/patches/Disable-text-fragments-by-default.patch index 506fed7f..e148c04e 100644 --- a/build/patches/Disable-text-fragments-by-default.patch +++ b/build/patches/Disable-text-fragments-by-default.patch @@ -22,7 +22,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 -@@ -6276,6 +6276,11 @@ const FeatureEntry kFeatureEntries[] = { +@@ -6275,6 +6275,11 @@ const FeatureEntry kFeatureEntries[] = { "")}, #endif @@ -37,9 +37,9 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc 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 -@@ -2801,6 +2801,11 @@ - "owners": [ "alionadangla", "bwwilliams", "bling-flags@google.com"], - "expiry_milestone": 110 +@@ -2706,6 +2706,11 @@ + "owners": [ "robsc", "napper", "alanlxl" ], + "expiry_milestone": 130 }, + { + "name": "enable-text-fragment-anchor", @@ -47,35 +47,35 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js + "expiry_milestone": -1 + }, { - "name": "enable-pci-guard-ui", - "owners": [ "jimmyxgong", "cros-peripherals@google.com" ], + "name": "enable-neural-stylus-palm-rejection", + "owners": [ "robsc", "napper", "adlr" ], 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 -@@ -1418,6 +1418,10 @@ const char kEnableRestrictedWebApisDescription[] = - "Enable the restricted web APIs for dev trial. This will be replaced with " - "permission policies to control the capabilities afterwards."; +@@ -1387,6 +1387,10 @@ extern const char kDropInputEventsBeforeFirstPaintDescription[] = + "intentionally interact with elements on that page. By dropping the events " + "we prevent accidental interaction with a page the user has not seen yet."; +const char kEnableTextFragmentAnchorName[] = "Enable Text Fragment Anchor."; +const char kEnableTextFragmentAnchorDescription[] = + "Enables scrolling to text specified in URL's fragment."; + - const char kEnableWebAuthenticationChromeOSAuthenticatorName[] = - "ChromeOS platform Web Authentication support"; - const char kEnableWebAuthenticationChromeOSAuthenticatorDescription[] = + const char kEnableCssSelectorFragmentAnchorName[] = + "Enables CSS selector fragment anchors"; + const char kEnableCssSelectorFragmentAnchorDescription[] = diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -785,6 +785,9 @@ extern const char - extern const char kEnableRestrictedWebApisName[]; - extern const char kEnableRestrictedWebApisDescription[]; +@@ -767,6 +767,9 @@ extern const char kReduceHorizontalFlingVelocityDescription[]; + extern const char kRetailCouponsName[]; + extern const char kRetailCouponsDescription[]; +extern const char kEnableTextFragmentAnchorName[]; +extern const char kEnableTextFragmentAnchorDescription[]; + - extern const char kEnableWebAuthenticationChromeOSAuthenticatorName[]; - extern const char kEnableWebAuthenticationChromeOSAuthenticatorDescription[]; + extern const char kDropInputEventsBeforeFirstPaintName[]; + extern const char kDropInputEventsBeforeFirstPaintDescription[]; diff --git a/chrome/browser/ui/prefs/prefs_tab_helper.cc b/chrome/browser/ui/prefs/prefs_tab_helper.cc --- a/chrome/browser/ui/prefs/prefs_tab_helper.cc +++ b/chrome/browser/ui/prefs/prefs_tab_helper.cc @@ -91,14 +91,14 @@ diff --git a/chrome/browser/ui/prefs/prefs_tab_helper.cc b/chrome/browser/ui/pre 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 -@@ -269,6 +269,7 @@ void SetRuntimeFeaturesFromChromiumFeatures() { - {wf::EnableSharedArrayBufferOnDesktop, +@@ -270,6 +270,7 @@ void SetRuntimeFeaturesFromChromiumFeatures() { features::kSharedArrayBufferOnDesktop}, {wf::EnableSharedAutofill, autofill::features::kAutofillSharedAutofill}, -+ {wf::EnableTextFragmentIdentifiers, blink::features::kTextFragmentAnchor}, {wf::EnableTouchDragAndContextMenu, features::kTouchDragAndContextMenu}, ++ {wf::EnableTextFragmentIdentifiers, blink::features::kTextFragmentAnchor}, {wf::EnableUserActivationSameOriginVisibility, features::kUserActivationSameOriginVisibility}, + {wf::EnableVideoPlaybackQuality, features::kVideoPlaybackQuality}, 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 @@ -117,14 +117,14 @@ 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 -@@ -216,6 +216,7 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kResourceLoadViaDataPipe); - BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kServiceWorkerUpdateDelay); - BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kStopInBackground); - BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kDropInputEventsBeforeFirstPaint); +@@ -224,6 +224,7 @@ BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kDecodeJpeg420ImagesToYUV); + BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kDecodeLossyWebPImagesToYUV); + + BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kWebFontsCacheAwareTimeoutAdaption); +BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kTextFragmentAnchor); - BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kFileHandlingIcons); - BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kAllowSyncXHRInPageDismissal); - BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kPrefetchPrivacyChanges); + + BLINK_COMMON_EXPORT BASE_DECLARE_FEATURE(kAudioWorkletThreadRealtimePriority); + diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc --- a/third_party/blink/renderer/core/dom/document.cc +++ b/third_party/blink/renderer/core/dom/document.cc diff --git a/build/patches/Disable-update-scheduler.patch b/build/patches/Disable-update-scheduler.patch index b03400fc..a4672872 100644 --- a/build/patches/Disable-update-scheduler.patch +++ b/build/patches/Disable-update-scheduler.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/components/component_updater/android/java/src/org/chromium/components/component_updater/UpdateScheduler.java b/components/component_updater/android/java/src/org/chromium/components/component_updater/UpdateScheduler.java --- a/components/component_updater/android/java/src/org/chromium/components/component_updater/UpdateScheduler.java +++ b/components/component_updater/android/java/src/org/chromium/components/component_updater/UpdateScheduler.java -@@ -34,9 +34,7 @@ public class UpdateScheduler { +@@ -33,9 +33,7 @@ public class UpdateScheduler { @CalledByNative /* package */ static boolean isAvailable() { diff --git a/build/patches/Disable-various-metrics.patch b/build/patches/Disable-various-metrics.patch index a65825ed..dff08420 100644 --- a/build/patches/Disable-various-metrics.patch +++ b/build/patches/Disable-various-metrics.patch @@ -13,11 +13,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../android/ntp/most_visited_sites_bridge.cc | 17 ----------------- chrome/browser/browser_process_impl.cc | 2 +- chrome/browser/chrome_content_browser_client.cc | 15 --------------- - .../chrome_metrics_services_manager_client.cc | 4 ++-- + .../chrome_metrics_services_manager_client.cc | 8 ++++---- components/ntp_tiles/BUILD.gn | 3 --- components/ntp_tiles/most_visited_sites.cc | 2 -- services/metrics/public/cpp/ukm_recorder.cc | 2 +- - 8 files changed, 5 insertions(+), 42 deletions(-) + 8 files changed, 7 insertions(+), 44 deletions(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java --- a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/FirstRunActivityBase.java @@ -140,21 +140,25 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch diff --git a/chrome/browser/metrics/chrome_metrics_services_manager_client.cc b/chrome/browser/metrics/chrome_metrics_services_manager_client.cc --- a/chrome/browser/metrics/chrome_metrics_services_manager_client.cc +++ b/chrome/browser/metrics/chrome_metrics_services_manager_client.cc -@@ -74,7 +74,7 @@ namespace internal { +@@ -73,8 +73,8 @@ namespace internal { + // recording and reporting are enabled. If the feature is enabled, but no // consent is given, then there will be no recording or reporting. BASE_FEATURE(kMetricsReportingFeature, - "MetricsReporting", +- "MetricsReporting", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "MetricsReporting", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite #if BUILDFLAG(IS_ANDROID) // Same as |kMetricsReportingFeature|, but this feature is associated with a -@@ -84,7 +84,7 @@ BASE_FEATURE(kMetricsReportingFeature, +@@ -83,8 +83,8 @@ BASE_FEATURE(kMetricsReportingFeature, + // the fix to not affect the overall sampling rate, this new feature was // created. See crbug/1306481. BASE_FEATURE(kPostFREFixMetricsReportingFeature, - "PostFREFixMetricsReporting", +- "PostFREFixMetricsReporting", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "PostFREFixMetricsReporting", // disabled by deault ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite #endif // BUILDFLAG(IS_ANDROID) // Name of the variations param that defines the sampling rate. diff --git a/build/patches/Do-not-build-API-keys-infobar.patch b/build/patches/Do-not-build-API-keys-infobar.patch index e3ae7ac1..5c00654f 100644 --- a/build/patches/Do-not-build-API-keys-infobar.patch +++ b/build/patches/Do-not-build-API-keys-infobar.patch @@ -10,7 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 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 -@@ -1307,8 +1307,6 @@ static_library("ui") { +@@ -1304,8 +1304,6 @@ static_library("ui") { "singleton_tabs.h", "startup/automation_infobar_delegate.cc", "startup/automation_infobar_delegate.h", diff --git a/build/patches/Do-not-compile-QR-code-sharing.patch b/build/patches/Do-not-compile-QR-code-sharing.patch index bc23c212..95dc20a3 100644 --- a/build/patches/Do-not-compile-QR-code-sharing.patch +++ b/build/patches/Do-not-compile-QR-code-sharing.patch @@ -22,7 +22,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.share.scroll_capture.ScrollCaptureManager; import org.chromium.chrome.browser.tab.AccessibilityVisibilityHandler; import org.chromium.chrome.browser.tab.AutofillSessionLifetimeController; -@@ -499,10 +498,6 @@ public class RootUiCoordinator +@@ -498,10 +497,6 @@ public class RootUiCoordinator } public void onAttachFragment(Fragment fragment) { diff --git a/build/patches/Enable-Certificate-Transparency.patch b/build/patches/Enable-Certificate-Transparency.patch index da6e77ce..76169f97 100644 --- a/build/patches/Enable-Certificate-Transparency.patch +++ b/build/patches/Enable-Certificate-Transparency.patch @@ -3,26 +3,28 @@ Date: Fri, 10 Jun 2022 14:20:02 +0200 Subject: Enable Certificate Transparency Reporting/auditing functionalities are disabled; a flag is exposed. +Add guard to make sure that certificate transparency stays enabled +by default. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- chrome/browser/about_flags.cc | 5 +++++ - chrome/browser/browser_features.cc | 2 +- + chrome/browser/browser_features.cc | 4 ++-- chrome/browser/flag_descriptions.cc | 4 ++++ chrome/browser/flag_descriptions.h | 3 +++ chrome/browser/net/system_network_context_manager.cc | 4 ---- chrome/browser/ssl/sct_reporting_service.cc | 5 +++++ - chrome/common/chrome_features.cc | 2 +- - net/http/transport_security_state.cc | 5 +++-- + chrome/common/chrome_features.cc | 6 +----- + net/http/transport_security_state.cc | 9 +++++---- net/url_request/report_sender.cc | 3 ++- services/network/network_context.cc | 2 +- services/network/sct_auditing/sct_auditing_handler.cc | 2 ++ - 11 files changed, 27 insertions(+), 10 deletions(-) + 11 files changed, 30 insertions(+), 17 deletions(-) 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 -@@ -9061,6 +9061,11 @@ const FeatureEntry kFeatureEntries[] = { +@@ -9060,6 +9060,11 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kWebMidiDescription, kOsAll, FEATURE_VALUE_TYPE(features::kWebMidi)}, #if BUILDFLAG(IS_ANDROID) @@ -37,19 +39,21 @@ 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 -@@ -156,7 +156,7 @@ BASE_FEATURE(kWebUsbDeviceDetection, +@@ -155,8 +155,8 @@ BASE_FEATURE(kWebUsbDeviceDetection, + #if BUILDFLAG(IS_ANDROID) // Enables Certificate Transparency on Android. BASE_FEATURE(kCertificateTransparencyAndroid, - "CertificateTransparencyAndroid", +- "CertificateTransparencyAndroid", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_ENABLED_BY_DEFAULT); // enabled by default in Bromite ++ "CertificateTransparencyAndroid", // must be enabled ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite #endif BASE_FEATURE(kLargeFaviconFromGoogle, 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 -@@ -6869,6 +6869,10 @@ const char kAutofillCreditCardUploadDescription[] = +@@ -6874,6 +6874,10 @@ const char kAutofillCreditCardUploadDescription[] = #endif // defined(TOOLKIT_VIEWS) || BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID) @@ -63,7 +67,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -3966,6 +3966,9 @@ extern const char kAutofillCreditCardUploadDescription[]; +@@ -3969,6 +3969,9 @@ extern const char kAutofillCreditCardUploadDescription[]; #endif // defined(TOOLKIT_VIEWS) || BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID) @@ -112,15 +116,19 @@ diff --git a/chrome/browser/ssl/sct_reporting_service.cc b/chrome/browser/ssl/sc 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 -@@ -996,7 +996,7 @@ BASE_FEATURE(kSchedulerConfiguration, +@@ -995,11 +995,7 @@ BASE_FEATURE(kSchedulerConfiguration, + // Controls whether SCT audit reports are queued and the rate at which they // should be sampled. Default sampling rate is 1/10,000 certificates. - #if BUILDFLAG(IS_ANDROID) +-#if BUILDFLAG(IS_ANDROID) -BASE_FEATURE(kSCTAuditing, "SCTAuditing", base::FEATURE_DISABLED_BY_DEFAULT); -+BASE_FEATURE(kSCTAuditing, "SCTAuditing", base::FEATURE_DISABLED_BY_DEFAULT); // SCT auditing must be always disabled in Bromite - #else - BASE_FEATURE(kSCTAuditing, "SCTAuditing", base::FEATURE_ENABLED_BY_DEFAULT); - #endif +-#else +-BASE_FEATURE(kSCTAuditing, "SCTAuditing", base::FEATURE_ENABLED_BY_DEFAULT); +-#endif ++BASE_FEATURE(kSCTAuditing, "SCTAuditing", base::FEATURE_DISABLED_BY_DEFAULT); // disabled in Bromite + constexpr base::FeatureParam kSCTAuditingSamplingRate{ + &kSCTAuditing, "sampling_rate", 0.0001}; + diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_state.cc --- a/net/http/transport_security_state.cc +++ b/net/http/transport_security_state.cc @@ -132,18 +140,21 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ if (g_hsts_source == nullptr) return false; #endif -@@ -383,12 +384,12 @@ bool DecodeHSTSPreload(const std::string& search_hostname, PreloadResult* out) { +@@ -382,13 +383,13 @@ bool DecodeHSTSPreload(const std::string& search_hostname, PreloadResult* out) { + // static BASE_FEATURE(kDynamicExpectCTFeature, - "DynamicExpectCT", +- "DynamicExpectCT", - base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); // disabled in Bromite ++ "DynamicExpectCT", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite // static BASE_FEATURE(kCertificateTransparencyEnforcement, - "CertificateTransparencyEnforcement", +- "CertificateTransparencyEnforcement", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_ENABLED_BY_DEFAULT); // always enabled in Bromite ++ "CertificateTransparencyEnforcement", // must be enabled ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite void SetTransportSecurityStateSourceForTesting( const TransportSecurityStateSource* source) { diff --git a/build/patches/Enable-ECH-by-default.patch b/build/patches/Enable-ECH-by-default.patch new file mode 100644 index 00000000..db5491b5 --- /dev/null +++ b/build/patches/Enable-ECH-by-default.patch @@ -0,0 +1,25 @@ +From: csagan5 <32685696+csagan5@users.noreply.github.com> +Date: Sun, 30 Oct 2022 18:11:19 +0100 +Subject: Enable ECH by default + +License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html +--- + net/base/features.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/net/base/features.cc b/net/base/features.cc +--- a/net/base/features.cc ++++ b/net/base/features.cc +@@ -78,8 +78,8 @@ BASE_FEATURE(kEnableTLS13EarlyData, + base::FEATURE_DISABLED_BY_DEFAULT); + + BASE_FEATURE(kEncryptedClientHello, +- "EncryptedClientHello", +- base::FEATURE_DISABLED_BY_DEFAULT); ++ "EncryptedClientHello", // enabled ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite + + BASE_FEATURE(kNetworkQualityEstimator, + "NetworkQualityEstimator", +-- +2.25.1 diff --git a/build/patches/Enable-HEVC-by-default.patch b/build/patches/Enable-HEVC-by-default.patch new file mode 100644 index 00000000..a144592e --- /dev/null +++ b/build/patches/Enable-HEVC-by-default.patch @@ -0,0 +1,27 @@ +From: csagan5 <32685696+csagan5@users.noreply.github.com> +Date: Tue, 27 Sep 2022 23:39:54 +0200 +Subject: Enable HEVC by default + +Add a guard to avoid setting to be disabled upstream. + +License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html +--- + media/base/media_switches.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +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 +@@ -289,8 +289,8 @@ BASE_FEATURE(kPictureInPicture, + #if BUILDFLAG(ENABLE_PLATFORM_HEVC) + // Enables HEVC hardware accelerated decoding. + BASE_FEATURE(kPlatformHEVCDecoderSupport, +- "PlatformHEVCDecoderSupport", +- base::FEATURE_ENABLED_BY_DEFAULT); ++ "PlatformHEVCDecoderSupport", // must be enabled ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite + #endif // BUILDFLAG(ENABLE_PLATFORM_HEVC) + + // Only decode preload=metadata elements upon visibility. +-- +2.25.1 diff --git a/build/patches/Enable-IntentBlockExternalFormRedirectsNoGesture.patch b/build/patches/Enable-IntentBlockExternalFormRedirectsNoGesture.patch deleted file mode 100644 index 60ae3a9a..00000000 --- a/build/patches/Enable-IntentBlockExternalFormRedirectsNoGesture.patch +++ /dev/null @@ -1,23 +0,0 @@ -From: csagan5 <32685696+csagan5@users.noreply.github.com> -Date: Tue, 25 May 2021 19:33:41 +0200 -Subject: Enable IntentBlockExternalFormRedirectsNoGesture - -License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ---- - .../external_intents/android/external_intents_features.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/components/external_intents/android/external_intents_features.cc b/components/external_intents/android/external_intents_features.cc ---- a/components/external_intents/android/external_intents_features.cc -+++ b/components/external_intents/android/external_intents_features.cc -@@ -44,7 +44,7 @@ BASE_FEATURE(kExternalNavigationDebugLogs, - - BASE_FEATURE(kIntentBlockExternalFormRedirectsNoGesture, - "IntentBlockExternalFormRedirectsNoGesture", -- base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_ENABLED_BY_DEFAULT); - - static jlong JNI_ExternalIntentsFeatures_GetFeature(JNIEnv* env, jint ordinal) { - return reinterpret_cast(kFeaturesExposedToJava[ordinal]); --- -2.25.1 diff --git a/build/patches/Enable-PermuteTLSExtensions-by-default.patch b/build/patches/Enable-PermuteTLSExtensions-by-default.patch new file mode 100644 index 00000000..b023ac5b --- /dev/null +++ b/build/patches/Enable-PermuteTLSExtensions-by-default.patch @@ -0,0 +1,25 @@ +From: csagan5 <32685696+csagan5@users.noreply.github.com> +Date: Fri, 2 Dec 2022 01:18:14 +0100 +Subject: Enable PermuteTLSExtensions by default + +License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html +--- + net/base/features.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/net/base/features.cc b/net/base/features.cc +--- a/net/base/features.cc ++++ b/net/base/features.cc +@@ -157,8 +157,8 @@ BASE_FEATURE(kTLS13KeyUpdate, + base::FEATURE_DISABLED_BY_DEFAULT); + + BASE_FEATURE(kPermuteTLSExtensions, +- "PermuteTLSExtensions", +- base::FEATURE_DISABLED_BY_DEFAULT); ++ "PermuteTLSExtensions", // enabled by default ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite + + BASE_FEATURE(kPostQuantumCECPQ2, + "PostQuantumCECPQ2", +-- +2.25.1 diff --git a/build/patches/Enable-SPPI-for-devices-with-enough-memory.patch b/build/patches/Enable-SPPI-for-devices-with-enough-memory.patch index 1f1506f4..b739e2e2 100644 --- a/build/patches/Enable-SPPI-for-devices-with-enough-memory.patch +++ b/build/patches/Enable-SPPI-for-devices-with-enough-memory.patch @@ -4,34 +4,39 @@ Subject: Enable SPPI for devices with enough memory License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/common/chrome_features.cc | 4 ---- - components/site_isolation/features.cc | 2 +- - 2 files changed, 1 insertion(+), 5 deletions(-) + chrome/common/chrome_features.cc | 8 ++------ + components/site_isolation/features.cc | 4 ++-- + 2 files changed, 4 insertions(+), 8 deletions(-) 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 -@@ -1046,11 +1046,7 @@ BASE_FEATURE(kSecurityKeyAttestationPrompt, +@@ -1045,12 +1045,8 @@ BASE_FEATURE(kSecurityKeyAttestationPrompt, + // TODO(alexmos): Move this and the other site isolation features below to // browser_features, as they are only used on the browser side. BASE_FEATURE(kSitePerProcess, - "SitePerProcess", +- "SitePerProcess", -#if BUILDFLAG(IS_ANDROID) - base::FEATURE_DISABLED_BY_DEFAULT -#else - base::FEATURE_ENABLED_BY_DEFAULT +- base::FEATURE_ENABLED_BY_DEFAULT -#endif ++ "SitePerProcess", // enabled by default ++ base::FEATURE_ENABLED_BY_DEFAULT // in Bromite ); #if BUILDFLAG(IS_CHROMEOS_ASH) diff --git a/components/site_isolation/features.cc b/components/site_isolation/features.cc --- a/components/site_isolation/features.cc +++ b/components/site_isolation/features.cc -@@ -65,7 +65,7 @@ BASE_FEATURE(kSiteIsolationForOAuthSites, +@@ -64,8 +64,8 @@ BASE_FEATURE(kSiteIsolationForOAuthSites, + // kSitePerProcess won't be checked at all, and field trials won't activate // either the control or the experiment group. BASE_FEATURE(kSiteIsolationMemoryThresholds, - "SiteIsolationMemoryThresholds", +- "SiteIsolationMemoryThresholds", - base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_ENABLED_BY_DEFAULT); ++ "SiteIsolationMemoryThresholds", // must be enabled ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite const char kStrictSiteIsolationMemoryThresholdParamName[] = "strict_site_isolation_threshold_mb"; const char kPartialSiteIsolationMemoryThresholdParamName[] = diff --git a/build/patches/Enable-StrictOriginIsolation-and-SitePerProcess.patch b/build/patches/Enable-StrictOriginIsolation-and-SitePerProcess.patch index fbb2b881..8551786b 100644 --- a/build/patches/Enable-StrictOriginIsolation-and-SitePerProcess.patch +++ b/build/patches/Enable-StrictOriginIsolation-and-SitePerProcess.patch @@ -12,13 +12,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/about_flags.cc | 3 --- chrome/browser/chrome_content_browser_client.cc | 4 ++-- components/site_isolation/site_isolation_policy.cc | 2 ++ - content/public/common/content_features.cc | 2 +- - 4 files changed, 5 insertions(+), 6 deletions(-) + content/public/common/content_features.cc | 4 ++-- + 4 files changed, 6 insertions(+), 7 deletions(-) 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 -@@ -4561,9 +4561,6 @@ const FeatureEntry kFeatureEntries[] = { +@@ -4560,9 +4560,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kSiteIsolationForPasswordSitesDescription, kOsAndroid, FEATURE_VALUE_TYPE( site_isolation::features::kSiteIsolationForPasswordSites)}, @@ -71,12 +71,14 @@ diff --git a/components/site_isolation/site_isolation_policy.cc b/components/sit 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 -@@ -1113,7 +1113,7 @@ BASE_FEATURE(kStopVideoCaptureOnScreenLock, +@@ -1112,8 +1112,8 @@ BASE_FEATURE(kStopVideoCaptureOnScreenLock, + // Controls whether site isolation should use origins instead of scheme and // eTLD+1. BASE_FEATURE(kStrictOriginIsolation, - "StrictOriginIsolation", +- "StrictOriginIsolation", - base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_ENABLED_BY_DEFAULT); ++ "StrictOriginIsolation", // must be enabled ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite // Disallows window.{alert, prompt, confirm} if triggered inside a subframe that // is not same origin with the main frame. diff --git a/build/patches/Enable-darken-websites-checkbox-in-themes.patch b/build/patches/Enable-darken-websites-checkbox-in-themes.patch index 3f66e83b..ca2542f0 100644 --- a/build/patches/Enable-darken-websites-checkbox-in-themes.patch +++ b/build/patches/Enable-darken-websites-checkbox-in-themes.patch @@ -7,8 +7,8 @@ Unexpire #darken-websites-checkbox-in-themes-setting License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- chrome/browser/flag-metadata.json | 6 +++--- - components/content_settings/core/common/features.cc | 2 +- - 2 files changed, 4 insertions(+), 4 deletions(-) + components/content_settings/core/common/features.cc | 4 ++-- + 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json --- a/chrome/browser/flag-metadata.json @@ -29,12 +29,14 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js 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 -@@ -20,7 +20,7 @@ BASE_FEATURE(kImprovedCookieControls, +@@ -19,8 +19,8 @@ BASE_FEATURE(kImprovedCookieControls, + // Enables auto dark feature in theme settings. #if BUILDFLAG(IS_ANDROID) BASE_FEATURE(kDarkenWebsitesCheckboxInThemesSetting, - "DarkenWebsitesCheckboxInThemesSetting", +- "DarkenWebsitesCheckboxInThemesSetting", - base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_ENABLED_BY_DEFAULT); ++ "DarkenWebsitesCheckboxInThemesSetting", // must be enabled ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite constexpr base::FeatureParam kDarkenWebsitesCheckboxOptOut{ &kDarkenWebsitesCheckboxInThemesSetting, "opt_out", true}; #endif // BUILDFLAG(IS_ANDROID) diff --git a/build/patches/Enable-native-Android-autofill.patch b/build/patches/Enable-native-Android-autofill.patch index db3f824f..280b6a4c 100644 --- a/build/patches/Enable-native-Android-autofill.patch +++ b/build/patches/Enable-native-Android-autofill.patch @@ -55,14 +55,14 @@ diff --git a/android_webview/browser/aw_contents.cc b/android_webview/browser/aw diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -505,6 +505,7 @@ if (current_toolchain == default_toolchain) { - "//components/autofill_assistant/android:public_dependencies_java", - "//components/autofill_assistant/android:public_java", - "//components/autofill_assistant/browser:proto_java", -+ "//components/android_autofill/browser:java", - "//components/background_task_scheduler:background_task_scheduler_java", - "//components/background_task_scheduler:background_task_scheduler_task_ids_java", - "//components/bookmarks/common/android:bookmarks_java", +@@ -461,6 +461,7 @@ if (current_toolchain == default_toolchain) { + "//chrome/browser/ui/android/layouts:java", + "//chrome/browser/ui/android/layouts/glue:java", + "//chrome/browser/ui/android/layouts/third_party/float_property:java", ++ "//components/android_autofill/browser:java", + "//chrome/browser/ui/android/logo:java", + "//chrome/browser/ui/android/management:java", + "//chrome/browser/ui/android/multiwindow:java", diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java @@ -105,18 +105,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage + private ChromeSwitchPreference mEnableAndroidAutofillSwitch; + private ChromeSwitchPreference mEnableAndroidAutofillIncognitoSwitch; - private @Nullable PasswordCheck mPasswordCheck; private @ManagePasswordsReferrer int mManagePasswordsReferrer; -@@ -286,6 +299,7 @@ public class PasswordSettings extends PreferenceFragmentCompat + /** +@@ -284,6 +297,7 @@ public class PasswordSettings extends PreferenceFragmentCompat } createSavePasswordsSwitch(); + createEnableAndroidAutofillSwitch(); createAutoSignInCheckbox(); - if (mPasswordCheck != null) { - createCheckPasswords(); -@@ -527,6 +541,71 @@ public class PasswordSettings extends PreferenceFragmentCompat + + if (mTrustedVaultBannerState == TrustedVaultBannerState.OPTED_IN) { +@@ -518,6 +532,71 @@ public class PasswordSettings extends PreferenceFragmentCompat getPrefService().getBoolean(Pref.CREDENTIALS_ENABLE_SERVICE)); } @@ -394,7 +394,7 @@ diff --git a/chrome/browser/android/tab_web_contents_delegate_android.cc b/chrom 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 -@@ -604,6 +604,12 @@ CHAR_LIMIT guidelines: +@@ -601,6 +601,12 @@ CHAR_LIMIT guidelines: Save passwords diff --git a/build/patches/Enable-network-isolation-features.patch b/build/patches/Enable-network-isolation-features.patch index ef27eb3b..ab13d83c 100644 --- a/build/patches/Enable-network-isolation-features.patch +++ b/build/patches/Enable-network-isolation-features.patch @@ -9,52 +9,62 @@ PartitionNelAndReportingByNetworkIsolationKey License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - net/base/features.cc | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) + net/base/features.cc | 32 ++++++++++++++++---------------- + 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/net/base/features.cc b/net/base/features.cc --- a/net/base/features.cc +++ b/net/base/features.cc -@@ -83,15 +83,15 @@ BASE_FEATURE(kSplitCacheByIncludeCredentials, +@@ -82,36 +82,36 @@ BASE_FEATURE(kSplitCacheByIncludeCredentials, + base::FEATURE_DISABLED_BY_DEFAULT); BASE_FEATURE(kSplitCacheByNetworkIsolationKey, - "SplitCacheByNetworkIsolationKey", +- "SplitCacheByNetworkIsolationKey", - base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_ENABLED_BY_DEFAULT); ++ "SplitCacheByNetworkIsolationKey", // must be enabled ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite - BASE_FEATURE(kSplitHostCacheByNetworkIsolationKey, - "SplitHostCacheByNetworkIsolationKey", +-BASE_FEATURE(kSplitHostCacheByNetworkIsolationKey, +- "SplitHostCacheByNetworkIsolationKey", - base::FEATURE_DISABLED_BY_DEFAULT); ++BASE_FEATURE(kSplitHostCacheByNetworkIsolationKey, // must be enabled ++ "SplitHostCacheByNetworkIsolationKey", // in Bromite + base::FEATURE_ENABLED_BY_DEFAULT); BASE_FEATURE(kPartitionConnectionsByNetworkIsolationKey, - "PartitionConnectionsByNetworkIsolationKey", +- "PartitionConnectionsByNetworkIsolationKey", - base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_ENABLED_BY_DEFAULT); ++ "PartitionConnectionsByNetworkIsolationKey", // must be enabled ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kForceIsolationInfoFrameOriginToTopLevelFrame, "ForceIsolationInfoFrameOriginToTopLevelFrame", -@@ -99,19 +99,19 @@ BASE_FEATURE(kForceIsolationInfoFrameOriginToTopLevelFrame, + base::FEATURE_DISABLED_BY_DEFAULT); - BASE_FEATURE(kPartitionHttpServerPropertiesByNetworkIsolationKey, - "PartitionHttpServerPropertiesByNetworkIsolationKey", +-BASE_FEATURE(kPartitionHttpServerPropertiesByNetworkIsolationKey, +- "PartitionHttpServerPropertiesByNetworkIsolationKey", - base::FEATURE_DISABLED_BY_DEFAULT); ++BASE_FEATURE(kPartitionHttpServerPropertiesByNetworkIsolationKey, // must be enabled ++ "PartitionHttpServerPropertiesByNetworkIsolationKey", // in Bromite + base::FEATURE_ENABLED_BY_DEFAULT); BASE_FEATURE(kPartitionSSLSessionsByNetworkIsolationKey, - "PartitionSSLSessionsByNetworkIsolationKey", +- "PartitionSSLSessionsByNetworkIsolationKey", - base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_ENABLED_BY_DEFAULT); ++ "PartitionSSLSessionsByNetworkIsolationKey", // must be enabled ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kPartitionExpectCTStateByNetworkIsolationKey, - "PartitionExpectCTStateByNetworkIsolationKey", +- "PartitionExpectCTStateByNetworkIsolationKey", - base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_ENABLED_BY_DEFAULT); ++ "PartitionExpectCTStateByNetworkIsolationKey", // must be enabled ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kPartitionNelAndReportingByNetworkIsolationKey, - "PartitionNelAndReportingByNetworkIsolationKey", +- "PartitionNelAndReportingByNetworkIsolationKey", - base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_ENABLED_BY_DEFAULT); ++ "PartitionNelAndReportingByNetworkIsolationKey", // must be enabled ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kEnableDoubleKeyNetworkAnonymizationKey, "EnableDoubleKeyNetworkAnonymizationKey", diff --git a/build/patches/Enable-prefetch-privacy-changes-by-default.patch b/build/patches/Enable-prefetch-privacy-changes-by-default.patch index 802afaf0..f189a328 100644 --- a/build/patches/Enable-prefetch-privacy-changes-by-default.patch +++ b/build/patches/Enable-prefetch-privacy-changes-by-default.patch @@ -4,18 +4,20 @@ Subject: Enable prefetch-privacy-changes by default License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - third_party/blink/common/features.cc | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + third_party/blink/common/features.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) 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 -@@ -510,7 +510,7 @@ BASE_FEATURE(kAllowSyncXHRInPageDismissal, +@@ -509,8 +509,8 @@ BASE_FEATURE(kAllowSyncXHRInPageDismissal, + // Prefetch request properties are updated to be privacy-preserving. See // crbug.com/988956. BASE_FEATURE(kPrefetchPrivacyChanges, - "PrefetchPrivacyChanges", +- "PrefetchPrivacyChanges", - base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_ENABLED_BY_DEFAULT); ++ "PrefetchPrivacyChanges", // must be enabled ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite // Decodes jpeg 4:2:0 formatted images to YUV instead of RGBX and stores in this // format in the image decode cache. See crbug.com/919627 for details on the diff --git a/build/patches/Enable-share-intent.patch b/build/patches/Enable-share-intent.patch index 30625920..312f4a1f 100644 --- a/build/patches/Enable-share-intent.patch +++ b/build/patches/Enable-share-intent.patch @@ -41,7 +41,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -971,6 +971,7 @@ chrome_java_sources = [ +@@ -973,6 +973,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallUma.java", "java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardMessageHandler.java", "java/src/org/chromium/chrome/browser/sharing/sms_fetcher/SmsFetcherMessageHandler.java", @@ -168,7 +168,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java -@@ -81,6 +81,7 @@ import org.chromium.chrome.browser.searchwidget.SearchWidgetProvider; +@@ -82,6 +82,7 @@ import org.chromium.chrome.browser.searchwidget.SearchWidgetProvider; import org.chromium.chrome.browser.tab.state.PersistedTabData; import org.chromium.chrome.browser.tab.state.ShoppingPersistedTabData; import org.chromium.chrome.browser.ui.searchactivityutils.SearchActivityPreferencesManager; @@ -176,7 +176,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessIni import org.chromium.chrome.browser.usb.UsbNotificationManager; import org.chromium.chrome.browser.util.AfterStartupTaskUtils; import org.chromium.chrome.browser.webapps.WebappRegistry; -@@ -408,6 +409,8 @@ public class ProcessInitializationHandler { +@@ -417,6 +418,8 @@ public class ProcessInitializationHandler { .resolveClearDataDialogResultRecorder()::makeDeferredRecordings); deferredStartupHandler.addDeferredTask(WebApkUninstallUmaTracker::recordDeferredUma); @@ -311,7 +311,7 @@ new file mode 100644 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 -@@ -6788,6 +6788,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -6783,6 +6783,10 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(IS_CHROMEOS) #if BUILDFLAG(IS_ANDROID) @@ -340,7 +340,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -1573,6 +1573,9 @@ extern const char kIsolateOriginsDescription[]; +@@ -1576,6 +1576,9 @@ extern const char kIsolateOriginsDescription[]; extern const char kIsolationByDefaultName[]; extern const char kIsolationByDefaultDescription[]; @@ -353,7 +353,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio 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 -@@ -280,6 +280,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -273,6 +273,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kRelatedSearchesAlternateUx, &kRelatedSearchesInBar, &kRelatedSearchesSimplifiedUx, @@ -361,32 +361,32 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse &kRelatedSearchesUi, &kRequestDesktopSiteDefaults, &kRequestDesktopSiteDefaultsControl, -@@ -847,6 +848,10 @@ BASE_FEATURE(kNewTabPageTilesTitleWrapAround, - "NewTabPageTilesTitleWrapAround", +@@ -936,6 +937,10 @@ BASE_FEATURE(kSafeModeForCachedFlags, + "SafeModeForCachedFlags", base::FEATURE_DISABLED_BY_DEFAULT); +BASE_FEATURE(kSharedIntentUI, + "SharedIntentUI", + base::FEATURE_ENABLED_BY_DEFAULT); + - BASE_FEATURE(kNewWindowAppMenu, - "NewWindowAppMenu", - base::FEATURE_ENABLED_BY_DEFAULT); + BASE_FEATURE(kShareButtonInTopToolbar, + "ShareButtonInTopToolbar", + base::FEATURE_DISABLED_BY_DEFAULT); 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 -@@ -114,6 +114,7 @@ BASE_DECLARE_FEATURE(kLensOnQuickActionSearchWidget); - BASE_DECLARE_FEATURE(kLocationBarModelOptimizations); - BASE_DECLARE_FEATURE(kNewInstanceFromDraggedLink); - BASE_DECLARE_FEATURE(kNewTabPageTilesTitleWrapAround); +@@ -142,6 +142,7 @@ BASE_DECLARE_FEATURE(kSearchEnginePromoNewDevice); + BASE_DECLARE_FEATURE(kSearchEnginePromoNewDeviceV2); + BASE_DECLARE_FEATURE(kShareButtonInTopToolbar); + BASE_DECLARE_FEATURE(kSearchReadyOmniboxFeature); +BASE_DECLARE_FEATURE(kSharedIntentUI); - BASE_DECLARE_FEATURE(kNewWindowAppMenu); - BASE_DECLARE_FEATURE(kNotificationPermissionVariant); - BASE_DECLARE_FEATURE(kOmahaMinSdkVersionAndroid); + BASE_DECLARE_FEATURE(kSharingHubLinkToggle); + BASE_DECLARE_FEATURE(kShowScrollableMVTOnNTPAndroid); + BASE_DECLARE_FEATURE(kFeedPositionAndroid); 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 -@@ -508,6 +508,7 @@ public abstract class ChromeFeatureList { +@@ -510,6 +510,7 @@ public abstract class ChromeFeatureList { public static final String QUIET_NOTIFICATION_PROMPTS = "QuietNotificationPrompts"; public static final String REACHED_CODE_PROFILER = "ReachedCodeProfiler"; public static final String READ_LATER = "ReadLater"; @@ -397,7 +397,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 -@@ -4837,6 +4837,19 @@ To change this setting, <resetlink>reset sync

<resetlink>reset sync

diff --git a/build/patches/Enable-third-party-storage-partitioning.patch b/build/patches/Enable-third-party-storage-partitioning.patch new file mode 100644 index 00000000..e7a6e32f --- /dev/null +++ b/build/patches/Enable-third-party-storage-partitioning.patch @@ -0,0 +1,25 @@ +From: csagan5 <32685696+csagan5@users.noreply.github.com> +Date: Sat, 3 Dec 2022 12:02:20 +0100 +Subject: Enable third-party storage partitioning + +License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html +--- + net/base/features.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/net/base/features.cc b/net/base/features.cc +--- a/net/base/features.cc ++++ b/net/base/features.cc +@@ -365,8 +365,8 @@ const base::FeatureParam kStorageAccessAPIAutoDenyOutsideFPS{ + // Enables partitioning of third party storage (IndexedDB, CacheStorage, etc.) + // by the top level site to reduce fingerprinting. + BASE_FEATURE(kThirdPartyStoragePartitioning, +- "ThirdPartyStoragePartitioning", +- base::FEATURE_DISABLED_BY_DEFAULT); ++ "ThirdPartyStoragePartitioning", // must be enabled ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite + + BASE_FEATURE(kAlpsParsing, "AlpsParsing", base::FEATURE_ENABLED_BY_DEFAULT); + +-- +2.25.1 diff --git a/build/patches/Experimental-user-scripts-support.patch b/build/patches/Experimental-user-scripts-support.patch index df6d4918..e0007a47 100644 --- a/build/patches/Experimental-user-scripts-support.patch +++ b/build/patches/Experimental-user-scripts-support.patch @@ -236,7 +236,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn } if (enable_vr) { -@@ -609,6 +612,7 @@ if (current_toolchain == default_toolchain) { +@@ -607,6 +610,7 @@ if (current_toolchain == default_toolchain) { "//components/ukm/android:java", "//components/url_formatter/android:url_formatter_java", "//components/user_prefs/android:java", @@ -285,7 +285,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/Downlo diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java --- a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java -@@ -119,6 +119,8 @@ import java.util.Date; +@@ -120,6 +120,8 @@ import java.util.Date; import java.util.List; import java.util.Locale; @@ -294,7 +294,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessIni /** * Handles the initialization dependences of the browser process. This is meant to handle the * initialization that is not tied to any particular Activity, and the logic that should only be -@@ -307,6 +309,7 @@ public class ProcessInitializationHandler { +@@ -308,6 +310,7 @@ public class ProcessInitializationHandler { DefaultBrowserInfo.initBrowserFetcher(); @@ -322,7 +322,7 @@ diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3505,6 +3505,11 @@ static_library("browser") { +@@ -3503,6 +3503,11 @@ static_library("browser") { ] deps += [ "//chrome/android/modules/dev_ui/provider:native" ] } @@ -345,7 +345,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc #include "components/version_info/version_info.h" #include "components/viz/common/features.h" #include "components/viz/common/switches.h" -@@ -7754,6 +7755,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -7749,6 +7750,10 @@ const FeatureEntry kFeatureEntries[] = { chromeos::features::kClipboardHistoryNudgeSessionReset)}, #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -372,7 +372,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch 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 -@@ -6692,6 +6692,11 @@ const char kFollowingFeedSidepanelDescription[] = +@@ -6697,6 +6697,11 @@ const char kFollowingFeedSidepanelDescription[] = #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || // BUILDFLAG(IS_FUCHSIA) || BUILDFLAG(IS_CHROMEOS) @@ -387,7 +387,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -3835,6 +3835,9 @@ extern const char kQuickCommandsDescription[]; +@@ -3838,6 +3838,9 @@ extern const char kQuickCommandsDescription[]; #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || // defined (OS_FUCHSIA) @@ -698,8 +698,8 @@ diff --git a/components/components_strings.grd b/components/components_strings.g + - - + + diff --git a/components/user_scripts/README.md b/components/user_scripts/README.md new file mode 100644 --- /dev/null diff --git a/build/patches/Guard-for-user-agent-reduction.patch b/build/patches/Guard-for-user-agent-reduction.patch new file mode 100644 index 00000000..3a91c932 --- /dev/null +++ b/build/patches/Guard-for-user-agent-reduction.patch @@ -0,0 +1,25 @@ +From: csagan5 <32685696+csagan5@users.noreply.github.com> +Date: Mon, 10 Feb 2020 23:13:13 +0100 +Subject: Guard for user-agent reduction + +License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html +--- + third_party/blink/common/features.cc | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +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 +@@ -1311,8 +1311,8 @@ BASE_FEATURE(kWindowPlacementFullscreenCompanionWindow, + const base::FeatureParam kUserAgentFrozenBuildVersion{ + &kReduceUserAgentMinorVersion, "build_version", "0"}; + +-const base::FeatureParam kAllExceptLegacyWindowsPlatform = { +- &kReduceUserAgentPlatformOsCpu, "all_except_legacy_windows_platform", true}; ++const base::FeatureParam kAllExceptLegacyWindowsPlatform = { // must be enabled ++ &kReduceUserAgentPlatformOsCpu, "all_except_legacy_windows_platform", true}; // in Bromite + const base::FeatureParam kLegacyWindowsPlatform = { + &kReduceUserAgentPlatformOsCpu, "legacy_windows_platform", true}; + +-- +2.25.1 diff --git a/build/patches/History-number-of-days-privacy-setting.patch b/build/patches/History-number-of-days-privacy-setting.patch index bfdd18f2..00319078 100644 --- a/build/patches/History-number-of-days-privacy-setting.patch +++ b/build/patches/History-number-of-days-privacy-setting.patch @@ -67,7 +67,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting /** * Fragment to keep track of the all the privacy related preferences. */ -@@ -78,6 +82,8 @@ public class PrivacySettings +@@ -77,6 +81,8 @@ public class PrivacySettings private ChromeSwitchPreference allowCustomTabIntentsPref; private ChromeSwitchPreference openExternalLinksPref; @@ -76,7 +76,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { PrivacyPreferencesManagerImpl privacyPrefManager = -@@ -119,6 +125,40 @@ public class PrivacySettings +@@ -118,6 +124,40 @@ public class PrivacySettings Preference secureDnsPref = findPreference(PREF_SECURE_DNS); secureDnsPref.setVisible(SecureDnsSettings.isUiEnabled()); @@ -117,7 +117,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting updatePreferences(); } -@@ -218,6 +258,29 @@ public class PrivacySettings +@@ -217,6 +257,29 @@ public class PrivacySettings }; } @@ -184,7 +184,7 @@ diff --git a/chrome/browser/profiles/profile_impl.cc b/chrome/browser/profiles/p 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 -@@ -1139,6 +1139,18 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1136,6 +1136,18 @@ Your Google account may have other forms of browsing history like searches and a Browsing history diff --git a/build/patches/Ignore-enterprise-policies-for-secure-DNS.patch b/build/patches/Ignore-enterprise-policies-for-secure-DNS.patch index 346bb25f..05c35ed5 100644 --- a/build/patches/Ignore-enterprise-policies-for-secure-DNS.patch +++ b/build/patches/Ignore-enterprise-policies-for-secure-DNS.patch @@ -4,22 +4,26 @@ Subject: Ignore enterprise policies for secure DNS License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../chrome/browser/enterprise/util/EnterpriseInfo.java | 4 ++++ - 1 file changed, 4 insertions(+) + .../chrome/browser/enterprise/util/EnterpriseInfo.java | 8 +------- + 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/chrome/browser/enterprise/util/android/java/src/org/chromium/chrome/browser/enterprise/util/EnterpriseInfo.java b/chrome/browser/enterprise/util/android/java/src/org/chromium/chrome/browser/enterprise/util/EnterpriseInfo.java --- a/chrome/browser/enterprise/util/android/java/src/org/chromium/chrome/browser/enterprise/util/EnterpriseInfo.java +++ b/chrome/browser/enterprise/util/android/java/src/org/chromium/chrome/browser/enterprise/util/EnterpriseInfo.java -@@ -91,6 +91,10 @@ public abstract class EnterpriseInfo { +@@ -81,13 +81,7 @@ public abstract class EnterpriseInfo { + @CalledByNative + public static void getManagedStateForNative() { + Callback callback = (result) -> { +- if (result == null) { +- // Unable to determine the owned state, assume it's not owned. +- EnterpriseInfoJni.get().updateNativeOwnedState(false, false); +- } else { +- EnterpriseInfoJni.get().updateNativeOwnedState( +- result.mDeviceOwned, result.mProfileOwned); +- } ++ EnterpriseInfoJni.get().updateNativeOwnedState(false, false); }; EnterpriseInfo.getInstance().getDeviceEnterpriseInfo(callback); -+ if (true) { -+ return; -+ } -+ - } - - @NativeMethods -- 2.25.1 diff --git a/build/patches/Increase-number-of-autocomplete-matches-to-10.patch b/build/patches/Increase-number-of-autocomplete-matches-to-10.patch index 4caa0143..5c11ba82 100644 --- a/build/patches/Increase-number-of-autocomplete-matches-to-10.patch +++ b/build/patches/Increase-number-of-autocomplete-matches-to-10.patch @@ -6,9 +6,21 @@ Patch adapted from https://github.com/Eloston/ungoogled-chromium/issues/814#issu License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- + components/omnibox/browser/autocomplete_result.cc | 1 + components/omnibox/browser/omnibox_field_trial.cc | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) + 2 files changed, 4 insertions(+), 3 deletions(-) +diff --git a/components/omnibox/browser/autocomplete_result.cc b/components/omnibox/browser/autocomplete_result.cc +--- a/components/omnibox/browser/autocomplete_result.cc ++++ b/components/omnibox/browser/autocomplete_result.cc +@@ -78,6 +78,7 @@ constexpr size_t kMaxPedalMatchIndex = std::numeric_limits::max(); + // static + size_t AutocompleteResult::GetMaxMatches(bool is_zero_suggest) { + #if BUILDFLAG(IS_ANDROID) ++ // this needs to be double the value of default_max_matches_per_provider from components/omnibox/browser/omnibox_field_trial.cc + constexpr size_t kDefaultMaxAutocompleteMatches = 10; + constexpr size_t kDefaultMaxZeroSuggestMatches = 15; + #elif BUILDFLAG(IS_IOS) diff --git a/components/omnibox/browser/omnibox_field_trial.cc b/components/omnibox/browser/omnibox_field_trial.cc --- a/components/omnibox/browser/omnibox_field_trial.cc +++ b/components/omnibox/browser/omnibox_field_trial.cc diff --git a/build/patches/JIT-site-settings.patch b/build/patches/JIT-site-settings.patch index 184a8d03..264e1838 100644 --- a/build/patches/JIT-site-settings.patch +++ b/build/patches/JIT-site-settings.patch @@ -55,10 +55,10 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b "java/res/drawable-mdpi/permission_background_sync.png", "java/res/drawable-mdpi/permission_javascript.png", + "java/res/drawable-mdpi/permission_javascript_jit.png", - "java/res/drawable-mdpi/permission_popups.png", - "java/res/drawable-mdpi/permission_protected_media.png", - "java/res/drawable-mdpi/settings_sensors.png", -@@ -178,6 +180,7 @@ android_resources("java_resources") { + "java/res/drawable-hdpi/settings_autoplay.png", + "java/res/drawable-xhdpi/settings_autoplay.png", + "java/res/drawable-xxhdpi/settings_autoplay.png", +@@ -183,6 +185,7 @@ android_resources("java_resources") { "java/res/drawable-xhdpi/ic_volume_up_grey600_24dp.png", "java/res/drawable-xhdpi/permission_background_sync.png", "java/res/drawable-xhdpi/permission_javascript.png", @@ -66,7 +66,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b "java/res/drawable-xhdpi/permission_popups.png", "java/res/drawable-xhdpi/permission_protected_media.png", "java/res/drawable-xhdpi/settings_sensors.png", -@@ -185,6 +188,7 @@ android_resources("java_resources") { +@@ -190,6 +193,7 @@ android_resources("java_resources") { "java/res/drawable-xxhdpi/ic_volume_up_grey600_24dp.png", "java/res/drawable-xxhdpi/permission_background_sync.png", "java/res/drawable-xxhdpi/permission_javascript.png", @@ -74,7 +74,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b "java/res/drawable-xxhdpi/permission_popups.png", "java/res/drawable-xxhdpi/permission_protected_media.png", "java/res/drawable-xxhdpi/settings_sensors.png", -@@ -192,6 +196,7 @@ android_resources("java_resources") { +@@ -197,6 +201,7 @@ android_resources("java_resources") { "java/res/drawable-xxxhdpi/ic_volume_up_grey600_24dp.png", "java/res/drawable-xxxhdpi/permission_background_sync.png", "java/res/drawable-xxxhdpi/permission_javascript.png", @@ -247,8 +247,8 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c case ContentSettingsType.POPUPS: return "popup_permission_list"; case ContentSettingsType.SOUND: -@@ -516,6 +518,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment - setUpCookiesPreference(preference); +@@ -514,6 +516,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment + setUpJavascriptPreference(preference); } else if (type == ContentSettingsType.GEOLOCATION) { setUpLocationPreference(preference); + } else if (type == ContentSettingsType.JAVASCRIPT_JIT) { @@ -256,9 +256,9 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } else if (type == ContentSettingsType.NOTIFICATIONS) { setUpNotificationsPreference(preference, mSite.isEmbargoed(type)); } else if (type == ContentSettingsType.REQUEST_DESKTOP_SITE) { -@@ -1072,6 +1076,23 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -1060,6 +1064,23 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment setupContentSettingsPreference(preference, currentValue, false /* isEmbargoed */); - } + } + private void setUpJavascriptJitPreference(Preference preference) { + BrowserContextHandle browserContextHandle = @@ -337,7 +337,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/Website.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java -@@ -235,6 +235,13 @@ public final class Website implements WebsiteEntry { +@@ -230,6 +230,13 @@ public final class Website implements WebsiteEntry { } else { RecordUserAction.record("JavascriptContentSetting.DisableBy.SiteSettings"); } diff --git a/build/patches/Make-all-favicon-requests-on-demand.patch b/build/patches/Make-all-favicon-requests-on-demand.patch deleted file mode 100644 index 1aa09278..00000000 --- a/build/patches/Make-all-favicon-requests-on-demand.patch +++ /dev/null @@ -1,55 +0,0 @@ -From: Francois Marier -Date: Tue, 14 Jul 2020 17:39:44 -0700 -Subject: Make all favicon requests on-demand - -This patch can be dropped once https://crbug.com/1096660 is fixed -as long as the test is retained and still passes. - -License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ---- - components/favicon/core/favicon_database.cc | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) - -diff --git a/components/favicon/core/favicon_database.cc b/components/favicon/core/favicon_database.cc ---- a/components/favicon/core/favicon_database.cc -+++ b/components/favicon/core/favicon_database.cc -@@ -505,6 +505,7 @@ FaviconBitmapID FaviconDatabase::AddFaviconBitmap( - base::Time time, - const gfx::Size& pixel_size) { - DCHECK(icon_id); -+ type = FaviconBitmapType::ON_DEMAND; // Make all icons ON_DEMAND. - - sql::Statement statement(db_.GetCachedStatement( - SQL_FROM_HERE, -@@ -553,8 +554,8 @@ bool FaviconDatabase::SetFaviconBitmap( - } else { - statement.BindNull(0); - } -- statement.BindTime(1, time); -- statement.BindInt64(2, 0); -+ statement.BindInt64(1, 0); -+ statement.BindInt64(2, time.ToDeltaSinceWindowsEpoch().InMicroseconds()); - statement.BindInt64(3, bitmap_id); - - return statement.Run(); -@@ -563,7 +564,7 @@ bool FaviconDatabase::SetFaviconBitmap( - bool FaviconDatabase::SetFaviconBitmapLastUpdateTime(FaviconBitmapID bitmap_id, - base::Time time) { - DCHECK(bitmap_id); -- // By updating last_updated timestamp, we assume the icon is of type ON_VISIT. -+ /* By updating last_updated timestamp, we assume the icon is of type ON_VISIT. - // If it is ON_DEMAND, reset last_requested to 0 and thus silently change the - // type to ON_VISIT. - sql::Statement statement( -@@ -573,7 +574,8 @@ bool FaviconDatabase::SetFaviconBitmapLastUpdateTime(FaviconBitmapID bitmap_id, - statement.BindTime(0, time); - statement.BindInt64(1, 0); - statement.BindInt64(2, bitmap_id); -- return statement.Run(); -+ return statement.Run(); */ -+ return true; - } - - bool FaviconDatabase::SetFaviconsOutOfDateBetween(base::Time begin, --- -2.25.1 diff --git a/build/patches/Modify-default-preferences.patch b/build/patches/Modify-default-preferences.patch index 3af6d815..2afa343b 100644 --- a/build/patches/Modify-default-preferences.patch +++ b/build/patches/Modify-default-preferences.patch @@ -22,8 +22,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/payments/core/payment_prefs.cc | 2 +- .../core/common/safe_browsing_prefs.cc | 4 ++-- .../primary_account_manager.cc | 4 ++-- - content/public/common/content_features.cc | 2 +- - 19 files changed, 72 insertions(+), 19 deletions(-) + content/public/common/content_features.cc | 4 ++-- + 19 files changed, 73 insertions(+), 20 deletions(-) create mode 100644 components/bookmarks/browser/features.cc create mode 100644 components/bookmarks/browser/features.h @@ -38,7 +38,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc #include "components/browser_sync/browser_sync_switches.h" #include "components/browser_ui/site_settings/android/features.h" #include "components/browsing_data/core/features.h" -@@ -5986,6 +5987,11 @@ const FeatureEntry kFeatureEntries[] = { +@@ -5937,6 +5938,11 @@ const FeatureEntry kFeatureEntries[] = { reading_list::switches::kReadLaterReminderNotification)}, #endif @@ -65,7 +65,7 @@ diff --git a/chrome/browser/background/background_mode_manager.cc b/chrome/brows diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc -@@ -1445,7 +1445,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs( +@@ -1435,7 +1435,7 @@ void ChromeContentBrowserClient::RegisterLocalStatePrefs( void ChromeContentBrowserClient::RegisterProfilePrefs( user_prefs::PrefRegistrySyncable* registry) { registry->RegisterBooleanPref(prefs::kDisable3DAPIs, false); @@ -249,7 +249,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 -@@ -308,7 +308,7 @@ void ContentSettingsRegistry::Init() { +@@ -311,7 +311,7 @@ void ContentSettingsRegistry::Init() { ContentSettingsInfo::EXCEPTIONS_ON_SECURE_ORIGINS_ONLY); Register(ContentSettingsType::BACKGROUND_SYNC, "background-sync", @@ -258,7 +258,7 @@ diff --git a/components/content_settings/core/browser/content_settings_registry. AllowlistedSchemes(), ValidSettings(CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK), WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, -@@ -408,7 +408,7 @@ void ContentSettingsRegistry::Init() { +@@ -411,7 +411,7 @@ void ContentSettingsRegistry::Init() { // TODO(crbug.com/904439): Update this to "SECURE_ONLY" once // DeviceOrientationEvents and DeviceMotionEvents are only fired in secure // contexts. @@ -324,12 +324,14 @@ diff --git a/components/signin/internal/identity_manager/primary_account_manager 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 -@@ -541,7 +541,7 @@ const char kIsolateOriginsFieldTrialParamName[] = "OriginsList"; +@@ -540,8 +540,8 @@ const char kIsolateOriginsFieldTrialParamName[] = "OriginsList"; + // the attribute. Note: At present, only iframes with origin-restricted // sandboxes are isolated. BASE_FEATURE(kIsolateSandboxedIframes, - "IsolateSandboxedIframes", +- "IsolateSandboxedIframes", - base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_ENABLED_BY_DEFAULT); ++ "IsolateSandboxedIframes", // enabled by default ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite const base::FeatureParam::Option isolated_sandboxed_iframes_grouping_types[] = { {IsolateSandboxedIframesGrouping::kPerSite, "per-site"}, diff --git a/build/patches/Move-navigation-bar-to-bottom.patch b/build/patches/Move-navigation-bar-to-bottom.patch index 32f2e6ac..d301f25c 100644 --- a/build/patches/Move-navigation-bar-to-bottom.patch +++ b/build/patches/Move-navigation-bar-to-bottom.patch @@ -818,7 +818,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo 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 -@@ -376,7 +376,7 @@ public class StripLayoutHelper implements StripLayoutTab.StripLayoutTabDelegate +@@ -375,7 +375,7 @@ public class StripLayoutHelper implements StripLayoutTab.StripLayoutTabDelegate // position 0 is on the left. Account for that in the offset calculation. boolean isRtl = LocalizationUtils.isLayoutRtl(); boolean useUnadjustedScrollOffset = isRtl != isLeft; @@ -1440,7 +1440,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar } /** -@@ -2091,6 +2109,15 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve +@@ -2107,6 +2125,15 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve private void setControlContainerTopMargin(int margin) { final ViewGroup.MarginLayoutParams layoutParams = ((ViewGroup.MarginLayoutParams) mControlContainer.getLayoutParams()); @@ -1525,7 +1525,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/system/Statu 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 -@@ -7427,6 +7427,11 @@ const FeatureEntry kFeatureEntries[] = { +@@ -7422,6 +7422,11 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kWindowsScrollingPersonalityDescription, kOsAll, FEATURE_VALUE_TYPE(features::kWindowsScrollingPersonality)}, @@ -1637,7 +1637,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -984,6 +984,9 @@ extern const char kImprovedKeyboardShortcutsDescription[]; +@@ -987,6 +987,9 @@ extern const char kImprovedKeyboardShortcutsDescription[]; extern const char kCompositorThreadedScrollbarScrollingName[]; extern const char kCompositorThreadedScrollbarScrollingDescription[]; @@ -1690,7 +1690,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse #include "base/metrics/field_trial_params.h" #include "base/no_destructor.h" #include "base/strings/string_piece_forward.h" -@@ -258,6 +259,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -250,6 +251,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kKitKatSupported, &kLensCameraAssistedSearch, &kLensOnQuickActionSearchWidget, @@ -1744,7 +1744,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f 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 -@@ -429,6 +429,8 @@ public abstract class ChromeFeatureList { +@@ -430,6 +430,8 @@ public abstract class ChromeFeatureList { public static final String MESSAGES_FOR_ANDROID_SYNC_ERROR = "MessagesForAndroidSyncError"; public static final String SEARCH_READY_OMNIBOX = "SearchReadyOmnibox"; public static final String MODAL_PERMISSION_DIALOG_VIEW = "ModalPermissionDialogView"; @@ -1753,7 +1753,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String METRICS_SETTINGS_ANDROID = "MetricsSettingsAndroid"; public static final String NEW_INSTANCE_FROM_DRAGGED_LINK = "NewInstanceFromDraggedLink"; public static final String NEW_TAB_PAGE_TILES_TITLE_WRAP_AROUND = -@@ -713,6 +715,8 @@ public abstract class ChromeFeatureList { +@@ -714,6 +716,8 @@ public abstract class ChromeFeatureList { public static final CachedFlag sInterestFeedV2 = new CachedFlag(INTEREST_FEED_V2, true); public static final CachedFlag sLensCameraAssistedSearch = new CachedFlag(LENS_CAMERA_ASSISTED_SEARCH, false); @@ -2087,7 +2087,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 -@@ -1483,6 +1483,12 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1480,6 +1480,12 @@ Your Google account may have other forms of browsing history like searches and a Force Tablet Mode diff --git a/build/patches/Move-some-account-settings-back-to-privacy-settings.patch b/build/patches/Move-some-account-settings-back-to-privacy-settings.patch index 4a0a9614..84e6ee95 100644 --- a/build/patches/Move-some-account-settings-back-to-privacy-settings.patch +++ b/build/patches/Move-some-account-settings-back-to-privacy-settings.patch @@ -14,7 +14,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml --- a/chrome/android/java/res/xml/privacy_preferences.xml +++ b/chrome/android/java/res/xml/privacy_preferences.xml -@@ -62,6 +62,19 @@ found in the LICENSE file. +@@ -48,6 +48,19 @@ found in the LICENSE file. android:key="privacy_sandbox" android:title="@string/prefs_privacy_sandbox" android:fragment="org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxSettingsFragment"/> @@ -37,7 +37,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/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 -@@ -42,6 +42,12 @@ import org.chromium.components.user_prefs.UserPrefs; +@@ -39,6 +39,12 @@ import org.chromium.components.user_prefs.UserPrefs; import org.chromium.ui.text.NoUnderlineClickableSpan; import org.chromium.ui.text.SpanApplier; @@ -50,9 +50,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting /** * Fragment to keep track of the all the privacy related preferences. */ -@@ -60,6 +66,16 @@ public class PrivacySettings - - private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit"; +@@ -54,6 +60,16 @@ public class PrivacySettings + private static final String PREF_PRIVACY_GUIDE = "privacy_guide"; + private static final String PREF_INCOGNITO_LOCK = "incognito_lock"; + // moved from SyncAndServicesSettings.java + private static final String PREF_SERVICES_CATEGORY = "services_category"; @@ -67,7 +67,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting private ManagedPreferenceDelegate mManagedPreferenceDelegate; private IncognitoLockSettings mIncognitoLockSettings; -@@ -99,6 +115,16 @@ public class PrivacySettings +@@ -93,6 +109,16 @@ public class PrivacySettings mManagedPreferenceDelegate = createManagedPreferenceDelegate(); @@ -84,7 +84,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting ChromeSwitchPreference canMakePaymentPref = (ChromeSwitchPreference) findPreference(PREF_CAN_MAKE_PAYMENT); canMakePaymentPref.setOnPreferenceChangeListener(this); -@@ -131,6 +157,9 @@ public class PrivacySettings +@@ -121,6 +147,9 @@ public class PrivacySettings } else if (PREF_HTTPS_FIRST_MODE.equals(key)) { UserPrefs.get(Profile.getLastUsedRegularProfile()) .setBoolean(Pref.HTTPS_ONLY_MODE_ENABLED, (boolean) newValue); @@ -94,7 +94,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } return true; } -@@ -145,7 +174,7 @@ public class PrivacySettings +@@ -135,7 +164,7 @@ public class PrivacySettings * Updates the preferences. */ public void updatePreferences() { @@ -106,7 +106,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -447,6 +447,10 @@ CHAR_LIMIT guidelines: +@@ -423,6 +423,10 @@ CHAR_LIMIT guidelines: No statistics or crash reports are sent to Google diff --git a/build/patches/Multiple-fingerprinting-mitigations.patch b/build/patches/Multiple-fingerprinting-mitigations.patch index b8307b2d..67bc3992 100644 --- a/build/patches/Multiple-fingerprinting-mitigations.patch +++ b/build/patches/Multiple-fingerprinting-mitigations.patch @@ -61,7 +61,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -2396,6 +2396,7 @@ static_library("browser") { +@@ -2395,6 +2395,7 @@ static_library("browser") { "//services/device/public/cpp:device_features", "//services/device/public/cpp/serial:switches", "//services/device/public/cpp/usb", @@ -81,7 +81,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) #include "base/allocator/buildflags.h" #endif -@@ -3671,6 +3673,20 @@ const FeatureEntry kFeatureEntries[] = { +@@ -3646,6 +3648,20 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kWebrtcUseMinMaxVEADimensionsName, flag_descriptions::kWebrtcUseMinMaxVEADimensionsDescription, kOsAll, FEATURE_VALUE_TYPE(blink::features::kWebRtcUseMinMaxVEADimensions)}, diff --git a/build/patches/OpenSearch-miscellaneous.patch b/build/patches/OpenSearch-miscellaneous.patch index 5f7ef5a4..d8171e25 100644 --- a/build/patches/OpenSearch-miscellaneous.patch +++ b/build/patches/OpenSearch-miscellaneous.patch @@ -12,11 +12,11 @@ Add verbose logging License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../settings/SearchEngineAdapter.java | 4 +- - .../search_engine_tab_helper.cc | 47 ++++++++++++++----- + .../search_engine_tab_helper.cc | 51 ++++++++++++++----- .../renderer/chrome_render_frame_observer.cc | 2 + .../search_engines/template_url_fetcher.cc | 23 +++++++-- - .../search_engines/template_url_service.h | 8 ++-- - 5 files changed, 62 insertions(+), 22 deletions(-) + .../search_engines/template_url_service.h | 8 +-- + 5 files changed, 65 insertions(+), 23 deletions(-) diff --git a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java b/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java --- a/chrome/browser/search_engines/android/java/src/org/chromium/chrome/browser/search_engines/settings/SearchEngineAdapter.java @@ -43,7 +43,19 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro #include "base/metrics/histogram_macros.h" #include "chrome/browser/favicon/favicon_utils.h" #include "chrome/browser/profiles/profile.h" -@@ -73,16 +74,20 @@ std::u16string SearchEngineTabHelper::GenerateKeywordFromNavigationEntry( +@@ -46,8 +47,10 @@ void SearchEngineTabHelper::BindOpenSearchDescriptionDocumentHandler( + mojo::PendingReceiver + receiver) { + // Bind only for outermost main frames. +- if (rfh->GetParentOrOuterDocument()) ++ if (rfh->GetParentOrOuterDocument()) { ++ LOG(INFO) << "OpenSearch: not on main frame"; + return; ++ } + + auto* web_contents = content::WebContents::FromRenderFrameHost(rfh); + if (!web_contents) +@@ -73,16 +76,20 @@ std::u16string SearchEngineTabHelper::GenerateKeywordFromNavigationEntry( NavigationEntry* entry) { // Don't autogenerate keywords for pages that are the result of form // submissions. @@ -66,7 +78,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro } // Don't autogenerate keywords for referrers that -@@ -90,10 +95,10 @@ std::u16string SearchEngineTabHelper::GenerateKeywordFromNavigationEntry( +@@ -90,10 +97,10 @@ std::u16string SearchEngineTabHelper::GenerateKeywordFromNavigationEntry( // b) have a path. // // If we relax the path constraint, we need to be sure to sanitize the path @@ -80,7 +92,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro return std::u16string(); } -@@ -121,15 +126,18 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument( +@@ -121,15 +128,18 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument( // When |page_url| has file: scheme, this method doesn't work because of // http://b/issue?id=863583. For that reason, this doesn't check and allow // urls referring to osdd urls with same schemes. @@ -102,7 +114,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro // If the current page is a form submit, find the last page that was not a // form submit and use its url to generate the keyword from. -@@ -139,8 +147,10 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument( +@@ -139,8 +149,10 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument( (index > 0) && IsFormSubmit(entry); entry = controller.GetEntryAtIndex(index)) --index; @@ -114,7 +126,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro // Autogenerate a keyword for the autodetected case; in the other cases we'll // generate a keyword later after fetching the OSDD. -@@ -148,6 +158,12 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument( +@@ -148,6 +160,12 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument( if (keyword.empty()) return; @@ -127,7 +139,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro auto* frame = web_contents()->GetPrimaryMainFrame(); mojo::Remote url_loader_factory; frame->CreateNetworkServiceDefaultFactory( -@@ -155,6 +171,7 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument( +@@ -155,6 +173,7 @@ void SearchEngineTabHelper::PageHasOpenSearchDescriptionDocument( // Download the OpenSearch description document. If this is successful, a // new keyword will be created when done. @@ -135,7 +147,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro TemplateURLFetcherFactory::GetForProfile(profile)->ScheduleDownload( keyword, osdd_url, entry->GetFavicon().url, frame->GetLastCommittedOrigin(), url_loader_factory.get(), -@@ -196,11 +213,18 @@ void SearchEngineTabHelper::GenerateKeywordIfNecessary( +@@ -196,11 +215,18 @@ void SearchEngineTabHelper::GenerateKeywordIfNecessary( if (last_index <= 0) return; @@ -156,7 +168,7 @@ diff --git a/chrome/browser/ui/search_engines/search_engine_tab_helper.cc b/chro TemplateURLService* url_service = TemplateURLServiceFactory::GetForProfile(profile); if (!url_service) -@@ -211,7 +235,6 @@ void SearchEngineTabHelper::GenerateKeywordIfNecessary( +@@ -211,7 +237,6 @@ void SearchEngineTabHelper::GenerateKeywordIfNecessary( return; } diff --git a/build/patches/Override-Navigator-Language.patch b/build/patches/Override-Navigator-Language.patch index 9c82688d..bcff6d4e 100644 --- a/build/patches/Override-Navigator-Language.patch +++ b/build/patches/Override-Navigator-Language.patch @@ -4,6 +4,9 @@ Subject: Override Navigator Language Uses the first of the accept-languages as the system language for blink and fix the selection in the UI for the browser language + +Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html +License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../browser/language/AppLocaleUtils.java | 20 +++++++++++++++++++ .../AppLanguagePreferenceDelegate.java | 8 ++++++++ diff --git a/build/patches/Partition-Blink-memory-cache.patch b/build/patches/Partition-Blink-memory-cache.patch index 316ea51f..326d6c69 100644 --- a/build/patches/Partition-Blink-memory-cache.patch +++ b/build/patches/Partition-Blink-memory-cache.patch @@ -16,13 +16,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../core/html/parser/html_srcset_parser.cc | 2 +- .../core/inspector/inspector_network_agent.cc | 2 +- - .../core/inspector/inspector_page_agent.cc | 5 +++-- + .../core/inspector/inspector_page_agent.cc | 4 ++-- .../renderer/core/loader/image_loader.cc | 3 ++- .../platform/loader/fetch/memory_cache.cc | 7 ++----- .../platform/loader/fetch/memory_cache.h | 4 ++-- .../platform/loader/fetch/resource_fetcher.cc | 21 ++++++++++++------- .../platform/loader/fetch/resource_fetcher.h | 3 ++- - 8 files changed, 27 insertions(+), 20 deletions(-) + 8 files changed, 26 insertions(+), 20 deletions(-) diff --git a/third_party/blink/renderer/core/html/parser/html_srcset_parser.cc b/third_party/blink/renderer/core/html/parser/html_srcset_parser.cc --- a/third_party/blink/renderer/core/html/parser/html_srcset_parser.cc @@ -51,7 +51,7 @@ diff --git a/third_party/blink/renderer/core/inspector/inspector_network_agent.c diff --git a/third_party/blink/renderer/core/inspector/inspector_page_agent.cc b/third_party/blink/renderer/core/inspector/inspector_page_agent.cc --- a/third_party/blink/renderer/core/inspector/inspector_page_agent.cc +++ b/third_party/blink/renderer/core/inspector/inspector_page_agent.cc -@@ -167,9 +167,10 @@ Resource* CachedResource(LocalFrame* frame, +@@ -167,9 +167,9 @@ Resource* CachedResource(LocalFrame* frame, if (!document) return nullptr; Resource* cached_resource = document->Fetcher()->CachedResource(url); @@ -59,8 +59,7 @@ diff --git a/third_party/blink/renderer/core/inspector/inspector_page_agent.cc b + if (!cached_resource && document->TopFrameOrigin()) { cached_resource = MemoryCache::Get()->ResourceForURL( - url, document->Fetcher()->GetCacheIdentifier(url)); -+ url, document->Fetcher()->GetCacheIdentifier(url, -+ document->TopFrameOrigin())); ++ url, document->Fetcher()->GetCacheIdentifier(url, document->TopFrameOrigin())); } if (!cached_resource) cached_resource = loader->ResourceForURL(url); diff --git a/build/patches/Partition-blobs-by-top-frame-url.patch b/build/patches/Partition-blobs-by-top-frame-url.patch index d77385b5..1e3d2aeb 100644 --- a/build/patches/Partition-blobs-by-top-frame-url.patch +++ b/build/patches/Partition-blobs-by-top-frame-url.patch @@ -1,9 +1,12 @@ From: uazo Date: Tue, 20 Sep 2022 07:20:01 +0000 -Subject: Partition blobs by top frame url +Subject: Partition blobs by top frame URL -Verifies that the blob was created with the same top frame url +Verifies that the blob was created with the same top frame URL or, if not defined, by the same agent cluster. + +Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html +License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- storage/browser/blob/blob_url_store_impl.cc | 37 ++++++++++++++++++- storage/browser/blob/blob_url_store_impl.h | 14 ++++++- diff --git a/build/patches/Re-introduce-kWebAuthCable.patch b/build/patches/Re-introduce-kWebAuthCable.patch index 89c5c65e..da1de196 100644 --- a/build/patches/Re-introduce-kWebAuthCable.patch +++ b/build/patches/Re-introduce-kWebAuthCable.patch @@ -12,9 +12,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../webauthn/authenticator_dialog_browsertest.cc | 7 +++++++ .../webauthn/chrome_webauthn_browsertest.cc | 2 ++ .../webauth/authenticator_impl_unittest.cc | 15 +++++++++++++-- - content/public/common/content_features.cc | 6 ++++++ + content/public/common/content_features.cc | 7 +++++++ content/public/common/content_features.h | 1 + - 6 files changed, 36 insertions(+), 2 deletions(-) + 6 files changed, 37 insertions(+), 2 deletions(-) diff --git a/chrome/browser/ui/views/webauthn/authenticator_dialog_view_browsertest.cc b/chrome/browser/ui/views/webauthn/authenticator_dialog_view_browsertest.cc --- a/chrome/browser/ui/views/webauthn/authenticator_dialog_view_browsertest.cc @@ -118,15 +118,16 @@ diff --git a/content/browser/webauth/authenticator_impl_unittest.cc b/content/br 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 -@@ -1283,6 +1283,12 @@ BASE_FEATURE(kWebAssemblyTrapHandler, +@@ -1284,6 +1284,13 @@ BASE_FEATURE(kWebAssemblyTrapHandler, #endif ); +// Controls whether CTAP2 devices can communicate via the WebAuthentication API +// using pairingless BLE protocol. +// https://w3c.github.io/webauthn -+const base::Feature kWebAuthCable{"WebAuthenticationCable", // must be disabled -+ base::FEATURE_DISABLED_BY_DEFAULT}; // by default in Bromite ++BASE_FEATURE(kWebAuthCable, ++ "WebAuthenticationCable", // must be disabled ++ base::FEATURE_DISABLED_BY_DEFAULT); // by default in Bromite + // Controls whether WebAuthn conditional UI requests are supported. BASE_FEATURE(kWebAuthConditionalUI, @@ -134,13 +135,13 @@ 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 -@@ -87,6 +87,7 @@ CONTENT_EXPORT BASE_DECLARE_FEATURE(kFedCmManifestValidation); - CONTENT_EXPORT BASE_DECLARE_FEATURE(kFedCmMetricsEndpoint); - CONTENT_EXPORT BASE_DECLARE_FEATURE(kFedCmMultipleIdentityProviders); - CONTENT_EXPORT BASE_DECLARE_FEATURE(kFirstPartySets); -+CONTENT_EXPORT extern const base::Feature kWebAuthCable; - CONTENT_EXPORT extern const base::FeatureParam - kFirstPartySetsClearSiteDataOnChangedSets; - CONTENT_EXPORT extern const base::FeatureParam kFirstPartySetsIsDogfooder; +@@ -297,6 +297,7 @@ CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebPayments); + CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebRtcUseGpuMemoryBufferVideoFrames); + CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebUICodeCache); + CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebUIReportOnlyTrustedTypes); ++CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebAuthCable); + CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebUsb); + CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebXr); + CONTENT_EXPORT BASE_DECLARE_FEATURE(kWebXrArModule); -- 2.25.1 diff --git a/build/patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch b/build/patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch index 98d07093..b570b179 100644 --- a/build/patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch +++ b/build/patches/Re-introduce-modal-dialog-flag-to-close-all-tabs.patch @@ -14,10 +14,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/about_flags.cc | 7 ++++++ chrome/browser/flag_descriptions.cc | 5 ++++ chrome/browser/flag_descriptions.h | 3 +++ - .../flags/android/chrome_feature_list.cc | 5 ++++ + .../flags/android/chrome_feature_list.cc | 9 ++++++-- .../flags/android/chrome_feature_list.h | 1 + .../browser/flags/ChromeFeatureList.java | 1 + - 9 files changed, 54 insertions(+) + 9 files changed, 56 insertions(+), 2 deletions(-) diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/CloseAllTabsDialog.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/CloseAllTabsDialog.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/CloseAllTabsDialog.java @@ -132,7 +132,7 @@ diff --git a/chrome/android/features/tab_ui/junit/src/org/chromium/chrome/browse 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 -@@ -9241,6 +9241,13 @@ const FeatureEntry kFeatureEntries[] = { +@@ -9161,6 +9161,13 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(features::kWaylandScreenCoordinatesEnabled)}, #endif @@ -149,7 +149,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc 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 -@@ -3666,6 +3666,11 @@ const char kEnableCbdSignOutDescription[] = +@@ -3631,6 +3631,11 @@ const char kEnableCbdSignOutDescription[] = "Enable additional affordance to sign out when clearing browsing data and " "ensure consistent behavior for all signed-in users."; @@ -164,7 +164,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -388,6 +388,9 @@ extern const char kContextMenuSearchWithGoogleLensDescription[]; +@@ -385,6 +385,9 @@ extern const char kContextMenuSearchWithGoogleLensDescription[]; extern const char kClientStorageAccessContextAuditingName[]; extern const char kClientStorageAccessContextAuditingDescription[]; @@ -177,15 +177,15 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio 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 -@@ -183,6 +183,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -176,6 +176,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { + &kAssistantNonPersonalizedVoiceSearch, + &kAppLaunchpad, + &kAppMenuMobileSiteOption, ++ &kCloseAllTabsModalDialog, + &kAppToWebAttribution, &kBackgroundThreadPool, &kCastDeviceFilter, - &kClearOmniboxFocusAfterNavigation, -+ &kCloseAllTabsModalDialog, - &kCloseTabSuggestions, - &kBookmarksExportUseSaf, - &kCriticalPersistedTabData, -@@ -543,6 +544,10 @@ BASE_FEATURE(kConditionalTabStripAndroid, +@@ -525,6 +526,10 @@ BASE_FEATURE(kConditionalTabStripAndroid, "ConditionalTabStripAndroid", base::FEATURE_DISABLED_BY_DEFAULT); @@ -196,10 +196,21 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse // Used in downstream code. BASE_FEATURE(kCastDeviceFilter, "CastDeviceFilter", +@@ -535,8 +540,8 @@ BASE_FEATURE(kClearOmniboxFocusAfterNavigation, + base::FEATURE_DISABLED_BY_DEFAULT); + + BASE_FEATURE(kCloseTabSuggestions, +- "CloseTabSuggestions", +- base::FEATURE_DISABLED_BY_DEFAULT); ++ "CloseTabSuggestions", // must be enabled ++ base::FEATURE_ENABLED_BY_DEFAULT); // in Bromite + + BASE_FEATURE(kCriticalPersistedTabData, + "CriticalPersistedTabData", 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 -@@ -32,6 +32,7 @@ BASE_DECLARE_FEATURE(kAppMenuMobileSiteOption); +@@ -31,6 +31,7 @@ BASE_DECLARE_FEATURE(kAppMenuMobileSiteOption); BASE_DECLARE_FEATURE(kAppToWebAttribution); BASE_DECLARE_FEATURE(kBackgroundThreadPool); BASE_DECLARE_FEATURE(kClearOmniboxFocusAfterNavigation); @@ -211,12 +222,12 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f --- 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 @@ -263,6 +263,7 @@ public abstract class ChromeFeatureList { - "CCTResizableAllowResizeByUserGesture"; public static final String CCT_RESIZABLE_ALWAYS_SHOW_NAVBAR_BUTTONS = "CCTResizableAlwaysShowNavBarButtons"; -+ public static final String CLOSE_ALL_TABS_MODAL_DIALOG = "CloseAllTabsModalDialog"; public static final String CCT_RESIZABLE_FOR_FIRST_PARTIES = "CCTResizableForFirstParties"; ++ public static final String CLOSE_ALL_TABS_MODAL_DIALOG = "CloseAllTabsModalDialog"; public static final String CCT_RESIZABLE_FOR_THIRD_PARTIES = "CCTResizableForThirdParties"; public static final String CCT_RESIZABLE_WINDOW_ABOVE_NAVBAR = "CCTResizableWindowAboveNavbar"; + public static final String CCT_RESOURCE_PREFETCH = "CCTResourcePrefetch"; -- 2.25.1 diff --git a/build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch b/build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch index 89f31d2d..54fc7782 100644 --- a/build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch +++ b/build/patches/Reduce-HTTP-headers-in-DoH-requests-to-bare-minimum.patch @@ -4,15 +4,15 @@ Subject: Reduce HTTP headers in DoH requests to bare minimum License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - net/base/load_flags_list.h | 5 +++++ + net/base/load_flags_list.h | 6 ++++++ net/dns/dns_transaction.cc | 2 +- net/url_request/url_request_http_job.cc | 8 ++++++-- - 3 files changed, 12 insertions(+), 3 deletions(-) + 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h --- a/net/base/load_flags_list.h +++ b/net/base/load_flags_list.h -@@ -101,3 +101,8 @@ LOAD_FLAG(RESTRICTED_PREFETCH, 1 << 15) +@@ -101,3 +101,9 @@ LOAD_FLAG(RESTRICTED_PREFETCH, 1 << 15) // is considered privileged, and therefore this flag must only be set from a // trusted process. LOAD_FLAG(CAN_USE_RESTRICTED_PREFETCH, 1 << 16) @@ -21,6 +21,7 @@ diff --git a/net/base/load_flags_list.h b/net/base/load_flags_list.h +// Used to comply with IETF (draft) DNS-over-HTTPS: +// "Implementors SHOULD NOT set non-essential HTTP headers in DoH client requests." +LOAD_FLAG(MINIMAL_HEADERS, 1 << 19) ++ diff --git a/net/dns/dns_transaction.cc b/net/dns/dns_transaction.cc --- a/net/dns/dns_transaction.cc +++ b/net/dns/dns_transaction.cc diff --git a/build/patches/Remove-binary-blob-integrations.patch b/build/patches/Remove-binary-blob-integrations.patch index ff7ed804..1c705c33 100644 --- a/build/patches/Remove-binary-blob-integrations.patch +++ b/build/patches/Remove-binary-blob-integrations.patch @@ -25,12 +25,13 @@ Parts of this patch were developed by csagan5, uazo and others. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- ...em_webview_bundle.AndroidManifest.expected | 5 - - chrome/android/BUILD.gn | 47 +- + chrome/android/BUILD.gn | 45 +- chrome/android/chrome_java_sources.gni | 5 - .../features/cablev2_authenticator/BUILD.gn | 2 - chrome/android/java/AndroidManifest.xml | 68 --- .../java/res/xml/privacy_preferences.xml | 5 - .../org/chromium/chrome/browser/AppHooks.java | 14 +- + .../browser/ChromeBackgroundService.java | 12 +- .../browser/PlayServicesVersionInfo.java | 12 +- .../ChromeBackgroundTaskFactory.java | 3 - .../ExternalNavigationDelegateImpl.java | 8 +- @@ -47,8 +48,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../language/settings/LanguageSettings.java | 6 - .../prefetch/prefetch_service_factory.cc | 16 - .../browser/password_manager/android/BUILD.gn | 4 - - .../PasswordManagerAndroidBackendUtil.java | 40 +- + .../PasswordManagerAndroidBackendUtil.java | 43 +- .../PasswordSettingsUpdaterBridge.java | 11 - + ...PasswordStoreAndroidBackendBridgeImpl.java | 3 +- ...swordSyncControllerDelegateBridgeImpl.java | 7 - .../push_messaging_service_factory.cc | 8 +- chrome/browser/resources/settings/route.ts | 2 - @@ -93,14 +95,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/module_installer/android/BUILD.gn | 2 - components/signin/public/android/BUILD.gn | 3 - .../signin/AccountRenameChecker.java | 16 - - components/webauthn/android/BUILD.gn | 10 - - .../webauthn/AuthenticatorImpl.java | 59 +- + components/webauthn/android/BUILD.gn | 9 - + .../webauthn/AuthenticatorImpl.java | 85 +-- .../webauthn/Fido2ApiCallHelper.java | 23 +- .../push_messaging/push_messaging_manager.cc | 2 +- content/public/android/BUILD.gn | 4 - content/test/BUILD.gn | 4 - device/BUILD.gn | 3 - - device/fido/features.cc | 4 +- + device/fido/features.cc | 10 +- remoting/android/client_java_tmpl.gni | 3 - services/BUILD.gn | 9 - services/device/geolocation/BUILD.gn | 4 - @@ -108,7 +110,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html third_party/android_deps/BUILD.gn | 539 +----------------- .../preconditions/javatests/BUILD.gn | 1 - .../gms/ChromiumPlayServicesAvailability.java | 10 +- - 84 files changed, 88 insertions(+), 2024 deletions(-) + 86 files changed, 99 insertions(+), 2060 deletions(-) diff --git a/android_webview/expectations/system_webview_bundle.AndroidManifest.expected b/android_webview/expectations/system_webview_bundle.AndroidManifest.expected --- a/android_webview/expectations/system_webview_bundle.AndroidManifest.expected @@ -150,12 +152,10 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:jni_java", "//cc:cc_java", "//chrome/android/features/keyboard_accessory:public_java", -@@ -661,8 +653,18 @@ if (current_toolchain == default_toolchain) { +@@ -658,8 +650,19 @@ if (current_toolchain == default_toolchain) { + "//services/shape_detection:shape_detection_java", "//services/shape_detection/public/mojom:mojom_java", "//skia/public/mojom:mojom_java", - "//third_party/android_deps:chromium_play_services_availability_java", -- "//third_party/android_deps:com_google_android_play_core_java", -- "//third_party/android_deps:com_google_code_findbugs_jsr305_java", + # added for Bromite in place of binary blobs + "//third_party/androidx:androidx_annotation_annotation_java", + "//third_party/androidx:androidx_lifecycle_lifecycle_common_java", @@ -168,10 +168,12 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn + "//base:base_java", + "//base:jni_java", + + "//third_party/android_deps:chromium_play_services_availability_java", +- "//third_party/android_deps:com_google_android_play_core_java", + "//third_party/android_deps:com_google_code_findbugs_jsr305_java", "//third_party/android_deps:com_google_guava_listenablefuture_java", "//third_party/android_deps:dagger_java", - "//third_party/android_deps:guava_android_java", -@@ -958,11 +960,6 @@ if (current_toolchain == default_toolchain) { +@@ -956,11 +959,6 @@ if (current_toolchain == default_toolchain) { ":chrome_jni_headers", ":chrome_public_android_manifest", ":delegate_public_impl_java", @@ -183,7 +185,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:base_java_test_support", "//base:base_junit_test_support", "//base/test:test_support_java", -@@ -1495,13 +1492,6 @@ if (current_toolchain == default_toolchain) { +@@ -1492,13 +1490,6 @@ if (current_toolchain == default_toolchain) { ":chrome_test_util_java", ":chrome_test_util_jni", ":delegate_public_impl_java", @@ -197,7 +199,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:base_java_test_support", "//base/test:test_support_java", "//cc:cc_java", -@@ -2426,7 +2416,6 @@ if (current_toolchain == default_toolchain) { +@@ -2423,7 +2414,6 @@ if (current_toolchain == default_toolchain) { ] deps = [ ":chrome_java", @@ -205,17 +207,15 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:base_java", "//base:base_java_test_support", "//base:jni_java", -@@ -2579,9 +2568,7 @@ if (current_toolchain == default_toolchain) { +@@ -2576,7 +2566,6 @@ if (current_toolchain == default_toolchain) { # is in a DFM. android_library("base_module_java") { sources = [ - "java/src/com/google/ipc/invalidation/ticl/android2/channel/GcmRegistrationTaskService.java", "java/src/org/chromium/chrome/app/TrichromeZygotePreload.java", -- "java/src/org/chromium/chrome/browser/ChromeBackgroundService.java", + "java/src/org/chromium/chrome/browser/ChromeBackgroundService.java", "java/src/org/chromium/chrome/browser/ChromeBackupAgent.java", - "java/src/org/chromium/chrome/browser/DeferredStartupHandler.java", - "java/src/org/chromium/chrome/browser/app/bluetooth/BluetoothNotificationService.java", -@@ -2595,8 +2582,6 @@ if (current_toolchain == default_toolchain) { +@@ -2592,8 +2581,6 @@ if (current_toolchain == default_toolchain) { "java/src/org/chromium/chrome/browser/base/SplitCompatBackupAgent.java", "java/src/org/chromium/chrome/browser/base/SplitCompatContentProvider.java", "java/src/org/chromium/chrome/browser/base/SplitCompatCustomTabsService.java", @@ -224,7 +224,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "java/src/org/chromium/chrome/browser/base/SplitCompatIntentService.java", "java/src/org/chromium/chrome/browser/base/SplitCompatJobService.java", "java/src/org/chromium/chrome/browser/base/SplitCompatMinidumpUploadJobService.java", -@@ -2621,17 +2606,11 @@ if (current_toolchain == default_toolchain) { +@@ -2618,17 +2605,11 @@ if (current_toolchain == default_toolchain) { "java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java", "java/src/org/chromium/chrome/browser/prerender/ChromePrerenderService.java", "java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java", @@ -242,7 +242,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//base:base_java", "//base:jni_java", "//chrome/browser/download/android:file_provider_java", -@@ -2645,7 +2624,6 @@ if (current_toolchain == default_toolchain) { +@@ -2642,7 +2623,6 @@ if (current_toolchain == default_toolchain) { "//components/media_router/browser/android:cast_options_provider_java", "//components/minidump_uploader:minidump_uploader_java", "//components/module_installer/android:module_installer_java", @@ -250,7 +250,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//third_party/androidx:androidx_annotation_annotation_java", "//third_party/androidx:androidx_collection_collection_java", "//ui/android:ui_no_recycler_view_java", -@@ -2665,7 +2643,6 @@ if (current_toolchain == default_toolchain) { +@@ -2662,7 +2642,6 @@ if (current_toolchain == default_toolchain) { # Deps to pull services into base module. # TODO(crbug.com/1126301): Consider moving these to the chrome module to # reduce base dex size. @@ -261,7 +261,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn 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 -@@ -17,7 +17,6 @@ chrome_java_sources = [ +@@ -15,7 +15,6 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java", "java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java", "java/src/org/chromium/chrome/browser/ChromeApplicationImpl.java", @@ -269,7 +269,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/org/chromium/chrome/browser/ChromeBackupAgentImpl.java", "java/src/org/chromium/chrome/browser/ChromeBackupWatcher.java", "java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java", -@@ -955,10 +954,6 @@ chrome_java_sources = [ +@@ -952,10 +951,6 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/segmentation_platform/PriceTrackingActionProvider.java", "java/src/org/chromium/chrome/browser/segmentation_platform/ReaderModeActionProvider.java", "java/src/org/chromium/chrome/browser/segmentation_platform/SignalAccumulator.java", @@ -295,7 +295,7 @@ diff --git a/chrome/android/features/cablev2_authenticator/BUILD.gn b/chrome/and 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 -@@ -105,21 +105,16 @@ by a child template that "extends" this file. +@@ -106,21 +106,16 @@ by a child template that "extends" this file. @@ -317,7 +317,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro {% block extra_uses_permissions %} -@@ -749,16 +744,6 @@ by a child template that "extends" this file. +@@ -750,16 +745,6 @@ by a child template that "extends" this file. @@ -334,7 +334,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro @@ -350,7 +350,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro @@ -377,7 +377,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro -@@ -1006,28 +962,10 @@ by a child template that "extends" this file. +@@ -1007,28 +963,10 @@ by a child template that "extends" this file. android:exported="false" android:permission="android.permission.BIND_JOB_SERVICE"/> @@ -406,7 +406,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro -@@ -1262,12 +1200,6 @@ by a child template that "extends" this file. +@@ -1263,12 +1201,6 @@ by a child template that "extends" this file. {% endif %} @@ -422,7 +422,7 @@ diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/Andro diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml --- a/chrome/android/java/res/xml/privacy_preferences.xml +++ b/chrome/android/java/res/xml/privacy_preferences.xml -@@ -83,9 +83,4 @@ found in the LICENSE file. +@@ -57,9 +57,4 @@ found in the LICENSE file. android:summary="@string/autocomplete_searches_and_urls_summary" android:persistent="false"/> @@ -463,6 +463,27 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b } /** +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackgroundService.java +@@ -4,16 +4,6 @@ + + package org.chromium.chrome.browser; + +-import org.chromium.build.annotations.IdentifierNameString; +-import org.chromium.chrome.browser.base.SplitCompatGcmTaskService; +- + /** See {@link ChromeBackgroundServiceImpl}. */ +-public class ChromeBackgroundService extends SplitCompatGcmTaskService { +- @IdentifierNameString +- private static String sImplClassName = +- "org.chromium.chrome.browser.ChromeBackgroundServiceImpl"; +- +- public ChromeBackgroundService() { +- super(sImplClassName); +- } ++public class ChromeBackgroundService { + } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/PlayServicesVersionInfo.java b/chrome/android/java/src/org/chromium/chrome/browser/PlayServicesVersionInfo.java --- a/chrome/android/java/src/org/chromium/chrome/browser/PlayServicesVersionInfo.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/PlayServicesVersionInfo.java @@ -863,15 +884,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateSta diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java -@@ -133,7 +133,6 @@ public class PasswordSettings extends PreferenceFragmentCompat +@@ -120,7 +120,6 @@ public class PasswordSettings extends PreferenceFragmentCompat + private Preference mLinkPref; + private Menu mMenu; - private ChromeSwitchPreference mEnableAndroidAutofillSwitch; - private ChromeSwitchPreference mEnableAndroidAutofillIncognitoSwitch; - private @Nullable PasswordCheck mPasswordCheck; private @ManagePasswordsReferrer int mManagePasswordsReferrer; /** -@@ -195,7 +194,6 @@ public class PasswordSettings extends PreferenceFragmentCompat +@@ -182,7 +181,6 @@ public class PasswordSettings extends PreferenceFragmentCompat @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -879,9 +900,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage computeTrustedVaultBannerState(); } -@@ -301,9 +299,6 @@ public class PasswordSettings extends PreferenceFragmentCompat +@@ -287,9 +285,6 @@ public class PasswordSettings extends PreferenceFragmentCompat + createSavePasswordsSwitch(); - createEnableAndroidAutofillSwitch(); createAutoSignInCheckbox(); - if (mPasswordCheck != null) { - createCheckPasswords(); @@ -889,7 +910,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage if (mTrustedVaultBannerState == TrustedVaultBannerState.OPTED_IN) { createTrustedVaultBanner(R.string.android_trusted_vault_banner_sub_label_opted_in, -@@ -478,10 +473,6 @@ public class PasswordSettings extends PreferenceFragmentCompat +@@ -464,10 +459,6 @@ public class PasswordSettings extends PreferenceFragmentCompat // by the system. if (getActivity().isFinishing()) { PasswordManagerHandlerProvider.getInstance().removeObserver(this); @@ -923,7 +944,7 @@ diff --git a/chrome/android/modules/chrome_feature_modules.gni b/chrome/android/ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -7337,8 +7337,6 @@ static_library("browser") { +@@ -7324,8 +7324,6 @@ static_library("browser") { "offline_pages/offliner_helper.h", "offline_pages/offliner_user_data.cc", "offline_pages/offliner_user_data.h", @@ -1019,7 +1040,7 @@ diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browse import org.chromium.chrome.browser.language.R; import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.preferences.PrefChangeRegistrar; -@@ -101,11 +100,6 @@ public class LanguageSettings extends PreferenceFragmentCompat +@@ -128,11 +127,6 @@ public class LanguageSettings extends PreferenceFragmentCompat * translate target language, and detailed translate preferences. */ private void createDetailedPreferences(Bundle savedInstanceState, String rootKey) { @@ -1109,7 +1130,7 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom return AndroidBackendErrorType.UNCATEGORIZED; } -@@ -40,44 +33,15 @@ class PasswordManagerAndroidBackendUtil { +@@ -40,44 +33,10 @@ class PasswordManagerAndroidBackendUtil { return ((PasswordCheckupClientHelper.PasswordCheckBackendException) exception) .errorCode; } @@ -1124,11 +1145,10 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom - return ((ApiException) exception).getStatusCode(); - } - return 0; // '0' means SUCCESS. -+ return 13; // '13' means ERROR - } - - @Nullable - static Integer getConnectionResultCode(Exception exception) { +- } +- +- @Nullable +- static Integer getConnectionResultCode(Exception exception) { - if (!(exception instanceof ApiException)) return null; - - ConnectionResult connectionResult = @@ -1153,7 +1173,7 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom - } catch (PendingIntent.CanceledException e) { - Log.e(TAG, "Can not launch error resolution intent", e); - } -+ return null; ++ return 13; // '13' means ERROR } } diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordSettingsUpdaterBridge.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordSettingsUpdaterBridge.java @@ -1191,6 +1211,19 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom PasswordSettingsUpdaterBridgeJni.get().onFailedSettingChange( mNativeSettingsUpdaterBridge, setting, error, apiErrorCode); } +diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordStoreAndroidBackendBridgeImpl.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordStoreAndroidBackendBridgeImpl.java +--- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordStoreAndroidBackendBridgeImpl.java ++++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordStoreAndroidBackendBridgeImpl.java +@@ -122,8 +122,7 @@ class PasswordStoreAndroidBackendBridgeImpl { + @AndroidBackendErrorType + int error = PasswordManagerAndroidBackendUtil.getBackendError(exception); + int apiErrorCode = PasswordManagerAndroidBackendUtil.getApiErrorCode(exception); +- Integer connectionResultCode = +- PasswordManagerAndroidBackendUtil.getConnectionResultCode(exception); ++ Integer connectionResultCode = null; + + PasswordStoreAndroidBackendBridgeImplJni.get().onError(mNativeBackendBridge, jobId, error, + apiErrorCode, connectionResultCode != null, diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordSyncControllerDelegateBridgeImpl.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordSyncControllerDelegateBridgeImpl.java --- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordSyncControllerDelegateBridgeImpl.java +++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordSyncControllerDelegateBridgeImpl.java @@ -1257,7 +1290,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn "webui/internals/internals_ui.cc", "webui/internals/internals_ui.h", "webui/interstitials/interstitial_ui.cc", -@@ -492,7 +490,6 @@ static_library("ui") { +@@ -490,7 +488,6 @@ static_library("ui") { "//components/feedback/content", "//components/find_in_page", "//components/flags_ui", @@ -1293,7 +1326,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc b/chrom #include "chrome/browser/ui/webui/internals/internals_ui.h" #include "chrome/browser/ui/webui/interstitials/interstitial_ui.h" #include "chrome/browser/ui/webui/intro/intro_ui.h" -@@ -779,8 +778,6 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, +@@ -778,8 +777,6 @@ WebUIFactoryFunction GetWebUIFactoryFunction(WebUI* web_ui, return &NewWebUI; if (url.host_piece() == chrome::kChromeUIFlagsHost) return &NewWebUI; @@ -3283,7 +3316,7 @@ diff --git a/components/webauthn/android/BUILD.gn b/components/webauthn/android/ "java/src/org/chromium/components/webauthn/InternalAuthenticator.java", "java/src/org/chromium/components/webauthn/WebAuthnBrowserBridge.java", ] -@@ -16,12 +15,7 @@ android_library("java") { +@@ -16,11 +15,7 @@ android_library("java") { sources = [ "java/src/org/chromium/components/webauthn/AuthenticatorFactory.java", "java/src/org/chromium/components/webauthn/AuthenticatorImpl.java", @@ -3292,11 +3325,10 @@ diff --git a/components/webauthn/android/BUILD.gn b/components/webauthn/android/ "java/src/org/chromium/components/webauthn/Fido2ApiCallHelper.java", - "java/src/org/chromium/components/webauthn/Fido2CredentialRequest.java", - "java/src/org/chromium/components/webauthn/FidoErrorResponseCallback.java", -- "java/src/org/chromium/components/webauthn/GetAssertionResponseCallback.java", + "java/src/org/chromium/components/webauthn/GetAssertionResponseCallback.java", "java/src/org/chromium/components/webauthn/GetMatchingCredentialIdsResponseCallback.java", "java/src/org/chromium/components/webauthn/InternalAuthenticator.java", - "java/src/org/chromium/components/webauthn/IsUvpaaResponseCallback.java", -@@ -31,9 +25,6 @@ android_library("java") { +@@ -31,9 +26,6 @@ android_library("java") { ] annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] deps = [ @@ -3306,7 +3338,7 @@ diff --git a/components/webauthn/android/BUILD.gn b/components/webauthn/android/ "//base:base_java", "//base:jni_java", "//build/android:build_java", -@@ -69,7 +60,6 @@ android_library("test_support_java") { +@@ -69,7 +61,6 @@ android_library("test_support_java") { source_set("android") { sources = [ @@ -3317,7 +3349,25 @@ diff --git a/components/webauthn/android/BUILD.gn b/components/webauthn/android/ diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/AuthenticatorImpl.java -@@ -68,9 +68,6 @@ public final class AuthenticatorImpl implements Authenticator { +@@ -14,7 +14,6 @@ import androidx.annotation.RequiresApi; + + import org.chromium.base.Callback; + import org.chromium.base.ContextUtils; +-import org.chromium.base.PackageUtils; + import org.chromium.base.metrics.RecordHistogram; + import org.chromium.blink.mojom.Authenticator; + import org.chromium.blink.mojom.AuthenticatorStatus; +@@ -57,9 +56,6 @@ public final class AuthenticatorImpl implements Authenticator { + /** The payment information to be added to the "clientDataJson". */ + private PaymentOptions mPayment; + +- /** Caches the GMS Core package version. */ +- private int mGmsCorePackageVersion; +- + private MakeCredential_Response mMakeCredentialCallback; + private GetAssertion_Response mGetAssertionCallback; + // A queue is used to store pending IsUserVerifyingPlatformAuthenticatorAvailable request +@@ -68,9 +64,6 @@ public final class AuthenticatorImpl implements Authenticator { // situation does not matter because all pending requests will return the same value. private Queue> mIsUserVerifyingPlatformAuthenticatorAvailableCallbackQueue = new LinkedList<>(); @@ -3327,10 +3377,15 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut /** * Builds the Authenticator service implementation. -@@ -100,18 +97,6 @@ public final class AuthenticatorImpl implements Authenticator { - mGmsCorePackageVersion = PackageUtils.getPackageVersion(context, GMSCORE_PACKAGE_NAME); - } - +@@ -95,21 +88,6 @@ public final class AuthenticatorImpl implements Authenticator { + mRenderFrameHost = renderFrameHost; + mSupportLevel = supportLevel; + mOrigin = mRenderFrameHost.getLastCommittedOrigin(); +- +- Context context = ContextUtils.getApplicationContext(); +- mGmsCorePackageVersion = PackageUtils.getPackageVersion(context, GMSCORE_PACKAGE_NAME); +- } +- - public static void overrideFido2CredentialRequestForTesting(Fido2CredentialRequest request) { - sFido2CredentialRequestOverrideForTesting = request; - } @@ -3341,36 +3396,35 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut - } - - return new Fido2CredentialRequest(mIntentSender, mSupportLevel); -- } -- + } + /** - * Called by InternalAuthenticatorAndroid, which facilitates WebAuthn for processes that - * originate from the browser process. Since the request is from the browser process, the -@@ -139,17 +124,7 @@ public final class AuthenticatorImpl implements Authenticator { +@@ -139,17 +117,9 @@ public final class AuthenticatorImpl implements Authenticator { mMakeCredentialCallback = callback; mIsOperationPending = true; - if (mGmsCorePackageVersion < GMSCORE_MIN_VERSION) { - onError(AuthenticatorStatus.NOT_IMPLEMENTED); +- onError(AuthenticatorStatus.NOT_IMPLEMENTED); - return; - } -- + - mPendingFido2CredentialRequest = getFido2CredentialRequest(); - mPendingFido2CredentialRequest.handleMakeCredentialRequest(options, mRenderFrameHost, - mOrigin, - (status, response) - -> onRegisterResponse(status, response), - status -> onError(status)); ++ // Fido2 not supported on Bromite ++ onError(AuthenticatorStatus.NOT_IMPLEMENTED); } @Override -@@ -162,16 +137,7 @@ public final class AuthenticatorImpl implements Authenticator { - +@@ -163,15 +133,8 @@ public final class AuthenticatorImpl implements Authenticator { mGetAssertionCallback = callback; mIsOperationPending = true; -- + - if (mGmsCorePackageVersion < GMSCORE_MIN_VERSION) { - onError(AuthenticatorStatus.NOT_IMPLEMENTED); +- onError(AuthenticatorStatus.NOT_IMPLEMENTED); - return; - } - @@ -3378,15 +3432,17 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut - mPendingFido2CredentialRequest.handleGetAssertionRequest(options, mRenderFrameHost, mOrigin, - mPayment, - (status, response) -> onSignResponse(status, response), status -> onError(status)); ++ // Fido2 not supported on Bromite ++ onError(AuthenticatorStatus.NOT_IMPLEMENTED); } @Override -@@ -184,15 +150,7 @@ public final class AuthenticatorImpl implements Authenticator { +@@ -184,15 +147,8 @@ public final class AuthenticatorImpl implements Authenticator { callback.call(isUvpaa); }; - if (mGmsCorePackageVersion < GMSCORE_MIN_VERSION) { - decoratedCallback.call(false); +- decoratedCallback.call(false); - return; - } - @@ -3394,10 +3450,21 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut - getFido2CredentialRequest().handleIsUserVerifyingPlatformAuthenticatorAvailableRequest( - mRenderFrameHost, - isUvpaa -> onIsUserVerifyingPlatformAuthenticatorAvailableResponse(isUvpaa)); ++ decoratedCallback.call(false); ++ return; } /** -@@ -215,14 +173,7 @@ public final class AuthenticatorImpl implements Authenticator { +@@ -201,7 +157,7 @@ public final class AuthenticatorImpl implements Authenticator { + * version. + */ + public boolean isGetMatchingCredentialIdsSupported() { +- return mGmsCorePackageVersion >= GMSCORE_MIN_VERSION_GET_MATCHING_CRED_IDS; ++ return false; + } + + /** +@@ -215,33 +171,13 @@ public final class AuthenticatorImpl implements Authenticator { */ public void getMatchingCredentialIds(String relyingPartyId, byte[][] credentialIds, boolean requireThirdPartyPayment, GetMatchingCredentialIdsResponseCallback callback) { @@ -3413,10 +3480,18 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut } @Override -@@ -238,10 +189,7 @@ public final class AuthenticatorImpl implements Authenticator { - // reason, this method will return true but chrome will ignore conditional requests. - // Android surfaces only platform credentials on conditional requests, use IsUVPAA as a - // proxy for availability. + public void isConditionalMediationAvailable( + final IsConditionalMediationAvailable_Response callback) { +- if (mGmsCorePackageVersion < GMSCORE_MIN_VERSION) { +- callback.call(false); +- return; +- } +- +- // The WebAuthenticationConditionalUI feature will only be enabled on Android when gmscore +- // supports silent discovery. If the gmscore and chromium versions are out of sync for some +- // reason, this method will return true but chrome will ignore conditional requests. +- // Android surfaces only platform credentials on conditional requests, use IsUVPAA as a +- // proxy for availability. - mIsUserVerifyingPlatformAuthenticatorAvailableCallbackQueue.add(callback); - getFido2CredentialRequest().handleIsUserVerifyingPlatformAuthenticatorAvailableRequest( - mRenderFrameHost, @@ -3425,7 +3500,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut } @Override -@@ -251,8 +199,6 @@ public final class AuthenticatorImpl implements Authenticator { +@@ -251,8 +187,6 @@ public final class AuthenticatorImpl implements Authenticator { if (!mIsOperationPending || mGetAssertionCallback == null) { return; } @@ -3434,7 +3509,7 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut } /** -@@ -302,7 +248,6 @@ public final class AuthenticatorImpl implements Authenticator { +@@ -302,7 +236,6 @@ public final class AuthenticatorImpl implements Authenticator { mIsOperationPending = false; mMakeCredentialCallback = null; mGetAssertionCallback = null; @@ -3536,18 +3611,24 @@ diff --git a/device/BUILD.gn b/device/BUILD.gn diff --git a/device/fido/features.cc b/device/fido/features.cc --- a/device/fido/features.cc +++ b/device/fido/features.cc -@@ -38,9 +38,9 @@ BASE_FEATURE(kWebAuthnGoogleCorpRemoteDesktopClientPrivilege, - "WebAuthenticationGoogleCorpRemoteDesktopClientPrivilege", +@@ -39,12 +39,12 @@ BASE_FEATURE(kWebAuthnGoogleCorpRemoteDesktopClientPrivilege, base::FEATURE_ENABLED_BY_DEFAULT); --BASE_FEATURE(kWebAuthPasskeysUI, -+BASE_FEATURE(kWebAuthPasskeysUI, // must be disabled - "WebAuthenticationPasskeysUI", + BASE_FEATURE(kWebAuthPasskeysUI, +- "WebAuthenticationPasskeysUI", - base::FEATURE_DISABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite ++ "WebAuthenticationPasskeysUI", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite - BASE_FEATURE(kWebAuthnNewDiscoverableCredentialsUi, - "WebAuthenticationNewDiscoverableCredentialsUi", +-BASE_FEATURE(kWebAuthnNewDiscoverableCredentialsUi, +- "WebAuthenticationNewDiscoverableCredentialsUi", +- base::FEATURE_ENABLED_BY_DEFAULT); ++BASE_FEATURE(kWebAuthnNewDiscoverableCredentialsUi, // disabled by default ++ "WebAuthenticationNewDiscoverableCredentialsUi", // in Bromite ++ base::FEATURE_DISABLED_BY_DEFAULT); + + BASE_FEATURE(kWebAuthnNoEmptyDisplayNameCBOR, + "WebAuthenticationNoEmptyDisplayNameCBOR", diff --git a/remoting/android/client_java_tmpl.gni b/remoting/android/client_java_tmpl.gni --- a/remoting/android/client_java_tmpl.gni +++ b/remoting/android/client_java_tmpl.gni diff --git a/build/patches/Remove-contextual-search-manager.patch b/build/patches/Remove-contextual-search-manager.patch index a965e089..cdd568ab 100644 --- a/build/patches/Remove-contextual-search-manager.patch +++ b/build/patches/Remove-contextual-search-manager.patch @@ -24,23 +24,24 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../bottombar/OverlayPanelContent.java | 1 - .../compositor/layouts/LayoutManagerImpl.java | 4 +- .../customtabs/BaseCustomTabActivity.java | 2 +- - .../BaseCustomTabRootUiCoordinator.java | 8 +- + .../BaseCustomTabRootUiCoordinator.java | 16 +--- .../browser/customtabs/CustomTabActivity.java | 6 -- .../modaldialog/ChromeTabModalPresenter.java | 12 +-- .../modaldialog/TabModalLifetimeHandler.java | 7 +- .../privacy/settings/PrivacySettings.java | 9 -- .../chrome/browser/tab/TabHelpers.java | 2 - .../tabbed_mode/TabbedRootUiCoordinator.java | 5 +- - .../chrome/browser/ui/RootUiCoordinator.java | 27 +----- + .../chrome/browser/ui/RootUiCoordinator.java | 39 +------- chrome/browser/BUILD.gn | 17 ---- - chrome/browser/about_flags.cc | 48 ---------- - .../flags/android/chrome_feature_list.cc | 1 - + chrome/browser/about_flags.cc | 49 ----------- + .../flags/android/chrome_feature_list.cc | 42 --------- + .../flags/android/chrome_feature_list.h | 8 -- ...nfiguration_policy_handler_list_factory.cc | 6 +- .../strings/android_chrome_strings.grd | 59 ------------- content/browser/browser_interface_binders.cc | 1 - third_party/blink/public/mojom/BUILD.gn | 2 +- third_party/blink/public/public_features.gni | 2 +- - 36 files changed, 17 insertions(+), 579 deletions(-) + 37 files changed, 17 insertions(+), 649 deletions(-) delete mode 100644 chrome/android/java/res/layout/contextual_search_caption_view.xml delete mode 100644 chrome/android/java/res/layout/contextual_search_card_icon_view.xml delete mode 100644 chrome/android/java/res/layout/contextual_search_context_view.xml @@ -54,7 +55,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 -@@ -723,7 +723,6 @@ if (current_toolchain == default_toolchain) { +@@ -722,7 +722,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/ui:duplicate_download_enums_java", "//components/browsing_data/core:browsing_data_utils_java", "//components/browsing_data/core:clear_browsing_data_tab_java", @@ -62,7 +63,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//components/dom_distiller/core:distiller_type_java", "//components/ntp_tiles:ntp_tiles_enums_java", "//components/offline_pages/core:offline_page_model_enums_java", -@@ -3981,16 +3980,12 @@ generate_jni("chrome_jni_headers") { +@@ -3979,16 +3978,12 @@ generate_jni("chrome_jni_headers") { "java/src/org/chromium/chrome/browser/compositor/LayerTitleCache.java", "java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelContent.java", "java/src/org/chromium/chrome/browser/compositor/layouts/content/TabContentManager.java", @@ -108,7 +109,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -306,21 +306,6 @@ chrome_java_sources = [ +@@ -304,21 +304,6 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelManager.java", "java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelRepaddingTextView.java", "java/src/org/chromium/chrome/browser/compositor/bottombar/OverlayPanelTextViewInflater.java", @@ -130,7 +131,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/org/chromium/chrome/browser/compositor/bottombar/ephemeraltab/EphemeralTabCoordinator.java", "java/src/org/chromium/chrome/browser/compositor/bottombar/ephemeraltab/EphemeralTabMediator.java", "java/src/org/chromium/chrome/browser/compositor/bottombar/ephemeraltab/EphemeralTabSheetContent.java", -@@ -361,7 +346,6 @@ chrome_java_sources = [ +@@ -359,7 +344,6 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/compositor/overlays/strip/TabLoadTracker.java", "java/src/org/chromium/chrome/browser/compositor/resources/StaticResourcePreloads.java", "java/src/org/chromium/chrome/browser/compositor/resources/SystemResourcePreloads.java", @@ -138,7 +139,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/org/chromium/chrome/browser/compositor/scene_layer/StaticTabSceneLayer.java", "java/src/org/chromium/chrome/browser/compositor/scene_layer/TabListSceneLayer.java", "java/src/org/chromium/chrome/browser/compositor/scene_layer/TabStripSceneLayer.java", -@@ -387,34 +371,6 @@ chrome_java_sources = [ +@@ -385,34 +369,6 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/contextmenu/ContextMenuUi.java", "java/src/org/chromium/chrome/browser/contextmenu/ContextMenuUtils.java", "java/src/org/chromium/chrome/browser/contextmenu/LensChipDelegate.java", @@ -510,7 +511,7 @@ diff --git a/chrome/android/java/res/xml/google_services_preferences.xml b/chrom diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml --- a/chrome/android/java/res/xml/privacy_preferences.xml +++ b/chrome/android/java/res/xml/privacy_preferences.xml -@@ -70,10 +70,6 @@ found in the LICENSE file. +@@ -56,10 +56,6 @@ found in the LICENSE file. android:title="@string/autocomplete_searches_and_urls_title" android:summary="@string/autocomplete_searches_and_urls_summary" android:persistent="false"/> @@ -524,7 +525,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/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 -@@ -1735,7 +1735,7 @@ public class ChromeTabbedActivity extends ChromeActivity extends AsyncInitializationActivity @@ -564,7 +565,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv SnackbarManageable, SceneChangeObserver, StatusBarColorController.StatusBarColorProvider, AppMenuDelegate, AppMenuBlocker, MenuOrKeyboardActionController, CompositorViewHolder.Initializer, -@@ -325,8 +322,6 @@ public abstract class ChromeActivity +@@ -323,8 +320,6 @@ public abstract class ChromeActivity new ObservableSupplierImpl<>(); protected final UnownedUserDataSupplier mInsetObserverViewSupplier = new InsetObserverViewSupplier(); @@ -573,7 +574,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv private SnackbarManager mSnackbarManager; -@@ -516,7 +511,7 @@ public abstract class ChromeActivity +@@ -514,7 +509,7 @@ public abstract class ChromeActivity // clang-format off return new RootUiCoordinator(this, null, getShareDelegateSupplier(), getActivityTabProvider(), mTabModelProfileSupplier, mBookmarkModelSupplier, @@ -582,7 +583,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv getTabModelSelectorSupplier(), new OneshotSupplierImpl<>(), new OneshotSupplierImpl<>(), new OneshotSupplierImpl<>(), new OneshotSupplierImpl<>(), () -> null, mBrowserControlsManagerSupplier.get(), -@@ -951,14 +946,6 @@ public abstract class ChromeActivity +@@ -949,14 +944,6 @@ public abstract class ChromeActivity mCompositorViewHolderSupplier.get().onNativeLibraryReady( getWindowAndroid(), getTabContentManager(), getPrefService()); @@ -597,7 +598,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv TraceEvent.end("ChromeActivity:CompositorInitialization"); } -@@ -1445,11 +1432,6 @@ public abstract class ChromeActivity +@@ -1443,11 +1430,6 @@ public abstract class ChromeActivity @SuppressLint("NewApi") @Override protected final void onDestroy() { @@ -609,7 +610,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv if (mSnackbarManager != null) { SnackbarManagerProvider.detach(mSnackbarManager); } -@@ -1949,13 +1931,6 @@ public abstract class ChromeActivity +@@ -1944,13 +1926,6 @@ public abstract class ChromeActivity return mCompositorViewHolderSupplier.get(); } @@ -623,7 +624,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv /** * Exits the fullscreen mode, if any. Does nothing if no fullscreen is present. * @return Whether the fullscreen mode is currently showing. -@@ -2001,15 +1976,6 @@ public abstract class ChromeActivity +@@ -1996,15 +1971,6 @@ public abstract class ChromeActivity } mActivityTabProvider.setLayoutStateProvider(layoutManager); @@ -639,7 +640,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv } /** -@@ -2278,18 +2244,6 @@ public abstract class ChromeActivity +@@ -2273,18 +2239,6 @@ public abstract class ChromeActivity return webContents != null ? SelectionPopupController.fromWebContents(webContents) : null; } @@ -713,7 +714,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Base import org.chromium.chrome.browser.customtabs.content.CustomTabActivityNavigationController; import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabController; import org.chromium.chrome.browser.customtabs.features.branding.BrandingController; -@@ -127,7 +126,7 @@ public class BaseCustomTabRootUiCoordinator extends RootUiCoordinator { +@@ -93,7 +92,6 @@ public class BaseCustomTabRootUiCoordinator extends RootUiCoordinator { + * @param profileSupplier Supplier of the currently applicable profile. + * @param bookmarkModelSupplier Supplier of the bookmark bridge for the current profile. + * @param tabBookmarkerSupplier Supplier of {@link TabBookmarker} for bookmarking a given tab. +- * @param contextualSearchManagerSupplier Supplier of the {@link ContextualSearchManager}. + * @param tabModelSelectorSupplier Supplies the {@link TabModelSelector}. + * @param browserControlsManager Manages the browser controls. + * @param windowAndroid The current {@link WindowAndroid}. +@@ -127,7 +125,7 @@ public class BaseCustomTabRootUiCoordinator extends RootUiCoordinator { @NonNull ObservableSupplier profileSupplier, @NonNull ObservableSupplier bookmarkModelSupplier, @NonNull ObservableSupplier tabBookmarkerSupplier, @@ -722,7 +731,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Base @NonNull ObservableSupplier tabModelSelectorSupplier, @NonNull BrowserControlsManager browserControlsManager, @NonNull ActivityWindowAndroid windowAndroid, -@@ -158,7 +157,7 @@ public class BaseCustomTabRootUiCoordinator extends RootUiCoordinator { +@@ -158,7 +156,7 @@ public class BaseCustomTabRootUiCoordinator extends RootUiCoordinator { // clang-format off super(activity, null, shareDelegateSupplier, tabProvider, profileSupplier, bookmarkModelSupplier, tabBookmarkerSupplier, @@ -731,20 +740,27 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Base new OneshotSupplierImpl<>(), new OneshotSupplierImpl<>(), new OneshotSupplierImpl<>(), new OneshotSupplierImpl<>(), () -> null, browserControlsManager, windowAndroid, new DummyJankTracker(), -@@ -213,9 +212,6 @@ public class BaseCustomTabRootUiCoordinator extends RootUiCoordinator { - public void didFirstVisuallyNonEmptyPaint(Tab tab) { - BaseCustomTabActivity baseActivity = (BaseCustomTabActivity) mActivity; - assert baseActivity != null; +@@ -208,16 +206,6 @@ public class BaseCustomTabRootUiCoordinator extends RootUiCoordinator { + ((PartialCustomTabHeightStrategy) mCustomTabHeightStrategy)::onShowSoftInput; + mTabController.get().registerTabObserver( + new PartialCustomTabTabObserver(softInputCallback)); +- mTabController.get().registerTabObserver(new EmptyTabObserver() { +- @Override +- public void didFirstVisuallyNonEmptyPaint(Tab tab) { +- BaseCustomTabActivity baseActivity = (BaseCustomTabActivity) mActivity; +- assert baseActivity != null; - baseActivity.getContextualSearchManagerSupplier() - .get() - .setCanHideAndroidBrowserControls(false); - } - }); +- } +- }); } + } + diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java -@@ -189,12 +189,6 @@ public class CustomTabActivity extends BaseCustomTabActivity { +@@ -188,12 +188,6 @@ public class CustomTabActivity extends BaseCustomTabActivity { mIntentDataProvider.getSession(), webContents); } @@ -855,7 +871,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/modaldialog/Tab 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 -@@ -44,7 +44,6 @@ import org.chromium.ui.text.SpanApplier; +@@ -41,7 +41,6 @@ import org.chromium.ui.text.SpanApplier; import androidx.annotation.Nullable; import androidx.preference.PreferenceCategory; @@ -863,7 +879,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; -@@ -69,9 +68,7 @@ public class PrivacySettings +@@ -63,9 +62,7 @@ public class PrivacySettings // moved from SyncAndServicesSettings.java private static final String PREF_SERVICES_CATEGORY = "services_category"; private static final String PREF_SEARCH_SUGGESTIONS = "search_suggestions"; @@ -873,7 +889,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting private final SharedPreferencesManager mSharedPreferencesManager = SharedPreferencesManager.getInstance(); private final PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); -@@ -119,12 +116,6 @@ public class PrivacySettings +@@ -113,12 +110,6 @@ public class PrivacySettings mSearchSuggestions.setOnPreferenceChangeListener(this); mSearchSuggestions.setManagedPreferenceDelegate(mManagedPreferenceDelegate); @@ -916,7 +932,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab import org.chromium.chrome.browser.feature_guide.notifications.FeatureNotificationUtils; import org.chromium.chrome.browser.feature_guide.notifications.FeatureType; import org.chromium.chrome.browser.feed.webfeed.WebFeedFollowIntroController; -@@ -257,7 +256,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -255,7 +254,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { @NonNull ObservableSupplier profileSupplier, @NonNull ObservableSupplier bookmarkModelSupplier, @NonNull ObservableSupplier tabBookmarkerSupplier, @@ -925,7 +941,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab @NonNull ObservableSupplier tabModelSelectorSupplier, @NonNull OneshotSupplier startSurfaceSupplier, @NonNull OneshotSupplier tabSwitcherSupplier, -@@ -292,7 +291,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -290,7 +289,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { boolean initializeUiWithIncognitoColors, @NonNull BackPressManager backPressManager) { super(activity, onOmniboxFocusChangedListener, shareDelegateSupplier, tabProvider, profileSupplier, bookmarkModelSupplier, tabBookmarkerSupplier, @@ -945,7 +961,23 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.crash.ChromePureJavaExceptionReporter; import org.chromium.chrome.browser.directactions.DirectActionInitializer; import org.chromium.chrome.browser.dom_distiller.ReaderModeToolbarButtonController; -@@ -259,7 +258,6 @@ public class RootUiCoordinator +@@ -99,7 +98,6 @@ import org.chromium.chrome.browser.preferences.SharedPreferencesManager; + import org.chromium.chrome.browser.price_tracking.PriceTrackingButtonController; + import org.chromium.chrome.browser.profiles.Profile; + import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; +-import org.chromium.chrome.browser.segmentation_platform.ContextualPageActionController; + import org.chromium.chrome.browser.settings.SettingsLauncherImpl; + import org.chromium.chrome.browser.share.ShareButtonController; + import org.chromium.chrome.browser.share.ShareDelegate; +@@ -246,7 +244,6 @@ public class RootUiCoordinator + private List mButtonDataProviders; + @Nullable + private AdaptiveToolbarButtonController mAdaptiveToolbarButtonController; +- private ContextualPageActionController mContextualPageActionController; + private IdentityDiscController mIdentityDiscController; + private ChromeActionModeHandler mChromeActionModeHandler; + private final ToolbarActionModeCallback mActionModeControllerCallback; +@@ -259,7 +256,6 @@ public class RootUiCoordinator private final ObservableSupplier mTabBookmarkerSupplier; private final OneshotSupplierImpl mAppMenuSupplier; private BottomSheetObserver mBottomSheetObserver; @@ -953,7 +985,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi protected final CallbackController mCallbackController; protected final BrowserControlsManager mBrowserControlsManager; private BrowserControlsStateProvider.Observer mBrowserControlsObserver; -@@ -364,7 +362,7 @@ public class RootUiCoordinator +@@ -364,7 +360,7 @@ public class RootUiCoordinator @NonNull ObservableSupplier profileSupplier, @NonNull ObservableSupplier bookmarkModelSupplier, @NonNull ObservableSupplier tabBookmarkerSupplier, @@ -962,7 +994,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi @NonNull ObservableSupplier tabModelSelectorSupplier, @NonNull OneshotSupplier startSurfaceSupplier, @NonNull OneshotSupplier tabSwitcherSupplier, -@@ -457,7 +455,6 @@ public class RootUiCoordinator +@@ -457,7 +453,6 @@ public class RootUiCoordinator mBookmarkModelSupplier = bookmarkModelSupplier; mTabBookmarkerSupplier = tabBookmarkerSupplier; mAppMenuSupplier = new OneshotSupplierImpl<>(); @@ -970,7 +1002,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi mActionModeControllerCallback = new ToolbarActionModeCallback(); mTabModelSelectorSupplier = tabModelSelectorSupplier; -@@ -1006,15 +1003,6 @@ public class RootUiCoordinator +@@ -561,11 +556,6 @@ public class RootUiCoordinator + mToolbarManager = null; + } + +- if (mContextualPageActionController != null) { +- mContextualPageActionController.destroy(); +- mContextualPageActionController = null; +- } +- + if (mAdaptiveToolbarButtonController != null) { + mAdaptiveToolbarButtonController.destroy(); + mAdaptiveToolbarButtonController = null; +@@ -1006,15 +996,6 @@ public class RootUiCoordinator @Override public boolean canShowAppMenu() { @@ -986,7 +1030,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi // Do not show the menu if we are in find in page view. if (mFindToolbarManager != null && mFindToolbarManager.isShowing() && !DeviceFormFactor.isNonMultiDisplayContextOnTablet(mActivity)) { -@@ -1243,10 +1231,6 @@ public class RootUiCoordinator +@@ -1169,11 +1150,6 @@ public class RootUiCoordinator + AdaptiveToolbarButtonVariant.PRICE_TRACKING, priceTrackingButtonController); + adaptiveToolbarButtonController.addButtonVariant( + AdaptiveToolbarButtonVariant.READER_MODE, readerModeToolbarButtonController); +- mContextualPageActionController = new ContextualPageActionController(mProfileSupplier, +- mActivityTabProvider, adaptiveToolbarButtonController, +- () +- -> ShoppingServiceFactory.getForProfile(mProfileSupplier.get()), +- mBookmarkModelSupplier); + mButtonDataProviders = + Arrays.asList(mIdentityDiscController, adaptiveToolbarButtonController); + +@@ -1243,10 +1219,6 @@ public class RootUiCoordinator public void onStartedShowing(int layoutType, boolean showToolbar) { if (layoutType != LayoutType.BROWSING && layoutType != LayoutType.SIMPLE_ANIMATION) { @@ -997,7 +1053,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi } if (layoutType == LayoutType.TAB_SWITCHER) { -@@ -1386,10 +1370,6 @@ public class RootUiCoordinator +@@ -1386,10 +1358,6 @@ public class RootUiCoordinator * cross-feature interaction, e.g. hide other features when this feature is shown. */ protected void onFindToolbarShown() { @@ -1008,7 +1064,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi } /** -@@ -1547,9 +1527,6 @@ public class RootUiCoordinator +@@ -1547,9 +1515,6 @@ public class RootUiCoordinator case SheetState.FULL: if (!mOpened) { mOpened = true; @@ -1018,7 +1074,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi } // On visible bottom sheet, hide page zoom dialog -@@ -1557,8 +1534,6 @@ public class RootUiCoordinator +@@ -1557,8 +1522,6 @@ public class RootUiCoordinator break; case SheetState.HIDDEN: mOpened = false; @@ -1030,7 +1086,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -2095,7 +2095,6 @@ static_library("browser") { +@@ -2090,7 +2090,6 @@ static_library("browser") { "//components/content_settings/common:mojom", "//components/content_settings/core/browser", "//components/content_settings/core/common", @@ -1038,7 +1094,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "//components/cookie_config", "//components/country_codes", "//components/crash/core/browser", -@@ -2571,8 +2570,6 @@ static_library("browser") { +@@ -2565,8 +2564,6 @@ static_library("browser") { "android/compositor/decoration_title.h", "android/compositor/layer/content_layer.cc", "android/compositor/layer/content_layer.h", @@ -1047,7 +1103,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "android/compositor/layer/layer.h", "android/compositor/layer/overlay_panel_layer.cc", "android/compositor/layer/overlay_panel_layer.h", -@@ -2593,8 +2590,6 @@ static_library("browser") { +@@ -2587,8 +2584,6 @@ static_library("browser") { "android/compositor/resources/resource_factory.cc", "android/compositor/resources/toolbar_resource.cc", "android/compositor/resources/toolbar_resource.h", @@ -1056,7 +1112,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "android/compositor/scene_layer/overscroll_scene_layer.cc", "android/compositor/scene_layer/overscroll_scene_layer.h", "android/compositor/scene_layer/scrolling_bottom_view_scene_layer.cc", -@@ -2617,16 +2612,6 @@ static_library("browser") { +@@ -2611,16 +2606,6 @@ static_library("browser") { "android/content/content_utils.cc", "android/context_menu/context_menu_native_delegate_impl.cc", "android/context_menu/context_menu_native_delegate_impl.h", @@ -1073,7 +1129,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "android/cookies/cookies_fetcher_util.cc", "android/customtabs/chrome_origin_verifier.cc", "android/customtabs/chrome_origin_verifier.h", -@@ -3238,8 +3223,6 @@ static_library("browser") { +@@ -3230,8 +3215,6 @@ static_library("browser") { "safe_browsing/android/safe_browsing_referring_app_bridge_android.h", "safe_browsing/android/safe_browsing_settings_launcher_android.cc", "safe_browsing/android/safe_browsing_settings_launcher_android.h", @@ -1085,10 +1141,11 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -1970,26 +1970,6 @@ const FeatureEntry::FeatureVariation kRelatedSearchesAlternateUxVariations[] = { +@@ -1961,27 +1961,6 @@ const FeatureEntry::FeatureVariation kRelatedSearchesAlternateUxVariations[] = { + std::size(kRelatedSearchesAlternateUxShowDefaultChipWith120SpEllipsis), nullptr}, }; - +- -const FeatureEntry::FeatureParam kContextualSearchSuppressShortViewWith300Dp[] = - {{"contextual_search_minimum_page_height_dp", "300"}}; -const FeatureEntry::FeatureParam kContextualSearchSuppressShortViewWith400Dp[] = @@ -1112,7 +1169,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc #endif // BUILDFLAG(IS_ANDROID) const FeatureEntry::FeatureParam kResamplingInputEventsLSQEnabled[] = { -@@ -3712,34 +3692,6 @@ const FeatureEntry kFeatureEntries[] = { +@@ -3686,34 +3665,6 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kEnableOskResizesVisualViewportByDefaultDescription, kOsAndroid, FEATURE_VALUE_TYPE(blink::features::kOSKResizesVisualViewportByDefault)}, @@ -1150,14 +1207,87 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc 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 -@@ -224,7 +224,6 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -35,7 +35,6 @@ + #include "components/content_creation/notes/core/note_features.h" + #include "components/content_creation/reactions/core/reactions_features.h" + #include "components/content_settings/core/common/features.h" +-#include "components/contextual_search/core/browser/contextual_search_field_trial.h" + #include "components/download/public/common/download_features.h" + #include "components/embedder_support/android/util/cdn_utils.h" + #include "components/feature_engagement/public/feature_list.h" +@@ -223,15 +222,6 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kContextMenuSearchAndShopWithGoogleLens, &kContextMenuTranslateWithGoogleLens, &kContextMenuPopupForAllScreenSizes, - &kContextualSearchDebug, - &kContextualSearchDelayedIntelligence, - &kContextualSearchDisableOnlineDetection, - &kContextualSearchForceCaption, +- &kContextualSearchDelayedIntelligence, +- &kContextualSearchDisableOnlineDetection, +- &kContextualSearchForceCaption, +- &kContextualSearchSuppressShortView, +- &kContextualSearchThinWebViewImplementation, +- &kContextualTriggersSelectionHandles, +- &kContextualTriggersSelectionMenu, +- &kContextualTriggersSelectionSize, + &kDirectActions, + &kDisableCompositedProgressBar, + &kDownloadFileProvider, +@@ -709,38 +699,6 @@ BASE_FEATURE(kLensOnQuickActionSearchWidget, + "LensOnQuickActionSearchWidget", + base::FEATURE_ENABLED_BY_DEFAULT); + +-BASE_FEATURE(kContextualSearchDelayedIntelligence, +- "ContextualSearchDelayedIntelligence", +- base::FEATURE_DISABLED_BY_DEFAULT); +- +-BASE_FEATURE(kContextualSearchDisableOnlineDetection, +- "ContextualSearchDisableOnlineDetection", +- base::FEATURE_DISABLED_BY_DEFAULT); +- +-BASE_FEATURE(kContextualSearchForceCaption, +- "ContextualSearchForceCaption", +- base::FEATURE_DISABLED_BY_DEFAULT); +- +-BASE_FEATURE(kContextualSearchSuppressShortView, +- "ContextualSearchSuppressShortView", +- base::FEATURE_DISABLED_BY_DEFAULT); +- +-BASE_FEATURE(kContextualSearchThinWebViewImplementation, +- "ContextualSearchThinWebViewImplementation", +- base::FEATURE_DISABLED_BY_DEFAULT); +- +-BASE_FEATURE(kContextualTriggersSelectionHandles, +- "ContextualTriggersSelectionHandles", +- base::FEATURE_DISABLED_BY_DEFAULT); +- +-BASE_FEATURE(kContextualTriggersSelectionMenu, +- "ContextualTriggersSelectionMenu", +- base::FEATURE_DISABLED_BY_DEFAULT); +- +-BASE_FEATURE(kContextualTriggersSelectionSize, +- "ContextualTriggersSelectionSize", +- base::FEATURE_DISABLED_BY_DEFAULT); +- + BASE_FEATURE(kDirectActions, "DirectActions", base::FEATURE_ENABLED_BY_DEFAULT); + + BASE_FEATURE(kDisableCompositedProgressBar, +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 +@@ -75,14 +75,6 @@ BASE_DECLARE_FEATURE(kContextMenuSearchWithGoogleLens); + BASE_DECLARE_FEATURE(kContextMenuShopWithGoogleLens); + BASE_DECLARE_FEATURE(kContextMenuSearchAndShopWithGoogleLens); + BASE_DECLARE_FEATURE(kContextMenuTranslateWithGoogleLens); +-BASE_DECLARE_FEATURE(kContextualSearchDelayedIntelligence); +-BASE_DECLARE_FEATURE(kContextualSearchDisableOnlineDetection); +-BASE_DECLARE_FEATURE(kContextualSearchForceCaption); +-BASE_DECLARE_FEATURE(kContextualSearchSuppressShortView); +-BASE_DECLARE_FEATURE(kContextualSearchThinWebViewImplementation); +-BASE_DECLARE_FEATURE(kContextualTriggersSelectionHandles); +-BASE_DECLARE_FEATURE(kContextualTriggersSelectionMenu); +-BASE_DECLARE_FEATURE(kContextualTriggersSelectionSize); + BASE_DECLARE_FEATURE(kDirectActions); + BASE_DECLARE_FEATURE(kDisableCompositedProgressBar); + BASE_DECLARE_FEATURE(kDontPrefetchLibraries); diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc b/chrome/browser/policy/configuration_policy_handler_list_factory.cc --- a/chrome/browser/policy/configuration_policy_handler_list_factory.cc +++ b/chrome/browser/policy/configuration_policy_handler_list_factory.cc @@ -1184,7 +1314,7 @@ diff --git a/chrome/browser/policy/configuration_policy_handler_list_factory.cc 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 -@@ -815,33 +815,6 @@ CHAR_LIMIT guidelines: +@@ -791,33 +791,6 @@ CHAR_LIMIT guidelines: Privacy and security @@ -1218,7 +1348,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro “Do Not Track” -@@ -4029,38 +4002,6 @@ To change this setting, <resetlink>reset sync

<resetlink>reset sync

diff --git a/build/patches/Remove-help-menu-item.patch b/build/patches/Remove-help-menu-item.patch index b35b30dd..d0bf8081 100644 --- a/build/patches/Remove-help-menu-item.patch +++ b/build/patches/Remove-help-menu-item.patch @@ -40,7 +40,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/KeyboardShortcu diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -2355,16 +2355,6 @@ public abstract class ChromeActivity +@@ -2305,16 +2305,6 @@ public abstract class ChromeActivity final Tab currentTab = getActivityTab(); diff --git a/build/patches/Remove-http-referrals-in-cross-origin-navigation.patch b/build/patches/Remove-http-referrals-in-cross-origin-navigation.patch index 4d6a2f72..f6b70830 100644 --- a/build/patches/Remove-http-referrals-in-cross-origin-navigation.patch +++ b/build/patches/Remove-http-referrals-in-cross-origin-navigation.patch @@ -1,8 +1,15 @@ From: uazo Date: Wed, 21 Sep 2022 12:28:17 +0000 -Subject: Remove http referrals in cross origin navigation +Subject: Remove HTTP referrals in cross origin navigation -and adds a flag to disable them completely +The patch removes the referrals if the navigation is cross-origin and occurs in the top frame. +The value is not removed across iframes because the referrals are statically defined +by the HTML and the Javascript of the page, and therefore they do not tell anything about the +user. Also, some services may not work, such as video iframes. +A preference is also introduced to completely removes referrals management, for advanced users. + +Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html +License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- chrome/android/java/res/xml/privacy_preferences.xml | 4 ++++ .../chrome/browser/privacy/settings/PrivacySettings.java | 8 ++++++++ @@ -34,9 +41,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting private static final String PREF_DO_NOT_TRACK = "do_not_track"; + private static final String PREF_ENABLE_REFERRERS = "enable_referrers"; private static final String PREF_CLEAR_BROWSING_DATA = "clear_browsing_data"; - private static final String PREF_PROXY_OPTIONS = "proxy"; private static final String PREF_PRIVACY_GUIDE = "privacy_guide"; -@@ -175,6 +176,9 @@ public class PrivacySettings + private static final String PREF_INCOGNITO_LOCK = "incognito_lock"; +@@ -174,6 +175,9 @@ public class PrivacySettings } else if (PREF_CAN_MAKE_PAYMENT.equals(key)) { UserPrefs.get(Profile.getLastUsedRegularProfile()) .setBoolean(Pref.CAN_MAKE_PAYMENT_ENABLED, (boolean) newValue); @@ -46,7 +53,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting } else if (PREF_HTTPS_FIRST_MODE.equals(key)) { UserPrefs.get(Profile.getLastUsedRegularProfile()) .setBoolean(Pref.HTTPS_ONLY_MODE_ENABLED, (boolean) newValue); -@@ -228,6 +232,10 @@ public class PrivacySettings +@@ -227,6 +231,10 @@ public class PrivacySettings : R.string.text_off); } @@ -60,12 +67,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -882,6 +882,9 @@ CHAR_LIMIT guidelines: +@@ -879,6 +879,9 @@ CHAR_LIMIT guidelines: For example, some websites may respond to this request by showing you ads that aren’t based on other websites you’ve visited. Many websites will still collect and use your browsing data — for example to improve security, to provide content, ads and recommendations, and to generate reporting statistics. + -+ Enable HTTP Referrer header ++ Enable HTTP Referer header + Access payment methods diff --git a/build/patches/Remove-navigator.connection-info.patch b/build/patches/Remove-navigator.connection-info.patch index a872aea9..6d5ceb33 100644 --- a/build/patches/Remove-navigator.connection-info.patch +++ b/build/patches/Remove-navigator.connection-info.patch @@ -8,11 +8,10 @@ and disable observers Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../renderer/modules/netinfo/network_information.cc | 7 ++++++- - .../renderer/modules/netinfo/network_information.h | 1 + - .../platform/network/network_state_notifier.cc | 13 +++++++++++++ - .../platform/network/network_state_notifier.h | 2 +- - 4 files changed, 21 insertions(+), 2 deletions(-) + .../renderer/modules/netinfo/network_information.cc | 5 ++++- + .../platform/network/network_state_notifier.cc | 11 +++++++++++ + .../platform/network/network_state_notifier.h | 2 +- + 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/third_party/blink/renderer/modules/netinfo/network_information.cc b/third_party/blink/renderer/modules/netinfo/network_information.cc --- a/third_party/blink/renderer/modules/netinfo/network_information.cc @@ -22,7 +21,7 @@ diff --git a/third_party/blink/renderer/modules/netinfo/network_information.cc b bool NetworkInformation::IsObserving() const { - return !!connection_observer_handle_; -+ return !!connection_observer_handle_ || is_fake_observing_; ++ return false; } String NetworkInformation::type() const { @@ -34,40 +33,27 @@ diff --git a/third_party/blink/renderer/modules/netinfo/network_information.cc b DCHECK(GetExecutionContext()->IsContextThread()); const String host = Host(); -@@ -242,6 +243,8 @@ void NetworkInformation::ContextDestroyed() { +@@ -242,6 +243,7 @@ void NetworkInformation::ContextDestroyed() { } void NetworkInformation::StartObserving() { -+ is_fake_observing_ = true; + if ((true)) return; if (!IsObserving() && !context_stopped_) { type_ = GetNetworkStateNotifier().ConnectionType(); DCHECK(!connection_observer_handle_); -@@ -252,6 +255,8 @@ void NetworkInformation::StartObserving() { +@@ -252,6 +254,7 @@ void NetworkInformation::StartObserving() { } void NetworkInformation::StopObserving() { -+ is_fake_observing_ = false; + if ((true)) return; if (IsObserving()) { DCHECK(connection_observer_handle_); connection_observer_handle_ = nullptr; -diff --git a/third_party/blink/renderer/modules/netinfo/network_information.h b/third_party/blink/renderer/modules/netinfo/network_information.h ---- a/third_party/blink/renderer/modules/netinfo/network_information.h -+++ b/third_party/blink/renderer/modules/netinfo/network_information.h -@@ -118,6 +118,7 @@ class NetworkInformation final - - std::unique_ptr - connection_observer_handle_; -+ bool is_fake_observing_ = false; - }; - - } // namespace blink diff --git a/third_party/blink/renderer/platform/network/network_state_notifier.cc b/third_party/blink/renderer/platform/network/network_state_notifier.cc --- a/third_party/blink/renderer/platform/network/network_state_notifier.cc +++ b/third_party/blink/renderer/platform/network/network_state_notifier.cc -@@ -522,6 +522,19 @@ NetworkStateNotifier::GetWebHoldbackDownlinkThroughputMbps() const { - return absl::nullopt; +@@ -99,6 +99,17 @@ NetworkStateNotifier::ScopedNotifier::~ScopedNotifier() { + } } +NetworkStateNotifier::NetworkStateNotifier() : has_override_(false) { @@ -78,14 +64,12 @@ diff --git a/third_party/blink/renderer/platform/network/network_state_notifier. + /*effective_type*/ absl::nullopt, + /*http_rtt_msec*/ 0, + /*max_bandwidth_mbps*/ std::numeric_limits::max()); -+ SetNetworkQuality( -+ /*effective_type*/ WebEffectiveConnectionType::kType4G, -+ base::TimeDelta(), base::TimeDelta(), 10000); ++ SetNetworkQuality(/*effective_type*/ WebEffectiveConnectionType::kType4G, base::TimeDelta(), base::TimeDelta(), 10000); +} + - void NetworkStateNotifier::GetMetricsWithWebHoldback( - WebConnectionType* type, - double* downlink_max_mbps, + NetworkStateNotifier::NetworkStateObserverHandle::NetworkStateObserverHandle( + NetworkStateNotifier* notifier, + NetworkStateNotifier::ObserverType type, diff --git a/third_party/blink/renderer/platform/network/network_state_notifier.h b/third_party/blink/renderer/platform/network/network_state_notifier.h --- a/third_party/blink/renderer/platform/network/network_state_notifier.h +++ b/third_party/blink/renderer/platform/network/network_state_notifier.h diff --git a/build/patches/Remove-offline-measurement-background-task.patch b/build/patches/Remove-offline-measurement-background-task.patch deleted file mode 100644 index a0d0502d..00000000 --- a/build/patches/Remove-offline-measurement-background-task.patch +++ /dev/null @@ -1,31 +0,0 @@ -From: csagan5 <32685696+csagan5@users.noreply.github.com> -Date: Sat, 3 Apr 2021 23:07:41 +0200 -Subject: Remove offline measurement background task - -License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ---- - .../chrome/browser/init/ProcessInitializationHandler.java | 3 --- - 1 file changed, 3 deletions(-) - -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java ---- a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessInitializationHandler.java -@@ -66,7 +66,6 @@ import org.chromium.chrome.browser.metrics.LaunchMetrics; - import org.chromium.chrome.browser.metrics.PackageMetrics; - import org.chromium.chrome.browser.metrics.WebApkUninstallUmaTracker; - import org.chromium.chrome.browser.notifications.channels.ChannelsUpdater; --import org.chromium.chrome.browser.offlinepages.measurements.OfflineMeasurementsBackgroundTask; - import org.chromium.chrome.browser.optimization_guide.OptimizationGuideBridgeFactory; - import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations; - import org.chromium.chrome.browser.photo_picker.DecoderService; -@@ -427,8 +426,6 @@ public class ProcessInitializationHandler { - () -> VideoTutorialShareHelper.saveUrlsToSharedPrefs()); - deferredStartupHandler.addDeferredTask( - () -> TosDialogBehaviorSharedPrefInvalidator.refreshSharedPreferenceIfTosSkipped()); -- deferredStartupHandler.addDeferredTask( -- () -> OfflineMeasurementsBackgroundTask.clearPersistedDataFromPrefs()); - deferredStartupHandler.addDeferredTask(() -> QueryTileUtils.isQueryTilesEnabledOnNTP()); - deferredStartupHandler.addDeferredTask(() -> { - GlobalAppLocaleController.getInstance().maybeSetupLocaleManager(); --- -2.25.1 diff --git a/build/patches/Remove-price-shopping-commerce-integrations.patch b/build/patches/Remove-price-shopping-commerce-integrations.patch index 3918adf7..b8ed7f41 100644 --- a/build/patches/Remove-price-shopping-commerce-integrations.patch +++ b/build/patches/Remove-price-shopping-commerce-integrations.patch @@ -4,7 +4,7 @@ Subject: Remove price/shopping/commerce integrations License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/android/BUILD.gn | 23 --- + chrome/android/BUILD.gn | 27 --- chrome/android/chrome_java_sources.gni | 5 - chrome/android/features/tab_ui/BUILD.gn | 7 - .../res/layout/large_message_card_item.xml | 9 - @@ -22,29 +22,30 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../TabSelectionEditorCoordinator.java | 2 +- .../TabSwitcherCoordinator.java | 102 +--------- .../tab_management/TabSwitcherMediator.java | 57 ------ - .../chrome/browser/app/ChromeActivity.java | 17 -- - .../AppMenuPropertiesDelegateImpl.java | 44 +---- - .../browser/bookmarks/BookmarkBridge.java | 85 --------- + .../chrome/browser/app/ChromeActivity.java | 20 -- + .../AppMenuPropertiesDelegateImpl.java | 16 +- + .../browser/bookmarks/BookmarkBridge.java | 84 --------- .../bookmarks/BookmarkItemsAdapter.java | 23 --- - .../browser/bookmarks/BookmarkManager.java | 14 -- + .../browser/bookmarks/BookmarkManager.java | 12 -- .../BookmarkSaveFlowCoordinator.java | 37 +--- - .../bookmarks/BookmarkSaveFlowMediator.java | 68 +------ + .../bookmarks/BookmarkSaveFlowMediator.java | 69 +------ .../browser/bookmarks/BookmarkUtils.java | 12 +- .../init/ProcessInitializationHandler.java | 5 - .../ContextualPageActionController.java | 4 - .../chrome/browser/tab/TabHelpers.java | 9 - .../tabbed_mode/TabbedRootUiCoordinator.java | 22 --- .../ToolbarButtonInProductHelpController.java | 27 --- - .../browser/toolbar/ToolbarManager.java | 33 ---- - .../chrome/browser/ui/RootUiCoordinator.java | 23 --- + .../browser/toolbar/ToolbarManager.java | 17 -- + .../chrome/browser/ui/RootUiCoordinator.java | 22 --- chrome/android/java_sources.gni | 8 - + chrome/browser/BUILD.gn | 2 - .../price_tracking/PriceTrackingFeatures.java | 2 +- - .../price_tracking_notification_bridge.cc | 10 - .../commerce/subscriptions/android/BUILD.gn | 1 - .../CommerceSubscriptionsService.java | 36 +--- .../SubscriptionsManagerImpl.java | 26 +-- + .../optimization_guide_keyed_service.cc | 4 - chrome/browser/persisted_state_db/BUILD.gn | 1 - - 40 files changed, 23 insertions(+), 986 deletions(-) + 41 files changed, 29 insertions(+), 936 deletions(-) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn @@ -60,16 +61,17 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn import("//chrome/browser/password_manager/buildflags.gni") import("//chrome/browser/share/android/java_sources.gni") import("//chrome/chrome_paks.gni") -@@ -394,8 +390,6 @@ if (current_toolchain == default_toolchain) { +@@ -394,9 +390,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/browser_controls/android:java", "//chrome/browser/commerce/android:java", "//chrome/browser/commerce/merchant_viewer/android:java", - "//chrome/browser/commerce/price_tracking/android:java", - "//chrome/browser/commerce/price_tracking/proto:proto_java", - "//chrome/browser/commerce/subscriptions/android:subscriptions_java", +- "//chrome/browser/commerce/subscriptions/android:subscriptions_java", "//chrome/browser/consent_auditor/android:java", "//chrome/browser/contextmenu:java", -@@ -784,16 +778,6 @@ if (current_toolchain == default_toolchain) { + "//chrome/browser/creator/android:java", +@@ -783,16 +776,6 @@ if (current_toolchain == default_toolchain) { sources += share_java_sources deps += share_java_deps @@ -86,24 +88,34 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn if (enable_basic_printing) { deps += [ "//printing:printing_java" ] } -@@ -997,8 +981,6 @@ if (current_toolchain == default_toolchain) { +@@ -996,9 +979,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/browser_controls/android:junit", "//chrome/browser/commerce/android:java", "//chrome/browser/commerce/merchant_viewer/android:junit", - "//chrome/browser/commerce/price_tracking/android:java", - "//chrome/browser/commerce/price_tracking/proto:proto_java", - "//chrome/browser/commerce/subscriptions/android:subscriptions_java", +- "//chrome/browser/commerce/subscriptions/android:subscriptions_java", "//chrome/browser/contextmenu:java", "//chrome/browser/creator/android:java", -@@ -1522,7 +1504,6 @@ if (current_toolchain == default_toolchain) { + "//chrome/browser/creator/android:junit", +@@ -1390,7 +1370,6 @@ if (current_toolchain == default_toolchain) { + "//chrome/browser/android/browserservices/intents:java", + "//chrome/browser/android/browserservices/verification:java", + "//chrome/browser/android/crypto:java", +- "//chrome/browser/commerce/subscriptions/android:subscriptions_java", + "//chrome/browser/contextmenu:java", + "//chrome/browser/download/android:download_java_tests", + "//chrome/browser/download/android:file_provider_java", +@@ -1520,8 +1499,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/commerce/android:javatests", "//chrome/browser/commerce/merchant_viewer/android:java", "//chrome/browser/commerce/merchant_viewer/android:javatests", - "//chrome/browser/commerce/price_tracking/android:java", - "//chrome/browser/commerce/subscriptions/android:subscriptions_java", +- "//chrome/browser/commerce/subscriptions/android:subscriptions_java", "//chrome/browser/content_creation/notes/internal/android:java", "//chrome/browser/contextmenu:java", -@@ -1801,8 +1782,6 @@ if (current_toolchain == default_toolchain) { + "//chrome/browser/dependency_injection:java", +@@ -1799,8 +1776,6 @@ if (current_toolchain == default_toolchain) { deps += feed_test_deps @@ -112,7 +124,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn if (enable_basic_printing) { deps += [ "//printing:printing_java" ] } -@@ -4159,8 +4138,6 @@ group("jni_headers") { +@@ -4158,8 +4133,6 @@ group("jni_headers") { "//chrome/browser/android/browserservices/verification:jni_headers", "//chrome/browser/battery/android:jni_headers", "//chrome/browser/commerce/merchant_viewer/android:jni_headers", @@ -124,7 +136,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn 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 -@@ -199,10 +199,6 @@ chrome_java_sources = [ +@@ -197,10 +197,6 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/bookmarks/BookmarkUIState.java", "java/src/org/chromium/chrome/browser/bookmarks/BookmarkUndoController.java", "java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java", @@ -135,7 +147,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/org/chromium/chrome/browser/bookmarks/ReadingListFeatures.java", "java/src/org/chromium/chrome/browser/bookmarks/ReadingListSectionHeader.java", "java/src/org/chromium/chrome/browser/bookmarks/TabBookmarker.java", -@@ -951,7 +947,6 @@ chrome_java_sources = [ +@@ -948,7 +944,6 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/searchwidget/SearchType.java", "java/src/org/chromium/chrome/browser/searchwidget/SearchWidgetProvider.java", "java/src/org/chromium/chrome/browser/segmentation_platform/ContextualPageActionController.java", @@ -1160,7 +1172,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser 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 -@@ -84,9 +84,7 @@ import org.chromium.chrome.browser.app.tabmodel.AsyncTabParamsManagerSingleton; +@@ -83,9 +83,7 @@ import org.chromium.chrome.browser.app.tabmodel.AsyncTabParamsManagerSingleton; import org.chromium.chrome.browser.app.tabmodel.TabModelOrchestrator; import org.chromium.chrome.browser.back_press.BackPressManager; import org.chromium.chrome.browser.bookmarks.BookmarkModel; @@ -1170,7 +1182,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.compositor.CompositorViewHolder; import org.chromium.chrome.browser.compositor.layouts.Layout; import org.chromium.chrome.browser.compositor.layouts.LayoutManagerImpl; -@@ -151,8 +149,6 @@ import org.chromium.chrome.browser.share.ShareDelegate; +@@ -149,8 +147,6 @@ import org.chromium.chrome.browser.share.ShareDelegate; import org.chromium.chrome.browser.share.ShareDelegateImpl; import org.chromium.chrome.browser.share.ShareDelegateSupplier; import org.chromium.chrome.browser.stylus_handwriting.StylusWritingCoordinator; @@ -1179,7 +1191,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.tab.AccessibilityVisibilityHandler; import org.chromium.chrome.browser.tab.RequestDesktopUtils; import org.chromium.chrome.browser.tab.Tab; -@@ -2374,19 +2370,6 @@ public abstract class ChromeActivity +@@ -2366,27 +2362,11 @@ public abstract class ChromeActivity + } + + if (id == R.id.enable_price_tracking_menu_id) { +- mTabBookmarkerSupplier.get().startOrModifyPriceTracking(currentTab); + RecordUserAction.record("MobileMenuEnablePriceTracking"); +- TrackerFactory.getTrackerForProfile(Profile.getLastUsedRegularProfile()) +- .notifyEvent(EventConstants.SHOPPING_LIST_PRICE_TRACK_FROM_MENU); + return true; } if (id == R.id.disable_price_tracking_menu_id) { @@ -1202,18 +1222,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 -@@ -38,10 +38,7 @@ import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; +@@ -37,7 +37,6 @@ import org.chromium.chrome.browser.ActivityTabProvider; import org.chromium.chrome.browser.banners.AppMenuVerbiage; import org.chromium.chrome.browser.bookmarks.BookmarkFeatures; import org.chromium.chrome.browser.bookmarks.BookmarkModel; -import org.chromium.chrome.browser.bookmarks.PowerBookmarkUtils; import org.chromium.chrome.browser.bookmarks.ReadingListFeatures; --import org.chromium.chrome.browser.commerce.ShoppingFeatures; --import org.chromium.chrome.browser.commerce.ShoppingServiceFactory; - import org.chromium.chrome.browser.device.DeviceClassManager; - import org.chromium.chrome.browser.device.DeviceConditions; - import org.chromium.chrome.browser.download.DownloadUtils; -@@ -57,7 +54,6 @@ import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; + import org.chromium.chrome.browser.commerce.ShoppingFeatures; + import org.chromium.chrome.browser.commerce.ShoppingServiceFactory; +@@ -56,7 +55,6 @@ import org.chromium.chrome.browser.multiwindow.MultiWindowUtils; import org.chromium.chrome.browser.night_mode.WebContentsDarkModeController; import org.chromium.chrome.browser.omaha.UpdateMenuItemHelper; import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations; @@ -1221,15 +1238,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.read_later.ReadingListUtils; import org.chromium.chrome.browser.share.ShareHelper; -@@ -84,7 +80,6 @@ import org.chromium.components.commerce.core.ShoppingService; - import org.chromium.components.dom_distiller.core.DomDistillerUrlUtils; - import org.chromium.components.embedder_support.util.UrlConstants; - import org.chromium.components.embedder_support.util.UrlUtilities; --import org.chromium.components.power_bookmarks.PowerBookmarkMeta; - import org.chromium.components.webapk.lib.client.WebApkValidator; - import org.chromium.components.webapps.AppBannerManager; - import org.chromium.components.webapps.WebappsUtils; -@@ -607,9 +602,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -595,9 +593,7 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate > 1; } @@ -1240,58 +1249,34 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/App boolean isPriceTrackingEnabled = isPriceTrackingVisible; boolean hasItemBetweenDividers = false; -@@ -1205,43 +1198,8 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate +@@ -1181,9 +1177,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate + * @param stopPriceTrackingMenuItem The menu item to stop price tracking. + * @param currentTab Current tab being displayed. */ - protected void updatePriceTrackingMenuItemRow(@NonNull MenuItem startPriceTrackingMenuItem, - @NonNull MenuItem stopPriceTrackingMenuItem, @Nullable Tab currentTab) { +- protected void updatePriceTrackingMenuItemRow(@NonNull MenuItem startPriceTrackingMenuItem, +- @NonNull MenuItem stopPriceTrackingMenuItem, @Nullable Tab currentTab) { - ShoppingService service = -- ShoppingServiceFactory.getForProfile(Profile.getLastUsedRegularProfile()); -- ShoppingService.ProductInfo info = null; -- if (service != null && currentTab != null) { -- info = service.getAvailableProductInfoForUrl(currentTab.getUrl()); -- } -- -- // If price tracking isn't enabled or the page isn't eligible, then hide both items. -- if (!ShoppingFeatures.isShoppingListEnabled() -- || !PowerBookmarkUtils.isPriceTrackingEligible(currentTab) -- || mIsTypeSpecificBookmarkItemRowPresent) { -- startPriceTrackingMenuItem.setVisible(false); -- stopPriceTrackingMenuItem.setVisible(false); -- return; -- } -- -- PowerBookmarkMeta existingBookmarkMeta = PowerBookmarkUtils.getBookmarkBookmarkMetaForTab( -- mBookmarkModelSupplier.get(), currentTab); -- if (existingBookmarkMeta != null && !existingBookmarkMeta.hasShoppingSpecifics()) { - startPriceTrackingMenuItem.setVisible(false); - stopPriceTrackingMenuItem.setVisible(false); -- return; -- } -- -- mIsTypeSpecificBookmarkItemRowPresent = true; -- -- boolean editEnabled = mBookmarkModelSupplier.get().isEditBookmarksEnabled(); -- startPriceTrackingMenuItem.setEnabled(editEnabled); -- stopPriceTrackingMenuItem.setEnabled(editEnabled); -- -- boolean priceTrackingEnabled = false; -- if (info != null) { -- priceTrackingEnabled = PowerBookmarkUtils.isPriceTrackingEnabledForClusterId( -- info.productClusterId, mBookmarkModelSupplier.get()); -- } -- startPriceTrackingMenuItem.setVisible(!priceTrackingEnabled); ++ protected void updatePriceTrackingMenuItemRow(@NonNull MenuItem startPriceTrackingMenuItem, // disabled ++ @NonNull MenuItem stopPriceTrackingMenuItem, @Nullable Tab currentTab) { // in Bromite ++ /*ShoppingService service = + ShoppingServiceFactory.getForProfile(Profile.getLastUsedRegularProfile()); + ShoppingService.ProductInfo info = null; + if (service != null && currentTab != null) { +@@ -1219,7 +1215,9 @@ public class AppMenuPropertiesDelegateImpl implements AppMenuPropertiesDelegate + info.productClusterId, mBookmarkModelSupplier.get()); + } + startPriceTrackingMenuItem.setVisible(!priceTrackingEnabled); - stopPriceTrackingMenuItem.setVisible(priceTrackingEnabled); ++ stopPriceTrackingMenuItem.setVisible(priceTrackingEnabled); */ ++ startPriceTrackingMenuItem.setVisible(false); ++ stopPriceTrackingMenuItem.setVisible(false); } /** 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 -@@ -35,13 +35,9 @@ import org.chromium.base.annotations.CalledByNative; - import org.chromium.base.annotations.NativeMethods; - import org.chromium.base.metrics.RecordHistogram; - import org.chromium.base.metrics.RecordUserAction; --import org.chromium.chrome.browser.commerce.ShoppingFeatures; +@@ -26,9 +26,6 @@ import org.chromium.chrome.browser.commerce.ShoppingFeatures; import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksShim; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.read_later.ReadingListUtils; @@ -1301,7 +1286,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm import org.chromium.chrome.browser.tab.Tab; import org.chromium.components.bookmarks.BookmarkId; import org.chromium.components.bookmarks.BookmarkItem; -@@ -98,8 +94,6 @@ class BookmarkBridge { +@@ -59,8 +56,6 @@ class BookmarkBridge { new ArrayList(); private final ObserverList mObservers = new ObserverList(); @@ -1310,7 +1295,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm /** * Interface for callback object for fetching bookmarks and folder hierarchy. -@@ -143,26 +137,6 @@ class BookmarkBridge { +@@ -104,26 +99,6 @@ class BookmarkBridge { mNativeBookmarkBridge = BookmarkBridgeJni.get().init(BookmarkBridge.this, profile); mIsDoingExtensiveChanges = BookmarkBridgeJni.get().isDoingExtensiveChanges( mNativeBookmarkBridge, BookmarkBridge.this); @@ -1337,7 +1322,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm } /** -@@ -177,10 +151,6 @@ class BookmarkBridge { +@@ -138,10 +113,6 @@ class BookmarkBridge { mDelayedBookmarkCallbacks.clear(); } mObservers.clear(); @@ -1348,7 +1333,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm } /** Returns whether the bridge has been destroyed. */ -@@ -484,61 +454,6 @@ class BookmarkBridge { +@@ -445,61 +416,6 @@ class BookmarkBridge { return result; } @@ -1475,19 +1460,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkManager.java -@@ -22,11 +22,8 @@ import org.chromium.base.ObserverList; - import org.chromium.base.metrics.RecordUserAction; - import org.chromium.chrome.R; - import org.chromium.chrome.browser.app.bookmarks.BookmarkActivity; --import org.chromium.chrome.browser.commerce.ShoppingFeatures; --import org.chromium.chrome.browser.commerce.ShoppingServiceFactory; +@@ -26,7 +26,6 @@ import org.chromium.chrome.browser.commerce.ShoppingFeatures; + import org.chromium.chrome.browser.commerce.ShoppingServiceFactory; import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksReader; import org.chromium.chrome.browser.profiles.Profile; -import org.chromium.chrome.browser.subscriptions.CommerceSubscriptionsServiceFactory; import org.chromium.chrome.browser.tab.TabLaunchType; import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; import org.chromium.chrome.browser.ui.native_page.BasicNativePage; -@@ -210,17 +207,6 @@ public class BookmarkManager +@@ -206,17 +205,6 @@ public class BookmarkManager mBookmarkModel = new BookmarkModel(); mMainView = (ViewGroup) LayoutInflater.from(mContext).inflate(R.layout.bookmark_main, null); @@ -1645,10 +1626,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm bindBookmarkProperties(mBookmarkId, mPowerBookmarkMeta, mWasBookmarkMoved); bindPowerBookmarkProperties(mBookmarkId, mPowerBookmarkMeta, fromExplicitTrackUi); } -@@ -129,39 +113,9 @@ public class BookmarkSaveFlowMediator +@@ -128,40 +112,9 @@ public class BookmarkSaveFlowMediator + private void bindPowerBookmarkProperties( BookmarkId bookmarkId, @Nullable PowerBookmarkMeta meta, boolean fromExplicitTrackUi) { - if (meta == null) return; +- if (meta == null) return; - - if (meta.hasShoppingSpecifics()) { - setPriceTrackingNotificationUiEnabled(true); @@ -1685,7 +1667,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm } void setPriceTrackingNotificationUiEnabled(boolean enabled) { -@@ -180,9 +134,6 @@ public class BookmarkSaveFlowMediator +@@ -180,9 +133,6 @@ public class BookmarkSaveFlowMediator void destroy() { mBookmarkModel.removeObserver(this); @@ -1695,7 +1677,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm mBookmarkModel = null; mPropertyModel = null; -@@ -203,10 +154,6 @@ public class BookmarkSaveFlowMediator +@@ -203,10 +153,6 @@ public class BookmarkSaveFlowMediator this::handleNotificationSwitchToggle); } @@ -1706,7 +1688,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm // BookmarkModelObserver implementation @Override -@@ -218,15 +165,4 @@ public class BookmarkSaveFlowMediator +@@ -218,15 +164,4 @@ public class BookmarkSaveFlowMediator } bindBookmarkProperties(mBookmarkId, mPowerBookmarkMeta, mWasBookmarkMoved); } @@ -1842,7 +1824,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab import org.chromium.chrome.browser.tab.RequestDesktopUtils; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.TabAssociatedApp; -@@ -157,7 +154,6 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -155,7 +152,6 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { private NavigationSheet mNavigationSheet; private ComposedBrowserControlsVisibilityDelegate mAppBrowserControlsVisibilityDelegate; private LayoutManagerImpl mLayoutManager; @@ -1850,7 +1832,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab private UndoGroupSnackbarController mUndoGroupSnackbarController; private final int mControlContainerHeightResource; private final Supplier mInsetObserverViewSupplier; -@@ -380,11 +376,6 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -378,11 +374,6 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { mUndoGroupSnackbarController.destroy(); } @@ -1862,7 +1844,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab super.onDestroy(); } -@@ -522,7 +513,6 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -520,7 +511,6 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { mPwaBottomSheetController = PwaBottomSheetControllerFactory.createPwaBottomSheetController(mActivity); PwaBottomSheetControllerFactory.attach(mWindowAndroid, mPwaBottomSheetController); @@ -1870,7 +1852,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab initUndoGroupSnackbarController(); } -@@ -767,18 +757,6 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -765,18 +755,6 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { if (animate) browserControlsSizer.setAnimateBrowserControlsHeightChanges(false); } @@ -1943,7 +1925,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java -@@ -93,8 +93,6 @@ import org.chromium.chrome.browser.omnibox.suggestions.OmniboxPedalDelegate; +@@ -92,8 +92,6 @@ import org.chromium.chrome.browser.omnibox.suggestions.OmniboxPedalDelegate; import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; import org.chromium.chrome.browser.page_info.ChromePageInfo; import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations; @@ -1952,30 +1934,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; -@@ -1996,22 +1994,6 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve - - @VisibleForTesting - public void showPriceDropIPH() { -- ToggleTabStackButton toggleTabStackButton = -- mControlContainer.findViewById(R.id.tab_switcher_button); -- UserEducationHelper userEducationHelper = new UserEducationHelper(mActivity, mHandler); -- HighlightParams params = new HighlightParams(HighlightShape.CIRCLE); -- params.setBoundsRespectPadding(true); -- userEducationHelper.requestShowIPH( -- new IPHCommandBuilder(mControlContainer.getResources(), -- FeatureConstants.PRICE_DROP_NTP_FEATURE, R.string.price_drop_spotted_iph, -- R.string.price_drop_spotted_iph) -- .setInsetRect(new Rect(0, 0, 0, -- -(mControlContainer.getResources().getDimensionPixelOffset( -- R.dimen.price_drop_spotted_iph_ntp_tabswitcher_y_inset)))) -- .setAnchorView(toggleTabStackButton) -- .setHighlightParams(params) -- .setDismissOnTouch(true) -- .build()); - } - - /** -@@ -2020,21 +2002,6 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve +@@ -2018,21 +2016,6 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve * viewed in the tab switcher grid. */ private void maybeShowPriceDropIPH() { @@ -2000,26 +1959,23 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java -@@ -44,10 +44,8 @@ import org.chromium.chrome.browser.app.omnibox.OmniboxPedalDelegateImpl; +@@ -44,7 +44,6 @@ import org.chromium.chrome.browser.app.omnibox.OmniboxPedalDelegateImpl; import org.chromium.chrome.browser.app.tab_activity_glue.TabReparentingController; import org.chromium.chrome.browser.back_press.BackPressManager; import org.chromium.chrome.browser.bookmarks.BookmarkModel; -import org.chromium.chrome.browser.bookmarks.PowerBookmarkUtils; import org.chromium.chrome.browser.bookmarks.TabBookmarker; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; --import org.chromium.chrome.browser.commerce.ShoppingFeatures; - import org.chromium.chrome.browser.commerce.ShoppingServiceFactory; - import org.chromium.chrome.browser.compositor.CompositorViewHolder; - import org.chromium.chrome.browser.compositor.bottombar.OverlayPanel; -@@ -95,7 +93,6 @@ import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; + import org.chromium.chrome.browser.commerce.ShoppingFeatures; +@@ -95,7 +94,6 @@ import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler; import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler.VoiceInteractionSource; import org.chromium.chrome.browser.paint_preview.DemoPaintPreview; import org.chromium.chrome.browser.preferences.SharedPreferencesManager; -import org.chromium.chrome.browser.price_tracking.PriceTrackingButtonController; import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; - import org.chromium.chrome.browser.segmentation_platform.ContextualPageActionController; -@@ -106,7 +103,6 @@ import org.chromium.chrome.browser.share.ShareDelegate.ShareOrigin; + import org.chromium.chrome.browser.settings.SettingsLauncherImpl; +@@ -105,7 +103,6 @@ import org.chromium.chrome.browser.share.ShareDelegate.ShareOrigin; import org.chromium.chrome.browser.share.ShareUtils; import org.chromium.chrome.browser.share.qrcode.QrCodeDialog; import org.chromium.chrome.browser.share.scroll_capture.ScrollCaptureManager; @@ -2027,7 +1983,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.tab.AccessibilityVisibilityHandler; import org.chromium.chrome.browser.tab.AutofillSessionLifetimeController; import org.chromium.chrome.browser.tab.RequestDesktopUtils; -@@ -782,17 +778,6 @@ public class RootUiCoordinator +@@ -775,17 +772,6 @@ public class RootUiCoordinator initMerchantTrustSignals(); initScrollCapture(); @@ -2045,7 +2001,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi new OneShotCallback<>(mProfileSupplier, this::initHistoryClustersCoordinator); if (DeviceFormFactor.isWindowOnTablet(mWindowAndroid) -@@ -1097,12 +1082,6 @@ public class RootUiCoordinator +@@ -1090,12 +1076,6 @@ public class RootUiCoordinator mIdentityDiscController = new IdentityDiscController( mActivity, mActivityLifecycleDispatcher, mProfileSupplier); @@ -2058,7 +2014,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi ReaderModeToolbarButtonController readerModeToolbarButtonController = new ReaderModeToolbarButtonController(mActivityTabProvider, mModalDialogManagerSupplier.get(), -@@ -1153,8 +1132,6 @@ public class RootUiCoordinator +@@ -1146,8 +1126,6 @@ public class RootUiCoordinator AdaptiveToolbarButtonVariant.SHARE, shareButtonController); adaptiveToolbarButtonController.addButtonVariant( AdaptiveToolbarButtonVariant.VOICE, voiceToolbarButtonController); @@ -2066,7 +2022,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi - AdaptiveToolbarButtonVariant.PRICE_TRACKING, priceTrackingButtonController); adaptiveToolbarButtonController.addButtonVariant( AdaptiveToolbarButtonVariant.READER_MODE, readerModeToolbarButtonController); - mContextualPageActionController = new ContextualPageActionController(mProfileSupplier, + mButtonDataProviders = diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni --- a/chrome/android/java_sources.gni +++ b/chrome/android/java_sources.gni @@ -2097,6 +2053,18 @@ diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni chrome_test_java_sources += commerce_merchant_viewer_java_test_sources if (enable_arcore) { +diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn +--- a/chrome/browser/BUILD.gn ++++ b/chrome/browser/BUILD.gn +@@ -2921,8 +2921,6 @@ static_library("browser") { + "chrome_browser_main_android.h", + "commerce/android/shopping_service_factory_android.cc", + "commerce/merchant_viewer/web_contents_helper.cc", +- "commerce/price_tracking/android/price_tracking_notification_bridge.cc", +- "commerce/price_tracking/android/price_tracking_notification_bridge.h", + "component_updater/crow_domain_list_component_installer.cc", + "component_updater/crow_domain_list_component_installer.h", + "component_updater/desktop_sharing_hub_component_remover.cc", diff --git a/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingFeatures.java b/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingFeatures.java --- a/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingFeatures.java +++ b/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingFeatures.java @@ -2109,38 +2077,6 @@ diff --git a/chrome/browser/commerce/price_tracking/android/java/src/org/chromiu } private static boolean isSignedIn() { -diff --git a/chrome/browser/commerce/price_tracking/android/price_tracking_notification_bridge.cc b/chrome/browser/commerce/price_tracking/android/price_tracking_notification_bridge.cc ---- a/chrome/browser/commerce/price_tracking/android/price_tracking_notification_bridge.cc -+++ b/chrome/browser/commerce/price_tracking/android/price_tracking_notification_bridge.cc -@@ -6,7 +6,6 @@ - - #include "base/android/jni_array.h" - #include "base/memory/ptr_util.h" --#include "chrome/browser/commerce/price_tracking/android/jni_headers/PriceTrackingNotificationBridge_jni.h" - #include "content/public/browser/browser_context.h" - - using OptimizationType = optimization_guide::proto::OptimizationType; -@@ -26,10 +25,6 @@ PriceTrackingNotificationBridge::GetForBrowserContext( - } - - PriceTrackingNotificationBridge::PriceTrackingNotificationBridge() { -- JNIEnv* env = base::android::AttachCurrentThread(); -- java_obj_.Reset(env, Java_PriceTrackingNotificationBridge_create( -- env, reinterpret_cast(this)) -- .obj()); - } - - PriceTrackingNotificationBridge::~PriceTrackingNotificationBridge() = default; -@@ -42,9 +37,4 @@ void PriceTrackingNotificationBridge::OnNotificationPayload( - !payload.has_value()) { - return; - } -- -- // Pass the payload to Java. -- JNIEnv* env = base::android::AttachCurrentThread(); -- Java_PriceTrackingNotificationBridge_showNotification( -- env, java_obj_, base::android::ToJavaByteArray(env, payload.value())); - } diff --git a/chrome/browser/commerce/subscriptions/android/BUILD.gn b/chrome/browser/commerce/subscriptions/android/BUILD.gn --- a/chrome/browser/commerce/subscriptions/android/BUILD.gn +++ b/chrome/browser/commerce/subscriptions/android/BUILD.gn @@ -2303,6 +2239,20 @@ diff --git a/chrome/browser/commerce/subscriptions/android/java/src/org/chromium } /** +diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc +--- a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc ++++ b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc +@@ -113,10 +113,6 @@ OptimizationGuideKeyedService::MaybeCreatePushNotificationManager( + if (optimization_guide::features::IsPushNotificationsEnabled()) { + auto push_notification_manager = + std::make_unique(); +-#if BUILDFLAG(IS_ANDROID) +- push_notification_manager->AddObserver( +- PriceTrackingNotificationBridge::GetForBrowserContext(profile)); +-#endif + return push_notification_manager; + } + return nullptr; diff --git a/chrome/browser/persisted_state_db/BUILD.gn b/chrome/browser/persisted_state_db/BUILD.gn --- a/chrome/browser/persisted_state_db/BUILD.gn +++ b/chrome/browser/persisted_state_db/BUILD.gn diff --git a/build/patches/Remove-segmentation-platform.patch b/build/patches/Remove-segmentation-platform.patch index 8e1ee823..84216286 100644 --- a/build/patches/Remove-segmentation-platform.patch +++ b/build/patches/Remove-segmentation-platform.patch @@ -7,8 +7,9 @@ Also fixes a crash on startup. Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../chrome_browser_main_extra_parts_segmentation_platform.cc | 4 ++++ - 1 file changed, 4 insertions(+) + ...rome_browser_main_extra_parts_segmentation_platform.cc | 4 ++++ + components/segmentation_platform/public/features.cc | 8 ++------ + 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/chrome/browser/segmentation_platform/chrome_browser_main_extra_parts_segmentation_platform.cc b/chrome/browser/segmentation_platform/chrome_browser_main_extra_parts_segmentation_platform.cc --- a/chrome/browser/segmentation_platform/chrome_browser_main_extra_parts_segmentation_platform.cc @@ -41,5 +42,31 @@ diff --git a/chrome/browser/segmentation_platform/chrome_browser_main_extra_part + if ((true)) return; segmentation_platform::UkmDatabaseClient::GetInstance().PostMessageLoopRun(); } +diff --git a/components/segmentation_platform/public/features.cc b/components/segmentation_platform/public/features.cc +--- a/components/segmentation_platform/public/features.cc ++++ b/components/segmentation_platform/public/features.cc +@@ -9,8 +9,8 @@ + namespace segmentation_platform::features { + + BASE_FEATURE(kSegmentationPlatformFeature, +- "SegmentationPlatform", +- base::FEATURE_ENABLED_BY_DEFAULT); ++ "SegmentationPlatform", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite + + BASE_FEATURE(kSegmentationStructuredMetricsFeature, + "SegmentationStructuredMetrics", +@@ -34,11 +34,7 @@ BASE_FEATURE(kSegmentationPlatformSearchUser, + + BASE_FEATURE(kSegmentationPlatformFeedSegmentFeature, + "SegmentationPlatformFeedSegmentFeature", +-#if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS) +- base::FEATURE_ENABLED_BY_DEFAULT); +-#else + base::FEATURE_DISABLED_BY_DEFAULT); +-#endif + + BASE_FEATURE(kResumeHeavyUserSegmentFeature, + "ResumeHeavyUserSegment", -- 2.25.1 diff --git a/build/patches/Remove-signin-and-sync-integrations.patch b/build/patches/Remove-signin-and-sync-integrations.patch index bc265e06..f169c625 100644 --- a/build/patches/Remove-signin-and-sync-integrations.patch +++ b/build/patches/Remove-signin-and-sync-integrations.patch @@ -19,8 +19,8 @@ ld.lld: error: undefined symbol: notifier::NotifierOptions::NotifierOptions() License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/android/BUILD.gn | 19 -- - chrome/android/chrome_java_sources.gni | 29 --- + chrome/android/BUILD.gn | 21 -- + chrome/android/chrome_java_sources.gni | 30 --- .../features/autofill_assistant/BUILD.gn | 1 - .../AssistantAccessTokenUtilChrome.java | 8 - .../AssistantProfileImageUtilChrome.java | 21 +- @@ -35,18 +35,17 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../java/res/xml/manage_sync_preferences.xml | 12 - .../java/res/xml/privacy_preferences.xml | 4 - .../org/chromium/chrome/browser/AppHooks.java | 34 --- - .../chrome/browser/BackupSigninProcessor.java | 54 ---- .../chrome/browser/ChromeBackupAgentImpl.java | 9 +- .../chrome/browser/ChromeBackupWatcher.java | 10 - .../chrome/browser/ChromeTabbedActivity.java | 9 - .../chrome/browser/app/ChromeActivity.java | 76 ------ .../AutofillAssistantPreferenceFragment.java | 17 +- - .../bookmarks/BookmarkItemsAdapter.java | 56 +---- - .../bookmarks/BookmarkPromoHeader.java | 230 +----------------- - .../ClearBrowsingDataFragment.java | 79 +----- + .../bookmarks/BookmarkItemsAdapter.java | 56 +--- + .../bookmarks/BookmarkPromoHeader.java | 241 +----------------- + .../ClearBrowsingDataFragment.java | 80 +----- .../ClearBrowsingDataFragmentBasic.java | 27 +- .../contacts_picker/ChromePickerAdapter.java | 67 +---- - .../browser/customtabs/CustomTabActivity.java | 6 - + .../browser/customtabs/CustomTabActivity.java | 7 - .../firstrun/FirstRunActivityBase.java | 1 - .../firstrun/LightweightFirstRunActivity.java | 4 +- ...FirstRunFragmentWithEnterpriseSupport.java | 6 - @@ -54,8 +53,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../identity_disc/IdentityDiscController.java | 104 +------- .../init/ChromeBrowserInitializer.java | 2 - .../init/ProcessInitializationHandler.java | 9 - - .../chrome/browser/ntp/RecentTabsManager.java | 109 +-------- - .../browser/ntp/RecentTabsRowAdapter.java | 30 +-- + .../chrome/browser/ntp/RecentTabsManager.java | 129 +--------- + .../browser/ntp/RecentTabsRowAdapter.java | 31 +-- .../browser/ntp/search/SearchBoxMediator.java | 1 - .../browser/omaha/RequestGenerator.java | 3 - .../AccountChooserDialog.java | 2 +- @@ -64,18 +63,20 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../settings/PasswordSettings.java | 71 +----- .../browser/payments/ui/PaymentRequestUI.java | 12 +- .../privacy/settings/PrivacySettings.java | 31 --- - .../chrome/browser/settings/MainSettings.java | 141 +---------- + .../chrome/browser/settings/MainSettings.java | 141 +--------- .../browser/settings/SettingsActivity.java | 9 - .../share/crow/CrowButtonDelegateImpl.java | 5 +- .../survey/ChromeSurveyController.java | 6 +- .../tabbed_mode/TabbedRootUiCoordinator.java | 19 -- - .../browser/tasks/ReturnToChromeUtil.java | 4 - chrome/browser/BUILD.gn | 9 - ...mobile_identity_consistency_field_trial.cc | 15 +- + chrome/browser/commerce/android/BUILD.gn | 2 - + .../PriceNotificationPreferenceFragment.java | 8 +- + .../browser/commerce/ShoppingFeatures.java | 27 +- .../price_tracking/PriceTrackingFeatures.java | 9 +- .../commerce/subscriptions/android/BUILD.gn | 1 - .../CommerceSubscriptionsMetrics.java | 6 +- - .../CommerceSubscriptionsService.java | 14 -- + .../CommerceSubscriptionsService.java | 14 - .../subscriptions/android/java_sources.gni | 1 - chrome/browser/feed/android/BUILD.gn | 1 - .../chrome/browser/feed/FeedFeatures.java | 2 - @@ -85,21 +86,24 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/firstrun/MobileFreProgress.java | 4 +- .../router/discovery/access_code/BUILD.gn | 1 - .../browser/password_manager/android/BUILD.gn | 4 - - ...sswordManagerErrorMessageHelperBridge.java | 22 +- + ...sswordManagerErrorMessageHelperBridge.java | 26 -- .../PasswordManagerHelper.java | 121 +-------- ...swordSyncControllerDelegateBridgeImpl.java | 7 - chrome/browser/privacy/BUILD.gn | 1 - + chrome/browser/privacy_guide/android/BUILD.gn | 2 - + .../res/layout/privacy_guide_msbb_step.xml | 8 - + .../browser/privacy_guide/MSBBFragment.java | 9 - chrome/browser/search_resumption/BUILD.gn | 4 - .../SearchResumptionModuleMediator.java | 37 +-- .../SearchResumptionModuleUtils.java | 12 - .../ManageAccountDevicesLinkView.java | 26 +- - .../SendTabToSelfCoordinator.java | 151 ------------ + .../SendTabToSelfCoordinator.java | 151 ----------- .../account_consistency_mode_manager.cc | 7 +- .../signin/identity_manager_factory.cc | 5 - .../identity_services_provider_android.cc | 13 - .../services/IdentityServicesProvider.java | 13 - chrome/browser/supervised_user/BUILD.gn | 1 - - .../WebsiteApprovalMediator.java | 23 -- + .../WebsiteApprovalMediator.java | 24 -- chrome/browser/sync/sync_service_factory.cc | 12 +- chrome/browser/ui/android/omnibox/BUILD.gn | 2 - .../browser/omnibox/LocationBarMediator.java | 1 - @@ -107,9 +111,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../signin/ConfirmSyncDataStateMachine.java | 16 +- .../ui/signin/SignOutDialogCoordinator.java | 34 +-- .../ui/signin/SyncConsentFragmentBase.java | 53 +--- + .../ui/signin/SyncPromoController.java | 15 +- .../WebSigninAccountPickerDelegate.java | 23 -- - .../ui/signin/fre/SigninFirstRunMediator.java | 71 +----- - .../strings/android_chrome_strings.grd | 3 - + .../ui/signin/fre/SigninFirstRunMediator.java | 62 +---- + .../strings/android_chrome_strings.grd | 18 -- .../core/browser/leak_detection_delegate.cc | 2 +- .../core/browser/password_form_manager.cc | 34 +-- .../browser/password_manager_client_helper.cc | 43 +--- @@ -121,7 +126,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../ProfileOAuth2TokenServiceDelegate.java | 52 ---- .../net/HttpNegotiateAuthenticator.java | 88 +------ .../chromoting/base/OAuthTokenFetcher.java | 2 - - 102 files changed, 92 insertions(+), 2606 deletions(-) + 107 files changed, 99 insertions(+), 2660 deletions(-) diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn @@ -158,7 +163,15 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/ui/android/theme:java", "//chrome/browser/ui/android/toolbar:java", "//chrome/browser/ui/messages/android:java", -@@ -1065,9 +1060,6 @@ if (current_toolchain == default_toolchain) { +@@ -618,7 +613,6 @@ if (current_toolchain == default_toolchain) { + "//components/strictmode/android:java", + "//components/stylus_handwriting/android:java", + "//components/subresource_filter/android:java", +- "//components/sync/android:sync_java", + "//components/sync/protocol:protocol_java", + "//components/sync_device_info:sync_device_info_java", + "//components/thin_webview:factory_java", +@@ -1065,9 +1059,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/search_resumption:junit", "//chrome/browser/segmentation_platform:factory_java", "//chrome/browser/share:java", @@ -168,7 +181,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/tab:java", "//chrome/browser/tab:junit", "//chrome/browser/tab_group:java", -@@ -1099,8 +1091,6 @@ if (current_toolchain == default_toolchain) { +@@ -1099,8 +1090,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/ui/android/omnibox:junit", "//chrome/browser/ui/android/quickactionsearchwidget:java", "//chrome/browser/ui/android/searchactivityutils:java", @@ -177,7 +190,15 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/ui/android/theme:java", "//chrome/browser/ui/android/toolbar:java", "//chrome/browser/ui/android/toolbar:junit", -@@ -1608,11 +1598,8 @@ if (current_toolchain == default_toolchain) { +@@ -1191,7 +1180,6 @@ if (current_toolchain == default_toolchain) { + "//components/signin/core/browser:signin_enums_java", + "//components/signin/public/android:java", + "//components/signin/public/android:signin_java_test_support", +- "//components/sync/android:sync_java", + "//components/sync_device_info:sync_device_info_java", + "//components/translate/content/android:junit", + "//components/ukm/android:java", +@@ -1608,10 +1596,8 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/settings:test_support_java", "//chrome/browser/share:java", "//chrome/browser/share/android:java_resources", @@ -185,11 +206,10 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/supervised_user:javatests", "//chrome/browser/supervised_user:test_support_java", - "//chrome/browser/sync/android:java", -- "//chrome/browser/sync/test/android:test_support_java", + "//chrome/browser/sync/test/android:test_support_java", "//chrome/browser/tab:critical_persisted_tab_data_flatbuffer_java", "//chrome/browser/tab:critical_persisted_tab_data_proto_java", - "//chrome/browser/tab:java", -@@ -1638,8 +1625,6 @@ if (current_toolchain == default_toolchain) { +@@ -1638,8 +1624,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/ui/android/quickactionsearchwidget:java", "//chrome/browser/ui/android/quickactionsearchwidget:javatests", "//chrome/browser/ui/android/searchactivityutils:java", @@ -198,7 +218,15 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/ui/android/theme:java", "//chrome/browser/ui/android/toolbar:java", "//chrome/browser/ui/messages/android:java", -@@ -2451,7 +2436,6 @@ if (current_toolchain == default_toolchain) { +@@ -1756,7 +1740,6 @@ if (current_toolchain == default_toolchain) { + "//components/signin/public/android:java", + "//components/signin/public/android:signin_java_test_support", + "//components/site_engagement/content/android:java", +- "//components/sync/android:sync_java", + "//components/sync/protocol:protocol_java", + "//components/sync_device_info:sync_device_info_java", + "//components/url_formatter/android:url_formatter_java", +@@ -2451,7 +2434,6 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/download/android:java", "//chrome/browser/prefetch/android:java", "//chrome/browser/profiles/android:java", @@ -206,7 +234,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/tab:java", "//components/offline_items_collection/core:core_java", "//components/sync/protocol:protocol_java", -@@ -3157,13 +3141,11 @@ if (current_toolchain == default_toolchain) { +@@ -3157,13 +3139,11 @@ if (current_toolchain == default_toolchain) { "//chrome/browser/optimization_guide/android:unit_device_javatests", "//chrome/browser/partnercustomizations:unit_device_javatests", "//chrome/browser/password_edit_dialog/android:unit_device_javatests", @@ -220,7 +248,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn "//chrome/browser/ui/messages/android:unit_device_javatests", "//chrome/browser/user_education:unit_device_javatests", "//chrome/browser/video_tutorials/internal:unit_device_javatests", -@@ -4138,7 +4120,6 @@ generate_jni("chrome_jni_headers") { +@@ -4138,7 +4118,6 @@ generate_jni("chrome_jni_headers") { "java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardMessageHandler.java", "java/src/org/chromium/chrome/browser/sharing/sms_fetcher/SmsFetcherMessageHandler.java", "java/src/org/chromium/chrome/browser/signin/SigninBridge.java", @@ -231,7 +259,15 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn 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 -@@ -604,14 +604,11 @@ chrome_java_sources = [ +@@ -11,7 +11,6 @@ chrome_java_sources = [ + "java/src/org/chromium/chrome/browser/AppIndexingUtil.java", + "java/src/org/chromium/chrome/browser/ApplicationLifetime.java", + "java/src/org/chromium/chrome/browser/BackPressHelper.java", +- "java/src/org/chromium/chrome/browser/BackupSigninProcessor.java", + "java/src/org/chromium/chrome/browser/BrowserRestartActivity.java", + "java/src/org/chromium/chrome/browser/ChromeActionModeHandler.java", + "java/src/org/chromium/chrome/browser/ChromeActivitySessionTracker.java", +@@ -604,14 +603,11 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/firstrun/FirstRunPage.java", "java/src/org/chromium/chrome/browser/firstrun/FirstRunPageDelegate.java", "java/src/org/chromium/chrome/browser/firstrun/FirstRunPagerAdapter.java", @@ -246,7 +282,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/org/chromium/chrome/browser/firstrun/TabbedModeFirstRunActivity.java", "java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java", "java/src/org/chromium/chrome/browser/firstrun/TosAndUmaFirstRunFragmentWithEnterpriseSupport.java", -@@ -815,7 +812,6 @@ chrome_java_sources = [ +@@ -815,7 +811,6 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/ntp/RevampedIncognitoDescriptionView.java", "java/src/org/chromium/chrome/browser/ntp/SnapScrollHelperImpl.java", "java/src/org/chromium/chrome/browser/ntp/TitleUtil.java", @@ -254,7 +290,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/org/chromium/chrome/browser/ntp/search/SearchBoxContainerView.java", "java/src/org/chromium/chrome/browser/ntp/search/SearchBoxCoordinator.java", "java/src/org/chromium/chrome/browser/ntp/search/SearchBoxMediator.java", -@@ -1023,14 +1019,6 @@ chrome_java_sources = [ +@@ -1023,14 +1018,6 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/sharing/click_to_call/ClickToCallUma.java", "java/src/org/chromium/chrome/browser/sharing/shared_clipboard/SharedClipboardMessageHandler.java", "java/src/org/chromium/chrome/browser/sharing/sms_fetcher/SmsFetcherMessageHandler.java", @@ -269,7 +305,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/org/chromium/chrome/browser/site_settings/ChromeSiteSettingsDelegate.java", "java/src/org/chromium/chrome/browser/site_settings/CookieControlsServiceBridge.java", "java/src/org/chromium/chrome/browser/site_settings/ManageSpaceActivity.java", -@@ -1071,23 +1059,6 @@ chrome_java_sources = [ +@@ -1071,23 +1058,6 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/survey/ChromeSurveyController.java", "java/src/org/chromium/chrome/browser/survey/SurveyController.java", "java/src/org/chromium/chrome/browser/survey/SurveyHttpClientBridge.java", @@ -885,73 +921,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/AppHooks.java b /** * This is deprecated, and should not be called. Use FeedHooks instead. */ -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/BackupSigninProcessor.java b/chrome/android/java/src/org/chromium/chrome/browser/BackupSigninProcessor.java ---- a/chrome/android/java/src/org/chromium/chrome/browser/BackupSigninProcessor.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/BackupSigninProcessor.java -@@ -37,63 +37,9 @@ public final class BackupSigninProcessor { - * @param activity The current activity. - */ - public static void start(final Activity activity) { -- // Warning, another layer relies on SigninManager being instantiated at this moment, don't -- // move this call around. -- // TODO(crbug.com/1336196): Delete comment above once the dependency is gone. -- SigninManager signinManager = IdentityServicesProvider.get().getSigninManager( -- Profile.getLastUsedRegularProfile()); -- final String accountName = getBackupFlowSigninAccountName(); -- if (!signinManager.isSyncOptInAllowed() || TextUtils.isEmpty(accountName)) { -- setBackupFlowSigninComplete(); -- return; -- } -- -- final AccountManagerFacade accountManagerFacade = -- AccountManagerFacadeProvider.getInstance(); -- accountManagerFacade.getAccounts().then(accounts -> { -- AccountUtils.checkChildAccountStatus( -- accountManagerFacade, accounts, (isChild, unused) -> { -- if (isChild) { -- // TODO(crbug.com/1318350): Pre-AllowSyncOffForChildAccounts, the backup -- // sign-in for child accounts would happen in SigninChecker anyways. -- // Maybe it should be handled by this class once the feature launches. -- setBackupFlowSigninComplete(); -- return; -- } -- -- Account account = AccountUtils.findAccountByName(accounts, accountName); -- if (account == null) { -- setBackupFlowSigninComplete(); -- return; -- } -- -- signinAndEnableSync(account, activity); -- }); -- }); - } - - private static void signinAndEnableSync(@NonNull Account account, Activity activity) { -- IdentityServicesProvider.get() -- .getSigninManager(Profile.getLastUsedRegularProfile()) -- .signinAndEnableSync(SigninAccessPoint.POST_DEVICE_RESTORE_BACKGROUND_SIGNIN, -- account, new SignInCallback() { -- @Override -- public void onSignInComplete() { -- UnifiedConsentServiceBridge -- .setUrlKeyedAnonymizedDataCollectionEnabled( -- Profile.getLastUsedRegularProfile(), true); -- SyncService.get().setFirstSetupComplete( -- SyncFirstSetupCompleteSource.ANDROID_BACKUP_RESTORE); -- setBackupFlowSigninComplete(); -- } -- -- @Override -- public void onSignInAborted() { -- // If sign-in failed, give up and mark as complete. -- // TODO(crbug.com/1371130): Measure how often this happens. -- setBackupFlowSigninComplete(); -- } -- }); - } - - /** diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackupAgentImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackupAgentImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackupAgentImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeBackupAgentImpl.java @@ -1412,10 +1381,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java --- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java -@@ -14,249 +14,21 @@ import androidx.annotation.VisibleForTesting; - import androidx.recyclerview.widget.RecyclerView; - import androidx.recyclerview.widget.RecyclerView.ViewHolder; +@@ -5,258 +5,19 @@ + package org.chromium.chrome.browser.bookmarks; + import android.content.Context; +-import android.view.LayoutInflater; +-import android.view.View; +-import android.view.ViewGroup; +- +-import androidx.annotation.Nullable; +-import androidx.annotation.VisibleForTesting; +-import androidx.recyclerview.widget.RecyclerView; +-import androidx.recyclerview.widget.RecyclerView.ViewHolder; +- -import org.chromium.chrome.R; -import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; -import org.chromium.chrome.browser.preferences.SharedPreferencesManager; @@ -1435,7 +1413,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm -import org.chromium.components.signin.AccountsChangeObserver; -import org.chromium.components.signin.identitymanager.ConsentLevel; -import org.chromium.components.signin.metrics.SigninAccessPoint; -- + /** * Class that manages all the logic and UI behind the signin promo header in the bookmark * content UI. The header is shown only on certain situations, (e.g., not signed in). @@ -1443,9 +1421,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm -public class BookmarkPromoHeader implements SyncService.SyncStateChangedListener, - SignInStateObserver, ProfileDataCache.Observer, - AccountsChangeObserver { -- // TODO(kkimlabs): Figure out the optimal number based on UMA data. -- private static final int MAX_SIGNIN_AND_SYNC_PROMO_SHOW_COUNT = 10; -- ++public class BookmarkPromoHeader { + // TODO(kkimlabs): Figure out the optimal number based on UMA data. + private static final int MAX_SIGNIN_AND_SYNC_PROMO_SHOW_COUNT = 10; + - private static @Nullable @SyncPromoState Integer sPromoStateForTests; - - private final Context mContext; @@ -1458,7 +1437,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm - private @SyncPromoState int mPromoState = SyncPromoState.NO_PROMO; - private final @Nullable SyncService mSyncService; - -+public class BookmarkPromoHeader { /** * Initializes the class. Note that this will start listening to signin related events and * update itself if needed. @@ -1487,12 +1465,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm - mSyncPromoController = null; - } - updatePromoState(); - } - - /** - * Clean ups the class. Must be called once done using this class. - */ - void destroy() { +- } +- +- /** +- * Clean ups the class. Must be called once done using this class. +- */ +- void destroy() { - if (mSyncService != null) mSyncService.removeSyncStateChangedListener(this); - - if (mSyncPromoController != null) { @@ -1711,16 +1689,19 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C List options = getDialogOptions(); mItems = new Item[options.size()]; for (int i = 0; i < options.size(); i++) { -@@ -592,8 +580,6 @@ public abstract class ClearBrowsingDataFragment extends PreferenceFragmentCompat - - // Text for sign-out option. - updateSignOutOfChromeText(); +@@ -589,11 +577,6 @@ public abstract class ClearBrowsingDataFragment extends PreferenceFragmentCompat + assert spinnerOptionIndex != -1; + spinner.setOptions(spinnerOptions, spinnerOptionIndex); + spinner.setOnPreferenceChangeListener(this); +- +- // Text for sign-out option. +- updateSignOutOfChromeText(); - - mSigninManager.addSignInStateObserver(this); } @Override -@@ -639,7 +625,6 @@ public abstract class ClearBrowsingDataFragment extends PreferenceFragmentCompat +@@ -639,7 +622,6 @@ public abstract class ClearBrowsingDataFragment extends PreferenceFragmentCompat for (Item item : mItems) { item.destroy(); } @@ -1728,7 +1709,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C } // We either show the dialog, or modify the current one to display our messages. This avoids -@@ -665,28 +650,7 @@ public abstract class ClearBrowsingDataFragment extends PreferenceFragmentCompat +@@ -665,28 +647,7 @@ public abstract class ClearBrowsingDataFragment extends PreferenceFragmentCompat private void updateSignOutOfChromeText() { ClickableSpansTextMessagePreference signOutOfChromeTextPref = findPreference(ClearBrowsingDataFragment.PREF_SIGN_OUT_OF_CHROME_TEXT); @@ -1737,7 +1718,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C - signOutOfChromeTextPref.setSummary(buildSignOutOfChromeText()); - signOutOfChromeTextPref.setVisible(true); - } else { -- signOutOfChromeTextPref.setVisible(false); + signOutOfChromeTextPref.setVisible(false); - } - } - @@ -1754,11 +1735,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C - -> SignOutDialogCoordinator.show(requireContext(), - ((ModalDialogManagerHolder) getActivity()).getModalDialogManager(), this, - ActionType.CLEAR_PRIMARY_ACCOUNT, GAIAServiceType.GAIA_SERVICE_TYPE_NONE); -+ signOutOfChromeTextPref.setVisible(false); } /** -@@ -751,43 +715,4 @@ public abstract class ClearBrowsingDataFragment extends PreferenceFragmentCompat +@@ -751,43 +712,4 @@ public abstract class ClearBrowsingDataFragment extends PreferenceFragmentCompat ignoredDomains, ignoredDomainReasons); } } @@ -1997,7 +1977,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contacts_picker diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabActivity.java -@@ -38,7 +38,6 @@ import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabProvid +@@ -28,7 +28,6 @@ import androidx.browser.customtabs.CustomTabsSessionToken; + import org.chromium.base.IntentUtils; + import org.chromium.base.metrics.RecordUserAction; + import org.chromium.chrome.R; +-import org.chromium.chrome.browser.BackupSigninProcessor; + import org.chromium.chrome.browser.LaunchIntentDispatcher; + import org.chromium.chrome.browser.app.metrics.LaunchCauseMetrics; + import org.chromium.chrome.browser.autofill_assistant.AutofillAssistantFacade; +@@ -38,7 +37,6 @@ import org.chromium.chrome.browser.customtabs.content.CustomTabActivityTabProvid import org.chromium.chrome.browser.customtabs.dependency_injection.BaseCustomTabActivityComponent; import org.chromium.chrome.browser.customtabs.features.CustomTabNavigationBarController; import org.chromium.chrome.browser.dependency_injection.ChromeActivityCommonsModule; @@ -2005,7 +1993,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust import org.chromium.chrome.browser.flags.AllCachedFieldTrialParameters; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.fonts.FontPreloader; -@@ -151,11 +150,6 @@ public class CustomTabActivity extends BaseCustomTabActivity { +@@ -151,11 +149,6 @@ public class CustomTabActivity extends BaseCustomTabActivity { @Override public void finishNativeInitialization() { @@ -2376,7 +2364,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessIni 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 -@@ -14,21 +14,11 @@ import org.chromium.chrome.browser.invalidation.SessionsInvalidationManager; +@@ -14,24 +14,11 @@ import org.chromium.chrome.browser.invalidation.SessionsInvalidationManager; import org.chromium.chrome.browser.ntp.ForeignSessionHelper.ForeignSession; import org.chromium.chrome.browser.ntp.ForeignSessionHelper.ForeignSessionTab; import org.chromium.chrome.browser.profiles.Profile; @@ -2395,20 +2383,23 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM -import org.chromium.chrome.browser.ui.signin.SyncPromoController; -import org.chromium.chrome.browser.ui.signin.SyncPromoController.SyncPromoState; -import org.chromium.components.signin.AccountManagerFacadeProvider; - import org.chromium.components.signin.AccountsChangeObserver; - import org.chromium.components.signin.identitymanager.ConsentLevel; - import org.chromium.components.signin.metrics.SigninAccessPoint; -@@ -41,8 +31,7 @@ import java.util.Map; +-import org.chromium.components.signin.AccountsChangeObserver; +-import org.chromium.components.signin.identitymanager.ConsentLevel; +-import org.chromium.components.signin.metrics.SigninAccessPoint; + import org.chromium.url.GURL; + + import java.util.HashMap; +@@ -41,8 +28,7 @@ import java.util.Map; /** * Provides the domain logic and data for RecentTabsPage and RecentTabsRowAdapter. */ -public class RecentTabsManager implements SyncService.SyncStateChangedListener, SignInStateObserver, - ProfileDataCache.Observer, AccountsChangeObserver { -+public class RecentTabsManager implements AccountsChangeObserver { ++public class RecentTabsManager { /** * Implement this to receive updates when the page contents change. */ -@@ -63,21 +52,15 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener, +@@ -63,21 +49,15 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener, private final Runnable mShowHistoryManager; private TabModel mTabModel; @@ -2430,7 +2421,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM /** * Maps Session IDs to whether that entry was restored split by entry type. These are used to * record historgrams on {@link #destroy()} to measure restore ratio. Cached Session IDs are -@@ -108,12 +91,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener, +@@ -108,12 +88,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener, mRecentlyClosedTabManager = sRecentlyClosedTabManagerForTests != null ? sRecentlyClosedTabManagerForTests : new RecentlyClosedBridge(profile, tabModelSelector); @@ -2443,7 +2434,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM mRecentlyClosedTabManager.setEntriesUpdatedRunnable(this::updateRecentlyClosedEntries); updateRecentlyClosedEntries(); -@@ -122,12 +99,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener, +@@ -122,12 +96,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener, updateForeignSessions(); mForeignSessionHelper.triggerSessionSync(); @@ -2456,7 +2447,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM SessionsInvalidationManager.get(mProfile).onRecentTabsPageOpened(); } -@@ -165,14 +136,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener, +@@ -165,14 +133,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener, recordEntries("Group", mGroupSessionIdsRestored); recordEntries("Bulk", mBulkSessionIdsRestored); @@ -2471,18 +2462,29 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM mFaviconHelper.destroy(); mFaviconHelper = null; -@@ -398,7 +361,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener, - */ - public void setPromoCollapsed(boolean isCollapsed) { - if (mIsDestroyed) return; +@@ -391,97 +351,13 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener, + mRecentlyClosedTabManager.clearRecentlyClosedEntries(); + } + +- /** +- * Collapse the promo. +- * +- * @param isCollapsed Whether the promo is collapsed. +- */ +- public void setPromoCollapsed(boolean isCollapsed) { +- if (mIsDestroyed) return; - mPrefs.setSyncPromoCollapsed(isCollapsed); - } - +- } +- /** -@@ -410,80 +372,12 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener, - return mPrefs.getSyncPromoCollapsed(); - } - + * Determine whether the promo is collapsed. + * + * @return Whether the promo is collapsed. + */ + public boolean isPromoCollapsed() { +- return mPrefs.getSyncPromoCollapsed(); +- } +- - /** Returns the current promo state. */ - @SyncPromoState - int getPromoState() { @@ -2539,12 +2541,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM - update(); - } - - // AccountsChangeObserver implementation. - @Override - public void onAccountsChanged() { - update(); - } - +- // AccountsChangeObserver implementation. +- @Override +- public void onAccountsChanged() { +- update(); +- } +- - // ProfileDataCache.Observer implementation. - @Override - public void onProfileDataUpdated(String accountEmail) { @@ -2555,12 +2557,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM - @Override - public void syncStateChanged() { - update(); -- } -- ++ return true; + } + private void onUpdateDone() { - if (mUpdatedCallback != null) { - mUpdatedCallback.onUpdated(); -@@ -491,7 +385,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener, +@@ -491,7 +367,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener, } private void update() { @@ -2583,7 +2584,21 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsR import org.chromium.components.browser_ui.styles.SemanticColorUtils; import org.chromium.components.browser_ui.widget.RoundedIconGenerator; import org.chromium.components.embedder_support.util.UrlUtilities; -@@ -452,14 +450,7 @@ public class RecentTabsRowAdapter extends BaseExpandableListAdapter { +@@ -422,12 +420,11 @@ public class RecentTabsRowAdapter extends BaseExpandableListAdapter { + + @Override + void setCollapsed(boolean isCollapsed) { +- mRecentTabsManager.setPromoCollapsed(isCollapsed); + } + + @Override + boolean isCollapsed() { +- return mRecentTabsManager.isPromoCollapsed(); ++ return true; + } + } + +@@ -452,13 +449,6 @@ public class RecentTabsRowAdapter extends BaseExpandableListAdapter { @Override View getChildView( int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { @@ -2594,12 +2609,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsR - } - mRecentTabsManager.setUpSyncPromoView( - convertView.findViewById(R.id.signin_promo_view_container)); -- return convertView; -+ return null; + return convertView; } } - -@@ -475,9 +466,6 @@ public class RecentTabsRowAdapter extends BaseExpandableListAdapter { +@@ -475,9 +465,6 @@ public class RecentTabsRowAdapter extends BaseExpandableListAdapter { @Override View getChildView( int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { @@ -2609,7 +2622,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsR return convertView; } } -@@ -913,22 +901,6 @@ public class RecentTabsRowAdapter extends BaseExpandableListAdapter { +@@ -913,22 +900,6 @@ public class RecentTabsRowAdapter extends BaseExpandableListAdapter { addGroup(new ForeignSessionGroup(session)); } @@ -3255,7 +3268,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab import org.chromium.chrome.browser.ui.tablet.emptybackground.EmptyBackgroundViewWrapper; import org.chromium.chrome.browser.vr.VrModuleProvider; @@ -915,23 +913,6 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { - return false; + } } - private boolean maybeShowPromo() { @@ -3278,24 +3291,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab @VisibleForTesting public static void setDisableStatusIndicatorAnimationsForTesting(boolean disable) { sDisableStatusIndicatorAnimations = disable; -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 -@@ -900,10 +900,6 @@ public final class ReturnToChromeUtil { - * is a search result page or not. This should be called when Start surface is shown at startup. - */ - public static void recordLastVisitedTabIsSRPWhenOverviewIsShownAtLaunch() { -- RecordHistogram.recordBooleanHistogram( -- LAST_VISITED_TAB_IS_SRP_WHEN_OVERVIEW_IS_SHOWN_AT_LAUNCH_UMA, -- SharedPreferencesManager.getInstance().readBoolean( -- ChromePreferenceKeys.IS_LAST_VISITED_TAB_SRP, false)); - } - - /** diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -2016,7 +2016,6 @@ static_library("browser") { +@@ -2018,7 +2018,6 @@ static_library("browser") { "//chrome/browser/share", "//chrome/browser/sharing:buildflags", "//chrome/browser/sharing/proto", @@ -3303,7 +3302,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "//chrome/browser/storage_access_api:permissions", "//chrome/browser/thumbnail", "//chrome/browser/touch_to_fill", -@@ -2838,8 +2837,6 @@ static_library("browser") { +@@ -2840,8 +2839,6 @@ static_library("browser") { "android/signin/fre_mobile_identity_consistency_field_trial.h", "android/signin/signin_bridge.cc", "android/signin/signin_bridge.h", @@ -3312,7 +3311,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "android/signin/signin_metrics_utils.cc", "android/signin/unified_consent_service_bridge.cc", "android/signin/web_signin_bridge.cc", -@@ -3257,8 +3254,6 @@ static_library("browser") { +@@ -3259,8 +3256,6 @@ static_library("browser") { "sharing/sms/sms_fetch_request_handler.h", "shell_integration_android.cc", "signin/identity_services_provider_android.cc", @@ -3321,7 +3320,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "ssl/chrome_security_state_client.cc", "ssl/chrome_security_state_client.h", "ssl/chrome_security_state_model_delegate.cc", -@@ -4617,10 +4612,6 @@ static_library("browser") { +@@ -4619,10 +4614,6 @@ static_library("browser") { "profiles/profile_statistics_factory.h", "signin/force_signin_verifier.cc", "signin/force_signin_verifier.h", @@ -3367,6 +3366,99 @@ diff --git a/chrome/browser/android/signin/fre_mobile_identity_consistency_field } } // namespace fre_mobile_identity_consistency_field_trial +diff --git a/chrome/browser/commerce/android/BUILD.gn b/chrome/browser/commerce/android/BUILD.gn +--- a/chrome/browser/commerce/android/BUILD.gn ++++ b/chrome/browser/commerce/android/BUILD.gn +@@ -22,8 +22,6 @@ android_library("java") { + "//chrome/browser/notifications:java", + "//chrome/browser/preferences:java", + "//chrome/browser/profiles/android:java", +- "//chrome/browser/signin/services/android:java", +- "//chrome/browser/sync/android:java", + "//components/browser_ui/notifications/android:java", + "//components/browser_ui/settings/android:java", + "//components/commerce/core/android:core_java", +diff --git a/chrome/browser/commerce/android/java/src/org/chromium/chrome/browser/commerce/PriceNotificationPreferenceFragment.java b/chrome/browser/commerce/android/java/src/org/chromium/chrome/browser/commerce/PriceNotificationPreferenceFragment.java +--- a/chrome/browser/commerce/android/java/src/org/chromium/chrome/browser/commerce/PriceNotificationPreferenceFragment.java ++++ b/chrome/browser/commerce/android/java/src/org/chromium/chrome/browser/commerce/PriceNotificationPreferenceFragment.java +@@ -20,14 +20,12 @@ import org.chromium.chrome.browser.notifications.channels.ChromeChannelDefinitio + import org.chromium.chrome.browser.preferences.Pref; + import org.chromium.chrome.browser.preferences.PrefChangeRegistrar; + import org.chromium.chrome.browser.profiles.Profile; +-import org.chromium.chrome.browser.signin.services.IdentityServicesProvider; + import org.chromium.components.browser_ui.notifications.NotificationManagerProxy; + import org.chromium.components.browser_ui.notifications.NotificationManagerProxyImpl; + import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; + import org.chromium.components.browser_ui.settings.SettingsUtils; + import org.chromium.components.browser_ui.settings.TextMessagePreference; + import org.chromium.components.prefs.PrefService; +-import org.chromium.components.signin.identitymanager.ConsentLevel; + import org.chromium.components.user_prefs.UserPrefs; + import org.chromium.ui.text.NoUnderlineClickableSpan; + import org.chromium.ui.text.SpanApplier; +@@ -64,12 +62,8 @@ public class PriceNotificationPreferenceFragment extends PreferenceFragmentCompa + mEmailNotificationsSwitch = + (ChromeSwitchPreference) findPreference(PREF_EMAIL_NOTIFICATIONS); + mEmailNotificationsSwitch.setOnPreferenceChangeListener(this::onPreferenceChange); +- String email = IdentityServicesProvider.get() +- .getIdentityManager(Profile.getLastUsedRegularProfile()) +- .getPrimaryAccountInfo(ConsentLevel.SYNC) +- .getEmail(); + mEmailNotificationsSwitch.setSummary( +- getString(R.string.price_notifications_settings_email_description, email)); ++ getString(R.string.price_notifications_settings_email_description, "nobody@example.com")); + mPrefChangeRegistrar.addObserver( + Pref.PRICE_EMAIL_NOTIFICATIONS_ENABLED, this::updateEmailNotificationSwitch); + updateEmailNotificationSwitch(); +diff --git a/chrome/browser/commerce/android/java/src/org/chromium/chrome/browser/commerce/ShoppingFeatures.java b/chrome/browser/commerce/android/java/src/org/chromium/chrome/browser/commerce/ShoppingFeatures.java +--- a/chrome/browser/commerce/android/java/src/org/chromium/chrome/browser/commerce/ShoppingFeatures.java ++++ b/chrome/browser/commerce/android/java/src/org/chromium/chrome/browser/commerce/ShoppingFeatures.java +@@ -4,39 +4,22 @@ + + package org.chromium.chrome.browser.commerce; + +-import org.chromium.base.FeatureList; +-import org.chromium.chrome.browser.flags.ChromeFeatureList; +-import org.chromium.chrome.browser.preferences.Pref; +-import org.chromium.chrome.browser.profiles.Profile; +-import org.chromium.chrome.browser.signin.services.IdentityServicesProvider; +-import org.chromium.chrome.browser.signin.services.UnifiedConsentServiceBridge; +-import org.chromium.components.prefs.PrefService; +-import org.chromium.components.signin.identitymanager.ConsentLevel; +-import org.chromium.components.user_prefs.UserPrefs; +- + /** Self-documenting feature class for shopping. */ + public class ShoppingFeatures { + /** Returns whether shopping is enabled. */ + public static boolean isShoppingListEnabled() { +- return FeatureList.isInitialized() +- && ChromeFeatureList.isEnabled(ChromeFeatureList.SHOPPING_LIST) && isSignedIn() +- && isAnonymizedUrlDataCollectionEnabled() && isWebAndAppActivityEnabled(); ++ return false; + } + + private static boolean isSignedIn() { +- return IdentityServicesProvider.get() +- .getIdentityManager(Profile.getLastUsedRegularProfile()) +- .hasPrimaryAccount(ConsentLevel.SYNC); ++ return false; + } + + private static boolean isAnonymizedUrlDataCollectionEnabled() { +- return UnifiedConsentServiceBridge.isUrlKeyedAnonymizedDataCollectionEnabled( +- Profile.getLastUsedRegularProfile()); ++ return false; + } + + private static boolean isWebAndAppActivityEnabled() { +- PrefService prefService = UserPrefs.get(Profile.getLastUsedRegularProfile()); +- return prefService != null +- && prefService.getBoolean(Pref.WEB_AND_APP_ACTIVITY_ENABLED_FOR_SHOPPING); ++ return false; + } +-} +\ No newline at end of file ++} diff --git a/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingFeatures.java b/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingFeatures.java --- a/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingFeatures.java +++ b/chrome/browser/commerce/price_tracking/android/java/src/org/chromium/chrome/browser/price_tracking/PriceTrackingFeatures.java @@ -3616,20 +3708,23 @@ diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/p diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridge.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridge.java --- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridge.java +++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridge.java -@@ -16,7 +16,6 @@ import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; +@@ -16,11 +16,7 @@ import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; import org.chromium.chrome.browser.preferences.Pref; import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.chrome.browser.profiles.Profile; -import org.chromium.chrome.browser.signin.services.IdentityServicesProvider; import org.chromium.components.prefs.PrefService; - import org.chromium.components.signin.AccountManagerFacadeProvider; - import org.chromium.components.signin.base.CoreAccountInfo; -@@ -49,14 +48,8 @@ public class PasswordManagerErrorMessageHelperBridge { +-import org.chromium.components.signin.AccountManagerFacadeProvider; +-import org.chromium.components.signin.base.CoreAccountInfo; +-import org.chromium.components.signin.identitymanager.ConsentLevel; + import org.chromium.components.user_prefs.UserPrefs; + import org.chromium.ui.base.WindowAndroid; + +@@ -49,15 +45,6 @@ public class PasswordManagerErrorMessageHelperBridge { */ @CalledByNative static boolean shouldShowErrorUi() { -+ if ((true)) return false; - Profile profile = Profile.getLastUsedRegularProfile(); +- Profile profile = Profile.getLastUsedRegularProfile(); - final CoreAccountInfo primaryAccountInfo = - IdentityServicesProvider.get().getIdentityManager(profile).getPrimaryAccountInfo( - ConsentLevel.SIGNIN); @@ -3637,10 +3732,11 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom - // calling the Google Play Services backend and Chrome receiving the reply. In that - // case, the error is no longer relevant/fixable. - if (primaryAccountInfo == null) return false; - +- if (ChromeFeatureList.getFieldTrialParamByFeatureAsBoolean( ChromeFeatureList.UNIFIED_PASSWORD_MANAGER_ERROR_MESSAGES, -@@ -91,18 +84,5 @@ public class PasswordManagerErrorMessageHelperBridge { + "ignore_auth_error_message_timeouts", false)) { +@@ -91,18 +78,5 @@ public class PasswordManagerErrorMessageHelperBridge { */ @CalledByNative static void startUpdateAccountCredentialsFlow(WindowAndroid windowAndroid) { @@ -3874,6 +3970,68 @@ diff --git a/chrome/browser/privacy/BUILD.gn b/chrome/browser/privacy/BUILD.gn ] sources = [ "java/src/org/chromium/chrome/browser/privacy/secure_dns/SecureDnsBridge.java", +diff --git a/chrome/browser/privacy_guide/android/BUILD.gn b/chrome/browser/privacy_guide/android/BUILD.gn +--- a/chrome/browser/privacy_guide/android/BUILD.gn ++++ b/chrome/browser/privacy_guide/android/BUILD.gn +@@ -21,7 +21,6 @@ android_library("java") { + ":java_resources", + "//chrome/browser/profiles/android:java", + "//chrome/browser/safe_browsing/android:java", +- "//chrome/browser/signin/services/android:java", + "//components/browser_ui/bottomsheet/android:java", + "//components/browser_ui/site_settings/android:java", + "//components/browser_ui/widget/android:java", +@@ -51,7 +50,6 @@ robolectric_library("junit") { + "//base:base_junit_test_support", + "//chrome/browser/profiles/android:java", + "//chrome/browser/safe_browsing/android:java", +- "//chrome/browser/signin/services/android:java", + "//components/browser_ui/bottomsheet/android:java", + "//components/browser_ui/site_settings/android:java", + "//components/browser_ui/widget/android:java", +diff --git a/chrome/browser/privacy_guide/android/java/res/layout/privacy_guide_msbb_step.xml b/chrome/browser/privacy_guide/android/java/res/layout/privacy_guide_msbb_step.xml +--- a/chrome/browser/privacy_guide/android/java/res/layout/privacy_guide_msbb_step.xml ++++ b/chrome/browser/privacy_guide/android/java/res/layout/privacy_guide_msbb_step.xml +@@ -28,14 +28,6 @@ found in the LICENSE file. + android:src="@drawable/privacy_guide_msbb_image" + android:importantForAccessibility="no" /> + +- +- + UnifiedConsentServiceBridge.setUrlKeyedAnonymizedDataCollectionEnabled( +- Profile.getLastUsedRegularProfile(), isChecked)); + } + } diff --git a/chrome/browser/search_resumption/BUILD.gn b/chrome/browser/search_resumption/BUILD.gn --- a/chrome/browser/search_resumption/BUILD.gn +++ b/chrome/browser/search_resumption/BUILD.gn @@ -4014,7 +4172,7 @@ diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/s import org.chromium.components.browser_ui.widget.RoundedCornerImageView; import org.chromium.components.embedder_support.util.UrlConstants; import org.chromium.components.signin.base.AccountInfo; -@@ -73,32 +72,16 @@ public class ManageAccountDevicesLinkView extends LinearLayout { +@@ -73,32 +72,18 @@ public class ManageAccountDevicesLinkView extends LinearLayout { LayoutInflater.from(getContext()) .inflate(R.layout.send_tab_to_self_manage_devices_link, this); @@ -4043,12 +4201,13 @@ diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/s getContext(), this::openManageDevicesPageInNewTab))); linkView.setText(linkText); linkView.setMovementMethod(LinkMovementMethod.getInstance()); -- } else { + } else { - linkView.setText(account.getEmail()); ++ linkView.setText("nobody@example.com"); } } -@@ -116,11 +99,4 @@ public class ManageAccountDevicesLinkView extends LinearLayout { +@@ -116,11 +101,4 @@ public class ManageAccountDevicesLinkView extends LinearLayout { IntentUtils.addTrustedIntentExtras(intent); getContext().startActivity(intent); } @@ -4347,7 +4506,7 @@ diff --git a/chrome/browser/supervised_user/BUILD.gn b/chrome/browser/supervised diff --git a/chrome/browser/supervised_user/android/java/src/org/chromium/chrome/browser/supervised_user/website_approval/WebsiteApprovalMediator.java b/chrome/browser/supervised_user/android/java/src/org/chromium/chrome/browser/supervised_user/website_approval/WebsiteApprovalMediator.java --- a/chrome/browser/supervised_user/android/java/src/org/chromium/chrome/browser/supervised_user/website_approval/WebsiteApprovalMediator.java +++ b/chrome/browser/supervised_user/android/java/src/org/chromium/chrome/browser/supervised_user/website_approval/WebsiteApprovalMediator.java -@@ -5,12 +5,9 @@ +@@ -5,7 +5,6 @@ package org.chromium.chrome.browser.supervised_user.website_approval; import org.chromium.chrome.browser.profiles.Profile; @@ -4355,15 +4514,11 @@ diff --git a/chrome/browser/supervised_user/android/java/src/org/chromium/chrome import org.chromium.components.browser_ui.bottomsheet.BottomSheetController; import org.chromium.components.signin.base.AccountInfo; import org.chromium.components.signin.base.CoreAccountInfo; --import org.chromium.components.signin.identitymanager.ConsentLevel; --import org.chromium.components.signin.identitymanager.IdentityManager; - import org.chromium.ui.modelutil.PropertyModel; - - /** -@@ -44,26 +41,6 @@ class WebsiteApprovalMediator { +@@ -43,28 +42,5 @@ class WebsiteApprovalMediator { + BottomSheetController.StateChangeReason.INTERACTION_COMPLETE); mCompletionCallback.onWebsiteDenied(); }); - +- - // Set the child name. We use the given name if there is one for this account, otherwise we - // use the full account email address. - IdentityManager identityManager = IdentityServicesProvider.get().getIdentityManager( @@ -4384,9 +4539,10 @@ diff --git a/chrome/browser/supervised_user/android/java/src/org/chromium/chrome - } - mModel.set(WebsiteApprovalProperties.CHILD_NAME, childNameProperty); - - // Now show the actual content. - mBottomSheetController.requestShowContent(mSheetContent, true); +- // Now show the actual content. +- mBottomSheetController.requestShowContent(mSheetContent, true); } + } diff --git a/chrome/browser/sync/sync_service_factory.cc b/chrome/browser/sync/sync_service_factory.cc --- a/chrome/browser/sync/sync_service_factory.cc +++ b/chrome/browser/sync/sync_service_factory.cc @@ -4668,6 +4824,31 @@ diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/brows } @Override +diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SyncPromoController.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SyncPromoController.java +--- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SyncPromoController.java ++++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SyncPromoController.java +@@ -114,20 +114,7 @@ public class SyncPromoController { + * @param accessPoint The access point for which the impression limit is being checked. + */ + public static boolean canShowSyncPromo(@AccessPoint int accessPoint) { +- switch (accessPoint) { +- case SigninAccessPoint.BOOKMARK_MANAGER: +- return canShowBookmarkPromo(); +- case SigninAccessPoint.NTP_CONTENT_SUGGESTIONS: +- return canShowNTPPromo(); +- case SigninAccessPoint.RECENT_TABS: +- // There is no impression limit or dismiss button in Recent Tabs promo. +- return true; +- case SigninAccessPoint.SETTINGS: +- return canShowSettingsPromo(); +- default: +- assert false : "Unexpected value for access point: " + accessPoint; +- return false; +- } ++ return false; + } + + private static long getNTPSyncPromoResetAfterMillis() { diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/account_picker/WebSigninAccountPickerDelegate.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/account_picker/WebSigninAccountPickerDelegate.java --- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/account_picker/WebSigninAccountPickerDelegate.java +++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/account_picker/WebSigninAccountPickerDelegate.java @@ -4719,7 +4900,7 @@ diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/brows diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fre/SigninFirstRunMediator.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fre/SigninFirstRunMediator.java --- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fre/SigninFirstRunMediator.java +++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fre/SigninFirstRunMediator.java -@@ -198,15 +198,11 @@ public class SigninFirstRunMediator +@@ -198,10 +198,8 @@ public class SigninFirstRunMediator mModel.set(SigninFirstRunProperties.FRE_POLICY, frePolicy); } @@ -4729,16 +4910,10 @@ diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/brows - mAllowMetricsAndCrashUploading = !isMetricsReportingDisabledByPolicy; + mModel.set(SigninFirstRunProperties.IS_SIGNIN_SUPPORTED, false); + mAllowMetricsAndCrashUploading = false; -+ mModel.set(SigninFirstRunProperties.FOOTER_STRING, ""); -- mModel.set(SigninFirstRunProperties.FOOTER_STRING, -- getFooterString(isMetricsReportingDisabledByPolicy)); - } -- - /** Implements {@link ProfileDataCache.Observer}. */ - @Override - public void onProfileDataUpdated(String accountEmail) { -@@ -305,50 +301,12 @@ public class SigninFirstRunMediator + mModel.set(SigninFirstRunProperties.FOOTER_STRING, + getFooterString(isMetricsReportingDisabledByPolicy)); +@@ -305,41 +303,6 @@ public class SigninFirstRunMediator TextUtils.equals(mDefaultAccountName, mSelectedAccountName) ? MobileFreProgress.WELCOME_SIGNIN_WITH_DEFAULT_ACCOUNT : MobileFreProgress.WELCOME_SIGNIN_WITH_NON_DEFAULT_ACCOUNT); @@ -4780,21 +4955,10 @@ diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/brows } /** - * Callback for the PropertyKey {@link SigninFirstRunProperties#ON_DISMISS_CLICKED}. - */ - private void onDismissClicked() { -- if (isContinueOrDismissClicked()) return; -- assert !mModel.get(SigninFirstRunProperties.SHOW_INITIAL_LOAD_PROGRESS_SPINNER) -- : "The dismiss button shouldn't be visible while the load spinner is shown!"; +@@ -368,26 +331,9 @@ public class SigninFirstRunMediator - if (mDelegate.getNativeInitializationPromise().isFulfilled()) { - handleDismissWithNative(); -@@ -366,28 +324,7 @@ public class SigninFirstRunMediator - - assert mDelegate.getNativeInitializationPromise().isFulfilled(); - -- mDelegate.recordFreProgressHistogram(MobileFreProgress.WELCOME_DISMISS); -- mDelegate.acceptTermsOfService(mAllowMetricsAndCrashUploading); + mDelegate.recordFreProgressHistogram(MobileFreProgress.WELCOME_DISMISS); + mDelegate.acceptTermsOfService(mAllowMetricsAndCrashUploading); - SigninPreferencesManager.getInstance().temporarilySuppressNewTabPagePromos(); - if (IdentityServicesProvider.get() - .getIdentityManager(Profile.getLastUsedRegularProfile()) @@ -4805,7 +4969,7 @@ diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/brows - // FirstRunActivity was destroyed while we were waiting for the sign-out. - return; - } -- + - mDelegate.advanceToNextPage(); - }; - IdentityServicesProvider.get() @@ -4815,6 +4979,7 @@ diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/brows - } else { - mDelegate.advanceToNextPage(); - } ++ // Bromite: there is no identity provider, always advance to next page + mDelegate.advanceToNextPage(); } @@ -4832,6 +4997,28 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Sync and personalize across devices +@@ -396,21 +393,6 @@ CHAR_LIMIT guidelines: + + Because the preloaded pages are encrypted, Google will not learn anything about the preloaded page content. Google servers will learn which sites are privately preloaded. This information is only used to preload the pages, and is not linked to other information from your Google Account. + +- +- Make searches and browsing better +- +- +- Sends URLs of pages you visit to Google +- +- +- For more settings that relate to privacy, security, and data collection, see <link>Sync and Google services</link> +- +- +- For more settings that relate to privacy, security, and data collection, see <link1>Sync</link1> and <link2>Google services</link2> +- +- +- For more settings that relate to privacy, security, and data collection, see <link>Google services</link> +- + + + diff --git a/components/password_manager/core/browser/leak_detection_delegate.cc b/components/password_manager/core/browser/leak_detection_delegate.cc --- a/components/password_manager/core/browser/leak_detection_delegate.cc +++ b/components/password_manager/core/browser/leak_detection_delegate.cc diff --git a/build/patches/Remove-voice-recognition-integration.patch b/build/patches/Remove-voice-recognition-integration.patch index e5b5a4f9..3813669d 100644 --- a/build/patches/Remove-voice-recognition-integration.patch +++ b/build/patches/Remove-voice-recognition-integration.patch @@ -474,7 +474,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java -@@ -90,7 +90,6 @@ import org.chromium.chrome.browser.omnibox.OverrideUrlLoadingDelegate; +@@ -89,7 +89,6 @@ import org.chromium.chrome.browser.omnibox.OverrideUrlLoadingDelegate; import org.chromium.chrome.browser.omnibox.SearchEngineLogoUtils; import org.chromium.chrome.browser.omnibox.UrlFocusChangeListener; import org.chromium.chrome.browser.omnibox.suggestions.OmniboxPedalDelegate; @@ -482,7 +482,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar import org.chromium.chrome.browser.page_info.ChromePageInfo; import org.chromium.chrome.browser.partnercustomizations.PartnerBrowserCustomizations; import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl; -@@ -2059,11 +2058,6 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve +@@ -2073,11 +2072,6 @@ public class ToolbarManager implements UrlFocusChangeListener, ThemeColorObserve return mLocationBar.getOmniboxStub(); } @@ -497,7 +497,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java -@@ -89,8 +89,6 @@ import org.chromium.chrome.browser.messages.MessagesResourceMapperInitializer; +@@ -90,8 +90,6 @@ import org.chromium.chrome.browser.messages.MessagesResourceMapperInitializer; import org.chromium.chrome.browser.omnibox.OmniboxFocusReason; import org.chromium.chrome.browser.omnibox.geo.GeolocationHeader; import org.chromium.chrome.browser.omnibox.suggestions.OmniboxPedalDelegate; @@ -506,7 +506,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.paint_preview.DemoPaintPreview; import org.chromium.chrome.browser.preferences.SharedPreferencesManager; import org.chromium.chrome.browser.profiles.Profile; -@@ -272,7 +270,6 @@ public class RootUiCoordinator +@@ -271,7 +269,6 @@ public class RootUiCoordinator protected OneshotSupplierImpl mPromoShownOneshotSupplier = new OneshotSupplierImpl<>(); protected Supplier mStartSurfaceParentTabSupplier; @Nullable @@ -514,7 +514,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi private MediaCaptureOverlayController mCaptureController; private @Nullable ScrollCaptureManager mScrollCaptureManager; protected final ActivityLifecycleDispatcher mActivityLifecycleDispatcher; -@@ -547,9 +544,6 @@ public class RootUiCoordinator +@@ -546,9 +543,6 @@ public class RootUiCoordinator } if (mToolbarManager != null) { @@ -524,7 +524,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi mToolbarManager.destroy(); mToolbarManager = null; } -@@ -1097,19 +1091,11 @@ public class RootUiCoordinator +@@ -1091,19 +1085,11 @@ public class RootUiCoordinator new VoiceToolbarButtonController.VoiceSearchDelegate() { @Override public boolean isVoiceSearchEnabled() { @@ -545,7 +545,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi } }; VoiceToolbarButtonController voiceToolbarButtonController = -@@ -1164,13 +1150,6 @@ public class RootUiCoordinator +@@ -1153,13 +1139,6 @@ public class RootUiCoordinator if (!mSupportsAppMenuSupplier.getAsBoolean()) { mToolbarManager.getToolbar().disableMenuButton(); } diff --git a/build/patches/Restore-Search-Ready-Omnibox-flag.patch b/build/patches/Restore-Search-Ready-Omnibox-flag.patch index 2e849d7f..488764e2 100644 --- a/build/patches/Restore-Search-Ready-Omnibox-flag.patch +++ b/build/patches/Restore-Search-Ready-Omnibox-flag.patch @@ -22,7 +22,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 -@@ -9079,6 +9079,9 @@ const FeatureEntry kFeatureEntries[] = { +@@ -9078,6 +9078,9 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kPervasiveSystemAccentColorDescription, kOsWin, SINGLE_VALUE_TYPE(switches::kPervasiveSystemAccentColor)}, #endif @@ -78,7 +78,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio 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 -@@ -272,6 +272,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -263,6 +263,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kReachedCodeProfiler, &kReaderModeInCCT, &kReengagementNotification, @@ -86,28 +86,28 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse &kRelatedSearches, &kRelatedSearchesAlternateUx, &kRelatedSearchesInBar, -@@ -955,6 +956,10 @@ BASE_FEATURE(kShareButtonInTopToolbar, - "ShareButtonInTopToolbar", +@@ -830,6 +831,10 @@ BASE_FEATURE(kOmniboxModernizeVisualUpdate, + "OmniboxModernizeVisualUpdate", base::FEATURE_DISABLED_BY_DEFAULT); +BASE_FEATURE(kSearchReadyOmniboxFeature, + "SearchReadyOmnibox", + base::FEATURE_DISABLED_BY_DEFAULT); + - BASE_FEATURE(kShowScrollableMVTOnNTPAndroid, - "ShowScrollableMVTOnNTPAndroid", + BASE_FEATURE(kOptimizeGeolocationHeaderGeneration, + "OptimizeGeolocationHeaderGeneration", base::FEATURE_DISABLED_BY_DEFAULT); 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 -@@ -142,6 +142,7 @@ BASE_DECLARE_FEATURE(kRequestDesktopSiteDefaultsDowngrade); - BASE_DECLARE_FEATURE(kSearchEnginePromoExistingDevice); - BASE_DECLARE_FEATURE(kSearchEnginePromoExistingDeviceV2); +@@ -136,6 +136,7 @@ BASE_DECLARE_FEATURE(kSearchEnginePromoExistingDeviceV2); BASE_DECLARE_FEATURE(kSearchEnginePromoNewDevice); -+BASE_DECLARE_FEATURE(kSearchReadyOmniboxFeature); BASE_DECLARE_FEATURE(kSearchEnginePromoNewDeviceV2); BASE_DECLARE_FEATURE(kShareButtonInTopToolbar); ++BASE_DECLARE_FEATURE(kSearchReadyOmniboxFeature); BASE_DECLARE_FEATURE(kSharingHubLinkToggle); + BASE_DECLARE_FEATURE(kShowScrollableMVTOnNTPAndroid); + BASE_DECLARE_FEATURE(kFeedPositionAndroid); 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 @@ -122,14 +122,14 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/DropdownItemViewInfoListBuilder.java -@@ -15,6 +15,7 @@ import androidx.annotation.VisibleForTesting; +@@ -13,6 +13,7 @@ import androidx.annotation.Nullable; + import androidx.annotation.Px; + import androidx.annotation.VisibleForTesting; ++import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.base.supplier.Supplier; import org.chromium.chrome.browser.omnibox.OmniboxFeatures; -+import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.omnibox.UrlBarEditingTextStateProvider; - import org.chromium.chrome.browser.omnibox.suggestions.answer.AnswerSuggestionProcessor; - import org.chromium.chrome.browser.omnibox.suggestions.basic.BasicSuggestionProcessor; @@ -64,6 +65,7 @@ class DropdownItemViewInfoListBuilder { @Px private int mDropdownHeight; diff --git a/build/patches/Restore-Simplified-NTP-launch.patch b/build/patches/Restore-Simplified-NTP-launch.patch index b2e055ee..c43a2a92 100644 --- a/build/patches/Restore-Simplified-NTP-launch.patch +++ b/build/patches/Restore-Simplified-NTP-launch.patch @@ -41,7 +41,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -540,6 +540,7 @@ chrome_java_sources = [ +@@ -539,6 +539,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/feedback/FeedFeedbackCollector.java", "java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherImpl.java", "java/src/org/chromium/chrome/browser/feedback/ScreenshotTask.java", @@ -318,7 +318,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/Sug 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 -@@ -4952,6 +4952,9 @@ const FeatureEntry kFeatureEntries[] = { +@@ -4951,6 +4951,9 @@ const FeatureEntry kFeatureEntries[] = { SINGLE_VALUE_TYPE_AND_VALUE( switches::kForceShowUpdateMenuItemCustomSummary, "Custom Summary")}, @@ -357,7 +357,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio 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 -@@ -250,6 +250,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -241,6 +241,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kIncognitoReauthenticationForAndroid, &kIncognitoScreenshot, &kInfobarScrollOptimization, @@ -365,7 +365,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse &kInstanceSwitcher, &kInstantStart, &kIsVoiceSearchEnabledCache, -@@ -853,6 +854,10 @@ BASE_FEATURE(kInstanceSwitcher, +@@ -813,6 +814,10 @@ BASE_FEATURE(kInstanceSwitcher, "InstanceSwitcher", base::FEATURE_ENABLED_BY_DEFAULT); @@ -379,7 +379,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 -@@ -119,6 +119,7 @@ BASE_DECLARE_FEATURE(kOmahaMinSdkVersionAndroid); +@@ -112,6 +112,7 @@ BASE_DECLARE_FEATURE(kOmahaMinSdkVersionAndroid); BASE_DECLARE_FEATURE(kOmniboxModernizeVisualUpdate); BASE_DECLARE_FEATURE(kOptimizeGeolocationHeaderGeneration); BASE_DECLARE_FEATURE(kPageAnnotationsService); @@ -390,7 +390,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 -@@ -412,6 +412,7 @@ public abstract class ChromeFeatureList { +@@ -413,6 +413,7 @@ public abstract class ChromeFeatureList { public static final String MESSAGES_FOR_ANDROID_ADS_BLOCKED = "MessagesForAndroidAdsBlocked"; public static final String MESSAGES_FOR_ANDROID_CHROME_SURVEY = "MessagesForAndroidChromeSurvey"; diff --git a/build/patches/Restore-adaptive-button-in-top-toolbar-customization.patch b/build/patches/Restore-adaptive-button-in-top-toolbar-customization.patch new file mode 100644 index 00000000..0fa5b412 --- /dev/null +++ b/build/patches/Restore-adaptive-button-in-top-toolbar-customization.patch @@ -0,0 +1,287 @@ +From: csagan5 <32685696+csagan5@users.noreply.github.com> +Date: Wed, 7 Dec 2022 20:32:15 +0100 +Subject: Restore adaptive-button-in-top-toolbar-customization + +This reverts commit 18d03b9cca4e90d2a446ea28266876d8c5fdc4f0. +Voice button and legacy share/voice functionality is not restored. + +License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html +--- + .../chrome/browser/settings/MainSettings.java | 5 +- + .../browser/share/ShareButtonController.java | 37 +++++++++++ + chrome/browser/about_flags.cc | 6 -- + chrome/browser/flag-metadata.json | 3 +- + .../AdaptiveToolbarButtonController.java | 6 +- + .../adaptive/AdaptiveToolbarFeatures.java | 63 +++++++++++++++++++ + .../AdaptiveToolbarStatePredictor.java | 7 ++- + .../AdaptiveToolbarStatePredictorTest.java | 15 +++++ + 8 files changed, 132 insertions(+), 10 deletions(-) + +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java +@@ -39,6 +39,7 @@ import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher; + import org.chromium.chrome.browser.preferences.Pref; + import org.chromium.chrome.browser.profiles.Profile; + import org.chromium.chrome.browser.search_engines.TemplateUrlServiceFactory; ++import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarFeatures; + import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarStatePredictor; + import org.chromium.chrome.browser.tracing.settings.DeveloperSettings; + import org.chromium.components.browser_ui.settings.ChromeBasePreference; +@@ -167,7 +168,9 @@ public class MainSettings extends PreferenceFragmentCompat + + new AdaptiveToolbarStatePredictor(null).recomputeUiState(uiState -> { + // We don't show the toolbar shortcut settings page if disabled from finch. +- if (uiState.canShowUi) return; ++ // Note, we can still have the old data collection experiment running for which ++ // |canShowUi| might be true. In that case, just hide the settings page. ++ if (uiState.canShowUi && !AdaptiveToolbarFeatures.isSingleVariantModeEnabled()) return; + getPreferenceScreen().removePreference(findPreference(PREF_TOOLBAR_SHORTCUT)); + }); + } +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareButtonController.java b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareButtonController.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/share/ShareButtonController.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/share/ShareButtonController.java +@@ -95,6 +95,43 @@ public class ShareButtonController extends BaseButtonDataProvider { + return mShareUtils.shouldEnableShare(tab); + } + ++/* @Override ++ public ButtonData get(Tab tab) { ++ updateButtonVisibility(tab); ++ maybeSetIphCommandBuilder(tab); ++ return mButtonData; ++ } ++ ++ private void updateButtonVisibility(Tab tab) { ++ if (tab == null || tab.getWebContents() == null || mTabProvider == null ++ || mTabProvider.get() == null || !isFeatureEnabled()) { ++ mButtonData.setCanShow(false); ++ return; ++ } ++ ++ final boolean isDeviceWideEnough = ++ mScreenWidthDp >= AdaptiveToolbarFeatures.getDeviceMinimumWidthForShowingButton(); ++ if (mShareDelegateSupplier.get() == null || !isDeviceWideEnough) { ++ mButtonData.setCanShow(false); ++ return; ++ } ++ ++ mButtonData.setCanShow(mShareUtils.shouldEnableShare(tab)); ++ } ++ ++ private static boolean isFeatureEnabled() { ++ return (AdaptiveToolbarFeatures.isSingleVariantModeEnabled() ++ && AdaptiveToolbarFeatures.getSingleVariantMode() ++ == AdaptiveToolbarButtonVariant.SHARE) ++ || AdaptiveToolbarFeatures.isCustomizationEnabled(); ++ } ++ ++ private void notifyObservers(boolean hint) { ++ for (ButtonDataObserver observer : mObservers) { ++ observer.buttonDataChanged(hint); ++ } ++ } */ ++ + /** + * Returns an IPH for this button. Only called once native is initialized and when {@code + * AdaptiveToolbarFeatures.isCustomizationEnabled()} is true. +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 +@@ -571,18 +571,12 @@ const FeatureEntry::FeatureParam kAdaptiveButtonCustomization_Share[] = { + {"default_segment", "share"}, + {"show_ui_only_after_ready", "false"}, + {"ignore_segmentation_results", "true"}}; +-const FeatureEntry::FeatureParam kAdaptiveButtonCustomization_Voice[] = { +- {"default_segment", "voice"}, +- {"show_ui_only_after_ready", "false"}, +- {"ignore_segmentation_results", "true"}}; + const FeatureEntry::FeatureVariation + kAdaptiveButtonInTopToolbarCustomizationVariations[] = { + {"New Tab", kAdaptiveButtonCustomization_NewTab, + std::size(kAdaptiveButtonCustomization_NewTab), nullptr}, + {"Share", kAdaptiveButtonCustomization_Share, + std::size(kAdaptiveButtonCustomization_Share), nullptr}, +- {"Voice", kAdaptiveButtonCustomization_Voice, +- std::size(kAdaptiveButtonCustomization_Voice), nullptr}, + }; + + const FeatureEntry::FeatureParam kContextualPageActionPriceTracking_Quiet[] = { +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 +@@ -54,9 +54,10 @@ + "expiry_milestone": 99 + }, + { ++ // restored in Bromite + "name": "adaptive-button-in-top-toolbar-customization", + "owners": [ "shaktisahu", "chrome-segmentation-platform@google.com" ], +- "expiry_milestone": 107 ++ "expiry_milestone": -1 + }, + { + "name": "adaptive-charging", +diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java +--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java ++++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarButtonController.java +@@ -234,7 +234,11 @@ public class AdaptiveToolbarButtonController + + @Override + public void onFinishNativeInitialization() { +- if (AdaptiveToolbarFeatures.isCustomizationEnabled()) { ++ if (AdaptiveToolbarFeatures.isSingleVariantModeEnabled()) { ++ @AdaptiveToolbarButtonVariant ++ int variant = AdaptiveToolbarFeatures.getSingleVariantMode(); ++ setSingleProvider(variant); ++ } else if (AdaptiveToolbarFeatures.isCustomizationEnabled()) { + mAdaptiveToolbarStatePredictor.recomputeUiState(uiState -> { + mSessionButtonVariant = uiState.canShowUi ? uiState.toolbarButtonState + : AdaptiveToolbarButtonVariant.UNKNOWN; +diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java +--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java ++++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarFeatures.java +@@ -16,8 +16,18 @@ import java.lang.annotation.RetentionPolicy; + + /** + * A utility class for handling feature flags used by {@link AdaptiveToolbarButtonController}. ++ * ++ *

TODO(shaktisahu): This class supports both the data collection and the customization ++ * experiment. Cleanup once the former is no longer needed. + */ + public class AdaptiveToolbarFeatures { ++ /** Adaptive toolbar button is always empty. */ ++ public static final String ALWAYS_NONE = "always-none"; ++ /** Adaptive toolbar button opens a new tab. */ ++ public static final String ALWAYS_NEW_TAB = "always-new-tab"; ++ /** Adaptive toolbar button shares the current tab. */ ++ public static final String ALWAYS_SHARE = "always-share"; ++ + /** Finch default group for new tab variation. */ + static final String NEW_TAB = "new-tab"; + /** Finch default group for share variation. */ +@@ -30,6 +40,7 @@ public class AdaptiveToolbarFeatures { + private static final String VARIATION_PARAM_DISABLE_UI = "disable_ui"; + private static final String VARIATION_PARAM_IGNORE_SEGMENTATION_RESULTS = + "ignore_segmentation_results"; ++ private static final String VARIATION_PARAM_SINGLE_VARIANT_MODE = "mode"; + private static final String VARIATION_PARAM_SHOW_UI_ONLY_AFTER_READY = + "show_ui_only_after_ready"; + @VisibleForTesting +@@ -104,6 +115,21 @@ public class AdaptiveToolbarFeatures { + return false; + } + ++ /** ++ * Returns whether the adaptive toolbar is enabled in single variant mode. Returns true also to ++ * provide legacy support for feature flags {@code ShareButtonInTopToolbar} and {@code ++ * VoiceButtonInTopToolbar}. ++ * ++ *

Must be called with the {@link FeatureList} initialized. ++ */ ++ public static boolean isSingleVariantModeEnabled() { ++ if (isCustomizationEnabled()) return false; ++ if (ChromeFeatureList.isEnabled(ChromeFeatureList.ADAPTIVE_BUTTON_IN_TOP_TOOLBAR)) { ++ return true; ++ } ++ return false; ++ } ++ + /** + * Returns whether the adaptive toolbar is enabled with segmentation and customization. + * +@@ -187,12 +213,49 @@ public class AdaptiveToolbarFeatures { + ChromeFeatureList.CONTEXTUAL_PAGE_ACTIONS, "enable_ui", true); + } + ++ /** ++ * When the adaptive toolbar is configured in a single button variant mode, returns the {@link ++ * AdaptiveToolbarButtonVariant} being used. ++ * ++ *

This methods avoids parsing param strings more than once. Tests need to call {@link ++ * #clearParsedParamsForTesting()} to clear the cached values. ++ * ++ *

Must be called with the {@link FeatureList} initialized. ++ * ++ *

TODO(shaktisahu): Have a similar method for segmentation. ++ */ ++ @AdaptiveToolbarButtonVariant ++ public static int getSingleVariantMode() { ++ assert isSingleVariantModeEnabled(); ++ if (sButtonVariant != null) return sButtonVariant; ++ ++ String mode = ChromeFeatureList.getFieldTrialParamByFeature( ++ ChromeFeatureList.ADAPTIVE_BUTTON_IN_TOP_TOOLBAR, ++ VARIATION_PARAM_SINGLE_VARIANT_MODE); ++ switch (mode) { ++ case ALWAYS_NONE: ++ sButtonVariant = AdaptiveToolbarButtonVariant.NONE; ++ break; ++ case ALWAYS_NEW_TAB: ++ sButtonVariant = AdaptiveToolbarButtonVariant.NEW_TAB; ++ break; ++ case ALWAYS_SHARE: ++ sButtonVariant = AdaptiveToolbarButtonVariant.SHARE; ++ break; ++ default: ++ sButtonVariant = AdaptiveToolbarButtonVariant.UNKNOWN; ++ break; ++ } ++ return sButtonVariant; ++ } ++ + /** + * Returns the default variant to be shown in segmentation experiment when the backend results + * are unavailable or not configured. + */ + @AdaptiveToolbarButtonVariant + static int getSegmentationDefault() { ++ assert !isSingleVariantModeEnabled(); + assert isCustomizationEnabled(); + if (sButtonVariant != null) return sButtonVariant; + String defaultSegment = getDefaultSegment(); +diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor.java +--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor.java ++++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictor.java +@@ -97,7 +97,12 @@ public class AdaptiveToolbarStatePredictor { + + // Early return if the feature isn't enabled. + if (!AdaptiveToolbarFeatures.isCustomizationEnabled()) { +- callback.onResult(new UiState(false, AdaptiveToolbarButtonVariant.UNKNOWN, ++ boolean canShowUi = AdaptiveToolbarFeatures.isSingleVariantModeEnabled(); ++ @AdaptiveToolbarButtonVariant ++ int toolbarButtonState = AdaptiveToolbarFeatures.isSingleVariantModeEnabled() ++ ? AdaptiveToolbarFeatures.getSingleVariantMode() ++ : AdaptiveToolbarButtonVariant.UNKNOWN; ++ callback.onResult(new UiState(canShowUi, toolbarButtonState, + AdaptiveToolbarButtonVariant.UNKNOWN, AdaptiveToolbarButtonVariant.UNKNOWN)); + return; + } +diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictorTest.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictorTest.java +--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictorTest.java ++++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/adaptive/AdaptiveToolbarStatePredictorTest.java +@@ -71,6 +71,21 @@ public class AdaptiveToolbarStatePredictorTest { + statePredictor.recomputeUiState(verifyResultCallback(expected)); + } + ++ @Test ++ @SmallTest ++ @EnableFeatures({ChromeFeatureList.ADAPTIVE_BUTTON_IN_TOP_TOOLBAR, ++ ChromeFeatureList.VOICE_SEARCH_AUDIO_CAPTURE_POLICY}) ++ @DisableFeatures({ChromeFeatureList.ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_CUSTOMIZATION_V2}) ++ public void ++ testWorksWithDataCollectionFeatureFlag() { ++ ShadowChromeFeatureList.sParamValues.put("mode", "always-voice"); ++ AdaptiveToolbarStatePredictor statePredictor = buildStatePredictor( ++ true, AdaptiveToolbarButtonVariant.VOICE, true, AdaptiveToolbarButtonVariant.SHARE); ++ UiState expected = new UiState(true, AdaptiveToolbarButtonVariant.VOICE, ++ AdaptiveToolbarButtonVariant.UNKNOWN, AdaptiveToolbarButtonVariant.UNKNOWN); ++ statePredictor.recomputeUiState(verifyResultCallback(expected)); ++ } ++ + @Test + @SmallTest + public void testManualOverride() { +-- +2.25.1 diff --git a/build/patches/Restore-offline-indicator-v2-flag.patch b/build/patches/Restore-offline-indicator-v2-flag.patch index 7dd4d301..10f66a49 100644 --- a/build/patches/Restore-offline-indicator-v2-flag.patch +++ b/build/patches/Restore-offline-indicator-v2-flag.patch @@ -128,7 +128,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab 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 -@@ -4880,6 +4880,9 @@ const FeatureEntry kFeatureEntries[] = { +@@ -4875,6 +4875,9 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kOfflinePagesLivePageSharingName, flag_descriptions::kOfflinePagesLivePageSharingDescription, kOsAndroid, FEATURE_VALUE_TYPE(offline_pages::kOfflinePagesLivePageSharingFeature)}, @@ -141,7 +141,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc 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 -@@ -4976,6 +4976,11 @@ +@@ -4974,6 +4974,11 @@ "owners": [ "adamta", "sczs" ], "expiry_milestone": 98 }, @@ -156,7 +156,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 -@@ -3937,6 +3937,10 @@ const char kNotificationPermissionRationaleDescription[] = +@@ -3942,6 +3942,10 @@ const char kNotificationPermissionRationaleDescription[] = "Configure the dialog shown before requesting notification permission. " "Only works with builds targeting Android T."; @@ -170,7 +170,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -2249,6 +2249,9 @@ extern const char kNewWindowAppMenuDescription[]; +@@ -2252,6 +2252,9 @@ extern const char kNewWindowAppMenuDescription[]; extern const char kNotificationPermissionRationaleName[]; extern const char kNotificationPermissionRationaleDescription[]; @@ -183,7 +183,7 @@ diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptio 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 -@@ -262,6 +262,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -254,6 +254,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kNewTabPageTilesTitleWrapAround, &kNewWindowAppMenu, &kNotificationPermissionVariant, @@ -191,32 +191,32 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse &kPageAnnotationsService, &kInlineUpdateFlow, &kBookmarksImprovedSaveFlow, -@@ -873,6 +874,10 @@ BASE_FEATURE(kSimplifiedNTP, - "SimplifiedNTP", +@@ -745,6 +746,10 @@ BASE_FEATURE(kDownloadRename, + "DownloadRename", base::FEATURE_ENABLED_BY_DEFAULT); +BASE_FEATURE(kOfflineIndicatorV2, + "OfflineIndicatorV2", + base::FEATURE_ENABLED_BY_DEFAULT); + - BASE_FEATURE(kPageAnnotationsService, - "PageAnnotationsService", + BASE_FEATURE(kDuetTabStripIntegrationAndroid, + "DuetTabStripIntegrationAndroid", base::FEATURE_DISABLED_BY_DEFAULT); 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 -@@ -123,6 +123,7 @@ BASE_DECLARE_FEATURE(kOmniboxModernizeVisualUpdate); - BASE_DECLARE_FEATURE(kOptimizeGeolocationHeaderGeneration); - BASE_DECLARE_FEATURE(kPageAnnotationsService); - BASE_DECLARE_FEATURE(kSimplifiedNTP); +@@ -107,6 +107,7 @@ BASE_DECLARE_FEATURE(kLensCameraAssistedSearch); + BASE_DECLARE_FEATURE(kLensOnQuickActionSearchWidget); + BASE_DECLARE_FEATURE(kLocationBarModelOptimizations); + BASE_DECLARE_FEATURE(kNewInstanceFromDraggedLink); +BASE_DECLARE_FEATURE(kOfflineIndicatorV2); - BASE_DECLARE_FEATURE(kBookmarksImprovedSaveFlow); - BASE_DECLARE_FEATURE(kBookmarksRefresh); - BASE_DECLARE_FEATURE(kBackGestureRefactorAndroid); + BASE_DECLARE_FEATURE(kNewTabPageTilesTitleWrapAround); + BASE_DECLARE_FEATURE(kNewWindowAppMenu); + BASE_DECLARE_FEATURE(kNotificationPermissionVariant); 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 -@@ -436,6 +436,7 @@ public abstract class ChromeFeatureList { +@@ -437,6 +437,7 @@ public abstract class ChromeFeatureList { public static final String NEW_WINDOW_APP_MENU = "NewWindowAppMenu"; public static final String NOTIFICATION_PERMISSION_VARIANT = "NotificationPermissionVariant"; public static final String OFFLINE_INDICATOR = "OfflineIndicator"; diff --git a/build/patches/Revert-Delete-block-external-form-redirects.patch b/build/patches/Revert-Delete-block-external-form-redirects.patch index 99924d49..81eb169d 100644 --- a/build/patches/Revert-Delete-block-external-form-redirects.patch +++ b/build/patches/Revert-Delete-block-external-form-redirects.patch @@ -2,7 +2,8 @@ From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Thu, 16 Jun 2022 23:23:43 +0200 Subject: Revert "Delete block-external-form-redirects" -This reverts commit b710cefb53b558a8bcd884f6baf0229ba4225721. +This reverts commit b710cefb53b558a8bcd884f6baf0229ba4225721 and +enables IntentBlockExternalFormRedirectsNoGesture. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- @@ -28,7 +29,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc #include "components/translate/content/android/translate_message.h" #else // BUILDFLAG(IS_ANDROID) #include "chrome/browser/media/router/discovery/access_code/access_code_cast_sink_service.h" -@@ -7598,6 +7599,12 @@ const FeatureEntry kFeatureEntries[] = { +@@ -7593,6 +7594,12 @@ const FeatureEntry kFeatureEntries[] = { #endif // BUILDFLAG(ENABLE_PAINT_PREVIEW) && BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_ANDROID) @@ -59,7 +60,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 -@@ -3796,6 +3796,12 @@ const char kInstantStartName[] = "Instant start"; +@@ -3801,6 +3801,12 @@ const char kInstantStartName[] = "Instant start"; const char kInstantStartDescription[] = "Show start surface before native library is loaded."; @@ -75,7 +76,7 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h --- a/chrome/browser/flag_descriptions.h +++ b/chrome/browser/flag_descriptions.h -@@ -2157,6 +2157,9 @@ extern const char kInstanceSwitcherDescription[]; +@@ -2160,6 +2160,9 @@ extern const char kInstanceSwitcherDescription[]; extern const char kInstantStartName[]; extern const char kInstantStartDescription[]; @@ -104,7 +105,7 @@ diff --git a/components/external_intents/android/external_intents_features.cc b/ +BASE_FEATURE(kIntentBlockExternalFormRedirectsNoGesture, + "IntentBlockExternalFormRedirectsNoGesture", -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ base::FEATURE_ENABLED_BY_DEFAULT); + static jlong JNI_ExternalIntentsFeatures_GetFeature(JNIEnv* env, jint ordinal) { return reinterpret_cast(kFeaturesExposedToJava[ordinal]); diff --git a/build/patches/Revert-clipboard-user-gesture-requirement-removal.patch b/build/patches/Revert-clipboard-user-gesture-requirement-removal.patch deleted file mode 100644 index 04d15fd0..00000000 --- a/build/patches/Revert-clipboard-user-gesture-requirement-removal.patch +++ /dev/null @@ -1,29 +0,0 @@ -From: csagan5 <32685696+csagan5@users.noreply.github.com> -Date: Sun, 4 Sep 2022 19:26:02 +0200 -Subject: Revert clipboard user gesture requirement removal - -This reverts commit 4d7b74b051abfe5945f418601fdc2ffc8ce3072c. - -License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ---- - .../blink/renderer/modules/clipboard/clipboard_promise.cc | 6 +----- - 1 file changed, 1 insertion(+), 5 deletions(-) - -diff --git a/third_party/blink/renderer/modules/clipboard/clipboard_promise.cc b/third_party/blink/renderer/modules/clipboard/clipboard_promise.cc ---- a/third_party/blink/renderer/modules/clipboard/clipboard_promise.cc -+++ b/third_party/blink/renderer/modules/clipboard/clipboard_promise.cc -@@ -545,11 +545,7 @@ void ClipboardPromise::RequestPermission( - LocalFrame::HasTransientUserActivation(GetLocalFrame()); - base::UmaHistogramBoolean("Blink.Clipboard.HasTransientUserActivation", - has_transient_user_activation); -- // `will_be_sanitized` is false only when we are trying to read/write -- // web custom formats. -- if (!will_be_sanitized && -- RuntimeEnabledFeatures::ClipboardCustomFormatsEnabled() && -- !has_transient_user_activation) { -+ if (!has_transient_user_activation) { - script_promise_resolver_->Reject(MakeGarbageCollected( - DOMExceptionCode::kSecurityError, - "Must be handling a user gesture to use custom clipboard")); --- -2.25.1 diff --git a/build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch b/build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch index 26545c22..32501fa7 100644 --- a/build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch +++ b/build/patches/Revert-flags-remove-disable-pull-to-refresh-effect.patch @@ -8,15 +8,15 @@ Original License: BSD-3-Clause - https://spdx.org/licenses/BSD-3-Clause.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- chrome/browser/about_flags.cc | 4 ++++ - chrome/browser/flag-metadata.json | 5 +++++ + chrome/browser/flag-metadata.json | 4 ++++ chrome/browser/flag_descriptions.cc | 4 ++++ chrome/browser/flag_descriptions.h | 3 +++ - 4 files changed, 16 insertions(+) + 4 files changed, 15 insertions(+) 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 -@@ -4335,6 +4335,10 @@ const FeatureEntry kFeatureEntries[] = { +@@ -4334,6 +4334,10 @@ const FeatureEntry kFeatureEntries[] = { flag_descriptions::kEnableVulkanDescription, kOsWin | kOsLinux | kOsAndroid, FEATURE_VALUE_TYPE(features::kVulkan)}, #if BUILDFLAG(IS_ANDROID) @@ -30,13 +30,12 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc 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 -@@ -1451,6 +1451,11 @@ +@@ -1451,6 +1451,10 @@ "yangsharon@google.com", "alexmos@google.com", "creis@google.com" ], "expiry_milestone": 110 }, + { + "name": "disable-pull-to-refresh-effect", -+ // "owners": [ "your-team" ], + "expiry_milestone": -1 + }, { diff --git a/build/patches/Revert-flags-remove-num-raster-threads.patch b/build/patches/Revert-flags-remove-num-raster-threads.patch index 4f29d4b9..1bc2372a 100644 --- a/build/patches/Revert-flags-remove-num-raster-threads.patch +++ b/build/patches/Revert-flags-remove-num-raster-threads.patch @@ -7,10 +7,10 @@ This reverts commit 2a51528a1737e9038f7f96f29403032a6a845a25. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- chrome/browser/about_flags.cc | 12 ++++++++++++ - chrome/browser/flag-metadata.json | 5 +++++ + chrome/browser/flag-metadata.json | 4 ++++ chrome/browser/flag_descriptions.cc | 8 ++++++++ chrome/browser/flag_descriptions.h | 7 +++++++ - 4 files changed, 32 insertions(+) + 4 files changed, 31 insertions(+) diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc @@ -31,7 +31,7 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc const FeatureEntry::Choice kTouchTextSelectionStrategyChoices[] = { {flags_ui::kGenericExperimentChoiceDefault, "", ""}, {flag_descriptions::kTouchSelectionStrategyCharacter, -@@ -4560,6 +4569,9 @@ const FeatureEntry kFeatureEntries[] = { +@@ -4559,6 +4568,9 @@ const FeatureEntry kFeatureEntries[] = { FEATURE_VALUE_TYPE(mojo::core::kMojoLinuxChannelSharedMem)}, #endif #if BUILDFLAG(IS_ANDROID) @@ -44,18 +44,17 @@ diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc 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 -@@ -4757,6 +4757,11 @@ - "owners": [ "yhirano", "network-service-dev" ], - "expiry_milestone": 120 +@@ -4647,6 +4647,10 @@ + "owners": [ "pavely", "lazzzis" ], + "expiry_milestone": 105 }, + { + "name": "num-raster-threads", -+ // "owners": [ "your-team" ], + "expiry_milestone": -1 + }, { - "name": "new-content-suggestions-feed", - "owners": [ "adamta@google.com", "sczs", "gogerald", "bling-flags@google.com" ], + "name": "messages-preinstall", + "owners": [ "jonmann", "jshikaram" ], 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 diff --git a/build/patches/Revert-removal-of-execution-context-address-space.patch b/build/patches/Revert-removal-of-execution-context-address-space.patch index 7bd24366..d88b2bef 100644 --- a/build/patches/Revert-removal-of-execution-context-address-space.patch +++ b/build/patches/Revert-removal-of-execution-context-address-space.patch @@ -58,7 +58,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/third_party/blink/renderer/core/execution_context/execution_context.cc b/third_party/blink/renderer/core/execution_context/execution_context.cc --- a/third_party/blink/renderer/core/execution_context/execution_context.cc +++ b/third_party/blink/renderer/core/execution_context/execution_context.cc -@@ -526,6 +526,15 @@ void ExecutionContext::SetReferrerPolicy( +@@ -549,6 +549,15 @@ void ExecutionContext::SetReferrerPolicy( policy_container_->UpdateReferrerPolicy(referrer_policy); } @@ -85,7 +85,7 @@ diff --git a/third_party/blink/renderer/core/execution_context/execution_context #include "services/network/public/mojom/referrer_policy.mojom-blink-forward.h" #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/blink/public/common/tokens/tokens.h" -@@ -386,6 +387,9 @@ class CORE_EXPORT ExecutionContext : public Supplementable, +@@ -391,6 +392,9 @@ class CORE_EXPORT ExecutionContext : public Supplementable, const String& message = g_empty_string, const String& source_file = g_empty_string) const {} diff --git a/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch b/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch index fb90cdf8..94dde917 100644 --- a/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch +++ b/build/patches/Revert-the-removal-of-an-option-to-block-autoplay.patch @@ -46,18 +46,18 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 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 -@@ -197,6 +197,11 @@ android_resources("java_resources") { - "java/res/drawable-xxxhdpi/settings_sensors.png", - "java/res/drawable-xxxhdpi/web_asset.png", - "java/res/drawable/ic_block.xml", +@@ -171,6 +171,11 @@ android_resources("java_resources") { + "java/res/drawable-mdpi/ic_volume_up_grey600_24dp.png", + "java/res/drawable-mdpi/permission_background_sync.png", + "java/res/drawable-mdpi/permission_javascript.png", + "java/res/drawable-hdpi/settings_autoplay.png", + "java/res/drawable-xhdpi/settings_autoplay.png", + "java/res/drawable-xxhdpi/settings_autoplay.png", + "java/res/drawable-mdpi/settings_autoplay.png", + "java/res/drawable-xxxhdpi/settings_autoplay.png", - "java/res/drawable/ic_person_24dp.xml", - "java/res/drawable/settings_bluetooth.xml", - "java/res/layout/add_site_dialog.xml", + "java/res/drawable-mdpi/permission_popups.png", + "java/res/drawable-mdpi/permission_protected_media.png", + "java/res/drawable-mdpi/settings_sensors.png", diff --git a/components/browser_ui/site_settings/android/java/res/drawable-hdpi/settings_autoplay.png b/components/browser_ui/site_settings/android/java/res/drawable-hdpi/settings_autoplay.png new file mode 100644 index 0000000000000000000000000000000000000000..a8a9265f14cd8445ad1f55845099e60dc3c4edf1 @@ -237,7 +237,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } else if (type == ContentSettingsType.SOUND) { setUpSoundPreference(preference); } else if (type == ContentSettingsType.JAVASCRIPT) { -@@ -1014,6 +1018,24 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -1020,6 +1024,24 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment setupContentSettingsPreference(preference, currentValue, false /* isEmbargoed */); } @@ -308,7 +308,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/Website.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java -@@ -235,6 +235,15 @@ public final class Website implements WebsiteEntry { +@@ -230,6 +230,15 @@ public final class Website implements WebsiteEntry { } else { RecordUserAction.record("JavascriptContentSetting.DisableBy.SiteSettings"); } diff --git a/build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch b/build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch index d5cc23d1..fb937d4c 100644 --- a/build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch +++ b/build/patches/Show-site-settings-for-cookies-javascript-and-ads.patch @@ -13,7 +13,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html 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 -@@ -506,6 +506,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -518,6 +518,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment setUpSoundPreference(preference); } else if (type == ContentSettingsType.JAVASCRIPT) { setUpJavascriptPreference(preference); @@ -21,8 +21,8 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + setUpCookiesPreference(preference); } else if (type == ContentSettingsType.GEOLOCATION) { setUpLocationPreference(preference); - } else if (type == ContentSettingsType.NOTIFICATIONS) { -@@ -855,16 +857,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment + } else if (type == ContentSettingsType.IMAGES) { +@@ -871,16 +873,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment private void setUpAdsInformationalBanner() { // Add the informational banner which shows at the top of the UI if ad blocking is // activated on this site. @@ -39,7 +39,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } private SiteSettingsCategory getWarningCategory() { -@@ -1023,17 +1017,35 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -1065,17 +1059,35 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment @Nullable Integer currentValue = mSite.getContentSetting(browserContextHandle, ContentSettingsType.JAVASCRIPT); @@ -78,10 +78,10 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + setupContentSettingsPreference(preference, currentValue, false /* isEmbargoed */); + } + - /** - * Updates the ads list preference based on whether the site is a candidate for blocking. This - * has some custom behavior. -@@ -1049,22 +1061,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment + private void setUpJavascriptJitPreference(Preference preference) { + BrowserContextHandle browserContextHandle = + getSiteSettingsDelegate().getBrowserContextHandle(); +@@ -1108,22 +1120,10 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment setupContentSettingsPreference(preference, null, false); return; } diff --git a/build/patches/Site-setting-for-images.patch b/build/patches/Site-setting-for-images.patch index eceb1a70..4c9b5390 100644 --- a/build/patches/Site-setting-for-images.patch +++ b/build/patches/Site-setting-for-images.patch @@ -52,8 +52,8 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b + "java/res/drawable-mdpi/permission_images.png", "java/res/drawable-mdpi/permission_javascript.png", "java/res/drawable-mdpi/permission_javascript_jit.png", - "java/res/drawable-mdpi/permission_popups.png", -@@ -179,6 +181,7 @@ android_resources("java_resources") { + "java/res/drawable-hdpi/settings_autoplay.png", +@@ -184,6 +186,7 @@ android_resources("java_resources") { "java/res/drawable-mdpi/web_asset.png", "java/res/drawable-xhdpi/ic_volume_up_grey600_24dp.png", "java/res/drawable-xhdpi/permission_background_sync.png", @@ -61,7 +61,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b "java/res/drawable-xhdpi/permission_javascript.png", "java/res/drawable-xhdpi/permission_javascript_jit.png", "java/res/drawable-xhdpi/permission_popups.png", -@@ -187,6 +190,7 @@ android_resources("java_resources") { +@@ -192,6 +195,7 @@ android_resources("java_resources") { "java/res/drawable-xhdpi/web_asset.png", "java/res/drawable-xxhdpi/ic_volume_up_grey600_24dp.png", "java/res/drawable-xxhdpi/permission_background_sync.png", @@ -69,7 +69,7 @@ diff --git a/components/browser_ui/site_settings/android/BUILD.gn b/components/b "java/res/drawable-xxhdpi/permission_javascript.png", "java/res/drawable-xxhdpi/permission_javascript_jit.png", "java/res/drawable-xxhdpi/permission_popups.png", -@@ -195,6 +199,7 @@ android_resources("java_resources") { +@@ -200,6 +204,7 @@ android_resources("java_resources") { "java/res/drawable-xxhdpi/web_asset.png", "java/res/drawable-xxxhdpi/ic_volume_up_grey600_24dp.png", "java/res/drawable-xxxhdpi/permission_background_sync.png", @@ -222,13 +222,13 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c case ContentSettingsType.JAVASCRIPT_JIT: @@ -516,6 +518,8 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment setUpJavascriptPreference(preference); - } else if (type == ContentSettingsType.COOKIES) { - setUpCookiesPreference(preference); -+ } else if (type == ContentSettingsType.IMAGES) { -+ setUpImagesPreference(preference); } else if (type == ContentSettingsType.GEOLOCATION) { setUpLocationPreference(preference); ++ } else if (type == ContentSettingsType.IMAGES) { ++ setUpImagesPreference(preference); } else if (type == ContentSettingsType.JAVASCRIPT_JIT) { + setUpJavascriptJitPreference(preference); + } else if (type == ContentSettingsType.NOTIFICATIONS) { @@ -1137,6 +1141,24 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment mSite.isEmbargoed(ContentSettingsType.REQUEST_DESKTOP_SITE)); } @@ -312,7 +312,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/Website.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java -@@ -219,6 +219,13 @@ public final class Website implements WebsiteEntry { +@@ -214,6 +214,13 @@ public final class Website implements WebsiteEntry { /*isEmbargoed=*/false); setContentSettingException(type, exception); } diff --git a/build/patches/Timezone-customization.patch b/build/patches/Timezone-customization.patch index 5bda9b7b..d0ca4ef5 100644 --- a/build/patches/Timezone-customization.patch +++ b/build/patches/Timezone-customization.patch @@ -23,7 +23,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../site_settings/SiteSettingsDelegate.java | 2 + ...imezoneOverrideSiteSettingsPreference.java | 193 ++++++++++++++++++ .../browser_ui/site_settings/Website.java | 11 + - .../WebsitePermissionsFetcher.java | 3 + + .../WebsitePermissionsFetcher.java | 2 + .../WebsitePreferenceBridge.java | 12 ++ .../android/website_preference_bridge.cc | 16 ++ .../strings/android/site_settings.grdp | 35 ++++ @@ -44,7 +44,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../renderer/content_settings_agent_impl.cc | 83 ++++++++ .../renderer/content_settings_agent_impl.h | 11 + .../WebLayerSiteSettingsDelegate.java | 3 + - 35 files changed, 697 insertions(+), 12 deletions(-) + 35 files changed, 696 insertions(+), 12 deletions(-) create mode 100755 components/browser_ui/site_settings/android/java/res/layout/time_zone_select_dialog.xml create mode 100755 components/browser_ui/site_settings/android/java/res/layout/timezoneoverride_site_settings_preference.xml create mode 100755 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/TimezoneOverrideSiteSettingsPreference.java @@ -519,7 +519,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c case ContentSettingsType.AR: return "ar_permission_list"; case ContentSettingsType.MEDIASTREAM_CAMERA: -@@ -928,11 +930,13 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment +@@ -934,11 +936,13 @@ public class SingleWebsiteSettings extends SiteSettingsPreferenceFragment if (value == null) return; setUpPreferenceCommon(preference, value); @@ -811,7 +811,7 @@ new file mode 100755 diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java --- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java +++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/Website.java -@@ -248,6 +248,17 @@ public final class Website implements WebsiteEntry { +@@ -243,6 +243,17 @@ public final class Website implements WebsiteEntry { } else { RecordUserAction.record("SoundContentSetting.UnmuteBy.SiteSettings"); } @@ -840,12 +840,11 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c return WebsitePermissionsType.CONTENT_SETTING_EXCEPTION; case ContentSettingsType.AR: case ContentSettingsType.CLIPBOARD_READ_WRITE: -@@ -208,6 +209,8 @@ public class WebsitePermissionsFetcher { +@@ -208,6 +209,7 @@ public class WebsitePermissionsFetcher { for (@ContentSettingsType int type = 0; type < ContentSettingsType.NUM_TYPES; type++) { addFetcherForContentSettingsType(queue, type); } -+ queue.add(new ExceptionInfoFetcher(ContentSettingsType.TIMEZONE_OVERRIDE)); -+ ++ queue.add(new ExceptionInfoFetcher(ContentSettingsType.TIMEZONE_OVERRIDE)); } /** @@ -869,8 +868,8 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c + return WebsitePreferenceBridgeJni.get().getCustomTimezone(browserContextHandle); + } + -+ public static void setCustomTimezone(BrowserContextHandle browserContextHandle, String timezone) { -+ WebsitePreferenceBridgeJni.get().setCustomTimezone(browserContextHandle, timezone); ++ public static void setCustomTimezone(BrowserContextHandle browserContextHandle, String custom_timezone) { ++ WebsitePreferenceBridgeJni.get().setCustomTimezone(browserContextHandle, custom_timezone); + } + @NativeMethods @@ -881,7 +880,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c String toDomainWildcardPattern(String pattern); String toHostOnlyPattern(String pattern); + String getCustomTimezone(BrowserContextHandle browserContextHandle); -+ void setCustomTimezone(BrowserContextHandle browserContextHandle, String timezone); ++ void setCustomTimezone(BrowserContextHandle browserContextHandle, String custom_timezone); } } diff --git a/components/browser_ui/site_settings/android/website_preference_bridge.cc b/components/browser_ui/site_settings/android/website_preference_bridge.cc @@ -895,17 +894,17 @@ diff --git a/components/browser_ui/site_settings/android/website_preference_brid +static void JNI_WebsitePreferenceBridge_SetCustomTimezone( + JNIEnv* env, + const JavaParamRef& jbrowser_context_handle, -+ const JavaParamRef& timezone) { -+ std::string new_timezone = ConvertJavaStringToUTF8(env, timezone); ++ const JavaParamRef& custom_timezone) { ++ std::string new_timezone = ConvertJavaStringToUTF8(env, custom_timezone); + GetHostContentSettingsMap(jbrowser_context_handle)->SetTimezoneOverrideValue(new_timezone); +} + +static base::android::ScopedJavaLocalRef JNI_WebsitePreferenceBridge_GetCustomTimezone( + JNIEnv* env, + const JavaParamRef& jbrowser_context_handle) { -+ std::string timezone; -+ GetHostContentSettingsMap(jbrowser_context_handle)->GetTimezoneOverrideValue(timezone); -+ return ConvertUTF8ToJavaString(env, timezone); ++ std::string custom_timezone; ++ GetHostContentSettingsMap(jbrowser_context_handle)->GetTimezoneOverrideValue(custom_timezone); ++ return ConvertUTF8ToJavaString(env, custom_timezone); +} 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 @@ -971,7 +970,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov // Obsolete prefs ---------------------------------------------------------- // These prefs have been removed, but need to be registered so they can -@@ -182,6 +184,10 @@ PrefProvider::PrefProvider(PrefService* prefs, +@@ -178,6 +180,10 @@ PrefProvider::PrefProvider(PrefService* prefs, event_args->set_number_of_exceptions( num_exceptions); // PrefProvider::PrefProvider. }); @@ -982,7 +981,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov } PrefProvider::~PrefProvider() { -@@ -346,4 +352,14 @@ void PrefProvider::SetClockForTesting(base::Clock* clock) { +@@ -342,4 +348,14 @@ void PrefProvider::SetClockForTesting(base::Clock* clock) { clock_ = clock; } @@ -1000,7 +999,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov diff --git a/components/content_settings/core/browser/content_settings_pref_provider.h b/components/content_settings/core/browser/content_settings_pref_provider.h --- a/components/content_settings/core/browser/content_settings_pref_provider.h +++ b/components/content_settings/core/browser/content_settings_pref_provider.h -@@ -66,6 +66,9 @@ class PrefProvider : public UserModifiableProvider { +@@ -65,6 +65,9 @@ class PrefProvider : public UserModifiableProvider { ContentSettingsPref* GetPref(ContentSettingsType type) const; @@ -1010,7 +1009,7 @@ diff --git a/components/content_settings/core/browser/content_settings_pref_prov private: friend class DeadlockCheckerObserver; // For testing. -@@ -98,6 +101,7 @@ class PrefProvider : public UserModifiableProvider { +@@ -96,6 +99,7 @@ class PrefProvider : public UserModifiableProvider { base::ThreadChecker thread_checker_; raw_ptr clock_; @@ -1060,16 +1059,16 @@ diff --git a/components/content_settings/core/browser/content_settings_utils.cc 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 -@@ -604,6 +604,14 @@ void HostContentSettingsMap::SetClockForTesting(base::Clock* clock) { +@@ -602,6 +602,14 @@ void HostContentSettingsMap::SetClockForTesting(base::Clock* clock) { provider->SetClockForTesting(clock); } -+void HostContentSettingsMap::GetTimezoneOverrideValue(std::string& timezone) const { -+ GetPrefProvider()->GetPrefTimezoneOverrideValue(timezone); ++void HostContentSettingsMap::GetTimezoneOverrideValue(std::string& custom_timezone) const { ++ GetPrefProvider()->GetPrefTimezoneOverrideValue(custom_timezone); +} + -+void HostContentSettingsMap::SetTimezoneOverrideValue(const std::string& timezone) { -+ GetPrefProvider()->SetPrefTimezoneOverrideValue(timezone); ++void HostContentSettingsMap::SetTimezoneOverrideValue(const std::string& custom_timezone) { ++ GetPrefProvider()->SetPrefTimezoneOverrideValue(custom_timezone); +} + void HostContentSettingsMap::RecordExceptionMetrics() { @@ -1078,12 +1077,12 @@ diff --git a/components/content_settings/core/browser/host_content_settings_map. diff --git a/components/content_settings/core/browser/host_content_settings_map.h b/components/content_settings/core/browser/host_content_settings_map.h --- a/components/content_settings/core/browser/host_content_settings_map.h +++ b/components/content_settings/core/browser/host_content_settings_map.h -@@ -330,6 +330,9 @@ class HostContentSettingsMap : public content_settings::Observer, +@@ -329,6 +329,9 @@ class HostContentSettingsMap : public content_settings::Observer, allow_invalid_secondary_pattern_for_testing_ = allow; } -+ void GetTimezoneOverrideValue(std::string& timezone) const; -+ void SetTimezoneOverrideValue(const std::string& timezone); ++ void GetTimezoneOverrideValue(std::string& custom_timezone) const; ++ void SetTimezoneOverrideValue(const std::string& custom_timezone); + private: friend class base::RefCountedThreadSafe; diff --git a/build/patches/Unexpire-tab-groups-flags.patch b/build/patches/Unexpire-tab-groups-flags.patch index 277f6b66..cdceb9d7 100644 --- a/build/patches/Unexpire-tab-groups-flags.patch +++ b/build/patches/Unexpire-tab-groups-flags.patch @@ -2,19 +2,19 @@ From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Mon, 17 May 2021 22:32:36 +0200 Subject: Unexpire tab groups flags -Disable by default +Disabled by default License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/browser/flag-metadata.json | 4 ++-- - chrome/browser/flags/android/chrome_feature_list.cc | 4 ++-- - .../org/chromium/chrome/browser/flags/CachedFeatureFlags.java | 2 +- - 3 files changed, 5 insertions(+), 5 deletions(-) + chrome/browser/flag-metadata.json | 4 ++-- + chrome/browser/flags/android/chrome_feature_list.cc | 8 ++++---- + .../chromium/chrome/browser/flags/CachedFeatureFlags.java | 2 +- + 3 files changed, 7 insertions(+), 7 deletions(-) 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 -@@ -3100,7 +3100,7 @@ +@@ -3099,7 +3099,7 @@ { "name": "enable-tab-groups", "owners": [ "memex-team@google.com" ], @@ -23,7 +23,7 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js }, { "name": "enable-tab-groups-continuation", -@@ -3115,7 +3115,7 @@ +@@ -3114,7 +3114,7 @@ { "name": "enable-tab-groups-ui-improvements", "owners": [ "memex-team@google.com" ], @@ -35,21 +35,24 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js 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 -@@ -1013,7 +1013,7 @@ BASE_FEATURE(kTabEngagementReportingAndroid, +@@ -977,16 +977,16 @@ BASE_FEATURE(kTabEngagementReportingAndroid, + base::FEATURE_DISABLED_BY_DEFAULT); BASE_FEATURE(kTabGroupsAndroid, - "TabGroupsAndroid", +- "TabGroupsAndroid", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "TabGroupsAndroid", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kTabGroupsContinuationAndroid, "TabGroupsContinuationAndroid", -@@ -1021,7 +1021,7 @@ BASE_FEATURE(kTabGroupsContinuationAndroid, + base::FEATURE_DISABLED_BY_DEFAULT); BASE_FEATURE(kTabGroupsUiImprovementsAndroid, - "TabGroupsUiImprovementsAndroid", +- "TabGroupsUiImprovementsAndroid", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "TabGroupsUiImprovementsAndroid", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite BASE_FEATURE(kTabGroupsForTablets, "TabGroupsForTablets", diff --git a/build/patches/Update-i18n-zh_CN-support.patch b/build/patches/Update-i18n-zh_CN-support.patch index cc4aeb77..28f7726a 100644 --- a/build/patches/Update-i18n-zh_CN-support.patch +++ b/build/patches/Update-i18n-zh_CN-support.patch @@ -4,13 +4,26 @@ Subject: Update i18n zh_CN support License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- + .../resources/generated_resources_zh-CN.xtb | 4 +- .../resources/google_chrome_strings_zh-CN.xtb | 3 +- .../android_chrome_strings_zh-CN.xtb | 72 ++++++++++++++++++- .../translations/browser_ui_strings_zh-CN.xtb | 26 ++++++- .../strings/components_strings_zh-CN.xtb | 31 +++++++- .../translations/android_ui_strings_zh-CN.xtb | 3 +- - 5 files changed, 130 insertions(+), 5 deletions(-) + 6 files changed, 133 insertions(+), 6 deletions(-) +diff --git a/chrome/app/resources/generated_resources_zh-CN.xtb b/chrome/app/resources/generated_resources_zh-CN.xtb +--- a/chrome/app/resources/generated_resources_zh-CN.xtb ++++ b/chrome/app/resources/generated_resources_zh-CN.xtb +@@ -8824,4 +8824,6 @@ + 网站会在您访问时自动采用此设置。网站通常会传送通知,以便您知悉重大新闻或聊天消息。 + 您需要开启 Chrome 同步才能使用 Wi-Fi 同步功能。了解详情 + 检查(&N) +- +\ No newline at end of file ++广告拦截 ++配置广告拦截和过滤规则地址 ++ diff --git a/chrome/app/resources/google_chrome_strings_zh-CN.xtb b/chrome/app/resources/google_chrome_strings_zh-CN.xtb --- a/chrome/app/resources/google_chrome_strings_zh-CN.xtb +++ b/chrome/app/resources/google_chrome_strings_zh-CN.xtb diff --git a/build/patches/User-agent-customization.patch b/build/patches/User-agent-customization.patch index 3cf8e60a..9c57fe62 100644 --- a/build/patches/User-agent-customization.patch +++ b/build/patches/User-agent-customization.patch @@ -33,10 +33,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../strings/android_chrome_strings.grd | 35 ++++ chrome/common/pref_names.cc | 13 ++ chrome/common/pref_names.h | 8 + - .../WebsitePreferenceBridge.java | 2 +- - .../android/website_preference_bridge.cc | 10 +- .../widget/RadioButtonWithEditText.java | 11 + - .../core/browser/host_content_settings_map.cc | 8 +- .../embedder_support/user_agent_utils.cc | 15 +- .../navigation_controller_android.cc | 4 + .../navigation_controller_android.h | 1 + @@ -44,7 +41,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/web_contents/web_contents_impl.cc | 4 + .../framehost/NavigationControllerImpl.java | 3 +- content/renderer/render_thread_impl.cc | 1 - - 34 files changed, 776 insertions(+), 26 deletions(-) + 31 files changed, 766 insertions(+), 16 deletions(-) create mode 100644 chrome/android/java/res/layout/custom_useragent_preferences.xml create mode 100644 chrome/android/java/res/xml/useragent_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/UserAgentPreferences.java @@ -86,7 +83,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -896,6 +896,7 @@ chrome_java_sources = [ +@@ -898,6 +898,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/payments/ui/DimmingDialog.java", "java/src/org/chromium/chrome/browser/payments/ui/LineItem.java", "java/src/org/chromium/chrome/browser/payments/ui/PaymentAppComparator.java", @@ -332,7 +329,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting + boolean isOverrideUserAgentEnabled(boolean desktopMode); + void setOverrideUserAgentEnabled(boolean enabled, boolean desktopMode); + String getOverrideUserAgentValue(boolean desktopMode); -+ void setOverrideUserAgentValue(String customTimezone, boolean desktopMode); ++ void setOverrideUserAgentValue(String user_agent, boolean desktopMode); + boolean isDesktopModeViewportMetaEnabled(); + void setDesktopModeViewportMetaEnabled(boolean enabled); } @@ -942,7 +939,7 @@ diff --git a/chrome/browser/privacy/settings/java/src/org/chromium/chrome/browse + boolean isOverrideUserAgentEnabled(boolean desktopMode); + void setOverrideUserAgentEnabled(boolean enabled, boolean desktopMode); + String getOverrideUserAgentValue(boolean desktopMode); -+ void setOverrideUserAgentValue(String timezone, boolean desktopMode); ++ void setOverrideUserAgentValue(String user_agent, boolean desktopMode); + boolean isDesktopModeViewportMetaEnabled(); + void setDesktopModeViewportMetaEnabled(boolean enabled); + @@ -1087,41 +1084,6 @@ diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h #if !BUILDFLAG(IS_ANDROID) extern const char kLensRegionSearchEnabled[]; -diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java ---- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java -+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/WebsitePreferenceBridge.java -@@ -467,6 +467,6 @@ public class WebsitePreferenceBridge { - String toDomainWildcardPattern(String pattern); - String toHostOnlyPattern(String pattern); - String getCustomTimezone(BrowserContextHandle browserContextHandle); -- void setCustomTimezone(BrowserContextHandle browserContextHandle, String timezone); -+ void setCustomTimezone(BrowserContextHandle browserContextHandle, String customTimezone); - } - } -diff --git a/components/browser_ui/site_settings/android/website_preference_bridge.cc b/components/browser_ui/site_settings/android/website_preference_bridge.cc ---- a/components/browser_ui/site_settings/android/website_preference_bridge.cc -+++ b/components/browser_ui/site_settings/android/website_preference_bridge.cc -@@ -1021,15 +1021,15 @@ JNI_WebsitePreferenceBridge_ToHostOnlyPattern( - static void JNI_WebsitePreferenceBridge_SetCustomTimezone( - JNIEnv* env, - const JavaParamRef& jbrowser_context_handle, -- const JavaParamRef& timezone) { -- std::string new_timezone = ConvertJavaStringToUTF8(env, timezone); -+ const JavaParamRef& custom_timezone) { -+ std::string new_timezone = ConvertJavaStringToUTF8(env, custom_timezone); - GetHostContentSettingsMap(jbrowser_context_handle)->SetTimezoneOverrideValue(new_timezone); - } - - static base::android::ScopedJavaLocalRef JNI_WebsitePreferenceBridge_GetCustomTimezone( - JNIEnv* env, - const JavaParamRef& jbrowser_context_handle) { -- std::string timezone; -- GetHostContentSettingsMap(jbrowser_context_handle)->GetTimezoneOverrideValue(timezone); -- return ConvertUTF8ToJavaString(env, timezone); -+ std::string custom_timezone; -+ GetHostContentSettingsMap(jbrowser_context_handle)->GetTimezoneOverrideValue(custom_timezone); -+ return ConvertUTF8ToJavaString(env, custom_timezone); - } diff --git a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/RadioButtonWithEditText.java b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/RadioButtonWithEditText.java --- a/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/RadioButtonWithEditText.java +++ b/components/browser_ui/widget/android/java/src/org/chromium/components/browser_ui/widget/RadioButtonWithEditText.java @@ -1143,26 +1105,6 @@ diff --git a/components/browser_ui/widget/android/java/src/org/chromium/componen } /** -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 -@@ -604,12 +604,12 @@ void HostContentSettingsMap::SetClockForTesting(base::Clock* clock) { - provider->SetClockForTesting(clock); - } - --void HostContentSettingsMap::GetTimezoneOverrideValue(std::string& timezone) const { -- GetPrefProvider()->GetPrefTimezoneOverrideValue(timezone); -+void HostContentSettingsMap::GetTimezoneOverrideValue(std::string& custom_timezone) const { -+ GetPrefProvider()->GetPrefTimezoneOverrideValue(custom_timezone); - } - --void HostContentSettingsMap::SetTimezoneOverrideValue(const std::string& timezone) { -- GetPrefProvider()->SetPrefTimezoneOverrideValue(timezone); -+void HostContentSettingsMap::SetTimezoneOverrideValue(const std::string& custom_timezone) { -+ GetPrefProvider()->SetPrefTimezoneOverrideValue(custom_timezone); - } - - void HostContentSettingsMap::RecordExceptionMetrics() { diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedder_support/user_agent_utils.cc --- a/components/embedder_support/user_agent_utils.cc +++ b/components/embedder_support/user_agent_utils.cc diff --git a/build/patches/Viewport-Protection.patch b/build/patches/Viewport-Protection.patch deleted file mode 100644 index a2926516..00000000 --- a/build/patches/Viewport-Protection.patch +++ /dev/null @@ -1,848 +0,0 @@ -From: uazo -Date: Fri, 26 Aug 2022 13:15:43 +0000 -Subject: Viewport Protection - -Scale the viewport and the screen by a random factor to prevent coordinate-based fingerprinting scripts. -The factor is changed at each change of origin. -The feature is controlled by a site setting (default disabled) ---- - .../browser_ui/site_settings/android/BUILD.gn | 3 + - .../BromiteCustomContentSettingImpl.java | 1 + - .../BromiteViewportContentSetting.java | 86 +++++++++++++++++++ - .../site_settings/SiteSettingsCategory.java | 5 +- - .../strings/android/browser_ui_strings.grd | 1 + - .../browser_ui/strings/android/viewport.grdp | 18 ++++ - components/components_strings.grd | 1 + - .../core/browser/content_settings_registry.cc | 14 +++ - .../core/browser/content_settings_utils.cc | 2 + - .../core/common/content_settings.cc | 4 +- - .../core/common/content_settings.h | 1 + - .../core/common/content_settings.mojom | 1 + - .../common/content_settings_mojom_traits.cc | 3 +- - .../common/content_settings_mojom_traits.h | 5 ++ - .../core/common/content_settings_types.h | 2 + - .../renderer/content_settings_agent_impl.cc | 9 ++ - .../renderer/content_settings_agent_impl.h | 1 + - .../platform/web_content_settings_client.h | 2 + - .../core/css/resolver/style_resolver.cc | 10 ++- - .../blink/renderer/core/events/mouse_event.h | 19 +++- - .../renderer/core/events/pointer_event.h | 11 +++ - .../renderer/core/exported/web_view_impl.cc | 2 +- - .../renderer/core/frame/local_dom_window.cc | 27 +++++- - .../blink/renderer/core/frame/local_frame.cc | 12 ++- - .../blink/renderer/core/frame/local_frame.h | 6 +- - .../core/frame/screen_metrics_emulator.cc | 8 +- - .../core/frame/screen_metrics_emulator.h | 8 ++ - .../core/frame/web_frame_widget_impl.cc | 8 ++ - .../core/frame/web_remote_frame_impl.cc | 3 +- - .../blink/renderer/core/input/touch.cc | 17 +++- - third_party/blink/renderer/core/page/page.cc | 74 ++++++++++++++++ - third_party/blink/renderer/core/page/page.h | 7 ++ - 32 files changed, 351 insertions(+), 20 deletions(-) - create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteViewportContentSetting.java - create mode 100644 components/browser_ui/strings/android/viewport.grdp - -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 -@@ -98,6 +98,9 @@ android_library("java") { - sources += [ - "java/src/org/chromium/components/browser_ui/site_settings/BromiteWebRTCContentSetting.java", - ] -+ sources += [ -+ "java/src/org/chromium/components/browser_ui/site_settings/BromiteViewportContentSetting.java", -+ ] - annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ] - resources_package = "org.chromium.components.browser_ui.site_settings" - deps = [ -diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java ---- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java -+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java -@@ -45,6 +45,7 @@ public abstract class BromiteCustomContentSettingImpl { - mItemList = new ArrayList(); - mItemList.add(new BromiteWebGLContentSetting()); - mItemList.add(new BromiteWebRTCContentSetting()); -+ mItemList.add(new BromiteViewportContentSetting()); - } - - public static SiteSettingsCategory createFromType( -diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteViewportContentSetting.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteViewportContentSetting.java -new file mode 100644 ---- /dev/null -+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteViewportContentSetting.java -@@ -0,0 +1,86 @@ -+/* -+ This file is part of Bromite. -+ -+ Bromite is free software: you can redistribute it and/or modify -+ it under the terms of the GNU General Public License as published by -+ the Free Software Foundation, either version 3 of the License, or -+ (at your option) any later version. -+ -+ Bromite is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with Bromite. If not, see . -+*/ -+ -+package org.chromium.components.browser_ui.site_settings; -+ -+import org.chromium.components.browser_ui.site_settings.ContentSettingsResources; -+import org.chromium.components.browser_ui.site_settings.SiteSettingsCategory; -+import org.chromium.components.content_settings.ContentSettingValues; -+import org.chromium.components.content_settings.ContentSettingsType; -+import org.chromium.content_public.browser.BrowserContextHandle; -+ -+import androidx.annotation.Nullable; -+import androidx.preference.Preference; -+import androidx.preference.PreferenceScreen; -+ -+import java.util.ArrayList; -+ -+public class BromiteViewportContentSetting extends BromiteCustomContentSetting { -+ public BromiteViewportContentSetting() { -+ super(/*contentSettingsType*/ ContentSettingsType.VIEWPORT, -+ /*siteSettingsCategory*/ SiteSettingsCategory.Type.VIEWPORT, -+ /*defaultEnabledValue*/ ContentSettingValues.ALLOW, -+ /*defaultDisabledValue*/ ContentSettingValues.BLOCK, -+ /*allowException*/ true, -+ /*preferenceKey*/ "viewport", -+ /*profilePrefKey*/ "viewport"); -+ } -+ -+ @Override -+ public ContentSettingsResources.ResourceItem getResourceItem() { -+ return new ContentSettingsResources.ResourceItem( -+ /*icon*/ R.drawable.web_asset, -+ /*title*/ R.string.viewport_permission_title, -+ /*defaultEnabledValue*/ getDefaultEnabledValue(), -+ /*defaultDisabledValue*/ getDefaultDisabledValue(), -+ /*enabledSummary*/ R.string.website_settings_category_viewport_enabled, -+ /*disabledSummary*/ R.string.website_settings_category_viewport_disabled); -+ } -+ -+ @Override -+ public int getCategorySummary(@Nullable @ContentSettingValues int value) { -+ switch (value) { -+ case ContentSettingValues.ALLOW: -+ return R.string.website_settings_category_viewport_enabled; -+ case ContentSettingValues.BLOCK: -+ return R.string.website_settings_category_viewport_disabled; -+ default: -+ // this will cause a runtime exception -+ return 0; -+ } -+ } -+ -+ @Override -+ public boolean requiresTriStateContentSetting() { -+ return false; -+ } -+ -+ @Override -+ public boolean showOnlyDescriptions() { -+ return true; -+ } -+ -+ @Override -+ public int getAddExceptionDialogMessage() { -+ return R.string.website_settings_category_viewport_enabled; -+ } -+ -+ @Override -+ public @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value) { -+ return value != ContentSettingValues.BLOCK; -+ } -+} -diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java ---- a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java -+++ b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/SiteSettingsCategory.java -@@ -44,7 +44,7 @@ public class SiteSettingsCategory { - Type.PROTECTED_MEDIA, Type.SENSORS, Type.SOUND, Type.USB, Type.VIRTUAL_REALITY, - Type.USE_STORAGE, Type.AUTO_DARK_WEB_CONTENT, Type.REQUEST_DESKTOP_SITE, - Type.FEDERATED_IDENTITY_API, Type.TIMEZONE_OVERRIDE, Type.AUTOPLAY, Type.JAVASCRIPT_JIT, -- Type.IMAGES, Type.WEBGL, Type.WEBRTC}) -+ Type.IMAGES, Type.WEBGL, Type.WEBRTC, Type.VIEWPORT}) - @Retention(RetentionPolicy.SOURCE) - public @interface Type { - // All updates here must also be reflected in {@link #preferenceKey(int) -@@ -81,10 +81,11 @@ public class SiteSettingsCategory { - int IMAGES = 29; - int WEBGL = 30; - int WEBRTC = 31; -+ int VIEWPORT = 32; - /** - * Number of handled categories used for calculating array sizes. - */ -- int NUM_ENTRIES = 32; -+ int NUM_ENTRIES = 33; - } - - private final BrowserContextHandle mBrowserContextHandle; -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 -@@ -176,6 +176,7 @@ - - - -+ - - - Got it -diff --git a/components/browser_ui/strings/android/viewport.grdp b/components/browser_ui/strings/android/viewport.grdp -new file mode 100644 ---- /dev/null -+++ b/components/browser_ui/strings/android/viewport.grdp -@@ -0,0 +1,18 @@ -+ -+ -+ -+ Viewport Size Protection -+ -+ -+ Viewport Size Protection -+ -+ -+ Viewport Size Protection -+ -+ -+ Enabled -+ -+ -+ Disabled -+ -+ -diff --git a/components/components_strings.grd b/components/components_strings.grd ---- a/components/components_strings.grd -+++ b/components/components_strings.grd -@@ -340,6 +340,7 @@ - - - -+ - - - -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 -@@ -697,6 +697,20 @@ void ContentSettingsRegistry::Init() { - /*show_into_info_page*/ true, - /*permission_type_ui*/ IDS_SITE_SETTINGS_TYPE_WEBRTC, - /*permission_type_ui_mid_sentence*/ IDS_SITE_SETTINGS_TYPE_WEBRTC_MID_SENTENCE); -+ -+ Register(ContentSettingsType::VIEWPORT, "viewport", CONTENT_SETTING_BLOCK, -+ WebsiteSettingsInfo::SYNCABLE, -+ AllowlistedSchemes(), -+ ValidSettings(CONTENT_SETTING_ALLOW, -+ CONTENT_SETTING_BLOCK), -+ WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE, -+ WebsiteSettingsRegistry::PLATFORM_ANDROID, -+ ContentSettingsInfo::INHERIT_IN_INCOGNITO, -+ ContentSettingsInfo::PERSISTENT, -+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS, -+ /*show_into_info_page*/ true, -+ /*permission_type_ui*/ IDS_SITE_SETTINGS_TYPE_VIEWPORT, -+ /*permission_type_ui_mid_sentence*/ IDS_SITE_SETTINGS_TYPE_VIEWPORT_MID_SENTENCE); - } - - void ContentSettingsRegistry::Register( -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 -@@ -160,6 +160,8 @@ void GetRendererContentSettingRules(const HostContentSettingsMap* map, - &(rules->webgl_rules)); - map->GetSettingsForOneType(ContentSettingsType::WEBRTC, - &(rules->webrtc_rules)); -+ map->GetSettingsForOneType(ContentSettingsType::VIEWPORT, -+ &(rules->viewport_rules)); - } - - bool IsMorePermissive(ContentSetting a, ContentSetting b) { -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 -@@ -208,7 +208,8 @@ bool RendererContentSettingRules::IsRendererContentSetting( - content_type == ContentSettingsType::AUTO_DARK_WEB_CONTENT || - content_type == ContentSettingsType::TIMEZONE_OVERRIDE || - content_type == ContentSettingsType::WEBGL || -- content_type == ContentSettingsType::WEBRTC; -+ content_type == ContentSettingsType::WEBRTC || -+ content_type == ContentSettingsType::VIEWPORT; - } - - void RendererContentSettingRules::FilterRulesByOutermostMainFrameURL( -@@ -222,6 +223,7 @@ void RendererContentSettingRules::FilterRulesByOutermostMainFrameURL( - FilterRulesForType(autoplay_rules, outermost_main_frame_url); - FilterRulesForType(webgl_rules, outermost_main_frame_url); - FilterRulesForType(webrtc_rules, outermost_main_frame_url); -+ FilterRulesForType(viewport_rules, outermost_main_frame_url); - } - - RendererContentSettingRules::RendererContentSettingRules() = 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 -@@ -98,6 +98,7 @@ struct RendererContentSettingRules { - std::string timezone_override_value; - ContentSettingsForOneType webgl_rules; - ContentSettingsForOneType webrtc_rules; -+ ContentSettingsForOneType viewport_rules; - }; - - namespace content_settings { -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 -@@ -83,4 +83,5 @@ struct RendererContentSettingRules { - string timezone_override_value; - array webgl_rules; - array webrtc_rules; -+ array viewport_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 -@@ -107,7 +107,8 @@ bool StructTraitstimezone_override_rules) && - data.ReadTimezoneOverrideValue(&out->timezone_override_value) && - data.ReadWebglRules(&out->webgl_rules) && -- data.ReadWebrtcRules(&out->webrtc_rules); -+ data.ReadWebrtcRules(&out->webrtc_rules) && -+ data.ReadViewportRules(&out->viewport_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 -@@ -175,6 +175,11 @@ struct StructTraits< - return r.webrtc_rules; - } - -+ static const std::vector& viewport_rules( -+ const RendererContentSettingRules& r) { -+ return r.viewport_rules; -+ } -+ - static bool Read( - content_settings::mojom::RendererContentSettingRulesDataView data, - RendererContentSettingRules* out); -diff --git a/components/content_settings/core/common/content_settings_types.h b/components/content_settings/core/common/content_settings_types.h ---- a/components/content_settings/core/common/content_settings_types.h -+++ b/components/content_settings/core/common/content_settings_types.h -@@ -281,6 +281,8 @@ enum class ContentSettingsType : int32_t { - - WEBRTC, - -+ VIEWPORT, -+ - // Setting to indicate whether browser should allow signing into a website via - // the browser FedCM API. - FEDERATED_IDENTITY_API, -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 -@@ -467,6 +467,15 @@ bool ContentSettingsAgentImpl::AllowWebRTC(bool enabled_per_settings) { - url::Origin(frame->GetDocument().GetSecurityOrigin()).GetURL()); - } - -+bool ContentSettingsAgentImpl::AllowViewportChange(bool enabled_per_settings) { -+ if (!content_setting_rules_) -+ return false; -+ blink::WebLocalFrame* frame = render_frame()->GetWebFrame(); -+ return CONTENT_SETTING_ALLOW == GetContentSettingFromRules( -+ content_setting_rules_->viewport_rules, -+ url::Origin(frame->GetDocument().GetSecurityOrigin()).GetURL()); -+} -+ - bool ContentSettingsAgentImpl::IsAllowlistedForContentSettings() 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 -@@ -101,6 +101,7 @@ class ContentSettingsAgentImpl - bool ShouldAutoupgradeMixedContent() override; - bool AllowWebgl(bool enabled_per_settings) override; - bool AllowWebRTC(bool enabled_per_settings) override; -+ bool AllowViewportChange(bool enabled_per_settings) override; - - bool allow_running_insecure_content() const { - return allow_running_insecure_content_; -diff --git a/third_party/blink/public/platform/web_content_settings_client.h b/third_party/blink/public/platform/web_content_settings_client.h ---- a/third_party/blink/public/platform/web_content_settings_client.h -+++ b/third_party/blink/public/platform/web_content_settings_client.h -@@ -103,6 +103,8 @@ class WebContentSettingsClient { - - virtual bool AllowWebRTC(bool default_value) { return default_value; } - -+ virtual bool AllowViewportChange(bool default_value) { return default_value; } -+ - // Reports that passive mixed content was found at the provided URL. - virtual void PassiveInsecureContentFound(const WebURL&) {} - -diff --git a/third_party/blink/renderer/core/css/resolver/style_resolver.cc b/third_party/blink/renderer/core/css/resolver/style_resolver.cc ---- a/third_party/blink/renderer/core/css/resolver/style_resolver.cc -+++ b/third_party/blink/renderer/core/css/resolver/style_resolver.cc -@@ -1557,8 +1557,14 @@ scoped_refptr StyleResolver::InitialStyleForElement() const { - - initial_style->SetRtlOrdering( - GetDocument().VisuallyOrdered() ? EOrder::kVisual : EOrder::kLogical); -- initial_style->SetZoom(InitialZoom()); -- initial_style->SetEffectiveZoom(initial_style->Zoom()); -+ if (GetDocument().GetPage() && GetDocument().GetPage()->IsScreenEmulated()) { -+ // hides the zoom override to the dom on the html tag -+ initial_style->SetZoom(1); -+ initial_style->SetEffectiveZoom(InitialZoom()); -+ } else { -+ initial_style->SetZoom(InitialZoom()); -+ initial_style->SetEffectiveZoom(initial_style->Zoom()); -+ } - initial_style->SetInForcedColorsMode(GetDocument().InForcedColorsMode()); - initial_style->SetTapHighlightColor( - ComputedStyleInitialValues::InitialTapHighlightColor()); -diff --git a/third_party/blink/renderer/core/events/mouse_event.h b/third_party/blink/renderer/core/events/mouse_event.h ---- a/third_party/blink/renderer/core/events/mouse_event.h -+++ b/third_party/blink/renderer/core/events/mouse_event.h -@@ -31,6 +31,7 @@ - #include "third_party/blink/renderer/core/dom/events/simulated_click_options.h" - #include "third_party/blink/renderer/core/events/ui_event_with_key_state.h" - #include "third_party/blink/renderer/platform/wtf/casting.h" -+#include "third_party/blink/renderer/core/page/page.h" - - namespace blink { - -@@ -143,8 +144,22 @@ class CORE_EXPORT MouseEvent : public UIEventWithKeyState { - - // Note that these values are adjusted to counter the effects of zoom, so that - // values exposed via DOM APIs are invariant under zooming. -- virtual double screenX() const { return std::floor(screen_x_); } -- virtual double screenY() const { return std::floor(screen_y_); } -+ virtual double screenX() const { -+ if (view() && view()->GetFrame() && -+ view()->GetFrame()->GetPage() && -+ view()->GetFrame()->GetPage()->IsScreenEmulated()) { -+ return std::floor(page_x_); -+ } -+ return std::floor(screen_x_); -+ } -+ virtual double screenY() const { -+ if (view() && view()->GetFrame() && -+ view()->GetFrame()->GetPage() && -+ view()->GetFrame()->GetPage()->IsScreenEmulated()) { -+ return std::floor(page_y_); -+ } -+ return std::floor(screen_y_); -+ } - - virtual double clientX() const { return std::floor(client_x_); } - virtual double clientY() const { return std::floor(client_y_); } -diff --git a/third_party/blink/renderer/core/events/pointer_event.h b/third_party/blink/renderer/core/events/pointer_event.h ---- a/third_party/blink/renderer/core/events/pointer_event.h -+++ b/third_party/blink/renderer/core/events/pointer_event.h -@@ -9,6 +9,7 @@ - #include "third_party/blink/renderer/core/core_export.h" - #include "third_party/blink/renderer/core/events/mouse_event.h" - #include "third_party/blink/renderer/platform/wtf/casting.h" -+#include "third_party/blink/renderer/core/page/page.h" - - namespace blink { - -@@ -57,11 +58,21 @@ class CORE_EXPORT PointerEvent : public MouseEvent { - double screenX() const override { - if (ShouldHaveIntegerCoordinates()) - return MouseEvent::screenX(); -+ if (view() && view()->GetFrame() && -+ view()->GetFrame()->GetPage() && -+ view()->GetFrame()->GetPage()->IsScreenEmulated()) { -+ return page_x_; -+ } - return screen_x_; - } - double screenY() const override { - if (ShouldHaveIntegerCoordinates()) - return MouseEvent::screenY(); -+ if (view() && view()->GetFrame() && -+ view()->GetFrame()->GetPage() && -+ view()->GetFrame()->GetPage()->IsScreenEmulated()) { -+ return page_y_; -+ } - return screen_y_; - } - double clientX() const override { -diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc ---- a/third_party/blink/renderer/core/exported/web_view_impl.cc -+++ b/third_party/blink/renderer/core/exported/web_view_impl.cc -@@ -1031,7 +1031,7 @@ WebPagePopupImpl* WebViewImpl::OpenPagePopup(PagePopupClient* client) { - page_popup_ = WebPagePopupImpl::Create( - std::move(popup_widget_host), std::move(widget_host), - std::move(widget_receiver), this, agent_group_scheduler, -- opener_widget->GetOriginalScreenInfos(), client); -+ opener_widget->GetScreenInfos(), client); - EnablePopupMouseWheelEventListener(web_opener_frame->LocalRoot()); - return page_popup_.get(); - } -diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_party/blink/renderer/core/frame/local_dom_window.cc ---- a/third_party/blink/renderer/core/frame/local_dom_window.cc -+++ b/third_party/blink/renderer/core/frame/local_dom_window.cc -@@ -1437,6 +1437,11 @@ int LocalDOMWindow::outerHeight() const { - if (!page) - return 0; - -+ // If screen is emulated and this frame is remote cross-origin -+ // return innerHeight -+ if (page->IsScreenEmulated() && frame->IsCrossOriginToOutermostMainFrame()) -+ return innerHeight(); -+ - ChromeClient& chrome_client = page->GetChromeClient(); - if (page->GetSettings().GetReportScreenSizeInPhysicalPixelsQuirk()) { - return static_cast( -@@ -1462,6 +1467,11 @@ int LocalDOMWindow::outerWidth() const { - if (!page) - return 0; - -+ // If screen is emulated and this frame is remote cross-origin -+ // return innerWidth -+ if (page->IsScreenEmulated() && frame->IsCrossOriginToOutermostMainFrame()) -+ return innerWidth(); -+ - ChromeClient& chrome_client = page->GetChromeClient(); - if (page->GetSettings().GetReportScreenSizeInPhysicalPixelsQuirk()) { - return static_cast( -@@ -1650,7 +1660,8 @@ double LocalDOMWindow::devicePixelRatio() const { - if (!GetFrame()) - return 0.0; - -- return GetFrame()->DevicePixelRatio(); -+ // never send the zoom factor override value -+ return GetFrame()->DevicePixelRatio(/*with_zoom_factor*/false); - } - - void LocalDOMWindow::scrollBy(double x, double y) const { -@@ -2203,6 +2214,20 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate, - if (!completed_url.IsEmpty() || result.new_window) - result.frame->Navigate(frame_request, WebFrameLoadType::kStandard); - -+ if (result.frame->IsLocalFrame()) { -+ // we need to use opener setting when opening a iframe without url -+ // (as "about:blank") to force emulated screen -+ // since result.frame.GetContentSettingsClient()->AllowViewportChange() -+ // in the Page::DidCommitLoad() event returns false for these urls -+ // -+ // prevent this js code: -+ // var w = window.open() -+ // var not_emulated_screen_info = w.screen -+ result.frame->GetPage()->CalculateEmulatedScreenSetting( -+ To(result.frame), -+ /*force*/ GetFrame()->GetContentSettingsClient()->AllowViewportChange(false)); -+ } -+ - // TODO(japhet): window-open-noopener.html?_top and several tests in - // html/browsers/windows/browsing-context-names/ appear to require that - // the special case target names (_top, _parent, _self) ignore opener -diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc ---- a/third_party/blink/renderer/core/frame/local_frame.cc -+++ b/third_party/blink/renderer/core/frame/local_frame.cc -@@ -1278,6 +1278,10 @@ gfx::SizeF LocalFrame::ResizePageRectsKeepingRatio( - return gfx::SizeF(result_width, result_height); - } - -+void LocalFrame::SetPageZoomFactorBaseValue(float factor) { -+ page_zoom_factor_base_value_ = factor; -+} -+ - void LocalFrame::SetPageZoomFactor(float factor) { - SetPageAndTextZoomFactors(factor, text_zoom_factor_); - } -@@ -1417,12 +1421,16 @@ device::mojom::blink::DevicePostureType LocalFrame::GetDevicePosture() { - return mojo_handler_->GetDevicePosture(); - } - --double LocalFrame::DevicePixelRatio() const { -+double LocalFrame::DevicePixelRatio(bool with_zoom_factor) const { - if (!page_) - return 0; - - double ratio = page_->InspectorDeviceScaleFactorOverride(); -- ratio *= PageZoomFactor(); -+ // with_zoom_factor is default true -+ if (with_zoom_factor) -+ ratio *= PageZoomFactor(); -+ else -+ ratio = page_zoom_factor_; - return ratio; - } - -diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h ---- a/third_party/blink/renderer/core/frame/local_frame.h -+++ b/third_party/blink/renderer/core/frame/local_frame.h -@@ -381,13 +381,14 @@ class CORE_EXPORT LocalFrame final - void SetInViewSourceMode(bool = true); - - void SetPageZoomFactor(float); -- float PageZoomFactor() const { return page_zoom_factor_; } -+ void SetPageZoomFactorBaseValue(float factor); -+ float PageZoomFactor() const { return page_zoom_factor_ + page_zoom_factor_base_value_; } - void SetTextZoomFactor(float); - float TextZoomFactor() const { return text_zoom_factor_; } - void SetPageAndTextZoomFactors(float page_zoom_factor, - float text_zoom_factor); - -- double DevicePixelRatio() const; -+ double DevicePixelRatio(bool with_zoom_factor = true) const; - - // Informs the local root's document and its local descendant subtree that a - // media query value changed. -@@ -934,6 +935,7 @@ class CORE_EXPORT LocalFrame final - unsigned hidden_ : 1; - - float page_zoom_factor_; -+ float page_zoom_factor_base_value_ = 0; - float text_zoom_factor_; - - Member probe_sink_; -diff --git a/third_party/blink/renderer/core/frame/screen_metrics_emulator.cc b/third_party/blink/renderer/core/frame/screen_metrics_emulator.cc ---- a/third_party/blink/renderer/core/frame/screen_metrics_emulator.cc -+++ b/third_party/blink/renderer/core/frame/screen_metrics_emulator.cc -@@ -163,6 +163,9 @@ void ScreenMetricsEmulator::Apply() { - frame_widget_->SetScreenInfoAndSize(emulated_screen_infos, - /*widget_size=*/widget_size, - /*visible_viewport_size=*/widget_size); -+ -+ // save emulated window size -+ window_size_ = window_size; - } - - void ScreenMetricsEmulator::UpdateVisualProperties( -@@ -191,9 +194,8 @@ void ScreenMetricsEmulator::OnUpdateScreenRects( - const gfx::Rect& window_screen_rect) { - original_view_screen_rect_ = view_screen_rect; - original_window_screen_rect_ = window_screen_rect; -- if (emulating_desktop()) { -- Apply(); -- } -+ // needed as we need browser ui size -+ Apply(); - } - - } // namespace blink -diff --git a/third_party/blink/renderer/core/frame/screen_metrics_emulator.h b/third_party/blink/renderer/core/frame/screen_metrics_emulator.h ---- a/third_party/blink/renderer/core/frame/screen_metrics_emulator.h -+++ b/third_party/blink/renderer/core/frame/screen_metrics_emulator.h -@@ -61,6 +61,11 @@ class ScreenMetricsEmulator : public GarbageCollected { - // Emulated position of the main frame widget (aka view) rect. - gfx::Point ViewRectOrigin(); - -+ // Get emulated window size -+ const gfx::Size& ViewWindowSize() const { -+ return window_size_; -+ } -+ - // Disables emulation and applies non-emulated values to the - // WebFrameWidgetImpl. Call this before destroying the ScreenMetricsEmulator. - void DisableAndApply(); -@@ -96,6 +101,9 @@ class ScreenMetricsEmulator : public GarbageCollected { - gfx::Rect original_view_screen_rect_; - gfx::Rect original_window_screen_rect_; - std::vector original_root_window_segments_; -+ -+ // Actual size after apply -+ gfx::Size window_size_; - }; - - } // namespace blink -diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc ---- a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc -+++ b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc -@@ -1578,6 +1578,14 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing( - - if (auto* device_emulator = DeviceEmulator()) { - device_emulator->UpdateVisualProperties(visual_properties); -+ // Shink the view according to browsercontrols -+ size_ = widget_base_->DIPsToCeiledBlinkSpace( -+ device_emulator->ViewWindowSize()); -+ View()->ResizeWithBrowserControls( -+ size_.value(), -+ widget_base_->DIPsToCeiledBlinkSpace( -+ widget_base_->VisibleViewportSizeInDIPs()), -+ visual_properties.browser_controls_params); - return; - } - -diff --git a/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc b/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc ---- a/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc -+++ b/third_party/blink/renderer/core/frame/web_remote_frame_impl.cc -@@ -349,7 +349,8 @@ void WebRemoteFrameImpl::InitializeFrameVisualProperties( - visual_properties.page_scale_factor = ancestor_widget->PageScaleInMainFrame(); - visual_properties.is_pinch_gesture_active = - ancestor_widget->PinchGestureActiveInMainFrame(); -- visual_properties.screen_infos = ancestor_widget->GetOriginalScreenInfos(); -+ // for a cross-site iframe, set the actual (original or emulated) screen infos -+ visual_properties.screen_infos = ancestor_widget->GetScreenInfos(); - visual_properties.visible_viewport_size = - ancestor_widget->VisibleViewportSizeInDIPs(); - const WebVector& window_segments = -diff --git a/third_party/blink/renderer/core/input/touch.cc b/third_party/blink/renderer/core/input/touch.cc ---- a/third_party/blink/renderer/core/input/touch.cc -+++ b/third_party/blink/renderer/core/input/touch.cc -@@ -30,6 +30,7 @@ - #include "third_party/blink/renderer/core/frame/local_frame_view.h" - #include "third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h" - #include "ui/gfx/geometry/point_f.h" -+#include "third_party/blink/renderer/core/page/page.h" - - namespace blink { - -@@ -75,7 +76,13 @@ Touch::Touch(LocalFrame* frame, - radius_(radius), - rotation_angle_(rotation_angle), - force_(force), -- absolute_location_(PageToAbsolute(frame, page_pos)) {} -+ absolute_location_(PageToAbsolute(frame, page_pos)) { -+ if (frame->GetPage() && frame->GetPage()->IsScreenEmulated()) { -+ // use page_pos instead of screen_pos -+ screen_pos_.set_x(page_pos_.x()); -+ screen_pos_.set_y(page_pos_.y()); -+ } -+ } - - Touch::Touch(EventTarget* target, - int identifier, -@@ -105,7 +112,13 @@ Touch::Touch(LocalFrame* frame, const TouchInit* initializer) - radius_(initializer->radiusX(), initializer->radiusY()), - rotation_angle_(initializer->rotationAngle()), - force_(initializer->force()), -- absolute_location_(PageToAbsolute(frame, page_pos_)) {} -+ absolute_location_(PageToAbsolute(frame, page_pos_)) { -+ if (frame->GetPage() && frame->GetPage()->IsScreenEmulated()) { -+ // use page_pos instead of screen_pos -+ screen_pos_.set_x(page_pos_.x()); -+ screen_pos_.set_y(page_pos_.y()); -+ } -+ } - - Touch* Touch::CloneWithNewTarget(EventTarget* event_target) const { - return MakeGarbageCollected( -diff --git a/third_party/blink/renderer/core/page/page.cc b/third_party/blink/renderer/core/page/page.cc ---- a/third_party/blink/renderer/core/page/page.cc -+++ b/third_party/blink/renderer/core/page/page.cc -@@ -92,6 +92,9 @@ - #include "third_party/blink/renderer/platform/scheduler/public/agent_group_scheduler.h" - #include "third_party/blink/renderer/platform/scheduler/public/frame_scheduler.h" - #include "third_party/skia/include/core/SkColor.h" -+#include "base/rand_util.h" -+#include "third_party/blink/public/common/widget/device_emulation_params.h" -+#include "third_party/blink/renderer/core/exported/web_view_impl.h" - - namespace blink { - -@@ -881,7 +884,78 @@ void Page::UpdateAcceleratedCompositingSettings() { - } - } - -+void Page::CalculateEmulatedScreenSetting(LocalFrame* frame, bool force) { -+ blink::WebContentSettingsClient* settings = frame->GetContentSettingsClient(); -+ if ( (settings && settings->AllowViewportChange(false)) || force) { -+ // this is the maximum (and minimum) value which in percentage -+ // corresponds to +- 0.03% -+ // more or less 3-6 pixels according to the resolution 300-600px -+ // little enough not to change the page view the user is used to, -+ // but enough to change all bounds, especially those in floating point -+ const int max_range = 300; -+ -+ // only for the local main frame -+ // the other local frames use the values from main -+ // while the remote ones do not communicate the values to the parent -+ // (and they will be local main frame in their page context) -+ if (main_frame_ == frame) { -+ // set the scale factor -+ double scale_factor = 0; -+ if (override_window_scale_factor_ != 0) { -+ scale_factor = override_window_scale_factor_; -+ } else { -+ // we allow the increase or decrease of the screen size (and view) -+ scale_factor = 1.0 + base::RandInt(-max_range, max_range) / 10000.0; -+ } -+ -+ // save the value, so a same domain navigation will reuse same value -+ override_window_scale_factor_ = scale_factor; -+ -+ // we divide the value in half: half for the screen and the view, -+ // which then the latter will be scaled again by the zoom -+ double half_random = (scale_factor - 1.0) / 2.0; -+ -+ // set emulation params -+ DeviceEmulationParams params; -+ // the screen size is changed to match the widget size for mobile emulation -+ params.screen_type = mojom::EmulatedScreenType::kMobile; -+ // scale the widget size (and the screen size) by half_random scale factor -+ params.scale = 1 / (1.0 + half_random); -+ -+ GetChromeClient().GetWebView()->EnableDeviceEmulation(params); -+ -+ // set zoom factor -+ // the zoom factor is used by all the functions that manage the bounds, -+ // which is multiplied by the values in pixels when computed -+ // we do not modify the actual value but only the one used internally -+ // it becomes the base value used as the zoom property of the css, but -+ // it does not appear on the dom (which always remains 1.0) -+ double zoom_factor = 0; -+ if (override_zoom_factor_ != 0) { -+ zoom_factor = override_zoom_factor_; -+ } else { -+ // we only allow the page size to decrease, otherwise the scroll -+ // bars would not be visible -+ zoom_factor = base::RandInt(0, max_range/2) / 10000.0; -+ } -+ -+ // save the value, so a same domain navigation will reuse same value -+ override_zoom_factor_ = zoom_factor; -+ -+ frame->SetPageZoomFactorBaseValue(zoom_factor); -+ } -+ is_screen_emulated = true; -+ } else { -+ if (is_screen_emulated && main_frame_ == frame) { -+ GetChromeClient().GetWebView()->DisableDeviceEmulation(); -+ frame->SetPageZoomFactorBaseValue(0); -+ } -+ is_screen_emulated = false; -+ } -+} -+ - void Page::DidCommitLoad(LocalFrame* frame) { -+ CalculateEmulatedScreenSetting(frame); - if (main_frame_ == frame) { - GetConsoleMessageStorage().Clear(); - GetInspectorIssueStorage().Clear(); -diff --git a/third_party/blink/renderer/core/page/page.h b/third_party/blink/renderer/core/page/page.h ---- a/third_party/blink/renderer/core/page/page.h -+++ b/third_party/blink/renderer/core/page/page.h -@@ -410,6 +410,9 @@ class CORE_EXPORT Page final : public GarbageCollected, - } - mojom::blink::FencedFrameMode FencedFrameMode() { return fenced_frame_mode_; } - -+ void CalculateEmulatedScreenSetting(LocalFrame* frame, bool force = false); -+ bool IsScreenEmulated() { return is_screen_emulated; } -+ - private: - friend class ScopedPagePauser; - -@@ -539,6 +542,10 @@ class CORE_EXPORT Page final : public GarbageCollected, - // browser side FrameTree has the FrameTree::Type of kFencedFrame. - bool is_fenced_frame_tree_ = false; - -+ bool is_screen_emulated = false; -+ double override_window_scale_factor_ = 0; -+ double override_zoom_factor_ = 0; -+ - // If the page is hosted inside an MPArch fenced frame, this tracks the - // mode that the fenced frame is set to. This will always be set to kDefault - // for the ShadowDOM implementation of fenced frames. --- -2.25.1 diff --git a/build/patches/Welcome-screen.patch b/build/patches/Welcome-screen.patch index e5096e51..2e34238d 100644 --- a/build/patches/Welcome-screen.patch +++ b/build/patches/Welcome-screen.patch @@ -672,7 +672,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAnd 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 -@@ -2910,11 +2910,30 @@ To change this setting, <resetlink>reset sync

<resetlink>reset sync

%1$sGoogle Maps will open in Chrome. By continuing, you agree to the <LINK1>Google Terms of Service</LINK1>, and the <LINK2>Google Chrome and ChromeOS Additional Terms of Service</LINK2>. The <LINK3>Privacy Policy</LINK3> also applies. diff --git a/build/patches/autofill-miscellaneous.patch b/build/patches/autofill-miscellaneous.patch index 7f7afdf9..d0b85d47 100644 --- a/build/patches/autofill-miscellaneous.patch +++ b/build/patches/autofill-miscellaneous.patch @@ -14,11 +14,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../core/browser/autofill_download_manager.h | 2 -- .../autofill/core/browser/autofill_manager.cc | 20 ----------- .../core/browser/browser_autofill_manager.h | 4 +-- - .../autofill/core/common/autofill_features.cc | 2 +- + .../autofill/core/common/autofill_features.cc | 4 +-- .../autofill/core/common/autofill_prefs.cc | 4 +-- - .../browser/public/prefs.cc | 2 +- + .../browser/public/prefs.cc | 4 +-- .../password_generation_frame_helper.cc | 4 --- - 8 files changed, 11 insertions(+), 62 deletions(-) + 8 files changed, 13 insertions(+), 64 deletions(-) diff --git a/components/autofill/core/browser/autofill_download_manager.cc b/components/autofill/core/browser/autofill_download_manager.cc --- a/components/autofill/core/browser/autofill_download_manager.cc @@ -146,12 +146,14 @@ diff --git a/components/autofill/core/browser/browser_autofill_manager.h b/compo diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc --- a/components/autofill/core/common/autofill_features.cc +++ b/components/autofill/core/common/autofill_features.cc -@@ -512,7 +512,7 @@ const base::FeatureParam kAutofillServerBehaviorsParam{ +@@ -511,8 +511,8 @@ const base::FeatureParam kAutofillServerBehaviorsParam{ + // "upload" resources. // i.e., https://other.autofill.server:port/tbproxy/af/ BASE_FEATURE(kAutofillServerCommunication, - "AutofillServerCommunication", +- "AutofillServerCommunication", - base::FEATURE_ENABLED_BY_DEFAULT); -+ base::FEATURE_DISABLED_BY_DEFAULT); ++ "AutofillServerCommunication", // disabled by default ++ base::FEATURE_DISABLED_BY_DEFAULT); // in Bromite // Controls whether Autofill may fill across origins as part of the // AutofillAcrossIframes experiment. @@ -179,7 +181,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto diff --git a/components/autofill_assistant/browser/public/prefs.cc b/components/autofill_assistant/browser/public/prefs.cc --- a/components/autofill_assistant/browser/public/prefs.cc +++ b/components/autofill_assistant/browser/public/prefs.cc -@@ -24,7 +24,7 @@ const char kDeprecatedAutofillAssistantTriggerScriptsIsFirstTimeUser[] = +@@ -24,10 +24,10 @@ const char kDeprecatedAutofillAssistantTriggerScriptsIsFirstTimeUser[] = "Chrome.AutofillAssistant.LiteScriptFirstTimeUser"; void RegisterProfilePrefs(PrefRegistrySimple* registry) { @@ -187,7 +189,11 @@ diff --git a/components/autofill_assistant/browser/public/prefs.cc b/components/ + registry->RegisterBooleanPref(prefs::kAutofillAssistantEnabled, false); registry->RegisterBooleanPref(prefs::kAutofillAssistantConsent, false); registry->RegisterBooleanPref(prefs::kAutofillAssistantTriggerScriptsEnabled, - true); +- true); ++ false); + registry->RegisterBooleanPref( + prefs::kAutofillAssistantTriggerScriptsIsFirstTimeUser, true); + } diff --git a/components/password_manager/core/browser/password_generation_frame_helper.cc b/components/password_manager/core/browser/password_generation_frame_helper.cc --- a/components/password_manager/core/browser/password_generation_frame_helper.cc +++ b/components/password_manager/core/browser/password_generation_frame_helper.cc diff --git a/build/patches/build-remove-calling-untrusted-hooks.patch b/build/patches/build-remove-calling-untrusted-hooks.patch index 7171dc06..0397bb66 100644 --- a/build/patches/build-remove-calling-untrusted-hooks.patch +++ b/build/patches/build-remove-calling-untrusted-hooks.patch @@ -7,8 +7,8 @@ sysroot. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - DEPS | 129 ++++------------------------------------------------------- - 1 file changed, 8 insertions(+), 121 deletions(-) + DEPS | 124 ++--------------------------------------------------------- + 1 file changed, 3 insertions(+), 121 deletions(-) diff --git a/DEPS b/DEPS --- a/DEPS @@ -141,7 +141,7 @@ diff --git a/DEPS b/DEPS # Pull rc binaries using checked-in hashes. { 'name': 'rc_win', -@@ -4274,30 +4180,11 @@ hooks = [ +@@ -4274,30 +4180,6 @@ hooks = [ '-s', 'src/build/toolchain/win/rc/mac/rc.sha1', ], }, @@ -169,11 +169,6 @@ diff --git a/DEPS b/DEPS - '-s', 'src/third_party/test_fonts/test_fonts.tar.gz.sha1', - ], - }, -+<<<<<<< found -+||||||| expected -+ 'condition': 'checkout_testdata', -+======= -+>>>>>>> replacement # Download test resources for opus, i.e. audio files. { 'name': 'opus_test_files', diff --git a/build/patches/ungoogled-chromium-Disable-profile-avatar.patch b/build/patches/ungoogled-chromium-Disable-profile-avatar.patch index f07e62a3..5e43b937 100644 --- a/build/patches/ungoogled-chromium-Disable-profile-avatar.patch +++ b/build/patches/ungoogled-chromium-Disable-profile-avatar.patch @@ -13,7 +13,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -1454,8 +1454,6 @@ static_library("browser") { +@@ -1448,8 +1448,6 @@ static_library("browser") { "profiles/profile_attributes_storage.cc", "profiles/profile_attributes_storage.h", "profiles/profile_attributes_storage_observer.h", diff --git a/build/patches/ungoogled-chromium-Disable-translate-integration.patch b/build/patches/ungoogled-chromium-Disable-translate-integration.patch index 839428b8..16905564 100644 --- a/build/patches/ungoogled-chromium-Disable-translate-integration.patch +++ b/build/patches/ungoogled-chromium-Disable-translate-integration.patch @@ -81,7 +81,7 @@ diff --git a/chrome/browser/language/android/java/res/xml/languages_preferences. diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java --- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java +++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/settings/LanguageSettings.java -@@ -49,12 +49,6 @@ public class LanguageSettings extends PreferenceFragmentCompat +@@ -48,12 +48,6 @@ public class LanguageSettings extends PreferenceFragmentCompat static final String APP_LANGUAGE_PREFERENCE_KEY = "app_language_preference"; static final String PREFERRED_LANGUAGES_KEY = "preferred_languages"; static final String CONTENT_LANGUAGES_KEY = "content_languages_preference"; @@ -94,7 +94,7 @@ diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browse private static final String TAG = "LanguageSettings"; -@@ -100,27 +94,6 @@ public class LanguageSettings extends PreferenceFragmentCompat +@@ -99,27 +93,6 @@ public class LanguageSettings extends PreferenceFragmentCompat ContentLanguagesPreference mLanguageListPref = (ContentLanguagesPreference) findPreference(PREFERRED_LANGUAGES_KEY); mLanguageListPref.registerActivityLauncher(this); @@ -122,7 +122,7 @@ diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browse } /** -@@ -140,8 +113,6 @@ public class LanguageSettings extends PreferenceFragmentCompat +@@ -134,8 +107,6 @@ public class LanguageSettings extends PreferenceFragmentCompat ContentLanguagesPreference mLanguageListPref = (ContentLanguagesPreference) findPreference(CONTENT_LANGUAGES_KEY); mLanguageListPref.registerActivityLauncher(this); @@ -131,7 +131,7 @@ diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browse } /** -@@ -171,7 +142,7 @@ public class LanguageSettings extends PreferenceFragmentCompat +@@ -165,7 +136,7 @@ public class LanguageSettings extends PreferenceFragmentCompat * @param contentLanguagesPreference ContentLanguagesPreference reference to update about state * changes. */ @@ -140,7 +140,7 @@ diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browse // Setup expandable advanced settings section. PreferenceCategory translationAdvancedSection = (PreferenceCategory) findPreference(TRANSLATION_ADVANCED_SECTION); -@@ -233,9 +204,7 @@ public class LanguageSettings extends PreferenceFragmentCompat +@@ -227,9 +198,7 @@ public class LanguageSettings extends PreferenceFragmentCompat return true; } }); @@ -151,7 +151,7 @@ diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browse @Override public void onStart() { -@@ -273,12 +242,6 @@ public class LanguageSettings extends PreferenceFragmentCompat +@@ -267,12 +236,6 @@ public class LanguageSettings extends PreferenceFragmentCompat // Set the default target language to match the new app language. TranslateBridge.setDefaultTargetLanguage(code); } else if (requestCode == REQUEST_CODE_CHANGE_TARGET_LANGUAGE) { @@ -167,7 +167,7 @@ diff --git a/chrome/browser/language/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 -@@ -1604,9 +1604,6 @@ Your Google account may have other forms of browsing history like searches and a +@@ -1557,9 +1557,6 @@ Your Google account may have other forms of browsing history like searches and a Websites will show text in your preferred language, when possible. diff --git a/build/patches/ungoogled-chromium-no-special-hosts-domains.patch b/build/patches/ungoogled-chromium-no-special-hosts-domains.patch index abe60a04..fb500d0d 100644 --- a/build/patches/ungoogled-chromium-no-special-hosts-domains.patch +++ b/build/patches/ungoogled-chromium-no-special-hosts-domains.patch @@ -8,19 +8,21 @@ Disable domain reliability detection License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../domain_reliability/service_factory.cc | 24 +- - components/domain_reliability/BUILD.gn | 42 ++-- + .../from_gws_page_load_metrics_observer.cc | 6 +- + components/domain_reliability/BUILD.gn | 42 ++- .../domain_reliability/bake_in_configs.py | 2 +- .../domain_reliability/context_manager.cc | 22 +- .../domain_reliability/google_configs.cc | 10 +- .../domain_reliability/google_configs.h | 8 +- components/domain_reliability/uploader.cc | 2 +- - components/google/core/common/google_util.cc | 220 ++---------------- + components/google/core/common/google_util.cc | 243 +----------------- + components/google/core/common/google_util.h | 5 - .../browser/page_load_metrics_util.cc | 4 +- .../common/page_load_metrics_util.cc | 33 +-- components/search_engines/template_url.cc | 6 +- net/base/url_util.cc | 21 -- services/network/network_context.cc | 2 +- - 13 files changed, 46 insertions(+), 350 deletions(-) + 15 files changed, 41 insertions(+), 389 deletions(-) diff --git a/chrome/browser/domain_reliability/service_factory.cc b/chrome/browser/domain_reliability/service_factory.cc --- a/chrome/browser/domain_reliability/service_factory.cc @@ -61,6 +63,29 @@ diff --git a/chrome/browser/domain_reliability/service_factory.cc b/chrome/brows } } // namespace domain_reliability +diff --git a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc +--- a/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc ++++ b/chrome/browser/page_load_metrics/observers/from_gws_page_load_metrics_observer.cc +@@ -394,8 +394,7 @@ FromGWSPageLoadMetricsLogger::~FromGWSPageLoadMetricsLogger() = default; + void FromGWSPageLoadMetricsLogger::SetPreviouslyCommittedUrl(const GURL& url) { + if (page_load_metrics::IsGoogleSearchResultUrl(url)) { + previously_committed_url_is_search_results_ = true; +- navigation_initiated_search_mode_ = +- google_util::GoogleSearchModeFromUrl(url); ++ navigation_initiated_search_mode_ = google_util::GoogleSearchMode::kWeb; + } + previously_committed_url_is_search_redirector_ = + page_load_metrics::IsGoogleSearchRedirectorUrl(url); +@@ -412,8 +411,7 @@ void FromGWSPageLoadMetricsLogger::SetNavigationStateForSidePanel( + initiating_side_panel_url_ = initiating_side_panel_url; + navigation_initiated_via_link_ = navigation_initiated_via_link; + if (page_load_metrics::IsGoogleSearchResultUrl(initiating_side_panel_url)) { +- navigation_initiated_search_mode_ = +- google_util::GoogleSearchModeFromUrl(initiating_side_panel_url); ++ navigation_initiated_search_mode_ = google_util::GoogleSearchMode::kWeb; + } + } + diff --git a/components/domain_reliability/BUILD.gn b/components/domain_reliability/BUILD.gn --- a/components/domain_reliability/BUILD.gn +++ b/components/domain_reliability/BUILD.gn @@ -241,14 +266,10 @@ diff --git a/components/domain_reliability/uploader.cc b/components/domain_relia diff --git a/components/google/core/common/google_util.cc b/components/google/core/common/google_util.cc --- a/components/google/core/common/google_util.cc +++ b/components/google/core/common/google_util.cc -@@ -27,130 +27,10 @@ +@@ -31,60 +31,6 @@ namespace google_util { - namespace google_util { + namespace { --// Helpers -------------------------------------------------------------------- -- --namespace { -- -bool IsPathHomePageBase(base::StringPiece path) { - return (path == "/") || (path == "/webhp"); -} @@ -303,20 +324,13 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co - return base::EqualsCaseInsensitiveASCII(host_minus_tld, www_domain); -} - --// True if |url| is a valid URL with HTTP or HTTPS scheme. If |port_permission| --// is DISALLOW_NON_STANDARD_PORTS, this also requires |url| to use the standard --// port for its scheme (80 for HTTP, 443 for HTTPS). --bool IsValidURL(const GURL& url, PortPermission port_permission) { -- static bool g_ignore_port_numbers = -- base::CommandLine::ForCurrentProcess()->HasSwitch( -- switches::kIgnoreGooglePortNumbers); -- return url.is_valid() && url.SchemeIsHTTPOrHTTPS() && -- (url.port().empty() || g_ignore_port_numbers || -- (port_permission == ALLOW_NON_STANDARD_PORTS)); --} -- --bool IsCanonicalHostGoogleHostname(base::StringPiece canonical_host, -- SubdomainPermission subdomain_permission) { + // True if |url| is a valid URL with HTTP or HTTPS scheme. If |port_permission| + // is DISALLOW_NON_STANDARD_PORTS, this also requires |url| to use the standard + // port for its scheme (80 for HTTP, 443 for HTTPS). +@@ -99,40 +45,7 @@ bool IsValidURL(const GURL& url, PortPermission port_permission) { + + bool IsCanonicalHostGoogleHostname(base::StringPiece canonical_host, + SubdomainPermission subdomain_permission) { - const GURL& base_url(CommandLineGoogleBaseURL()); - if (base_url.is_valid() && (canonical_host == base_url.host_piece())) - return true; @@ -351,11 +365,11 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co - {"ipv4.google.com", "ipv6.google.com"}); - - return google_subdomains.contains(host); --} -- --} // namespace -- - // Global functions ----------------------------------------------------------- ++ return false; + } + + } // namespace +@@ -141,16 +54,6 @@ bool IsGoogleSearchSubdomainUrl(const GURL& url) { const char kGoogleHomepageURL[] = "https://www.google.com/"; @@ -372,7 +386,7 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co std::string GetGoogleLocale(const std::string& application_locale) { // Google does not recognize "nb" for Norwegian Bokmal; it uses "no". return (application_locale == "nb") ? "no" : application_locale; -@@ -163,25 +43,7 @@ GURL AppendGoogleLocaleParam(const GURL& url, +@@ -163,25 +66,7 @@ GURL AppendGoogleLocaleParam(const GURL& url, } std::string GetGoogleCountryCode(const GURL& google_homepage_url) { @@ -399,43 +413,7 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co } GURL GetGoogleSearchURL(const GURL& google_homepage_url) { -@@ -193,92 +55,36 @@ GURL GetGoogleSearchURL(const GURL& google_homepage_url) { - return google_homepage_url.ReplaceComponents(replacements); - } - --const GURL& CommandLineGoogleBaseURL() { -- // Unit tests may add command-line flags after the first call to this -- // function, so we don't simply initialize a static |base_url| directly and -- // then unconditionally return it. -- static base::NoDestructor switch_value; -- static base::NoDestructor base_url; -- std::string current_switch_value( -- base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( -- switches::kGoogleBaseURL)); -- if (current_switch_value != *switch_value) { -- *switch_value = current_switch_value; -- *base_url = url_formatter::FixupURL(*switch_value, std::string()); -- if (!base_url->is_valid() || base_url->has_query() || base_url->has_ref()) -- *base_url = GURL(); -- } -- return *base_url; --} -- - bool StartsWithCommandLineGoogleBaseURL(const GURL& url) { -- const GURL& base_url(CommandLineGoogleBaseURL()); -- return base_url.is_valid() && -- base::StartsWith(url.possibly_invalid_spec(), base_url.spec(), -- base::CompareCase::SENSITIVE); -+ return false; - } - - bool IsGoogleDomainUrl(const GURL& url, - SubdomainPermission subdomain_permission, - PortPermission port_permission) { -- return IsValidURL(url, port_permission) && -- IsCanonicalHostGoogleHostname(url.host_piece(), subdomain_permission); -+ return false; - } +@@ -227,93 +112,24 @@ bool IsGoogleDomainUrl(const GURL& url, bool IsGoogleHostname(base::StringPiece host, SubdomainPermission subdomain_permission) { @@ -445,7 +423,7 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co + return false; } --bool IsGoogleHomePageUrl(const GURL& url) { + bool IsGoogleHomePageUrl(const GURL& url) { - // First check to see if this has a Google domain. - if (!IsGoogleDomainUrl(url, DISALLOW_SUBDOMAIN, - DISALLOW_NON_STANDARD_PORTS) && @@ -457,11 +435,10 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co - base::StringPiece path(url.path_piece()); - return IsPathHomePageBase(path) || - base::StartsWith(path, "/ig", base::CompareCase::INSENSITIVE_ASCII); -+bool IsGoogleHomePageUrl(const GURL& url) { // disabled in Bromite + return false; } --bool IsGoogleSearchUrl(const GURL& url) { + bool IsGoogleSearchUrl(const GURL& url) { - // First check to see if this has a Google domain. - if (!IsGoogleDomainUrl(url, DISALLOW_SUBDOMAIN, - DISALLOW_NON_STANDARD_PORTS) && @@ -479,31 +456,128 @@ diff --git a/components/google/core/common/google_util.cc b/components/google/co - // the path type. - return HasGoogleSearchQueryParam(url.ref_piece()) || - (!is_home_page_base && HasGoogleSearchQueryParam(url.query_piece())); -+bool IsGoogleSearchUrl(const GURL& url) { // disabled in Bromite + return false; } --bool IsYoutubeDomainUrl(const GURL& url, -- SubdomainPermission subdomain_permission, -- PortPermission port_permission) { + bool IsYoutubeDomainUrl(const GURL& url, + SubdomainPermission subdomain_permission, + PortPermission port_permission) { - return IsValidURL(url, port_permission) && - IsCanonicalHostYoutubeHostname(url.host_piece(), subdomain_permission); -+bool IsYoutubeDomainUrl(const GURL& url, SubdomainPermission subdomain_permission, PortPermission port_permission) { // disabled in Bromite + return false; } --bool IsGoogleAssociatedDomainUrl(const GURL& url) { + bool IsGoogleAssociatedDomainUrl(const GURL& url) { - if (IsGoogleDomainUrl(url, ALLOW_SUBDOMAIN, ALLOW_NON_STANDARD_PORTS)) - return true; - - if (IsYoutubeDomainUrl(url, ALLOW_SUBDOMAIN, ALLOW_NON_STANDARD_PORTS)) - return true; -+bool IsGoogleAssociatedDomainUrl(const GURL& url) { // disabled on Bromite -+ if ((true)) -+ return false; +- +- // Some domains don't have international TLD extensions, so testing for them +- // is very straightforward. +- static const char* kSuffixesToSetHeadersFor[] = { +- ".android.com", +- ".doubleclick.com", +- ".doubleclick.net", +- ".ggpht.com", +- ".googleadservices.com", +- ".googleapis.com", +- ".googlesyndication.com", +- ".googleusercontent.com", +- ".googlevideo.com", +- ".gstatic.com", +- ".litepages.googlezip.net", +- ".youtubekids.com", +- ".ytimg.com", +- }; +- const std::string host = url.host(); +- for (size_t i = 0; i < std::size(kSuffixesToSetHeadersFor); ++i) { +- if (base::EndsWith(host, kSuffixesToSetHeadersFor[i], +- base::CompareCase::INSENSITIVE_ASCII)) { +- return true; +- } +- } +- +- // Exact hostnames in lowercase to set headers for. +- static const char* kHostsToSetHeadersFor[] = { +- "googleweblight.com", +- }; +- for (size_t i = 0; i < std::size(kHostsToSetHeadersFor); ++i) { +- if (base::EqualsCaseInsensitiveASCII(host, kHostsToSetHeadersFor[i])) +- return true; +- } +- + return false; + } - // Some domains don't have international TLD extensions, so testing for them - // is very straightforward. +@@ -382,51 +198,4 @@ GURL AppendToAsyncQueryParam(const GURL& url, + return url.ReplaceComponents(replacements); + } + +-GoogleSearchMode GoogleSearchModeFromUrl(const GURL& url) { +- static_assert(GoogleSearchMode::kMaxValue == GoogleSearchMode::kFlights, +- "This function should be updated if new values are added to " +- "GoogleSearchMode"); +- +- base::StringPiece query_str = url.query_piece(); +- url::Component query(0, static_cast(url.query_piece().length())); +- url::Component key, value; +- GoogleSearchMode mode = GoogleSearchMode::kUnspecified; +- while (url::ExtractQueryKeyValue(query_str.data(), &query, &key, &value)) { +- base::StringPiece key_str = query_str.substr(key.begin, key.len); +- if (key_str != "tbm") { +- continue; +- } +- if (mode != GoogleSearchMode::kUnspecified) { +- // There is more than one tbm parameter, which is not expected. Return +- // kUnknown to signify the result can't be trusted. +- return GoogleSearchMode::kUnknown; +- } +- base::StringPiece value_str = query_str.substr(value.begin, value.len); +- if (value_str == "isch") { +- mode = GoogleSearchMode::kImages; +- } else if (value_str == "web") { +- mode = GoogleSearchMode::kWeb; +- } else if (value_str == "nws") { +- mode = GoogleSearchMode::kNews; +- } else if (value_str == "shop") { +- mode = GoogleSearchMode::kShopping; +- } else if (value_str == "vid") { +- mode = GoogleSearchMode::kVideos; +- } else if (value_str == "bks") { +- mode = GoogleSearchMode::kBooks; +- } else if (value_str == "flm") { +- mode = GoogleSearchMode::kFlights; +- } else if (value_str == "lcl") { +- mode = GoogleSearchMode::kLocal; +- } else { +- mode = GoogleSearchMode::kUnknown; +- } +- } +- if (mode == GoogleSearchMode::kUnspecified) { +- // No tbm query parameter means this is the Web mode. +- mode = GoogleSearchMode::kWeb; +- } +- return mode; +-} +- + } // namespace google_util +diff --git a/components/google/core/common/google_util.h b/components/google/core/common/google_util.h +--- a/components/google/core/common/google_util.h ++++ b/components/google/core/common/google_util.h +@@ -154,11 +154,6 @@ GURL AppendToAsyncQueryParam(const GURL& url, + const std::string& key, + const std::string& value); + +-// Returns Google Search mode used by the user. This corresponds to the tab +-// (e.g. web result, image results, video results, etc.) the user is on. This +-// information is extracted from the "tbm" query parameter on the Search URL. +-GoogleSearchMode GoogleSearchModeFromUrl(const GURL& url); +- + } // namespace google_util + + #endif // COMPONENTS_GOOGLE_CORE_COMMON_GOOGLE_UTIL_H_ diff --git a/components/page_load_metrics/browser/page_load_metrics_util.cc b/components/page_load_metrics/browser/page_load_metrics_util.cc --- a/components/page_load_metrics/browser/page_load_metrics_util.cc +++ b/components/page_load_metrics/browser/page_load_metrics_util.cc diff --git a/build/patches/webRTC-do-not-expose-local-IP-addresses.patch b/build/patches/webRTC-do-not-expose-local-IP-addresses.patch index 87cf8bd5..4971e76e 100644 --- a/build/patches/webRTC-do-not-expose-local-IP-addresses.patch +++ b/build/patches/webRTC-do-not-expose-local-IP-addresses.patch @@ -29,7 +29,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc --- a/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc +++ b/third_party/blink/renderer/modules/peerconnection/peer_connection_dependency_factory.cc -@@ -104,7 +104,9 @@ WebRTCIPHandlingPolicy GetWebRTCIPHandlingPolicy(const String& preference) { +@@ -105,7 +105,9 @@ WebRTCIPHandlingPolicy GetWebRTCIPHandlingPolicy(const String& preference) { return kDefaultPublicInterfaceOnly; if (preference == kWebRTCIPHandlingDisableNonProxiedUdp) return kDisableNonProxiedUdp; @@ -40,7 +40,7 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_d } bool IsValidPortRange(uint16_t min_port, uint16_t max_port) { -@@ -785,7 +787,7 @@ PeerConnectionDependencyFactory::CreatePortAllocator( +@@ -791,7 +793,7 @@ PeerConnectionDependencyFactory::CreatePortAllocator( break; }