From a608bc0a784316175ccfc4f86c5c206d29b3302f Mon Sep 17 00:00:00 2001 From: Carmelo Messina Date: Wed, 21 Feb 2024 11:13:53 +0100 Subject: [PATCH] v122 final patches --- .../AImageReader-CFI-crash-mitigations.patch | 62 +++- ...Plus-add-blocking-in-service-workers.patch | 18 +- .../Add-a-proxy-configuration-page.patch | 20 +- .../Add-bookmark-import-export-actions.patch | 22 +- build/patches/Add-cromite-flags-support.patch | 50 +-- ...dd-custom-tab-intents-privacy-option.patch | 19 +- .../Add-flag-to-disable-IPv6-probes.patch | 24 +- ...Add-lifetime-options-for-permissions.patch | 68 ++-- .../Add-menu-item-to-bookmark-all-tabs.patch | 39 +-- .../Add-option-to-disable-snapshots.patch | 2 +- .../Add-option-to-use-home-page-as-NTP.patch | 2 +- ...d-setting-to-invert-tap-and-long-tap.patch | 12 +- ...ow-building-without-supervised-users.patch | 4 +- build/patches/Bromite-auto-updater.patch | 22 +- .../Bromite-subresource-adblocker.patch | 20 +- build/patches/Client-hints-overrides.patch | 72 +++- .../Content-settings-infrastructure.patch | 65 ++-- .../Disable-Android-AppRestrictions.patch | 13 +- ...-FirstPartySets-and-StorageAccessAPI.patch | 59 +++- build/patches/Disable-GSA-by-default.patch | 22 +- build/patches/Disable-PrivacyGuide.patch | 21 +- build/patches/Disable-TLS-resumption.patch | 2 +- .../patches/Disable-all-predictors-code.patch | 63 +++- build/patches/Disable-safety-check.patch | 2 +- ...ble-support-for-RAR-files-inspection.patch | 2 +- .../Enable-ImprovedBookmarks-by-default.patch | 2 +- ...le-search-engine-settings-desktop-ui.patch | 12 +- .../Experimental-user-scripts-support.patch | 24 +- .../Eyeo-Adblock-Remove-Privacy-Issues.patch | 19 +- build/patches/JIT-site-settings.patch | 6 +- .../Move-navigation-bar-to-bottom.patch | 15 +- .../patches/Partition-HSTS-cache-by-NAK.patch | 330 +++++++++++++++--- ...ning-all-cookies-by-top-frame-domain.patch | 39 ++- ...referrals-in-cross-origin-navigation.patch | 2 +- .../Remove-binary-blob-integrations.patch | 151 +++++++- .../Restore-Simplified-NTP-launch.patch | 24 +- ...-button-in-top-toolbar-customization.patch | 37 +- .../Restore-offline-indicator-v2-flag.patch | 11 +- ...-Add-a-log-to-track-strange-behavior.patch | 2 +- .../Use-list-mode-for-tab-switcher.patch | 18 +- build/patches/Welcome-screen.patch | 7 +- build/patches/add-browser-policy.patch | 88 ++++- build/patches/bromite-build-utils.patch | 7 +- .../eyeo-beta-118.0.5993.48-android_api.patch | 8 +- .../eyeo-beta-118.0.5993.48-base.patch | 7 +- ...eta-118.0.5993.48-chrome_integration.patch | 6 +- .../updater-disable-updater-pings.patch | 21 +- 47 files changed, 1152 insertions(+), 389 deletions(-) diff --git a/build/patches/AImageReader-CFI-crash-mitigations.patch b/build/patches/AImageReader-CFI-crash-mitigations.patch index ffde45cf..4d1a44b1 100644 --- a/build/patches/AImageReader-CFI-crash-mitigations.patch +++ b/build/patches/AImageReader-CFI-crash-mitigations.patch @@ -20,7 +20,8 @@ See discussions at: License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - base/android/android_image_reader_compat.cc | 9 +++++++++ + base/android/android_image_reader_compat.cc | 16 ++++++++++++++++ + base/android/android_image_reader_compat.h | 14 ++++++++++++++ chrome/browser/flag-metadata.json | 6 +++--- .../AImageReader-CFI-crash-mitigations.inc | 4 ++++ .../AImageReader-CFI-crash-mitigations.inc | 1 + @@ -29,38 +30,63 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html gpu/config/gpu_finch_features.h | 1 + gpu/config/gpu_util.cc | 8 ++++++++ gpu/config/gpu_workaround_list.txt | 1 + - gpu/ipc/service/gpu_init.cc | 7 +++++++ + gpu/ipc/service/gpu_init.cc | 8 ++++++++ gpu/ipc/service/stream_texture_android.cc | 11 ++++++++++- - 11 files changed, 65 insertions(+), 4 deletions(-) + 12 files changed, 87 insertions(+), 4 deletions(-) create mode 100644 cromite_flags/media/base/media_switches_cc/AImageReader-CFI-crash-mitigations.inc create mode 100644 cromite_flags/media/base/media_switches_h/AImageReader-CFI-crash-mitigations.inc diff --git a/base/android/android_image_reader_compat.cc b/base/android/android_image_reader_compat.cc --- a/base/android/android_image_reader_compat.cc +++ b/base/android/android_image_reader_compat.cc -@@ -7,7 +7,14 @@ +@@ -7,7 +7,23 @@ namespace base { namespace android { -+bool AndroidImageReader::disable_support_ = false; ++AndroidImageReader& AndroidImageReader::GetInstance() { ++ // C++11 static local variable initialization is ++ // thread-safe. ++ static AndroidImageReader instance; ++ return instance; ++} + +void AndroidImageReader::DisableSupport() { + disable_support_ = true; +} ++ ++bool AndroidImageReader::IsSupported() { ++ return !disable_support_; ++} + bool EnableAndroidImageReader() { -+ if (disable_support_) return false; ++ if (!AndroidImageReader::GetInstance().IsSupported()) return false; // Currently we want to enable AImageReader only for android P+ devices. if (__builtin_available(android 28, *)) { return true; -@@ -15,5 +22,7 @@ bool EnableAndroidImageReader() { - return false; - } +diff --git a/base/android/android_image_reader_compat.h b/base/android/android_image_reader_compat.h +--- a/base/android/android_image_reader_compat.h ++++ b/base/android/android_image_reader_compat.h +@@ -10,6 +10,20 @@ + namespace base { + namespace android { -+FIX ME! ++class BASE_EXPORT AndroidImageReader { ++ public: ++ // Thread safe GetInstance. ++ static AndroidImageReader& GetInstance(); + - } // namespace android - } // namespace base ++ bool IsSupported(); ++ ++ // Disable image reader support. ++ void DisableSupport(); ++ ++ private: ++ bool disable_support_ = false; ++}; ++ + // Check if the image reader usage is supported. + BASE_EXPORT bool EnableAndroidImageReader(); + 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 @@ -183,14 +209,22 @@ diff --git a/gpu/config/gpu_workaround_list.txt b/gpu/config/gpu_workaround_list 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 -@@ -672,6 +672,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, +@@ -65,6 +65,7 @@ + + #if BUILDFLAG(IS_ANDROID) + #include "ui/gfx/android/android_surface_control_compat.h" ++#include "base/android/android_image_reader_compat.h" + #endif + + #if BUILDFLAG(ENABLE_VULKAN) +@@ -672,6 +673,13 @@ bool GpuInit::InitializeAndStartSandbox(base::CommandLine* command_line, } #endif // BUILDFLAG(IS_WIN) +#if BUILDFLAG(IS_ANDROID) + // Disable AImageReader if the workaround is enabled. + if (gpu_feature_info_.IsWorkaroundEnabled(DISABLE_AIMAGEREADER)) { -+ base::android::AndroidImageReader::DisableSupport(); ++ base::android::AndroidImageReader::GetInstance().DisableSupport(); + } +#endif + diff --git a/build/patches/AdblockPlus-add-blocking-in-service-workers.patch b/build/patches/AdblockPlus-add-blocking-in-service-workers.patch index 0b8c311d..64cfad2c 100644 --- a/build/patches/AdblockPlus-add-blocking-in-service-workers.patch +++ b/build/patches/AdblockPlus-add-blocking-in-service-workers.patch @@ -447,7 +447,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.h b/chrome/browser/chr diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/components/adblock/content/browser/adblock_url_loader_factory.cc --- a/components/adblock/content/browser/adblock_url_loader_factory.cc +++ b/components/adblock/content/browser/adblock_url_loader_factory.cc -@@ -343,12 +343,6 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestError( +@@ -344,12 +344,6 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestError( void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch( CheckFilterMatchCallback callback) { @@ -460,7 +460,7 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/ auto subscription_service = factory_->config_.subscription_service; if (is_document_request_) { auto* host = content::RenderFrameHost::FromID(factory_->host_id_); -@@ -387,7 +381,7 @@ void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch( +@@ -388,7 +382,7 @@ void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch( } else { factory_->config_.resource_classifier->CheckRequestFilterMatch( subscription_service->GetCurrentSnapshot(), request_url_, @@ -469,7 +469,7 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/ base::BindOnce( &AdblockURLLoaderFactory::InProgressRequest::OnRequestUrlClassified, weak_factory_.GetWeakPtr(), -@@ -676,12 +670,14 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestFilterMatchResult( +@@ -677,12 +671,14 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestFilterMatchResult( AdblockURLLoaderFactory::AdblockURLLoaderFactory( AdblockURLLoaderFactoryConfig config, @@ -528,7 +528,7 @@ diff --git a/components/adblock/content/browser/frame_hierarchy_builder.cc b/com diff --git a/components/adblock/content/browser/resource_classification_runner.h b/components/adblock/content/browser/resource_classification_runner.h --- a/components/adblock/content/browser/resource_classification_runner.h +++ b/components/adblock/content/browser/resource_classification_runner.h -@@ -81,14 +81,22 @@ class ResourceClassificationRunner : public KeyedService { +@@ -81,12 +81,20 @@ class ResourceClassificationRunner : public KeyedService { virtual void CheckRequestFilterMatch( SubscriptionService::Snapshot subscription_collections, const GURL& request_url, @@ -540,17 +540,15 @@ diff --git a/components/adblock/content/browser/resource_classification_runner.h SubscriptionService::Snapshot subscription_collections, const GURL& request_url, + const GURL& request_initiator, - content::GlobalRenderFrameHostId render_frame_host_id, - CheckFilterMatchCallback callback) = 0; ++ content::GlobalRenderFrameHostId render_frame_host_id, ++ CheckFilterMatchCallback callback) = 0; + virtual void CheckRequestFilterMatchForWebTransport( + SubscriptionService::Snapshot subscription_collections, + const GURL& request_url, + const GURL& request_initiator, -+ content::GlobalRenderFrameHostId render_frame_host_id, -+ CheckFilterMatchCallback callback); + content::GlobalRenderFrameHostId render_frame_host_id, + CheckFilterMatchCallback callback) = 0; // No callback, just notify observers - virtual void CheckDocumentAllowlisted( - SubscriptionService::Snapshot subscription_collection, diff --git a/components/adblock/content/browser/resource_classification_runner_impl.cc b/components/adblock/content/browser/resource_classification_runner_impl.cc --- a/components/adblock/content/browser/resource_classification_runner_impl.cc +++ b/components/adblock/content/browser/resource_classification_runner_impl.cc diff --git a/build/patches/Add-a-proxy-configuration-page.patch b/build/patches/Add-a-proxy-configuration-page.patch index e8968056..ee1fb24f 100644 --- a/build/patches/Add-a-proxy-configuration-page.patch +++ b/build/patches/Add-a-proxy-configuration-page.patch @@ -1354,8 +1354,8 @@ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_c + // special case: a single proxy servers list specified + if (type == Type::PROXY_LIST) { + std::string proxy_list; -+ for (const ProxyServer& proxy_server : -+ single_proxies.GetAll()) { ++ for (const auto& proxy_chain : single_proxies.AllChains()) { ++ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0); + proxy_list += ProxyServerToProxyUri(proxy_server) + ";"; + } + // remove last semicolon @@ -1373,20 +1373,20 @@ diff --git a/net/proxy_resolution/proxy_config.cc b/net/proxy_resolution/proxy_c + + // start to build a per-scheme list + std::string list; -+ for (const ProxyServer& proxy_server : -+ proxies_for_http.GetAll()) { ++ for (const auto& proxy_chain : proxies_for_http.AllChains()) { ++ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0); + list += "http=" + ProxyServerToProxyUri(proxy_server) + ";"; + } -+ for (const ProxyServer& proxy_server : -+ proxies_for_https.GetAll()) { ++ for (const auto& proxy_chain : proxies_for_https.AllChains()) { ++ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0); + list += "https=" + ProxyServerToProxyUri(proxy_server) + ";"; + } -+ for (const ProxyServer& proxy_server : -+ proxies_for_ftp.GetAll()) { ++ for (const auto& proxy_chain : proxies_for_ftp.AllChains()) { ++ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0); + list += "ftp=" + ProxyServerToProxyUri(proxy_server) + ";"; + } -+ for (const ProxyServer& proxy_server : -+ fallback_proxies.GetAll()) { ++ for (const auto& proxy_chain : fallback_proxies.AllChains()) { ++ net::ProxyServer proxy_server = proxy_chain.GetProxyServer(/*chain_index=*/0); + list += "socks=" + ProxyServerToProxyUri(proxy_server) + ";"; + } + if (list.length() != 0 ) { diff --git a/build/patches/Add-bookmark-import-export-actions.patch b/build/patches/Add-bookmark-import-export-actions.patch index 1129c462..5f0f9c69 100644 --- a/build/patches/Add-bookmark-import-export-actions.patch +++ b/build/patches/Add-bookmark-import-export-actions.patch @@ -26,7 +26,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../bookmarks/BookmarkToolbarViewBinder.java | 6 + .../native_page/NativePageFactory.java | 11 +- chrome/browser/BUILD.gn | 11 +- - .../bookmarks/android/bookmark_bridge.cc | 283 ++++++++++++++++++ + .../bookmarks/android/bookmark_bridge.cc | 287 ++++++++++++++++++ .../bookmarks/android/bookmark_bridge.h | 30 +- .../browser/bookmarks/bookmark_html_writer.cc | 11 + .../dialogs/DownloadLocationCustomView.java | 8 +- @@ -53,7 +53,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html ui/shell_dialogs/select_file_dialog_linux.cc | 4 + ui/shell_dialogs/select_file_dialog_linux.h | 2 + ui/shell_dialogs/select_file_dialog_win.cc | 5 + - 43 files changed, 918 insertions(+), 29 deletions(-) + 43 files changed, 922 insertions(+), 29 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/add-bookmark-import-export-actions.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-bookmark-import-export-actions.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/add-bookmark-import-export-actions.inc @@ -863,7 +863,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc --- a/chrome/browser/bookmarks/android/bookmark_bridge.cc +++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc -@@ -58,6 +58,25 @@ +@@ -58,6 +58,28 @@ #include "content/public/browser/browser_thread.h" #include "content/public/browser/web_contents.h" @@ -885,11 +885,14 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse +#include "base/task/task_traits.h" +#include "base/task/thread_pool.h" +#include "content/public/browser/browser_task_traits.h" ++#include "base/files/file_path.h" ++#include "ui/shell_dialogs/selected_file_info.h" ++#include "ui/shell_dialogs/select_file_dialog.h" + using base::android::AttachCurrentThread; using base::android::ConvertUTF16ToJavaString; using base::android::ConvertUTF8ToJavaString; -@@ -75,12 +94,96 @@ using bookmarks::android::JavaBookmarkIdGetType; +@@ -75,12 +97,96 @@ using bookmarks::android::JavaBookmarkIdGetType; using content::BrowserThread; using power_bookmarks::PowerBookmarkMeta; @@ -986,7 +989,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse class BookmarkTitleComparer { public: explicit BookmarkTitleComparer(BookmarkBridge* bookmark_bridge, -@@ -221,6 +324,10 @@ BookmarkBridge::~BookmarkBridge() { +@@ -221,6 +327,10 @@ BookmarkBridge::~BookmarkBridge() { partner_bookmarks_shim_observation_.Reset(); bookmark_model_observation_.Reset(); profile_observation_.Reset(); @@ -997,7 +1000,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse } void BookmarkBridge::Destroy(JNIEnv*) { -@@ -638,6 +745,182 @@ jint BookmarkBridge::GetTotalBookmarkCount( +@@ -638,6 +748,183 @@ jint BookmarkBridge::GetTotalBookmarkCount( return count; } @@ -1079,8 +1082,9 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + return std::make_unique(data); +} + -+void BookmarkBridge::FileSelected(const base::FilePath& path, int index, ++void BookmarkBridge::FileSelected(const ui::SelectedFileInfo& file, int index, + void* params) { ++ base::FilePath path = file.path(); + base::ThreadPool::PostTaskAndReplyWithResult( + FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()}, + base::BindOnce(&BookmarkBridge::FileSelectedImpl, @@ -1216,7 +1220,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser bool IsDoingExtensiveChanges(JNIEnv* env); + // SelectFileDialog::Listener implementation. -+ void FileSelected(const base::FilePath& path, ++ void FileSelected(const ui::SelectedFileInfo& file, + int index, + void* params) override; + void FileSelectionCanceled(void* params) override; @@ -1371,7 +1375,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse &kCacheActivityTaskID, &kCastDeviceFilter, &kClearOmniboxFocusAfterNavigation, -+ &kBookmarksExportUseSaf ++ &kBookmarksExportUseSaf, &kCreateNewTabInitializeRenderer, &kCCTBrandTransparencyMemoryImprovement, &kCCTClientDataHeader, diff --git a/build/patches/Add-cromite-flags-support.patch b/build/patches/Add-cromite-flags-support.patch index a78fd990..c2376a6d 100644 --- a/build/patches/Add-cromite-flags-support.patch +++ b/build/patches/Add-cromite-flags-support.patch @@ -16,8 +16,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- base/BUILD.gn | 4 +- base/android/feature_map.cc | 8 +- - .../base/cached_flags/CachedFlag.java | 6 + - base/feature_list.cc | 79 +++++++++ + .../base/cached_flags/CachedFlag.java | 8 +- + base/feature_list.cc | 78 +++++++++ base/feature_list.h | 72 ++++++++- build/android/gyp/java_cpp_features.py | 17 ++ chrome/android/java/res/values/values.xml | 3 + @@ -26,7 +26,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../browser/settings/SettingsActivity.java | 36 +++++ chrome/browser/about_flags.cc | 11 ++ chrome/browser/browser_features.cc | 1 + - chrome/browser/flags/BUILD.gn | 12 ++ + chrome/browser/flags/BUILD.gn | 13 ++ .../flags/android/chrome_feature_list.cc | 1 + .../flags/android/chrome_feature_list.h | 1 + .../browser/flags/ChromeFeatureList.java | 13 +- @@ -87,7 +87,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html services/network/public/cpp/features.h | 1 + third_party/blink/common/features.cc | 1 + third_party/blink/public/common/features.h | 1 + - 73 files changed, 736 insertions(+), 18 deletions(-) + 73 files changed, 737 insertions(+), 19 deletions(-) create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/include_all_directory.java create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/java_template/CromiteCachedFlag.java.tmpl create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/placeholder.txt @@ -160,6 +160,15 @@ diff --git a/base/android/feature_map.cc b/base/android/feature_map.cc diff --git a/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.java b/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.java --- a/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.java +++ b/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.java +@@ -124,7 +124,7 @@ public class CachedFlag extends Flag { + .writeBoolean(getSharedPreferenceKey(), isEnabledInNative); + } + +- String getSharedPreferenceKey() { ++ public String getSharedPreferenceKey() { + return CachedFlagsSharedPreferences.FLAGS_CACHED.createKey(mFeatureName); + } + @@ -152,6 +152,12 @@ public class CachedFlag extends Flag { .removeKeysWithPrefix(CachedFlagsSharedPreferences.FLAGS_CACHED); } @@ -176,9 +185,9 @@ diff --git a/base/android/java/src/org/chromium/base/cached_flags/CachedFlag.jav diff --git a/base/feature_list.cc b/base/feature_list.cc --- a/base/feature_list.cc +++ b/base/feature_list.cc -@@ -35,6 +35,32 @@ - #include "base/feature_visitor.h" - #endif // BUILDFLAG(IS_CHROMEOS_ASH) +@@ -37,6 +37,31 @@ + + namespace base { +namespace internal { + @@ -204,12 +213,11 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc +} + +} // namespace internal -+} // namespace base + - namespace base { - namespace { -@@ -451,6 +477,48 @@ bool FeatureList::IsEnabled(const Feature& feature) { + + // Pointer to the FeatureList instance singleton that was set via +@@ -451,6 +476,48 @@ bool FeatureList::IsEnabled(const Feature& feature) { return g_feature_list_instance->IsFeatureEnabled(feature); } @@ -258,7 +266,7 @@ diff --git a/base/feature_list.cc b/base/feature_list.cc // static bool FeatureList::IsValidFeatureOrFieldTrialName(StringPiece name) { return IsStringASCII(name) && name.find_first_of(",<*") == std::string::npos; -@@ -693,6 +761,17 @@ void FeatureList::VisitFeaturesAndParams(FeatureVisitor& visitor) { +@@ -693,6 +760,17 @@ void FeatureList::VisitFeaturesAndParams(FeatureVisitor& visitor) { void FeatureList::FinalizeInitialization() { DCHECK(!initialized_); @@ -336,7 +344,7 @@ diff --git a/base/feature_list.h b/base/feature_list.h +} // namespace base + +#define CROMITE_FEATURE(feature, name, default_state) \ -+ CONSTINIT const base::Feature feature(name, default_state, true, true); \ ++ constinit const base::Feature feature(name, default_state, true, true); \ + _Pragma("clang diagnostic push") \ + _Pragma("clang diagnostic ignored \"-Wglobal-constructors\"") \ + static const ::base::internal::FeatureDefaultStateOverrider \ @@ -424,7 +432,7 @@ diff --git a/chrome/android/java/res/values/values.xml b/chrome/android/java/res 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 -@@ -58,6 +58,10 @@ found in the LICENSE file. +@@ -59,6 +59,10 @@ found in the LICENSE file. android:title="@string/tabgrid_use_icons_title" android:summary="@string/tabgrid_use_icons_summary" android:defaultValue="false" /> @@ -561,7 +569,7 @@ diff --git a/chrome/browser/browser_features.cc b/chrome/browser/browser_feature diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn --- a/chrome/browser/flags/BUILD.gn +++ b/chrome/browser/flags/BUILD.gn -@@ -12,8 +12,12 @@ android_library("java") { +@@ -13,9 +13,14 @@ android_library("java") { "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureMap.java", "android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java", ] @@ -572,9 +580,11 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn deps = [ + ":java_cromite_cached_flags", "//base:base_java", ++ "//base:base_cached_flags_java", "//base/version_info/android:version_constants_java", "//build:chromeos_buildflags", -@@ -24,12 +28,20 @@ android_library("java") { + "//build/android:build_java", +@@ -25,12 +30,20 @@ android_library("java") { "//third_party/jni_zero:jni_zero_java", ] srcjar_deps = [ @@ -598,7 +608,7 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -1008,5 +1008,6 @@ BASE_FEATURE(kWebApkBackupAndRestoreBackend, +@@ -1013,5 +1013,6 @@ BASE_FEATURE(kWebApkBackupAndRestoreBackend, "WebApkBackupAndRestoreBackend", base::FEATURE_DISABLED_BY_DEFAULT); @@ -630,7 +640,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f import java.util.List; import java.util.Map; -@@ -666,7 +670,7 @@ public abstract class ChromeFeatureList { +@@ -667,7 +671,7 @@ public abstract class ChromeFeatureList { public static final CachedFlag sVerticalAutomotiveBackButtonToolbar = newCachedFlag(VERTICAL_AUTOMOTIVE_BACK_BUTTON_TOOLBAR, false); @@ -639,7 +649,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f List.of( sAllowUserCertificates, sAndroidAppIntegration, -@@ -747,6 +751,13 @@ public abstract class ChromeFeatureList { +@@ -748,6 +752,13 @@ public abstract class ChromeFeatureList { sUseLibunwindstackNativeUnwinderAndroid, sVerticalAutomotiveBackButtonToolbar); @@ -689,7 +699,7 @@ new file mode 100644 +import java.util.ArrayList; +import java.util.List; + -+import org.chromium.chrome.browser.flags.CachedFlag; ++import org.chromium.base.cached_flags.CachedFlag; + +{IMPORT_CLAUSE} + diff --git a/build/patches/Add-custom-tab-intents-privacy-option.patch b/build/patches/Add-custom-tab-intents-privacy-option.patch index 053f16d0..517ffe10 100644 --- a/build/patches/Add-custom-tab-intents-privacy-option.patch +++ b/build/patches/Add-custom-tab-intents-privacy-option.patch @@ -13,13 +13,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../java/res/xml/privacy_preferences.xml | 10 ++++++++ .../browser/LaunchIntentDispatcher.java | 21 ++++++++++++++++ + .../customtabs/CustomTabsConnection.java | 1 + .../IncognitoCustomTabIntentDataProvider.java | 6 +++++ .../privacy/settings/PrivacySettings.java | 24 +++++++++++++++++++ .../chrome/browser/tab/TabAssociatedApp.java | 6 ++++- .../strings/android_chrome_strings.grd | 14 +++++++++++ .../core/common/language_experiments.cc | 1 + - .../add-custom-tab-intents-privacy-option.inc | 2 ++ - 8 files changed, 83 insertions(+), 1 deletion(-) + .../add-custom-tab-intents-privacy-option.inc | 1 + + 9 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-custom-tab-intents-privacy-option.inc diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml @@ -94,6 +95,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis if (!chromeTabbedTaskExists()) { newIntent.putExtra(IntentHandler.EXTRA_STARTED_TABBED_CHROME_TASK, true); } +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java +@@ -849,6 +849,7 @@ public class CustomTabsConnection { + PostTask.postTask( + TaskTraits.UI_DEFAULT, + () -> { ++ if ((true)) return; // Disable CCTPostMessageAPI + // Attempt to verify origin synchronously. If successful directly initialize + // postMessage channel for session. + Uri verifiedOrigin = verifyOriginForSession(session, uid, postMessageOrigin); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/IncognitoCustomTabIntentDataProvider.java @@ -225,7 +237,6 @@ diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/a new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-custom-tab-intents-privacy-option.inc -@@ -0,0 +1,2 @@ +@@ -0,0 +1 @@ +SET_CROMITE_FEATURE_DISABLED(kCCTIntentFeatureOverrides); -+SET_CROMITE_FEATURE_DISABLED(kCCTPostMessageAPI); -- diff --git a/build/patches/Add-flag-to-disable-IPv6-probes.patch b/build/patches/Add-flag-to-disable-IPv6-probes.patch index 6cc52665..1c19d3e0 100644 --- a/build/patches/Add-flag-to-disable-IPv6-probes.patch +++ b/build/patches/Add-flag-to-disable-IPv6-probes.patch @@ -4,12 +4,12 @@ Subject: Add flag to disable IPv6 probes License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../add-flag-to-disable-IPv6-probes.inc | 8 ++++++++ - .../features_cc/add-flag-to-disable-IPv6-probes.inc | 3 +++ - .../features_h/add-flag-to-disable-IPv6-probes.inc | 2 ++ - net/BUILD.gn | 1 + - net/dns/host_resolver_manager.cc | 11 +++++++++++ - 5 files changed, 25 insertions(+) + .../about_flags_cc/add-flag-to-disable-IPv6-probes.inc | 8 ++++++++ + .../base/features_cc/add-flag-to-disable-IPv6-probes.inc | 3 +++ + .../base/features_h/add-flag-to-disable-IPv6-probes.inc | 2 ++ + net/BUILD.gn | 1 + + net/dns/host_resolver_manager.cc | 8 ++++++++ + 5 files changed, 22 insertions(+) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/add-flag-to-disable-IPv6-probes.inc create mode 100644 cromite_flags/net/base/features_cc/add-flag-to-disable-IPv6-probes.inc create mode 100644 cromite_flags/net/base/features_h/add-flag-to-disable-IPv6-probes.inc @@ -64,17 +64,7 @@ diff --git a/net/dns/host_resolver_manager.cc b/net/dns/host_resolver_manager.cc #include "net/log/net_log_with_source.h" #include "net/socket/client_socket_factory.h" #include "net/url_request/url_request_context.h" -@@ -1320,6 +1321,9 @@ void HostResolverManager::CreateTaskSequence( - case HostResolverSource::MULTICAST_DNS: - out_tasks->push_back(TaskType::MDNS); - break; -+ if (!base::FeatureList::IsEnabled(features::kIPv6Probing)) { -+ return OK; -+ } - case HostResolverSource::LOCAL_ONLY: - // If no external source allowed, a job should not be created or started - break; -@@ -1373,6 +1377,13 @@ int HostResolverManager::StartIPv6ReachabilityCheck( +@@ -1373,6 +1374,13 @@ int HostResolverManager::StartIPv6ReachabilityCheck( return OK; } diff --git a/build/patches/Add-lifetime-options-for-permissions.patch b/build/patches/Add-lifetime-options-for-permissions.patch index 35fd1461..e23a35ff 100644 --- a/build/patches/Add-lifetime-options-for-permissions.patch +++ b/build/patches/Add-lifetime-options-for-permissions.patch @@ -62,7 +62,6 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../site_settings/SingleWebsiteSettings.java | 9 ++ .../android/website_preference_bridge.cc | 2 +- .../strings/android/browser_ui_strings.grd | 5 ++ - components/content_settings/android/BUILD.gn | 1 + .../core/browser/content_settings_utils.cc | 36 ++++++++ .../core/browser/content_settings_utils.h | 6 ++ .../common/content_settings_constraints.h | 9 ++ @@ -73,21 +72,21 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/page_info/page_info.h | 1 + .../permissions/PermissionDialogDelegate.java | 13 +++ .../PermissionDialogModelFactory.java | 82 ++++++++++++++++++- - .../permission_dialog_delegate.cc | 19 +++++ + .../permission_dialog_delegate.cc | 24 +++++- .../permission_dialog_delegate.h | 1 + - .../permission_prompt_android.cc | 8 ++ + .../permission_prompt_android.cc | 8 +- .../permission_prompt_android.h | 3 +- .../android/permissions_android_strings.grd | 17 ++++ - .../geolocation_permission_context_android.cc | 32 ++++++-- + .../geolocation_permission_context_android.cc | 34 ++++++-- .../geolocation_permission_context_android.h | 13 ++- - .../permissions/permission_context_base.cc | 51 ++++++++++-- + .../permissions/permission_context_base.cc | 52 ++++++++++-- .../permissions/permission_context_base.h | 23 +++++- components/permissions/permission_prompt.h | 3 +- components/permissions/permission_request.cc | 30 ++++++- components/permissions/permission_request.h | 16 +++- .../permissions/permission_request_manager.cc | 45 ++++++---- .../permissions/permission_request_manager.h | 11 ++- - 35 files changed, 485 insertions(+), 57 deletions(-) + 34 files changed, 488 insertions(+), 61 deletions(-) diff --git a/chrome/browser/permissions/last_tab_standing_tracker.cc b/chrome/browser/permissions/last_tab_standing_tracker.cc --- a/chrome/browser/permissions/last_tab_standing_tracker.cc @@ -268,7 +267,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c } } -+ private boolean isSessionPermission(@ContentSettingsType int type) { ++ private boolean isSessionPermission(@ContentSettingsType.EnumType int type) { + return mSite.getPermissionInfo(type) != null && + mSite.getPermissionInfo(type).getSessionModel() == SessionModel.USER_SESSION; + } @@ -314,17 +313,6 @@ diff --git a/components/browser_ui/strings/android/browser_ui_strings.grd b/comp Ad privacy -diff --git a/components/content_settings/android/BUILD.gn b/components/content_settings/android/BUILD.gn ---- a/components/content_settings/android/BUILD.gn -+++ b/components/content_settings/android/BUILD.gn -@@ -65,6 +65,7 @@ java_cpp_enum("content_settings_enums_javagen") { - "../core/common/cookie_controls_breakage_confidence_level.h", - "../core/common/cookie_controls_enforcement.h", - "../core/common/cookie_controls_status.h", -+ "../core/common/content_settings_constraints.h", - ] - visibility = [ ":*" ] # Depend on through :content_settings_enums_java - } 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 @@ -692,10 +680,20 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ permission_prompt_->Accept(); } -@@ -179,6 +191,13 @@ void PermissionDialogDelegate::AcceptThisTime( +@@ -179,12 +191,22 @@ void PermissionDialogDelegate::AcceptThisTime( JNIEnv* env, const JavaParamRef& obj) { CHECK(permission_prompt_); +- permission_prompt_->AcceptThisTime(); ++ content_settings::LifetimeMode lifetimeOption = ++ static_cast( ++ java_delegate_->GetSelectedLifetimeOption()); ++ permission_prompt_->AcceptThisTime(lifetimeOption); + } + + void PermissionDialogDelegate::Cancel(JNIEnv* env, + const JavaParamRef& obj) { + CHECK(permission_prompt_); + content_settings::LifetimeMode lifetimeOption = + static_cast( + java_delegate_->GetSelectedLifetimeOption()); @@ -703,7 +701,7 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ + permission_prompt_->DenyThisTime(lifetimeOption); + return; + } - permission_prompt_->AcceptThisTime(); + permission_prompt_->Deny(); } diff --git a/components/permissions/android/permission_prompt/permission_dialog_delegate.h b/components/permissions/android/permission_prompt/permission_dialog_delegate.h @@ -720,21 +718,21 @@ diff --git a/components/permissions/android/permission_prompt/permission_dialog_ diff --git a/components/permissions/android/permission_prompt/permission_prompt_android.cc b/components/permissions/android/permission_prompt/permission_prompt_android.cc --- a/components/permissions/android/permission_prompt/permission_prompt_android.cc +++ b/components/permissions/android/permission_prompt/permission_prompt_android.cc -@@ -57,6 +57,14 @@ void PermissionPromptAndroid::AcceptThisTime() { - delegate_->AcceptThisTime(); +@@ -53,8 +53,12 @@ void PermissionPromptAndroid::Accept() { + delegate_->Accept(); } +-void PermissionPromptAndroid::AcceptThisTime() { +- delegate_->AcceptThisTime(); +void PermissionPromptAndroid::AcceptThisTime(content_settings::LifetimeMode lifetimeOption) { + delegate_->AcceptThisTime(lifetimeOption); +} + +void PermissionPromptAndroid::DenyThisTime(content_settings::LifetimeMode lifetimeOption) { + delegate_->DenyThisTime(lifetimeOption); -+} -+ - void PermissionPromptAndroid::Deny() { - delegate_->Deny(); } + + void PermissionPromptAndroid::Deny() { diff --git a/components/permissions/android/permission_prompt/permission_prompt_android.h b/components/permissions/android/permission_prompt/permission_prompt_android.h --- a/components/permissions/android/permission_prompt/permission_prompt_android.h +++ b/components/permissions/android/permission_prompt/permission_prompt_android.h @@ -860,8 +858,9 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr bool persist, ContentSetting content_setting, - bool is_one_time) { +- GeolocationPermissionContext::NotifyPermissionSet( + bool is_one_time, content_settings::LifetimeMode lifetime_option) { - GeolocationPermissionContext::NotifyPermissionSet( ++ GeolocationPermissionContext::NotifyPermissionSetWithLifetime( id, requesting_origin, embedding_origin, std::move(callback), persist, - content_setting, is_one_time, /*is_final_decision=*/true); + content_setting, is_one_time, /*is_final_decision=*/true, lifetime_option); @@ -908,11 +907,12 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr diff --git a/components/permissions/permission_context_base.cc b/components/permissions/permission_context_base.cc --- a/components/permissions/permission_context_base.cc +++ b/components/permissions/permission_context_base.cc -@@ -265,6 +265,16 @@ bool PermissionContextBase::UsesAutomaticEmbargo() const { +@@ -265,6 +265,17 @@ bool PermissionContextBase::UsesAutomaticEmbargo() const { return true; } -+std::unique_ptr PermissionContextBase::CreatePermissionRequest( ++std::unique_ptr ++PermissionContextBase::CreatePermissionRequest( + content::WebContents* web_contents, + PermissionRequestData request_data, + PermissionRequest::PermissionDecidedCallbackWithLifetime permission_decided_callback, @@ -925,7 +925,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm content::PermissionResult PermissionContextBase::GetPermissionStatus( content::RenderFrameHost* render_frame_host, const GURL& requesting_origin, -@@ -511,7 +521,8 @@ void PermissionContextBase::PermissionDecided(const PermissionRequestID& id, +@@ -511,7 +522,8 @@ void PermissionContextBase::PermissionDecided(const PermissionRequestID& id, const GURL& embedding_origin, ContentSetting content_setting, bool is_one_time, @@ -935,7 +935,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm DCHECK(content_setting == CONTENT_SETTING_ALLOW || content_setting == CONTENT_SETTING_BLOCK || content_setting == CONTENT_SETTING_DEFAULT); -@@ -526,13 +537,14 @@ void PermissionContextBase::PermissionDecided(const PermissionRequestID& id, +@@ -526,13 +538,14 @@ void PermissionContextBase::PermissionDecided(const PermissionRequestID& id, // missing if a permission prompt was preignored and we already notified an // origin about it. if (request->second.second) { @@ -954,7 +954,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } } -@@ -578,11 +590,27 @@ void PermissionContextBase::NotifyPermissionSet( +@@ -578,11 +591,27 @@ void PermissionContextBase::NotifyPermissionSet( ContentSetting content_setting, bool is_one_time, bool is_final_decision) { @@ -983,7 +983,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } if (is_final_decision) { -@@ -612,6 +640,15 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, +@@ -612,6 +641,15 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, const GURL& embedding_origin, ContentSetting content_setting, bool is_one_time) { @@ -999,7 +999,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm DCHECK_EQ(requesting_origin, requesting_origin.DeprecatedGetOriginAsURL()); DCHECK_EQ(embedding_origin, embedding_origin.DeprecatedGetOriginAsURL()); DCHECK(content_setting == CONTENT_SETTING_ALLOW || -@@ -621,6 +658,8 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, +@@ -621,6 +659,8 @@ void PermissionContextBase::UpdateContentSetting(const GURL& requesting_origin, constraints.set_session_model(is_one_time ? content_settings::SessionModel::OneTime : content_settings::SessionModel::Durable); 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 ddfa55e3..5a60750c 100644 --- a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch +++ b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch @@ -15,17 +15,17 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/bookmark_bar_strings.grdp | 6 ++ .../bookmarks/browser/bookmark_codec.cc | 22 ++++-- components/bookmarks/browser/bookmark_codec.h | 7 +- - .../browser/bookmark_load_details.cc | 4 ++ + .../browser/bookmark_load_details.cc | 2 + .../bookmarks/browser/bookmark_load_details.h | 3 + .../bookmarks/browser/bookmark_model.cc | 3 +- components/bookmarks/browser/bookmark_model.h | 7 ++ - components/bookmarks/browser/bookmark_node.cc | 13 ++++ - components/bookmarks/browser/bookmark_node.h | 4 ++ + components/bookmarks/browser/bookmark_node.cc | 11 +++ + components/bookmarks/browser/bookmark_node.h | 3 + .../bookmarks/browser/bookmark_uuids.cc | 3 + components/bookmarks/browser/bookmark_uuids.h | 1 + components/bookmarks/browser/model_loader.cc | 3 +- .../bookmark_specifics_conversions.cc | 1 + - 21 files changed, 232 insertions(+), 10 deletions(-) + 21 files changed, 227 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 @@ -219,7 +219,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc --- a/chrome/browser/bookmarks/android/bookmark_bridge.cc +++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc -@@ -353,6 +353,33 @@ void BookmarkBridge::GetImageUrlForBookmark( +@@ -356,6 +356,33 @@ void BookmarkBridge::GetImageUrlForBookmark( base::BindOnce(&HandleImageUrlResponse, callback)); } @@ -234,11 +234,11 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + bookmarks::BookmarkModel* model = + BookmarkModelFactory::GetForBrowserContext(profile_); + -+ std::vector nodes = ++ std::vector> nodes = + model->GetNodesByURL(gurl); + std::sort(nodes.begin(), nodes.end(), &bookmarks::MoreRecentlyAdded); + -+ for (const auto* node : nodes) { ++ for (const BookmarkNode* node : nodes) { + for (const auto& child : model->tabs_collection_node()->children()) { + if (node->id() == child->id()) { + return JavaBookmarkIdCreateBookmarkId(env, node->id(), @@ -253,7 +253,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse base::android::ScopedJavaLocalRef BookmarkBridge::GetMostRecentlyAddedUserBookmarkIdForUrl( JNIEnv* env, -@@ -461,6 +488,7 @@ void BookmarkBridge::GetAllFoldersWithDepths( +@@ -464,6 +491,7 @@ void BookmarkBridge::GetAllFoldersWithDepths( // Vector to temporarily contain all child bookmarks at same level for sorting std::vector bookmarks = { bookmark_model_->mobile_node(), @@ -261,7 +261,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse bookmark_model_->bookmark_bar_node(), bookmark_model_->other_node(), }; -@@ -518,6 +546,11 @@ std::vector BookmarkBridge::GetTopLevelFolderIdsImpl( +@@ -521,6 +549,11 @@ std::vector BookmarkBridge::GetTopLevelFolderIdsImpl( top_level_folders.push_back(root_child.get()); } @@ -273,7 +273,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse if (account_reading_list_manager_ && account_reading_list_manager_->GetRoot()) { top_level_folders.push_back(account_reading_list_manager_->GetRoot()); -@@ -1143,6 +1176,17 @@ void BookmarkBridge::GetBookmarksOfType( +@@ -1147,6 +1180,17 @@ void BookmarkBridge::GetBookmarksOfType( AddBookmarkNodesToBookmarkIdList(env, j_list, results); } @@ -565,14 +565,12 @@ diff --git a/components/bookmarks/browser/bookmark_codec.h b/components/bookmark diff --git a/components/bookmarks/browser/bookmark_load_details.cc b/components/bookmarks/browser/bookmark_load_details.cc --- a/components/bookmarks/browser/bookmark_load_details.cc +++ b/components/bookmarks/browser/bookmark_load_details.cc -@@ -31,6 +31,10 @@ BookmarkLoadDetails::BookmarkLoadDetails(BookmarkClient* client) +@@ -31,6 +31,8 @@ BookmarkLoadDetails::BookmarkLoadDetails(BookmarkClient* client) root_node_->Add(BookmarkPermanentNode::CreateOtherBookmarks(max_id_++))); mobile_folder_node_ = static_cast( root_node_->Add(BookmarkPermanentNode::CreateMobileBookmarks(max_id_++))); + tabs_collection_folder_node_ = static_cast( -+ root_node_->Add(BookmarkPermanentNode::CreateTabsCollectionBookmarks( -+ max_id_++, -+ client->IsPermanentNodeVisibleWhenEmpty(BookmarkNode::TABS_COLLECTION)))); ++ root_node_->Add(BookmarkPermanentNode::CreateTabsCollectionBookmarks(max_id_++))); } BookmarkLoadDetails::~BookmarkLoadDetails() = default; @@ -652,19 +650,17 @@ diff --git a/components/bookmarks/browser/bookmark_node.cc b/components/bookmark case BookmarkNode::URL: NOTREACHED_NORETURN(); case BookmarkNode::FOLDER: -@@ -211,6 +213,17 @@ BookmarkPermanentNode::CreateMobileBookmarks(int64_t id) { +@@ -211,6 +213,15 @@ BookmarkPermanentNode::CreateMobileBookmarks(int64_t id) { l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_MOBILE_FOLDER_NAME))); } +// static +std::unique_ptr -+BookmarkPermanentNode::CreateTabsCollectionBookmarks(int64_t id, -+ bool visible_when_empty) { ++BookmarkPermanentNode::CreateTabsCollectionBookmarks(int64_t id) { + // base::WrapUnique() used because the constructor is private. + return base::WrapUnique(new BookmarkPermanentNode( + id, TABS_COLLECTION, base::Uuid::ParseLowercase(kTabsCollectionBookmarksNodeUuid), -+ l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_TABS_COLLECTION_FOLDER_NAME), -+ visible_when_empty)); ++ l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_TABS_COLLECTION_FOLDER_NAME))); +} + BookmarkPermanentNode::BookmarkPermanentNode(int64_t id, @@ -681,13 +677,12 @@ diff --git a/components/bookmarks/browser/bookmark_node.h b/components/bookmarks MOBILE }; -@@ -247,6 +248,9 @@ class BookmarkPermanentNode : public BookmarkNode { +@@ -247,6 +248,8 @@ class BookmarkPermanentNode : public BookmarkNode { int64_t id); static std::unique_ptr CreateMobileBookmarks( int64_t id); + static std::unique_ptr CreateTabsCollectionBookmarks( -+ int64_t id, -+ bool visible_when_empty); ++ int64_t id); // Constructor is private to disallow the construction of permanent nodes // other than the well-known ones, see factory methods. diff --git a/build/patches/Add-option-to-disable-snapshots.patch b/build/patches/Add-option-to-disable-snapshots.patch index 059aefbe..b79a0e2d 100644 --- a/build/patches/Add-option-to-disable-snapshots.patch +++ b/build/patches/Add-option-to-disable-snapshots.patch @@ -72,7 +72,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser 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 -@@ -53,6 +53,11 @@ found in the LICENSE file. +@@ -54,6 +54,11 @@ found in the LICENSE file. android:title="@string/open_external_links_incognito_title" android:summary="@string/open_external_links_incognito_summary" android:defaultValue="false" /> 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 f813e4ac..06cc33e8 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 @@ -241,7 +241,7 @@ diff --git a/chrome/browser/ui/browser_ui_prefs.cc b/chrome/browser/ui/browser_u registry->RegisterBooleanPref(prefs::kShowHomeButton, false, GetHomeButtonAndHomePageIsNewTabPageFlags()); + registry->RegisterBooleanPref(prefs::kNewTabPageIsHomePage, false, -+ GetHomeButtonAndHomePageIsNewTabPageFlags()); ++ PrefRegistry::NO_REGISTRATION_FLAGS); registry->RegisterInt64Pref(prefs::kDefaultBrowserLastDeclined, 0); bool reset_check_default = false; diff --git a/build/patches/Add-setting-to-invert-tap-and-long-tap.patch b/build/patches/Add-setting-to-invert-tap-and-long-tap.patch index 3a5c0bf5..d0ae4e40 100644 --- a/build/patches/Add-setting-to-invert-tap-and-long-tap.patch +++ b/build/patches/Add-setting-to-invert-tap-and-long-tap.patch @@ -158,7 +158,7 @@ diff --git a/chrome/browser/contextmenu/java/src/org/chromium/chrome/browser/con 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 -@@ -287,6 +287,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -288,6 +288,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kTabGroupParityAndroid, &kTabletTabSwitcherLongPressMenu, &kTabletToolbarIncognitoStatus, @@ -169,7 +169,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -336,6 +336,8 @@ public abstract class ChromeFeatureList { +@@ -337,6 +337,8 @@ public abstract class ChromeFeatureList { public static final String NEW_TAB_SEARCH_ENGINE_URL_ANDROID = "NewTabSearchEngineUrlAndroid"; public static final String MOVE_TOP_TOOLBAR_TO_BOTTOM = "MoveTopToolbarToBottom"; @@ -178,16 +178,16 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String NOTIFICATION_PERMISSION_VARIANT = "NotificationPermissionVariant"; public static final String NOTIFICATION_PERMISSION_BOTTOM_SHEET = "NotificationPermissionBottomSheet"; -@@ -604,6 +606,8 @@ public abstract class ChromeFeatureList { +@@ -605,6 +607,8 @@ public abstract class ChromeFeatureList { newCachedFlag(OMNIBOX_MATCH_TOOLBAR_AND_STATUS_BAR_COLOR, false); public static final CachedFlag sMoveTopToolbarToBottom = - new CachedFlag(MOVE_TOP_TOOLBAR_TO_BOTTOM, false); + newCachedFlag(MOVE_TOP_TOOLBAR_TO_BOTTOM, false); + public static final CachedFlag sShowAlwaysContextMenuOnLinks = -+ new CachedFlag(SHOW_ALWAYS_CONTEXT_MENU_ON_LINKS, false); ++ newCachedFlag(SHOW_ALWAYS_CONTEXT_MENU_ON_LINKS, false); public static final CachedFlag sOmniboxModernizeVisualUpdate = newCachedFlag(OMNIBOX_MODERNIZE_VISUAL_UPDATE, true); public static final CachedFlag sOptimizationGuidePushNotifications = -@@ -739,6 +743,7 @@ public abstract class ChromeFeatureList { +@@ -740,6 +744,7 @@ public abstract class ChromeFeatureList { sTabWindowManagerReportIndicesMismatch, sToolbarUseHardwareBitmapDraw, sUseChimeAndroidSdk, diff --git a/build/patches/Allow-building-without-supervised-users.patch b/build/patches/Allow-building-without-supervised-users.patch index 18f45b9f..833bd910 100644 --- a/build/patches/Allow-building-without-supervised-users.patch +++ b/build/patches/Allow-building-without-supervised-users.patch @@ -68,7 +68,7 @@ diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3146,8 +3146,6 @@ static_library("browser") { +@@ -3147,8 +3147,6 @@ static_library("browser") { "feed/android/refresh_task_scheduler_impl.cc", "feed/android/refresh_task_scheduler_impl.h", "feed/android/web_feed_bridge.cc", @@ -77,7 +77,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "file_select_helper_contacts_android.cc", "file_select_helper_contacts_android.h", "first_run/android/first_run_prefs.cc", -@@ -3353,10 +3351,6 @@ static_library("browser") { +@@ -3354,10 +3352,6 @@ static_library("browser") { "ssl/chrome_security_state_model_delegate.h", "ssl/known_interception_disclosure_infobar.cc", "ssl/known_interception_disclosure_infobar.h", diff --git a/build/patches/Bromite-auto-updater.patch b/build/patches/Bromite-auto-updater.patch index 3f55f910..46ffb4d3 100644 --- a/build/patches/Bromite-auto-updater.patch +++ b/build/patches/Bromite-auto-updater.patch @@ -21,6 +21,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../inline/BromiteInlineUpdateController.java | 272 ++++++++++++++++++ .../omaha/inline/InlineUpdateController.java | 51 ++++ .../inline/InlineUpdateControllerFactory.java | 21 ++ + chrome/browser/BUILD.gn | 2 + chrome/browser/endpoint_fetcher/BUILD.gn | 32 +++ chrome/browser/endpoint_fetcher/DEPS | 3 + chrome/browser/endpoint_fetcher/OWNERS | 1 + @@ -35,7 +36,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../endpoint_fetcher/endpoint_fetcher.h | 23 +- .../Bromite-auto-updater.inc | 3 + .../Bromite-auto-updater.inc | 1 + - 27 files changed, 1267 insertions(+), 52 deletions(-) + 28 files changed, 1269 insertions(+), 52 deletions(-) create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateController.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java @@ -1109,6 +1110,25 @@ new file mode 100644 + return new BromiteInlineUpdateController(callback); + } +} +diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn +--- a/chrome/browser/BUILD.gn ++++ b/chrome/browser/BUILD.gn +@@ -3094,6 +3094,7 @@ static_library("browser") { + "download/android/service/download_task_scheduler.h", + "download/android/string_utils.cc", + "download/download_crx_util_android.cc", ++ "endpoint_fetcher/endpoint_fetcher_android.cc", + "enterprise/reporting/browser_report_generator_android.cc", + "enterprise/reporting/browser_report_generator_android.h", + "enterprise/reporting/profile_report_generator_android.cc", +@@ -3431,6 +3432,7 @@ static_library("browser") { + "//chrome/browser/consent_auditor/android:jni_headers", + "//chrome/browser/device_reauth/android:jni_headers", + "//chrome/browser/download/internal/android", ++ "//chrome/browser/endpoint_fetcher:jni_headers", + "//chrome/browser/feed/android:jni_headers", + "//chrome/browser/feedback/android", + "//chrome/browser/feedback/android:jni_headers", diff --git a/chrome/browser/endpoint_fetcher/BUILD.gn b/chrome/browser/endpoint_fetcher/BUILD.gn new file mode 100644 --- /dev/null diff --git a/build/patches/Bromite-subresource-adblocker.patch b/build/patches/Bromite-subresource-adblocker.patch index 5eaf6103..a3a6ffa8 100644 --- a/build/patches/Bromite-subresource-adblocker.patch +++ b/build/patches/Bromite-subresource-adblocker.patch @@ -29,7 +29,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/browser_process_impl.cc | 21 ++ chrome/browser/browser_process_impl.h | 2 + chrome/browser/chrome_browser_main.cc | 3 + - chrome/browser/flags/BUILD.gn | 3 + + chrome/browser/flags/BUILD.gn | 4 + .../flags/android/adblock_native_gateway.cc | 31 ++ .../browser/flags/AdBlockNativeGateway.java | 30 ++ .../net/system_network_context_manager.cc | 8 + @@ -52,7 +52,7 @@ 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 +- .../Bromite-subresource-adblocker.inc | 3 + - 40 files changed, 1253 insertions(+), 127 deletions(-) + 40 files changed, 1254 insertions(+), 127 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 @@ -574,7 +574,15 @@ diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_brows diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn --- a/chrome/browser/flags/BUILD.gn +++ b/chrome/browser/flags/BUILD.gn -@@ -33,6 +33,7 @@ android_library("java") { +@@ -8,6 +8,7 @@ import("//third_party/jni_zero/jni_zero.gni") + android_library("java") { + sources = [ "android/java/src/org/chromium/chrome/browser/flags/CromiteNativeUtils.java" ] + sources += [ ++ "android/java/src/org/chromium/chrome/browser/flags/AdBlockNativeGateway.java", + "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java", + "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureMap.java", + "android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java", +@@ -33,6 +34,7 @@ android_library("java") { generate_jni("jni_headers") { sources = [ "android/java/src/org/chromium/chrome/browser/flags/CromiteNativeUtils.java" ] sources += [ @@ -582,7 +590,7 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureMap.java", "android/java/src/org/chromium/chrome/browser/flags/ChromeSessionState.java", ] -@@ -47,6 +48,7 @@ static_library("flags_android") { +@@ -47,6 +49,7 @@ static_library("flags_android") { "android/chrome_session_state.cc", "android/chrome_session_state.h", ] @@ -590,7 +598,7 @@ diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn deps = [ ":jni_headers", "//base", -@@ -71,6 +73,7 @@ robolectric_library("flags_junit_tests") { +@@ -71,6 +74,7 @@ robolectric_library("flags_junit_tests") { "android/java/src/org/chromium/chrome/browser/flags/CachedFeatureFlagsAnnotationUnitTest.java", "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureListWithProcessorUnitTest.java", "android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureListWithoutProcessorUnitTest.java", @@ -1975,7 +1983,7 @@ diff --git a/components/subresource_filter/core/common/indexed_ruleset.cc b/comp // checksum, and is unneeded once expected_checksum is consistently nonzero. flatbuffers::Verifier verifier(buffer.data(), buffer.size()); - if (expected_checksum != 0 && expected_checksum != LocalGetChecksum(buffer)) { -+ int local_checksum = LocalGetChecksum(buffer, size); ++ int local_checksum = LocalGetChecksum(buffer); + LOG(INFO) << "GetVerifyStatus: expected checksum = 0x" << std::hex << expected_checksum << ", local checksum = 0x" << std::hex << local_checksum; + if (expected_checksum != 0 && expected_checksum != local_checksum) { return flat::VerifyIndexedRulesetBuffer(verifier) diff --git a/build/patches/Client-hints-overrides.patch b/build/patches/Client-hints-overrides.patch index bb625ae1..5f63b4cf 100644 --- a/build/patches/Client-hints-overrides.patch +++ b/build/patches/Client-hints-overrides.patch @@ -7,18 +7,20 @@ 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 | 16 ++++++++++------ - .../browser/loader/navigation_url_loader_impl.cc | 5 +++++ - .../features_cc/Client-hints-overrides.inc | 1 + - .../cpp/features_cc/Client-hints-overrides.inc | 1 + - net/http/http_network_transaction.cc | 1 + - services/network/public/cpp/client_hints.cc | 1 + - .../blink/common/client_hints/client_hints.cc | 1 + - .../common/client_hints/enabled_client_hints.cc | 4 +++- - .../renderer/core/loader/base_fetch_context.cc | 6 ++++-- - .../platform/runtime_enabled_features.json5 | 4 ++++ - 11 files changed, 32 insertions(+), 12 deletions(-) + components/embedder_support/user_agent_utils.cc | 4 +--- + content/browser/client_hints/client_hints.cc | 17 +++++++++++------ + .../loader/navigation_url_loader_impl.cc | 5 +++++ + .../features_cc/Client-hints-overrides.inc | 1 + + .../cpp/features_cc/Client-hints-overrides.inc | 1 + + net/http/http_network_transaction.cc | 1 + + services/network/public/cpp/client_hints.cc | 1 + + .../blink/common/client_hints/client_hints.cc | 1 + + .../common/client_hints/enabled_client_hints.cc | 4 +++- + .../blink/renderer/core/frame/navigator_ua.idl | 4 +++- + .../renderer/core/frame/navigator_ua_data.idl | 5 ++++- + .../renderer/core/loader/base_fetch_context.cc | 6 ++++-- + .../platform/runtime_enabled_features.json5 | 4 ++++ + 13 files changed, 40 insertions(+), 14 deletions(-) create mode 100644 cromite_flags/content/common/features_cc/Client-hints-overrides.inc create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Client-hints-overrides.inc @@ -39,7 +41,15 @@ diff --git a/components/embedder_support/user_agent_utils.cc b/components/embedd diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/client_hints/client_hints.cc --- a/content/browser/client_hints/client_hints.cc +++ b/content/browser/client_hints/client_hints.cc -@@ -516,7 +516,8 @@ void AddPrefersReducedTransparencyHeader(net::HttpRequestHeaders* headers, +@@ -55,6 +55,7 @@ + #include "third_party/blink/public/common/permissions_policy/origin_with_possible_wildcards.h" + #include "third_party/blink/public/common/permissions_policy/permissions_policy.h" + #include "third_party/blink/public/common/user_agent/user_agent_metadata.h" ++#include "third_party/blink/renderer/platform/runtime_enabled_features.h" + #include "ui/display/display.h" + #include "ui/display/screen.h" + #include "url/origin.h" +@@ -516,7 +517,8 @@ void AddPrefersReducedTransparencyHeader(net::HttpRequestHeaders* headers, : network::kPrefersReducedTransparencyNoPreference); } @@ -49,17 +59,17 @@ diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/clie return network::IsOriginPotentiallyTrustworthy(origin); } -@@ -718,7 +719,8 @@ void UpdateNavigationRequestClientUaHeadersImpl( +@@ -718,7 +720,8 @@ void UpdateNavigationRequestClientUaHeadersImpl( // value, disable them. This overwrites previous decision from UI. disable_due_to_custom_ua = !ua_metadata.has_value(); } - -+ if (!RuntimeEnabledFeatures::UserAgentClientHintEnabled()) ++ if (!blink::RuntimeEnabledFeatures::UserAgentClientHintEnabled()) + disable_due_to_custom_ua = true; if (!disable_due_to_custom_ua) { if (!ua_metadata.has_value()) ua_metadata = delegate->GetUserAgentMetadata(); -@@ -900,10 +902,12 @@ void AddRequestClientHintsHeaders( +@@ -900,10 +903,12 @@ void AddRequestClientHintsHeaders( AddEctHeader(headers, network_quality_tracker, url); } @@ -67,7 +77,7 @@ diff --git a/content/browser/client_hints/client_hints.cc b/content/browser/clie - delegate, is_ua_override_on, frame_tree_node, - ClientUaHeaderCallType::kDuringCreation, headers, container_policy, - request_url, data); -+ if (RuntimeEnabledFeatures::UserAgentClientHintEnabled()) { ++ if (blink::RuntimeEnabledFeatures::UserAgentClientHintEnabled()) { + UpdateNavigationRequestClientUaHeadersImpl( + delegate, is_ua_override_on, frame_tree_node, + ClientUaHeaderCallType::kDuringCreation, headers, container_policy, @@ -164,6 +174,34 @@ 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/renderer/core/frame/navigator_ua.idl b/third_party/blink/renderer/core/frame/navigator_ua.idl +--- a/third_party/blink/renderer/core/frame/navigator_ua.idl ++++ b/third_party/blink/renderer/core/frame/navigator_ua.idl +@@ -4,6 +4,8 @@ + + // https://github.com/WICG/ua-client-hints + +-interface mixin NavigatorUA { ++[ ++ RuntimeEnabled=UserAgentClientHint ++] interface mixin NavigatorUA { + [SecureContext] readonly attribute NavigatorUAData userAgentData; + }; +diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.idl b/third_party/blink/renderer/core/frame/navigator_ua_data.idl +--- a/third_party/blink/renderer/core/frame/navigator_ua_data.idl ++++ b/third_party/blink/renderer/core/frame/navigator_ua_data.idl +@@ -4,7 +4,10 @@ + + // https://github.com/WICG/ua-client-hints + +-[Exposed=(Window,Worker)] interface NavigatorUAData { ++[ ++ RuntimeEnabled=UserAgentClientHint, ++ Exposed=(Window,Worker) ++] interface NavigatorUAData { + [HighEntropy, MeasureAs=NavigatorUAData_Brands] readonly attribute FrozenArray brands; + [HighEntropy=Direct, MeasureAs=NavigatorUAData_Mobile] readonly attribute boolean mobile; + [HighEntropy=Direct, MeasureAs=NavigatorUAData_Platform] readonly attribute DOMString platform; diff --git a/third_party/blink/renderer/core/loader/base_fetch_context.cc b/third_party/blink/renderer/core/loader/base_fetch_context.cc --- a/third_party/blink/renderer/core/loader/base_fetch_context.cc +++ b/third_party/blink/renderer/core/loader/base_fetch_context.cc diff --git a/build/patches/Content-settings-infrastructure.patch b/build/patches/Content-settings-infrastructure.patch index 972946c6..4fe0d5af 100644 --- a/build/patches/Content-settings-infrastructure.patch +++ b/build/patches/Content-settings-infrastructure.patch @@ -42,10 +42,10 @@ Require: bromite-build-utils.patch .../BromiteCustomContentSetting.java | 155 +++++++ .../BromiteCustomContentSettingImpl.java | 409 ++++++++++++++++++ ...tomTriStateSiteSettingsPreferenceImpl.java | 24 + - .../ContentSettingsResources.java | 14 +- + .../ContentSettingsResources.java | 16 +- .../site_settings/SingleCategorySettings.java | 50 ++- .../site_settings/SingleWebsiteSettings.java | 58 ++- - .../site_settings/SiteSettings.java | 30 +- + .../site_settings/SiteSettings.java | 31 +- .../site_settings/SiteSettingsCategory.java | 18 +- .../site_settings/SiteSettingsDelegate.java | 2 + .../TriStateSiteSettingsPreference.java | 13 +- @@ -84,7 +84,7 @@ Require: bromite-build-utils.patch .../platform/web_content_settings_client.h | 5 + .../execution_context/execution_context.cc | 16 + .../execution_context/execution_context.h | 5 + - 73 files changed, 1829 insertions(+), 85 deletions(-) + 73 files changed, 1832 insertions(+), 85 deletions(-) create mode 100644 components/browser_ui/settings/android/java/res/layout/preference_spinner_single_widget.xml create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSetting.java create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/BromiteCustomContentSettingImpl.java @@ -1550,7 +1550,7 @@ new file mode 100644 + +public abstract class BromiteCustomContentSetting { + -+ private @ContentSettingsType int mContentSettingsType; ++ private @ContentSettingsType.EnumType int mContentSettingsType; + private @SiteSettingsCategory.Type int mSiteSettingsCategory; + private @ContentSettingValues Integer mDefaultEnabledValue; + private @ContentSettingValues Integer mDefaultDisabledValue; @@ -1558,7 +1558,7 @@ new file mode 100644 + private String mPreferenceKey; + private String mProfilePrefKey; + -+ public BromiteCustomContentSetting(@ContentSettingsType int contentSettingsType, ++ public BromiteCustomContentSetting(@ContentSettingsType.EnumType int contentSettingsType, + @ContentSettingValues Integer defaultEnabledValue, + @ContentSettingValues Integer defaultDisabledValue, + boolean allowException, @@ -1572,7 +1572,7 @@ new file mode 100644 + mProfilePrefKey = profilePrefKey; + } + -+ public @ContentSettingsType int getContentSetting() { ++ public @ContentSettingsType.EnumType int getContentSetting() { + return mContentSettingsType; + } + @@ -1637,7 +1637,7 @@ new file mode 100644 + + public abstract @Nullable Boolean considerException(SiteSettingsCategory category, @ContentSettingValues int value); + -+ public ContentSettingException createCustomException(@ContentSettingsType int type, ++ public ContentSettingException createCustomException(@ContentSettingsType.EnumType int type, + @ContentSettingValues int value, + WebsiteAddress websiteAddress) { + return null; @@ -1754,7 +1754,7 @@ new file mode 100644 + return BromiteCustomContentSettingImplBase.NUM_ENTRIES(); + } + -+ public static BromiteCustomContentSetting getContentSetting(@ContentSettingsType int type) { ++ public static BromiteCustomContentSetting getContentSetting(@ContentSettingsType.EnumType int type) { + for (BromiteCustomContentSetting cs : mItemList) { + if (type == cs.getContentSetting()) { + return cs; @@ -1764,7 +1764,7 @@ new file mode 100644 + } + + public static Preference createWebSitePreference( -+ @ContentSettingsType int type, ++ @ContentSettingsType.EnumType int type, + Context context, + @ContentSettingValues @Nullable Integer value) { + BromiteCustomContentSetting cs = getContentSetting(type); @@ -1809,7 +1809,7 @@ new file mode 100644 + } + + public static void setWebSitePreferenceValue( -+ @ContentSettingsType int type, ++ @ContentSettingsType.EnumType int type, + Preference preference, + @ContentSettingValues @Nullable Integer value) { + BromiteCustomContentSetting cs = getContentSetting(type); @@ -1827,7 +1827,7 @@ new file mode 100644 + } + + public static Integer getWebSitePreferenceValue( -+ @ContentSettingsType int type, ++ @ContentSettingsType.EnumType int type, + Object newValue) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) { @@ -1851,13 +1851,13 @@ new file mode 100644 + return null; + } + -+ public static String getProfilePrefKey(@ContentSettingsType int type) { ++ public static String getProfilePrefKey(@ContentSettingsType.EnumType int type) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) return cs.getProfilePrefKey(); + return null; + } + -+ public static @ContentSettingsType int contentSettingsType(@SiteSettingsCategory.Type int type) { ++ public static @ContentSettingsType.EnumType int contentSettingsType(@SiteSettingsCategory.Type int type) { + for (BromiteCustomContentSetting cs : mItemList) { + if (type == cs.getSiteSettingsCategory()) { + return cs.getContentSetting(); @@ -1868,31 +1868,31 @@ new file mode 100644 + } + + public static WebsitePermissionsFetcher.WebsitePermissionsType getPermissionsType( -+ @ContentSettingsType int type) { ++ @ContentSettingsType.EnumType int type) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) return cs.getPermissionsType(); + return null; + } + -+ public static ContentSettingsResources.ResourceItem getResourceItem(@ContentSettingsType int type) { ++ public static ContentSettingsResources.ResourceItem getResourceItem(@ContentSettingsType.EnumType int type) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) return cs.getResourceItem(); + return null; + } + -+ public static int getCategorySummary(@ContentSettingsType int type, @Nullable @ContentSettingValues int value) { ++ public static int getCategorySummary(@ContentSettingsType.EnumType int type, @Nullable @ContentSettingValues int value) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) return cs.getCategorySummary(value); + return 0; + } + -+ public static boolean requiresTriStateContentSetting(@ContentSettingsType int type) { ++ public static boolean requiresTriStateContentSetting(@ContentSettingsType.EnumType int type) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) return cs.requiresTriStateContentSetting(); + return false; + } + -+ public static int[] getTriStateSettingDescriptionIDs(@ContentSettingsType int type) { ++ public static int[] getTriStateSettingDescriptionIDs(@ContentSettingsType.EnumType int type) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) return cs.getTriStateSettingDescriptionIDs(); + return null; @@ -1928,13 +1928,13 @@ new file mode 100644 + return false; + } + -+ public static boolean processOnBlockList(@ContentSettingsType int type, @ContentSettingValues Integer value) { ++ public static boolean processOnBlockList(@ContentSettingsType.EnumType int type, @ContentSettingValues Integer value) { + BromiteCustomContentSetting cs = getContentSetting(type); + if (cs != null) return cs.processOnBlockList(value); + return false; + } + -+ public static boolean isOnBlockList(@ContentSettingsType int type, ++ public static boolean isOnBlockList(@ContentSettingsType.EnumType int type, + WebsitePreference website, + @ContentSettingValues Integer contentSetting) { + BromiteCustomContentSetting cs = getContentSetting(type); @@ -2024,7 +2024,7 @@ new file mode 100644 + return ""; + } + -+ public static ContentSettingException createCustomException(@ContentSettingsType int type, ++ public static ContentSettingException createCustomException(@ContentSettingsType.EnumType int type, + @ContentSettingValues int value, + WebsiteAddress websiteAddress) { + BromiteCustomContentSetting cs = getContentSetting(type); @@ -2040,7 +2040,7 @@ new file mode 100644 + return null; + } + -+ public static AlertDialog.Builder buildPreferenceDialog(Website site, @ContentSettingsType int type, ++ public static AlertDialog.Builder buildPreferenceDialog(Website site, @ContentSettingsType.EnumType int type, + BrowserContextHandle browserContextHandle, + Context context, + final DialogInterface.OnClickListener listener) { @@ -2143,20 +2143,22 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c assert false; // NOTREACHED return null; } -@@ -600,6 +602,12 @@ public class ContentSettingsResources { +@@ -600,6 +602,14 @@ public class ContentSettingsResources { return getResourceItem(contentType, null).getDefaultDisabledValue(); } -+ public static int getCategorySummary(int contentType, @Nullable @ContentSettingValues int value) { ++ public static int getCategorySummary(int contentType, ++ @Nullable @ContentSettingValues int value, ++ boolean isOneTime) { + int result = BromiteCustomContentSettingImpl.getCategorySummary(contentType, value); + if (result != 0) return result; -+ return getCategorySummary(value); ++ return getCategorySummary(value, isOneTime); + } + /** * Returns the string resource id for a given ContentSetting to show with a permission category. * -@@ -762,6 +770,8 @@ public class ContentSettingsResources { +@@ -762,6 +772,8 @@ public class ContentSettingsResources { * Blocked states, in that order. */ public static int[] getTriStateSettingDescriptionIDs(int contentType) { @@ -2463,7 +2465,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c Preference p = findPreference(prefCategory); int contentType = SiteSettingsCategory.contentSettingsType(prefCategory); // p can be null if the Preference was removed in configurePreferences. -@@ -142,19 +143,20 @@ public class SiteSettings extends BaseSiteSettingsFragment +@@ -142,19 +143,21 @@ public class SiteSettings extends BaseSiteSettingsFragment } else if (Type.ZOOM == prefCategory) { // Don't want to set a summary for Zoom because we don't want any message to display // under the Zoom row on site settings. @@ -2480,7 +2482,8 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c - p.setSummary( - ContentSettingsResources.getCategorySummary( - defaultForToggle, /* isOneTime= */ false)); -+ int summary = ContentSettingsResources.getCategorySummary(contentType, setting); ++ int summary = ContentSettingsResources.getCategorySummary( ++ contentType, setting, /* isOneTime= */ false); + if (summary != 0) { + p.setSummary(summary); + } else { @@ -2595,7 +2598,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c private RadioButtonWithDescription mAsk; private RadioButtonWithDescription mBlocked; private RadioGroup mRadioGroup; -+ private @ContentSettingsType int mContentType; ++ private @ContentSettingsType.EnumType int mContentType; public TriStateSiteSettingsPreference(Context context, AttributeSet attrs) { super(context, attrs); @@ -2604,7 +2607,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c * Allowed, Ask and Blocked states, in that order. */ - public void initialize(@ContentSettingValues int setting, int[] descriptionIds) { -+ public void initialize(@ContentSettingsType int contentType, ++ public void initialize(@ContentSettingsType.EnumType int contentType, + @ContentSettingValues int setting, int[] descriptionIds) { + mContentType = contentType; mSetting = setting; @@ -3126,7 +3129,7 @@ diff --git a/components/content_settings/core/common/content_settings_types.mojo - NUM_TYPES, + NUM_TYPES_CHROMIUM, -+#include "components/content_settings/core/common/bromite_content_settings.inc" ++// #include "components/content_settings/core/common/bromite_content_settings.inc" + NUM_TYPES_BROMITE, }; diff --git a/build/patches/Disable-Android-AppRestrictions.patch b/build/patches/Disable-Android-AppRestrictions.patch index f3ccfcd8..eabb9bd4 100644 --- a/build/patches/Disable-Android-AppRestrictions.patch +++ b/build/patches/Disable-Android-AppRestrictions.patch @@ -5,12 +5,12 @@ Subject: Disable Android AppRestrictions License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- chrome/browser/flags/BUILD.gn | 1 + - .../cromite/sEnableAndroidAppRestriction.java | 38 +++++++++++++++++++ + .../cromite/sEnableAndroidAppRestriction.java | 39 +++++++++++++++++++ .../policy/AppRestrictionsProvider.java | 8 ++++ .../DisableAndroidAppRestriction.inc | 13 +++++++ .../disable-android-app-restriction.inc | 3 ++ .../disable-android-app-restriction.inc | 1 + - 6 files changed, 64 insertions(+) + 6 files changed, 65 insertions(+) create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sEnableAndroidAppRestriction.java create mode 100644 cromite_flags/chrome/browser/about_flags_cc/DisableAndroidAppRestriction.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/disable-android-app-restriction.inc @@ -19,7 +19,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/browser/flags/BUILD.gn b/chrome/browser/flags/BUILD.gn --- a/chrome/browser/flags/BUILD.gn +++ b/chrome/browser/flags/BUILD.gn -@@ -23,6 +23,7 @@ android_library("java") { +@@ -25,6 +25,7 @@ android_library("java") { "//build:chromeos_buildflags", "//build/android:build_java", "//chrome/browser/preferences:java", @@ -31,7 +31,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f new file mode 100644 --- /dev/null +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sEnableAndroidAppRestriction.java -@@ -0,0 +1,38 @@ +@@ -0,0 +1,39 @@ +/* + This file is part of Cromite. + @@ -51,14 +51,15 @@ new file mode 100644 + +package org.chromium.chrome.browser.flags.cromite; + -+import org.chromium.chrome.browser.flags.CachedFlag; ++import org.chromium.base.cached_flags.CachedFlag; ++import org.chromium.chrome.browser.flags.ChromeFeatureMap; +import org.chromium.components.policy.AppRestrictionsProvider; + +public class sEnableAndroidAppRestriction { + private static boolean initialized_ = false; + + private static final CachedFlag sInstance = -+ new CachedFlag("EnableAndroidAppRestriction", false); ++ new CachedFlag(ChromeFeatureMap.getInstance(), "EnableAndroidAppRestriction", false); + + private sEnableAndroidAppRestriction() {} + diff --git a/build/patches/Disable-FirstPartySets-and-StorageAccessAPI.patch b/build/patches/Disable-FirstPartySets-and-StorageAccessAPI.patch index e9da8b85..fec38d97 100644 --- a/build/patches/Disable-FirstPartySets-and-StorageAccessAPI.patch +++ b/build/patches/Disable-FirstPartySets-and-StorageAccessAPI.patch @@ -4,12 +4,57 @@ Subject: Disable FirstPartySets and StorageAccessAPI License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- + .../first_party_sets/first_party_sets_navigation_throttle.cc | 2 +- + .../first_party_sets/first_party_sets_policy_service.cc | 3 ++- + .../browser/privacy_sandbox/privacy_sandbox_service_impl.cc | 2 +- components/privacy_sandbox/privacy_sandbox_prefs.cc | 2 +- components/privacy_sandbox/tracking_protection_prefs.cc | 4 ++-- - .../Disable-FirstPartySets-and-StorageAccessAPI.inc | 1 + - 3 files changed, 4 insertions(+), 3 deletions(-) - create mode 100644 cromite_flags/content/public/common/content_features_cc/Disable-FirstPartySets-and-StorageAccessAPI.inc + 5 files changed, 7 insertions(+), 6 deletions(-) +diff --git a/chrome/browser/first_party_sets/first_party_sets_navigation_throttle.cc b/chrome/browser/first_party_sets/first_party_sets_navigation_throttle.cc +--- a/chrome/browser/first_party_sets/first_party_sets_navigation_throttle.cc ++++ b/chrome/browser/first_party_sets/first_party_sets_navigation_throttle.cc +@@ -77,7 +77,7 @@ FirstPartySetsNavigationThrottle::MaybeCreateNavigationThrottle( + // The `service` might be null for some irregular profiles. + // TODO(https://crbug.com/1348572): regular profiles and guest sessions + // aren't mutually exclusive on ChromeOS. +- if (!profile->IsRegularProfile() || profile->IsGuestSession()) ++ if (((true)) || !profile->IsRegularProfile() || profile->IsGuestSession()) + return nullptr; + + FirstPartySetsPolicyService* service = +diff --git a/chrome/browser/first_party_sets/first_party_sets_policy_service.cc b/chrome/browser/first_party_sets/first_party_sets_policy_service.cc +--- a/chrome/browser/first_party_sets/first_party_sets_policy_service.cc ++++ b/chrome/browser/first_party_sets/first_party_sets_policy_service.cc +@@ -58,6 +58,7 @@ const base::Value::Dict* GetOverridesPolicyForProfile( + } + + ServiceState GetServiceState(Profile* profile, bool pref_enabled) { ++ if ((true)) return ServiceState::kPermanentlyDisabled; + if (profile->IsSystemProfile() || profile->IsGuestSession() || + profile->IsOffTheRecord()) { + return ServiceState::kPermanentlyDisabled; +@@ -107,7 +108,7 @@ void FirstPartySetsPolicyService::Init() { + profile, profile->GetPrefs() && + profile->GetPrefs()->GetBoolean( + prefs::kPrivacySandboxRelatedWebsiteSetsEnabled)); +- ++ service_state_ = ServiceState::kPermanentlyDisabled; + if (service_state_ == ServiceState::kPermanentlyDisabled) { + OnReadyToNotifyDelegates(net::FirstPartySetsContextConfig(), + net::FirstPartySetsCacheFilter()); +diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_service_impl.cc b/chrome/browser/privacy_sandbox/privacy_sandbox_service_impl.cc +--- a/chrome/browser/privacy_sandbox/privacy_sandbox_service_impl.cc ++++ b/chrome/browser/privacy_sandbox/privacy_sandbox_service_impl.cc +@@ -418,7 +418,7 @@ bool PrivacySandboxServiceImpl::IsRestrictedNoticeEnabled() { + void PrivacySandboxServiceImpl::SetFirstPartySetsDataAccessEnabled( + bool enabled) { + pref_service_->SetBoolean(prefs::kPrivacySandboxRelatedWebsiteSetsEnabled, +- enabled); ++ false); + } + + bool PrivacySandboxServiceImpl::IsFirstPartySetsDataAccessEnabled() const { diff --git a/components/privacy_sandbox/privacy_sandbox_prefs.cc b/components/privacy_sandbox/privacy_sandbox_prefs.cc --- a/components/privacy_sandbox/privacy_sandbox_prefs.cc +++ b/components/privacy_sandbox/privacy_sandbox_prefs.cc @@ -18,7 +63,7 @@ diff --git a/components/privacy_sandbox/privacy_sandbox_prefs.cc b/components/pr prefs::kPrivacySandboxFirstPartySetsDataAccessAllowedInitialized, false); registry->RegisterBooleanPref( - prefs::kPrivacySandboxRelatedWebsiteSetsEnabled, true, -+ prefs::kPrivacySandboxRelatedWebsiteSetsEnabled, false, ++ prefs::kPrivacySandboxRelatedWebsiteSetsEnabled, false, // must be disabled user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); registry->RegisterBooleanPref(prefs::kPrivacySandboxTopicsConsentGiven, @@ -41,10 +86,4 @@ diff --git a/components/privacy_sandbox/tracking_protection_prefs.cc b/component registry->RegisterBooleanPref( prefs::kIpProtectionEnabled, false, user_prefs::PrefRegistrySyncable::SYNCABLE_PREF); -diff --git a/cromite_flags/content/public/common/content_features_cc/Disable-FirstPartySets-and-StorageAccessAPI.inc b/cromite_flags/content/public/common/content_features_cc/Disable-FirstPartySets-and-StorageAccessAPI.inc -new file mode 100644 ---- /dev/null -+++ b/cromite_flags/content/public/common/content_features_cc/Disable-FirstPartySets-and-StorageAccessAPI.inc -@@ -0,0 +1 @@ -+SET_CROMITE_FEATURE_DISABLED(kFirstPartySets); -- diff --git a/build/patches/Disable-GSA-by-default.patch b/build/patches/Disable-GSA-by-default.patch index 5a9a351d..57323e99 100644 --- a/build/patches/Disable-GSA-by-default.patch +++ b/build/patches/Disable-GSA-by-default.patch @@ -4,11 +4,11 @@ Subject: Disable GSA by default License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- - .../org/chromium/chrome/browser/IntentHandler.java | 5 ----- - .../org/chromium/chrome/browser/share/LensUtils.java | 12 +----------- - .../org/chromium/chrome/browser/gsa/GSAState.java | 11 +++++------ - .../Disable-GSA-by-default.inc | 2 ++ - 4 files changed, 8 insertions(+), 22 deletions(-) + .../org/chromium/chrome/browser/IntentHandler.java | 5 ----- + .../chromium/chrome/browser/share/LensUtils.java | 14 ++------------ + .../org/chromium/chrome/browser/gsa/GSAState.java | 11 +++++------ + .../Disable-GSA-by-default.inc | 1 + + 4 files changed, 8 insertions(+), 23 deletions(-) create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-GSA-by-default.inc diff --git a/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java b/chrome/android/java/src/org/chromium/chrome/browser/IntentHandler.java @@ -64,7 +64,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils } } -@@ -98,11 +92,7 @@ public class LensUtils { +@@ -98,15 +92,11 @@ public class LensUtils { * @return Whether the package is valid. */ public static boolean isValidAgsaPackage(final ExternalAuthUtils externalAuthUtils) { @@ -77,6 +77,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/share/LensUtils } public static boolean isGoogleLensFeatureEnabled(boolean isIncognito) { +- return !isIncognito; ++ return false; + } + + public static boolean shouldLogUkmForLensContextMenuFeatures() { diff --git a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAState.java b/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAState.java --- a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAState.java +++ b/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAState.java @@ -111,7 +116,7 @@ diff --git a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAStat */ public boolean isAgsaVersionBelowMinimum( String installedVersionName, String minimumVersionName) { -+ if ((true)) return true; ++ if ((true)) return false; if (TextUtils.isEmpty(installedVersionName) || TextUtils.isEmpty(minimumVersionName)) { return true; } @@ -137,7 +142,6 @@ diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/D new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-GSA-by-default.inc -@@ -0,0 +1,2 @@ -+SET_CROMITE_FEATURE_DISABLED(kContextMenuSearchWithGoogleLens); +@@ -0,0 +1 @@ +SET_CROMITE_FEATURE_DISABLED(kExperimentsForAgsa); -- diff --git a/build/patches/Disable-PrivacyGuide.patch b/build/patches/Disable-PrivacyGuide.patch index e333a85b..af2c6018 100644 --- a/build/patches/Disable-PrivacyGuide.patch +++ b/build/patches/Disable-PrivacyGuide.patch @@ -4,11 +4,23 @@ Subject: Disable PrivacyGuide License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - chrome/browser/ui/webui/settings/settings_ui.cc | 2 +- - .../common/chrome_features_cc/Disable-PrivacyGuide.inc | 10 ++++++++++ - 2 files changed, 11 insertions(+), 1 deletion(-) + chrome/android/java/res/xml/privacy_preferences.xml | 1 + + chrome/browser/ui/webui/settings/settings_ui.cc | 2 +- + .../common/chrome_features_cc/Disable-PrivacyGuide.inc | 9 +++++++++ + 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-PrivacyGuide.inc +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 +@@ -21,6 +21,7 @@ found in the LICENSE file. + android:fragment="org.chromium.chrome.browser.browsing_data.ClearBrowsingDataTabsFragment" /> + diff --git a/chrome/browser/ui/webui/settings/settings_ui.cc b/chrome/browser/ui/webui/settings/settings_ui.cc --- a/chrome/browser/ui/webui/settings/settings_ui.cc +++ b/chrome/browser/ui/webui/settings/settings_ui.cc @@ -25,7 +37,7 @@ diff --git a/cromite_flags/chrome/common/chrome_features_cc/Disable-PrivacyGuide new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/common/chrome_features_cc/Disable-PrivacyGuide.inc -@@ -0,0 +1,10 @@ +@@ -0,0 +1,9 @@ +SET_CROMITE_FEATURE_DISABLED(kPrivacyGuide3); +SET_CROMITE_FEATURE_DISABLED(kPrivacyGuidePreload); + @@ -33,7 +45,6 @@ new file mode 100644 + +SET_CROMITE_FEATURE_DISABLED(kPrivacyGuideAndroid3); +SET_CROMITE_FEATURE_DISABLED(kPrivacyGuidePreloadAndroid); -+SET_CROMITE_FEATURE_DISABLED(kPrivacyGuideAndroid); + +#endif -- diff --git a/build/patches/Disable-TLS-resumption.patch b/build/patches/Disable-TLS-resumption.patch index 1cc3c2db..b3e88ed7 100644 --- a/build/patches/Disable-TLS-resumption.patch +++ b/build/patches/Disable-TLS-resumption.patch @@ -142,7 +142,7 @@ diff --git a/net/quic/quic_session_pool.cc b/net/quic/quic_session_pool.cc HostsFromOrigins(params_.origins_to_force_quic_on), actual_network_anonymization_key), - std::make_unique(), this); -+ std::make_unique(), this); ++ std::make_unique(), this); quic::QuicCryptoClientConfig* crypto_config = crypto_config_owner->config(); crypto_config->AddCanonicalSuffix(".c.youtube.com"); diff --git a/build/patches/Disable-all-predictors-code.patch b/build/patches/Disable-all-predictors-code.patch index fc99bf05..8c1bfd18 100644 --- a/build/patches/Disable-all-predictors-code.patch +++ b/build/patches/Disable-all-predictors-code.patch @@ -9,12 +9,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../preloading_model_keyed_service.cc | 1 + .../preloading_model_keyed_service_factory.cc | 4 +-- .../chrome_hints_manager.cc | 1 + + .../model_validator_keyed_service.cc | 4 ++- .../optimization_guide_keyed_service.cc | 1 - .../predictors/loading_predictor_config.cc | 4 +-- .../browser/predictors/predictors_features.cc | 11 ++------ chrome/browser/ui/tab_helpers.cc | 1 - .../ui/webui/omnibox/omnibox_page_handler.cc | 14 +++++++++++ .../browser/autofill_optimization_guide.cc | 5 ++-- + .../metrics/shadow_prediction_metrics.cc | 2 +- .../browser/autocomplete_controller.cc | 2 ++ .../optimization_guide/core/hints_fetcher.cc | 1 + .../optimization_guide/core/hints_manager.cc | 5 ++++ @@ -22,6 +24,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../core/prediction_model_download_manager.cc | 6 +++-- .../core/prediction_model_fetcher_impl.cc | 1 + components/optimization_guide/features.gni | 3 +-- + .../phishing_classifier.cc | 2 +- components/search/ntp_features.cc | 3 +++ .../Disable-all-predictors-code.inc | 4 +++ .../Disable-all-predictors-code.inc | 7 ++++++ @@ -29,7 +32,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../Disable-all-predictors-code.inc | 2 ++ .../document_speculation_rules.cc | 1 + .../platform/runtime_enabled_features.json5 | 2 +- - 24 files changed, 75 insertions(+), 35 deletions(-) + 27 files changed, 80 insertions(+), 38 deletions(-) create mode 100644 cromite_flags/chrome/browser/browser_features_cc/Disable-all-predictors-code.inc create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-all-predictors-code.inc create mode 100644 cromite_flags/components/permissions/features_cc/Disable-all-predictors-code.inc @@ -81,6 +84,40 @@ diff --git a/chrome/browser/optimization_guide/chrome_hints_manager.cc b/chrome/ if (prediction->prediction_source() != NavigationPredictorKeyedService::PredictionSource:: +diff --git a/chrome/browser/optimization_guide/model_validator_keyed_service.cc b/chrome/browser/optimization_guide/model_validator_keyed_service.cc +--- a/chrome/browser/optimization_guide/model_validator_keyed_service.cc ++++ b/chrome/browser/optimization_guide/model_validator_keyed_service.cc +@@ -34,13 +34,13 @@ namespace optimization_guide { + ModelValidatorKeyedService::ModelValidatorKeyedService(Profile* profile) + : profile_(profile) { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + DCHECK(ShouldStartModelValidator()); + auto* opt_guide_service = + OptimizationGuideKeyedServiceFactory::GetForProfile(profile); + if (!opt_guide_service) { + return; + } +-#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + if (switches::ShouldValidateModel()) { + // Create the validator object which will get destroyed when the model + // load is complete. +@@ -93,6 +93,7 @@ void ModelValidatorKeyedService::OnPrimaryAccountChanged( + + void ModelValidatorKeyedService::StartModelExecutionValidation() { + DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); ++#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + auto* opt_guide_service = + OptimizationGuideKeyedServiceFactory::GetForProfile(profile_); + if (!opt_guide_service) { +@@ -110,6 +111,7 @@ void ModelValidatorKeyedService::StartModelExecutionValidation() { + proto::ModelExecutionFeature::MODEL_EXECUTION_FEATURE_TEST, request, + base::BindOnce(&ModelValidatorKeyedService::OnModelExecuteResponse, + weak_ptr_factory_.GetWeakPtr())); ++#endif + } + + void ModelValidatorKeyedService::OnModelExecuteResponse( 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 @@ -239,6 +276,18 @@ diff --git a/components/autofill/core/browser/autofill_optimization_guide.cc b/c optimization_guide::OptimizationGuideDecision decision = decider_->CanApplyOptimization(url, optimization_type, /*optimization_metadata=*/nullptr); +diff --git a/components/autofill/core/browser/metrics/shadow_prediction_metrics.cc b/components/autofill/core/browser/metrics/shadow_prediction_metrics.cc +--- a/components/autofill/core/browser/metrics/shadow_prediction_metrics.cc ++++ b/components/autofill/core/browser/metrics/shadow_prediction_metrics.cc +@@ -74,7 +74,7 @@ void LogRegexShadowPredictions(const AutofillField& field) { + + void LogMlShadowPredictions(const AutofillField& field) { + #if !BUILDFLAG(BUILD_WITH_TFLITE_LIB) +- return; ++ if ((true)) return; + #endif + if (!base::FeatureList::IsEnabled(features::kAutofillModelPredictions)) { + return; diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/omnibox/browser/autocomplete_controller.cc --- a/components/omnibox/browser/autocomplete_controller.cc +++ b/components/omnibox/browser/autocomplete_controller.cc @@ -405,6 +454,18 @@ diff --git a/components/optimization_guide/features.gni b/components/optimizatio } declare_args() { +diff --git a/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.cc b/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.cc +--- a/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.cc ++++ b/components/safe_browsing/content/renderer/phishing_classifier/phishing_classifier.cc +@@ -234,7 +234,7 @@ void PhishingClassifier::VisualExtractionFinished(bool success) { + *bitmap_, base::BindOnce(&PhishingClassifier::OnVisualTfLiteModelDone, + weak_factory_.GetWeakPtr(), std::move(verdict))); + #else +- RunCallback(*verdict); ++ //RunCallback(*verdict); + #endif + } + diff --git a/components/search/ntp_features.cc b/components/search/ntp_features.cc --- a/components/search/ntp_features.cc +++ b/components/search/ntp_features.cc diff --git a/build/patches/Disable-safety-check.patch b/build/patches/Disable-safety-check.patch index f5f9385f..8474a20c 100644 --- a/build/patches/Disable-safety-check.patch +++ b/build/patches/Disable-safety-check.patch @@ -123,7 +123,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3459,7 +3459,6 @@ static_library("browser") { +@@ -3461,7 +3461,6 @@ static_library("browser") { "//chrome/browser/reading_list/android", "//chrome/browser/recent_tabs:jni_headers", "//chrome/browser/safe_browsing/android:safe_browsing_enums", diff --git a/build/patches/Disable-support-for-RAR-files-inspection.patch b/build/patches/Disable-support-for-RAR-files-inspection.patch index 47e4aae5..2a3a45d9 100644 --- a/build/patches/Disable-support-for-RAR-files-inspection.patch +++ b/build/patches/Disable-support-for-RAR-files-inspection.patch @@ -43,8 +43,8 @@ diff --git a/chrome/services/file_util/safe_archive_analyzer.cc b/chrome/service - /*password=*/password, - std::move(analysis_finished_callback), - std::move(temp_file_getter_callback), &results_); -+ LOG(FATAL) << "AnalyzeRarFile is disabled in this build"; + Timeout(); ++ LOG(FATAL) << "AnalyzeRarFile is disabled in this build"; } void SafeArchiveAnalyzer::AnalyzeSevenZipFile( diff --git a/build/patches/Enable-ImprovedBookmarks-by-default.patch b/build/patches/Enable-ImprovedBookmarks-by-default.patch index 0a52c778..f55ea972 100644 --- a/build/patches/Enable-ImprovedBookmarks-by-default.patch +++ b/build/patches/Enable-ImprovedBookmarks-by-default.patch @@ -82,7 +82,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm 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 -@@ -765,7 +765,7 @@ public abstract class ChromeFeatureList { +@@ -766,7 +766,7 @@ public abstract class ChromeFeatureList { public static final MutableFlagWithSafeDefault sAdvancedPeripheralsSupportTabStrip = newMutableFlagWithSafeDefault(ADVANCED_PERIPHERALS_SUPPORT_TAB_STRIP, true); public static final MutableFlagWithSafeDefault sAndroidImprovedBookmarks = diff --git a/build/patches/Enable-search-engine-settings-desktop-ui.patch b/build/patches/Enable-search-engine-settings-desktop-ui.patch index 49ccdf7b..0ebc16c1 100644 --- a/build/patches/Enable-search-engine-settings-desktop-ui.patch +++ b/build/patches/Enable-search-engine-settings-desktop-ui.patch @@ -406,7 +406,7 @@ new file mode 100644 diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3634,6 +3634,9 @@ static_library("browser") { +@@ -3636,6 +3636,9 @@ static_library("browser") { "//components/user_scripts/android", ] } @@ -1134,7 +1134,7 @@ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.cc b/chrome // Dummy number used for indicating that a new search engine is added. const int kNewSearchEngineIndex = -1; -@@ -220,15 +223,17 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine( +@@ -220,15 +223,18 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine( IDS_SEARCH_ENGINES_EDITOR_DESCRIPTION_COLUMN)); dict.Set("keyword", table_model->GetText( index, IDS_SEARCH_ENGINES_EDITOR_KEYWORD_COLUMN)); @@ -1150,10 +1150,11 @@ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.cc b/chrome dict.Set("iconURL", icon_url.spec()); +#if !BUILDFLAG(IS_ANDROID) ++ Profile* profile = Profile::FromWebUI(web_ui()); const bool is_search_engine_choice_settings_ui = search_engines::IsChoiceScreenFlagEnabled( search_engines::ChoicePromo::kAny); -@@ -252,6 +257,7 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine( +@@ -252,6 +258,7 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine( dict.Set("iconPath", base::StrCat({icon_path, "@2x"})); } } @@ -1161,17 +1162,14 @@ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.cc b/chrome dict.Set("modelIndex", base::checked_cast(index)); -@@ -266,8 +272,10 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine( +@@ -266,6 +273,7 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine( dict.Set("isManaged", list_controller_.IsManaged(template_url)); TemplateURL::Type type = template_url->type(); dict.Set("isOmniboxExtension", type == TemplateURL::OMNIBOX_API_EXTENSION); +#if !BUILDFLAG(IS_ANDROID) if (type == TemplateURL::NORMAL_CONTROLLED_BY_EXTENSION || type == TemplateURL::OMNIBOX_API_EXTENSION) { -+ Profile* profile = Profile::FromWebUI(web_ui()); const extensions::Extension* extension = - extensions::ExtensionRegistry::Get(profile)->GetExtensionById( - template_url->GetExtensionId(), @@ -282,6 +290,7 @@ base::Value::Dict SearchEnginesHandler::CreateDictionaryForEngine( dict.Set("extension", std::move(ext_info)); } diff --git a/build/patches/Experimental-user-scripts-support.patch b/build/patches/Experimental-user-scripts-support.patch index fb81267b..05887d1c 100644 --- a/build/patches/Experimental-user-scripts-support.patch +++ b/build/patches/Experimental-user-scripts-support.patch @@ -74,7 +74,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../user-script-ui/user-scripts-ui.js | 9 + .../browser/ui/user_scripts_ui.cc | 146 ++++ .../user_scripts/browser/ui/user_scripts_ui.h | 37 + - .../browser/user_script_loader.cc | 715 ++++++++++++++++ + .../browser/user_script_loader.cc | 717 ++++++++++++++++ .../user_scripts/browser/user_script_loader.h | 168 ++++ .../browser/user_script_pref_info.cc | 34 + .../browser/user_script_pref_info.h | 72 ++ @@ -124,7 +124,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../user_scripts/renderer/user_script_set.cc | 264 ++++++ .../user_scripts/renderer/user_script_set.h | 101 +++ .../renderer/user_script_set_manager.cc | 77 ++ - .../renderer/user_script_set_manager.h | 61 ++ + .../renderer/user_script_set_manager.h | 63 ++ .../renderer/user_scripts_dispatcher.cc | 36 + .../renderer/user_scripts_dispatcher.h | 49 ++ .../renderer/user_scripts_renderer_client.cc | 108 +++ @@ -134,7 +134,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../strings/userscripts_strings.grdp | 54 ++ .../Experimental-user-scripts-support.inc | 13 + tools/gritsettings/resource_ids.spec | 6 + - 107 files changed, 9492 insertions(+), 2 deletions(-) + 107 files changed, 9496 insertions(+), 2 deletions(-) create mode 100644 components/user_scripts/README.md create mode 100755 components/user_scripts/android/BUILD.gn create mode 100644 components/user_scripts/android/java/res/layout/accept_script_item.xml @@ -325,7 +325,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 -@@ -3624,6 +3624,13 @@ static_library("browser") { +@@ -3626,6 +3626,13 @@ static_library("browser") { ] deps += [ "//chrome/android/modules/dev_ui/provider:native" ] } @@ -2832,7 +2832,7 @@ diff --git a/components/user_scripts/browser/user_script_loader.cc b/components/ new file mode 100755 --- /dev/null +++ b/components/user_scripts/browser/user_script_loader.cc -@@ -0,0 +1,715 @@ +@@ -0,0 +1,717 @@ +/* + This file is part of Bromite. + @@ -2862,6 +2862,7 @@ new file mode 100755 +#include "base/strings/string_util.h" +#include "base/strings/strcat.h" +#include "base/files/file.h" ++#include "base/files/file_path.h" +#include "base/files/file_util.h" +#include "base/files/file_enumerator.h" +#include "base/i18n/file_util_icu.h" @@ -2883,6 +2884,7 @@ new file mode 100755 +#include "content/public/browser/notification_service.h" +#include "content/public/browser/notification_types.h" +#include "content/public/browser/render_process_host.h" ++#include "ui/shell_dialogs/selected_file_info.h" +#include "ui/shell_dialogs/select_file_dialog.h" +#include "content/browser/file_system_access/file_system_chooser.h" +#include "chrome/browser/ui/chrome_select_file_policy.h" @@ -3528,11 +3530,11 @@ new file mode 100755 +} + +void UserScriptLoader::FileSelected( -+ const base::FilePath& path, int index, void* params) { ++ const ui::SelectedFileInfo& file, int index, void* params) { + if (base::FeatureList::IsEnabled(features::kEnableLoggingUserScripts)) -+ LOG(INFO) << "UserScriptLoader: FileSelected " << path; ++ LOG(INFO) << "UserScriptLoader: FileSelected " << file.path(); + -+ UserScriptLoader::TryToInstall(path); ++ UserScriptLoader::TryToInstall(file.path()); +} + +void UserScriptLoader::LoadScriptFromPathOnFileTaskRunnerCallback( @@ -3709,7 +3711,7 @@ new file mode 100755 + + // Manage file dialog requests + scoped_refptr dialog_; -+ void FileSelected(const base::FilePath& path, ++ void FileSelected(const ui::SelectedFileInfo& file, + int index, void* params) override; + void FileSelectionCanceled(void* params) override; + void LoadScriptFromPathOnFileTaskRunnerCallback( @@ -10000,7 +10002,7 @@ diff --git a/components/user_scripts/renderer/user_script_set_manager.h b/compon new file mode 100755 --- /dev/null +++ b/components/user_scripts/renderer/user_script_set_manager.h -@@ -0,0 +1,61 @@ +@@ -0,0 +1,63 @@ +#ifndef USERSCRIPTS_RENDER_SET_MANAGER_H_ +#define USERSCRIPTS_RENDER_SET_MANAGER_H_ + @@ -10041,8 +10043,10 @@ new file mode 100755 + UserScript::RunLocation run_location); + +private: ++#if BUILDFLAG(IS_ANDROID) + // content::RenderThreadObserver implementation. + bool OnControlMessageReceived(const IPC::Message& message) override; ++#endif + + base::ObserverList::Unchecked observers_; + diff --git a/build/patches/Eyeo-Adblock-Remove-Privacy-Issues.patch b/build/patches/Eyeo-Adblock-Remove-Privacy-Issues.patch index cc98630f..778519b3 100644 --- a/build/patches/Eyeo-Adblock-Remove-Privacy-Issues.patch +++ b/build/patches/Eyeo-Adblock-Remove-Privacy-Issues.patch @@ -70,6 +70,7 @@ suit Bromite logic .../core/converter/parser/url_filter.cc | 10 +- .../converter/parser/url_filter_options.cc | 21 +- .../serializer/flatbuffer_serializer.cc | 75 +- + components/adblock/core/hash/schema_hash.h | 10 + .../adblock/core/sitekey_storage_impl.cc | 7 + .../core/subscription/conversion_executors.h | 1 + .../filtering_configuration_maintainer.h | 4 + @@ -107,7 +108,7 @@ suit Bromite logic .../blink/renderer/core/css/style_engine.h | 1 + .../renderer/core/exported/web_document.cc | 15 +- .../definitions/adblock_private.d.ts | 14 + - 102 files changed, 8856 insertions(+), 1160 deletions(-) + 103 files changed, 8866 insertions(+), 1160 deletions(-) create mode 100644 chrome/browser/resources/settings/adblock_page/adblock_page.html create mode 100644 chrome/browser/resources/settings/adblock_page/adblock_page.ts rename components/adblock/android/java/res/xml/{adblock_preferences.xml => eyeo_adblock_preferences.xml} (56%) @@ -116,6 +117,7 @@ suit Bromite logic delete mode 100644 components/adblock/core/adblock_telemetry_service.cc delete mode 100644 components/adblock/core/adblock_telemetry_service.h create mode 100644 components/adblock/core/converter/parser/test/test_rules.txt + create mode 100644 components/adblock/core/hash/schema_hash.h create mode 100644 components/content_settings/core/browser/bromite_content_settings/ads.inc create mode 100644 components/resources/adblocking/snippets/dist/isolated-first-xpath3.jst create mode 100644 components/resources/adblocking/snippets/dist/isolated-first-xpath3.source.jst @@ -3574,6 +3576,21 @@ diff --git a/components/adblock/core/converter/serializer/flatbuffer_serializer. return; } +diff --git a/components/adblock/core/hash/schema_hash.h b/components/adblock/core/hash/schema_hash.h +new file mode 100644 +--- /dev/null ++++ b/components/adblock/core/hash/schema_hash.h +@@ -0,0 +1,10 @@ ++#include ++ ++#include ++ ++#ifndef GEN_COMPONENTS_ADBLOCK_CORE_HASH_SCHEMA_HASH_H_ ++#define GEN_COMPONENTS_ADBLOCK_CORE_HASH_SCHEMA_HASH_H_ ++ ++extern const std::array kSha256_filter_list_schema_generated_h; ++ ++#endif // GEN_COMPONENTS_ADBLOCK_CORE_HASH_SCHEMA_HASH_H_ diff --git a/components/adblock/core/sitekey_storage_impl.cc b/components/adblock/core/sitekey_storage_impl.cc --- a/components/adblock/core/sitekey_storage_impl.cc +++ b/components/adblock/core/sitekey_storage_impl.cc diff --git a/build/patches/JIT-site-settings.patch b/build/patches/JIT-site-settings.patch index 12dd818a..2119bb50 100644 --- a/build/patches/JIT-site-settings.patch +++ b/build/patches/JIT-site-settings.patch @@ -205,7 +205,7 @@ new file mode 100644 + + @Override + public int getCategoryDescription() { -+ return R.string.settings_site_settings_javascript_jit_description; ++ return R.string.settings_site_settings_javascript_jit_description_cromite; + } + + @Override @@ -238,7 +238,7 @@ new file mode 100644 + + JavaScript JIT + -+ ++ + Enable the JIT compiler and WebAssembly support in V8 + + @@ -265,7 +265,7 @@ new file mode 100644 + .set_desktop_ui() + .set_is_renderer_content_setting() + .set_title_ui(IDS_JAVASCRIPT_JIT_PERMISSION_TITLE) -+ .set_description_ui(IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_DESCRIPTION) ++ .set_description_ui(IDS_SETTINGS_SITE_SETTINGS_JAVASCRIPT_JIT_DESCRIPTION_CROMITE) + .set_allowed_ui(IDS_WEBSITE_SETTINGS_CATEGORY_JAVASCRIPT_JIT_ENABLED) + .set_blocked_ui(IDS_WEBSITE_SETTINGS_CATEGORY_JAVASCRIPT_JIT_DISABLED) + .set_allowed_exceptions_ui(IDS_WEBSITE_SETTINGS_ADD_SITE_DESCRIPTION_JAVASCRIPT_JIT_ALLOW) diff --git a/build/patches/Move-navigation-bar-to-bottom.patch b/build/patches/Move-navigation-bar-to-bottom.patch index 402265d8..4696e55f 100644 --- a/build/patches/Move-navigation-bar-to-bottom.patch +++ b/build/patches/Move-navigation-bar-to-bottom.patch @@ -37,7 +37,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../strip/StripLayoutHelperManager.java | 35 ++++++- .../scene_layer/StaticTabSceneLayer.java | 7 +- .../scene_layer/TabListSceneLayer.java | 8 ++ - .../scene_layer/TabStripSceneLayer.java | 20 +++- + .../scene_layer/TabStripSceneLayer.java | 22 ++++- .../browser/findinpage/FindToolbarTablet.java | 10 +- .../fullscreen/BrowserControlsManager.java | 12 +++ .../messages/MessageContainerCoordinator.java | 16 +++- @@ -87,7 +87,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../AccessibilitySettingsDelegate.java | 6 ++ .../render_widget_host_view_android.cc | 3 + .../Move-navigation-bar-to-bottom.inc | 12 +++ - 74 files changed, 894 insertions(+), 82 deletions(-) + 74 files changed, 895 insertions(+), 83 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Move-navigation-bar-to-bottom.inc diff --git a/cc/base/features.cc b/cc/base/features.cc @@ -1180,7 +1180,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/scen + float viewportHeight, + int topControlsHeight) { if (mNativePtr == 0) return; - final boolean visible = yOffset > -layoutHelper.getHeight(); +- final boolean visible = yOffset > -layoutHelper.getHeight(); ++ boolean visible = yOffset > -layoutHelper.getHeight(); + if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) { + // check if force tablet mode is active + // is active if(isTablet != isNonMultiDisplayContextOnTablet) @@ -1356,16 +1357,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java -@@ -18,6 +18,8 @@ import android.util.AttributeSet; - import android.view.DragEvent; +@@ -19,6 +19,8 @@ import android.view.DragEvent; import android.view.Gravity; import android.view.LayoutInflater; + import android.view.ViewStub; +import android.view.ViewGroup.LayoutParams; +import android.widget.FrameLayout; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; -@@ -201,6 +203,12 @@ public class NewTabPageLayout extends LinearLayout { +@@ -202,6 +204,12 @@ public class NewTabPageLayout extends LinearLayout { super.onFinishInflate(); mMiddleSpacer = findViewById(R.id.ntp_middle_spacer); insertSiteSectionView(); @@ -1893,7 +1894,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final CachedFlag sOmniboxMatchToolbarAndStatusBarColor = newCachedFlag(OMNIBOX_MATCH_TOOLBAR_AND_STATUS_BAR_COLOR, false); + public static final CachedFlag sMoveTopToolbarToBottom = -+ new CachedFlag(MOVE_TOP_TOOLBAR_TO_BOTTOM, false); ++ newCachedFlag(MOVE_TOP_TOOLBAR_TO_BOTTOM, false); public static final CachedFlag sOmniboxModernizeVisualUpdate = newCachedFlag(OMNIBOX_MODERNIZE_VISUAL_UPDATE, true); public static final CachedFlag sOptimizationGuidePushNotifications = diff --git a/build/patches/Partition-HSTS-cache-by-NAK.patch b/build/patches/Partition-HSTS-cache-by-NAK.patch index 8a26d500..a1a21a05 100644 --- a/build/patches/Partition-HSTS-cache-by-NAK.patch +++ b/build/patches/Partition-HSTS-cache-by-NAK.patch @@ -4,19 +4,25 @@ Subject: Partition HSTS cache by NAK License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- - .../browser/ssl/https_upgrades_interceptor.cc | 1 + - .../webui/net_internals/net_internals_ui.cc | 14 ++- - .../core/browser/hsts_query.cc | 1 + - net/http/transport_security_state.cc | 98 +++++++++++++------ - net/http/transport_security_state.h | 32 +++--- - net/quic/crypto/proof_verifier_chromium.cc | 2 +- - net/socket/ssl_client_socket_impl.cc | 2 +- - .../url_request_context_builder.cc | 14 --- - net/url_request/url_request_http_job.cc | 7 +- - services/network/network_context.cc | 26 +++-- - services/network/network_context.h | 11 ++- - .../public/mojom/network_context.mojom | 8 +- - 12 files changed, 132 insertions(+), 84 deletions(-) + .../browser/ssl/https_upgrades_interceptor.cc | 1 + + .../webui/net_internals/net_internals_ui.cc | 14 ++- + .../core/browser/hsts_query.cc | 1 + + .../web_package/signed_exchange_handler.cc | 7 +- + .../web_package/signed_exchange_handler.h | 2 + + .../web_package/signed_exchange_loader.cc | 2 +- + net/http/transport_security_state.cc | 106 ++++++++++++------ + net/http/transport_security_state.h | 38 ++++--- + net/quic/crypto/proof_verifier_chromium.cc | 5 +- + net/quic/quic_chromium_client_session.cc | 2 +- + net/socket/ssl_client_socket_impl.cc | 5 +- + net/spdy/spdy_session.cc | 11 +- + net/spdy/spdy_session.h | 3 +- + .../url_request_context_builder.cc | 14 --- + net/url_request/url_request_http_job.cc | 7 +- + services/network/network_context.cc | 31 +++-- + services/network/network_context.h | 13 ++- + .../public/mojom/network_context.mojom | 9 +- + 18 files changed, 170 insertions(+), 101 deletions(-) diff --git a/chrome/browser/ssl/https_upgrades_interceptor.cc b/chrome/browser/ssl/https_upgrades_interceptor.cc --- a/chrome/browser/ssl/https_upgrades_interceptor.cc @@ -80,6 +86,82 @@ diff --git a/components/password_manager/core/browser/hsts_query.cc b/components origin.host(), mojo::WrapCallbackWithDropHandler( base::BindOnce(&HSTSCallbackHelper::ReportResult, callback_helper), +diff --git a/content/browser/web_package/signed_exchange_handler.cc b/content/browser/web_package/signed_exchange_handler.cc +--- a/content/browser/web_package/signed_exchange_handler.cc ++++ b/content/browser/web_package/signed_exchange_handler.cc +@@ -88,6 +88,7 @@ using VerifyCallback = + + void VerifyCert(const scoped_refptr& certificate, + const GURL& url, ++ const net::NetworkAnonymizationKey& network_anonymization_key, + const std::string& ocsp_result, + const std::string& sct_list, + int frame_tree_node_id, +@@ -109,7 +110,7 @@ void VerifyCert(const scoped_refptr& certificate, + } + + network_context->VerifyCertForSignedExchange( +- certificate, url, ocsp_result, sct_list, std::move(wrapped_callback)); ++ certificate, url, network_anonymization_key, ocsp_result, sct_list, std::move(wrapped_callback)); + } + + std::string OCSPErrorToString(const bssl::OCSPVerifyResult& ocsp_result) { +@@ -172,6 +173,7 @@ SignedExchangeHandler::SignedExchangeHandler( + std::unique_ptr body, + ExchangeHeadersCallback headers_callback, + std::unique_ptr cert_fetcher_factory, ++ const net::NetworkAnonymizationKey& network_anonymization_key, + const std::optional outer_request_isolation_info, + int load_flags, + const net::IPEndPoint& remote_endpoint, +@@ -185,6 +187,7 @@ SignedExchangeHandler::SignedExchangeHandler( + source_(std::move(body)), + cert_fetcher_factory_(std::move(cert_fetcher_factory)), + devtools_proxy_(std::move(devtools_proxy)), ++ network_anonymization_key_(network_anonymization_key), + outer_request_isolation_info_(std::move(outer_request_isolation_info)), + load_flags_(load_flags), + remote_endpoint_(remote_endpoint), +@@ -528,7 +531,7 @@ void SignedExchangeHandler::OnCertReceived( + // property, or + const std::string& stapled_ocsp_response = unverified_cert_chain_->ocsp(); + +- VerifyCert(certificate, url, stapled_ocsp_response, sct_list_from_cert_cbor, ++ VerifyCert(certificate, url, network_anonymization_key_, stapled_ocsp_response, sct_list_from_cert_cbor, + frame_tree_node_id_, + base::BindOnce(&SignedExchangeHandler::OnVerifyCert, + weak_factory_.GetWeakPtr())); +diff --git a/content/browser/web_package/signed_exchange_handler.h b/content/browser/web_package/signed_exchange_handler.h +--- a/content/browser/web_package/signed_exchange_handler.h ++++ b/content/browser/web_package/signed_exchange_handler.h +@@ -102,6 +102,7 @@ class CONTENT_EXPORT SignedExchangeHandler { + std::unique_ptr body, + ExchangeHeadersCallback headers_callback, + std::unique_ptr cert_fetcher_factory, ++ const net::NetworkAnonymizationKey& network_anonymization_key, + const std::optional outer_request_isolation_info, + int load_flags, + const net::IPEndPoint& remote_endpoint, +@@ -191,6 +192,7 @@ class CONTENT_EXPORT SignedExchangeHandler { + // `cert_fetcher_` borrows reference from `devtools_proxy_`, so it needs to be + // declared last, so that it is destroyed first. + std::unique_ptr cert_fetcher_; ++ const net::NetworkAnonymizationKey network_anonymization_key_; + std::optional outer_request_isolation_info_; + const int load_flags_ = 0; + const net::IPEndPoint remote_endpoint_; +diff --git a/content/browser/web_package/signed_exchange_loader.cc b/content/browser/web_package/signed_exchange_loader.cc +--- a/content/browser/web_package/signed_exchange_loader.cc ++++ b/content/browser/web_package/signed_exchange_loader.cc +@@ -119,7 +119,7 @@ SignedExchangeLoader::SignedExchangeLoader( + std::move(outer_response_body)), + base::BindOnce(&SignedExchangeLoader::OnHTTPExchangeFound, + weak_factory_.GetWeakPtr()), +- std::move(cert_fetcher_factory), ++ std::move(cert_fetcher_factory), network_anonymization_key, + outer_request_.trusted_params + ? std::make_optional(outer_request_.trusted_params->isolation_info) + : std::nullopt, 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 @@ -154,7 +236,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ dict.Set("should_upgrade_to_ssl", sts_state.ShouldUpgradeToSSL()); dict.Set("host_found_in_hsts_bypass_list", hsts_host_bypass_list_.find(host) != hsts_host_bypass_list_.end()); -@@ -283,13 +307,14 @@ base::Value::Dict TransportSecurityState::NetLogUpgradeToSSLParam( +@@ -283,31 +307,33 @@ base::Value::Dict TransportSecurityState::NetLogUpgradeToSSLParam( } bool TransportSecurityState::ShouldUpgradeToSSL( @@ -171,17 +253,20 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ } TransportSecurityState::PKPStatus TransportSecurityState::CheckPublicKeyPins( -@@ -297,7 +322,7 @@ TransportSecurityState::PKPStatus TransportSecurityState::CheckPublicKeyPins( + const HostPortPair& host_port_pair, bool is_issued_by_known_root, - const HashValueVector& public_key_hashes) { +- const HashValueVector& public_key_hashes) { ++ const HashValueVector& public_key_hashes, ++ const NetworkAnonymizationKey& network_anonymization_key) { // Perform pin validation only if the server actually has public key pins. - if (!HasPublicKeyPins(host_port_pair.host())) { + if (!HasPublicKeyPins(network_anonymization_key, host_port_pair.host())) { return PKPStatus::OK; } -@@ -305,9 +330,9 @@ TransportSecurityState::PKPStatus TransportSecurityState::CheckPublicKeyPins( - public_key_hashes); + return CheckPublicKeyPinsImpl(host_port_pair, is_issued_by_known_root, +- public_key_hashes); ++ public_key_hashes, network_anonymization_key); } -bool TransportSecurityState::HasPublicKeyPins(const std::string& host) { @@ -192,7 +277,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ } TransportSecurityState::CTRequirementsStatus -@@ -392,12 +417,13 @@ void TransportSecurityState::UpdatePinList( +@@ -392,12 +418,13 @@ void TransportSecurityState::UpdatePinList( } void TransportSecurityState::AddHSTSInternal( @@ -207,7 +292,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ if (canonicalized_host.empty()) return; -@@ -421,13 +447,14 @@ void TransportSecurityState::AddHSTSInternal( +@@ -421,13 +448,14 @@ void TransportSecurityState::AddHSTSInternal( DirtyNotify(); } @@ -224,7 +309,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ if (canonicalized_host.empty()) return; -@@ -472,10 +499,12 @@ TransportSecurityState::PKPStatus TransportSecurityState::CheckPins( +@@ -472,10 +500,12 @@ TransportSecurityState::PKPStatus TransportSecurityState::CheckPins( return PKPStatus::VIOLATED; } @@ -239,7 +324,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ if (canonicalized_host.empty()) return false; -@@ -552,7 +581,8 @@ void TransportSecurityState::DirtyNotify() { +@@ -552,7 +582,8 @@ void TransportSecurityState::DirtyNotify() { delegate_->StateIsDirty(this); } @@ -249,7 +334,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ const std::string& value) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); -@@ -571,23 +601,25 @@ bool TransportSecurityState::AddHSTSHeader(const std::string& host, +@@ -571,23 +602,25 @@ bool TransportSecurityState::AddHSTSHeader(const std::string& host, upgrade_mode = STSState::MODE_FORCE_HTTPS; } @@ -280,16 +365,20 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ } // static -@@ -612,7 +644,7 @@ TransportSecurityState::CheckPublicKeyPinsImpl( +@@ -610,9 +643,10 @@ TransportSecurityState::PKPStatus + TransportSecurityState::CheckPublicKeyPinsImpl( + const HostPortPair& host_port_pair, bool is_issued_by_known_root, - const HashValueVector& hashes) { +- const HashValueVector& hashes) { ++ const HashValueVector& hashes, ++ const NetworkAnonymizationKey& network_anonymization_key) { PKPState pkp_state; - bool found_state = GetPKPState(host_port_pair.host(), &pkp_state); + bool found_state = GetPKPState(network_anonymization_key, host_port_pair.host(), &pkp_state); // HasPublicKeyPins should have returned true in order for this method to have // been called. -@@ -653,7 +685,7 @@ bool TransportSecurityState::GetStaticPKPState(const std::string& host, +@@ -653,7 +687,7 @@ bool TransportSecurityState::GetStaticPKPState(const std::string& host, PreloadResult result; if (host_pins_.has_value()) { // Ensure that |host| is a valid hostname before processing. @@ -298,7 +387,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ return false; } // Normalize any trailing '.' used for DNS suffix searches. -@@ -736,21 +768,24 @@ bool TransportSecurityState::GetStaticPKPState(const std::string& host, +@@ -736,21 +770,24 @@ bool TransportSecurityState::GetStaticPKPState(const std::string& host, return false; } @@ -329,7 +418,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ if (canonicalized_host.empty()) return false; -@@ -787,11 +822,12 @@ bool TransportSecurityState::GetDynamicSTSState(const std::string& host, +@@ -787,11 +824,12 @@ bool TransportSecurityState::GetDynamicSTSState(const std::string& host, return false; } @@ -347,7 +436,7 @@ diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_state.h --- a/net/http/transport_security_state.h +++ b/net/http/transport_security_state.h -@@ -285,13 +285,13 @@ class NET_EXPORT TransportSecurityState { +@@ -285,13 +285,14 @@ class NET_EXPORT TransportSecurityState { // primary public interface; direct access to STS and PKP states is best // left to tests. The caller needs to handle the optional pinning override // when is_issued_by_known_root is false. @@ -358,13 +447,15 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s const NetLogWithSource& net_log = NetLogWithSource()); PKPStatus CheckPublicKeyPins(const HostPortPair& host_port_pair, bool is_issued_by_known_root, - const HashValueVector& hashes); +- const HashValueVector& hashes); - bool HasPublicKeyPins(const std::string& host); ++ const HashValueVector& hashes, ++ const NetworkAnonymizationKey& network_anonymization_key); + bool HasPublicKeyPins(const NetworkAnonymizationKey& nak, const std::string& host); // Returns CT_REQUIREMENTS_NOT_MET if a connection violates CT policy // requirements: that is, if a connection to |host|, using the validated -@@ -375,7 +375,7 @@ class NET_EXPORT TransportSecurityState { +@@ -375,7 +376,7 @@ class NET_EXPORT TransportSecurityState { // // If an entry is deleted, the new state will be persisted through // the Delegate (if any). @@ -373,7 +464,7 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s // Returns true and updates |*result| if |host| has dynamic or static // HSTS/HPKP (respectively) state. If multiple entries match |host|, dynamic -@@ -385,8 +385,8 @@ class NET_EXPORT TransportSecurityState { +@@ -385,8 +386,8 @@ class NET_EXPORT TransportSecurityState { // // Note that these methods are not const because they opportunistically remove // entries that have expired. @@ -384,7 +475,7 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s // Returns true and updates |*result| iff |host| has static HSTS/HPKP // (respectively) state. If multiple entries match |host|, the most specific -@@ -400,22 +400,24 @@ class NET_EXPORT TransportSecurityState { +@@ -400,22 +401,24 @@ class NET_EXPORT TransportSecurityState { // // Note that these methods are not const because they opportunistically remove // entries that have expired. @@ -414,7 +505,7 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s const base::Time& expiry, bool include_subdomains, const HashValueVector& hashes); -@@ -457,7 +459,7 @@ class NET_EXPORT TransportSecurityState { +@@ -457,7 +460,7 @@ class NET_EXPORT TransportSecurityState { typedef std::map STSStateMap; typedef std::map PKPStateMap; @@ -423,7 +514,17 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s // IsBuildTimely returns true if the current build is new enough ensure that // built in security information (i.e. HSTS preloading and pinning -@@ -477,11 +479,13 @@ class NET_EXPORT TransportSecurityState { +@@ -467,7 +470,8 @@ class NET_EXPORT TransportSecurityState { + // Helper method for actually checking pins. + PKPStatus CheckPublicKeyPinsImpl(const HostPortPair& host_port_pair, + bool is_issued_by_known_root, +- const HashValueVector& hashes); ++ const HashValueVector& hashes, ++ const NetworkAnonymizationKey& network_anonymization_key); + + // If a Delegate is present, notify it that the internal state has + // changed. +@@ -477,11 +481,13 @@ class NET_EXPORT TransportSecurityState { // any previous state for the |host|, including static entries. // // The new state for |host| is persisted using the Delegate (if any). @@ -442,7 +543,17 @@ diff --git a/net/http/transport_security_state.h b/net/http/transport_security_s diff --git a/net/quic/crypto/proof_verifier_chromium.cc b/net/quic/crypto/proof_verifier_chromium.cc --- a/net/quic/crypto/proof_verifier_chromium.cc +++ b/net/quic/crypto/proof_verifier_chromium.cc -@@ -428,7 +428,7 @@ int ProofVerifierChromium::Job::DoVerifyCertComplete(int result) { +@@ -401,7 +401,8 @@ int ProofVerifierChromium::Job::DoVerifyCertComplete(int result) { + transport_security_state_->CheckPublicKeyPins( + HostPortPair(hostname_, port_), + cert_verify_result.is_issued_by_known_root, +- cert_verify_result.public_key_hashes); ++ cert_verify_result.public_key_hashes, ++ proof_verifier_->network_anonymization_key_); + switch (pin_validity) { + case TransportSecurityState::PKPStatus::VIOLATED: + result = ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN; +@@ -428,7 +429,7 @@ int ProofVerifierChromium::Job::DoVerifyCertComplete(int result) { verify_details_->is_fatal_cert_error = IsCertStatusError(cert_status) && result != ERR_CERT_KNOWN_INTERCEPTION_BLOCKED && @@ -451,10 +562,32 @@ diff --git a/net/quic/crypto/proof_verifier_chromium.cc b/net/quic/crypto/proof_ if (result != OK) { std::string error_string = ErrorToString(result); +diff --git a/net/quic/quic_chromium_client_session.cc b/net/quic/quic_chromium_client_session.cc +--- a/net/quic/quic_chromium_client_session.cc ++++ b/net/quic/quic_chromium_client_session.cc +@@ -1407,7 +1407,7 @@ bool QuicChromiumClientSession::CanPool( + + return SpdySession::CanPool(transport_security_state_, ssl_info, + *ssl_config_service_, session_key_.host(), +- hostname); ++ hostname, session_key_.network_anonymization_key()); + } + + bool QuicChromiumClientSession::ShouldCreateIncomingStream( diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket_impl.cc --- a/net/socket/ssl_client_socket_impl.cc +++ b/net/socket/ssl_client_socket_impl.cc -@@ -1322,7 +1322,7 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() { +@@ -1300,7 +1300,8 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() { + TransportSecurityState::PKPStatus pin_validity = + context_->transport_security_state()->CheckPublicKeyPins( + host_and_port_, server_cert_verify_result_.is_issued_by_known_root, +- server_cert_verify_result_.public_key_hashes); ++ server_cert_verify_result_.public_key_hashes, ++ ssl_config_.network_anonymization_key); + switch (pin_validity) { + case TransportSecurityState::PKPStatus::VIOLATED: + server_cert_verify_result_.cert_status |= +@@ -1322,7 +1323,7 @@ ssl_verify_result_t SSLClientSocketImpl::HandleVerifyResult() { IsCertStatusError(server_cert_verify_result_.cert_status) && result != ERR_CERT_KNOWN_INTERCEPTION_BLOCKED && context_->transport_security_state()->ShouldSSLErrorsBeFatal( @@ -463,6 +596,61 @@ diff --git a/net/socket/ssl_client_socket_impl.cc b/net/socket/ssl_client_socket if (IsCertificateError(result)) { if (!GetECHNameOverride().empty()) { +diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc +--- a/net/spdy/spdy_session.cc ++++ b/net/spdy/spdy_session.cc +@@ -732,7 +732,8 @@ bool SpdySession::CanPool(TransportSecurityState* transport_security_state, + const SSLInfo& ssl_info, + const SSLConfigService& ssl_config_service, + const std::string& old_hostname, +- const std::string& new_hostname) { ++ const std::string& new_hostname, ++ const net::NetworkAnonymizationKey& network_anonymization_key) { + // Pooling is prohibited if the server cert is not valid for the new domain, + // and for connections on which client certs were sent. It is also prohibited + // when channel ID was sent if the hosts are from different eTLDs+1. +@@ -751,7 +752,7 @@ bool SpdySession::CanPool(TransportSecurityState* transport_security_state, + // Port is left at 0 as it is never used. + if (transport_security_state->CheckPublicKeyPins( + HostPortPair(new_hostname, 0), ssl_info.is_issued_by_known_root, +- ssl_info.public_key_hashes) == ++ ssl_info.public_key_hashes, network_anonymization_key) == + TransportSecurityState::PKPStatus::VIOLATED) { + return false; + } +@@ -972,7 +973,8 @@ bool SpdySession::VerifyDomainAuthentication(const std::string& domain) const { + return true; // This is not a secure session, so all domains are okay. + + return CanPool(transport_security_state_, ssl_info, *ssl_config_service_, +- host_port_pair().host(), domain); ++ host_port_pair().host(), domain, ++ spdy_session_key_.network_anonymization_key()); + } + + void SpdySession::EnqueueStreamWrite( +@@ -3007,7 +3009,8 @@ void SpdySession::OnAltSvc( + if (!GetSSLInfo(&ssl_info)) + return; + if (!CanPool(transport_security_state_, ssl_info, *ssl_config_service_, +- host_port_pair().host(), gurl.host())) { ++ host_port_pair().host(), gurl.host(), ++ spdy_session_key_.network_anonymization_key())) { + return; + } + scheme_host_port = url::SchemeHostPort(gurl); +diff --git a/net/spdy/spdy_session.h b/net/spdy/spdy_session.h +--- a/net/spdy/spdy_session.h ++++ b/net/spdy/spdy_session.h +@@ -319,7 +319,8 @@ class NET_EXPORT SpdySession + const SSLInfo& ssl_info, + const SSLConfigService& ssl_config_service, + const std::string& old_hostname, +- const std::string& new_hostname); ++ const std::string& new_hostname, ++ const net::NetworkAnonymizationKey& network_anonymization_key); + + // Create a new SpdySession. + // |spdy_session_key| is the host/port that this session connects to, privacy diff --git a/net/url_request/url_request_context_builder.cc b/net/url_request/url_request_context_builder.cc --- a/net/url_request/url_request_context_builder.cc +++ b/net/url_request/url_request_context_builder.cc @@ -521,7 +709,23 @@ diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_reque diff --git a/services/network/network_context.cc b/services/network/network_context.cc --- a/services/network/network_context.cc +++ b/services/network/network_context.cc -@@ -1868,17 +1868,19 @@ void NetworkContext::SetCorsOriginAccessListsForOrigin( +@@ -1814,6 +1814,7 @@ void NetworkContext::CreateHostResolver( + void NetworkContext::VerifyCertForSignedExchange( + const scoped_refptr& certificate, + const GURL& url, ++ const net::NetworkAnonymizationKey& network_anonymization_key, + const std::string& ocsp_result, + const std::string& sct_list, + VerifyCertForSignedExchangeCallback callback) { +@@ -1824,6 +1825,7 @@ void NetworkContext::VerifyCertForSignedExchange( + pending_cert_verify->result = std::make_unique(); + pending_cert_verify->certificate = certificate; + pending_cert_verify->url = url; ++ pending_cert_verify->network_anonymization_key = network_anonymization_key; + pending_cert_verify->ocsp_result = ocsp_result; + pending_cert_verify->sct_list = sct_list; + net::CertVerifier* cert_verifier = +@@ -1868,17 +1870,19 @@ void NetworkContext::SetCorsOriginAccessListsForOrigin( std::move(callback).Run(); } @@ -544,7 +748,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont IsHSTSActiveForHostCallback callback) { net::TransportSecurityState* security_state = url_request_context_->transport_security_state(); -@@ -1888,10 +1890,10 @@ void NetworkContext::IsHSTSActiveForHost(const std::string& host, +@@ -1888,10 +1892,10 @@ void NetworkContext::IsHSTSActiveForHost(const std::string& host, return; } @@ -557,7 +761,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont GetHSTSStateCallback callback) { base::Value::Dict result; -@@ -1929,10 +1931,10 @@ void NetworkContext::GetHSTSState(const std::string& domain, +@@ -1929,10 +1933,10 @@ void NetworkContext::GetHSTSState(const std::string& domain, net::TransportSecurityState::STSState dynamic_sts_state; net::TransportSecurityState::PKPState dynamic_pkp_state; bool found_sts_dynamic = transport_security_state->GetDynamicSTSState( @@ -570,7 +774,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont if (found_sts_dynamic) { result.Set("dynamic_upgrade_mode", static_cast(dynamic_sts_state.upgrade_mode)); -@@ -1970,6 +1972,7 @@ void NetworkContext::GetHSTSState(const std::string& domain, +@@ -1970,6 +1974,7 @@ void NetworkContext::GetHSTSState(const std::string& domain, } void NetworkContext::DeleteDynamicDataForHost( @@ -578,7 +782,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont const std::string& host, DeleteDynamicDataForHostCallback callback) { net::TransportSecurityState* transport_security_state = -@@ -1980,7 +1983,7 @@ void NetworkContext::DeleteDynamicDataForHost( +@@ -1980,7 +1985,7 @@ void NetworkContext::DeleteDynamicDataForHost( } std::move(callback).Run( @@ -587,7 +791,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont } void NetworkContext::EnableStaticKeyPinningForTesting( -@@ -2021,7 +2024,7 @@ void NetworkContext::PreconnectSockets( +@@ -2021,7 +2026,7 @@ void NetworkContext::PreconnectSockets( DCHECK(!require_network_anonymization_key_ || !network_anonymization_key.IsEmpty()); @@ -596,7 +800,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont // |PreconnectSockets| may receive arguments from the renderer, which is not // guaranteed to validate them. -@@ -2785,12 +2788,15 @@ void NetworkContext::OnConnectionError() { +@@ -2785,12 +2790,15 @@ void NetworkContext::OnConnectionError() { std::move(on_connection_close_callback_).Run(this); } @@ -613,10 +817,24 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont original_url.host())) { return original_url; } +@@ -2838,7 +2846,8 @@ void NetworkContext::OnVerifyCertForSignedExchangeComplete( + url_request_context_->transport_security_state()->CheckPublicKeyPins( + net::HostPortPair::FromURL(pending_cert_verify->url), + pending_cert_verify->result->is_issued_by_known_root, +- pending_cert_verify->result->public_key_hashes); ++ pending_cert_verify->result->public_key_hashes, ++ pending_cert_verify->network_anonymization_key); + switch (pin_validity) { + case net::TransportSecurityState::PKPStatus::VIOLATED: + pending_cert_verify->result->cert_status |= diff --git a/services/network/network_context.h b/services/network/network_context.h --- a/services/network/network_context.h +++ b/services/network/network_context.h -@@ -410,15 +410,17 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -407,18 +407,21 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext + void VerifyCertForSignedExchange( + const scoped_refptr& certificate, + const GURL& url, ++ const net::NetworkAnonymizationKey& network_anonymization_key, const std::string& ocsp_result, const std::string& sct_list, VerifyCertForSignedExchangeCallback callback) override; @@ -637,7 +855,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte const std::string& host, DeleteDynamicDataForHostCallback callback) override; void SetCorsOriginAccessListsForOrigin( -@@ -712,7 +714,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -712,7 +715,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext mojo::PendingRemote cookie_observer, net::FirstPartySetMetadata first_party_set_metadata); @@ -647,10 +865,26 @@ diff --git a/services/network/network_context.h b/services/network/network_conte #if BUILDFLAG(IS_P2P_ENABLED) void DestroySocketManager(P2PSocketManager* socket_manager); +@@ -906,6 +910,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext + VerifyCertForSignedExchangeCallback callback; + scoped_refptr certificate; + GURL url; ++ net::NetworkAnonymizationKey network_anonymization_key; + std::string ocsp_result; + std::string sct_list; + }; diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom --- a/services/network/public/mojom/network_context.mojom +++ b/services/network/public/mojom/network_context.mojom -@@ -1532,16 +1532,16 @@ interface NetworkContext { +@@ -1525,6 +1525,7 @@ interface NetworkContext { + // implementation is currently specific for use by Signed Exchange. + VerifyCertForSignedExchange(X509Certificate certificate, + url.mojom.Url url, ++ NetworkAnonymizationKey network_anonymization_key, + string ocsp_response, + string sct_list) => (int32 error_code, + CertVerifyResult cv_result, +@@ -1532,16 +1533,16 @@ interface NetworkContext { // Adds explicitly-specified data as if it was processed from an // HSTS header. Used by tests and implementation of chrome://net-internals. @@ -670,7 +904,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw => (mojo_base.mojom.DictionaryValue state); // Sets allowed and blocked origins respectively for the URLLoaderFactory -@@ -1560,7 +1560,7 @@ interface NetworkContext { +@@ -1560,7 +1561,7 @@ interface NetworkContext { // Deletes any dynamic data stored for |host| from the transport // security state. Returns true iff an entry was deleted. // See net::TransportSecurityState::DeleteDynamicDataForHost for more detail. diff --git a/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch b/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch index c7d89f97..c81cb136 100644 --- a/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch +++ b/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch @@ -10,26 +10,26 @@ samesite=none first-party cookies are sent in third-party contexts. License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- .../browser/chrome_content_browser_client.cc | 2 +- - .../net/profile_network_context_service.cc | 12 +++--- + .../net/profile_network_context_service.cc | 12 ++--- .../privacy_sandbox_settings_delegate.cc | 1 + .../experiment/experiment_manager_impl.cc | 1 + .../core/browser/cookie_settings.cc | 2 + - .../core/common/cookie_settings_base.cc | 38 ------------------- + .../core/common/cookie_settings_base.cc | 48 ------------------- ...ioning-all-cookies-by-top-frame-domain.inc | 3 ++ ...ioning-all-cookies-by-top-frame-domain.inc | 2 + ...ioning-all-cookies-by-top-frame-domain.inc | 1 + - ...ioning-all-cookies-by-top-frame-domain.inc | 5 +++ - net/cookies/canonical_cookie.cc | 12 +----- + ...ioning-all-cookies-by-top-frame-domain.inc | 5 ++ + net/cookies/canonical_cookie.cc | 12 +---- net/cookies/cookie_deletion_info.cc | 3 +- - net/cookies/parsed_cookie.h | 7 +++- - .../sqlite/sqlite_persistent_cookie_store.cc | 10 +++++ - net/url_request/url_request_http_job.cc | 10 ++--- + net/cookies/parsed_cookie.h | 7 ++- + .../sqlite/sqlite_persistent_cookie_store.cc | 10 ++++ + net/url_request/url_request_http_job.cc | 10 ++-- services/network/restricted_cookie_manager.cc | 6 +++ .../modules/cookie_store/cookie_init.idl | 2 +- - .../modules/cookie_store/cookie_store.cc | 12 ++++++ + .../modules/cookie_store/cookie_store.cc | 12 +++++ .../cookie_store_delete_options.idl | 2 +- ui/webui/webui_allowlist.cc | 1 + - 20 files changed, 65 insertions(+), 67 deletions(-) + 20 files changed, 65 insertions(+), 77 deletions(-) create mode 100644 cromite_flags/components/content_settings/core/common/features_cc/Partitioning-all-cookies-by-top-frame-domain.inc create mode 100644 cromite_flags/components/permissions/features_cc/Partitioning-all-cookies-by-top-frame-domain.inc create mode 100644 cromite_flags/content/public/common/content_features_cc/Partitioning-all-cookies-by-top-frame-domain.inc @@ -117,7 +117,24 @@ diff --git a/components/content_settings/core/browser/cookie_settings.cc b/compo diff --git a/components/content_settings/core/common/cookie_settings_base.cc b/components/content_settings/core/common/cookie_settings_base.cc --- a/components/content_settings/core/common/cookie_settings_base.cc +++ b/components/content_settings/core/common/cookie_settings_base.cc -@@ -364,34 +364,6 @@ CookieSettingsBase::DecideAccess(const GURL& url, +@@ -36,16 +36,6 @@ using net::cookie_util::StorageAccessResult; + using ThirdPartyCookieAllowMechanism = + CookieSettingsBase::ThirdPartyCookieAllowMechanism; + +-bool IsAllowedByCORS(const net::CookieSettingOverrides& overrides, +- const GURL& request_url, +- const GURL& first_party_url) { +- return overrides.Has( +- net::CookieSettingOverride::kCrossSiteCredentialedWithCORS) && +- base::FeatureList::IsEnabled( +- net::features::kThirdPartyCookieTopLevelSiteCorsException) && +- net::SchemefulSite(request_url) == net::SchemefulSite(first_party_url); +-} +- + constexpr StorageAccessResult GetStorageAccessResult( + ThirdPartyCookieAllowMechanism mechanism) { + switch (mechanism) { +@@ -364,34 +354,6 @@ CookieSettingsBase::DecideAccess(const GURL& url, if (!is_third_party_request) { return AllowAllCookies{ThirdPartyCookieAllowMechanism::kNone}; } @@ -152,7 +169,7 @@ diff --git a/components/content_settings/core/common/cookie_settings_base.cc b/c const bool has_storage_access_opt_in = ShouldConsiderStorageAccessGrants(overrides); -@@ -414,16 +386,6 @@ CookieSettingsBase::DecideAccess(const GURL& url, +@@ -414,16 +376,6 @@ CookieSettingsBase::DecideAccess(const GURL& url, } } 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 e7dee864..e7003fee 100644 --- a/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch +++ b/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch @@ -120,7 +120,7 @@ new file mode 100644 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 -@@ -90,6 +90,10 @@ found in the LICENSE file. +@@ -91,6 +91,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/build/patches/Remove-binary-blob-integrations.patch b/build/patches/Remove-binary-blob-integrations.patch index ec80773d..e64abc21 100644 --- a/build/patches/Remove-binary-blob-integrations.patch +++ b/build/patches/Remove-binary-blob-integrations.patch @@ -89,9 +89,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html components/module_installer/android/BUILD.gn | 4 - components/signin/public/android/BUILD.gn | 3 - .../signin/AccountRenameChecker.java | 16 - - components/webauthn/android/BUILD.gn | 11 - + components/webauthn/android/BUILD.gn | 13 +- .../webauthn/AuthenticatorImpl.java | 110 +-- - .../webauthn/Fido2ApiCallHelper.java | 72 +- + .../webauthn/ConditionalUiState.java | 15 + + .../webauthn/Fido2ApiCallHelper.java | 73 +- + .../webauthn/WebauthnModeProvider.java | 12 - + .../webauthn/cred_man/CredManHelper.java | 16 +- + .../cred_man/CredManMetricsHelper.java | 2 +- .../push_messaging/push_messaging_manager.cc | 2 +- content/public/android/BUILD.gn | 4 - content/test/BUILD.gn | 4 - @@ -104,7 +108,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../preconditions/javatests/BUILD.gn | 1 - .../gms/ChromiumPlayServicesAvailability.java | 10 +- third_party/cardboard/BUILD.gn | 4 - - 80 files changed, 97 insertions(+), 2178 deletions(-) + 84 files changed, 119 insertions(+), 2204 deletions(-) + create mode 100644 components/webauthn/android/java/src/org/chromium/components/webauthn/ConditionalUiState.java 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 @@ -3138,7 +3143,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", "java/src/org/chromium/components/webauthn/cred_man/CredManSupportProvider.java", -@@ -30,11 +28,7 @@ android_library("java") { +@@ -30,11 +28,8 @@ android_library("java") { "java/src/org/chromium/components/webauthn/AuthenticatorImpl.java", "java/src/org/chromium/components/webauthn/Barrier.java", "java/src/org/chromium/components/webauthn/CreateConfirmationUiDelegate.java", @@ -3147,10 +3152,11 @@ 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/ConditionalUiState.java", "java/src/org/chromium/components/webauthn/FidoIntentSender.java", "java/src/org/chromium/components/webauthn/GetAssertionResponseCallback.java", "java/src/org/chromium/components/webauthn/GetMatchingCredentialIdsResponseCallback.java", -@@ -59,9 +53,6 @@ android_library("java") { +@@ -59,9 +54,6 @@ android_library("java") { jar_excluded_patterns = [ "*/cred_man/CredManUiModeRecommender.class" ] deps = [ @@ -3160,7 +3166,7 @@ diff --git a/components/webauthn/android/BUILD.gn b/components/webauthn/android/ "//base:base_java", "//base/version_info/android:version_constants_java", "//build/android:build_java", -@@ -118,8 +109,6 @@ android_library("test_support_java") { +@@ -118,8 +110,6 @@ android_library("test_support_java") { source_set("android") { sources = [ "cred_man_support.h", @@ -3169,6 +3175,14 @@ diff --git a/components/webauthn/android/BUILD.gn b/components/webauthn/android/ "internal_authenticator_android.cc", "internal_authenticator_android.h", "webauthn_browser_bridge.cc", +@@ -186,7 +176,6 @@ robolectric_library("junit") { + ":delegate_public_java", + ":java", + ":test_support_java", +- "$google_play_services_package:google_play_services_tasks_java", + "//base:base_java", + "//base:base_java_test_support", + "//base:base_junit_test_support", 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 @@ -3386,10 +3400,30 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut cleanupRequest(); } +diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/ConditionalUiState.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/ConditionalUiState.java +new file mode 100644 +--- /dev/null ++++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/ConditionalUiState.java +@@ -0,0 +1,15 @@ ++// Copyright 2018 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++package org.chromium.components.webauthn; ++ ++public enum ConditionalUiState { ++ NONE, ++ WAITING_FOR_RP_ID_VALIDATION, ++ WAITING_FOR_CREDENTIAL_LIST, ++ WAITING_FOR_SELECTION, ++ REQUEST_SENT_TO_PLATFORM, ++ CANCEL_PENDING, ++ CANCEL_PENDING_RP_ID_VALIDATION_COMPLETE, ++} diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2ApiCallHelper.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2ApiCallHelper.java --- a/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2ApiCallHelper.java +++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/Fido2ApiCallHelper.java -@@ -8,10 +8,6 @@ import android.app.PendingIntent; +@@ -8,16 +8,11 @@ import android.app.PendingIntent; import android.net.Uri; import android.os.Parcel; @@ -3400,7 +3434,13 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut import org.chromium.base.ContextUtils; import org.chromium.blink.mojom.PublicKeyCredentialCreationOptions; import org.chromium.blink.mojom.PublicKeyCredentialRequestOptions; -@@ -44,72 +40,6 @@ public class Fido2ApiCallHelper { + import org.chromium.components.externalauth.ExternalAuthUtils; + import org.chromium.components.externalauth.UserRecoverableErrorHandler; +-import org.chromium.components.webauthn.Fido2ApiCall.Fido2ApiCallParams; + + import java.security.NoSuchAlgorithmException; + import java.util.List; +@@ -44,72 +39,6 @@ public class Fido2ApiCallHelper { } public boolean arePlayServicesAvailable() { @@ -3474,6 +3514,101 @@ diff --git a/components/webauthn/android/java/src/org/chromium/components/webaut + return false; } } +diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnModeProvider.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnModeProvider.java +--- a/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnModeProvider.java ++++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/WebauthnModeProvider.java +@@ -6,7 +6,6 @@ package org.chromium.components.webauthn; + + import androidx.annotation.IntDef; + +-import org.chromium.components.webauthn.Fido2ApiCall.Fido2ApiCallParams; + import org.chromium.components.webauthn.cred_man.AppCredManRequestDecorator; + import org.chromium.components.webauthn.cred_man.BrowserCredManRequestDecorator; + import org.chromium.components.webauthn.cred_man.CredManRequestDecorator; +@@ -37,17 +36,6 @@ public class WebauthnModeProvider { + return null; + } + +- public Fido2ApiCallParams getFido2ApiCallParams() { +- if (mMode == WebauthnMode.APP) { +- return Fido2ApiCall.APP_API; +- } else if (mMode == WebauthnMode.BROWSER || mMode == WebauthnMode.CHROME) { +- return Fido2ApiCall.BROWSER_API; +- } else { +- assert false : "WebauthnMode not set! Please set using WebAuthnModeProvider.setMode()"; +- } +- return null; +- } +- + public @WebauthnMode int getWebauthnMode() { + return mMode; + } +diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManHelper.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManHelper.java +--- a/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManHelper.java ++++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManHelper.java +@@ -29,8 +29,7 @@ import org.chromium.blink.mojom.MakeCredentialAuthenticatorResponse; + import org.chromium.blink.mojom.PublicKeyCredentialCreationOptions; + import org.chromium.blink.mojom.PublicKeyCredentialRequestOptions; + import org.chromium.components.webauthn.Barrier; +-import org.chromium.components.webauthn.Fido2CredentialRequest.ConditionalUiState; +-import org.chromium.components.webauthn.Fido2CredentialRequestJni; ++import org.chromium.components.webauthn.ConditionalUiState; + import org.chromium.components.webauthn.GetAssertionResponseCallback; + import org.chromium.components.webauthn.MakeCredentialResponseCallback; + import org.chromium.components.webauthn.WebauthnBrowserBridge; +@@ -96,8 +95,7 @@ public class CredManHelper { + Callback errorCallback) { + mContext = context; + mFrameHost = frameHost; +- final String requestAsJson = +- Fido2CredentialRequestJni.get().createOptionsToJson(options.serialize()); ++ final String requestAsJson = ""; + final byte[] clientDataHash = + maybeClientDataHash != null + ? maybeClientDataHash +@@ -151,9 +149,7 @@ public class CredManHelper { + String json = + data.getString( + CRED_MAN_PREFIX + "BUNDLE_KEY_REGISTRATION_RESPONSE_JSON"); +- byte[] responseSerialized = +- Fido2CredentialRequestJni.get() +- .makeCredentialResponseFromJson(json); ++ byte[] responseSerialized = null; + if (responseSerialized == null) { + Log.e( + TAG, +@@ -421,8 +417,7 @@ public class CredManHelper { + data.getString( + CRED_MAN_PREFIX + + "BUNDLE_KEY_AUTHENTICATION_RESPONSE_JSON"); +- byte[] responseSerialized = +- Fido2CredentialRequestJni.get().getCredentialResponseFromJson(json); ++ byte[] responseSerialized = null; + if (responseSerialized == null) { + Log.e( + TAG, +@@ -587,8 +582,7 @@ public class CredManHelper { + boolean requestPasswords, + boolean preferImmediatelyAvailable, + boolean ignoreGpm) { +- final String requestAsJson = +- Fido2CredentialRequestJni.get().getOptionsToJson(options.serialize()); ++ final String requestAsJson = ""; + final byte[] clientDataHash = + maybeClientDataHash != null + ? maybeClientDataHash +diff --git a/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManMetricsHelper.java b/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManMetricsHelper.java +--- a/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManMetricsHelper.java ++++ b/components/webauthn/android/java/src/org/chromium/components/webauthn/cred_man/CredManMetricsHelper.java +@@ -7,7 +7,7 @@ package org.chromium.components.webauthn.cred_man; + import androidx.annotation.IntDef; + + import org.chromium.base.metrics.RecordHistogram; +-import org.chromium.components.webauthn.Fido2CredentialRequest.ConditionalUiState; ++import org.chromium.components.webauthn.ConditionalUiState; + + /** + * This class is responsible for emitting histograms regarding CredMan usage in diff --git a/content/browser/push_messaging/push_messaging_manager.cc b/content/browser/push_messaging/push_messaging_manager.cc --- a/content/browser/push_messaging/push_messaging_manager.cc +++ b/content/browser/push_messaging/push_messaging_manager.cc diff --git a/build/patches/Restore-Simplified-NTP-launch.patch b/build/patches/Restore-Simplified-NTP-launch.patch index 3ff2053a..e86352f7 100644 --- a/build/patches/Restore-Simplified-NTP-launch.patch +++ b/build/patches/Restore-Simplified-NTP-launch.patch @@ -14,14 +14,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../feedback/SimplifiedNtpFeedbackSource.java | 38 +++++++++++ .../identity_disc/IdentityDiscController.java | 5 +- .../NativePageNavigationDelegateImpl.java | 4 +- - .../chrome/browser/ntp/NewTabPageLayout.java | 30 ++++++++- + .../chrome/browser/ntp/NewTabPageLayout.java | 31 ++++++++- .../SuggestionsNavigationDelegate.java | 17 +++++ .../flags/android/chrome_feature_list.cc | 1 + .../browser/flags/ChromeFeatureList.java | 1 + .../Restore-Simplified-NTP-launch.inc | 12 ++++ .../Restore-Simplified-NTP-launch.inc | 3 + .../Restore-Simplified-NTP-launch.inc | 1 + - 15 files changed, 182 insertions(+), 5 deletions(-) + 15 files changed, 183 insertions(+), 5 deletions(-) create mode 100644 chrome/android/java/res/layout/ntp_shortcuts.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Restore-Simplified-NTP-launch.inc @@ -224,7 +224,15 @@ 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/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java -@@ -37,6 +37,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.InvalidationAwareT +@@ -18,6 +18,7 @@ import android.util.AttributeSet; + import android.view.DragEvent; + import android.view.Gravity; + import android.view.LayoutInflater; ++import android.view.ViewStub; + import android.view.View; + import android.view.ViewGroup; + import android.widget.LinearLayout; +@@ -37,6 +38,7 @@ import org.chromium.chrome.browser.compositor.layouts.content.InvalidationAwareT import org.chromium.chrome.browser.feed.FeedSurfaceScrollDelegate; import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.lens.LensEntryPoint; @@ -232,7 +240,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL import org.chromium.chrome.browser.lens.LensMetrics; import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; import org.chromium.chrome.browser.logo.LogoBridge.Logo; -@@ -107,6 +108,8 @@ public class NewTabPageLayout extends LinearLayout { +@@ -107,6 +109,8 @@ public class NewTabPageLayout extends LinearLayout { private @Nullable DisplayStyleObserver mDisplayStyleObserver; private CallbackController mCallbackController = new CallbackController(); @@ -241,7 +249,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL /** * Whether the tiles shown in the layout have finished loading. * With {@link #mHasShownView}, it's one of the 2 flags used to track initialisation progress. -@@ -314,6 +317,7 @@ public class NewTabPageLayout extends LinearLayout { +@@ -314,6 +318,7 @@ public class NewTabPageLayout extends LinearLayout { isScrollableMvtEnabled(), searchProviderIsGoogle); initializeSearchBoxBackground(); @@ -249,7 +257,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL initializeSearchBoxTextView(); initializeVoiceSearchButton(); initializeLensButton(); -@@ -802,12 +806,15 @@ public class NewTabPageLayout extends LinearLayout { +@@ -802,12 +807,15 @@ public class NewTabPageLayout extends LinearLayout { marginLayoutParams.leftMargin = lateralPaddingsForNtp; marginLayoutParams.rightMargin = lateralPaddingsForNtp; } @@ -266,7 +274,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL marginLayoutParams.bottomMargin = getResources() .getDimensionPixelSize(R.dimen.tile_carousel_layout_bottom_margin); -@@ -815,7 +822,10 @@ public class NewTabPageLayout extends LinearLayout { +@@ -815,7 +823,10 @@ public class NewTabPageLayout extends LinearLayout { // Set a bit more top padding on the tile grid if there is no logo. ViewGroup.LayoutParams layoutParams = mMvTilesContainerLayout.getLayoutParams(); layoutParams.width = ViewGroup.LayoutParams.WRAP_CONTENT; @@ -278,7 +286,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL marginLayoutParams.bottomMargin = getGridMvtBottomMargin(); } -@@ -1117,6 +1127,22 @@ public class NewTabPageLayout extends LinearLayout { +@@ -1117,6 +1128,22 @@ public class NewTabPageLayout extends LinearLayout { return iphCommandBuilder; } diff --git a/build/patches/Restore-adaptive-button-in-top-toolbar-customization.patch b/build/patches/Restore-adaptive-button-in-top-toolbar-customization.patch index 63868cbf..1d86bc0f 100644 --- a/build/patches/Restore-adaptive-button-in-top-toolbar-customization.patch +++ b/build/patches/Restore-adaptive-button-in-top-toolbar-customization.patch @@ -11,11 +11,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/share/ShareButtonController.java | 37 +++++++++++ chrome/browser/about_flags.cc | 6 -- chrome/browser/flag-metadata.json | 3 +- + .../flags/android/chrome_feature_list.cc | 5 ++ + .../browser/flags/ChromeFeatureList.java | 1 + .../AdaptiveToolbarButtonController.java | 6 +- .../adaptive/AdaptiveToolbarFeatures.java | 65 ++++++++++++++++++- .../AdaptiveToolbarStatePredictor.java | 9 ++- .../AdaptiveToolbarStatePredictorTest.java | 15 +++++ - 8 files changed, 132 insertions(+), 12 deletions(-) + 10 files changed, 138 insertions(+), 12 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 @@ -121,6 +123,39 @@ diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.js }, { "name": "adaptive-button-in-top-toolbar-translate", +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 +@@ -150,6 +150,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { + &history_clusters::internal::kJourneys, + &history_clusters::internal::kOmniboxAction, + &history_clusters::internal::kOmniboxHistoryClusterProvider, ++ &kAdaptiveButtonInTopToolbar, + &kAdaptiveButtonInTopToolbarTranslate, + &kAdaptiveButtonInTopToolbarAddToBookmarks, + &kAdaptiveButtonInTopToolbarCustomizationV2, +@@ -391,6 +392,10 @@ static jlong JNI_ChromeFeatureMap_GetNativeMap(JNIEnv* env) { + + // Alphabetical: + ++CROMITE_FEATURE(kAdaptiveButtonInTopToolbar, ++ "AdaptiveButtonInTopToolbar", ++ base::FEATURE_DISABLED_BY_DEFAULT); ++ + BASE_FEATURE(kAdaptiveButtonInTopToolbarTranslate, + "AdaptiveButtonInTopToolbarTranslate", + base::FEATURE_DISABLED_BY_DEFAULT); +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 +@@ -142,6 +142,7 @@ public abstract class ChromeFeatureList { + } + + public static final String ALLOW_USER_CERTIFICATES = "AllowUserCertificates"; ++ public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR = "AdaptiveButtonInTopToolbar"; + public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_TRANSLATE = + "AdaptiveButtonInTopToolbarTranslate"; + public static final String ADAPTIVE_BUTTON_IN_TOP_TOOLBAR_ADD_TO_BOOKMARKS = 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 diff --git a/build/patches/Restore-offline-indicator-v2-flag.patch b/build/patches/Restore-offline-indicator-v2-flag.patch index e06c7182..52200f44 100644 --- a/build/patches/Restore-offline-indicator-v2-flag.patch +++ b/build/patches/Restore-offline-indicator-v2-flag.patch @@ -6,14 +6,14 @@ Reverts acc8b6f4542703211e5f3c5181914fd3374c9e84 License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../indicator/OfflineDetector.java | 41 ++++++++++++++++++- + .../indicator/OfflineDetector.java | 40 ++++++++++++++++++- .../tabbed_mode/TabbedRootUiCoordinator.java | 8 +++- .../flags/android/chrome_feature_list.cc | 1 + .../browser/flags/ChromeFeatureList.java | 1 + .../Restore-offline-indicator-v2-flag.inc | 12 ++++++ .../Restore-offline-indicator-v2-flag.inc | 3 ++ .../Restore-offline-indicator-v2-flag.inc | 1 + - 7 files changed, 64 insertions(+), 3 deletions(-) + 7 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Restore-offline-indicator-v2-flag.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-offline-indicator-v2-flag.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-offline-indicator-v2-flag.inc @@ -29,7 +29,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in import androidx.annotation.VisibleForTesting; -@@ -17,8 +18,13 @@ import org.chromium.base.Callback; +@@ -17,8 +18,12 @@ import org.chromium.base.Callback; import org.chromium.base.Log; import org.chromium.base.supplier.Supplier; import org.chromium.base.version_info.VersionInfo; @@ -39,11 +39,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in +import org.chromium.chrome.browser.net.connectivitydetector.ConnectivityDetector; +import org.chromium.chrome.browser.net.connectivitydetector.ConnectivityDetector.ConnectionState; +import org.chromium.components.variations.VariationsAssociatedData; -+import org.chromium.components.version_info.VersionInfo; /** * Class that detects if the network is offline. Waits for the network to stablize before notifying -@@ -127,8 +133,9 @@ class OfflineDetector +@@ -127,8 +132,9 @@ class OfflineDetector mIsForegroundCallback = isForegroundCallback; mContext = context; mHandler = new Handler(); @@ -55,7 +54,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in mUpdateOfflineStatusIndicatorDelayedRunnable = () -> { -@@ -384,4 +391,34 @@ class OfflineDetector +@@ -384,4 +390,34 @@ class OfflineDetector timeNeededAfterConnectionChangeFromOnlineToOffline), timeNeededAfterConnectionChangeFromAirplaneToOffline)); } diff --git a/build/patches/TEMP-Add-a-log-to-track-strange-behavior.patch b/build/patches/TEMP-Add-a-log-to-track-strange-behavior.patch index 70146213..7b670c25 100644 --- a/build/patches/TEMP-Add-a-log-to-track-strange-behavior.patch +++ b/build/patches/TEMP-Add-a-log-to-track-strange-behavior.patch @@ -10,7 +10,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/net/spdy/spdy_session.cc b/net/spdy/spdy_session.cc --- a/net/spdy/spdy_session.cc +++ b/net/spdy/spdy_session.cc -@@ -2976,6 +2976,7 @@ void SpdySession::OnHeaders(spdy::SpdyStreamId stream_id, +@@ -2978,6 +2978,7 @@ void SpdySession::OnHeaders(spdy::SpdyStreamId stream_id, if (it == active_streams_.end()) { // NOTE: it may just be that the stream was cancelled. LOG(WARNING) << "Received HEADERS for invalid stream " << stream_id; diff --git a/build/patches/Use-list-mode-for-tab-switcher.patch b/build/patches/Use-list-mode-for-tab-switcher.patch index ae9543ff..15aca8a6 100644 --- a/build/patches/Use-list-mode-for-tab-switcher.patch +++ b/build/patches/Use-list-mode-for-tab-switcher.patch @@ -8,11 +8,11 @@ need: Add-cromite-flags-support.patch License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- .../tab_management/TabUiFeatureUtilities.java | 4 +-- - .../java/res/xml/privacy_preferences.xml | 7 +++++ - .../flags/cromite/sTabSwitcherListMode.java | 31 +++++++++++++++++++ - .../Use-list-mode-for-tab-switcher.grdp | 9 ++++++ + .../java/res/xml/privacy_preferences.xml | 7 ++++ + .../flags/cromite/sTabSwitcherListMode.java | 33 +++++++++++++++++++ + .../Use-list-mode-for-tab-switcher.grdp | 9 +++++ .../tab-switcher-list-mode.inc | 3 ++ - 5 files changed, 52 insertions(+), 2 deletions(-) + 5 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sTabSwitcherListMode.java create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Use-list-mode-for-tab-switcher.grdp create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/tab-switcher-list-mode.inc @@ -41,7 +41,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser 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 -@@ -73,6 +73,13 @@ found in the LICENSE file. +@@ -74,6 +74,13 @@ found in the LICENSE file. android:summary="@string/settings_incognito_tab_lock_summary_android_setting_off" android:persistent="false" /> @@ -59,7 +59,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f new file mode 100644 --- /dev/null +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sTabSwitcherListMode.java -@@ -0,0 +1,31 @@ +@@ -0,0 +1,33 @@ +/* + This file is part of Cromite. + @@ -79,11 +79,13 @@ new file mode 100644 + +package org.chromium.chrome.browser.flags.cromite; + -+import org.chromium.chrome.browser.flags.CachedFlag; ++import org.chromium.base.cached_flags.CachedFlag; ++import org.chromium.chrome.browser.flags.ChromeFeatureMap; + +public class sTabSwitcherListMode { + private static final CachedFlag sInstance = -+ new CachedFlag("TabSwitcherListMode", false); ++ new CachedFlag(ChromeFeatureMap.getInstance(), ++ "TabSwitcherListMode", false); + + private sTabSwitcherListMode() {} + diff --git a/build/patches/Welcome-screen.patch b/build/patches/Welcome-screen.patch index 567fff0a..8d4a9173 100644 --- a/build/patches/Welcome-screen.patch +++ b/build/patches/Welcome-screen.patch @@ -17,11 +17,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../firstrun/FirstRunActivityBase.java | 6 +- .../firstrun/FirstRunFlowSequencer.java | 63 +--- .../browser/firstrun/FirstRunUtils.java | 15 +- - .../firstrun/ToSAndUMAFirstRunFragment.java | 336 ++++++++++++++++++ + .../firstrun/ToSAndUMAFirstRunFragment.java | 335 +++++++++++++++++ .../firstrun/TosAndUmaFragmentView.java | 336 ++++++++++++++++++ .../browser/locale/LocaleManagerDelegate.java | 5 +- .../strings/android_chrome_strings.grd | 24 +- - 15 files changed, 914 insertions(+), 101 deletions(-) + 15 files changed, 913 insertions(+), 101 deletions(-) create mode 100644 chrome/android/java/res/layout/fre_tosanduma.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/firstrun/TosAndUmaFragmentView.java @@ -577,7 +577,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAnd new file mode 100644 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java -@@ -0,0 +1,336 @@ +@@ -0,0 +1,335 @@ +// Copyright 2015 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. @@ -608,7 +608,6 @@ new file mode 100644 +import org.chromium.base.metrics.RecordHistogram; +import org.chromium.chrome.R; +import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl; -+import org.chromium.components.version_info.VersionInfo; +import org.chromium.ui.modaldialog.ModalDialogManagerHolder; +import org.chromium.ui.text.NoUnderlineClickableSpan; +import org.chromium.ui.text.SpanApplier; diff --git a/build/patches/add-browser-policy.patch b/build/patches/add-browser-policy.patch index 770dcb32..ec17f0fe 100644 --- a/build/patches/add-browser-policy.patch +++ b/build/patches/add-browser-policy.patch @@ -16,7 +16,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html chrome/browser/signin/chrome_signin_client.cc | 7 +- .../ui/webui/policy/policy_ui_handler.cc | 104 ++++++++++++- .../ui/webui/policy/policy_ui_handler.h | 2 + - .../commerce/core/commerce_feature_list.cc | 13 ++ + .../commerce/core/commerce_feature_list.cc | 65 ++------ .../core/browser/browser_policy_connector.cc | 3 + .../common/command_line_policy_provider.cc | 3 + .../core/common/policy_loader_command_line.cc | 140 ++++++++++++++++-- @@ -32,7 +32,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html components/signin/features.gni | 2 +- .../gaia_cookie_manager_service.cc | 4 + google_apis/gaia/gaia_auth_fetcher.cc | 1 + - 28 files changed, 318 insertions(+), 97 deletions(-) + 28 files changed, 318 insertions(+), 149 deletions(-) diff --git a/base/win/win_util.cc b/base/win/win_util.cc --- a/base/win/win_util.cc @@ -475,26 +475,102 @@ diff --git a/chrome/browser/ui/webui/policy/policy_ui_handler.h b/chrome/browser diff --git a/components/commerce/core/commerce_feature_list.cc b/components/commerce/core/commerce_feature_list.cc --- a/components/commerce/core/commerce_feature_list.cc +++ b/components/commerce/core/commerce_feature_list.cc -@@ -304,6 +304,19 @@ const char kParcelTrackingTestDataParamDelivered[] = "Delivered"; +@@ -55,56 +55,6 @@ const CountryLocaleMap& GetAllowedCountryToLocaleMap() { + return *allowed_map; + } + +-constexpr base::FeatureParam kRulePartnerMerchantPattern{ +- &ntp_features::kNtpChromeCartModule, "partner-merchant-pattern", +- // This regex does not match anything. +- "\\b\\B"}; +- +-constexpr base::FeatureParam kCouponPartnerMerchantPattern{ +- &commerce::kRetailCoupons, "coupon-partner-merchant-pattern", +- // This regex does not match anything. +- "\\b\\B"}; +- +-const re2::RE2& GetRulePartnerMerchantPattern() { +-#if !BUILDFLAG(IS_ANDROID) +- auto* pattern_from_component = +- commerce_heuristics::CommerceHeuristicsData::GetInstance() +- .GetRuleDiscountPartnerMerchantPattern(); +- if (pattern_from_component && kRulePartnerMerchantPattern.Get() == +- kRulePartnerMerchantPattern.default_value) { +- CommerceHeuristicsDataMetricsHelper::RecordPartnerMerchantPatternSource( +- CommerceHeuristicsDataMetricsHelper::HeuristicsSource::FROM_COMPONENT); +- return *pattern_from_component; +- } +-#endif // !BUILDFLAG(IS_ANDROID) +- re2::RE2::Options options; +- options.set_case_sensitive(false); +- static base::NoDestructor instance( +- kRulePartnerMerchantPattern.Get(), options); +- CommerceHeuristicsDataMetricsHelper::RecordPartnerMerchantPatternSource( +- CommerceHeuristicsDataMetricsHelper::HeuristicsSource:: +- FROM_FEATURE_PARAMETER); +- return *instance; +-} +- +-const re2::RE2& GetCouponPartnerMerchantPattern() { +-#if !BUILDFLAG(IS_ANDROID) +- auto* pattern_from_component = +- commerce_heuristics::CommerceHeuristicsData::GetInstance() +- .GetCouponDiscountPartnerMerchantPattern(); +- if (pattern_from_component && +- kCouponPartnerMerchantPattern.Get() == +- kCouponPartnerMerchantPattern.default_value) { +- return *pattern_from_component; +- } +-#endif // !BUILDFLAG(IS_ANDROID) +- re2::RE2::Options options; +- options.set_case_sensitive(false); +- static base::NoDestructor instance( +- kCouponPartnerMerchantPattern.Get(), options); +- return *instance; +-} +- + } // namespace + + namespace switches { +@@ -304,6 +254,16 @@ const char kParcelTrackingTestDataParamDelivered[] = "Delivered"; const char kParcelTrackingTestDataParamInProgress[] = "InProgress"; const char kParcelTrackingTestDataParamOutForDelivery[] = "OutForDelivery"; +SET_CROMITE_FEATURE_DISABLED(kCommerceHintAndroid); +SET_CROMITE_FEATURE_DISABLED(kCommercePriceTrackingRegionLaunched); +SET_CROMITE_FEATURE_DISABLED(kShoppingListRegionLaunched); -+SET_CROMITE_FEATURE_DISABLED(kMerchantWidePromotion); + +SET_CROMITE_FEATURE_DISABLED(kParcelTracking); +SET_CROMITE_FEATURE_DISABLED(kParcelTrackingRegionLaunched); + +SET_CROMITE_FEATURE_DISABLED(kEnableDiscountInfoApi); +SET_CROMITE_FEATURE_DISABLED(kEnableDiscountInfoApiRegionLaunched); -+SET_CROMITE_FEATURE_DISABLED(kShowDiscountOnNavigation); -+SET_CROMITE_FEATURE_DISABLED(kShowDiscountOnNavigationRegionLaunched); + // Params for Discount Consent V2 in the NTP Cart module. const char kNtpChromeCartModuleDiscountConsentNtpVariationParam[] = "discount-consent-ntp-variation"; +@@ -429,11 +389,11 @@ bool IsPartnerMerchant(const GURL& url) { + } + + bool IsRuleDiscountPartnerMerchant(const GURL& url) { +- return RE2::PartialMatch(url.spec(), GetRulePartnerMerchantPattern()); ++ return false; + } + + bool IsCouponDiscountPartnerMerchant(const GURL& url) { +- return RE2::PartialMatch(url.spec(), GetCouponPartnerMerchantPattern()); ++ return false; + } + + bool IsCartDiscountFeatureEnabled() { +@@ -516,6 +476,7 @@ base::TimeDelta GetDiscountFetchDelay() { + } + + bool IsNoDiscountMerchant(const GURL& url) { ++ if ((true)) return true; + auto* pattern_from_component = + commerce_heuristics::CommerceHeuristicsData::GetInstance() + .GetNoDiscountMerchantPattern(); diff --git a/components/policy/core/browser/browser_policy_connector.cc b/components/policy/core/browser/browser_policy_connector.cc --- a/components/policy/core/browser/browser_policy_connector.cc +++ b/components/policy/core/browser/browser_policy_connector.cc diff --git a/build/patches/bromite-build-utils.patch b/build/patches/bromite-build-utils.patch index c8173987..9423bd29 100644 --- a/build/patches/bromite-build-utils.patch +++ b/build/patches/bromite-build-utils.patch @@ -16,10 +16,10 @@ Subject: bromite build utils chrome/browser/flags/BUILD.gn | 10 +- .../flags/android/cromite_native_utils.cc | 41 +++++++ .../flags/android/cromite_native_utils.h | 14 +++ - .../browser/flags/CromiteNativeUtils.java | 46 ++++++++ + .../browser/flags/CromiteNativeUtils.java | 47 ++++++++ tools/grit/grit/grd_reader.py | 27 ++++- tools/grit/preprocess_if_expr.py | 32 +++++- - 16 files changed, 467 insertions(+), 16 deletions(-) + 16 files changed, 468 insertions(+), 16 deletions(-) create mode 100644 build/bromite/bromite_utils.gni create mode 100644 build/bromite/gyp/cpp_bromite_include.py create mode 100644 build/bromite/gyp/cpp_bromite_include.pydeps @@ -575,9 +575,10 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f new file mode 100755 --- /dev/null +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/CromiteNativeUtils.java -@@ -0,0 +1,46 @@ +@@ -0,0 +1,47 @@ +package org.chromium.chrome.browser.flags; + ++import org.chromium.base.cached_flags.CachedFlag; +import org.chromium.chrome.browser.flags.ChromeFeatureList; +import org.chromium.chrome.browser.preferences.ChromePreferenceKeys; +import org.chromium.chrome.browser.preferences.ChromeSharedPreferences; diff --git a/build/patches/eyeo-beta-118.0.5993.48-android_api.patch b/build/patches/eyeo-beta-118.0.5993.48-android_api.patch index 06827fa0..d2b4c658 100644 --- a/build/patches/eyeo-beta-118.0.5993.48-android_api.patch +++ b/build/patches/eyeo-beta-118.0.5993.48-android_api.patch @@ -140,7 +140,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3432,6 +3432,17 @@ static_library("browser") { +@@ -3433,6 +3433,17 @@ static_library("browser") { "webauthn/android/webauthn_request_delegate_android.h", ] @@ -158,7 +158,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn public_deps += [ "//chrome/android/features/dev_ui:buildflags", -@@ -3619,6 +3630,9 @@ static_library("browser") { +@@ -3621,6 +3632,9 @@ static_library("browser") { "//url", ] @@ -1282,7 +1282,7 @@ new file mode 100644 + const base::android::JavaParamRef& allowed_domain) { + auto* configuration = GetConfigurationWithName(env, configuration_name); + if (configuration) { -+ configuration->RemoveAllowedDomain(ConvertJavaStringToUTF8(allowed_domain)); ++ configuration->RemoveAllowedDomain(base::android::ConvertJavaStringToUTF8(allowed_domain)); + } +} + @@ -1302,7 +1302,7 @@ new file mode 100644 + const base::android::JavaParamRef& custom_filter) { + auto* configuration = GetConfigurationWithName(env, configuration_name); + if (configuration) { -+ configuration->AddCustomFilter(ConvertJavaStringToUTF8(custom_filter)); ++ configuration->AddCustomFilter(base::android::ConvertJavaStringToUTF8(custom_filter)); + } +} + diff --git a/build/patches/eyeo-beta-118.0.5993.48-base.patch b/build/patches/eyeo-beta-118.0.5993.48-base.patch index d13dc292..facbdd87 100644 --- a/build/patches/eyeo-beta-118.0.5993.48-base.patch +++ b/build/patches/eyeo-beta-118.0.5993.48-base.patch @@ -20,7 +20,7 @@ Based on Chromium 118.0.5993.48 .../content/browser/adblock_filter_match.h | 30 + .../adblock_telemetry_service_factory_base.cc | 100 ++ .../adblock_telemetry_service_factory_base.h | 54 + - .../browser/adblock_url_loader_factory.cc | 747 +++++++++ + .../browser/adblock_url_loader_factory.cc | 748 +++++++++ .../browser/adblock_url_loader_factory.h | 100 ++ .../adblock_url_loader_factory_for_test.cc | 436 +++++ .../adblock_url_loader_factory_for_test.h | 70 + @@ -223,7 +223,7 @@ Based on Chromium 118.0.5993.48 tools/eyeo/generate_modules.sh | 209 +++ tools/eyeo/snippets_deps.py | 61 + tools/gritsettings/resource_ids.spec | 8 + - 219 files changed, 22060 insertions(+), 3 deletions(-) + 219 files changed, 22061 insertions(+), 3 deletions(-) create mode 100644 components/adblock/CHANGELOG.md create mode 100644 components/adblock/LICENSE create mode 100644 components/adblock/README.md @@ -2540,7 +2540,7 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/ new file mode 100644 --- /dev/null +++ b/components/adblock/content/browser/adblock_url_loader_factory.cc -@@ -0,0 +1,747 @@ +@@ -0,0 +1,748 @@ +/* + * This file is part of eyeo Chromium SDK, + * Copyright (C) 2006-present eyeo GmbH @@ -2623,6 +2623,7 @@ new file mode 100644 + case network::mojom::RequestDestination::kWorker: + case network::mojom::RequestDestination::kSharedWorker: + case network::mojom::RequestDestination::kServiceWorker: ++ case network::mojom::RequestDestination::kJson: + return ContentType::Script; + case network::mojom::RequestDestination::kImage: + return ContentType::Image; diff --git a/build/patches/eyeo-beta-118.0.5993.48-chrome_integration.patch b/build/patches/eyeo-beta-118.0.5993.48-chrome_integration.patch index beaae0fd..ffc77269 100644 --- a/build/patches/eyeo-beta-118.0.5993.48-chrome_integration.patch +++ b/build/patches/eyeo-beta-118.0.5993.48-chrome_integration.patch @@ -177,7 +177,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "//components/assist_ranker", "//components/autofill/content/browser", "//components/autofill/core/browser", -@@ -3405,6 +3431,8 @@ static_library("browser") { +@@ -3406,6 +3432,8 @@ static_library("browser") { "webauthn/android/webauthn_request_delegate_android.cc", "webauthn/android/webauthn_request_delegate_android.h", ] @@ -186,7 +186,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn public_deps += [ "//chrome/android/features/dev_ui:buildflags", "//components/image_fetcher/core", -@@ -3591,6 +3619,7 @@ static_library("browser") { +@@ -3593,6 +3621,7 @@ static_library("browser") { "//url", ] @@ -2629,7 +2629,7 @@ new file mode 100644 +mojom("mojo_bindings") { + sources = [ "adblock_internals.mojom" ] + webui_module_path = "/" -+ use_typescript_sources = true ++ #use_typescript_sources = true +} diff --git a/chrome/browser/ui/webui/adblock_internals/adblock_internals.mojom b/chrome/browser/ui/webui/adblock_internals/adblock_internals.mojom new file mode 100644 diff --git a/build/patches/updater-disable-updater-pings.patch b/build/patches/updater-disable-updater-pings.patch index 3005263b..e70d82e9 100644 --- a/build/patches/updater-disable-updater-pings.patch +++ b/build/patches/updater-disable-updater-pings.patch @@ -8,10 +8,10 @@ Chromium would still send background requests. Kill it. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../component_updater/component_updater_url_constants.cc | 4 ++-- - components/component_updater/configurator_impl.cc | 6 +++--- - components/component_updater/configurator_impl.h | 1 - - 3 files changed, 5 insertions(+), 6 deletions(-) + .../component_updater_url_constants.cc | 4 ++-- + components/component_updater/configurator_impl.cc | 10 ++++------ + components/component_updater/configurator_impl.h | 1 - + 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/components/component_updater/component_updater_url_constants.cc b/components/component_updater/component_updater_url_constants.cc --- a/components/component_updater/component_updater_url_constants.cc @@ -41,7 +41,7 @@ diff --git a/components/component_updater/configurator_impl.cc b/components/comp url_source_override_(config_policy.UrlSourceOverride()), initial_delay_(config_policy.InitialDelay()) { if (config_policy.TestRequest()) { -@@ -77,6 +76,7 @@ base::TimeDelta ConfiguratorImpl::UpdateDelay() const { +@@ -77,22 +76,21 @@ base::TimeDelta ConfiguratorImpl::UpdateDelay() const { std::vector ConfiguratorImpl::UpdateUrl() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -49,7 +49,16 @@ diff --git a/components/component_updater/configurator_impl.cc b/components/comp if (url_source_override_.is_valid()) { return {GURL(url_source_override_)}; } -@@ -92,7 +92,7 @@ std::vector ConfiguratorImpl::UpdateUrl() const { + + std::vector urls{GURL(kUpdaterJSONDefaultUrl), + GURL(kUpdaterJSONFallbackUrl)}; +- if (require_encryption_) { +- update_client::RemoveUnsecureUrls(&urls); +- } ++ update_client::RemoveUnsecureUrls(&urls); + + return urls; + } std::vector ConfiguratorImpl::PingUrl() const { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);