diff --git a/build/patches/AImageReader-CFI-crash-mitigations.patch b/build/patches/AImageReader-CFI-crash-mitigations.patch index ab607e6e..4d7bbc8a 100644 --- a/build/patches/AImageReader-CFI-crash-mitigations.patch +++ b/build/patches/AImageReader-CFI-crash-mitigations.patch @@ -31,8 +31,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html gpu/config/gpu_util.cc | 8 ++++++++ gpu/config/gpu_workaround_list.txt | 1 + gpu/ipc/service/gpu_init.cc | 8 ++++++++ - media/gpu/android/video_frame_factory_impl.cc | 12 +++++++++++- - 12 files changed, 89 insertions(+), 1 deletion(-) + media/gpu/android/video_frame_factory_impl.cc | 4 +++- + 12 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 cromite_flags/media/base/media_switches_cc/AImageReader-CFI-crash-mitigations.inc create mode 100644 cromite_flags/media/base/media_switches_h/AImageReader-CFI-crash-mitigations.inc @@ -232,20 +232,12 @@ diff --git a/gpu/ipc/service/gpu_init.cc b/gpu/ipc/service/gpu_init.cc diff --git a/media/gpu/android/video_frame_factory_impl.cc b/media/gpu/android/video_frame_factory_impl.cc --- a/media/gpu/android/video_frame_factory_impl.cc +++ b/media/gpu/android/video_frame_factory_impl.cc -@@ -35,10 +35,20 @@ namespace { +@@ -35,10 +35,12 @@ namespace { gpu::TextureOwner::Mode GetTextureOwnerMode( VideoFrameFactory::OverlayMode overlay_mode) { -+ CHECK: https://source.chromium.org/chromium/chromium/src/+/0abf370caaac29344f1d3fe4c416b75a17392b65 -+ -+ // TODO(vikassoni) : Currently we have 2 different flags to enable/disable -+ // AImageReader - one for MCVD and other for MediaPlayer here. Merge those 2 -+ // flags into a single flag. Keeping the 2 flags separate for now since finch -+ // experiment using this flag is in progress. -+ const bool a_image_reader_supported = -+ base::android::AndroidImageReader::GetInstance().IsSupported(); -+ const bool enabled = a_image_reader_supported && base::android::EnableAndroidImageReader() && -+ base::FeatureList::IsEnabled(features::kAImageReaderMediaPlayer) ++ const bool enabled = base::android::EnableAndroidImageReader() && ++ base::FeatureList::IsEnabled(features::kAImageReaderMediaPlayer); switch (overlay_mode) { case VideoFrameFactory::OverlayMode::kDontRequestPromotionHints: case VideoFrameFactory::OverlayMode::kRequestPromotionHints: diff --git a/build/patches/Add-bookmark-import-export-actions.patch b/build/patches/Add-bookmark-import-export-actions.patch index e458662d..c1106313 100644 --- a/build/patches/Add-bookmark-import-export-actions.patch +++ b/build/patches/Add-bookmark-import-export-actions.patch @@ -17,7 +17,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../app/bookmarks/BookmarkActivity.java | 31 ++ .../native_page/NativePageFactory.java | 9 +- chrome/browser/BUILD.gn | 11 +- - .../bookmarks/android/bookmark_bridge.cc | 267 +++++++++++++++++ + .../bookmarks/android/bookmark_bridge.cc | 266 ++++++++++++++++ .../bookmarks/android/bookmark_bridge.h | 30 +- .../browser/bookmarks/BookmarkBridge.java | 39 +++ .../browser/bookmarks/BookmarkDelegate.java | 10 + @@ -52,7 +52,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 + - 41 files changed, 906 insertions(+), 29 deletions(-) + 41 files changed, 905 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 @@ -282,7 +282,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 -@@ -68,6 +68,28 @@ +@@ -68,6 +68,27 @@ #include "content/public/browser/web_contents.h" #include "url/gurl.h" @@ -294,8 +294,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse +#include "chrome/browser/importer/profile_writer.h" +#include "chrome/browser/platform_util.h" +#include "chrome/browser/ui/chrome_select_file_policy.h" -+#include "chrome/common/importer/imported_bookmark_entry.h" -+#include "chrome/common/importer/importer_data_types.h" ++#include "components/user_data_importer/common/imported_bookmark_entry.h" +#include "chrome/common/url_constants.h" +#include "components/favicon_base/favicon_usage_data.h" +#include "components/search_engines/template_url.h" @@ -311,7 +310,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse // Must come after all headers that specialize FromJniType() / ToJniType(). #include "chrome/browser/bookmarks/android/jni_headers/BookmarkBridge_jni.h" -@@ -86,6 +108,57 @@ using bookmarks::android::JavaBookmarkIdGetType; +@@ -86,6 +107,57 @@ using bookmarks::android::JavaBookmarkIdGetType; using content::BrowserThread; using power_bookmarks::PowerBookmarkMeta; @@ -369,7 +368,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse namespace { // The key used to connect the instance of the bookmark bridge to the bookmark // model. -@@ -296,6 +369,10 @@ BookmarkBridge::~BookmarkBridge() { +@@ -296,6 +368,10 @@ BookmarkBridge::~BookmarkBridge() { partner_bookmarks_shim_observation_.Reset(); bookmark_model_observation_.Reset(); profile_observation_.Reset(); @@ -380,7 +379,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse } void BookmarkBridge::Destroy(JNIEnv* env) { -@@ -847,6 +924,196 @@ jint BookmarkBridge::GetTotalBookmarkCount( +@@ -847,6 +923,196 @@ jint BookmarkBridge::GetTotalBookmarkCount( return count; } @@ -533,8 +532,8 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + return; + + // the following import logic comes from BookmarksFileImporter class -+ std::vector bookmarks; -+ std::vector search_engines; ++ std::vector bookmarks; ++ std::vector search_engines; + favicon_base::FaviconUsageDataList favicons; + + bookmark_html_reader::ImportBookmarksFile( @@ -1139,7 +1138,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java --- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java +++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java -@@ -103,6 +103,17 @@ public class BookmarkToolbar extends SelectableListToolbar +@@ -102,6 +102,17 @@ public class BookmarkToolbar extends SelectableListToolbar setOnMenuItemClickListener(dragEnabled ? null : this); } @@ -1157,7 +1156,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows void setEditButtonVisible(boolean visible) { mEditButtonVisible = visible; getMenu().findItem(R.id.edit_menu_id).setVisible(visible); -@@ -179,6 +190,12 @@ public class BookmarkToolbar extends SelectableListToolbar +@@ -178,6 +189,12 @@ public class BookmarkToolbar extends SelectableListToolbar void setCurrentFolder(BookmarkId folder) { mCurrentFolder = mBookmarkModel.getBookmarkById(folder); @@ -1170,7 +1169,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows } void setNavigateBackRunnable(Runnable navigateBackRunnable) { -@@ -203,6 +220,13 @@ public class BookmarkToolbar extends SelectableListToolbar +@@ -202,6 +219,13 @@ public class BookmarkToolbar extends SelectableListToolbar @Override public boolean onMenuItemClick(MenuItem menuItem) { hideOverflowMenu(); @@ -1184,7 +1183,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows return assumeNonNull(mMenuIdClickedFunction).apply(menuItem.getItemId()); } -@@ -223,6 +247,9 @@ public class BookmarkToolbar extends SelectableListToolbar +@@ -222,6 +246,9 @@ public class BookmarkToolbar extends SelectableListToolbar protected void showNormalView() { super.showNormalView(); @@ -1359,7 +1358,7 @@ diff --git a/chrome/browser/importer/profile_writer.cc b/chrome/browser/importer + +void ProfileWriter::AddBookmarksWithModel( + BookmarkModel* model, -+ const std::vector& bookmarks, ++ const std::vector& bookmarks, + const std::u16string& top_level_folder_name) { + if (bookmarks.empty()) + return; @@ -1384,7 +1383,7 @@ diff --git a/chrome/browser/importer/profile_writer.h b/chrome/browser/importer/ + virtual void AddBookmarksWithModel( + bookmarks::BookmarkModel* model, -+ const std::vector& bookmarks, ++ const std::vector& bookmarks, + const std::u16string& top_level_folder_name); + virtual void AddFavicons(const favicon_base::FaviconUsageDataList& favicons); @@ -1446,8 +1445,8 @@ diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn "media/chrome_media_drm_bridge_client.cc", "media/chrome_media_drm_bridge_client.h", + ## Bromite dependencies for bookmark import functionality -+ "importer/imported_bookmark_entry.cc", -+ "importer/imported_bookmark_entry.h", ++ "//components/user_data_importer/common/imported_bookmark_entry.cc", ++ "//components/user_data_importer/common/imported_bookmark_entry.h", ] } else { # Non-Android. @@ -1531,8 +1530,8 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.cc b/chrome/utility/im + base::RepeatingCallback cancellation_callback, + base::RepeatingCallback valid_url_callback, + const std::string& content, -+ std::vector* bookmarks, -+ std::vector* search_engines, ++ std::vector* bookmarks, ++ std::vector* search_engines, + favicon_base::FaviconUsageDataList* favicons) { std::vector lines = base::SplitString( content, "\n", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); @@ -1569,8 +1568,8 @@ diff --git a/chrome/utility/importer/bookmark_html_reader.h b/chrome/utility/imp + const base::RepeatingCallback cancellation_callback, + const base::RepeatingCallback valid_url_callback, + const std::string& content, -+ std::vector* bookmarks, -+ std::vector* search_engines, ++ std::vector* bookmarks, ++ std::vector* search_engines, + favicon_base::FaviconUsageDataList* favicons); + // Returns true if |url| should be imported as a search engine, i.e. because it diff --git a/build/patches/Add-flag-to-disable-external-intent-requests.patch b/build/patches/Add-flag-to-disable-external-intent-requests.patch index ed54d565..e6a86663 100644 --- a/build/patches/Add-flag-to-disable-external-intent-requests.patch +++ b/build/patches/Add-flag-to-disable-external-intent-requests.patch @@ -184,8 +184,8 @@ diff --git a/components/external_intents/android/java/src/org/chromium/component + public static final String INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE_NAME = + "IntentBlockExternalFormRedirectsNoGesture"; + -+ public static final ExternalIntentsFeatures INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE = -+ new ExternalIntentsFeatures(-1, INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE_NAME); ++ public static final ExternalIntentsFeature INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE = ++ new ExternalIntentsFeature(-1, INTENT_BLOCK_EXTERNAL_FORM_REDIRECT_NO_GESTURE_NAME); + public static final String EXTERNAL_NAVIGATION_DEBUG_LOGS_NAME = "ExternalNavigationDebugLogs"; public static final String BLOCK_INTENTS_TO_SELF_NAME = "BlockIntentsToSelf"; diff --git a/build/patches/Add-lifetime-options-for-permissions.patch b/build/patches/Add-lifetime-options-for-permissions.patch index b6435ebc..6b0c81de 100644 --- a/build/patches/Add-lifetime-options-for-permissions.patch +++ b/build/patches/Add-lifetime-options-for-permissions.patch @@ -80,17 +80,17 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../permission_prompt_android.cc | 8 +- .../permission_prompt_android.h | 3 +- .../android/permissions_android_strings.grd | 17 ++++ - .../geolocation_permission_context_android.cc | 34 ++++++-- - .../geolocation_permission_context_android.h | 13 ++- + .../geolocation_permission_context_android.cc | 32 ++++++-- + .../geolocation_permission_context_android.h | 11 ++- .../embedded_permission_prompt_flow_model.cc | 2 +- - .../permissions/permission_context_base.cc | 51 ++++++++++-- + .../permissions/permission_context_base.cc | 49 +++++++++-- .../permissions/permission_context_base.h | 20 ++++- components/permissions/permission_prompt.h | 3 +- - components/permissions/permission_request.cc | 30 ++++++- - components/permissions/permission_request.h | 16 +++- + components/permissions/permission_request.cc | 32 +++++++- + components/permissions/permission_request.h | 18 +++- .../permissions/permission_request_manager.cc | 45 ++++++---- .../permissions/permission_request_manager.h | 11 ++- - 38 files changed, 489 insertions(+), 71 deletions(-) + 38 files changed, 487 insertions(+), 71 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 @@ -842,19 +842,17 @@ diff --git a/components/permissions/android/permissions_android_strings.grd b/co diff --git a/components/permissions/contexts/geolocation_permission_context_android.cc b/components/permissions/contexts/geolocation_permission_context_android.cc --- a/components/permissions/contexts/geolocation_permission_context_android.cc +++ b/components/permissions/contexts/geolocation_permission_context_android.cc -@@ -193,7 +193,20 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( +@@ -193,7 +193,18 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( bool is_one_time, bool is_final_decision) { DCHECK(is_final_decision); -+ NotifyPermissionSetWithLifetime(id, requesting_origin, embedding_origin, ++ NotifyPermissionSetWithLifetime(request_data, + std::move(callback), persist, content_setting, is_one_time, is_final_decision, + content_settings::mojom::LifetimeMode::ALWAYS); +} +void GeolocationPermissionContextAndroid::NotifyPermissionSetWithLifetime( -+ const PermissionRequestID& id, -+ const GURL& requesting_origin, -+ const GURL& embedding_origin, ++ const PermissionRequestData& request_data, + BrowserPermissionCallback callback, + bool persist, + ContentSetting content_setting, @@ -863,7 +861,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr bool is_default_search = IsRequestingOriginDSE(request_data.requesting_origin); if (content_setting == CONTENT_SETTING_ALLOW && -@@ -208,7 +221,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( +@@ -208,7 +219,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin, request_data.embedding_origin, std::move(callback), false /* persist */, @@ -873,7 +871,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr return; } -@@ -228,7 +242,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( +@@ -228,7 +240,8 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin, request_data.embedding_origin, std::move(callback), false /* persist */, @@ -883,7 +881,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr return; } -@@ -241,13 +256,13 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( +@@ -241,13 +254,13 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet( &GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown, weak_factory_.GetWeakPtr(), request_data.requesting_origin, request_data.embedding_origin, persist, content_setting, @@ -899,7 +897,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr } content::PermissionResult -@@ -425,7 +440,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( +@@ -425,7 +438,7 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( const GURL& embedding_origin, bool persist, ContentSetting content_setting, @@ -908,7 +906,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr LocationSettingsDialogOutcome prompt_outcome) { bool is_default_search = IsRequestingOriginDSE(requesting_origin); if (prompt_outcome == GRANTED) { -@@ -444,7 +459,8 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( +@@ -444,7 +457,8 @@ void GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown( FinishNotifyPermissionSet(location_settings_dialog_request_id_, requesting_origin, embedding_origin, std::move(location_settings_dialog_callback_), @@ -918,7 +916,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr location_settings_dialog_request_id_ = PermissionRequestID(content::GlobalRenderFrameHostId(0, 0), -@@ -458,8 +474,8 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( +@@ -458,8 +472,8 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( BrowserPermissionCallback callback, bool persist, ContentSetting content_setting, @@ -929,7 +927,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr PermissionRequestData(this, id, content::PermissionRequestDescription( content::PermissionDescriptorUtil:: -@@ -467,7 +483,7 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( +@@ -467,7 +481,7 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet( blink::PermissionType::GEOLOCATION)), requesting_origin), std::move(callback), persist, content_setting, is_one_time, @@ -941,13 +939,11 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr diff --git a/components/permissions/contexts/geolocation_permission_context_android.h b/components/permissions/contexts/geolocation_permission_context_android.h --- a/components/permissions/contexts/geolocation_permission_context_android.h +++ b/components/permissions/contexts/geolocation_permission_context_android.h -@@ -93,6 +93,15 @@ class GeolocationPermissionContextAndroid +@@ -93,6 +93,13 @@ class GeolocationPermissionContextAndroid ContentSetting content_setting, bool is_one_time, bool is_final_decision) override; -+ void NotifyPermissionSetWithLifetime(const PermissionRequestID& id, -+ const GURL& requesting_origin, -+ const GURL& embedding_origin, ++ void NotifyPermissionSetWithLifetime(const PermissionRequestData& request_data, + BrowserPermissionCallback callback, + bool persist, + ContentSetting content_setting, @@ -957,7 +953,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr content::PermissionResult UpdatePermissionStatusWithDeviceStatus( content::WebContents* web_contents, content::PermissionResult result, -@@ -138,6 +147,7 @@ class GeolocationPermissionContextAndroid +@@ -138,6 +145,7 @@ class GeolocationPermissionContextAndroid bool persist, ContentSetting content_setting, bool is_one_time, @@ -965,7 +961,7 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr LocationSettingsDialogOutcome prompt_outcome); void FinishNotifyPermissionSet(const PermissionRequestID& id, -@@ -146,7 +156,8 @@ class GeolocationPermissionContextAndroid +@@ -146,7 +154,8 @@ class GeolocationPermissionContextAndroid BrowserPermissionCallback callback, bool persist, ContentSetting content_setting, @@ -990,24 +986,24 @@ diff --git a/components/permissions/embedded_permission_prompt_flow_model.cc b/c 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 -@@ -273,6 +273,17 @@ GURL PermissionContextBase::GetEffectiveEmbedderOrigin( - return PermissionUtil::GetLastCommittedOriginAsURL(rfh->GetMainFrame()); +@@ -253,6 +253,17 @@ PermissionContextBase::CreatePermissionRequest( + std::move(request_finished_callback), UsesAutomaticEmbargo()); } +std::unique_ptr +PermissionContextBase::CreatePermissionRequest( + content::WebContents* web_contents, -+ PermissionRequestData request_data, ++ std::unique_ptr request_data, + PermissionRequest::PermissionDecidedCallbackWithLifetime permission_decided_callback, -+ base::OnceClosure delete_callback) const { ++ base::OnceClosure request_finished_callback) const { + return std::make_unique( + std::move(request_data), std::move(permission_decided_callback), -+ std::move(delete_callback)); ++ std::move(request_finished_callback), UsesAutomaticEmbargo()); +} + - content::PermissionResult PermissionContextBase::GetPermissionStatus( - const PermissionResolver& resolver, - content::RenderFrameHost* render_frame_host, + bool PermissionContextBase::UsesAutomaticEmbargo() const { + return true; + } @@ -540,7 +551,8 @@ void PermissionContextBase::PermissionDecided( ContentSetting content_setting, bool is_one_time, @@ -1036,20 +1032,18 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } } -@@ -652,10 +665,26 @@ void PermissionContextBase::NotifyPermissionSet( +@@ -652,10 +665,24 @@ void PermissionContextBase::NotifyPermissionSet( ContentSetting content_setting, bool is_one_time, bool is_final_decision) { + DCHECK(is_one_time == false); -+ NotifyPermissionSetWithLifetime(request_data, requesting_origin, embedding_origin, std::move(callback), ++ NotifyPermissionSetWithLifetime(request_data, std::move(callback), + persist, content_setting, is_one_time, is_final_decision, + content_settings::mojom::LifetimeMode::ALWAYS); +} + +void PermissionContextBase::NotifyPermissionSetWithLifetime( + const PermissionRequestData& request_data, -+ const GURL& requesting_origin, -+ const GURL& embedding_origin, + BrowserPermissionCallback callback, + bool persist, + ContentSetting content_setting, @@ -1064,7 +1058,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm } if (is_final_decision) { -@@ -696,6 +725,14 @@ void PermissionContextBase::UpdateContentSetting( +@@ -696,6 +723,14 @@ void PermissionContextBase::UpdateContentSetting( const PermissionRequestData& request_data, ContentSetting content_setting, bool is_one_time) { @@ -1079,7 +1073,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm DCHECK_EQ(request_data.requesting_origin, request_data.requesting_origin.DeprecatedGetOriginAsURL()); DCHECK_EQ(request_data.embedding_origin, -@@ -707,6 +744,8 @@ void PermissionContextBase::UpdateContentSetting( +@@ -707,6 +742,8 @@ void PermissionContextBase::UpdateContentSetting( constraints.set_session_model( is_one_time ? content_settings::mojom::SessionModel::ONE_TIME : content_settings::mojom::SessionModel::DURABLE); @@ -1122,9 +1116,9 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi + virtual std::unique_ptr CreatePermissionRequest( + content::WebContents* web_contents, -+ PermissionRequestData request_data, ++ std::unique_ptr request_data, + PermissionRequest::PermissionDecidedCallbackWithLifetime permission_decided_callback, -+ base::OnceClosure delete_callback) const; ++ base::OnceClosure request_finished_callback) const; + // Implementors can override this method to avoid using automatic embargo. virtual bool UsesAutomaticEmbargo() const; @@ -1156,22 +1150,24 @@ diff --git a/components/permissions/permission_prompt.h b/components/permissions diff --git a/components/permissions/permission_request.cc b/components/permissions/permission_request.cc --- a/components/permissions/permission_request.cc +++ b/components/permissions/permission_request.cc -@@ -32,6 +32,14 @@ PermissionRequest::PermissionRequest( +@@ -32,6 +32,16 @@ PermissionRequest::PermissionRequest( request_finished_callback_(std::move(request_finished_callback)), uses_automatic_embargo_(uses_automatic_embargo) {} +PermissionRequest::PermissionRequest( -+ PermissionRequestData request_data, ++ std::unique_ptr request_data, + PermissionDecidedCallbackWithLifetime permission_decided_callback, -+ base::OnceClosure delete_callback) ++ base::OnceClosure request_finished_callback, ++ bool uses_automatic_embargo) + : data_(std::move(request_data)), + permission_decided_callback_withlifetime_(std::move(permission_decided_callback)), -+ delete_callback_(std::move(delete_callback)) {} ++ request_finished_callback_(std::move(request_finished_callback)), ++ uses_automatic_embargo_(uses_automatic_embargo) {} + PermissionRequest::~PermissionRequest() { std::move(request_finished_callback_).Run(); } -@@ -412,19 +420,37 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const { +@@ -412,19 +422,37 @@ bool PermissionRequest::ShouldUseTwoOriginPrompt() const { return request_type() == RequestType::kStorageAccess; } @@ -1180,7 +1176,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio + content_settings::mojom::LifetimeMode lifetime_option) { + if (permission_decided_callback_withlifetime_) { + std::move(permission_decided_callback_withlifetime_) -+ .Run(CONTENT_SETTING_ALLOW, is_one_time, /*is_final_decision=*/true, lifetime_option); ++ .Run(CONTENT_SETTING_ALLOW, is_one_time, /*is_final_decision=*/true, *data_, lifetime_option); + return; + } std::move(permission_decided_callback_) @@ -1193,7 +1189,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio + content_settings::mojom::LifetimeMode lifetime_option) { + if (permission_decided_callback_withlifetime_) { + std::move(permission_decided_callback_withlifetime_) -+ .Run(CONTENT_SETTING_BLOCK, is_one_time, /*is_final_decision=*/true, lifetime_option); ++ .Run(CONTENT_SETTING_BLOCK, is_one_time, /*is_final_decision=*/true, *data_, lifetime_option); + return; + } std::move(permission_decided_callback_) @@ -1204,7 +1200,7 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio void PermissionRequest::Cancelled(bool is_final_decision) { + if (permission_decided_callback_withlifetime_) { + std::move(permission_decided_callback_withlifetime_) -+ .Run(CONTENT_SETTING_DEFAULT, false, is_final_decision, ++ .Run(CONTENT_SETTING_DEFAULT, false, is_final_decision, *data_, + content_settings::mojom::LifetimeMode::ALWAYS); + return; + } @@ -1214,30 +1210,32 @@ diff --git a/components/permissions/permission_request.cc b/components/permissio diff --git a/components/permissions/permission_request.h b/components/permissions/permission_request.h --- a/components/permissions/permission_request.h +++ b/components/permissions/permission_request.h -@@ -47,6 +47,11 @@ class PermissionRequest { +@@ -47,6 +47,12 @@ class PermissionRequest { bool /*is_final_decision*/, const PermissionRequestData& /*request_data*/)>; -+ using PermissionDecidedCallbackWithLifetime = -+ base::OnceCallback; ++ using PermissionDecidedCallbackWithLifetime = base::RepeatingCallback; + // `permission_decided_callback` is called when the permission request is // resolved by the user (see comment on PermissionDecidedCallback above). // `request_finished_callback` is called when the permission request is being -@@ -61,6 +66,10 @@ class PermissionRequest { +@@ -61,6 +67,11 @@ class PermissionRequest { base::OnceClosure request_finished_callback = base::DoNothing(), bool uses_automatic_embargo = true); -+ PermissionRequest(PermissionRequestData request_data, ++ PermissionRequest(std::unique_ptr request_data, + PermissionDecidedCallbackWithLifetime permission_decided_callback, -+ base::OnceClosure delete_callback); ++ base::OnceClosure request_finished_callback = base::DoNothing(), ++ bool uses_automatic_embargo = true); + PermissionRequest(const PermissionRequest&) = delete; PermissionRequest& operator=(const PermissionRequest&) = delete; -@@ -167,10 +176,10 @@ class PermissionRequest { +@@ -167,10 +178,10 @@ class PermissionRequest { // If |is_one_time| is true the permission will last until all tabs of // |origin| are closed or navigated away from, and then the permission will // automatically expire after 1 day. @@ -1250,7 +1248,7 @@ diff --git a/components/permissions/permission_request.h b/components/permission // Called when the user has cancelled the permission request. This // corresponds to a denial, but is segregated in case the context needs to -@@ -224,6 +233,9 @@ class PermissionRequest { +@@ -224,6 +235,9 @@ class PermissionRequest { // Called once a decision is made about the permission. PermissionDecidedCallback permission_decided_callback_; 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 f1bcca26..c8fa1d95 100644 --- a/build/patches/Add-menu-item-to-bookmark-all-tabs.patch +++ b/build/patches/Add-menu-item-to-bookmark-all-tabs.patch @@ -18,19 +18,19 @@ 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 | 20 +++++++-- components/bookmarks/browser/bookmark_codec.h | 7 ++- - .../browser/bookmark_load_details.cc | 14 ++++-- + .../browser/bookmark_load_details.cc | 15 +++++-- .../bookmarks/browser/bookmark_load_details.h | 2 + .../bookmarks/browser/bookmark_model.cc | 3 +- components/bookmarks/browser/bookmark_model.h | 7 +++ - components/bookmarks/browser/bookmark_node.cc | 11 +++++ - components/bookmarks/browser/bookmark_node.h | 3 ++ + components/bookmarks/browser/bookmark_node.cc | 13 ++++++ + components/bookmarks/browser/bookmark_node.h | 4 ++ .../bookmarks/browser/bookmark_storage.cc | 2 + .../bookmarks/browser/bookmark_uuids.cc | 3 ++ components/bookmarks/browser/bookmark_uuids.h | 1 + - components/bookmarks/browser/model_loader.cc | 8 +++- + components/bookmarks/browser/model_loader.cc | 9 +++- ...ookmark_model_merger_comparison_metrics.cc | 4 ++ .../bookmark_specifics_conversions.cc | 1 + - 26 files changed, 245 insertions(+), 14 deletions(-) + 26 files changed, 250 insertions(+), 14 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 @@ -140,7 +140,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct 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 -@@ -391,6 +391,33 @@ jboolean BookmarkBridge::AreAccountBookmarkFoldersActive(JNIEnv* env) { +@@ -390,6 +390,33 @@ jboolean BookmarkBridge::AreAccountBookmarkFoldersActive(JNIEnv* env) { return bookmark_model_->account_mobile_node() != nullptr; } @@ -174,7 +174,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse base::android::ScopedJavaLocalRef BookmarkBridge::GetMostRecentlyAddedUserBookmarkIdForUrl(JNIEnv* env, const GURL& url) { -@@ -503,6 +530,7 @@ void BookmarkBridge::GetAllFoldersWithDepths( +@@ -502,6 +529,7 @@ void BookmarkBridge::GetAllFoldersWithDepths( // Vector to temporarily contain all child bookmarks at same level for sorting std::vector bookmarks = { bookmark_model_->mobile_node(), @@ -182,7 +182,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse bookmark_model_->bookmark_bar_node(), bookmark_model_->other_node(), }; -@@ -611,6 +639,9 @@ std::vector BookmarkBridge::GetTopLevelFolderIdsImpl( +@@ -610,6 +638,9 @@ std::vector BookmarkBridge::GetTopLevelFolderIdsImpl( top_level_folders.push_back(other_node); } @@ -192,7 +192,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse const BookmarkNode* reading_list_node = local_or_syncable_reading_list_manager_->GetRoot(); if (IsPermanentFolderVisible( -@@ -1338,6 +1369,17 @@ void BookmarkBridge::GetBookmarksOfType( +@@ -1337,6 +1368,17 @@ void BookmarkBridge::GetBookmarksOfType( AddBookmarkNodesToBookmarkIdList(env, j_list, results); } @@ -646,16 +646,17 @@ diff --git a/components/bookmarks/browser/bookmark_load_details.cc b/components/ void UpdateUserFolderStatsRecursively(const BookmarkNode& node, bool top_level, -@@ -63,6 +63,8 @@ BookmarkLoadDetails::BookmarkLoadDetails() +@@ -63,6 +63,9 @@ BookmarkLoadDetails::BookmarkLoadDetails() mobile_folder_node_ = static_cast( root_node_->Add(BookmarkPermanentNode::CreateMobileBookmarks( /*id=*/0, /*is_account_node=*/false))); + tabs_collection_folder_node_ = static_cast( -+ root_node_->Add(BookmarkPermanentNode::CreateTabsCollectionBookmarks(/*id=*/0))); ++ root_node_->Add(BookmarkPermanentNode::CreateTabsCollectionBookmarks( ++ /*id=*/0, /*is_account_node=*/false))); // Set the nodes' `date_added` to the same time so that there is no inherent // hierarchy in terms of their added time between them. This is relevant for -@@ -119,6 +121,10 @@ void BookmarkLoadDetails::PopulateNodeIdsForLocalOrSyncablePermanentNodes() { +@@ -119,6 +122,10 @@ void BookmarkLoadDetails::PopulateNodeIdsForLocalOrSyncablePermanentNodes() { if (mobile_folder_node_->id() == 0) { mobile_folder_node_->set_id(max_id_++); } @@ -666,7 +667,7 @@ diff --git a/components/bookmarks/browser/bookmark_load_details.cc b/components/ } void BookmarkLoadDetails::AddManagedNode( -@@ -131,6 +137,7 @@ void BookmarkLoadDetails::AddManagedNode( +@@ -131,6 +138,7 @@ void BookmarkLoadDetails::AddManagedNode( CHECK_NE(bb_node_->id(), 0); CHECK_NE(other_folder_node_->id(), 0); CHECK_NE(mobile_folder_node_->id(), 0); @@ -674,7 +675,7 @@ diff --git a/components/bookmarks/browser/bookmark_load_details.cc b/components/ has_managed_node_ = true; root_node_->Add(std::move(managed_node)); -@@ -138,8 +145,8 @@ void BookmarkLoadDetails::AddManagedNode( +@@ -138,8 +146,8 @@ void BookmarkLoadDetails::AddManagedNode( void BookmarkLoadDetails::CreateIndices() { local_or_syncable_uuid_index_.insert(root_node_.get()); @@ -685,7 +686,7 @@ diff --git a/components/bookmarks/browser/bookmark_load_details.cc b/components/ for (const auto& child : root_node_->children()) { if (child.get() == account_bb_node_ || child.get() == account_other_folder_node_ || -@@ -158,6 +165,7 @@ void BookmarkLoadDetails::ResetPermanentNodePointers() { +@@ -158,6 +166,7 @@ void BookmarkLoadDetails::ResetPermanentNodePointers() { bb_node_ = nullptr; other_folder_node_ = nullptr; mobile_folder_node_ = nullptr; @@ -768,17 +769,19 @@ diff --git a/components/bookmarks/browser/bookmark_node.cc b/components/bookmark case BookmarkNode::URL: NOTREACHED(); case BookmarkNode::FOLDER: -@@ -213,6 +215,15 @@ BookmarkPermanentNode::CreateMobileBookmarks(int64_t id, +@@ -213,6 +215,17 @@ BookmarkPermanentNode::CreateMobileBookmarks(int64_t id, is_account_node)); } +// static +std::unique_ptr -+BookmarkPermanentNode::CreateTabsCollectionBookmarks(int64_t id) { ++BookmarkPermanentNode::CreateTabsCollectionBookmarks(int64_t id, ++ bool is_account_node) { + // 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))); ++ l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_TABS_COLLECTION_FOLDER_NAME), ++ is_account_node)); +} + BookmarkPermanentNode::BookmarkPermanentNode(int64_t id, @@ -795,12 +798,13 @@ diff --git a/components/bookmarks/browser/bookmark_node.h b/components/bookmarks MOBILE }; -@@ -249,6 +250,8 @@ class BookmarkPermanentNode : public BookmarkNode { +@@ -249,6 +250,9 @@ class BookmarkPermanentNode : public BookmarkNode { static std::unique_ptr CreateMobileBookmarks( int64_t id, bool is_account_node); + static std::unique_ptr CreateTabsCollectionBookmarks( -+ int64_t id); ++ int64_t id, ++ bool is_account_node); // Returns whether the permanent node of type `type` should be visible even // when it is empty (i.e. no children). @@ -850,16 +854,17 @@ diff --git a/components/bookmarks/browser/bookmark_uuids.h b/components/bookmark diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks/browser/model_loader.cc --- a/components/bookmarks/browser/model_loader.cc +++ b/components/bookmarks/browser/model_loader.cc -@@ -74,6 +74,8 @@ std::unique_ptr LoadBookmarks( +@@ -74,6 +74,9 @@ std::unique_ptr LoadBookmarks( std::unique_ptr account_mobile_folder_node = BookmarkPermanentNode::CreateMobileBookmarks( 0, /*is_account_node=*/true); + std::unique_ptr tabs_collection_folder_node = -+ BookmarkPermanentNode::CreateTabsCollectionBookmarks(0); ++ BookmarkPermanentNode::CreateTabsCollectionBookmarks( ++ 0, /*is_account_node=*/true); std::optional root_dict = LoadFileToDict(account_file_path); -@@ -81,7 +83,8 @@ std::unique_ptr LoadBookmarks( +@@ -81,7 +84,8 @@ std::unique_ptr LoadBookmarks( if (root_dict.has_value() && codec.Decode(*root_dict, /*already_assigned_ids=*/{}, account_bb_node.get(), account_other_folder_node.get(), @@ -869,7 +874,7 @@ diff --git a/components/bookmarks/browser/model_loader.cc b/components/bookmarks &sync_metadata_str)) { ids_assigned_to_account_nodes = codec.release_assigned_ids(); -@@ -123,7 +126,8 @@ std::unique_ptr LoadBookmarks( +@@ -123,7 +127,8 @@ std::unique_ptr LoadBookmarks( if (root_dict.has_value() && codec.Decode(*root_dict, std::move(ids_assigned_to_account_nodes), details->bb_node(), details->other_folder_node(), diff --git a/build/patches/Always-use-new-tab-page-for-default-home-page.patch b/build/patches/Always-use-new-tab-page-for-default-home-page.patch index 4d4075a0..ffc6d882 100644 --- a/build/patches/Always-use-new-tab-page-for-default-home-page.patch +++ b/build/patches/Always-use-new-tab-page-for-default-home-page.patch @@ -7,12 +7,13 @@ Ignore any partner-provided home page. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../org/chromium/chrome/browser/homepage/HomepageManager.java | 4 ---- + .../chrome/browser/new_tab_url/DseNewTabUrlManager.java | 1 + .../partnerbookmarks/PartnerBookmarksProviderIterator.java | 1 + .../partnercustomizations/PartnerBrowserCustomizations.java | 2 +- .../org/chromium/components/search_engines/TemplateUrl.java | 1 + .../search_engines/android/template_url_service_android.cc | 1 + - .../always-use-new-tab-page-for-default-home-page.inc | 2 ++ - 6 files changed, 6 insertions(+), 5 deletions(-) + .../always-use-new-tab-page-for-default-home-page.inc | 1 + + 7 files changed, 6 insertions(+), 5 deletions(-) create mode 100755 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/always-use-new-tab-page-for-default-home-page.inc diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java b/chrome/android/java/src/org/chromium/chrome/browser/homepage/HomepageManager.java @@ -29,6 +30,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/Homepa String homepagePartnerDefaultGurlSerialized = ChromeSharedPreferences.getInstance() .readString( +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/new_tab_url/DseNewTabUrlManager.java b/chrome/android/java/src/org/chromium/chrome/browser/new_tab_url/DseNewTabUrlManager.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/new_tab_url/DseNewTabUrlManager.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/new_tab_url/DseNewTabUrlManager.java +@@ -54,6 +54,7 @@ public class DseNewTabUrlManager { + + /** Returns whether the feature NewTabSearchEngineUrlAndroid is enabled. */ + public static boolean isNewTabSearchEngineUrlAndroidEnabled() { ++ if ((true)) return false; + return ChromeSharedPreferences.getInstance() + .readBoolean(ChromePreferenceKeys.IS_EEA_CHOICE_COUNTRY, false) + || (OmniboxFeatures.sOmniboxMobileParityUpdate.isEnabled() diff --git a/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java b/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java --- a/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java +++ b/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java @@ -78,7 +90,6 @@ diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/a new file mode 100755 --- /dev/null +++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/always-use-new-tab-page-for-default-home-page.inc -@@ -0,0 +1,2 @@ -+SET_CROMITE_FEATURE_DISABLED(kNewTabSearchEngineUrlAndroid); +@@ -0,0 +1 @@ +SET_CROMITE_FEATURE_DISABLED(kPartnerCustomizationsUma); -- diff --git a/build/patches/Bromite-auto-updater.patch b/build/patches/Bromite-auto-updater.patch index b313d0d2..28d25df9 100644 --- a/build/patches/Bromite-auto-updater.patch +++ b/build/patches/Bromite-auto-updater.patch @@ -771,8 +771,8 @@ new file mode 100644 + // Passing the endpoint_fetcher ensures the endpoint_fetcher's + // lifetime extends to the callback and is not destroyed + // prematurely (which would result in cancellation of the request). -+ std::unique_ptr endpoint_fetcher, -+ std::unique_ptr endpoint_response) { ++ std::unique_ptr endpoint_fetcher, ++ std::unique_ptr endpoint_response) { + base::android::RunObjectCallbackAndroid( + jcaller, Java_EndpointResponse_createEndpointResponse( + base::android::AttachCurrentThread(), @@ -786,8 +786,8 @@ new file mode 100644 + // Passing the endpoint_fetcher ensures the endpoint_fetcher's + // lifetime extends to the callback and is not destroyed + // prematurely (which would result in cancellation of the request). -+ std::unique_ptr endpoint_fetcher, -+ std::unique_ptr endpoint_response) { ++ std::unique_ptr endpoint_fetcher, ++ std::unique_ptr endpoint_response) { + base::android::RunObjectCallbackAndroid( + jcaller, Java_EndpointHeaderResponse_createEndpointResponse( + base::android::AttachCurrentThread(), @@ -817,7 +817,7 @@ new file mode 100644 + const base::android::JavaParamRef& jcallback) { + std::vector scopes; + base::android::AppendJavaStringArrayToStringVector(env, jscopes, &scopes); -+ auto endpoint_fetcher = std::make_unique( ++ auto endpoint_fetcher = std::make_unique( + Profile::FromJavaObject(jprofile) + ->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(), @@ -849,7 +849,7 @@ new file mode 100644 + jlong jtimeout, jboolean intercept_redirect, + jint jannotation_hash_code, + const base::android::JavaParamRef& jcallback) { -+ auto endpoint_fetcher = std::make_unique( ++ auto endpoint_fetcher = std::make_unique( + Profile::FromJavaObject(jprofile) + ->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(), @@ -876,7 +876,7 @@ new file mode 100644 + jlong jtimeout, jboolean intercept_redirect, + jint jannotation_hash_code, + const base::android::JavaParamRef& jcallback) { -+ auto endpoint_fetcher = std::make_unique( ++ auto endpoint_fetcher = std::make_unique( + Profile::FromJavaObject(jprofile) + ->GetDefaultStoragePartition() + ->GetURLLoaderFactoryForBrowserProcess(), diff --git a/build/patches/Bromite-subresource-adblocker.patch b/build/patches/Bromite-subresource-adblocker.patch index e7378357..9ec8640b 100644 --- a/build/patches/Bromite-subresource-adblocker.patch +++ b/build/patches/Bromite-subresource-adblocker.patch @@ -1596,12 +1596,12 @@ diff --git a/components/subresource_filter/content/browser/content_subresource_f ad_tagging_state); } + -+ const GURL& url(navigation_handle->GetURL()); ++ const GURL& url(navigation_handle.GetURL()); + if (profile_context_->settings_manager()->GetSitePermission(url) != CONTENT_SETTING_ALLOW) { + subresource_filter::ActivationDecision ignored_decision; + mojom::ActivationState ad_filtering_state; + ad_filtering_state.activation_level = profile_interaction_manager_->OnPageActivationComputed( -+ navigation_handle, mojom::ActivationLevel::kEnabled, &ignored_decision); ++ &navigation_handle, mojom::ActivationLevel::kEnabled, &ignored_decision); + throttle->NotifyPageActivationWithRuleset(EnsureRulesetHandle(), + ad_filtering_state); + } diff --git a/build/patches/Disable-Android-Tab-Declutter.patch b/build/patches/Disable-Android-Tab-Declutter.patch index afe6d527..b42e2745 100644 --- a/build/patches/Disable-Android-Tab-Declutter.patch +++ b/build/patches/Disable-Android-Tab-Declutter.patch @@ -5,11 +5,25 @@ Subject: Disable Android Tab Declutter Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- + chrome/android/java/res/xml/main_preferences.xml | 3 ++- .../org/chromium/chrome/browser/tab/TabArchiveSettings.java | 3 ++- .../chrome_feature_list_cc/Disable-Android-Tab-Declutter.inc | 1 + - 2 files changed, 3 insertions(+), 1 deletion(-) + 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-Android-Tab-Declutter.inc +diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml +--- a/chrome/android/java/res/xml/main_preferences.xml ++++ b/chrome/android/java/res/xml/main_preferences.xml +@@ -105,7 +105,8 @@ for the previous order (main_preferences_legacy). --> + android:fragment="org.chromium.chrome.browser.tasks.tab_management.TabsSettings" + android:key="tabs" + android:order="18" +- android:title="@string/tabs_settings_title"/> ++ android:title="@string/tabs_settings_title" ++ app:isPreferenceVisible="false"/> + kWebViewADPFSocManufacturerBlocklist{ + BASE_FEATURE(kWebViewEnableADPFRendererMain, + "WebViewEnableADPFRendererMain", + base::FEATURE_DISABLED_BY_DEFAULT); ++SET_CROMITE_FEATURE_ENABLED(kWebViewEnableADPFRendererMain); + + // If enabled, the GPU Main thread is included in the set of threads reported + // to the HWUI. This feature works only when WebViewEnableADPF is enabled, +@@ -331,6 +332,7 @@ BASE_FEATURE(kEnableInteractiveOnlyADPFRenderer, // If enabled, Chrome includes the Compositor GPU Thread into the // ADPF(Android Dynamic Performance Framework) hint session, instead // of the GPU Main Thread. @@ -41,10 +49,6 @@ diff --git a/components/viz/common/features.cc b/components/viz/common/features. BASE_FEATURE(kEnableADPFGpuCompositorThread, "EnableADPFGpuCompositorThread", base::FEATURE_ENABLED_BY_DEFAULT); -+SET_CROMITE_FEATURE_ENABLED(kEnableADPFRendererMain); - - // If enabled, Chrome puts Renderer Main threads into a separate - // ADPF(Android Dynamic Performance Framework) hint session, and does not diff --git a/components/viz/service/performance_hint/hint_session.cc b/components/viz/service/performance_hint/hint_session.cc --- a/components/viz/service/performance_hint/hint_session.cc +++ b/components/viz/service/performance_hint/hint_session.cc diff --git a/build/patches/Enable-Global-Privacy-Control.patch b/build/patches/Enable-Global-Privacy-Control.patch index 7d49c9b4..fd7a6fe8 100644 --- a/build/patches/Enable-Global-Privacy-Control.patch +++ b/build/patches/Enable-Global-Privacy-Control.patch @@ -8,7 +8,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html chrome/android/chrome_java_sources.gni | 1 + .../android/java/res/xml/gpc_preferences.xml | 15 +++ .../java/res/xml/privacy_preferences.xml | 4 + - .../browser/privacy/settings/GpcSettings.java | 50 ++++++++ + .../browser/privacy/settings/GpcSettings.java | 56 +++++++++ .../privacy/settings/PrivacySettings.java | 9 ++ chrome/app/settings_strings.grdp | 15 +++ .../api/settings_private/prefs_util.cc | 1 + @@ -46,7 +46,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../web_service_worker_fetch_context_impl.cc | 3 + ...ted_or_shared_worker_fetch_context_impl.cc | 3 + .../platform/runtime_enabled_features.json5 | 5 + - 42 files changed, 384 insertions(+) + 42 files changed, 390 insertions(+) create mode 100644 chrome/android/java/res/xml/gpc_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/GpcSettings.java create mode 100644 chrome/browser/resources/settings/privacy_page/gpc_toggle.html @@ -118,7 +118,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting new file mode 100644 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/GpcSettings.java -@@ -0,0 +1,50 @@ +@@ -0,0 +1,56 @@ +package org.chromium.chrome.browser.privacy.settings; + +import android.os.Bundle; @@ -129,6 +129,7 @@ new file mode 100644 +import org.chromium.chrome.R; +import org.chromium.chrome.browser.preferences.Pref; +import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment; ++import org.chromium.components.browser_ui.settings.SettingsFragment; +import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; +import org.chromium.components.browser_ui.settings.SettingsUtils; +import org.chromium.components.prefs.PrefService; @@ -140,6 +141,11 @@ new file mode 100644 + private final ObservableSupplierImpl mPageTitle = new ObservableSupplierImpl<>(); + + @Override ++ public @SettingsFragment.AnimationType int getAnimationType() { ++ return SettingsFragment.AnimationType.PROPERTY; ++ } ++ ++ @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + @@ -480,7 +486,7 @@ diff --git a/chrome/browser/ui/prefs/pref_watcher.h b/chrome/browser/ui/prefs/pr diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -1877,6 +1877,9 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, +@@ -1871,6 +1871,9 @@ void AddPrivacyStrings(content::WebUIDataSource* html_source, {"doNotTrackDialogMessage", IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_TEXT}, {"doNotTrackDialogLearnMoreA11yLabel", IDS_SETTINGS_ENABLE_DO_NOT_TRACK_DIALOG_LEARN_MORE_ACCESSIBILITY_LABEL}, diff --git a/build/patches/Enable-component-updater.patch b/build/patches/Enable-component-updater.patch index 2068f760..64e05995 100644 --- a/build/patches/Enable-component-updater.patch +++ b/build/patches/Enable-component-updater.patch @@ -501,7 +501,7 @@ diff --git a/components/crx_file/crx_verifier.cc b/components/crx_file/crx_verif (accept_publisher_test_key && key_hash == kPublisherTestKeyHash); + + DLOG(INFO) << "---key_hash: " << base::HexEncode(key_hash); -+ DLOG(INFO) << "---publisher_key: " << base::HexEncode(publisher_key); ++ DLOG(INFO) << "---publisher_key: " << base::HexEncode(kPublisherKeyHash); + DLOG(INFO) << "---found_publisher_key: " << found_publisher_key; + DLOG(INFO) << "---sig: " << sig; + DLOG(INFO) << "---key: " << key; diff --git a/build/patches/Enable-native-Android-autofill.patch b/build/patches/Enable-native-Android-autofill.patch index 36d9f3bc..59cba70c 100644 --- a/build/patches/Enable-native-Android-autofill.patch +++ b/build/patches/Enable-native-Android-autofill.patch @@ -15,7 +15,7 @@ See also: https://github.com/bromite/bromite/issues/547 Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../settings/PasswordSettings.java | 83 ++++++++++++++++++- + .../settings/PasswordSettings.java | 83 ++++++++++++++++- .../chrome/browser/settings/MainSettings.java | 3 +- .../chromium/chrome/browser/tab/TabImpl.java | 41 +++++++-- chrome/browser/about_flags.cc | 31 ------- @@ -25,7 +25,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/flag_descriptions.cc | 6 -- chrome/browser/flag_descriptions.h | 3 - .../strings/android_chrome_strings.grd | 6 ++ - .../ui/autofill/autofill_client_provider.cc | 78 +---------------- + .../ui/autofill/autofill_client_provider.cc | 92 +------------------ .../ui/autofill/autofill_client_provider.h | 6 -- chrome/browser/ui/tab_helpers.cc | 4 +- components/android_autofill/browser/BUILD.gn | 1 + @@ -33,11 +33,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/android_autofill_manager.h | 2 + .../autofill/AutofillManagerWrapper.java | 5 +- .../components/autofill/AutofillProvider.java | 7 ++ - .../BrowserSelectionActionMenuDelegate.java | 68 +++++++++++++++ + .../BrowserSelectionActionMenuDelegate.java | 68 ++++++++++++++ .../browser/content_autofill_driver.cc | 11 +++ - .../content/browser/content_autofill_driver.h | 10 +++ + .../content/browser/content_autofill_driver.h | 10 ++ .../content_autofill_driver_factory.cc | 12 +++ - .../content/renderer/autofill_agent.cc | 5 ++ + .../content/renderer/autofill_agent.cc | 5 + .../renderer/password_autofill_agent.cc | 5 +- .../browser/foundations/autofill_driver.h | 2 + .../foundations/autofill_driver_factory.cc | 4 + @@ -47,8 +47,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../autofill/core/common/autofill_features.cc | 2 +- .../autofill/core/common/autofill_features.h | 22 ----- .../autofill/core/common/autofill_prefs.cc | 4 +- - .../autofill/core/common/autofill_prefs.h | 5 ++ - 33 files changed, 276 insertions(+), 165 deletions(-) + .../autofill/core/common/autofill_prefs.h | 5 + + 33 files changed, 276 insertions(+), 179 deletions(-) create mode 100644 components/android_autofill/browser/java/src/org/chromium/components/autofill/BrowserSelectionActionMenuDelegate.java diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java @@ -426,7 +426,7 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/bro #include "chrome/browser/metrics/chrome_metrics_service_accessor.h" #include "components/android_autofill/browser/android_autofill_client.h" #endif // BUILDFLAG(IS_ANDROID) -@@ -24,67 +22,6 @@ +@@ -24,85 +22,13 @@ namespace autofill { namespace { @@ -491,11 +491,14 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/bro -#endif // BUILDFLAG(IS_ANDROID) -} - - #if BUILDFLAG(IS_ANDROID) - std::string GetTrialGroupForPackage() { - JNIEnv* env = base::android::AttachCurrentThread(); -@@ -95,14 +32,11 @@ std::string GetTrialGroupForPackage() { - +-#if BUILDFLAG(IS_ANDROID) +-std::string GetTrialGroupForPackage() { +- JNIEnv* env = base::android::AttachCurrentThread(); +- return base::android::ConvertJavaStringToUTF8( +- env, Java_AutofillClientProviderUtils_getTrialGroupForPackage(env)); +-} +-#endif +- } // namespace -AutofillClientProvider::AutofillClientProvider(PrefService* prefs) @@ -511,7 +514,7 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/bro if (base::FeatureList::IsEnabled( autofill::features::kAutofillVirtualViewStructureAndroid) && base::FeatureList::IsEnabled( -@@ -126,15 +60,7 @@ AutofillClientProvider::~AutofillClientProvider() = default; +@@ -126,15 +52,7 @@ AutofillClientProvider::~AutofillClientProvider() = default; void AutofillClientProvider::CreateClientForWebContents( content::WebContents* web_contents) { @@ -527,6 +530,19 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.cc b/chrome/bro } #if BUILDFLAG(IS_ANDROID) +@@ -146,12 +64,6 @@ void AutofillClientProvider::RegisterSyntheticFieldTrialForPackage( + } + + void AutofillClientProvider::DelayRegisteringFieldTrialForA11yDeprecation() { +- base::ThreadPool::PostTaskAndReplyWithResult( +- FROM_HERE, {base::TaskPriority::LOWEST}, +- base::BindOnce(&GetTrialGroupForPackage), +- base::BindOnce( +- &AutofillClientProvider::RegisterSyntheticFieldTrialForPackage, +- weak_ptr_factory_.GetWeakPtr())); + } + #endif // BUILDFLAG(IS_ANDROID) + diff --git a/chrome/browser/ui/autofill/autofill_client_provider.h b/chrome/browser/ui/autofill/autofill_client_provider.h --- a/chrome/browser/ui/autofill/autofill_client_provider.h +++ b/chrome/browser/ui/autofill/autofill_client_provider.h diff --git a/build/patches/Enable-search-engine-settings-desktop-ui.patch b/build/patches/Enable-search-engine-settings-desktop-ui.patch index e9892829..941d4ce1 100644 --- a/build/patches/Enable-search-engine-settings-desktop-ui.patch +++ b/build/patches/Enable-search-engine-settings-desktop-ui.patch @@ -43,7 +43,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html chrome/browser/ui/webui/favicon_source.h | 2 + .../webui/settings/search_engines_handler.cc | 28 +- .../webui/settings/search_engines_handler.h | 3 +- - .../settings_localized_strings_provider.cc | 8 + + .../settings_localized_strings_provider.cc | 8 +- ...ings_localized_strings_provider_android.cc | 200 ++++++++++++++ ...tings_localized_strings_provider_android.h | 19 ++ .../ui/webui/settings/settings_ui_android.cc | 126 +++++++++ @@ -78,7 +78,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html ui/webui/resources/images/BUILD.gn | 2 +- ui/webui/resources/js/BUILD.gn | 2 +- ui/webui/resources/js/load_time_data.ts | 17 +- - 71 files changed, 1161 insertions(+), 71 deletions(-) + 71 files changed, 1160 insertions(+), 72 deletions(-) create mode 100644 chrome/app/settings_strings_android.grdp create mode 100644 chrome/browser/search_engines/android/java/res/layout/search_engine_layout.xml create mode 100644 chrome/browser/ui/webui/settings/settings_localized_strings_provider_android.cc @@ -1365,20 +1365,7 @@ diff --git a/chrome/browser/ui/webui/settings/search_engines_handler.h b/chrome/ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc --- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc +++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc -@@ -143,6 +143,12 @@ - #include "chrome/browser/ui/webui/settings/system_handler.h" - #endif - -+#if BUILDFLAG(IS_ANDROID) -+ html_source->AddString("chromeAndroid", "chrome-android"); -+#else -+ html_source->AddString("chromeAndroid", ""); -+#endif -+ - #if BUILDFLAG(IS_LINUX) - #include "ui/display/screen.h" - #endif -@@ -2458,6 +2464,8 @@ void AddSearchEnginesStrings(content::WebUIDataSource* html_source) { +@@ -2458,6 +2458,8 @@ void AddSearchEnginesStrings(content::WebUIDataSource* html_source) { {"searchEnginesQueryURL", IDS_SETTINGS_SEARCH_ENGINES_QUERY_URL}, {"searchEnginesQueryURLExplanation", IDS_SETTINGS_SEARCH_ENGINES_QUERY_URL_EXPLANATION}, @@ -1387,6 +1374,19 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide {"searchEnginesMakeDefault", IDS_SETTINGS_SEARCH_ENGINES_MAKE_DEFAULT}, {"searchEnginesActivate", IDS_SETTINGS_SEARCH_ENGINES_ACTIVATE}, {"searchEnginesDeactivate", IDS_SETTINGS_SEARCH_ENGINES_DEACTIVATE}, +@@ -3805,7 +3807,11 @@ void AddLocalizedStrings(content::WebUIDataSource* html_source, + AddSiteSettingsStrings(html_source, profile); + AddSiteDataPageStrings(html_source, profile); + AddStorageAccessStrings(html_source); +- ++#if BUILDFLAG(IS_ANDROID) ++ html_source->AddString("chromeAndroid", "chrome-android"); ++#else ++ html_source->AddString("chromeAndroid", ""); ++#endif + #if !BUILDFLAG(IS_CHROMEOS) + AddDefaultBrowserStrings(html_source); + AddImportDataStrings(html_source); diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider_android.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider_android.cc new file mode 100644 --- /dev/null diff --git a/build/patches/Experimental-user-scripts-support.patch b/build/patches/Experimental-user-scripts-support.patch index 906b604d..335423a4 100644 --- a/build/patches/Experimental-user-scripts-support.patch +++ b/build/patches/Experimental-user-scripts-support.patch @@ -61,7 +61,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../user_scripts/ScriptListBaseAdapter.java | 163 ++++ .../user_scripts/ScriptListPreference.java | 171 ++++ .../user_scripts/UserScriptsBridge.java | 212 +++++ - .../user_scripts/UserScriptsPreferences.java | 116 +++ + .../user_scripts/UserScriptsPreferences.java | 122 +++ .../user_scripts/android/java_sources.gni | 18 + .../android/user_scripts_bridge.cc | 173 ++++ .../android/user_scripts_bridge.h | 31 + @@ -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 | 46 + - .../browser/user_script_loader.cc | 702 +++++++++++++++ + .../browser/user_script_loader.cc | 700 +++++++++++++++ .../user_scripts/browser/user_script_loader.h | 168 ++++ .../browser/user_script_pref_info.cc | 34 + .../browser/user_script_pref_info.h | 72 ++ @@ -136,7 +136,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../Experimental-user-scripts-support.inc | 13 + ipc/ipc_message_start.h | 1 + tools/gritsettings/resource_ids.spec | 6 + - 109 files changed, 9356 insertions(+), 3 deletions(-) + 109 files changed, 9360 insertions(+), 3 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 @@ -2056,7 +2056,7 @@ diff --git a/components/user_scripts/android/java/src/org/chromium/components/us new file mode 100755 --- /dev/null +++ b/components/user_scripts/android/java/src/org/chromium/components/user_scripts/UserScriptsPreferences.java -@@ -0,0 +1,116 @@ +@@ -0,0 +1,122 @@ +/* + This file is part of Bromite. + @@ -2093,6 +2093,7 @@ new file mode 100755 +import org.chromium.ui.base.ActivityWindowAndroid; + +import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; ++import org.chromium.components.browser_ui.settings.SettingsFragment; +import org.chromium.components.browser_ui.settings.SettingsUtils; +import org.chromium.components.browser_ui.settings.TextMessagePreference; + @@ -2101,7 +2102,7 @@ new file mode 100755 + +public class UserScriptsPreferences + extends PreferenceFragmentCompat -+ implements SettingsUtils.ISupportHelpAndFeedback { ++ implements SettingsUtils.ISupportHelpAndFeedback, SettingsFragment { + + private static final String PREF_ENABLED_SWITCH = "enabled_switch"; + private static final String PREF_SCRIPTLISTPREFERENCE = "script_list"; @@ -2111,6 +2112,11 @@ new file mode 100755 + private FragmentWindowAndroid mWindowAndroid; + + @Override ++ public @AnimationType int getAnimationType() { ++ return AnimationType.PROPERTY; ++ } ++ ++ @Override + public void onDestroy() { + if (mWindowAndroid != null) mWindowAndroid.destroy(); + super.onDestroy(); @@ -2848,7 +2854,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,702 @@ +@@ -0,0 +1,700 @@ +/* + This file is part of Bromite. + @@ -3110,9 +3116,7 @@ new file mode 100755 + file->set_content(content); + + // create SHA256 of file -+ char raw[crypto::kSHA256Length] = {0}; -+ crypto::SHA256HashString(content, raw, crypto::kSHA256Length); -+ std::string key = base::Base64Encode(std::string_view(raw, crypto::kSHA256Length)); ++ std::string key = base::Base64Encode(crypto::SHA256HashString(content)); + file->set_key(key); + + file->set_url(GURL(base::StrCat({"https://userscripts/file/", key, ".js"}))); diff --git a/build/patches/Eyeo-Adblock-for-Cromite.patch b/build/patches/Eyeo-Adblock-for-Cromite.patch index ac15094c..dae80639 100644 --- a/build/patches/Eyeo-Adblock-for-Cromite.patch +++ b/build/patches/Eyeo-Adblock-for-Cromite.patch @@ -8,7 +8,7 @@ suit Cromite logic. .../android/java/res/xml/main_preferences.xml | 19 +- .../adblock_chrome_content_browser_client.cc | 6 + .../adblock_chrome_content_browser_client.h | 4 + - chrome/browser/adblock/android/BUILD.gn | 2 +- + chrome/browser/adblock/android/BUILD.gn | 3 +- .../adblock/android/adblock_strings.grd | 56 +- .../java/res/layout/adblock_custom_item.xml | 14 +- .../layout/adblock_filter_lists_list_item.xml | 15 + @@ -16,14 +16,15 @@ suit Cromite logic. .../AdblockAllowedDomainsFragment.java | 7 +- .../AdblockCustomFilterListsFragment.java | 37 +- .../AdblockCustomFiltersFragment.java | 7 +- - .../settings/AdblockCustomItemFragment.java | 20 +- + .../settings/AdblockCustomItemFragment.java | 26 +- .../settings/AdblockFilterListsAdapter.java | 6 + - .../settings/AdblockSettingsFragment.java | 79 +- + .../settings/AdblockFilterListsFragment.java | 8 +- + .../settings/AdblockSettingsFragment.java | 96 +- .../browser/chrome_content_browser_client.cc | 6 +- .../browser/chrome_content_browser_client.h | 6 +- .../adblock_private/adblock_private_api.cc | 76 +- .../api/adblock_private/adblock_private_api.h | 49 + - .../eyeo_filtering_private_api.cc | 24 +- + .../eyeo_filtering_private_api.cc | 25 +- .../api/settings_private/prefs_util.cc | 14 + ...hrome_browser_main_extra_parts_profiles.cc | 2 - chrome/browser/resources/settings/BUILD.gn | 2 + @@ -125,7 +126,7 @@ suit Cromite logic. .../renderer/core/exported/web_document.cc | 13 +- .../blink/renderer/core/html/html_element.cc | 8 +- .../definitions/adblock_private.d.ts | 14 + - 120 files changed, 9192 insertions(+), 617 deletions(-) + 121 files changed, 9224 insertions(+), 618 deletions(-) rename chrome/browser/adblock/android/java/res/xml/{adblock_preferences.xml => eyeo_adblock_preferences.xml} (59%) create mode 100644 chrome/browser/resources/settings/adblock_page/adblock_page.html create mode 100644 chrome/browser/resources/settings/adblock_page/adblock_page.ts @@ -166,7 +167,7 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j +@@ -135,6 +121,11 @@ for the previous order (main_preferences_legacy). --> android:key="adblock" android:order="13" android:title="@string/prefs_adblock"/> @@ -214,7 +215,15 @@ diff --git a/chrome/browser/adblock/adblock_chrome_content_browser_client.h b/ch diff --git a/chrome/browser/adblock/android/BUILD.gn b/chrome/browser/adblock/android/BUILD.gn --- a/chrome/browser/adblock/android/BUILD.gn +++ b/chrome/browser/adblock/android/BUILD.gn -@@ -148,7 +148,7 @@ android_resources("java_ui_resources") { +@@ -113,6 +113,7 @@ android_library("adblock_ui_java") { + "//build/android:build_java", + "//chrome/browser/preferences:java", + "//chrome/browser/profiles/android:java", ++ "//chrome/browser/settings:java", + "//components/adblock/android:adblock_controller_java", + "//components/browser_ui/settings/android:java", + "//components/prefs/android:java", +@@ -148,7 +149,7 @@ android_resources("java_ui_resources") { "java/res/layout/adblock_custom_item_settings.xml", "java/res/layout/adblock_filter_lists_list_item.xml", "java/res/xml/adblock_more_options.xml", @@ -550,16 +559,32 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockCustomItemFragment.java b/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockCustomItemFragment.java --- a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockCustomItemFragment.java +++ b/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockCustomItemFragment.java -@@ -33,7 +33,7 @@ import org.chromium.chrome.browser.adblock.R; +@@ -30,10 +30,11 @@ import android.widget.TextView; + import androidx.preference.PreferenceFragmentCompat; + + import org.chromium.chrome.browser.adblock.R; ++import org.chromium.components.browser_ui.settings.SettingsFragment; import java.util.List; -public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat { -+public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat { ++public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat implements SettingsFragment { private EditText mItem; private ImageView mAddButton; private ListView mListView; -@@ -75,7 +75,7 @@ public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat +@@ -41,6 +42,11 @@ public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat + + public AdblockCustomItemFragment() {} + ++ @Override ++ public @AnimationType int getAnimationType() { ++ return AnimationType.PROPERTY; ++ } ++ + @Override + public View onCreateView( + LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { +@@ -75,7 +81,7 @@ public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat protected abstract void removeItemImpl(String item); @@ -568,7 +593,7 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser protected abstract String getCustomItemTextViewText(); -@@ -90,10 +90,12 @@ public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat +@@ -90,10 +96,12 @@ public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat // Holder for listview items private class Holder { TextView mItem; @@ -581,7 +606,7 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser mRemoveButton = rootView.findViewById(R.id.fragment_adblock_custom_item_remove); mRemoveButton.setContentDescription( AdblockCustomItemFragment.this.getCustomItemRemoveButtonContentDescription()); -@@ -107,6 +109,7 @@ public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat +@@ -107,6 +115,7 @@ public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat String item = (String) v.getTag(); removeItemImpl(item); mAdapter.notifyDataSetChanged(); @@ -589,7 +614,7 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser } }; -@@ -134,16 +137,23 @@ public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat +@@ -134,16 +143,23 @@ public abstract class AdblockCustomItemFragment extends PreferenceFragmentCompat convertView.setTag(new Holder(convertView)); } @@ -643,10 +668,34 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser return view; } +diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockFilterListsFragment.java b/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockFilterListsFragment.java +--- a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockFilterListsFragment.java ++++ b/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockFilterListsFragment.java +@@ -26,8 +26,9 @@ import androidx.fragment.app.ListFragment; + import org.chromium.chrome.browser.adblock.R; + import org.chromium.chrome.browser.profiles.ProfileManager; + import org.chromium.components.adblock.AdblockController; ++import org.chromium.components.browser_ui.settings.SettingsFragment; + +-public class AdblockFilterListsFragment extends ListFragment { ++public class AdblockFilterListsFragment extends ListFragment implements SettingsFragment { + private AdblockFilterListsAdapter mFilterListsAdapter; + + @Override +@@ -54,4 +55,9 @@ public class AdblockFilterListsFragment extends ListFragment { + super.onStart(); + mFilterListsAdapter.start(); + } ++ ++ @Override ++ public @AnimationType int getAnimationType() { ++ return AnimationType.PROPERTY; ++ } + } diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockSettingsFragment.java b/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockSettingsFragment.java --- a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockSettingsFragment.java +++ b/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser/adblock/settings/AdblockSettingsFragment.java -@@ -13,6 +13,7 @@ +@@ -13,27 +13,46 @@ package org.chromium.chrome.browser.adblock.settings; import android.os.Bundle; @@ -654,20 +703,25 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; -@@ -20,20 +21,33 @@ import androidx.preference.PreferenceFragmentCompat; + ++import org.chromium.base.supplier.ObservableSupplier; ++import org.chromium.base.supplier.ObservableSupplierImpl; ++ import org.chromium.build.BuildConfig; import org.chromium.chrome.browser.adblock.R; import org.chromium.chrome.browser.preferences.Pref; +import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.ProfileManager; ++import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment; import org.chromium.components.adblock.AdblockController; import org.chromium.components.browser_ui.settings.ChromeSwitchPreference; ++import org.chromium.components.browser_ui.settings.SettingsFragment; import org.chromium.components.user_prefs.UserPrefs; -public class AdblockSettingsFragment extends PreferenceFragmentCompat - implements Preference.OnPreferenceChangeListener { +public class AdblockSettingsFragment -+ extends PreferenceFragmentCompat implements Preference.OnPreferenceChangeListener { ++ extends ChromeBaseSettingsFragment implements Preference.OnPreferenceChangeListener { private ChromeSwitchPreference mAdblockEnabled; private ChromeSwitchPreference mAcceptableAdsEnabled; private ChromeSwitchPreference mAutoInstalledEnabled; @@ -691,9 +745,22 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser private static final String SETTINGS_ENABLED_KEY = "fragment_adblock_settings_enabled_key"; private static final String SETTINGS_FILTER_LISTS_KEY = "fragment_adblock_settings_filter_lists_key"; -@@ -52,9 +66,21 @@ public class AdblockSettingsFragment extends PreferenceFragmentCompat +@@ -51,10 +70,34 @@ public class AdblockSettingsFragment extends PreferenceFragmentCompat + private static final int ON_OFF_TOGGLE_COUNT_TIME_WINDOW_MS = 3000; private long mOnOffTogleTimestamp; ++ private final ObservableSupplierImpl mPageTitle = new ObservableSupplierImpl<>(); ++ ++ @Override ++ public @SettingsFragment.AnimationType int getAnimationType() { ++ return SettingsFragment.AnimationType.PROPERTY; ++ } ++ ++ @Override ++ public ObservableSupplier getPageTitle() { ++ return mPageTitle; ++ } ++ private void bindPreferences() { + mStartUpdate = findPreference(START_UPDATE_KEY); + mStartUpdate.setOnPreferenceClickListener(preference -> { @@ -713,7 +780,7 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser mAutoInstalledEnabled = (ChromeSwitchPreference) findPreference(SETTINGS_AUTO_INSTALL_ENABLED_KEY); mAllowedDomains = findPreference(SETTINGS_ALLOWED_DOMAINS_KEY); -@@ -62,35 +88,43 @@ public class AdblockSettingsFragment extends PreferenceFragmentCompat +@@ -62,35 +105,43 @@ public class AdblockSettingsFragment extends PreferenceFragmentCompat } private boolean areMoreOptionsEnabled() { @@ -769,7 +836,7 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser mAutoInstalledEnabled.setOnPreferenceChangeListener(this); } -@@ -122,7 +156,7 @@ public class AdblockSettingsFragment extends PreferenceFragmentCompat +@@ -122,7 +173,7 @@ public class AdblockSettingsFragment extends PreferenceFragmentCompat @Override public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { @@ -778,7 +845,7 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser bindPreferences(); synchronizePreferences(); } -@@ -137,19 +171,16 @@ public class AdblockSettingsFragment extends PreferenceFragmentCompat +@@ -137,19 +188,16 @@ public class AdblockSettingsFragment extends PreferenceFragmentCompat public boolean onPreferenceChange(Preference preference, Object newValue) { if (preference.getKey().equals(SETTINGS_ENABLED_KEY)) { AdblockController.getInstance(ProfileManager.getLastUsedRegularProfile()) @@ -806,7 +873,7 @@ diff --git a/chrome/browser/adblock/android/java/src/org/chromium/chrome/browser diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc -@@ -6324,7 +6324,9 @@ ChromeContentBrowserClient:: +@@ -6349,7 +6349,9 @@ ChromeContentBrowserClient:: } bool ChromeContentBrowserClient::WillInterceptWebSocket( @@ -817,7 +884,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch #if BUILDFLAG(ENABLE_EXTENSIONS_CORE) if (!frame) { return false; -@@ -6347,9 +6349,11 @@ bool ChromeContentBrowserClient::WillInterceptWebSocket( +@@ -6372,9 +6374,11 @@ bool ChromeContentBrowserClient::WillInterceptWebSocket( } void ChromeContentBrowserClient::CreateWebSocket( @@ -1029,15 +1096,18 @@ diff --git a/chrome/browser/extensions/api/adblock_private/adblock_private_api.h diff --git a/chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering_private_api.cc b/chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering_private_api.cc --- a/chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering_private_api.cc +++ b/chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering_private_api.cc -@@ -17,6 +17,7 @@ +@@ -17,8 +17,10 @@ #include "base/containers/flat_map.h" #include "base/i18n/time_formatting.h" +#include "base/strings/utf_string_conversions.h" #include "base/logging.h" #include "base/no_destructor.h" ++#include "base/strings/stringprintf.h" #include "base/values.h" -@@ -30,6 +31,7 @@ + #include "chrome/browser/extensions/extension_tab_util.h" + #include "chrome/browser/profiles/profile.h" +@@ -30,6 +32,7 @@ #include "components/adblock/core/common/adblock_prefs.h" #include "components/adblock/core/common/adblock_utils.h" #include "components/adblock/core/common/content_type.h" @@ -1045,7 +1115,7 @@ diff --git a/chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering #include "components/adblock/core/configuration/filtering_configuration.h" #include "components/adblock/core/configuration/persistent_filtering_configuration.h" #include "components/adblock/core/session_stats.h" -@@ -95,24 +97,6 @@ std::vector CopySessionsStats( +@@ -95,24 +98,6 @@ std::vector CopySessionsStats( return result; } @@ -1070,7 +1140,7 @@ diff --git a/chrome/browser/extensions/api/eyeo_filtering_private/eyeo_filtering std::vector CopySubscriptions( const std::vector> current_subscriptions) { -@@ -123,12 +107,12 @@ std::vector CopySubscriptions( +@@ -123,12 +108,12 @@ std::vector CopySubscriptions( js_sub.title = sub->GetTitle(); js_sub.current_version = sub->GetCurrentVersion(); js_sub.installation_state = diff --git a/build/patches/Force-use-vpython3-for-some-scripts.patch b/build/patches/Force-use-vpython3-for-some-scripts.patch index a4684cf6..486c65e6 100644 --- a/build/patches/Force-use-vpython3-for-some-scripts.patch +++ b/build/patches/Force-use-vpython3-for-some-scripts.patch @@ -10,9 +10,10 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- components/metrics/generate_expired_histograms_array.gni | 7 +++++-- components/variations/field_trial_config/BUILD.gn | 4 +++- + tools/grit/grit_rule.gni | 4 +++- tools/json_to_struct/json_to_struct.gni | 4 +++- tools/metrics/generate_allowlist_from_histograms_file.gni | 5 +++-- - 4 files changed, 14 insertions(+), 6 deletions(-) + 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/components/metrics/generate_expired_histograms_array.gni b/components/metrics/generate_expired_histograms_array.gni --- a/components/metrics/generate_expired_histograms_array.gni @@ -59,6 +60,27 @@ diff --git a/components/variations/field_trial_config/BUILD.gn b/components/vari rebase_path(source, root_build_dir), "--destbase=" + rebase_path(target_gen_dir, root_build_dir), "--namespace=variations", +diff --git a/tools/grit/grit_rule.gni b/tools/grit/grit_rule.gni +--- a/tools/grit/grit_rule.gni ++++ b/tools/grit/grit_rule.gni +@@ -154,7 +154,7 @@ template("grit") { + + _grit_custom_target = target_name + "_grit" + action(_grit_custom_target) { +- script = "//tools/grit/grit.py" ++ script = "//build/gn_run_binary.py" + inputs = [ invoker.source ] + + testonly = defined(invoker.testonly) && invoker.testonly +@@ -197,6 +197,8 @@ template("grit") { + } + + args = [ ++ rebase_path("//third_party/depot_tools/vpython3"), ++ rebase_path("//tools/grit/grit.py"), + "-i", + _rebased_source_path, + "build", diff --git a/tools/json_to_struct/json_to_struct.gni b/tools/json_to_struct/json_to_struct.gni --- a/tools/json_to_struct/json_to_struct.gni +++ b/tools/json_to_struct/json_to_struct.gni diff --git a/build/patches/Move-navigation-bar-to-bottom.patch b/build/patches/Move-navigation-bar-to-bottom.patch index f6d38d39..ad172016 100644 --- a/build/patches/Move-navigation-bar-to-bottom.patch +++ b/build/patches/Move-navigation-bar-to-bottom.patch @@ -43,7 +43,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../modaldialog/ChromeTabModalPresenter.java | 2 +- .../chrome/browser/ntp/NewTabPage.java | 14 +- .../chrome/browser/ntp/NewTabPageLayout.java | 10 +- - .../chrome/browser/ntp/RecentTabsPage.java | 30 +++- + .../chrome/browser/ntp/RecentTabsPage.java | 31 +++- .../browser/searchwidget/SearchActivity.java | 11 ++ .../settings/FragmentDependencyProvider.java | 5 + .../StatusIndicatorCoordinator.java | 9 + @@ -96,9 +96,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../res/xml/accessibility_preferences.xml | 8 + .../accessibility/AccessibilitySettings.java | 27 +++ .../AccessibilitySettingsDelegate.java | 9 + + components/viz/common/features.cc | 2 + .../render_widget_host_view_android.cc | 3 + .../Move-navigation-bar-to-bottom.inc | 17 ++ - 85 files changed, 1046 insertions(+), 77 deletions(-) + 86 files changed, 1049 insertions(+), 77 deletions(-) create mode 100644 chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/ReversedLinearLayout.java create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Move-navigation-bar-to-bottom.inc @@ -1406,7 +1407,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsP mBrowserControlsStateProvider = browserControlsStateProvider; mBrowserControlsStateProvider.addObserver(this); onBottomControlsHeightChanged( -@@ -118,14 +120,22 @@ public class RecentTabsPage +@@ -118,14 +120,23 @@ public class RecentTabsPage mTabStripHeightSupplier = tabStripHeightSupplier; mView.setPadding(0, mTabStripHeightSupplier.get(), 0, 0); @@ -1417,6 +1418,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsP + 0, + mView.getPaddingRight(), + mView.getPaddingBottom()); ++ mTabStripHeightChangeCallback = newHeight -> { }; + } else { + mTabStripHeightChangeCallback = newHeight -> @@ -1431,7 +1433,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsP mEdgeToEdgeSupplier = edgeToEdgeSupplier; if (EdgeToEdgeUtils.isDrawKeyNativePageToEdgeEnabled()) { mPadAdjuster = -@@ -337,7 +347,7 @@ public class RecentTabsPage +@@ -337,7 +348,7 @@ public class RecentTabsPage private void updateMargins() { final View recentTabsRoot = mView.findViewById(R.id.recent_tabs_root); @@ -1440,7 +1442,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsP final int contentOffset = mBrowserControlsStateProvider.getContentOffset(); ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) recentTabsRoot.getLayoutParams(); -@@ -353,9 +363,17 @@ public class RecentTabsPage +@@ -353,9 +364,17 @@ public class RecentTabsPage // If the content offset is different from the margin, we use translationY to position the // view in line with the content offset. @@ -3112,6 +3114,25 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c /** * @return The BrowserContextHandle that should be used to read and update settings. */ +diff --git a/components/viz/common/features.cc b/components/viz/common/features.cc +--- a/components/viz/common/features.cc ++++ b/components/viz/common/features.cc +@@ -40,6 +40,7 @@ namespace features { + BASE_FEATURE(kAndroidBrowserControlsInViz, + "AndroidBrowserControlsInViz", + base::FEATURE_ENABLED_BY_DEFAULT); ++SET_CROMITE_FEATURE_DISABLED(kAndroidBrowserControlsInViz); + + // If this flag is enabled, AndroidBrowserControlsInViz and + // BottomControlsRefactor with the "Dispatch yOffset" variation must also be +@@ -47,6 +48,7 @@ BASE_FEATURE(kAndroidBrowserControlsInViz, + BASE_FEATURE(kAndroidBcivBottomControls, + "AndroidBcivBottomControls", + base::FEATURE_ENABLED_BY_DEFAULT); ++SET_CROMITE_FEATURE_DISABLED(kAndroidBcivBottomControls); + + #endif // BUILDFLAG(IS_ANDROID) + diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/content/browser/renderer_host/render_widget_host_view_android.cc --- a/content/browser/renderer_host/render_widget_host_view_android.cc +++ b/content/browser/renderer_host/render_widget_host_view_android.cc 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 fe7d981d..b4af6dde 100644 --- a/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch +++ b/build/patches/Partitioning-all-cookies-by-top-frame-domain.patch @@ -13,7 +13,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../extensions/api/cookies/cookies_helpers.cc | 4 ++ .../net/profile_network_context_service.cc | 12 ++-- .../privacy_sandbox_settings_delegate.cc | 1 + - ...storage_access_grant_permission_context.cc | 12 ++++ + ...storage_access_grant_permission_context.cc | 13 +++++ .../experiment/experiment_manager_impl.cc | 1 + .../strings/android/site_settings.grdp | 4 +- .../core/browser/cookie_settings.cc | 4 +- @@ -21,7 +21,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html ...ioning-all-cookies-by-top-frame-domain.inc | 4 ++ ...ioning-all-cookies-by-top-frame-domain.inc | 1 + ...ioning-all-cookies-by-top-frame-domain.inc | 1 + - ...ioning-all-cookies-by-top-frame-domain.inc | 16 ++++++ + ...ioning-all-cookies-by-top-frame-domain.inc | 15 +++++ ...ioning-all-cookies-by-top-frame-domain.inc | 1 + net/cookies/canonical_cookie.cc | 3 - net/cookies/cookie_deletion_info.cc | 3 +- @@ -114,7 +114,15 @@ diff --git a/chrome/browser/privacy_sandbox/privacy_sandbox_settings_delegate.cc diff --git a/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc b/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc --- a/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc +++ b/chrome/browser/storage_access_api/storage_access_grant_permission_context.cc -@@ -465,6 +465,18 @@ void StorageAccessGrantPermissionContext::CheckForAutoGrantOrAutoDenial( +@@ -220,6 +220,7 @@ FederatedIdentityPermissionContext* IsAutograntViaFedCmAllowed( + const url::Origin& embedding_origin, + const net::SchemefulSite& embedding_site, + const net::SchemefulSite& requesting_site) { ++ if ((true)) return nullptr; + CHECK(browser_context); + if (!rfh->IsFeatureEnabled( + network::mojom::PermissionsPolicyFeature::kIdentityCredentialsGet)) { +@@ -465,6 +466,18 @@ void StorageAccessGrantPermissionContext::CheckForAutoGrantOrAutoDenial( std::unique_ptr request_data, permissions::BrowserPermissionCallback callback, net::FirstPartySetMetadata metadata) { @@ -297,14 +305,13 @@ diff --git a/cromite_flags/net/base/features_cc/Partitioning-all-cookies-by-top- new file mode 100644 --- /dev/null +++ b/cromite_flags/net/base/features_cc/Partitioning-all-cookies-by-top-frame-domain.inc -@@ -0,0 +1,16 @@ +@@ -0,0 +1,15 @@ +SET_CROMITE_FEATURE_ENABLED(kCookieDomainRejectNonASCII); + +SET_CROMITE_FEATURE_DISABLED(kForceThirdPartyCookieBlocking); +SET_CROMITE_FEATURE_DISABLED(kThirdPartyPartitionedStorageAllowedByDefault); + +SET_CROMITE_FEATURE_ENABLED(kCookieSameSiteConsidersRedirectChain); -+SET_CROMITE_FEATURE_ENABLED(kSchemefulSameSite); +SET_CROMITE_FEATURE_ENABLED(kSameSiteDefaultChecksMethodRigorously); +SET_CROMITE_FEATURE_ENABLED(kTimeLimitedInsecureCookies); + diff --git a/build/patches/Private-network-access-content-settings.patch b/build/patches/Private-network-access-content-settings.patch index 110e02f6..85762c64 100644 --- a/build/patches/Private-network-access-content-settings.patch +++ b/build/patches/Private-network-access-content-settings.patch @@ -7,29 +7,75 @@ user choice in desktop platforms. License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- - .../browser/chrome_content_browser_client.cc | 2 +- + .../browser/chrome_content_browser_client.cc | 36 ++++++- ...eInsecurePrivateNetworkContentSetting.java | 93 +++++++++++++++++++ .../insecure_private_network.grdp | 18 ++++ - .../insecure_private_network.inc | 16 ++++ + .../insecure_private_network.inc | 25 +++++ + .../INSECURE_PRIVATE_NETWORK.inc | 3 + services/network/cors/cors_url_loader.cc | 8 +- .../network/private_network_access_checker.cc | 16 +++- - 6 files changed, 144 insertions(+), 9 deletions(-) + 7 files changed, 188 insertions(+), 11 deletions(-) create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteInsecurePrivateNetworkContentSetting.java create mode 100644 components/browser_ui/strings/bromite_content_settings/insecure_private_network.grdp create mode 100644 components/content_settings/core/browser/bromite_content_settings/insecure_private_network.inc + create mode 100644 components/content_settings/core/common/bromite_content_settings/INSECURE_PRIVATE_NETWORK.inc diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc --- a/chrome/browser/chrome_content_browser_client.cc +++ b/chrome/browser/chrome_content_browser_client.cc -@@ -7529,7 +7529,7 @@ ChromeContentBrowserClient::ShouldOverridePrivateNetworkRequestPolicy( +@@ -1335,6 +1335,31 @@ bool IsDefaultSearchEngine(Profile* profile, const GURL& url) { + url); + } + ++bool ShouldAllowInsecurePrivateNetworkRequests( ++ const HostContentSettingsMap* map, ++ const url::Origin& origin) { ++ // Derive the base URL from the origin, since HostContentSettingsMap is keyed ++ // by URL and not by origin. However, this setting is conceptually keyed by ++ // origin, hence its public API uses url::Origin. ++ // ++ // This returns the default-constructed GURL for opaque origins, which should ++ // not match any content settings. ++ const GURL url = origin.GetURL(); ++ ++ const ContentSetting setting = map->GetContentSetting( ++ url, url, ContentSettingsType::INSECURE_PRIVATE_NETWORK); ++ ++ switch (setting) { ++ case CONTENT_SETTING_ALLOW: ++ return true; ++ case CONTENT_SETTING_BLOCK: ++ return false; ++ default: ++ NOTREACHED() ++ << "Invalid content setting for insecure private network requests: " ++ << setting; ++ } ++} + } // namespace + + // static +@@ -7528,12 +7553,17 @@ content::ContentBrowserClient::PrivateNetworkRequestPolicyOverride + ChromeContentBrowserClient::ShouldOverridePrivateNetworkRequestPolicy( content::BrowserContext* browser_context, const url::Origin& origin) { - #if BUILDFLAG(IS_ANDROID) +-#if BUILDFLAG(IS_ANDROID) - if (base::android::BuildInfo::GetInstance()->is_automotive()) { ++ if (HostContentSettingsMap* service = ++ HostContentSettingsMapFactory::GetForProfile(browser_context)) { ++ if (ShouldAllowInsecurePrivateNetworkRequests(service, origin)) { ++ return content::ContentBrowserClient:: ++ PrivateNetworkRequestPolicyOverride::kForceAllow; ++ } ++ } + if ((true)) { return content::ContentBrowserClient::PrivateNetworkRequestPolicyOverride:: kBlockInsteadOfWarn; } +-#endif + + // TODO(crbug.com/400455013): Add LNA support on Android + #if !BUILDFLAG(IS_ANDROID) diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteInsecurePrivateNetworkContentSetting.java b/components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteInsecurePrivateNetworkContentSetting.java new file mode 100644 --- /dev/null @@ -155,7 +201,16 @@ diff --git a/components/content_settings/core/browser/bromite_content_settings/i new file mode 100644 --- /dev/null +++ b/components/content_settings/core/browser/bromite_content_settings/insecure_private_network.inc -@@ -0,0 +1,16 @@ +@@ -0,0 +1,25 @@ ++ Register(ContentSettingsType::INSECURE_PRIVATE_NETWORK, ++ "insecure-private-network", CONTENT_SETTING_BLOCK, ++ WebsiteSettingsInfo::UNSYNCABLE, /*allowlisted_primary_schemes=*/{}, ++ /*valid_settings=*/{CONTENT_SETTING_ALLOW, CONTENT_SETTING_BLOCK}, ++ WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE, ++ WebsiteSettingsRegistry::ALL_PLATFORMS, ++ ContentSettingsInfo::INHERIT_IN_INCOGNITO, ++ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS); ++ + content_settings::WebsiteSettingsRegistry::GetInstance() + ->GetMutable(ContentSettingsType::INSECURE_PRIVATE_NETWORK) + ->set_show_into_info_page() @@ -172,6 +227,14 @@ new file mode 100644 + .set_blocked_exceptions_ui(IDS_WEBSITE_SETTINGS_CATEGORY_INSECURE_PRIVATE_NETWORK_ASK) +#endif + .set_mid_sentence_ui(IDS_INSECURE_PRIVATE_NETWORK_PERMISSION_TITLE); +diff --git a/components/content_settings/core/common/bromite_content_settings/INSECURE_PRIVATE_NETWORK.inc b/components/content_settings/core/common/bromite_content_settings/INSECURE_PRIVATE_NETWORK.inc +new file mode 100644 +--- /dev/null ++++ b/components/content_settings/core/common/bromite_content_settings/INSECURE_PRIVATE_NETWORK.inc +@@ -0,0 +1,3 @@ ++ // Stores whether to allow insecure websites to make private network requests. ++ // See also: https://wicg.github.io/cors-rfc1918 ++ INSECURE_PRIVATE_NETWORK, diff --git a/services/network/cors/cors_url_loader.cc b/services/network/cors/cors_url_loader.cc --- a/services/network/cors/cors_url_loader.cc +++ b/services/network/cors/cors_url_loader.cc 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 d411b481..6b1f478e 100644 --- a/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch +++ b/build/patches/Remove-HTTP-referrals-in-cross-origin-navigation.patch @@ -13,16 +13,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- chrome/android/chrome_java_resources.gni | 2 + chrome/android/chrome_java_sources.gni | 2 + - ...button_group_referer_policy_preference.xml | 47 ++++++++++ + ...button_group_referer_policy_preference.xml | 47 +++++++++ .../java/res/xml/privacy_preferences.xml | 4 + - .../res/xml/referer_policy_preferences.xml | 31 +++++++ + .../res/xml/referer_policy_preferences.xml | 31 ++++++ .../privacy/settings/PrivacySettings.java | 6 ++ - .../RadioButtonGroupRefererSettings.java | 89 +++++++++++++++++++ - .../settings/RefererSettingsFragment.java | 80 +++++++++++++++++ - .../api/settings_private/prefs_util.cc | 5 ++ + .../RadioButtonGroupRefererSettings.java | 89 +++++++++++++++++ + .../settings/RefererSettingsFragment.java | 96 +++++++++++++++++++ + .../api/settings_private/prefs_util.cc | 5 + .../net/system_network_context_manager.cc | 4 + chrome/browser/renderer_preferences_util.cc | 1 + - .../settings/privacy_page/privacy_page.html | 10 +++ + .../settings/privacy_page/privacy_page.html | 10 ++ .../settings/privacy_page/privacy_page.ts | 18 ++++ .../strings/android_chrome_strings.grd | 24 +++++ chrome/browser/ui/prefs/pref_watcher.cc | 2 + @@ -30,11 +30,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../settings_localized_strings_provider.cc | 4 + chrome/common/pref_names.h | 3 + ...-referrals-in-cross-origin-navigation.grdp | 18 ++++ - .../content/internal/context_menu_download.cc | 10 +++ + .../content/internal/context_menu_download.cc | 10 ++ .../renderer_host/navigation_request.cc | 9 ++ .../network/public/cpp/resource_request.h | 2 +- .../renderer_preferences.h | 1 + - 23 files changed, 373 insertions(+), 1 deletion(-) + 23 files changed, 389 insertions(+), 1 deletion(-) create mode 100644 chrome/android/java/res/layout/radio_button_group_referer_policy_preference.xml create mode 100644 chrome/android/java/res/xml/referer_policy_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/RadioButtonGroupRefererSettings.java @@ -295,7 +295,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting new file mode 100644 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/RefererSettingsFragment.java -@@ -0,0 +1,80 @@ +@@ -0,0 +1,96 @@ +/* + This file is part of Bromite. + @@ -321,17 +321,21 @@ new file mode 100644 +import androidx.preference.Preference; +import androidx.preference.PreferenceFragmentCompat; + ++import org.chromium.base.supplier.ObservableSupplier; ++import org.chromium.base.supplier.ObservableSupplierImpl; ++ +import org.chromium.chrome.R; +import org.chromium.chrome.browser.preferences.Pref; +import org.chromium.chrome.browser.profiles.Profile; +import org.chromium.chrome.browser.profiles.ProfileManager; -+import org.chromium.components.browser_ui.settings.TextMessagePreference; ++import org.chromium.chrome.browser.settings.ChromeBaseSettingsFragment; ++import org.chromium.components.browser_ui.settings.SettingsFragment; +import org.chromium.components.browser_ui.settings.SettingsUtils; ++import org.chromium.components.browser_ui.settings.TextMessagePreference; +import org.chromium.components.prefs.PrefService; +import org.chromium.components.user_prefs.UserPrefs; + -+public class RefererSettingsFragment -+ extends PreferenceFragmentCompat ++public class RefererSettingsFragment extends ChromeBaseSettingsFragment + implements Preference.OnPreferenceChangeListener { + + static final String PREF_REFERER_POLICY = "referer_page_radio_button_group"; @@ -339,6 +343,8 @@ new file mode 100644 + private RadioButtonGroupRefererSettings mRefererPreference; + private final PrefService prefService = UserPrefs.get(ProfileManager.getLastUsedRegularProfile()); + ++ private final ObservableSupplierImpl mPageTitle = new ObservableSupplierImpl<>(); ++ + public static String getRefererSummaryString(Context context) { + int policy = UserPrefs.get(ProfileManager.getLastUsedRegularProfile()) + .getInteger(Pref.REFERRERS_POLICY); @@ -357,6 +363,16 @@ new file mode 100644 + } + + @Override ++ public @SettingsFragment.AnimationType int getAnimationType() { ++ return SettingsFragment.AnimationType.PROPERTY; ++ } ++ ++ @Override ++ public ObservableSupplier getPageTitle() { ++ return mPageTitle; ++ } ++ ++ @Override + public void onCreatePreferences(Bundle bundle, String s) { + SettingsUtils.addPreferencesFromResource(this, R.xml.referer_policy_preferences); + getActivity().setTitle(R.string.referers_policy_title); diff --git a/build/patches/Remove-binary-blob-integrations.patch b/build/patches/Remove-binary-blob-integrations.patch index 9dc9705b..20d22880 100644 --- a/build/patches/Remove-binary-blob-integrations.patch +++ b/build/patches/Remove-binary-blob-integrations.patch @@ -29,7 +29,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html build/config/android/config.gni | 4 +- chrome/android/BUILD.gn | 32 +- chrome/android/chrome_java_sources.gni | 5 - - chrome/android/java/AndroidManifest.xml | 50 --- + chrome/android/java/AndroidManifest.xml | 50 -- .../browser/ChromeBackgroundService.java | 11 +- .../browser/PlayServicesVersionInfo.java | 12 +- .../ChromeBackgroundTaskFactory.java | 3 - @@ -37,14 +37,17 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/android/javatests/BUILD.gn | 7 - chrome/android/junit/BUILD.gn | 6 - chrome/browser/language/android/BUILD.gn | 3 - - .../language/AppLanguagePromoDialog.java | 31 -- + .../language/AppLanguagePromoDialog.java | 31 - .../language/settings/LanguageSettings.java | 6 - chrome/browser/omaha/android/BUILD.gn | 1 - .../browser/password_manager/android/BUILD.gn | 5 - - .../password_manager/GmsUpdateLauncher.java | 28 -- - .../PasswordManagerAndroidBackendUtil.java | 38 +-- + .../password_manager/GmsUpdateLauncher.java | 28 - + .../PasswordManagerAndroidBackendUtil.java | 38 +- .../PasswordManagerHelper.java | 9 - ...swordSyncControllerDelegateBridgeImpl.java | 7 - + .../android/one_time_passwords/BUILD.gn | 2 - + .../AndroidSmsOtpFetchReceiverBridge.java | 6 +- + .../AndroidSmsOtpFetcher.java | 4 +- .../push_messaging_service_factory.cc | 8 +- .../notification_telemetry_service.cc | 1 + chrome/browser/ui/BUILD.gn | 3 - @@ -53,44 +56,46 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/ui/webauthn/sheet_models.cc | 9 +- .../browser/ui/webui/chrome_web_ui_configs.cc | 1 - chrome/browser/webauthn/android/BUILD.gn | 1 - - .../CableAuthenticatorModuleProvider.java | 35 +-- + .../CableAuthenticatorModuleProvider.java | 35 +- chrome/browser/webauthn/cablev2_devices.cc | 3 + - ...igitalCredentialsPresentationDelegate.java | 88 +----- + chrome/browser/webid/BUILD.gn | 3 - + .../DigitalCredentialsCreationDelegate.java | 112 ---- + ...igitalCredentialsPresentationDelegate.java | 88 +-- chrome/test/android/BUILD.gn | 2 - .../ExternalNavigationHandler.java | 8 - components/externalauth/android/BUILD.gn | 3 - - .../externalauth/ExternalAuthUtils.java | 34 +-- + .../externalauth/ExternalAuthUtils.java | 34 +- .../UserRecoverableErrorHandler.java | 8 - .../gcm_driver/GoogleCloudMessagingV2.java | 2 + components/gcm_driver/gcm_client_impl.cc | 4 + .../gcm_driver/instance_id/android/BUILD.gn | 3 - - .../instance_id/InstanceIDBridge.java | 56 +--- + .../instance_id/InstanceIDBridge.java | 56 +- .../InstalledAppProviderImpl.java | 2 +- .../media_router/browser/android/BUILD.gn | 11 - .../media_router/BrowserMediaRouter.java | 21 +- - .../components/media_router/MediaSink.java | 44 +-- - .../media_router/MediaStatusBridge.java | 40 +-- - .../caf/BaseNotificationController.java | 59 ---- - .../caf/BaseSessionController.java | 112 +------ - .../caf/CafBaseMediaRouteProvider.java | 113 +------ - .../caf/CafMediaRouteProvider.java | 21 -- - .../media_router/caf/CafMessageHandler.java | 106 +------ + .../components/media_router/MediaSink.java | 44 +- + .../media_router/MediaStatusBridge.java | 40 +- + .../caf/BaseNotificationController.java | 59 -- + .../caf/BaseSessionController.java | 112 +--- + .../caf/CafBaseMediaRouteProvider.java | 113 +--- + .../caf/CafMediaRouteProvider.java | 21 - + .../media_router/caf/CafMessageHandler.java | 106 +--- .../media_router/caf/CastMediaSource.java | 10 +- .../media_router/caf/CastOptionsProvider.java | 21 +- - .../caf/CastSessionController.java | 87 ------ + .../caf/CastSessionController.java | 87 --- .../media_router/caf/CastUtils.java | 8 - - .../CafExpandedControllerActivity.java | 46 +-- + .../CafExpandedControllerActivity.java | 46 +- .../CafRemotingMediaRouteProvider.java | 4 +- - .../remoting/FlingingControllerAdapter.java | 96 ------ + .../remoting/FlingingControllerAdapter.java | 96 --- .../caf/remoting/RemotingMediaSource.java | 8 +- - .../remoting/RemotingSessionController.java | 31 -- + .../remoting/RemotingSessionController.java | 31 - .../test/android/cast_emulator/BUILD.gn | 1 - components/module_installer/android/BUILD.gn | 4 - components/omnibox/common/BUILD.gn | 1 - .../components/omnibox/OmniboxFeatures.java | 8 - components/signin/public/android/BUILD.gn | 3 - components/webauthn/android/BUILD.gn | 15 +- - .../webauthn/AuthenticatorImpl.java | 81 +---- + .../webauthn/AuthenticatorImpl.java | 81 +-- .../webauthn/ConditionalUiState.java | 15 + .../components/webauthn/GmsCoreUtils.java | 28 +- .../webauthn/WebauthnModeProvider.java | 15 - @@ -104,12 +109,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html services/BUILD.gn | 10 - services/device/geolocation/BUILD.gn | 4 - services/shape_detection/BUILD.gn | 2 - - third_party/android_deps/BUILD.gn | 286 +----------------- + third_party/android_deps/BUILD.gn | 273 +-------- + third_party/android_deps/autorolled/BUILD.gn | 550 ------------------ .../preconditions/javatests/BUILD.gn | 1 - .../gms/ChromiumPlayServicesAvailability.java | 10 +- third_party/androidx/customizations.gni | 14 +- third_party/cardboard/BUILD.gn | 4 - - 85 files changed, 121 insertions(+), 1804 deletions(-) + 91 files changed, 124 insertions(+), 2465 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 @@ -817,6 +823,70 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom PasswordSyncControllerDelegateBridgeImplJni.get() .onCredentialManagerError(mNativeDelegateBridgeImpl, error, apiErrorCode); } +diff --git a/chrome/browser/password_manager/android/one_time_passwords/BUILD.gn b/chrome/browser/password_manager/android/one_time_passwords/BUILD.gn +--- a/chrome/browser/password_manager/android/one_time_passwords/BUILD.gn ++++ b/chrome/browser/password_manager/android/one_time_passwords/BUILD.gn +@@ -47,7 +47,6 @@ android_library("java") { + ] + + deps = [ +- "$google_play_services_package:google_play_services_basement_java", + "//base:base_java", + "//build/android:build_java", + "//chrome/browser/password_manager/android/one_time_passwords:sms_otp_fetching_interface_java", +@@ -61,7 +60,6 @@ android_library("java") { + + android_library("sms_otp_fetching_interface_java") { + deps = [ +- "$google_play_services_package:google_play_services_basement_java", + "//base:base_java", + "//base:service_loader_java", + ] +diff --git a/chrome/browser/password_manager/android/one_time_passwords/java/src/org/chromium/chrome/browser/password_manager/one_time_passwords/AndroidSmsOtpFetchReceiverBridge.java b/chrome/browser/password_manager/android/one_time_passwords/java/src/org/chromium/chrome/browser/password_manager/one_time_passwords/AndroidSmsOtpFetchReceiverBridge.java +--- a/chrome/browser/password_manager/android/one_time_passwords/java/src/org/chromium/chrome/browser/password_manager/one_time_passwords/AndroidSmsOtpFetchReceiverBridge.java ++++ b/chrome/browser/password_manager/android/one_time_passwords/java/src/org/chromium/chrome/browser/password_manager/one_time_passwords/AndroidSmsOtpFetchReceiverBridge.java +@@ -4,8 +4,6 @@ + + package org.chromium.chrome.browser.password_manager.one_time_passwords; + +-import com.google.android.gms.common.api.ApiException; +- + import org.jni_zero.CalledByNative; + import org.jni_zero.NativeMethods; + +@@ -34,11 +32,11 @@ class AndroidSmsOtpFetchReceiverBridge { + .onOtpValueRetrieved(mNativeReceiverBridge, otpValue); + } + +- void onOtpValueRetrievalError(ApiException exception) { ++ void onOtpValueRetrievalError(Object exception) { + if (mNativeReceiverBridge == 0) return; + + AndroidSmsOtpFetchReceiverBridgeJni.get() +- .onOtpValueRetrievalError(mNativeReceiverBridge, exception.getStatusCode()); ++ .onOtpValueRetrievalError(mNativeReceiverBridge, 500); + } + + @CalledByNative +diff --git a/chrome/browser/password_manager/android/one_time_passwords/java/src/org/chromium/chrome/browser/password_manager/one_time_passwords/AndroidSmsOtpFetcher.java b/chrome/browser/password_manager/android/one_time_passwords/java/src/org/chromium/chrome/browser/password_manager/one_time_passwords/AndroidSmsOtpFetcher.java +--- a/chrome/browser/password_manager/android/one_time_passwords/java/src/org/chromium/chrome/browser/password_manager/one_time_passwords/AndroidSmsOtpFetcher.java ++++ b/chrome/browser/password_manager/android/one_time_passwords/java/src/org/chromium/chrome/browser/password_manager/one_time_passwords/AndroidSmsOtpFetcher.java +@@ -3,8 +3,6 @@ + // found in the LICENSE file. + package org.chromium.chrome.browser.password_manager.one_time_passwords; + +-import com.google.android.gms.common.api.ApiException; +- + import org.chromium.base.Callback; + import org.chromium.build.annotations.NullMarked; + +@@ -17,5 +15,5 @@ public interface AndroidSmsOtpFetcher { + * @param otpValueCallback Callback that is called on success with the fetched OTP value string. + * @param failureCallback A callback that is called on failure for any reason. + */ +- void retrieveSmsOtp(Callback otpValueCallback, Callback failureCallback); ++ void retrieveSmsOtp(Callback otpValueCallback, Callback failureCallback); + } diff --git a/chrome/browser/push_messaging/push_messaging_service_factory.cc b/chrome/browser/push_messaging/push_messaging_service_factory.cc --- a/chrome/browser/push_messaging/push_messaging_service_factory.cc +++ b/chrome/browser/push_messaging/push_messaging_service_factory.cc @@ -1018,6 +1088,156 @@ diff --git a/chrome/browser/webauthn/cablev2_devices.cc b/chrome/browser/webauth ScopedListPrefUpdate update(profile->GetPrefs(), kWebAuthnCablePairingsPrefName); +diff --git a/chrome/browser/webid/BUILD.gn b/chrome/browser/webid/BUILD.gn +--- a/chrome/browser/webid/BUILD.gn ++++ b/chrome/browser/webid/BUILD.gn +@@ -13,8 +13,6 @@ android_library("java") { + "android/java/src/org/chromium/chrome/browser/webid/IdentityCredentialsDelegate.java", + ] + deps = [ +- "$google_play_services_package:google_play_services_identity_credentials_java", +- "$google_play_services_package:google_play_services_tasks_java", + "//base:base_java", + "//base:service_loader_java", + "//content/public/android:content_java", +@@ -43,7 +41,6 @@ robolectric_library("junit") { + + deps = [ + ":java", +- "$google_play_services_package:google_play_services_identity_credentials_java", + "//base:base_junit_test_support", + "//content/public/android:content_java", + "//third_party/junit:junit", +diff --git a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsCreationDelegate.java b/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsCreationDelegate.java +--- a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsCreationDelegate.java ++++ b/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsCreationDelegate.java +@@ -21,10 +21,6 @@ import androidx.credentials.exceptions.CreateCredentialException; + import androidx.credentials.exceptions.CreateCredentialUnknownException; + import androidx.credentials.provider.PendingIntentHandler; + +-import com.google.android.gms.identitycredentials.CreateCredentialRequest; +-import com.google.android.gms.identitycredentials.IdentityCredentialClient; +-import com.google.android.gms.identitycredentials.IdentityCredentialManager; +- + import org.json.JSONException; + import org.json.JSONObject; + +@@ -49,115 +45,7 @@ public class DigitalCredentialsCreationDelegate { + + @OptIn(markerClass = androidx.credentials.ExperimentalDigitalCredentialApi.class) + public Promise create(Activity window, String origin, String request) { +- final IdentityCredentialClient client = +- IdentityCredentialManager.Companion.getClient(window); +- + final Promise result = new Promise(); +- +- ResultReceiver resultReceiver = +- new ResultReceiver(new Handler(Looper.getMainLooper())) { +- @Override +- protected void onReceiveResult(int code, Bundle data) { +- if (!result.isPending()) { +- // Promises don't support duplicate calls to fulfill/reject. If the +- // promise has been fulfilled/rejected already (e.g. due to erroneous +- // exception during the API call), return immediately. +- return; +- } +- Log.d(TAG, "Received a response"); +- Intent providerData = +- Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU +- ? data.getParcelable(BUNDLE_KEY_PROVIDER_DATA, Intent.class) +- : data.getParcelable(BUNDLE_KEY_PROVIDER_DATA); +- +- if (providerData == null) { +- Log.d(TAG, "Response doesn't contain providerData"); +- result.reject( +- new CreateCredentialUnknownException( +- "Response doesn't contain providerData")); +- return; +- } +- +- var response = +- PendingIntentHandler.retrieveCreateCredentialResponse( +- TYPE_DIGITAL_CREDENTIAL, providerData); +- if (response == null) { +- CreateCredentialException exception = +- PendingIntentHandler.retrieveCreateCredentialException( +- providerData); +- result.reject( +- exception == null +- ? new CreateCredentialUnknownException("empty response") +- : exception); +- return; +- } +- String responseJson = +- response.getData() +- .getString("androidx.credentials.BUNDLE_KEY_RESPONSE_JSON"); +- if (responseJson == null) { +- result.reject( +- new CreateCredentialUnknownException( +- "Response doesn't contain responseJson")); +- return; +- } +- Log.d(TAG, "Response JSON: " + responseJson); +- +- DigitalCredential digitalCredential = parseResponse(responseJson); +- if (digitalCredential == null) { +- result.reject( +- new CreateCredentialUnknownException( +- "Failed to parse response")); +- return; +- } +- result.fulfill(digitalCredential); +- } +- }; +- +- Bundle requestBundle = new Bundle(); +- requestBundle.putString("androidx.credentials.BUNDLE_KEY_REQUEST_JSON", request); +- CreateCredentialRequest createRequest = +- new CreateCredentialRequest( +- TYPE_DIGITAL_CREDENTIAL, +- /* credentialData= */ requestBundle, +- /* candidateQueryData= */ new Bundle(), +- origin, +- request, +- resultReceiver); +- +- client.createCredential(createRequest) +- .addOnSuccessListener( +- response -> { +- if (response.getPendingIntent() == null) { +- Log.d(TAG, "Response doesn't contain pendingIntent"); +- result.reject( +- new CreateCredentialUnknownException( +- "Response doesn't contain pendingIntent")); +- return; +- } +- try { +- Log.d(TAG, "Sending an intent for sender"); +- Log.d(TAG, request); +- startIntentSenderForResult( +- /* activity= */ window, +- /* intent= */ response.getPendingIntent().getIntentSender(), +- /* requestCode= */ REQUEST_CODE_DIGITAL_CREDENTIALS_CREATION, +- /* fillInIntent= */ null, +- /* flagsMask= */ 0, +- /* flagsValues= */ 0, +- /* extraFlags= */ 0, +- /* options= */ null); +- } catch (SendIntentException e) { +- Log.e(TAG, "Sending an intent for sender failed"); +- if (result.isPending()) { +- result.reject(e); +- } +- } +- }) +- .addOnFailureListener( +- e -> { +- result.reject(new CreateCredentialUnknownException("unknown error")); +- }); +- + return result; + } + diff --git a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsPresentationDelegate.java b/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsPresentationDelegate.java --- a/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsPresentationDelegate.java +++ b/chrome/browser/webid/android/java/src/org/chromium/chrome/browser/webid/DigitalCredentialsPresentationDelegate.java @@ -3659,27 +3879,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. } # The section below is generated by running -@@ -153,19 +144,6 @@ java_prebuilt("com_android_tools_sdk_common_java") { - visibility = [ "//build/android/unused_resources:*" ] - } - --# This is generated, do not edit. Update BuildConfigGenerator.groovy instead. --java_prebuilt("com_google_code_gson_gson_java") { -- jar_path = "cipd/libs/com_google_code_gson_gson/gson-2.8.0.jar" -- output_name = "com_google_code_gson_gson" -- enable_bytecode_checks = false --} -- --# This is generated, do not edit. Update BuildConfigGenerator.groovy instead. --java_prebuilt("com_squareup_javapoet_java") { -- jar_path = "cipd/libs/com_squareup_javapoet/javapoet-1.13.0.jar" -- output_name = "com_squareup_javapoet" -- enable_bytecode_checks = false --} - if (!limit_android_deps) { - # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. - java_prebuilt("com_android_support_support_annotations_java") { -@@ -233,94 +211,6 @@ if (!limit_android_deps) { +@@ -233,94 +224,6 @@ if (!limit_android_deps) { } } @@ -3774,7 +3974,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. java_prebuilt("com_googlecode_java_diff_utils_diffutils_java") { -@@ -500,180 +390,6 @@ if (!limit_android_deps) { +@@ -500,180 +403,6 @@ if (!limit_android_deps) { deps = [ ":org_mockito_mockito_core_java" ] } @@ -3955,6 +4155,594 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD. # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. java_prebuilt("jakarta_inject_jakarta_inject_api_java") { jar_path = "cipd/libs/jakarta_inject_jakarta_inject_api/jakarta.inject-api-2.0.1.jar" +diff --git a/third_party/android_deps/autorolled/BUILD.gn b/third_party/android_deps/autorolled/BUILD.gn +--- a/third_party/android_deps/autorolled/BUILD.gn ++++ b/third_party/android_deps/autorolled/BUILD.gn +@@ -139,342 +139,6 @@ template("define_autorolled_targets") { + deps = [ "//third_party/android_deps:org_ow2_asm_asm_tree_java" ] + } + if (!limit_android_deps) { +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt( +- "google_android_datatransport_transport_backend_cct_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_datatransport_transport_backend_cct/transport-backend-cct-4.0.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_datatransport_transport_backend_cct/com_google_android_datatransport_transport_backend_cct.info" +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_firebase_firebase_encoders_java", +- "$google_play_services_package:google_firebase_firebase_encoders_json_java", +- "//third_party/android_deps:google_android_datatransport_transport_api_java", +- "//third_party/android_deps:google_android_datatransport_transport_runtime_java", +- "//third_party/androidx:androidx_annotation_annotation_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_auth_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_auth/play-services-auth-21.3.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_auth/com_google_android_gms_play_services_auth.info" +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_play_services_auth_api_phone_java", +- "$google_play_services_package:google_play_services_auth_base_java", +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_fido_java", +- "$google_play_services_package:google_play_services_tasks_java", +- "//third_party/androidx:androidx_fragment_fragment_java", +- "//third_party/androidx:androidx_loader_loader_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_auth_api_phone_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_auth_api_phone/play-services-auth-api-phone-18.2.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_auth_api_phone/com_google_android_gms_play_services_auth_api_phone.info" +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_tasks_java", +- "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_core_java", +- "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_play_services_java", +- "//third_party/kotlin_stdlib:kotlin_stdlib_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_auth_base_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_auth_base/play-services-auth-base-18.1.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_auth_base/com_google_android_gms_play_services_auth_base.info" +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_tasks_java", +- "//third_party/androidx:androidx_collection_collection_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_auth_blockstore_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_auth_blockstore/play-services-auth-blockstore-16.4.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_auth_blockstore/com_google_android_gms_play_services_auth_blockstore.info" +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_tasks_java", +- "//third_party/kotlin_stdlib:kotlin_stdlib_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_base_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_base/play-services-base-18.7.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_base/com_google_android_gms_play_services_base.info" +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_tasks_java", +- "//third_party/androidx:androidx_collection_collection_java", +- "//third_party/androidx:androidx_core_core_java", +- "//third_party/androidx:androidx_fragment_fragment_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_basement_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_basement/play-services-basement-18.7.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_basement/com_google_android_gms_play_services_basement.info" +- enable_bytecode_checks = false +- deps = [ +- "//third_party/androidx:androidx_collection_collection_java", +- "//third_party/androidx:androidx_core_core_java", +- "//third_party/androidx:androidx_fragment_fragment_java", +- ] +- +- jar_excluded_patterns = [] +- if (!enable_java_asserts) { +- # Omit the file since we use our own copy. +- jar_excluded_patterns += +- [ "com/google/android/gms/common/internal/Preconditions.class" ] +- deps += [ "//third_party/android_deps/local_modifications/preconditions:gms_stub_preconditions_java" ] +- } +- +- # https://crbug.com/989505 +- jar_excluded_patterns += [ "META-INF/proguard/*" ] +- input_jars_paths = +- [ "$android_sdk/optional/org.apache.http.legacy.jar" ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_cast_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_cast/play-services-cast-22.1.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_cast/com_google_android_gms_play_services_cast.info" +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_flags_java", +- "$google_play_services_package:google_play_services_tasks_java", +- "//third_party/androidx:androidx_core_core_java", +- "//third_party/androidx:androidx_mediarouter_mediarouter_java", +- "//third_party/kotlin_stdlib:kotlin_stdlib_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_cast_framework_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_cast_framework/play-services-cast-framework-22.1.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_cast_framework/com_google_android_gms_play_services_cast_framework.info" +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_cast_java", +- "$google_play_services_package:google_play_services_tasks_java", +- "//third_party/android_deps:google_android_datatransport_transport_api_java", +- "//third_party/android_deps:google_android_datatransport_transport_backend_cct_java", +- "//third_party/android_deps:google_android_datatransport_transport_runtime_java", +- "//third_party/android_deps:guava_android_java", +- "//third_party/androidx:androidx_appcompat_appcompat_java", +- "//third_party/androidx:androidx_collection_collection_java", +- "//third_party/androidx:androidx_concurrent_concurrent_futures_java", +- "//third_party/androidx:androidx_core_core_java", +- "//third_party/androidx:androidx_fragment_fragment_java", +- "//third_party/androidx:androidx_media_media_java", +- "//third_party/androidx:androidx_mediarouter_mediarouter_java", +- "//third_party/androidx:androidx_recyclerview_recyclerview_java", +- "//third_party/kotlin_stdlib:kotlin_stdlib_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_fido_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_fido/play-services-fido-21.2.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_fido/com_google_android_gms_play_services_fido.info" +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_tasks_java", +- "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_core_java", +- "//third_party/kotlin_stdlib:kotlin_stdlib_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_gcm_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_gcm/play-services-gcm-17.0.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_gcm/com_google_android_gms_play_services_gcm.info" +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_iid_java", +- "$google_play_services_package:google_play_services_stats_java", +- "//third_party/androidx:androidx_collection_collection_java", +- "//third_party/androidx:androidx_core_core_java", +- "//third_party/androidx:androidx_legacy_legacy_support_core_utils_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_identity_credentials_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_identity_credentials/play-services-identity-credentials-16.0.0-alpha07.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_identity_credentials/com_google_android_gms_play_services_identity_credentials.info" +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_tasks_java", +- "//third_party/kotlin_stdlib:kotlin_stdlib_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_iid_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_iid/play-services-iid-17.0.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_iid/com_google_android_gms_play_services_iid.info" +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_stats_java", +- "$google_play_services_package:google_play_services_tasks_java", +- "//third_party/androidx:androidx_collection_collection_java", +- "//third_party/androidx:androidx_core_core_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_instantapps_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_instantapps/play-services-instantapps-18.1.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_instantapps/com_google_android_gms_play_services_instantapps.info" +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_tasks_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_location_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_location/play-services-location-21.3.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_location/com_google_android_gms_play_services_location.info" +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_tasks_java", +- "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_android_java", +- "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_core_java", +- "//third_party/kotlin_stdlib:kotlin_stdlib_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_stats_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_stats/play-services-stats-17.1.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_stats/com_google_android_gms_play_services_stats.info" +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_play_services_basement_java", +- "//third_party/androidx:androidx_legacy_legacy_support_core_utils_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_tasks_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_tasks/play-services-tasks-18.3.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_tasks/com_google_android_gms_play_services_tasks.info" +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_play_services_basement_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_vision_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_vision/play-services-vision-20.1.3.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_vision/com_google_android_gms_play_services_vision.info" +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_vision_common_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_vision_common_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_vision_common/play-services-vision-common-19.1.3.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_vision_common/com_google_android_gms_play_services_vision_common.info" +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_clearcut_java", +- "$google_play_services_package:google_play_services_flags_java", +- "$google_play_services_package:google_play_services_phenotype_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- android_aar_prebuilt( +- "com_google_android_libraries_identity_googleid_googleid_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_libraries_identity_googleid_googleid/googleid-1.1.1.aar" +- info_path = "autorolled/committed/libs/com_google_android_libraries_identity_googleid_googleid/com_google_android_libraries_identity_googleid_googleid.info" +- enable_bytecode_checks = false +- deps = [ +- "//third_party/androidx:androidx_credentials_credentials_java", +- "//third_party/kotlin_stdlib:kotlin_stdlib_java", +- ] +- } +- + # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. + if (!defined(material_design_target)) { + android_aar_prebuilt("com_google_android_material_material_java") { +@@ -523,24 +187,6 @@ template("define_autorolled_targets") { + } + } + +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (!defined(playcore_target)) { +- android_aar_prebuilt("com_google_android_play_feature_delivery_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_play_feature_delivery/feature-delivery-2.1.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_play_feature_delivery/com_google_android_play_feature_delivery.info" +- enable_bytecode_checks = false +- +- # Target is swapped out when internal code is enabled. +- # Please depend on //third_party/android_deps:playcore_java instead. +- visibility = [ "//third_party/android_deps:*" ] +- deps = [ +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_tasks_java", +- "//third_party/android_deps:com_google_android_play_core_common_java", +- ] +- } +- } +- + # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. + java_prebuilt("com_google_code_findbugs_jsr305_java") { + jar_path = "autorolled/cipd/libs/com_google_code_findbugs_jsr305/jsr305-3.0.2.jar" +@@ -642,21 +288,6 @@ template("define_autorolled_targets") { + deps = [ "//third_party/kotlin_stdlib:kotlin_stdlib_java" ] + } + +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- java_prebuilt( +- "org_jetbrains_kotlinx_kotlinx_coroutines_play_services_java") { +- jar_path = "autorolled/cipd/libs/org_jetbrains_kotlinx_kotlinx_coroutines_play_services/kotlinx-coroutines-play-services-1.10.1.jar" +- output_name = "org_jetbrains_kotlinx_kotlinx_coroutines_play_services" +- supports_android = true +- requires_android = true +- enable_bytecode_checks = false +- deps = [ +- "$google_play_services_package:google_play_services_tasks_java", +- "//third_party/android_deps:org_jetbrains_kotlinx_kotlinx_coroutines_core_java", +- "//third_party/kotlin_stdlib:kotlin_stdlib_java", +- ] +- } +- + # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. + java_prebuilt("org_jetbrains_kotlinx_kotlinx_serialization_core_jvm_java") { + jar_path = "autorolled/cipd/libs/org_jetbrains_kotlinx_kotlinx_serialization_core_jvm/kotlinx-serialization-core-jvm-1.7.2.jar" +@@ -695,126 +326,6 @@ template("define_autorolled_targets") { + ] + } + +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_android_datatransport_transport_api_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_datatransport_transport_api/transport-api-4.0.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_datatransport_transport_api/com_google_android_datatransport_transport_api.info" +- enable_bytecode_checks = false +- +- # To remove visibility constraint, add this dependency to +- # //third_party/android_deps/autorolled/build.gradle. +- visibility = [ +- ":*", +- "//third_party/androidx:*", +- ] +- deps = [ "//third_party/androidx:androidx_annotation_annotation_java" ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt( +- "google_android_datatransport_transport_runtime_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_datatransport_transport_runtime/transport-runtime-4.0.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_datatransport_transport_runtime/com_google_android_datatransport_transport_runtime.info" +- enable_bytecode_checks = false +- +- # To remove visibility constraint, add this dependency to +- # //third_party/android_deps/autorolled/build.gradle. +- visibility = [ +- ":*", +- "//third_party/androidx:*", +- ] +- deps = [ +- "$google_play_services_package:google_firebase_firebase_encoders_java", +- "$google_play_services_package:google_firebase_firebase_encoders_proto_java", +- "//third_party/android_deps:google_android_datatransport_transport_api_java", +- "//third_party/android_deps:javax_inject_javax_inject_java", +- "//third_party/androidx:androidx_annotation_annotation_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_clearcut_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_clearcut/play-services-clearcut-17.0.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_clearcut/com_google_android_gms_play_services_clearcut.info" +- enable_bytecode_checks = false +- +- # To remove visibility constraint, add this dependency to +- # //third_party/android_deps/autorolled/build.gradle. +- visibility = [ +- ":*", +- "//third_party/androidx:*", +- ] +- deps = [ +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_phenotype_java", +- "$google_play_services_package:google_play_services_tasks_java", +- "//third_party/androidx:androidx_core_core_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_flags_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_flags/play-services-flags-18.1.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_flags/com_google_android_gms_play_services_flags.info" +- enable_bytecode_checks = false +- +- # To remove visibility constraint, add this dependency to +- # //third_party/android_deps/autorolled/build.gradle. +- visibility = [ +- ":*", +- "//third_party/androidx:*", +- ] +- deps = [ +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_play_services_phenotype_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_gms_play_services_phenotype/play-services-phenotype-17.0.0.aar" +- info_path = "autorolled/committed/libs/com_google_android_gms_play_services_phenotype/com_google_android_gms_play_services_phenotype.info" +- enable_bytecode_checks = false +- +- # To remove visibility constraint, add this dependency to +- # //third_party/android_deps/autorolled/build.gradle. +- visibility = [ +- ":*", +- "//third_party/androidx:*", +- ] +- deps = [ +- "$google_play_services_package:google_play_services_base_java", +- "$google_play_services_package:google_play_services_basement_java", +- "$google_play_services_package:google_play_services_tasks_java", +- "//third_party/androidx:androidx_core_core_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- android_aar_prebuilt("com_google_android_play_core_common_java") { +- aar_path = "autorolled/cipd/libs/com_google_android_play_core_common/core-common-2.0.3.aar" +- info_path = "autorolled/committed/libs/com_google_android_play_core_common/com_google_android_play_core_common.info" +- enable_bytecode_checks = false +- +- # To remove visibility constraint, add this dependency to +- # //third_party/android_deps/autorolled/build.gradle. +- visibility = [ +- ":*", +- "//third_party/androidx:*", +- ] +- } +- + # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. + java_prebuilt("com_google_auto_value_auto_value_annotations_java") { + jar_path = "autorolled/cipd/libs/com_google_auto_value_auto_value_annotations/auto-value-annotations-1.11.0.jar" +@@ -831,67 +342,6 @@ template("define_autorolled_targets") { + testonly = true + } + +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- java_prebuilt("google_firebase_firebase_encoders_java") { +- jar_path = "autorolled/cipd/libs/com_google_firebase_firebase_encoders/firebase-encoders-17.0.0.jar" +- output_name = "com_google_firebase_firebase_encoders" +- supports_android = true +- requires_android = true +- enable_bytecode_checks = false +- +- # To remove visibility constraint, add this dependency to +- # //third_party/android_deps/autorolled/build.gradle. +- visibility = [ +- ":*", +- "//third_party/androidx:*", +- ] +- deps = [ "//third_party/androidx:androidx_annotation_annotation_java" ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- android_aar_prebuilt("google_firebase_firebase_encoders_json_java") { +- aar_path = "autorolled/cipd/libs/com_google_firebase_firebase_encoders_json/firebase-encoders-json-18.0.0.aar" +- info_path = "autorolled/committed/libs/com_google_firebase_firebase_encoders_json/com_google_firebase_firebase_encoders_json.info" +- enable_bytecode_checks = false +- +- # To remove visibility constraint, add this dependency to +- # //third_party/android_deps/autorolled/build.gradle. +- visibility = [ +- ":*", +- "//third_party/androidx:*", +- ] +- deps = [ +- "$google_play_services_package:google_firebase_firebase_encoders_java", +- "//third_party/androidx:androidx_annotation_annotation_java", +- ] +- } +- } +- +- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. +- if (google_play_services_package == "//third_party/android_deps") { +- java_prebuilt("google_firebase_firebase_encoders_proto_java") { +- jar_path = "autorolled/cipd/libs/com_google_firebase_firebase_encoders_proto/firebase-encoders-proto-16.0.0.jar" +- output_name = "com_google_firebase_firebase_encoders_proto" +- supports_android = true +- requires_android = true +- enable_bytecode_checks = false +- +- # To remove visibility constraint, add this dependency to +- # //third_party/android_deps/autorolled/build.gradle. +- visibility = [ +- ":*", +- "//third_party/androidx:*", +- ] +- deps = [ +- "$google_play_services_package:google_firebase_firebase_encoders_java", +- "//third_party/androidx:androidx_annotation_annotation_java", +- ] +- } +- } +- + # This is generated, do not edit. Update BuildConfigGenerator.groovy instead. + java_prebuilt( + "com_google_testparameterinjector_test_parameter_injector_java") { diff --git a/third_party/android_deps/local_modifications/preconditions/javatests/BUILD.gn b/third_party/android_deps/local_modifications/preconditions/javatests/BUILD.gn --- a/third_party/android_deps/local_modifications/preconditions/javatests/BUILD.gn +++ b/third_party/android_deps/local_modifications/preconditions/javatests/BUILD.gn diff --git a/build/patches/Restore-BookmarkToolbar-setCurrentFolder.patch b/build/patches/Restore-BookmarkToolbar-setCurrentFolder.patch index 93b187e0..7252a513 100644 --- a/build/patches/Restore-BookmarkToolbar-setCurrentFolder.patch +++ b/build/patches/Restore-BookmarkToolbar-setCurrentFolder.patch @@ -6,24 +6,17 @@ restore https://chromium-review.googlesource.com/c/chromium/src/+/5554182 License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html --- - .../chrome/browser/bookmarks/BookmarkToolbar.java | 13 +++++++++++++ - .../bookmarks/BookmarkToolbarCoordinator.java | 1 + - .../browser/bookmarks/BookmarkToolbarMediator.java | 1 + - .../bookmarks/BookmarkToolbarProperties.java | 9 +++++++++ - .../bookmarks/BookmarkToolbarViewBinder.java | 4 ++++ - 5 files changed, 28 insertions(+) + .../chrome/browser/bookmarks/BookmarkToolbar.java | 12 ++++++++++++ + .../bookmarks/BookmarkToolbarCoordinator.java | 1 + + .../browser/bookmarks/BookmarkToolbarMediator.java | 1 + + .../browser/bookmarks/BookmarkToolbarProperties.java | 9 +++++++++ + .../browser/bookmarks/BookmarkToolbarViewBinder.java | 4 ++++ + 5 files changed, 27 insertions(+) diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java --- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java +++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java -@@ -13,12 +13,14 @@ import android.view.View; - import android.view.View.OnClickListener; - - import androidx.annotation.IdRes; -+import androidx.annotation.Nullable; - import androidx.appcompat.widget.Toolbar.OnMenuItemClickListener; - import androidx.core.view.MenuCompat; - +@@ -19,6 +19,7 @@ import androidx.core.view.MenuCompat; import org.chromium.build.annotations.NullMarked; import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.bookmarks.BookmarkUiState.BookmarkUiMode; @@ -31,7 +24,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows import org.chromium.components.bookmarks.BookmarkId; import org.chromium.components.browser_ui.util.ToolbarUtils; import org.chromium.components.browser_ui.widget.selectable_list.SelectableListToolbar; -@@ -35,8 +37,10 @@ import java.util.function.Function; +@@ -35,8 +36,10 @@ import java.util.function.Function; @NullMarked public class BookmarkToolbar extends SelectableListToolbar implements OnMenuItemClickListener, OnClickListener { @@ -42,7 +35,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows private boolean mEditButtonVisible; private boolean mNewFolderButtonVisible; private boolean mNewFolderButtonEnabled; -@@ -65,6 +69,11 @@ public class BookmarkToolbar extends SelectableListToolbar +@@ -65,6 +68,11 @@ public class BookmarkToolbar extends SelectableListToolbar setOnMenuItemClickListener(this); } @@ -54,7 +47,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows void setSelectionDelegate(SelectionDelegate selectionDelegate) { mSelectionDelegate = selectionDelegate; getMenu().setGroupEnabled(R.id.selection_mode_menu_group, true); -@@ -168,6 +177,10 @@ public class BookmarkToolbar extends SelectableListToolbar +@@ -168,6 +176,10 @@ public class BookmarkToolbar extends SelectableListToolbar getMenu().findItem(id).setChecked(true); } diff --git a/build/patches/Restore-Simplified-NTP-launch.patch b/build/patches/Restore-Simplified-NTP-launch.patch index 9e82d960..bcc1806f 100644 --- a/build/patches/Restore-Simplified-NTP-launch.patch +++ b/build/patches/Restore-Simplified-NTP-launch.patch @@ -28,7 +28,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../SuggestionsNavigationDelegate.java | 27 +- .../tile/MostVisitedTilesCoordinator.java | 6 +- .../tile/MostVisitedTilesGridLayout.java | 287 ++++++++++++++++++ - .../tile/MostVisitedTilesMediator.java | 4 +- + .../tile/MostVisitedTilesMediator.java | 5 +- + .../tile/TileDragDelegateImpl.java | 6 +- .../suggestions/tile/TileRenderer.java | 8 +- .../suggestions/tile/TilesLinearLayout.java | 2 +- .../engagement/important_sites_util.cc | 2 +- @@ -36,10 +37,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/flags/ChromeFeatureList.java | 3 +- .../client_util/HomeModulesRankingHelper.java | 1 + .../history/core/browser/top_sites_impl.h | 2 +- + components/ntp_tiles/custom_links_store.cc | 2 - .../Restore-Simplified-NTP-launch.inc | 12 + .../Restore-Simplified-NTP-launch.inc | 5 + .../Restore-Simplified-NTP-launch.inc | 1 + - 33 files changed, 534 insertions(+), 47 deletions(-) + 35 files changed, 537 insertions(+), 53 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 chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java @@ -1005,6 +1007,44 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til ViewStub noMvPlaceholderStub, TileRenderer renderer, PropertyModel propertyModel, +@@ -164,7 +164,6 @@ public class MostVisitedTilesMediator implements TileGroup.Observer, TemplateUrl + + @Override + public void onCustomTileCreation(Tile tile) { +- mMvTilesLayout.ensureTileIsInViewOnNextLayout(tile.getIndex()); + } + + public void onConfigurationChanged() { +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileDragDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileDragDelegateImpl.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileDragDelegateImpl.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileDragDelegateImpl.java +@@ -64,7 +64,7 @@ class TileDragDelegateImpl implements TileGroup.TileDragDelegate, TileDragSessio + private static final float DOMINATE_TRESHOLD_RATIO = 0.4f; + + // Parent container for dragged tiles. +- private final MostVisitedTilesLayout mMvTilesLayout; ++ private final MostVisitedTilesGridLayout mMvTilesLayout; + + private final float mTileWidthPx; + +@@ -85,7 +85,7 @@ class TileDragDelegateImpl implements TileGroup.TileDragDelegate, TileDragSessio + // Runnable to cancel tile movement that might not have completed yet, due to animation. + private @Nullable Runnable mPendingChangeCanceller; + +- public TileDragDelegateImpl(MostVisitedTilesLayout mvTilesLayout) { ++ public TileDragDelegateImpl(MostVisitedTilesGridLayout mvTilesLayout) { + mMvTilesLayout = mvTilesLayout; + Resources res = mMvTilesLayout.getResources(); + mTileWidthPx = res.getDimensionPixelSize(R.dimen.tile_view_width); +@@ -187,7 +187,7 @@ class TileDragDelegateImpl implements TileGroup.TileDragDelegate, TileDragSessio + + @Override + public SiteSuggestion getTileViewData(TileView view) { +- return mMvTilesLayout.getTileViewData(view); ++ return null; + } + + private void cancelPendingChange() { diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java @@ -1122,6 +1162,18 @@ diff --git a/components/history/core/browser/top_sites_impl.h b/components/histo // This class allows requests for most visited urls on any thread. All other // methods must be invoked on the UI thread. All mutations to internal state +diff --git a/components/ntp_tiles/custom_links_store.cc b/components/ntp_tiles/custom_links_store.cc +--- a/components/ntp_tiles/custom_links_store.cc ++++ b/components/ntp_tiles/custom_links_store.cc +@@ -63,8 +63,6 @@ std::vector CustomLinksStore::RetrieveLinks() { + + if (!has_recorded_first_load_stats) { + has_recorded_first_load_stats = true; +- ntp_tiles::metrics::RecordNumberOfCustomTilesOnFirstNtp( +- static_cast(links.size())); + } + + return links; diff --git a/cromite_flags/chrome/browser/about_flags_cc/Restore-Simplified-NTP-launch.inc b/cromite_flags/chrome/browser/about_flags_cc/Restore-Simplified-NTP-launch.inc new file mode 100644 --- /dev/null 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 00072ebd..d0aa38dd 100644 --- a/build/patches/Restore-adaptive-button-in-top-toolbar-customization.patch +++ b/build/patches/Restore-adaptive-button-in-top-toolbar-customization.patch @@ -7,7 +7,7 @@ Voice button and legacy share/voice functionality is not restored. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- - .../ReaderModeToolbarButtonController.java | 5 +++-- + .../ReaderModeToolbarButtonController.java | 4 ++-- .../ContextualPageActionController.java | 4 ++++ .../chrome/browser/settings/MainSettings.java | 9 +-------- .../segmentation_platform_config.cc | 1 + @@ -19,13 +19,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../adaptive/AdaptiveToolbarStats.java | 2 ++ ...oButtonGroupAdaptiveToolbarPreference.java | 19 ++++++++++++------- ...ve-button-in-top-toolbar-customization.inc | 1 + - 12 files changed, 41 insertions(+), 21 deletions(-) + 12 files changed, 40 insertions(+), 21 deletions(-) create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-adaptive-button-in-top-toolbar-customization.inc diff --git a/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/ReaderModeToolbarButtonController.java b/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/ReaderModeToolbarButtonController.java --- a/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/ReaderModeToolbarButtonController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/ReaderModeToolbarButtonController.java -@@ -39,11 +39,12 @@ public class ReaderModeToolbarButtonController extends BaseButtonDataProvider { +@@ -39,11 +39,11 @@ public class ReaderModeToolbarButtonController extends BaseButtonDataProvider { modalDialogManager, buttonDrawable, context.getString(R.string.reader_view_text_alt), @@ -35,8 +35,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/dom_distiller/R /* iphCommandBuilder= */ null, AdaptiveToolbarButtonVariant.READER_MODE, - /* tooltipTextResId= */ Resources.ID_NULL); -+ /* tooltipTextResId= */ R.string.reader_mode_action_chip_label_simplify_page, -+ /* showBackgroundHighlight= */ true); ++ /* tooltipTextResId= */ R.string.reader_mode_action_chip_label_simplify_page); } @Override @@ -47,7 +46,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/segmentation_pl && mTabSupplier.get().getId() == tab.getId(); if (!isSameTab) return; -+ if (signalAccumulator.hasReaderMode() ++ if (mSignalAccumulator.hasReaderMode() + && result == AdaptiveToolbarButtonVariant.UNKNOWN) { + result = AdaptiveToolbarButtonVariant.READER_MODE; + } diff --git a/build/patches/User-agent-customization.patch b/build/patches/User-agent-customization.patch index 2aadf2aa..ca21400e 100644 --- a/build/patches/User-agent-customization.patch +++ b/build/patches/User-agent-customization.patch @@ -21,14 +21,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../chrome/browser/app/ChromeActivity.java | 1 + .../init/ChromeBrowserInitializer.java | 3 + .../PrivacyPreferencesManagerImpl.java | 42 ++++ - .../settings/UserAgentPreferences.java | 183 ++++++++++++++++++ + .../settings/UserAgentPreferences.java | 189 ++++++++++++++++++ .../browser/tab/RequestDesktopUtils.java | 1 + .../chromium/chrome/browser/tab/TabImpl.java | 64 +++++- .../chromium/chrome/browser/tab/TabUtils.java | 7 +- .../browser/android/content/content_utils.cc | 32 ++- .../preferences/browser_prefs_android.cc | 7 + .../privacy_preferences_manager_impl.cc | 126 ++++++++++++ - ...ktop_site_web_contents_observer_android.cc | 11 ++ + ...ktop_site_web_contents_observer_android.cc | 11 + ...sktop_site_web_contents_observer_android.h | 2 + .../preferences/ChromePreferenceKeys.java | 2 - .../settings/PrivacyPreferencesManager.java | 8 + @@ -37,16 +37,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../tabwindow/TabWindowManagerImpl.java | 18 ++ .../strings/android_chrome_strings.grd | 26 +++ chrome/common/pref_names.h | 8 + - ...omiteRequestDesktopSiteContentSetting.java | 76 ++++++++ + ...omiteRequestDesktopSiteContentSetting.java | 76 +++++++ .../request_desktop_site.grdp | 18 ++ - .../widget/RadioButtonWithEditText.java | 11 ++ + .../widget/RadioButtonWithEditText.java | 11 + .../navigation_controller_android.cc | 4 + .../navigation_controller_android.h | 1 + .../renderer_host/render_process_host_impl.cc | 1 + .../browser/web_contents/web_contents_impl.cc | 6 +- .../framehost/NavigationControllerImpl.java | 3 +- content/renderer/render_thread_impl.cc | 1 - - 36 files changed, 794 insertions(+), 17 deletions(-) + 36 files changed, 800 insertions(+), 17 deletions(-) create mode 100644 chrome/android/java/res/layout/custom_useragent_preferences.xml create mode 100644 chrome/android/java/res/xml/useragent_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/UserAgentPreferences.java @@ -364,7 +364,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/UserAg new file mode 100644 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/UserAgentPreferences.java -@@ -0,0 +1,183 @@ +@@ -0,0 +1,189 @@ +/* + This file is part of Bromite. + @@ -408,6 +408,7 @@ new file mode 100644 +import org.chromium.components.browser_ui.settings.SettingsUtils; +import org.chromium.components.content_settings.ContentSettingsType; +import org.chromium.components.browser_ui.site_settings.WebsitePreferenceBridge; ++import org.chromium.components.browser_ui.settings.SettingsFragment; +import org.chromium.chrome.browser.app.tabwindow.TabWindowManagerSingleton; +import org.chromium.chrome.browser.tabwindow.TabWindowManager; +import org.chromium.chrome.browser.privacy.settings.PrivacyPreferencesManagerImpl; @@ -420,7 +421,7 @@ new file mode 100644 + */ +public class UserAgentPreferences + extends PreferenceFragmentCompat -+ implements RadioGroup.OnCheckedChangeListener, ++ implements RadioGroup.OnCheckedChangeListener, SettingsFragment, + ProfileDependentSetting { + + private RadioButtonWithDescription useDefaultAgentSwitch; @@ -433,6 +434,11 @@ new file mode 100644 + private Profile mProfile; + + @Override ++ public @AnimationType int getAnimationType() { ++ return AnimationType.PROPERTY; ++ } ++ ++ @Override + public void setProfile(Profile profile) { + mProfile = profile; + } diff --git a/build/patches/Welcome-screen.patch b/build/patches/Welcome-screen.patch index 73bb1b68..aa32a07f 100644 --- a/build/patches/Welcome-screen.patch +++ b/build/patches/Welcome-screen.patch @@ -15,13 +15,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/firstrun/FirstRunActivity.java | 23 +- .../firstrun/FirstRunFlowSequencer.java | 58 +-- .../browser/firstrun/FirstRunUtils.java | 1 + - .../firstrun/ToSAndUMAFirstRunFragment.java | 335 +++++++++++++++++ + .../firstrun/ToSAndUMAFirstRunFragment.java | 321 +++++++++++++++++ .../firstrun/TosAndUmaFragmentView.java | 336 ++++++++++++++++++ .../signin/ChildAccountStatusSupplier.java | 4 + ...creenSigninAndHistorySyncActivityBase.java | 6 +- .../browser/locale/LocaleManagerDelegate.java | 5 +- .../Welcome-screen.grdp | 27 ++ - 15 files changed, 917 insertions(+), 79 deletions(-) + 15 files changed, 903 insertions(+), 79 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 @@ -495,7 +495,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,335 @@ +@@ -0,0 +1,321 @@ +// 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. @@ -783,21 +783,7 @@ new file mode 100644 + } + + private boolean getUmaCheckBoxInitialState() { -+ // Metrics and crash reporting could not be permitted by policy. -+ if (!isWaitingForNativeAndPolicyInit() -+ && !PrivacyPreferencesManagerImpl.getInstance() -+ .isUsageAndCrashReportingPermittedByPolicy()) { -+ return false; -+ } -+ -+ // A user could start FRE and accept terms of service, then close the browser and start -+ // again. In this case we rely on whatever state the user has already set. -+ if (FirstRunUtils.didAcceptTermsOfService()) { -+ return PrivacyPreferencesManagerImpl.getInstance() -+ .isUsageAndCrashReportingPermittedByUser(); -+ } -+ -+ return FirstRunActivity.DEFAULT_METRICS_AND_CRASH_REPORTING; ++ return false; + } + + // Exposed methods for ToSAndUMACCTFirstRunFragment diff --git a/build/patches/eyeo-133.0.6943.49-base.patch b/build/patches/eyeo-133.0.6943.49-base.patch index defcf080..0504aeb7 100644 --- a/build/patches/eyeo-133.0.6943.49-base.patch +++ b/build/patches/eyeo-133.0.6943.49-base.patch @@ -22,7 +22,7 @@ Based on Chromium 133.0.6943.49 .../content/browser/adblock_filter_match.h | 30 + .../browser/adblock_internals_page_handler.cc | 171 ++ .../browser/adblock_internals_page_handler.h | 61 + - .../content/browser/adblock_internals_ui.cc | 68 + + .../content/browser/adblock_internals_ui.cc | 67 + .../content/browser/adblock_internals_ui.h | 49 + .../browser/adblock_url_loader_factory.cc | 813 ++++++++++ .../browser/adblock_url_loader_factory.h | 100 ++ @@ -365,7 +365,7 @@ Based on Chromium 133.0.6943.49 tools/eyeo/update_git_grafts.py | 138 ++ tools/gritsettings/resource_ids.spec | 12 + .../histograms/metadata/extensions/enums.xml | 8 +- - 361 files changed, 48845 insertions(+), 8 deletions(-) + 361 files changed, 48844 insertions(+), 8 deletions(-) create mode 100644 components/adblock/BUILD.gn create mode 100644 components/adblock/CHANGELOG.md create mode 100644 components/adblock/LICENSE @@ -3465,7 +3465,7 @@ diff --git a/components/adblock/content/browser/adblock_internals_ui.cc b/compon new file mode 100644 --- /dev/null +++ b/components/adblock/content/browser/adblock_internals_ui.cc -@@ -0,0 +1,68 @@ +@@ -0,0 +1,67 @@ + +/* \ + * This file is part of eyeo Chromium SDK, \ @@ -3517,8 +3517,7 @@ new file mode 100644 + "trusted-types static-types " + // Add TrustedTypes policies necessary for using Polymer. + "polymer-html-literal polymer-template-event-attribute-policy;"); -+ source->AddResourcePaths( -+ base::span(kAdblockInternalsResources, kAdblockInternalsResourcesSize)); ++ source->AddResourcePaths(kAdblockInternalsResources); + source->SetDefaultResource(IDR_ADBLOCK_INTERNALS_ADBLOCK_INTERNALS_HTML); +} +