diff --git a/build/patches/Dictionary-suggestions-for-the-Omnibox.patch b/build/patches/Dictionary-suggestions-for-the-Omnibox.patch index bbb7de1f..b5e8e669 100644 --- a/build/patches/Dictionary-suggestions-for-the-Omnibox.patch +++ b/build/patches/Dictionary-suggestions-for-the-Omnibox.patch @@ -10,10 +10,10 @@ Original License: BSD-3-Clause - https://spdx.org/licenses/BSD-3-Clause.html License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- chrome/android/java/res/layout/url_bar.xml | 1 + - .../browser/omnibox/LocationBarMediator.java | 25 +++++++++++++----- + .../browser/omnibox/LocationBarMediator.java | 21 ++++++++++++--- .../chrome/browser/omnibox/UrlBar.java | 26 +++++++++++++++++++ .../browser/omnibox/UrlBarViewBinder.java | 1 + - 4 files changed, 47 insertions(+), 6 deletions(-) + 4 files changed, 45 insertions(+), 4 deletions(-) diff --git a/chrome/android/java/res/layout/url_bar.xml b/chrome/android/java/res/layout/url_bar.xml --- a/chrome/android/java/res/layout/url_bar.xml @@ -29,25 +29,7 @@ diff --git a/chrome/android/java/res/layout/url_bar.xml b/chrome/android/java/re diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java --- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java +++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarMediator.java -@@ -591,7 +591,7 @@ class LocationBarMediator - if (NativePage.isChromePageUrl(currentUrl, mLocationBarDataProvider.isOffTheRecord()) - && mCurrentInput != null) { - mCurrentInput.setUserText(null); -- beginOrResumeInput(/* activateNewSession= */ false); -+ beginOrResumeInput(/* activateNewSession= */ false, /* wasFocus */ false); - } else { - setUrlBarText( - mLocationBarDataProvider.getUrlBarData(), -@@ -842,7 +842,7 @@ class LocationBarMediator - if (mCurrentInput == null) return; // session not started yet. - - mCurrentInput.setUserText(null); -- beginOrResumeInput(/* activateNewSession= */ false); -+ beginOrResumeInput(/* activateNewSession= */ false, /* wasFocus */ false); - updateButtonVisibility(); - mUrlCoordinator.requestAccessibilityFocus(); - } -@@ -923,7 +923,7 @@ class LocationBarMediator +@@ -1006,7 +1006,7 @@ class LocationBarMediator // Existing text (e.g. if the user pasted via the fakebox) from the fake box // should be restored after toggling the focus. if (mCurrentInput != null && !mCurrentInput.getUserText().isEmpty()) { @@ -56,7 +38,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow } } -@@ -968,7 +968,7 @@ class LocationBarMediator +@@ -1051,7 +1051,7 @@ class LocationBarMediator */ @EnsuresNonNullIf("mCurrentInput") @VisibleForTesting @@ -65,8 +47,8 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow // Do not instantiate a new ephemeral session unless we're activating it as well. var session = FuseboxSessionState.from(mLocationBarDataProvider); -@@ -1002,6 +1002,19 @@ class LocationBarMediator - .addSyncObserverAndCallIfNonNull(mAutocompleteRequestTypeObserver); +@@ -1086,6 +1086,19 @@ class LocationBarMediator + mStatusCoordinator.setSiteSearchDataSupplier(mCurrentInput.getSiteSearchDataSupplier()); UrlBarData data = UrlBarData.forNonUrlText(mCurrentInput.getUserText()); + if (wasFocus) { @@ -85,7 +67,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow mUrlCoordinator.setUrlBarData( data, UrlBar.ScrollType.NO_SCROLL, mCurrentInput.getSelection()); -@@ -1076,7 +1089,7 @@ class LocationBarMediator +@@ -1161,7 +1174,7 @@ class LocationBarMediator // This call is permitted to happen before anyone else is activated, and // must be called before everyone else cleans up. if (hasFocus) { @@ -94,7 +76,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow } else { endInputInternal(); } -@@ -1953,7 +1966,7 @@ class LocationBarMediator +@@ -2064,7 +2077,7 @@ class LocationBarMediator } // Wait for the Url focus change before refreshing autocomplete. @@ -122,7 +104,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow import org.chromium.ui.display.DisplayAndroid; import org.chromium.ui.display.DisplayUtil; -@@ -109,6 +111,7 @@ public class UrlBar extends AutocompleteEditText { +@@ -112,6 +114,7 @@ public class UrlBar extends AutocompleteEditText { private boolean mFocusEventEmitted; private boolean mAllowFocus = true; private boolean mAllowMultilineInput; @@ -130,7 +112,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow private boolean mCurrentInputCanBeWrapped; private boolean mPendingScroll; -@@ -332,6 +335,29 @@ public class UrlBar extends AutocompleteEditText { +@@ -335,6 +338,29 @@ public class UrlBar extends AutocompleteEditText { mPendingScroll = false; } fixupTextDirection(); diff --git a/build/patches/Disable-all-predictors-code.patch b/build/patches/Disable-all-predictors-code.patch index 6f45b7ae..9909547b 100644 --- a/build/patches/Disable-all-predictors-code.patch +++ b/build/patches/Disable-all-predictors-code.patch @@ -6,19 +6,20 @@ Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- chrome/browser/BUILD.gn | 1 - + .../chrome_autocomplete_provider_client.cc | 4 +-- .../background_download_service_factory.cc | 2 +- .../preloading_model_keyed_service.cc | 3 ++ .../preloading_model_keyed_service_factory.cc | 4 +-- .../chrome_hints_manager.cc | 1 + - .../model_validator_keyed_service.cc | 6 +++- + .../model_validator_keyed_service.cc | 6 ++++ .../optimization_guide_keyed_service.cc | 1 - .../password_change_delegate_impl.cc | 2 ++ - chrome/browser/permissions/BUILD.gn | 2 -- + chrome/browser/permissions/BUILD.gn | 24 ++++++------- .../permissions/chrome_permissions_client.cc | 2 -- .../passage_embedder_delegate.cc | 2 ++ - .../permissions_ai_ui_selector.cc | 5 ++++ - .../permissions_ai_ui_selector.h | 5 +++- - .../prediction_model_handler_provider.cc | 12 ++++++-- + .../permissions_ai_ui_selector.cc | 5 +++ + .../permissions_ai_ui_selector.h | 5 ++- + .../prediction_model_handler_provider.cc | 14 ++++++-- .../prediction_model_handler_provider.h | 2 ++ .../quiet_notification_permission_ui_state.cc | 4 +-- .../autocomplete_action_predictor.cc | 2 ++ @@ -30,42 +31,46 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/safe_browsing/BUILD.gn | 1 - ...ation_content_detection_service_factory.cc | 6 ++++ .../preloading/AndroidPrerenderManager.java | 1 + - .../ui/autofill/chrome_autofill_client.cc | 13 +------- + .../ui/autofill/chrome_autofill_client.cc | 13 +------ chrome/browser/ui/tab_helpers.cc | 1 - .../autofill_ml_internals_page_handler.cc | 2 ++ .../autofill_ml_internals_page_handler.h | 3 ++ .../autofill_ml_internals_ui.cc | 3 ++ - .../read_anything/read_aloud_app_model.cc | 16 ++++++++-- - .../read_anything/read_aloud_app_model.h | 9 +++++- - .../read_anything_app_controller.cc | 10 +++++++ + .../ui/webui/omnibox/omnibox_page_handler.cc | 5 +-- + .../read_anything/read_aloud_app_model.cc | 16 +++++++-- + .../read_anything/read_aloud_app_model.h | 9 ++++- + .../read_anything_app_controller.cc | 10 ++++++ .../read_anything_app_controller.h | 4 +++ chrome/test/BUILD.gn | 2 -- chrome/utility/BUILD.gn | 2 +- chrome/utility/services.cc | 8 ----- components/BUILD.gn | 2 +- - .../browser/foundations/autofill_manager.cc | 6 ++++ + components/autofill/core/browser/BUILD.gn | 30 ++++++++-------- + .../browser/foundations/autofill_manager.cc | 10 ++++-- .../browser/foundations/autofill_manager.h | 3 ++ - .../autofill_optimization_guide_decider.cc | 5 ++-- - .../field_classification_model_handler.cc | 12 +++++--- - .../field_classification_model_handler.h | 10 +++++-- + .../autofill_optimization_guide_decider.cc | 5 +-- + .../field_classification_model_handler.cc | 12 ++++--- + .../field_classification_model_handler.h | 10 ++++-- .../aim_eligibility_service_features.cc | 1 + .../browser/autocomplete_controller.cc | 4 +++ .../omnibox/browser/base_search_provider.cc | 4 +-- + .../omnibox/browser/omnibox_field_trial.cc | 2 +- .../prediction_model_download_manager.cc | 6 ++-- .../delivery/prediction_model_fetcher_impl.cc | 1 + .../core/hints/hints_fetcher.cc | 1 + .../core/hints/hints_manager.cc | 2 ++ - .../core/optimization_guide_features.cc | 11 ++++--- - components/optimization_guide/features.gni | 3 +- + .../core/optimization_guide_features.cc | 11 +++--- .../page_category_classifier_bridge_impl.cc | 4 +++ .../page_category_classifier_bridge_impl.h | 3 ++ .../core/page_content_annotations_features.cc | 8 +++++ .../page_content_annotations_model_manager.cc | 1 + - .../core/page_content_annotations_service.h | 7 +++-- - .../browser/client_side_phishing_model.cc | 4 +-- + .../core/page_content_annotations_service.h | 7 ++-- + .../permissions/prediction_service/BUILD.gn | 34 +++++++++---------- + .../browser/client_side_phishing_model.cc | 4 ++- .../notification_content_detection/BUILD.gn | 4 --- + .../core/language_detection/BUILD.gn | 1 - components/viz/service/BUILD.gn | 4 +-- - components/viz/service/gl/gpu_service_impl.cc | 19 ------------ + components/viz/service/gl/gpu_service_impl.cc | 14 -------- content/browser/BUILD.gn | 6 ++-- content/browser/gpu/gpu_process_host.cc | 6 ++-- .../service_worker_main_resource_loader.cc | 1 + @@ -73,7 +78,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../Disable-all-predictors-code.inc | 1 + .../Disable-all-predictors-code.inc | 1 + .../Disable-all-predictors-code.inc | 1 + - .../Disable-all-predictors-code.inc | 5 ++++ + .../Disable-all-predictors-code.inc | 5 +++ .../Disable-all-predictors-code.inc | 1 + .../Disable-all-predictors-code.inc | 1 + .../Disable-all-predictors-code.inc | 2 ++ @@ -82,13 +87,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html services/on_device_model/ml/ts_model.cc | 4 +-- services/on_device_model/on_device_model.gni | 2 +- services/on_device_model/safety/BUILD.gn | 2 +- + .../passage_embeddings_service.cc | 4 +++ services/webnn/BUILD.gn | 2 +- services/webnn/features.gni | 2 +- - services/webnn/webnn_context_provider_impl.cc | 30 +------------------ + services/webnn/webnn_context_provider_impl.cc | 30 +--------------- .../core/html/parser/html_document_parser.cc | 1 + .../document_speculation_rules.cc | 1 + .../platform/runtime_enabled_features.json5 | 2 +- - 83 files changed, 209 insertions(+), 141 deletions(-) + 89 files changed, 264 insertions(+), 186 deletions(-) create mode 100644 cromite_flags/chrome/browser/browser_features_cc/Disable-all-predictors-code.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-all-predictors-code.inc create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-all-predictors-code.inc @@ -101,7 +107,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -2230,7 +2230,6 @@ static_library("browser") { +@@ -2081,7 +2081,6 @@ static_library("browser") { "//components/resources", "//components/safe_browsing/content/browser", "//components/safe_browsing/content/browser:safe_browsing_service", @@ -109,6 +115,24 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn "//components/safe_browsing/content/browser/password_protection", "//components/safe_browsing/content/browser/web_ui", "//components/safe_browsing/content/common/proto:download_file_types_proto", +diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc +--- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc ++++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc +@@ -441,12 +441,12 @@ signin::IdentityManager* ChromeAutocompleteProviderClient::GetIdentityManager() + + AutocompleteScoringModelService* + ChromeAutocompleteProviderClient::GetAutocompleteScoringModelService() const { +- return AutocompleteScoringModelServiceFactory::GetForProfile(profile_); ++ return nullptr; + } + + OnDeviceTailModelService* + ChromeAutocompleteProviderClient::GetOnDeviceTailModelService() const { +- return OnDeviceTailModelServiceFactory::GetForProfile(profile_); ++ return nullptr; + } + + ProviderStateService* diff --git a/chrome/browser/download/background_download_service_factory.cc b/chrome/browser/download/background_download_service_factory.cc --- a/chrome/browser/download/background_download_service_factory.cc +++ b/chrome/browser/download/background_download_service_factory.cc @@ -124,15 +148,15 @@ diff --git a/chrome/browser/download/background_download_service_factory.cc b/ch diff --git a/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc b/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc --- a/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc +++ b/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc -@@ -11,6 +11,7 @@ +@@ -7,6 +7,7 @@ + #include "chrome/browser/optimization_guide/optimization_guide_keyed_service.h" #include "chrome/browser/navigation_predictor/preloading_model_handler.h" - #endif -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ namespace { // The model takes all of its inputs as floats, so this is a convenience -@@ -28,6 +29,7 @@ constexpr float ToInput(base::TimeDelta val) { +@@ -24,6 +25,7 @@ constexpr float ToInput(base::TimeDelta val) { static_assert(1.0f == ToInput(true)); } // namespace @@ -140,10 +164,10 @@ diff --git a/chrome/browser/navigation_predictor/preloading_model_keyed_service. PreloadingModelKeyedService::Inputs::Inputs() = default; PreloadingModelKeyedService::Inputs::Inputs(const Inputs& other) = default; -@@ -37,6 +39,7 @@ PreloadingModelKeyedService::Inputs::operator=(const Inputs& other) = default; +@@ -32,6 +34,7 @@ PreloadingModelKeyedService::Inputs::operator=(const Inputs& other) = default; + PreloadingModelKeyedService::PreloadingModelKeyedService( OptimizationGuideKeyedService* optimization_guide_keyed_service) { - #if BUILDFLAG(BUILD_WITH_TFLITE_LIB) +#error BUILD_WITH_TFLITE_LIB must be disabled auto* model_provider = static_cast( @@ -174,30 +198,31 @@ diff --git a/chrome/browser/optimization_guide/chrome_hints_manager.cc b/chrome/ diff --git a/chrome/browser/optimization_guide/model_validator_keyed_service.cc b/chrome/browser/optimization_guide/model_validator_keyed_service.cc --- a/chrome/browser/optimization_guide/model_validator_keyed_service.cc +++ b/chrome/browser/optimization_guide/model_validator_keyed_service.cc -@@ -68,13 +68,13 @@ namespace optimization_guide { +@@ -64,6 +64,7 @@ namespace optimization_guide { ModelValidatorKeyedService::ModelValidatorKeyedService(Profile* profile) : profile_(profile) { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ DCHECK(ShouldStartModelValidator()); auto* opt_guide_service = OptimizationGuideKeyedServiceFactory::GetForProfile(profile); - if (!opt_guide_service) { - return; +@@ -103,6 +104,7 @@ ModelValidatorKeyedService::ModelValidatorKeyedService(Profile* profile) + &ModelValidatorKeyedService::StartOnDeviceModelExecutionValidation, + weak_ptr_factory_.GetWeakPtr())); } --#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) - if (switches::ShouldValidateModel()) { - // Create the validator object which will get destroyed when the model - // load is complete. -@@ -135,6 +135,7 @@ void ModelValidatorKeyedService::OnPrimaryAccountChanged( ++#endif + } + + ModelValidatorKeyedService::~ModelValidatorKeyedService() = default; +@@ -129,6 +131,7 @@ void ModelValidatorKeyedService::OnPrimaryAccountChanged( void ModelValidatorKeyedService::StartModelExecutionValidation() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ auto* opt_guide_service = OptimizationGuideKeyedServiceFactory::GetForProfile(profile_); if (!opt_guide_service) { -@@ -153,6 +154,7 @@ void ModelValidatorKeyedService::StartModelExecutionValidation() { +@@ -147,6 +150,7 @@ void ModelValidatorKeyedService::StartModelExecutionValidation() { /*options=*/{}, base::BindOnce(&ModelValidatorKeyedService::OnModelExecuteResponse, weak_ptr_factory_.GetWeakPtr())); @@ -205,15 +230,15 @@ diff --git a/chrome/browser/optimization_guide/model_validator_keyed_service.cc } void ModelValidatorKeyedService::StartOnDeviceModelExecutionValidation( -@@ -170,6 +172,7 @@ void ModelValidatorKeyedService::StartOnDeviceModelExecutionValidation( +@@ -164,6 +168,7 @@ void ModelValidatorKeyedService::StartOnDeviceModelExecutionValidation( void ModelValidatorKeyedService::PerformOnDeviceModelExecutionValidation( std::unique_ptr input) { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); auto* opt_guide_service = OptimizationGuideKeyedServiceFactory::GetForProfile(profile_); -@@ -217,6 +220,7 @@ void ModelValidatorKeyedService::ExecuteModel( +@@ -211,6 +216,7 @@ void ModelValidatorKeyedService::ExecuteModel( *metadata, base::BindRepeating( &ModelValidatorKeyedService::OnDeviceModelExecuteResponse, weak_ptr_factory_.GetWeakPtr(), std::move(request))); @@ -224,7 +249,7 @@ diff --git a/chrome/browser/optimization_guide/model_validator_keyed_service.cc diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc --- a/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc +++ b/chrome/browser/optimization_guide/optimization_guide_keyed_service.cc -@@ -465,7 +465,6 @@ void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel( +@@ -464,7 +464,6 @@ void OptimizationGuideKeyedService::RemoveObserverForOptimizationTargetModel( void OptimizationGuideKeyedService::RegisterOptimizationTypes( const std::vector& optimization_types) { @@ -235,11 +260,11 @@ diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service. diff --git a/chrome/browser/password_manager/password_change_delegate_impl.cc b/chrome/browser/password_manager/password_change_delegate_impl.cc --- a/chrome/browser/password_manager/password_change_delegate_impl.cc +++ b/chrome/browser/password_manager/password_change_delegate_impl.cc -@@ -343,12 +343,14 @@ void PasswordChangeDelegateImpl::StartPasswordChangeFlow() { +@@ -342,12 +342,14 @@ void PasswordChangeDelegateImpl::StartPasswordChangeFlow() { // a local ML model for field classification. // TODO(452883239): Clean this up when model is downloaded on start-up for // everybody. -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ if (base::FeatureList::IsEnabled( password_manager::features:: kProactivelyDownloadModelForPasswordChange)) { @@ -253,7 +278,7 @@ diff --git a/chrome/browser/password_manager/password_change_delegate_impl.cc b/ diff --git a/chrome/browser/permissions/BUILD.gn b/chrome/browser/permissions/BUILD.gn --- a/chrome/browser/permissions/BUILD.gn +++ b/chrome/browser/permissions/BUILD.gn -@@ -43,8 +43,6 @@ source_set("permissions") { +@@ -43,12 +43,10 @@ source_set("permissions") { "prediction_service/language_detection_observer.h", "prediction_service/passage_embedder_delegate.cc", "prediction_service/passage_embedder_delegate.h", @@ -261,11 +286,63 @@ diff --git a/chrome/browser/permissions/BUILD.gn b/chrome/browser/permissions/BU - "prediction_service/permissions_ai_ui_selector.h", "prediction_service/prediction_model_handler_provider.cc", "prediction_service/prediction_model_handler_provider.h", +- "prediction_service/prediction_model_handler_provider_factory.cc", +- "prediction_service/prediction_model_handler_provider_factory.h", ++ # "prediction_service/prediction_model_handler_provider_factory.cc", ++ # "prediction_service/prediction_model_handler_provider_factory.h", "prediction_service/prediction_service_factory.cc", + "prediction_service/prediction_service_factory.h", + "prediction_service/prediction_service_request.cc", +@@ -86,7 +84,7 @@ source_set("permissions") { + "//chrome/browser/metrics", + "//chrome/browser/nfc", + "//chrome/browser/optimization_guide", +- "//chrome/browser/passage_embeddings", ++ # "//chrome/browser/passage_embeddings", + "//chrome/browser/profiles", + "//chrome/browser/profiles:profile", + "//chrome/browser/resource_coordinator", +@@ -116,7 +114,7 @@ source_set("permissions") { + "//components/language_detection/core", + "//components/optimization_guide/core", + "//components/optimization_guide/proto:optimization_guide_proto", +- "//components/passage_embeddings/core", ++ # "//components/passage_embeddings/core", + "//components/permissions", + "//components/permissions/prediction_service", + "//components/pref_registry", +@@ -125,7 +123,7 @@ source_set("permissions") { + "//components/safe_browsing/core/browser/db:database_manager", + "//components/safe_browsing/core/common", + "//components/safe_browsing/core/common:safe_browsing_prefs", +- "//components/segmentation_platform/internal:optimization_guide_segmentation_handler", ++ # "//components/segmentation_platform/internal:optimization_guide_segmentation_handler", + "//components/site_engagement/content", + "//components/subresource_filter/content/browser", + "//components/supervised_user/core/common:features", +@@ -188,12 +186,12 @@ source_set("permissions") { + } + } + +- if (!is_android) { +- deps += [ +- "//chrome/browser/ui/permission_bubble", +- "//third_party/tflite_support", +- ] +- } ++ # if (!is_android) { ++ # deps += [ ++ # "//chrome/browser/ui/permission_bubble", ++ # "//third_party/tflite_support", ++ # ] ++ # } + + if (safe_browsing_mode != 0) { + sources += [ diff --git a/chrome/browser/permissions/chrome_permissions_client.cc b/chrome/browser/permissions/chrome_permissions_client.cc --- a/chrome/browser/permissions/chrome_permissions_client.cc +++ b/chrome/browser/permissions/chrome_permissions_client.cc -@@ -474,8 +474,6 @@ ChromePermissionsClient::CreatePermissionUiSelectors( +@@ -475,8 +475,6 @@ ChromePermissionsClient::CreatePermissionUiSelectors( #endif selectors.emplace_back(std::make_unique( Profile::FromBrowserContext(browser_context))); @@ -277,15 +354,15 @@ diff --git a/chrome/browser/permissions/chrome_permissions_client.cc b/chrome/br diff --git a/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc b/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc --- a/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc +++ b/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc -@@ -25,6 +25,7 @@ PassageEmbedderDelegate::PassageEmbedderDelegate(Profile* profile) +@@ -26,6 +26,7 @@ PassageEmbedderDelegate::PassageEmbedderDelegate(Profile* profile) : profile_(profile) {} Embedder* PassageEmbedderDelegate::GetPassageEmbedder() { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ if (auto* prediction_model_handler_provider = PredictionModelHandlerProviderFactory::GetForBrowserContext( profile_)) { -@@ -38,6 +39,7 @@ Embedder* PassageEmbedderDelegate::GetPassageEmbedder() { +@@ -39,6 +40,7 @@ Embedder* PassageEmbedderDelegate::GetPassageEmbedder() { return prediction_model_handler_provider->GetPassageEmbedder(); } PermissionUmaUtil::RecordPassageEmbedderMetadataValid(false); @@ -296,15 +373,15 @@ diff --git a/chrome/browser/permissions/prediction_service/passage_embedder_dele diff --git a/chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.cc b/chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.cc --- a/chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.cc +++ b/chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.cc -@@ -414,6 +414,7 @@ void PermissionsAiUiSelector::SelectUiToUse( +@@ -383,6 +383,7 @@ void PermissionsAiUiSelector::SelectUiToUse( } } -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ void PermissionsAiUiSelector::OnGetInnerTextForOnDeviceModel( ModelExecutionData model_data, ModelExecutionCallback model_execution_callback, -@@ -468,6 +469,7 @@ void PermissionsAiUiSelector::OnGetInnerTextForOnDeviceModel( +@@ -437,6 +438,7 @@ void PermissionsAiUiSelector::OnGetInnerTextForOnDeviceModel( InquireServerModel(model_data.features, std::move(model_data.request_metadata)); } @@ -312,7 +389,7 @@ diff --git a/chrome/browser/permissions/prediction_service/permissions_ai_ui_sel void PermissionsAiUiSelector::OnTimeout() { VLOG(1) << "[CPSS] Overall timeout for prediction reached."; -@@ -677,6 +679,7 @@ bool PermissionsAiUiSelector::ShouldHoldBack( +@@ -647,6 +649,7 @@ bool PermissionsAiUiSelector::ShouldHoldBack( PredictionSource PermissionsAiUiSelector::GetPredictionTypeToUse( permissions::RequestType request_type) { @@ -320,30 +397,30 @@ diff --git a/chrome/browser/permissions/prediction_service/permissions_ai_ui_sel const bool is_msbb_enabled = profile_->GetPrefs()->GetBoolean( unified_consent::prefs::kUrlKeyedAnonymizedDataCollectionEnabled); -@@ -749,6 +752,7 @@ PredictionSource PermissionsAiUiSelector::GetPredictionTypeToUse( +@@ -715,6 +718,7 @@ PredictionSource PermissionsAiUiSelector::GetPredictionTypeToUse( return PredictionSource::kNoCpssModel; } -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ void PermissionsAiUiSelector::set_language_detection_observer_for_testing( std::unique_ptr language_detection_observer) { -@@ -761,6 +765,7 @@ void PermissionsAiUiSelector::set_inner_text_for_testing( +@@ -727,6 +731,7 @@ void PermissionsAiUiSelector::set_inner_text_for_testing( CHECK_IS_TEST(); inner_text_for_testing_ = std::move(inner_text_); } +#endif - #if BUILDFLAG(BUILD_WITH_TFLITE_LIB) void PermissionsAiUiSelector::set_snapshot_for_testing(SkBitmap snapshot) { + CHECK_IS_TEST(); diff --git a/chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.h b/chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.h --- a/chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.h +++ b/chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.h -@@ -119,13 +119,14 @@ class PermissionsAiUiSelector : public permissions::PermissionUiSelector { - void set_snapshot_for_testing(SkBitmap snapshot); - #endif +@@ -111,13 +111,14 @@ class PermissionsAiUiSelector : public permissions::PermissionUiSelector { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) + void set_snapshot_for_testing(SkBitmap snapshot); + ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ void set_inner_text_for_testing( content_extraction::InnerTextResult inner_text); @@ -355,11 +432,11 @@ diff --git a/chrome/browser/permissions/prediction_service/permissions_ai_ui_sel void set_callback_for_testing(DecisionMadeCallback callback) { callback_ = std::move(callback); } -@@ -176,10 +177,12 @@ class PermissionsAiUiSelector : public permissions::PermissionUiSelector { +@@ -168,10 +169,12 @@ class PermissionsAiUiSelector : public permissions::PermissionUiSelector { // later. When the text is fetched asynchronously with success, // model_execution_callback will get called to continue the chain of // asynchronously added input data. -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ void OnGetInnerTextForOnDeviceModel( ModelExecutionData model_data, ModelExecutionCallback model_execution_callback, @@ -371,28 +448,30 @@ diff --git a/chrome/browser/permissions/prediction_service/permissions_ai_ui_sel diff --git a/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc b/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc --- a/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc +++ b/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc -@@ -13,8 +13,11 @@ - #include "chrome/browser/optimization_guide/optimization_guide_keyed_service.h" +@@ -12,9 +12,12 @@ + #include "build/build_config.h" #include "components/optimization_guide/core/delivery/optimization_guide_model_provider.h" #include "components/permissions/features.h" +-#include "components/permissions/prediction_service/permissions_aiv4_handler.h" + -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ +#include "components/permissions/prediction_service/permissions_aiv3_handler.h" - #include "components/permissions/prediction_service/permissions_aiv4_handler.h" + #include "components/permissions/prediction_service/prediction_model_handler.h" -#include "components/permissions/request_type.h" ++#include "components/permissions/prediction_service/permissions_aiv4_handler.h" +#endif #if BUILDFLAG(IS_ANDROID) #include "components/download/public/background_service/download_params.h" -@@ -30,6 +33,7 @@ using optimization_guide::proto::OptimizationTarget; +@@ -26,6 +29,7 @@ using optimization_guide::proto::OptimizationTarget; namespace { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ inline OptimizationTarget getGeolocationAiv4OptTarget() { #if BUILDFLAG(IS_ANDROID) return OptimizationTarget:: -@@ -48,6 +52,7 @@ inline OptimizationTarget getNotificationsAiv4OptTarget() { +@@ -44,6 +48,7 @@ inline OptimizationTarget getNotificationsAiv4OptTarget() { OPTIMIZATION_TARGET_PERMISSIONS_AIV4_NOTIFICATIONS_DESKTOP; #endif } @@ -400,12 +479,12 @@ diff --git a/chrome/browser/permissions/prediction_service/prediction_model_hand } // namespace -@@ -55,7 +60,10 @@ PredictionModelHandlerProvider::PredictionModelHandlerProvider( - OptimizationGuideKeyedService* optimization_guide, +@@ -51,7 +56,10 @@ PredictionModelHandlerProvider::PredictionModelHandlerProvider( + optimization_guide::OptimizationGuideModelProvider* optimization_guide, passage_embeddings::EmbedderMetadataProvider* embedder_metadata_provider, passage_embeddings::Embedder* passage_embedder) - : passage_embedder_(passage_embedder) { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ + : passage_embedder_(passage_embedder) +#endif + { @@ -415,18 +494,18 @@ diff --git a/chrome/browser/permissions/prediction_service/prediction_model_hand diff --git a/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.h b/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.h --- a/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.h +++ b/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.h -@@ -56,9 +56,11 @@ class PredictionModelHandlerProvider - #endif // BUILDFLAG(BUILD_WITH_TFLITE_LIB) +@@ -54,9 +54,11 @@ class PredictionModelHandlerProvider + passage_embeddings::Embedder* passage_embedder_); private: -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ // EmbedderMetadataObserver: void EmbedderMetadataUpdated( passage_embeddings::EmbedderMetadata metadata) override; +#endif - #if BUILDFLAG(BUILD_WITH_TFLITE_LIB) // LINT.IfChange(ModelHandlers) + std::unique_ptr diff --git a/chrome/browser/permissions/quiet_notification_permission_ui_state.cc b/chrome/browser/permissions/quiet_notification_permission_ui_state.cc --- a/chrome/browser/permissions/quiet_notification_permission_ui_state.cc +++ b/chrome/browser/permissions/quiet_notification_permission_ui_state.cc @@ -484,7 +563,7 @@ diff --git a/chrome/browser/predictors/predictors_features.cc b/chrome/browser/p diff --git a/chrome/browser/preloading/prefetch/search_prefetch/field_trial_settings.cc b/chrome/browser/preloading/prefetch/search_prefetch/field_trial_settings.cc --- a/chrome/browser/preloading/prefetch/search_prefetch/field_trial_settings.cc +++ b/chrome/browser/preloading/prefetch/search_prefetch/field_trial_settings.cc -@@ -255,3 +255,7 @@ bool ShouldSuppressPrefetchForUnsupportedMode(const AutocompleteMatch& match) { +@@ -258,3 +258,7 @@ bool ShouldSuppressPrefetchForUnsupportedMode(const AutocompleteMatch& match) { } return ShouldSuppressPrefetchForUnsupportedMode(match.destination_url); } @@ -506,7 +585,7 @@ diff --git a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc -@@ -1240,7 +1240,6 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -1261,7 +1261,6 @@ void ChromeBrowserMainExtraPartsProfiles:: #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) policy::UserPolicyOidcSigninServiceFactory::GetInstance(); #endif @@ -517,7 +596,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc diff --git a/chrome/browser/safe_browsing/BUILD.gn b/chrome/browser/safe_browsing/BUILD.gn --- a/chrome/browser/safe_browsing/BUILD.gn +++ b/chrome/browser/safe_browsing/BUILD.gn -@@ -60,7 +60,6 @@ static_library("safe_browsing") { +@@ -64,7 +64,6 @@ static_library("safe_browsing") { "//components/resources:components_resources_grit", "//components/safe_browsing:buildflags", "//components/safe_browsing/content/browser", @@ -548,7 +627,7 @@ diff --git a/chrome/browser/safe_browsing/notification_content_detection/notific content::BrowserContext* context) const { CHECK(opt_guide); CHECK(context); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ auto database_manager = g_browser_process->safe_browsing_service()->database_manager(); scoped_refptr background_task_runner = @@ -576,7 +655,7 @@ diff --git a/chrome/browser/ui/android/preloading/java/src/org/chromium/chrome/b diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/browser/ui/autofill/chrome_autofill_client.cc --- a/chrome/browser/ui/autofill/chrome_autofill_client.cc +++ b/chrome/browser/ui/autofill/chrome_autofill_client.cc -@@ -585,7 +585,7 @@ void ChromeAutofillClient::GetAiPageContent(GetAiPageContentCallback callback) { +@@ -580,7 +580,7 @@ void ChromeAutofillClient::GetAiPageContent(GetAiPageContentCallback callback) { } AutofillAiManager* ChromeAutofillClient::GetAutofillAiManager() { @@ -607,7 +686,7 @@ diff --git a/chrome/browser/ui/autofill/chrome_autofill_client.cc b/chrome/brows diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc --- a/chrome/browser/ui/tab_helpers.cc +++ b/chrome/browser/ui/tab_helpers.cc -@@ -477,7 +477,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -486,7 +486,6 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { } MixedContentSettingsTabHelper::CreateForWebContents(web_contents); NavigationMetricsRecorder::CreateForWebContents(web_contents); @@ -622,7 +701,7 @@ diff --git a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals mojo::PendingReceiver receiver, autofill::MlLogRouter* log_router) : receiver_(this, std::move(receiver)) { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ if (log_router) { log_router_observation_.Observe(log_router); } @@ -645,7 +724,7 @@ diff --git a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals private: mojo::Receiver receiver_; mojo::Remote page_; -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ base::ScopedObservation log_router_observation_{this}; +#endif @@ -667,7 +746,7 @@ diff --git a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals void AutofillMlInternalsUI::BindInterface( mojo::PendingReceiver receiver) { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ page_handler_ = std::make_unique( std::move(receiver), autofill::MlLogRouterFactory::GetForProfile( Profile::FromWebUI(web_ui()))); @@ -675,6 +754,19 @@ diff --git a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals } WEB_UI_CONTROLLER_TYPE_IMPL(AutofillMlInternalsUI) +diff --git a/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc b/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc +--- a/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc ++++ b/chrome/browser/ui/webui/omnibox/omnibox_page_handler.cc +@@ -290,8 +290,5 @@ OmniboxPageHandler::GetAutocompleteControllerType( + } + + AutocompleteScoringModelService* OmniboxPageHandler::GetMlService() { +- return OmniboxFieldTrial::IsMlUrlScoringEnabled() +- ? AutocompleteScoringModelServiceFactory::GetInstance() +- ->GetForProfile(profile_) +- : nullptr; ++ return nullptr; + } diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc b/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc --- a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc +++ b/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc @@ -682,7 +774,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc #include "base/task/thread_pool.h" #include "base/time/time.h" #include "base/values.h" -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ #include "chrome/renderer/accessibility/phrase_segmentation/dependency_parser_model.h" +#endif #include "chrome/renderer/accessibility/phrase_segmentation/dependency_tree.h" @@ -692,7 +784,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc namespace { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ // Returns the dependency parser model for this renderer process. DependencyParserModel& GetDependencyParserModel_() { static base::NoDestructor instance; @@ -708,13 +800,13 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc } } -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ DependencyParserModel& ReadAloudAppModel::GetDependencyParserModel() { return GetDependencyParserModel_(); } +#endif -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ void ReadAloudAppModel::CalculatePhrases( a11y::ReadAloudCurrentGranularity& granularity) { if (!features::IsReadAnythingReadAloudPhraseHighlightingEnabled()) { @@ -732,7 +824,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc void ReadAloudAppModel::StartPhraseCalculation() { if (processed_granularities_on_current_page_.size() > 0) { current_phrase_calculation_index_ = 0; -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ CalculatePhrases(processed_granularities_on_current_page_[0]); +#endif } @@ -740,7 +832,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc void ReadAloudAppModel::UpdatePhraseBoundaries(std::vector tokens, std::vector heads) { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ // Reset the phrase calculation flag, so that the next phrase calculation can // be scheduled, if needed. is_calculating_phrases = false; @@ -760,7 +852,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.h #include "base/values.h" #include "chrome/common/read_anything/read_anything.mojom.h" +#include "components/optimization_guide/machine_learning_tflite_buildflags.h" -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ #include "chrome/renderer/accessibility/phrase_segmentation/dependency_parser_model.h" +#endif #include "chrome/renderer/accessibility/read_anything/read_aloud_traversal_utils.h" @@ -770,7 +862,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.h bool is_docs, const std::set* current_nodes); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ // Get the dependency parsing model for this renderer process. DependencyParserModel& GetDependencyParserModel(); +#endif @@ -781,7 +873,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.h // still needs to be read. bool NoValidTextRemainingInCurrentNode(bool is_pdf, bool is_docs) const; -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ // Asynchronously segment the given granularity into phrases. Once the phrases // are calculated, `UpdatePhraseBoundaries` will be called. void CalculatePhrases(a11y::ReadAloudCurrentGranularity& granularity); @@ -805,21 +897,21 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr #include "chrome/common/read_anything/read_anything.mojom-shared.h" #include "chrome/common/read_anything/read_anything_util.h" #include "chrome/renderer/accessibility/ax_tree_distiller.h" -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ #include "chrome/renderer/accessibility/phrase_segmentation/dependency_parser_model.h" +#endif #include "chrome/renderer/accessibility/read_anything/read_aloud_traversal_utils.h" #include "chrome/renderer/accessibility/read_anything/read_anything_app_model.h" #include "chrome/renderer/accessibility/read_anything/read_anything_node_utils.h" -@@ -2135,6 +2137,7 @@ void ReadAnythingAppController::OnConnected() { +@@ -2152,6 +2154,7 @@ void ReadAnythingAppController::OnConnected() { render_frame()->GetBrowserInterfaceBroker().GetInterface( std::move(page_handler_factory_receiver)); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ // Get the dependency parser model used by phrase-based highlighting. if (read_aloud_model_.GetDependencyParserModel().IsAvailable()) { return; -@@ -2143,6 +2146,7 @@ void ReadAnythingAppController::OnConnected() { +@@ -2160,6 +2163,7 @@ void ReadAnythingAppController::OnConnected() { page_handler_->GetDependencyParserModel( base::BindOnce(&ReadAnythingAppController::UpdateDependencyParserModel, weak_ptr_factory_.GetWeakPtr())); @@ -827,28 +919,28 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr SetDistillationState( read_anything::mojom::ReadAnythingDistillationState::kNotAttempted); } -@@ -2415,8 +2419,10 @@ std::u16string ReadAnythingAppController::GetCurrentTextContent() { +@@ -2432,8 +2436,10 @@ std::u16string ReadAnythingAppController::GetCurrentTextContent() { } void ReadAnythingAppController::PreprocessTextForSpeech() { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ read_aloud_model_.PreprocessTextForSpeech(model_.is_pdf(), model_.IsDocs(), model_.GetCurrentlyVisibleNodes()); +#endif } void ReadAnythingAppController::MovePositionToNextGranularity() { -@@ -2768,14 +2774,18 @@ bool ReadAnythingAppController::IsDocsLoadMoreButtonVisible() const { +@@ -2801,14 +2807,18 @@ bool ReadAnythingAppController::IsDocsLoadMoreButtonVisible() const { void ReadAnythingAppController::UpdateDependencyParserModel( base::File model_file) { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ read_aloud_model_.GetDependencyParserModel().UpdateWithFile( std::move(model_file)); +#endif } -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ DependencyParserModel& ReadAnythingAppController::GetDependencyParserModelForTesting() { return read_aloud_model_.GetDependencyParserModel(); @@ -864,17 +956,17 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr } // namespace ukm class AXTreeDistiller; -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ class DependencyParserModel; +#endif class ReadAnythingAppControllerTest; class ReadAnythingAppControllerScreen2xDataCollectionModeTest; class ReadAnythingAppControllerReadabilityTest; -@@ -381,7 +383,9 @@ class ReadAnythingAppController +@@ -382,7 +384,9 @@ class ReadAnythingAppController // available. void UpdateDependencyParserModel(base::File model_file); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ DependencyParserModel& GetDependencyParserModelForTesting(); +#endif @@ -883,7 +975,7 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn -@@ -6005,8 +6005,6 @@ if (!is_android) { +@@ -5969,8 +5969,6 @@ if (!is_android) { "//chrome/browser/ui/exclusive_access:test_support", "//chrome/browser/ui/hats", "//components/safe_browsing/content/browser:safe_browsing_blocking_page", @@ -932,34 +1024,99 @@ diff --git a/chrome/utility/services.cc b/chrome/utility/services.cc diff --git a/components/BUILD.gn b/components/BUILD.gn --- a/components/BUILD.gn +++ b/components/BUILD.gn -@@ -629,7 +629,7 @@ test("components_unittests") { - "//components/media_router/common/providers/cast/channel:unit_tests", +@@ -639,7 +639,7 @@ test("components_unittests") { "//components/one_time_tokens/core/browser:unit_tests", "//components/page_info:unit_tests", + "//components/password_manager/core/browser/actor_login:unit_tests", - "//components/permissions/prediction_service:unit_tests", + # "//components/permissions/prediction_service:unit_tests", "//components/privacy_sandbox/privacy_sandbox_attestations:unit_tests", "//components/safety_check:unit_tests", "//components/security_interstitials/content:unit_tests", +diff --git a/components/autofill/core/browser/BUILD.gn b/components/autofill/core/browser/BUILD.gn +--- a/components/autofill/core/browser/BUILD.gn ++++ b/components/autofill/core/browser/BUILD.gn +@@ -555,16 +555,16 @@ static_library("browser") { + "ml_model/autofill_ai/autofill_ai_model_executor.h", + "ml_model/autofill_ai/autofill_ai_model_executor_impl.cc", + "ml_model/autofill_ai/autofill_ai_model_executor_impl.h", +- "ml_model/field_classification_model_encoder.cc", +- "ml_model/field_classification_model_encoder.h", +- "ml_model/field_classification_model_executor.cc", +- "ml_model/field_classification_model_executor.h", +- "ml_model/field_classification_model_handler.cc", +- "ml_model/field_classification_model_handler.h", +- "ml_model/logging/ml_log_router.cc", +- "ml_model/logging/ml_log_router.h", +- "ml_model/model_predictions.cc", +- "ml_model/model_predictions.h", ++ # "ml_model/field_classification_model_encoder.cc", ++ # "ml_model/field_classification_model_encoder.h", ++ # "ml_model/field_classification_model_executor.cc", ++ # "ml_model/field_classification_model_executor.h", ++ # "ml_model/field_classification_model_handler.cc", ++ # "ml_model/field_classification_model_handler.h", ++ # "ml_model/logging/ml_log_router.cc", ++ # "ml_model/logging/ml_log_router.h", ++ # "ml_model/model_predictions.cc", ++ # "ml_model/model_predictions.h", + "network/autofill_ai/fake_wallet_pass_access_manager.cc", + "network/autofill_ai/fake_wallet_pass_access_manager.h", + "network/autofill_ai/private_pass_conversion_util.cc", +@@ -997,7 +997,7 @@ static_library("browser") { + ":country_data", + ":legal_message_line", + ":payments_sync_utils", +- "//components/autofill/core/browser/ml_model/logging:mojo_bindings", ++ # "//components/autofill/core/browser/ml_model/logging:mojo_bindings", + "//components/autofill/core/browser/payments:card_unmask_challenge_option", + "//components/autofill/core/browser/proto", + "//components/autofill/core/browser/proto:autofill_ai_proto", +@@ -1013,10 +1013,10 @@ static_library("browser") { + "//third_party/abseil-cpp:absl", + "//third_party/libaddressinput", + "//third_party/libaddressinput:strings_grit", +- "//third_party/tflite", +- "//third_party/tflite:tflite_public_headers", +- "//third_party/tflite_support", +- "//third_party/tflite_support:tflite_support_proto", ++ # "//third_party/tflite", ++ # "//third_party/tflite:tflite_public_headers", ++ # "//third_party/tflite_support", ++ # "//third_party/tflite_support:tflite_support_proto", + "//ui/base", + "//ui/gfx/geometry", + "//ui/gfx/range", diff --git a/components/autofill/core/browser/foundations/autofill_manager.cc b/components/autofill/core/browser/foundations/autofill_manager.cc --- a/components/autofill/core/browser/foundations/autofill_manager.cc +++ b/components/autofill/core/browser/foundations/autofill_manager.cc -@@ -140,8 +140,10 @@ struct AutofillManager::AsyncContext { +@@ -35,8 +35,8 @@ + #include "components/autofill/core/browser/logging/log_manager.h" + #include "components/autofill/core/browser/metrics/form_interactions_ukm_logger.h" + #include "components/autofill/core/browser/metrics/quality_metrics.h" +-#include "components/autofill/core/browser/ml_model/field_classification_model_handler.h" +-#include "components/autofill/core/browser/ml_model/model_predictions.h" ++// #include "components/autofill/core/browser/ml_model/field_classification_model_handler.h" ++// #include "components/autofill/core/browser/ml_model/model_predictions.h" + #include "components/autofill/core/browser/suggestions/suggestion_hiding_reason.h" + #include "components/autofill/core/browser/suggestions/suggestion_util.h" + #include "components/autofill/core/common/autofill_constants.h" +@@ -137,8 +137,10 @@ struct AutofillManager::AsyncContext { std::vector forms; std::vector regex_predictions; -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ std::vector autofill_predictions; std::vector password_manager_predictions; +#endif GeoIpCountryCode country_code; LanguageCode current_page_language; std::unique_ptr log_manager; -@@ -1034,12 +1036,14 @@ void AutofillManager::UpdateFormCache( +@@ -1024,12 +1026,14 @@ void AutofillManager::UpdateFormCache( auto apply_predictions = [](FormStructure& form_structure, const AsyncContext& context, size_t i) { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ if (!context.autofill_predictions.empty()) { context.autofill_predictions[i].ApplyTo(form_structure.fields()); } @@ -970,15 +1127,15 @@ diff --git a/components/autofill/core/browser/foundations/autofill_manager.cc b/ if (!context.regex_predictions.empty()) { context.regex_predictions[i].ApplyTo(form_structure.fields()); } -@@ -1155,6 +1159,7 @@ void AutofillManager::LogCurrentFieldTypes( +@@ -1145,6 +1149,7 @@ void AutofillManager::LogCurrentFieldTypes( } } -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ void AutofillManager::SubscribeToMlModelChanges( FieldClassificationModelHandler& handler) { switch (handler.optimization_target()) { -@@ -1178,5 +1183,6 @@ void AutofillManager::SubscribeToMlModelChanges( +@@ -1168,5 +1173,6 @@ void AutofillManager::SubscribeToMlModelChanges( NOTREACHED(); } } @@ -988,7 +1145,7 @@ diff --git a/components/autofill/core/browser/foundations/autofill_manager.cc b/ diff --git a/components/autofill/core/browser/foundations/autofill_manager.h b/components/autofill/core/browser/foundations/autofill_manager.h --- a/components/autofill/core/browser/foundations/autofill_manager.h +++ b/components/autofill/core/browser/foundations/autofill_manager.h -@@ -40,6 +40,7 @@ +@@ -41,6 +41,7 @@ #include "components/autofill/core/common/mojom/autofill_types.mojom.h" #include "components/autofill/core/common/signatures.h" #include "components/autofill/core/common/unique_ids.h" @@ -996,11 +1153,11 @@ diff --git a/components/autofill/core/browser/foundations/autofill_manager.h b/c #include "components/translate/core/browser/translate_driver.h" namespace autofill { -@@ -392,10 +393,12 @@ class AutofillManager +@@ -394,10 +395,12 @@ class AutofillManager // Reparses all known forms. void ReparseKnownForms(); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ // After subscribing, FieldClassificationModelHandler::OnModelUpdated() will // trigger ReparseKnownForms(). There may be a handler for Autofill and/or // Password Manager. @@ -1012,7 +1169,7 @@ diff --git a/components/autofill/core/browser/foundations/autofill_manager.h b/c diff --git a/components/autofill/core/browser/integrators/optimization_guide/autofill_optimization_guide_decider.cc b/components/autofill/core/browser/integrators/optimization_guide/autofill_optimization_guide_decider.cc --- a/components/autofill/core/browser/integrators/optimization_guide/autofill_optimization_guide_decider.cc +++ b/components/autofill/core/browser/integrators/optimization_guide/autofill_optimization_guide_decider.cc -@@ -282,6 +282,7 @@ void AutofillOptimizationGuideDecider::OnPaymentsDataLoaded( +@@ -292,6 +292,7 @@ void AutofillOptimizationGuideDecider::OnPaymentsDataLoaded( // If we do not have any optimization types to register, do not do anything. if (!optimization_types.empty()) { @@ -1020,7 +1177,7 @@ diff --git a/components/autofill/core/browser/integrators/optimization_guide/aut decider_->RegisterOptimizationTypes( std::vector( std::move(optimization_types).extract())); -@@ -386,7 +387,7 @@ bool AutofillOptimizationGuideDecider::ShouldBlockSingleFieldSuggestions( +@@ -396,7 +397,7 @@ bool AutofillOptimizationGuideDecider::ShouldBlockSingleFieldSuggestions( const AutofillField* field) const { // If the field's storable type is `IBAN_VALUE`, check whether IBAN // suggestions should be blocked based on `url`. @@ -1029,7 +1186,7 @@ diff --git a/components/autofill/core/browser/integrators/optimization_guide/aut optimization_guide::OptimizationGuideDecision decision = decider_->CanApplyOptimization( url, optimization_guide::proto::IBAN_AUTOFILL_BLOCKED, -@@ -412,7 +413,7 @@ bool AutofillOptimizationGuideDecider::ShouldBlockFormFieldSuggestion( +@@ -422,7 +423,7 @@ bool AutofillOptimizationGuideDecider::ShouldBlockFormFieldSuggestion( const CreditCard& card) const { if (auto optimization_type = GetVcnMerchantOptOutOptimizationTypeForCard(card); @@ -1065,11 +1222,11 @@ diff --git a/components/autofill/core/browser/ml_model/field_classification_mode } } -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ autofill_ml_internals::mojom::MlPredictionLogPtr FieldClassificationModelHandler::CreateMlPredictionLog( const FormData& form) const { -@@ -239,6 +238,7 @@ FieldClassificationModelHandler::CreateMlPredictionLog( +@@ -223,6 +222,7 @@ FieldClassificationModelHandler::CreateMlPredictionLog( prediction_log->start_time = base::Time::Now(); return prediction_log; } @@ -1077,11 +1234,11 @@ diff --git a/components/autofill/core/browser/ml_model/field_classification_mode void PopulateMlPredictionLogAfterInference( autofill_ml_internals::mojom::MlPredictionLog& prediction_log, -@@ -268,9 +268,11 @@ void FieldClassificationModelHandler::GetModelPredictionsForForm( +@@ -252,9 +252,11 @@ void FieldClassificationModelHandler::GetModelPredictionsForForm( std::optional prediction_log = std::nullopt; -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ if (log_router_ && log_router_->HasReceivers()) { prediction_log = CreateMlPredictionLog(form); } @@ -1089,11 +1246,11 @@ diff --git a/components/autofill/core/browser/ml_model/field_classification_mode FieldClassificationModelEncoder::ModelInput encoded_input = state_->encoder.EncodeForm(form); -@@ -336,11 +338,13 @@ void FieldClassificationModelHandler::GetModelPredictionsForForm( +@@ -320,11 +322,13 @@ void FieldClassificationModelHandler::GetModelPredictionsForForm( predicted_types); } } -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ if (output && prediction_log && self->log_router_) { PopulateMlPredictionLogAfterInference(*prediction_log.value(), output.value()); @@ -1111,7 +1268,7 @@ diff --git a/components/autofill/core/browser/ml_model/field_classification_mode #include "components/autofill/core/browser/form_structure.h" #include "components/autofill/core/browser/ml_model/field_classification_model_encoder.h" +#include "components/optimization_guide/machine_learning_tflite_buildflags.h" -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ #include "components/autofill/core/browser/ml_model/logging/autofill_ml_internals.mojom.h" #include "components/autofill/core/browser/ml_model/logging/ml_log_router.h" +#endif @@ -1132,7 +1289,7 @@ diff --git a/components/autofill/core/browser/ml_model/field_classification_mode ModelInputHash CalculateModelInputHash( const FieldClassificationModelEncoder::ModelInput& input); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ autofill_ml_internals::mojom::MlPredictionLogPtr CreateMlPredictionLog( const FormData& form_structure) const; +#endif @@ -1143,7 +1300,7 @@ diff --git a/components/autofill/core/browser/ml_model/field_classification_mode ModelChangeCallbackList model_change_callback_list_; -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ raw_ptr log_router_ = nullptr; +#endif @@ -1167,21 +1324,21 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/ #include "components/omnibox/browser/autocomplete_match.h" #include "components/omnibox/browser/autocomplete_match_type.h" #include "components/omnibox/browser/autocomplete_provider.h" -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ #include "components/omnibox/browser/autocomplete_provider_client.h" +#endif #include "components/omnibox/browser/autocomplete_scoring_signals_annotator.h" #include "components/omnibox/browser/bookmark_provider.h" #include "components/omnibox/browser/bookmark_scoring_signals_annotator.h" -@@ -128,6 +130,7 @@ using ProviderType = AutocompleteProvider::Type; +@@ -130,6 +132,7 @@ using ProviderType = AutocompleteProvider::Type; constexpr bool is_android = !!BUILDFLAG(IS_ANDROID); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ void RecordMlScoreCoverage(size_t matches_with_non_null_scores, size_t total_scored_matches) { int percent_score_coverage = -@@ -236,6 +239,7 @@ void RecordTotalMatchesScored(size_t num_scored) { +@@ -238,6 +241,7 @@ void RecordTotalMatchesScored(size_t num_scored) { base::UmaHistogramCounts1000("Omnibox.URLScoringModelExecuted.Matches", num_scored); } @@ -1209,10 +1366,22 @@ diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omn } // static +diff --git a/components/omnibox/browser/omnibox_field_trial.cc b/components/omnibox/browser/omnibox_field_trial.cc +--- a/components/omnibox/browser/omnibox_field_trial.cc ++++ b/components/omnibox/browser/omnibox_field_trial.cc +@@ -830,7 +830,7 @@ bool AreScoringSignalsAnnotatorsEnabled() { + return GetMLConfig().enable_scoring_signals_annotators; + } + bool IsMlUrlScoringEnabled() { +- return IsUrlScoringModelEnabled() && GetMLConfig().ml_url_scoring; ++ return false; + } + bool IsMlUrlScoringCounterfactual() { + return IsMlUrlScoringEnabled() && GetMLConfig().ml_url_scoring_counterfactual; diff --git a/components/optimization_guide/core/delivery/prediction_model_download_manager.cc b/components/optimization_guide/core/delivery/prediction_model_download_manager.cc --- a/components/optimization_guide/core/delivery/prediction_model_download_manager.cc +++ b/components/optimization_guide/core/delivery/prediction_model_download_manager.cc -@@ -55,7 +55,7 @@ const char kDisableModelDownloadsForBenchmarking[] = +@@ -56,7 +56,7 @@ const char kDisableModelDownloadsForBenchmarking[] = // we require models to come from. constexpr std::array kPublisherKeyHash = { 0x66, 0xa1, 0xd9, 0x3e, 0x4e, 0x5a, 0x66, 0x8a, 0x0f, 0xd3, 0xfa, @@ -1221,7 +1390,7 @@ diff --git a/components/optimization_guide/core/delivery/prediction_model_downlo 0x5c, 0x7f, 0xd0, 0x0c, 0xa1, 0x6e, 0xef, 0xdd, 0x63, 0x7a}; const net::NetworkTrafficAnnotationTag kOptimizationGuidePredictionModelsTrafficAnnotation = -@@ -125,7 +125,7 @@ PredictionModelDownloadManager::PredictionModelDownloadManager( +@@ -126,7 +126,7 @@ PredictionModelDownloadManager::PredictionModelDownloadManager( unzip::UnzipperFactory unzipper_factory, scoped_refptr background_task_runner) : download_service_tracker_(download_service_tracker), @@ -1230,7 +1399,7 @@ diff --git a/components/optimization_guide/core/delivery/prediction_model_downlo api_key_(features::GetOptimizationGuideServiceAPIKey()), get_base_model_dir_for_download_callback_( get_base_model_dir_for_download_callback), -@@ -139,6 +139,7 @@ void PredictionModelDownloadManager::StartDownload( +@@ -140,6 +140,7 @@ void PredictionModelDownloadManager::StartDownload( const GURL& download_url, proto::OptimizationTarget optimization_target, const std::optional& scheduling_params) { @@ -1238,7 +1407,7 @@ diff --git a/components/optimization_guide/core/delivery/prediction_model_downlo download::DownloadParams download_params; download_params.client = download::DownloadClient::OPTIMIZATION_GUIDE_PREDICTION_MODELS; -@@ -303,6 +304,7 @@ bool PredictionModelDownloadManager::VerifyDownload( +@@ -304,6 +305,7 @@ bool PredictionModelDownloadManager::VerifyDownload( const base::FilePath& download_file_path, const base::FilePath& base_model_dir, bool delete_file_on_error) { @@ -1249,7 +1418,7 @@ diff --git a/components/optimization_guide/core/delivery/prediction_model_downlo diff --git a/components/optimization_guide/core/delivery/prediction_model_fetcher_impl.cc b/components/optimization_guide/core/delivery/prediction_model_fetcher_impl.cc --- a/components/optimization_guide/core/delivery/prediction_model_fetcher_impl.cc +++ b/components/optimization_guide/core/delivery/prediction_model_fetcher_impl.cc -@@ -53,6 +53,7 @@ bool PredictionModelFetcherImpl::FetchOptimizationGuideServiceModels( +@@ -54,6 +54,7 @@ bool PredictionModelFetcherImpl::FetchOptimizationGuideServiceModels( proto::RequestContext request_context, const std::string& locale, ModelsFetchedCallback models_fetched_callback) { @@ -1260,7 +1429,7 @@ diff --git a/components/optimization_guide/core/delivery/prediction_model_fetche diff --git a/components/optimization_guide/core/hints/hints_fetcher.cc b/components/optimization_guide/core/hints/hints_fetcher.cc --- a/components/optimization_guide/core/hints/hints_fetcher.cc +++ b/components/optimization_guide/core/hints/hints_fetcher.cc -@@ -204,6 +204,7 @@ bool HintsFetcher::FetchOptimizationGuideServiceHints( +@@ -206,6 +206,7 @@ bool HintsFetcher::FetchOptimizationGuideServiceHints( bool skip_cache, HintsFetchedCallback hints_fetched_callback, std::optional request_context_metadata) { @@ -1271,7 +1440,7 @@ diff --git a/components/optimization_guide/core/hints/hints_fetcher.cc b/compone diff --git a/components/optimization_guide/core/hints/hints_manager.cc b/components/optimization_guide/core/hints/hints_manager.cc --- a/components/optimization_guide/core/hints/hints_manager.cc +++ b/components/optimization_guide/core/hints/hints_manager.cc -@@ -461,6 +461,7 @@ void HintsManager::Shutdown() { +@@ -460,6 +460,7 @@ void HintsManager::Shutdown() { OptimizationGuideDecision HintsManager::GetOptimizationGuideDecisionFromOptimizationTypeDecision( OptimizationTypeDecision optimization_type_decision) { @@ -1279,7 +1448,7 @@ diff --git a/components/optimization_guide/core/hints/hints_manager.cc b/compone switch (optimization_type_decision) { case OptimizationTypeDecision::kAllowedByOptimizationFilter: case OptimizationTypeDecision::kAllowedByHint: -@@ -2063,4 +2064,5 @@ void HintsManager::RemoveFetchedEntriesByHintKeys( +@@ -2062,4 +2063,5 @@ void HintsManager::RemoveFetchedEntriesByHintKeys( hint_cache_->RemoveHintsForHosts(std::move(on_success), hint_keys); } @@ -1288,7 +1457,7 @@ diff --git a/components/optimization_guide/core/hints/hints_manager.cc b/compone diff --git a/components/optimization_guide/core/optimization_guide_features.cc b/components/optimization_guide/core/optimization_guide_features.cc --- a/components/optimization_guide/core/optimization_guide_features.cc +++ b/components/optimization_guide/core/optimization_guide_features.cc -@@ -42,11 +42,7 @@ namespace features { +@@ -43,11 +43,7 @@ namespace optimization_guide::features { namespace { constexpr auto enabled_by_default_mobile_only = @@ -1300,7 +1469,7 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b } // namespace -@@ -275,8 +271,7 @@ size_t MaxHostKeyedHintCacheSize() { +@@ -280,8 +276,7 @@ size_t MaxHostKeyedHintCacheSize() { } bool ShouldPersistHintsToDisk() { @@ -1310,7 +1479,7 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b } RequestContextSet GetAllowedContextsForPersonalizedMetadata() { -@@ -637,5 +632,9 @@ std::optional GetMainFrameGetAIPageContentTimeout() { +@@ -642,4 +637,8 @@ std::optional GetMainFrameGetAIPageContentTimeout() { return kGetAIPageContentMainFrameTimeoutParam.Get(); } @@ -1318,50 +1487,36 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b +SET_CROMITE_FEATURE_DISABLED(kOptimizationTargetPrediction); +SET_CROMITE_FEATURE_DISABLED(kPreventLongRunningPredictionModels); +SET_CROMITE_FEATURE_DISABLED(kOptimizationGuideFetchingForSRP); - } // namespace features - } // namespace optimization_guide -diff --git a/components/optimization_guide/features.gni b/components/optimization_guide/features.gni ---- a/components/optimization_guide/features.gni -+++ b/components/optimization_guide/features.gni -@@ -15,8 +15,7 @@ declare_args() { - # This enables build with TFLite library. - # TODO(b/269198471): Make sure the internal archive files for opt guide get - # updated when win arm64 gets added as a supported platform for TFLite. -- build_with_tflite_lib = is_android || is_win || is_linux || is_mac || -- is_chromeos || is_fuchsia || is_ios -+ build_with_tflite_lib = false - } - - if (is_ios) { + } // namespace optimization_guide::features diff --git a/components/page_content_annotations/content/page_category_classifier_bridge_impl.cc b/components/page_content_annotations/content/page_category_classifier_bridge_impl.cc --- a/components/page_content_annotations/content/page_category_classifier_bridge_impl.cc +++ b/components/page_content_annotations/content/page_category_classifier_bridge_impl.cc -@@ -24,7 +24,9 @@ PageCategoryClassifierBridgeImpl::PageCategoryClassifierBridgeImpl( - : page_embeddings_service_(page_embeddings_service), - category_classifier_(category_classifier) { +@@ -28,7 +28,9 @@ PageCategoryClassifierBridgeImpl::PageCategoryClassifierBridgeImpl( + category_classifier_(category_classifier), + optimization_guide_logger_(optimization_guide_logger) { scoped_observation_.Observe(&*page_embeddings_service_); -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ category_classifier_observation_.Observe(&*category_classifier_); +#endif } PageCategoryClassifierBridgeImpl::~PageCategoryClassifierBridgeImpl() = default; -@@ -36,6 +38,7 @@ PageCategoryClassifierBridgeImpl::GetUsageMode() const { +@@ -40,6 +42,7 @@ PageCategoryClassifierBridgeImpl::GetUsageMode() const { void PageCategoryClassifierBridgeImpl::OnPageEmbeddingsAvailable( content::Page& page) { -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ std::vector embeddings = page_embeddings_service_->GetEmbeddings(page); -@@ -53,6 +56,7 @@ void PageCategoryClassifierBridgeImpl::OnPageEmbeddingsAvailable( +@@ -57,6 +60,7 @@ void PageCategoryClassifierBridgeImpl::OnPageEmbeddingsAvailable( page.GetMainDocument().GetLastCommittedURL(), page.GetMainDocument().GetPageUkmSourceId(), std::move(title_url_embedding), std::move(passage_embeddings)); +#endif } - // TODO - crbug.com/434047312: Move the metrics recording to the actual user of + void PageCategoryClassifierBridgeImpl::OnCategoriesClassified( diff --git a/components/page_content_annotations/content/page_category_classifier_bridge_impl.h b/components/page_content_annotations/content/page_category_classifier_bridge_impl.h --- a/components/page_content_annotations/content/page_category_classifier_bridge_impl.h +++ b/components/page_content_annotations/content/page_category_classifier_bridge_impl.h @@ -1373,11 +1528,11 @@ diff --git a/components/page_content_annotations/content/page_category_classifie #include "components/page_content_annotations/content/page_embeddings_service.h" #include "components/page_content_annotations/core/on_device_category_classifier.h" #include "components/page_content_annotations/core/page_category_classifier_bridge.h" -@@ -50,9 +51,11 @@ class PageCategoryClassifierBridgeImpl +@@ -54,9 +55,11 @@ class PageCategoryClassifierBridgeImpl PageEmbeddingsService::Observer> scoped_observation_{this}; -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ base::ScopedObservation category_classifier_observation_{this}; @@ -1388,7 +1543,7 @@ diff --git a/components/page_content_annotations/content/page_category_classifie diff --git a/components/page_content_annotations/core/page_content_annotations_features.cc b/components/page_content_annotations/core/page_content_annotations_features.cc --- a/components/page_content_annotations/core/page_content_annotations_features.cc +++ b/components/page_content_annotations/core/page_content_annotations_features.cc -@@ -63,6 +63,7 @@ const base::FeatureParam kPageContentExtractionTriggeringMode{ +@@ -56,6 +56,7 @@ const base::FeatureParam kPageContentExtractionTriggeringMode{ bool IsSupportedLocale(const std::string& locale, const std::string& supported_locales) { @@ -1396,7 +1551,7 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_f if (supported_locales == "*") { return true; } -@@ -82,6 +83,7 @@ bool IsSupportedLocale(const std::string& locale, +@@ -75,6 +76,7 @@ bool IsSupportedLocale(const std::string& locale, bool IsSupportedCountry(const std::string& country_code, const std::string& supported_countries) { @@ -1404,7 +1559,7 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_f if (supported_countries == "*") { return true; } -@@ -149,6 +151,7 @@ base::TimeDelta PCAServiceWaitForTitleDelayDuration() { +@@ -144,6 +146,7 @@ base::TimeDelta PCAServiceWaitForTitleDelayDuration() { } bool ShouldEnablePageContentAnnotations() { @@ -1412,7 +1567,7 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_f // Allow for the validation experiment or remote page metadata to enable the // PCAService without need to enable both features. return base::FeatureList::IsEnabled(kPageContentAnnotations) || -@@ -281,6 +284,7 @@ bool IsSupportedLocaleForFeature( +@@ -283,6 +286,7 @@ bool IsSupportedLocaleForFeature( const std::string& locale, const base::Feature& feature, const std::string& default_value = "de,en,es,fr,it,nl,pt,tr") { @@ -1420,7 +1575,7 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_f if (!base::FeatureList::IsEnabled(feature)) { return false; } -@@ -298,6 +302,7 @@ bool IsSupportedLocaleForFeature( +@@ -300,6 +304,7 @@ bool IsSupportedLocaleForFeature( bool IsSupportedCountryForFeature(const std::string& country_code, const base::Feature& feature, const std::string& default_value) { @@ -1428,7 +1583,7 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_f if (!base::FeatureList::IsEnabled(feature)) { return false; } -@@ -312,4 +317,7 @@ bool IsSupportedCountryForFeature(const std::string& country_code, +@@ -314,4 +319,7 @@ bool IsSupportedCountryForFeature(const std::string& country_code, return IsSupportedCountry(country_code, value); } @@ -1450,24 +1605,82 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_m diff --git a/components/page_content_annotations/core/page_content_annotations_service.h b/components/page_content_annotations/core/page_content_annotations_service.h --- a/components/page_content_annotations/core/page_content_annotations_service.h +++ b/components/page_content_annotations/core/page_content_annotations_service.h -@@ -127,8 +127,11 @@ enum class PageContentAnnotationsType { +@@ -126,8 +126,11 @@ enum class PageContentAnnotationsType { class PageContentAnnotationsService : public KeyedService, public history::HistoryServiceObserver, - public ZeroSuggestCacheServiceInterface::Observer, - public OnDeviceCategoryClassifier::Observer { + public ZeroSuggestCacheServiceInterface::Observer -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ + , public OnDeviceCategoryClassifier::Observer +#endif + { public: // Observer interface to listen for PageContentAnnotations for page loads. // Annotations will be sent for each page load for the registered annotation +diff --git a/components/permissions/prediction_service/BUILD.gn b/components/permissions/prediction_service/BUILD.gn +--- a/components/permissions/prediction_service/BUILD.gn ++++ b/components/permissions/prediction_service/BUILD.gn +@@ -16,37 +16,37 @@ source_set("prediction_service") { + sources = [ + "permission_ui_selector.cc", + "permission_ui_selector.h", +- "permissions_ai_encoder_base.cc", +- "permissions_ai_encoder_base.h", +- "permissions_aiv4_executor.cc", +- "permissions_aiv4_executor.h", +- "permissions_aiv4_handler.cc", +- "permissions_aiv4_handler.h", ++ # "permissions_ai_encoder_base.cc", ++ # "permissions_ai_encoder_base.h", ++ # "permissions_aiv4_executor.cc", ++ # "permissions_aiv4_executor.h", ++ # "permissions_aiv4_handler.cc", ++ # "permissions_aiv4_handler.h", + "prediction_common.cc", + "prediction_common.h", +- "prediction_model_executor.cc", +- "prediction_model_executor.h", +- "prediction_model_handler.cc", +- "prediction_model_handler.h", ++ # "prediction_model_executor.cc", ++ # "prediction_model_executor.h", ++ # "prediction_model_handler.cc", ++ # "prediction_model_handler.h", + "prediction_request_features.h", + "prediction_service.cc", + "prediction_service.h", + "prediction_service_base.h", +- "prediction_signature_model_executor.cc", +- "prediction_signature_model_executor.h", ++ # "prediction_signature_model_executor.cc", ++ # "prediction_signature_model_executor.h", + ] + deps = [ + "//components/keyed_service/content", +- "//components/passage_embeddings/core", ++ # "//components/passage_embeddings/core", + "//components/permissions:permissions_common", + "//components/version_info", + "//content/public/browser", + "//services/network/public/cpp", +- "//skia", ++ # "//skia", + "//third_party/protobuf:protobuf_lite", +- "//third_party/tflite:tflite_public_headers", +- "//third_party/tflite_support", +- "//third_party/tflite_support:tflite_support_proto", ++ # "//third_party/tflite:tflite_public_headers", ++ # "//third_party/tflite_support", ++ # "//third_party/tflite_support:tflite_support_proto", + ] + public_deps = [ + ":prediction_service_messages_proto", diff --git a/components/safe_browsing/content/browser/client_side_phishing_model.cc b/components/safe_browsing/content/browser/client_side_phishing_model.cc --- a/components/safe_browsing/content/browser/client_side_phishing_model.cc +++ b/components/safe_browsing/content/browser/client_side_phishing_model.cc -@@ -486,7 +486,7 @@ void ClientSidePhishingModel::OnImageEmbeddingModelFileAndEmbeddingListLoaded( +@@ -523,7 +523,7 @@ void ClientSidePhishingModel::OnImageEmbeddingModelFileAndEmbeddingListLoaded( model_metadata.value()); } @@ -1476,17 +1689,22 @@ diff --git a/components/safe_browsing/content/browser/client_side_phishing_model if (image_embedding_model_metadata.has_value()) { embedding_model_opt_guide_metadata_image_embedding_version_ = image_embedding_model_metadata->image_embedding_model_version(); -@@ -510,9 +510,9 @@ void ClientSidePhishingModel::OnImageEmbeddingModelFileAndEmbeddingListLoaded( +@@ -547,6 +547,7 @@ void ClientSidePhishingModel::OnImageEmbeddingModelFileAndEmbeddingListLoaded( embedding_list_version_num); } } -+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) ++#if false /*BUILDFLAG(BUILD_WITH_TFLITE_LIB)*/ // Drop any existing target image embeddings in preparation for a new set. target_image_embeddings_.clear(); --#if BUILDFLAG(BUILD_WITH_TFLITE_LIB) // Only load image embeddings when the version of their embedder matches the - // version of the embedder that's been loaded. - if (model_and_list.second.has_value() && +@@ -567,6 +568,7 @@ void ClientSidePhishingModel::OnImageEmbeddingModelFileAndEmbeddingListLoaded( + } + base::UmaHistogramCounts100000("SBClientPhishing.ImageEmbeddingList.Size", + target_image_embeddings_.size()); ++#endif + // There is no use of the image embedding model if the visual trigger model is + // not present, so we will only send to the renderer when that is the case. + if (visual_tflite_model_ && image_embedding_model_) { diff --git a/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn b/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn --- a/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn +++ b/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn @@ -1501,6 +1719,17 @@ diff --git a/components/safe_browsing/content/browser/notification_content_detec ] deps = [ +diff --git a/components/translate/core/language_detection/BUILD.gn b/components/translate/core/language_detection/BUILD.gn +--- a/components/translate/core/language_detection/BUILD.gn ++++ b/components/translate/core/language_detection/BUILD.gn +@@ -28,7 +28,6 @@ static_library("language_detection") { + ":chinese_script_classifier", + "//base", + "//components/language/core/common", +- "//components/language_detection/core", + "//components/translate/core/common", + "//third_party/cld_3/src/src:cld_3", + "//third_party/icu", diff --git a/components/viz/service/BUILD.gn b/components/viz/service/BUILD.gn --- a/components/viz/service/BUILD.gn +++ b/components/viz/service/BUILD.gn @@ -1518,32 +1747,27 @@ diff --git a/components/viz/service/BUILD.gn b/components/viz/service/BUILD.gn diff --git a/components/viz/service/gl/gpu_service_impl.cc b/components/viz/service/gl/gpu_service_impl.cc --- a/components/viz/service/gl/gpu_service_impl.cc +++ b/components/viz/service/gl/gpu_service_impl.cc -@@ -641,25 +641,6 @@ void GpuServiceImpl::BindWebNNContextProvider( - client_id, client_tracing_id, is_incognito)); - return; - } -- -- if (!webnn_context_provider_) { -- scoped_refptr shared_context_state = -- GetContextState(); -- // `shared_context_state` may be nullptr if there is no GPU acceleration. -- // For such case, WebNN CPU backend, e.g. TFLite XNNPACK, is still useful. -- -- // TODO(crbug.com/345352987): manage `WebNNContextProviderImpl` instance per -- // `client_id` in order to support memory metrics. -- webnn_context_provider_ = webnn::WebNNContextProviderImpl::Create( -- std::move(shared_context_state), gpu_feature_info_, gpu_info_, -- shared_image_manager(), gpu_channel_manager_->peak_memory_monitor(), -- base::BindOnce(&GpuServiceImpl::LoseAllContexts, weak_ptr_), -- main_runner(), GetGpuScheduler(), gpu_host_); -- } -- -- webnn_context_provider_->BindWebNNContextProvider( -- std::move(pending_receiver), -- {is_incognito, client_id, client_tracing_id}); +@@ -650,20 +650,6 @@ void GpuServiceImpl::BindWebNNContextProvider( } - void GpuServiceImpl::GetVideoMemoryUsageStats( + void GpuServiceImpl::CreateWebNNContextProviderIfNeeded() { +- if (webnn_context_provider_) { +- return; +- } +- +- scoped_refptr shared_context_state = +- GetContextState(); +- // `shared_context_state` may be nullptr if there is no GPU acceleration. +- // For such case, WebNN CPU backend, e.g. TFLite XNNPACK, is still useful. +- +- webnn_context_provider_ = webnn::WebNNContextProviderImpl::Create( +- std::move(shared_context_state), gpu_feature_info_, gpu_info_, +- shared_image_manager(), gpu_channel_manager_->peak_memory_monitor(), +- base::BindOnce(&GpuServiceImpl::LoseAllContexts, weak_ptr_), +- main_runner(), GetGpuScheduler(), gpu_host_); + } + + void GpuServiceImpl::BindWebNNServiceIntrospection( diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn --- a/content/browser/BUILD.gn +++ b/content/browser/BUILD.gn @@ -1579,14 +1803,14 @@ diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_p diff --git a/content/browser/service_worker/service_worker_main_resource_loader.cc b/content/browser/service_worker/service_worker_main_resource_loader.cc --- a/content/browser/service_worker/service_worker_main_resource_loader.cc +++ b/content/browser/service_worker/service_worker_main_resource_loader.cc -@@ -543,6 +543,7 @@ bool ServiceWorkerMainResourceLoader::StartRaceNetworkRequest( +@@ -539,6 +539,7 @@ bool ServiceWorkerMainResourceLoader::StartRaceNetworkRequest( scoped_refptr context, scoped_refptr version, base::OnceCallback clone_completed_for_fetch_handler_callback) { + if ((true)) return false; // Set fetch_handler_bypass_option to tell the renderer that // RaceNetworkRequest is enabled. - version->set_fetch_handler_bypass_option( + service_worker_client_->set_fetch_handler_bypass_option( diff --git a/cromite_flags/chrome/browser/browser_features_cc/Disable-all-predictors-code.inc b/cromite_flags/chrome/browser/browser_features_cc/Disable-all-predictors-code.inc new file mode 100644 --- /dev/null @@ -1644,8 +1868,8 @@ new file mode 100644 diff --git a/media/webrtc/BUILD.gn b/media/webrtc/BUILD.gn --- a/media/webrtc/BUILD.gn +++ b/media/webrtc/BUILD.gn -@@ -5,6 +5,7 @@ - import("//components/optimization_guide/features.gni") +@@ -4,6 +4,7 @@ + import("//media/media_options.gni") import("//third_party/webrtc/webrtc.gni") +import("//components/optimization_guide/features.gni") @@ -1655,10 +1879,10 @@ diff --git a/media/webrtc/BUILD.gn b/media/webrtc/BUILD.gn diff --git a/media/webrtc/helpers.cc b/media/webrtc/helpers.cc --- a/media/webrtc/helpers.cc +++ b/media/webrtc/helpers.cc -@@ -14,6 +14,7 @@ +@@ -13,6 +13,7 @@ + #include "base/time/time.h" #include "build/build_config.h" #include "build/chromecast_buildflags.h" - #include "components/optimization_guide/machine_learning_tflite_buildflags.h" +#include "components/optimization_guide/machine_learning_tflite_buildflags.h" #include "media/base/media_switches.h" #include "media/webrtc/webrtc_features.h" @@ -1666,21 +1890,21 @@ diff --git a/media/webrtc/helpers.cc b/media/webrtc/helpers.cc diff --git a/services/on_device_model/ml/ts_model.cc b/services/on_device_model/ml/ts_model.cc --- a/services/on_device_model/ml/ts_model.cc +++ b/services/on_device_model/ml/ts_model.cc -@@ -27,7 +27,7 @@ +@@ -26,7 +26,7 @@ #include "services/on_device_model/public/mojom/on_device_model_service.mojom.h" #include "services/on_device_model/safety/safety_util.h" --#if !BUILDFLAG(IS_FUCHSIA) && BUILDFLAG(BUILD_WITH_TFLITE_LIB) -+#if false && !BUILDFLAG(IS_FUCHSIA) && BUILDFLAG(BUILD_WITH_TFLITE_LIB) +-#if !BUILDFLAG(IS_FUCHSIA) ++#if false && !BUILDFLAG(IS_FUCHSIA) #include "services/on_device_model/safety/bert_safety_model.h" #endif -@@ -207,7 +207,7 @@ void TsHolder::Reset(mojom::TextSafetyModelParamsPtr params, +@@ -198,7 +198,7 @@ void TsHolder::Reset(mojom::TextSafetyModelParamsPtr params, mojo::PendingReceiver model) { model_.Clear(); --#if !BUILDFLAG(IS_FUCHSIA) && BUILDFLAG(BUILD_WITH_TFLITE_LIB) -+#if false && !BUILDFLAG(IS_FUCHSIA) && BUILDFLAG(BUILD_WITH_TFLITE_LIB) +-#if !BUILDFLAG(IS_FUCHSIA) ++#if false && !BUILDFLAG(IS_FUCHSIA) if (!params->safety_assets || params->safety_assets->which() == mojom::SafetyModelAssets::Tag::kTsAssets) { auto impl = TsModel::Create(*chrome_ml_, std::move(params)); @@ -1697,15 +1921,29 @@ diff --git a/services/on_device_model/on_device_model.gni b/services/on_device_m diff --git a/services/on_device_model/safety/BUILD.gn b/services/on_device_model/safety/BUILD.gn --- a/services/on_device_model/safety/BUILD.gn +++ b/services/on_device_model/safety/BUILD.gn -@@ -4,7 +4,7 @@ +@@ -2,7 +2,7 @@ + # Use of this source code is governed by a BSD-style license that can be + # found in the LICENSE file. - import("//components/optimization_guide/features.gni") - --if (!is_fuchsia && build_with_tflite_lib) { -+if (build_with_tflite_lib && !is_fuchsia) { +-if (!is_fuchsia) { ++if (false /*build_with_tflite_lib*/) { source_set("bert_safety_op_resolver") { sources = [ "bert_safety_op_resolver.cc", +diff --git a/services/passage_embeddings/passage_embeddings_service.cc b/services/passage_embeddings/passage_embeddings_service.cc +--- a/services/passage_embeddings/passage_embeddings_service.cc ++++ b/services/passage_embeddings/passage_embeddings_service.cc +@@ -36,6 +36,10 @@ void PassageEmbeddingsService::LoadModels( + mojom::PassageEmbedderParamsPtr embedder_params, + mojo::PendingReceiver receiver, + LoadModelsCallback callback) { ++ if ((true)) { ++ std::move(callback).Run(false); ++ return; ++ } + embedder_ = std::make_unique( + std::move(receiver), std::move(embedder_params), + base::BindOnce(&PassageEmbeddingsService::OnEmbedderDisconnect, diff --git a/services/webnn/BUILD.gn b/services/webnn/BUILD.gn --- a/services/webnn/BUILD.gn +++ b/services/webnn/BUILD.gn @@ -1728,12 +1966,12 @@ diff --git a/services/webnn/features.gni b/services/webnn/features.gni - webnn_use_tflite = is_android || is_chromeos || is_linux || is_apple || is_win + webnn_use_tflite = false #is_android || is_chromeos || is_linux || is_apple || is_win - # TODO(crbug.com/454732289): Enable LiteRT after migration is complete. - webnn_use_litert = false + # LiteRT matches TFLite except for arm. + # TODO(b/454732289): Add arm support once APK size issue is resolved. diff --git a/services/webnn/webnn_context_provider_impl.cc b/services/webnn/webnn_context_provider_impl.cc --- a/services/webnn/webnn_context_provider_impl.cc +++ b/services/webnn/webnn_context_provider_impl.cc -@@ -263,35 +263,7 @@ void WebNNContextProviderImpl::CreateWebNNContext( +@@ -331,35 +331,7 @@ void WebNNContextProviderImpl::CreateWebNNContext( } #if BUILDFLAG(IS_WIN) @@ -1773,7 +2011,7 @@ diff --git a/services/webnn/webnn_context_provider_impl.cc b/services/webnn/webn diff --git a/third_party/blink/renderer/core/html/parser/html_document_parser.cc b/third_party/blink/renderer/core/html/parser/html_document_parser.cc --- a/third_party/blink/renderer/core/html/parser/html_document_parser.cc +++ b/third_party/blink/renderer/core/html/parser/html_document_parser.cc -@@ -1782,6 +1782,7 @@ ALWAYS_INLINE bool HTMLDocumentParser::ShouldCheckTimeBudget( +@@ -1788,6 +1788,7 @@ ALWAYS_INLINE bool HTMLDocumentParser::ShouldCheckTimeBudget( } bool HTMLDocumentParser::ShouldSkipPreloadScan() { @@ -1795,7 +2033,7 @@ diff --git a/third_party/blink/renderer/core/speculation_rules/document_speculat diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5 --- a/third_party/blink/renderer/platform/runtime_enabled_features.json5 +++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5 -@@ -4319,7 +4319,7 @@ +@@ -4416,7 +4416,7 @@ // // It also has some feature params defined throughout the codebase. name: "Prerender2", diff --git a/build/patches/Enable-extension-in-incognito.patch b/build/patches/Enable-extension-in-incognito.patch index 7a711f71..4438eb85 100644 --- a/build/patches/Enable-extension-in-incognito.patch +++ b/build/patches/Enable-extension-in-incognito.patch @@ -7,7 +7,7 @@ Full activation of incognito mode in experimental extension License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- .../chrome/browser/ChromeTabbedActivity.java | 9 ++ - .../chrome/browser/app/ChromeActivity.java | 45 ++++++- + .../chrome/browser/app/ChromeActivity.java | 42 +++++- .../BaseCustomTabRootUiCoordinator.java | 2 + .../CustomTabIntentDataProvider.java | 3 + .../tabbed_mode/TabbedRootUiCoordinator.java | 1 + @@ -22,21 +22,19 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../extensions/extension_actions_bridge.cc | 23 +++- .../extensions/extension_actions_bridge.h | 4 +- .../ExtensionActionContextMenuBridge.java | 2 +- - .../ui/extensions/ExtensionActionsBridge.java | 65 +++++++++- + .../ui/extensions/ExtensionActionsBridge.java | 67 +++++++++- .../ui/extensions/ExtensionsMenuBridge.java | 101 ++++++++++++--- .../extensions/ExtensionsToolbarBridge.java | 121 +++++++++++++----- - .../ExtensionActionListCoordinator.java | 15 ++- - .../ExtensionActionListMediator.java | 30 ++--- - .../ExtensionToolbarCoordinator.java | 3 + - .../ExtensionToolbarCoordinatorImpl.java | 15 +-- - ...MenuAndAccessControlButtonCoordinator.java | 5 +- + .../ExtensionActionListCoordinator.java | 13 +- + .../ExtensionActionListMediator.java | 25 ++-- .../extensions/ExtensionsMenuCoordinator.java | 2 + .../extensions/ExtensionsMenuMediator.java | 14 +- + .../ExtensionsToolbarCoordinatorImpl.java | 2 +- .../browser_window/ChromeAndroidTaskImpl.java | 18 ++- .../ChromeAndroidTaskFeature.java | 2 +- components/tabs/impl/tab_collection.cc | 16 +++ components/tabs/impl/tab_strip_collection.cc | 4 +- - 30 files changed, 415 insertions(+), 124 deletions(-) + 28 files changed, 405 insertions(+), 105 deletions(-) diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java @@ -49,14 +47,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.data_sharing.DataSharingIntentUtils; import org.chromium.chrome.browser.data_sharing.DataSharingTabGroupUtils; import org.chromium.chrome.browser.data_sharing.DataSharingTabManager; -@@ -316,11 +317,15 @@ import org.chromium.chrome.browser.tasks.tab_management.TabSwitcherPaneBase; +@@ -321,11 +322,15 @@ import org.chromium.chrome.browser.tasks.tab_management.TabSwitcherPaneBase; import org.chromium.chrome.browser.tasks.tab_management.TabUiUtils; import org.chromium.chrome.browser.tasks.tab_management.TabsSettings; import org.chromium.chrome.browser.tasks.tab_management.archived_tabs_auto_delete_promo.ArchivedTabsAutoDeletePromoManager; +import org.chromium.chrome.browser.tabmodel.IncognitoTabModelObserver; import org.chromium.chrome.browser.toolbar.ToolbarIntentMetadata; import org.chromium.chrome.browser.toolbar.ToolbarManager; - import org.chromium.chrome.browser.toolbar.extensions.ExtensionToolbarCoordinator; + import org.chromium.chrome.browser.toolbar.extensions.ExtensionsToolbarCoordinator; import org.chromium.chrome.browser.toolbar.top.ToolbarControlContainer; import org.chromium.chrome.browser.ui.AppLaunchDrawBlocker; +import org.chromium.chrome.browser.ui.extensions.windowing.ExtensionWindowControllerBridge; @@ -65,10 +63,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct import org.chromium.chrome.browser.ui.IncognitoRestoreAppLaunchDrawBlockerFactory; import org.chromium.chrome.browser.ui.RootUiCoordinator; import org.chromium.chrome.browser.ui.appmenu.AppMenuPropertiesDelegate; -@@ -4139,6 +4144,10 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt - } - RecordUserAction.record("MobileMenuRecentTabs"); - } else if (id == R.id.extensions_menu_id) { +@@ -4167,6 +4172,10 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt + coordinator.showExtensionsMenu(); + RecordUserAction.record("MobileMenuExtensionsMenu"); + } else if (id == R.id.manage_extensions_menu_id) { + if (getCurrentTabModel().isIncognito()) { + CustomTabActivity.showInfoPage(this, UrlConstants.CHROME_EXTENSIONS_URL); + return true; @@ -79,7 +77,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -188,6 +188,7 @@ import org.chromium.chrome.browser.tab.TabSelectionType; +@@ -190,6 +190,7 @@ import org.chromium.chrome.browser.tab.TabSelectionType; import org.chromium.chrome.browser.tab.TabState; import org.chromium.chrome.browser.tab.TabUtils; import org.chromium.chrome.browser.tab_ui.TabContentManager; @@ -87,7 +85,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.tabmodel.SupportedProfileType; import org.chromium.chrome.browser.tabmodel.TabCreator; import org.chromium.chrome.browser.tabmodel.TabCreatorManager; -@@ -220,6 +221,9 @@ import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTaskTrackerFac +@@ -222,6 +223,9 @@ import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTaskTrackerFac import org.chromium.chrome.browser.ui.device_lock.MissingDeviceLockLauncher; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeController; import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils; @@ -97,16 +95,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.ui.extensions.windowing.ExtensionWindowControllerBridge; import org.chromium.chrome.browser.ui.extensions.windowing.ExtensionWindowControllerBridgeFactory; import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar; -@@ -1131,19 +1135,46 @@ public abstract class ChromeActivity extends AsyncInitializationActivity - // TODO(crbug.com/475200706): Handle multiple profiles for mobile. +@@ -1136,16 +1140,46 @@ public abstract class ChromeActivity extends AsyncInitializationActivity + // TODO(crbug.com/491791326): Handle multiple profiles for mobile. Profile profile = tabModelSelector.getCurrentModel().getProfile(); assert profile != null; - chromeAndroidTask.addFeature( - new ChromeAndroidTaskFeatureKey( - ExtensionWindowControllerBridge.class, profile, activityWindowAndroid), -- () -> -- ExtensionWindowControllerBridgeFactory.create( -- chromeAndroidTask, profile)); +- ExtensionWindowControllerBridgeFactory::create); + addFeatures(chromeAndroidTask, profile); // 5. Make the ChromeAndroidTask available via OneshotSupplier. @@ -128,7 +124,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv } } -- /** Returns an {@link OneshotSupplier} for {@link ChromeAndroidTask}. */ + private void addFeatures(ChromeAndroidTask task, Profile profile) { + task.addFeature( + new ChromeAndroidTaskFeatureKey( @@ -148,13 +143,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv + () -> ExtensionsMenuBridge.create(task, profile)); + } + + /** Returns an {@link OneshotSupplier} for {@link ChromeAndroidTask}. */ protected final OneshotSupplier getChromeAndroidTaskSupplier() { return mChromeAndroidTaskSupplier; - } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java -@@ -93,6 +93,7 @@ import org.chromium.chrome.browser.tab.EmptyTabObserver; +@@ -92,6 +92,7 @@ import org.chromium.chrome.browser.tab.EmptyTabObserver; import org.chromium.chrome.browser.tab.RequestDesktopUtils; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab_ui.TabContentManager; @@ -162,7 +157,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Base import org.chromium.chrome.browser.tabmodel.TabCreatorManager; import org.chromium.chrome.browser.tabmodel.TabModelSelector; import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarBehavior; -@@ -127,6 +128,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager; +@@ -126,6 +127,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager; import java.util.function.BooleanSupplier; import java.util.function.Supplier; @@ -173,7 +168,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Base diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java -@@ -340,6 +340,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -349,6 +349,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid private final boolean mEnableUrlBarHiding; private boolean mInteractWithBackground; @@ -181,7 +176,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust private List mCustomButtonParams; private @Nullable Drawable mCloseButtonIcon; private final boolean mIsCloseButtonEnabled; -@@ -723,6 +724,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -754,6 +755,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid mSideSheetRoundedCornersPosition = getActivitySideSheetRoundedCornersPositionFromIntent(intent); @@ -189,7 +184,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust logCustomTabFeatures(intent, colorScheme); String packageName = getClientPackageNameFromSessionOrCallingActivity(mIntent, mSession); RecordHistogram.recordBooleanHistogram( -@@ -1377,6 +1379,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid +@@ -1408,6 +1410,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid @Override public @CustomTabProfileType int getCustomTabMode() { @@ -200,10 +195,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -201,6 +201,7 @@ import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarBehavior; - import org.chromium.chrome.browser.ui.RootUiCoordinator; - import org.chromium.chrome.browser.ui.appmenu.AppMenuBlocker; +@@ -206,6 +206,7 @@ import org.chromium.chrome.browser.ui.appmenu.AppMenuBlocker; import org.chromium.chrome.browser.ui.appmenu.AppMenuDelegate; + import org.chromium.chrome.browser.ui.bottombar.BottomBarHostManager; + import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTaskFeatureKey; +import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTask; import org.chromium.chrome.browser.ui.default_browser_promo.DefaultBrowserPromoUtils; import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderCoordinator; @@ -211,7 +206,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelJniBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelJniBridge.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelJniBridge.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelJniBridge.java -@@ -144,8 +144,7 @@ public abstract class TabModelJniBridge implements TabModelInternal { +@@ -145,8 +145,7 @@ public abstract class TabModelJniBridge implements TabModelInternal { @Override public void dissociateWithBrowserWindow() { @@ -248,7 +243,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabMod diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java -@@ -140,6 +140,7 @@ import org.chromium.chrome.browser.tab.TabObscuringHandler; +@@ -142,6 +142,7 @@ import org.chromium.chrome.browser.tab.TabObscuringHandler; import org.chromium.chrome.browser.tab.TabSelectionType; import org.chromium.chrome.browser.tab_ui.TabContentManager; import org.chromium.chrome.browser.tab_ui.TabModelDotInfo; @@ -256,7 +251,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar import org.chromium.chrome.browser.tabmodel.IncognitoStateProvider; import org.chromium.chrome.browser.tabmodel.TabCreatorManager; import org.chromium.chrome.browser.tabmodel.TabModel; -@@ -241,6 +242,7 @@ import org.chromium.url.GURL; +@@ -251,6 +252,7 @@ import org.chromium.url.GURL; import java.util.List; import java.util.function.Supplier; @@ -267,7 +262,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java -@@ -157,6 +157,7 @@ import org.chromium.chrome.browser.tab.TabSelectionType; +@@ -161,6 +161,7 @@ import org.chromium.chrome.browser.tab.TabSelectionType; import org.chromium.chrome.browser.tab_ui.RecyclerViewPosition; import org.chromium.chrome.browser.tab_ui.TabContentManager; import org.chromium.chrome.browser.tab_ui.TabSwitcher; @@ -275,7 +270,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi import org.chromium.chrome.browser.tabmodel.TabCreator; import org.chromium.chrome.browser.tabmodel.TabCreatorManager; import org.chromium.chrome.browser.tabmodel.TabModel; -@@ -256,6 +257,7 @@ import java.lang.ref.WeakReference; +@@ -261,6 +262,7 @@ import java.lang.ref.WeakReference; import java.util.Collections; import java.util.function.BooleanSupplier; import java.util.function.Supplier; @@ -299,19 +294,19 @@ diff --git a/chrome/browser/extensions/api/developer_private/developer_private_f diff --git a/chrome/browser/extensions/extension_tab_util.cc b/chrome/browser/extensions/extension_tab_util.cc --- a/chrome/browser/extensions/extension_tab_util.cc +++ b/chrome/browser/extensions/extension_tab_util.cc -@@ -1183,7 +1183,7 @@ bool ExtensionTabUtil::OpenOptionsPageFromWebContents( +@@ -1143,7 +1143,7 @@ bool ExtensionTabUtil::OpenOptionsPageFromWebContents( if (!url) { return false; } - const bool open_in_tab = ShouldOpenInTab(extension); + const bool open_in_tab = false; //ShouldOpenInTab(extension); - // Opens the url as instructed by `open_in_tab`. On android we take a different - // path because the `Browser` object is not available. - // TODO(crbug.com/441209530): Unify the path on android after browser + BrowserWindowInterface* browser = + browser_window_util::GetBrowserForTabContents(*web_contents); + CHECK(browser); diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl.java b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl.java --- a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl.java +++ b/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browser/tabmodel/IncognitoTabModelImpl.java -@@ -148,7 +148,7 @@ class IncognitoTabModelImpl implements IncognitoTabModelInternal { +@@ -155,7 +155,7 @@ class IncognitoTabModelImpl implements IncognitoTabModelInternal { } for (IncognitoTabModelObserver observer : mIncognitoObservers) { @@ -320,7 +315,7 @@ diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browse } mDelegateModel -@@ -159,6 +159,10 @@ class IncognitoTabModelImpl implements IncognitoTabModelInternal { +@@ -166,6 +166,10 @@ class IncognitoTabModelImpl implements IncognitoTabModelInternal { mCurrentTabSupplier.set(null); mTabCountSupplier.set(0); @@ -331,7 +326,7 @@ diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browse mDelegateModel = EmptyTabModel.getInstance(true); for (Callback delegateModelObserver : mDelegateModelObservers) { delegateModelObserver.onResult(mDelegateModel); -@@ -196,6 +200,10 @@ class IncognitoTabModelImpl implements IncognitoTabModelInternal { +@@ -203,6 +207,10 @@ class IncognitoTabModelImpl implements IncognitoTabModelInternal { assert mNativeAndroidBrowserWindow == 0; mNativeAndroidBrowserWindow = nativeAndroidBrowserWindow; mDelegateModel.associateWithBrowserWindow(nativeAndroidBrowserWindow); @@ -375,10 +370,10 @@ diff --git a/chrome/browser/ui/android/extensions/extension_actions_bridge.cc b/ - : browser_(browser), - profile_(browser->GetProfile()), + : profile_(profile), - java_object_(java_object), - keybinding_registry_( - std::make_unique(profile_)) {} -@@ -57,6 +58,16 @@ void ExtensionActionsBridge::ClearExtensionData(JNIEnv* env) { + java_object_(java_object) {} + + ExtensionActionsBridge::~ExtensionActionsBridge() = default; +@@ -51,6 +52,16 @@ void ExtensionActionsBridge::ClearExtensionData(JNIEnv* env) { install_directory, install_updacked_directory)); } @@ -392,10 +387,10 @@ diff --git a/chrome/browser/ui/android/extensions/extension_actions_bridge.cc b/ + } +} + - jni_zero::ScopedJavaLocalRef - ExtensionActionsBridge::HandleKeyDownEvent( - JNIEnv* env, -@@ -74,11 +85,9 @@ ExtensionActionsBridge::HandleKeyDownEvent( + void ExtensionActionsBridge::Destroy(JNIEnv* env) { + delete this; + } +@@ -58,11 +69,9 @@ void ExtensionActionsBridge::Destroy(JNIEnv* env) { static int64_t JNI_ExtensionActionsBridge_Init( JNIEnv* env, const base::android::JavaRef& java_object, @@ -412,7 +407,7 @@ diff --git a/chrome/browser/ui/android/extensions/extension_actions_bridge.cc b/ diff --git a/chrome/browser/ui/android/extensions/extension_actions_bridge.h b/chrome/browser/ui/android/extensions/extension_actions_bridge.h --- a/chrome/browser/ui/android/extensions/extension_actions_bridge.h +++ b/chrome/browser/ui/android/extensions/extension_actions_bridge.h -@@ -22,7 +22,7 @@ namespace extensions { +@@ -19,7 +19,7 @@ namespace extensions { // This bridge is created and owned by Java UI code. class ExtensionActionsBridge { public: @@ -421,20 +416,18 @@ diff --git a/chrome/browser/ui/android/extensions/extension_actions_bridge.h b/c const base::android::JavaRef& java_object); ExtensionActionsBridge(const ExtensionActionsBridge&) = delete; ExtensionActionsBridge& operator=(const ExtensionActionsBridge&) = delete; -@@ -31,12 +31,12 @@ class ExtensionActionsBridge { +@@ -27,10 +27,10 @@ class ExtensionActionsBridge { + // JNI implementations. - void Destroy(JNIEnv* env); void ClearExtensionData(JNIEnv* env); + void CloseBackgroundHosts(JNIEnv* env); - jni_zero::ScopedJavaLocalRef HandleKeyDownEvent( - JNIEnv* env, - const ui::KeyEventAndroid& key_event); + void Destroy(JNIEnv* env); private: - const raw_ptr browser_; const raw_ptr profile_; const base::android::ScopedJavaGlobalRef java_object_; - const std::unique_ptr + }; diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionContextMenuBridge.java b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionContextMenuBridge.java --- a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionContextMenuBridge.java +++ b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionContextMenuBridge.java @@ -451,19 +444,21 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java --- a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java +++ b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java -@@ -5,6 +5,7 @@ +@@ -5,6 +5,8 @@ package org.chromium.chrome.browser.ui.extensions; - import android.view.KeyEvent; -+import android.util.ArrayMap; + import org.jni_zero.JNINamespace; ++import android.view.KeyEvent; ++ + import org.jni_zero.JniType; + import org.jni_zero.NativeMethods; - import androidx.annotation.VisibleForTesting; - -@@ -22,17 +23,60 @@ import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTask; - - import java.util.Objects; +@@ -15,22 +17,66 @@ import org.chromium.build.annotations.Nullable; + import org.chromium.chrome.browser.profiles.Profile; + import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTask; +import android.graphics.Rect; ++import android.util.ArrayMap; +import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTaskFeature; +import org.chromium.chrome.browser.tabmodel.TabModel; +import org.chromium.base.Log; @@ -492,9 +487,11 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b ExtensionActionsBridgeJni.get() - .init(this, task.getOrCreateNativeBrowserWindowPtr(profile)); + .init(this, mProfile); -+ } -+ -+ @Override + } + + @Override +- public void destroy() { +- assert mNativeExtensionActionsBridge != 0; + public void onFeatureRemoved() { + destroy(); + } @@ -520,21 +517,15 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b + + public static ExtensionActionsBridge create(ChromeAndroidTask task, Profile profile) { + return new ExtensionActionsBridge(task, profile); - } - - /** Represents the result of handling a key event. */ -@@ -64,8 +108,8 @@ public class ExtensionActionsBridge implements Destroyable { - } - } - -- @Override -- public void destroy() { -+ private void destroy() { -+ closeBackgroundHosts(); - assert mNativeExtensionActionsBridge != 0; ++ } ++ ++ @privatevoid destroy() { ++ closeBackgroundHosts(); ++assert mNativeExtensionActionsBridge != 0; ExtensionActionsBridgeJni.get().destroy(mNativeExtensionActionsBridge); mNativeExtensionActionsBridge = 0; -@@ -88,19 +132,26 @@ public class ExtensionActionsBridge implements Destroyable { + LifetimeAssert.destroy(mLifetimeAssert); +@@ -46,17 +92,24 @@ public class ExtensionActionsBridge implements Destroyable { } public void clearExtensionData() { @@ -554,15 +545,13 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b - long init(ExtensionActionsBridge bridge, long browserWindowInterfacePtr); + long init(ExtensionActionsBridge bridge, @JniType("Profile*") Profile profile); - void destroy(long nativeExtensionActionsBridge); - void clearExtensionData(long nativeExtensionActionsBridge); + void closeBackgroundHosts(long nativeExtensionActionsBridge); + - HandleKeyEventResult handleKeyDownEvent( - long nativeExtensionActionsBridge, - @JniType("ui::KeyEventAndroid") KeyEvent keyEvent); + void destroy(long nativeExtensionActionsBridge); + } + } diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsMenuBridge.java b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsMenuBridge.java --- a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsMenuBridge.java +++ b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsMenuBridge.java @@ -679,12 +668,12 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b } /** -@@ -77,12 +129,12 @@ public class ExtensionsMenuBridge implements Destroyable { - */ - public void onSiteSettingsToggleChanged(boolean isChecked) { +@@ -118,12 +170,12 @@ public class ExtensionsMenuBridge implements Destroyable { + /** Called when the reload page button is clicked. */ + public void onReloadPageButtonClicked() { ExtensionsMenuBridgeJni.get() -- .onSiteSettingsToggleChanged(mNativeExtensionsMenuDelegateAndroid, isChecked); -+ .onSiteSettingsToggleChanged(Instance().mNativeExtensionsMenuDelegateAndroid, isChecked); +- .onReloadPageButtonClicked(mNativeExtensionsMenuDelegateAndroid); ++ .onReloadPageButtonClicked(Instance().mNativeExtensionsMenuDelegateAndroid); } /** Returns whether the native menu model is ready. */ @@ -694,7 +683,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b } /** -@@ -92,7 +144,8 @@ public class ExtensionsMenuBridge implements Destroyable { +@@ -133,7 +185,8 @@ public class ExtensionsMenuBridge implements Destroyable { */ @CalledByNative public void onActionAdded(int actionIndex) { @@ -704,7 +693,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b } /** -@@ -103,7 +156,10 @@ public class ExtensionsMenuBridge implements Destroyable { +@@ -144,7 +197,10 @@ public class ExtensionsMenuBridge implements Destroyable { */ @CalledByNative public void onActionIconUpdated(int actionIndex) { @@ -716,7 +705,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b } /** -@@ -114,7 +170,10 @@ public class ExtensionsMenuBridge implements Destroyable { +@@ -155,7 +211,10 @@ public class ExtensionsMenuBridge implements Destroyable { */ @CalledByNative public void onActionRemoved(int actionIndex) { @@ -728,7 +717,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b } /** -@@ -125,7 +184,10 @@ public class ExtensionsMenuBridge implements Destroyable { +@@ -166,7 +225,10 @@ public class ExtensionsMenuBridge implements Destroyable { */ @CalledByNative public void onActionUpdated(int actionIndex) { @@ -740,7 +729,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b } /** -@@ -134,13 +196,14 @@ public class ExtensionsMenuBridge implements Destroyable { +@@ -175,13 +237,14 @@ public class ExtensionsMenuBridge implements Destroyable { */ @CalledByNative public void onReady() { @@ -761,7 +750,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsToolbarBridge.java b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsToolbarBridge.java --- a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsToolbarBridge.java +++ b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionsToolbarBridge.java -@@ -26,10 +26,17 @@ import org.chromium.content_public.browser.WebContents; +@@ -27,10 +27,17 @@ import org.chromium.content_public.browser.WebContents; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -780,7 +769,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b // TODO(crbug.com/423483658): Consider moving ExtensionsMenuButtonState and related types // (e.g., RequestAccessButtonParams) into a new ExtensionControls.java file. @IntDef({ -@@ -47,21 +54,61 @@ public class ExtensionsToolbarBridge implements Destroyable { +@@ -48,21 +55,61 @@ public class ExtensionsToolbarBridge implements Destroyable { private final @Nullable LifetimeAssert mLifetimeAssert = LifetimeAssert.create(this); private long mNativeExtensionsToolbarAndroid; private final ObserverList mObservers = new ObserverList<>(); @@ -847,7 +836,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b assert mNativeExtensionsToolbarAndroid != 0; ExtensionsToolbarBridgeJni.get().destroy(mNativeExtensionsToolbarAndroid); mNativeExtensionsToolbarAndroid = 0; -@@ -69,27 +116,30 @@ public class ExtensionsToolbarBridge implements Destroyable { +@@ -70,27 +117,30 @@ public class ExtensionsToolbarBridge implements Destroyable { } public void addObserver(Observer observer) { @@ -874,7 +863,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b + assert Instance().mNativeExtensionsToolbarAndroid != 0; + if (Instance().mProfile.shutdownStarted()) { // TODO(crbug.com/459079170): This is to prevent tests from breaking. {@code - // ExtensionToolbarCoordinatorImpl} should ideally be destroyed following {@code + // ExtensionsToolbarCoordinatorImpl} should ideally be destroyed following {@code // ChromeAndroidTask}'s destruction, and it is currently being worked on. return null; } @@ -884,7 +873,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b } @Nullable -@@ -105,9 +155,10 @@ public class ExtensionsToolbarBridge implements Destroyable { +@@ -106,9 +156,10 @@ public class ExtensionsToolbarBridge implements Destroyable { // ChromeAndroidTask}'s destruction, and it is currently being worked on. return null; } @@ -896,26 +885,14 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b actionId, webContents, canvasWidthDp, -@@ -116,58 +167,58 @@ public class ExtensionsToolbarBridge implements Destroyable { - } - - public String[] getAllActionIds() { -- if (mProfile.shutdownStarted()) { -+ if (Instance().mProfile.shutdownStarted()) { - // TODO(crbug.com/459079170): This is to prevent tests from breaking. {@code - // ExtensionToolbarCoordinatorImpl} should ideally be destroyed following {@code - // ChromeAndroidTask}'s destruction, and it is currently being worked on. - return new String[0]; - } -- return ExtensionsToolbarBridgeJni.get().getAllActionIds(mNativeExtensionsToolbarAndroid); -+ return ExtensionsToolbarBridgeJni.get().getAllActionIds(Instance().mNativeExtensionsToolbarAndroid); +@@ -127,52 +178,52 @@ public class ExtensionsToolbarBridge implements Destroyable { } public String[] getPinnedActionIds() { - if (mProfile.shutdownStarted()) { + if (Instance().mProfile.shutdownStarted()) { // TODO(crbug.com/459079170): This is to prevent tests from breaking. {@code - // ExtensionToolbarCoordinatorImpl} should ideally be destroyed following {@code + // ExtensionsToolbarCoordinatorImpl} should ideally be destroyed following {@code // ChromeAndroidTask}'s destruction, and it is currently being worked on. return new String[0]; } @@ -923,11 +900,24 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b + return ExtensionsToolbarBridgeJni.get().getPinnedActionIds(Instance().mNativeExtensionsToolbarAndroid); } + public boolean isActionDraggable(String actionId) { +- if (mProfile.shutdownStarted()) { ++ if (Instance().mProfile.shutdownStarted()) { + // TODO(crbug.com/459079170): This is to prevent tests from breaking. {@code + // ExtensionsToolbarCoordinatorImpl} should ideally be destroyed following {@code + // ChromeAndroidTask}'s destruction, and it is currently being worked on. + return false; + } + return ExtensionsToolbarBridgeJni.get() +- .isActionDraggable(mNativeExtensionsToolbarAndroid, actionId); ++ .isActionDraggable(Instance().mNativeExtensionsToolbarAndroid, actionId); + } + public void executeUserAction(String actionId, @InvocationSource int source) { - if (mProfile.shutdownStarted()) { + if (Instance().mProfile.shutdownStarted()) { // TODO(crbug.com/459079170): This is to prevent tests from breaking. {@code - // ExtensionToolbarCoordinatorImpl} should ideally be destroyed following {@code + // ExtensionsToolbarCoordinatorImpl} should ideally be destroyed following {@code // ChromeAndroidTask}'s destruction, and it is currently being worked on. return; } @@ -940,7 +930,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b - if (mProfile.shutdownStarted()) { + if (Instance().mProfile.shutdownStarted()) { // TODO(crbug.com/459079170): This is to prevent tests from breaking. {@code - // ExtensionToolbarCoordinatorImpl} should ideally be destroyed following {@code + // ExtensionsToolbarCoordinatorImpl} should ideally be destroyed following {@code // ChromeAndroidTask}'s destruction, and it is currently being worked on. return; } @@ -957,6 +947,10 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b + .getExtensionsMenuButtonState(Instance().mNativeExtensionsToolbarAndroid, webContents); } + public void onRequestAccessButtonClicked(WebContents webContents) { +@@ -184,10 +235,10 @@ public class ExtensionsToolbarBridge implements Destroyable { + } + public RequestAccessButtonParams getRequestAccessButtonParams(WebContents webContents) { - assert mNativeExtensionsToolbarAndroid != 0; + assert Instance().mNativeExtensionsToolbarAndroid != 0; @@ -967,15 +961,15 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b assert params != null; return params; } -@@ -175,63 +226,63 @@ public class ExtensionsToolbarBridge implements Destroyable { +@@ -209,21 +260,21 @@ public class ExtensionsToolbarBridge implements Destroyable { @CalledByNative - public void triggerPopup(@JniType("std::string") String actionId, long nativeHostPtr) { + void showContextMenu(@JniType("std::string") String actionId) { // {@link mDelegate} should be set in {@code ExtensionActionListMediator}'s constructor. - assert mDelegate != null; + assert Instance().mDelegate != null; -- mDelegate.triggerPopup(actionId, nativeHostPtr); -+ Instance().mDelegate.triggerPopup(actionId, nativeHostPtr); +- mDelegate.showContextMenu(actionId); ++ Instance().mDelegate.showContextMenu(actionId); } @CalledByNative @@ -993,6 +987,7 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b observer.onToolbarControlStateUpdated(); } } +@@ -254,42 +305,42 @@ public class ExtensionsToolbarBridge implements Destroyable { @CalledByNative public void onActionsInitialized() { @@ -1035,25 +1030,16 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b } @CalledByNative - public void onActiveWebContentsChanged() { + public void onActiveWebContentsChanged(WebContents webContents) { - for (Observer observer : mObservers) { + for (Observer observer : Instance().mObservers) { - observer.onActiveWebContentsChanged(); + observer.onActiveWebContentsChanged(webContents); } } diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListCoordinator.java -@@ -33,6 +33,8 @@ import org.chromium.ui.listmenu.ListMenuButton; - import org.chromium.ui.modelutil.MVCListAdapter.ModelList; - import org.chromium.ui.modelutil.PropertyModel; - -+import java.util.function.Function; -+ - /** - * Root component for the extension action buttons. Exposes public API for external consumers to - * interact with the buttons and affect their states. -@@ -46,16 +48,19 @@ public class ExtensionActionListCoordinator implements Destroyable { +@@ -44,17 +44,20 @@ public class ExtensionActionListCoordinator implements Destroyable { private final Context mContext; private final ExtensionActionListRecyclerView mContainer; @@ -1062,6 +1048,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow private final ExtensionActionListMediator mMediator; private final DragReorderableRecyclerViewAdapter mAdapter; @Nullable private final LifetimeAssert mLifetimeAssert = LifetimeAssert.create(this); + private final RecyclerViewDelegate mRecyclerViewDelegate = new RecyclerViewDelegate(); + public final ExtensionsToolbarBridge mExtensionsToolbarBridge; private boolean mIsDragging; @@ -1073,7 +1060,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow WindowAndroid windowAndroid, ChromeAndroidTask task, Profile profile, -@@ -66,6 +71,8 @@ public class ExtensionActionListCoordinator implements Destroyable { +@@ -65,6 +68,8 @@ public class ExtensionActionListCoordinator implements Destroyable { @Nullable SelectionDropdownMenuDelegate selectionDropdownMenuDelegate) { mContext = context; mContainer = container; @@ -1082,8 +1069,8 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mModels = new ModelList(); mMediator = -@@ -79,7 +86,8 @@ public class ExtensionActionListCoordinator implements Destroyable { - this::getButtonViewForId, +@@ -78,7 +83,8 @@ public class ExtensionActionListCoordinator implements Destroyable { + mRecyclerViewDelegate, extensionsToolbarBridge, contextMenuPopulatorFactory, - selectionDropdownMenuDelegate); @@ -1092,7 +1079,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow ExtensionsToolbarDragTouchHandler dragTouchHandler = new ExtensionsToolbarDragTouchHandler(context, mModels); -@@ -135,8 +143,13 @@ public class ExtensionActionListCoordinator implements Destroyable { +@@ -134,6 +140,10 @@ public class ExtensionActionListCoordinator implements Destroyable { LifetimeAssert.setSafeToGc(mLifetimeAssert, true); } @@ -1100,16 +1087,21 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow + mMediator.onPrimaryClick(actionId); + } + - /** Performs a click on the button for the given action. */ - public void click(String actionId) { + /** + * Executes the given action. + * +@@ -141,6 +151,7 @@ public class ExtensionActionListCoordinator implements Destroyable { + * @param source How this execution was triggered. + */ + public void executeUserAction(String actionId, @InvocationSource int source) { + mExtensionsMenuButton.dismiss(); - View view = getButtonViewForId(actionId); - if (view != null) { - view.performClick(); + mMediator.executeUserAction(actionId, source); + } + diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionActionListMediator.java -@@ -40,6 +40,7 @@ import org.chromium.ui.modelutil.PropertyModel; +@@ -39,6 +39,7 @@ import org.chromium.ui.modelutil.PropertyModel; import java.util.Arrays; import java.util.HashSet; import java.util.Set; @@ -1117,21 +1109,21 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow @NullMarked class ExtensionActionListMediator implements Destroyable { -@@ -88,11 +89,11 @@ class ExtensionActionListMediator implements Destroyable { +@@ -87,11 +88,11 @@ class ExtensionActionListMediator implements Destroyable { private final WindowAndroid mWindowAndroid; private final ModelList mModels; private final ChromeAndroidTask mTask; - private final Profile mProfile; private final NullableObservableSupplier mCurrentTabSupplier; - private final ExtensionActionListCoordinator.ActionAnchorViewProvider mActionAnchorViewProvider; private final @Nullable ContextMenuPopulatorFactory mContextMenuPopulatorFactory; private final @Nullable SelectionDropdownMenuDelegate mSelectionDropdownMenuDelegate; + private final ExtensionActionListCoordinator.RecyclerViewDelegate mRecyclerViewDelegate; + private final ListMenuButton mExtensionsMenuButton; private final ExtensionsToolbarBridge mExtensionsToolbarBridge; private final ToolbarDelegate mToolbarDelegate = new ToolbarDelegate(); -@@ -116,19 +117,20 @@ class ExtensionActionListMediator implements Destroyable { - ExtensionActionListCoordinator.ActionAnchorViewProvider actionAnchorViewProvider, +@@ -124,19 +125,20 @@ class ExtensionActionListMediator implements Destroyable { + ExtensionActionListCoordinator.RecyclerViewDelegate recyclerViewDelegate, ExtensionsToolbarBridge extensionsToolbarBridge, @Nullable ContextMenuPopulatorFactory contextMenuPopulatorFactory, - @Nullable SelectionDropdownMenuDelegate selectionDropdownMenuDelegate) { @@ -1143,7 +1135,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mTask = task; - mProfile = profile; mCurrentTabSupplier = currentTabSupplier; - mActionAnchorViewProvider = actionAnchorViewProvider; + mRecyclerViewDelegate = recyclerViewDelegate; mExtensionsToolbarBridge = extensionsToolbarBridge; mContextMenuPopulatorFactory = contextMenuPopulatorFactory; mSelectionDropdownMenuDelegate = selectionDropdownMenuDelegate; @@ -1154,7 +1146,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mExtensionsToolbarBridge.addObserver(mToolbarObserver); reconcileActionItems(); } -@@ -141,7 +143,7 @@ class ExtensionActionListMediator implements Destroyable { +@@ -149,7 +151,7 @@ class ExtensionActionListMediator implements Destroyable { assert mActionState instanceof ActionState.Idle; mExtensionsToolbarBridge.removeObserver(mToolbarObserver); @@ -1163,7 +1155,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow LifetimeAssert.setSafeToGc(mLifetimeAssert, true); } -@@ -316,7 +318,8 @@ class ExtensionActionListMediator implements Destroyable { +@@ -401,7 +403,8 @@ class ExtensionActionListMediator implements Destroyable { return mModels.get(index).model.get(ExtensionActionButtonProperties.ID); } @@ -1173,30 +1165,26 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow if (mActionState instanceof ActionState.PopupActive activeState) { boolean closeOnly = activeState.getActionId().equals(actionId); closePopup(); -@@ -337,20 +340,13 @@ class ExtensionActionListMediator implements Destroyable { +@@ -470,16 +473,14 @@ class ExtensionActionListMediator implements Destroyable { + closeContextMenu(); ExtensionActionPopupContents contents = ExtensionActionPopupContents.create(nativeHostPtr); - -- if (findIndexForId(actionId) == -1) { -- // TODO(crbug.com/483194547): Implement popping out actions. -- contents.destroy(); -- return; -- } else { -- showPopupOnReadyAnchor(actionId, contents); -- } +- requestActionVisibility(actionId, () -> showPopupOnAnchor(actionId, contents)); + showPopupOnReadyAnchor(actionId, contents); } - private void showPopupOnReadyAnchor(String actionId, ExtensionActionPopupContents contents) { - View buttonView = mActionAnchorViewProvider.getButtonViewForId(actionId); + private void showPopupOnAnchor(String actionId, ExtensionActionPopupContents contents) { + ListMenuButton buttonView = + (ListMenuButton) mRecyclerViewDelegate.getButtonViewForId(actionId); if (buttonView == null) { - contents.destroy(); +- undoPopout(); - return; + buttonView = mExtensionsMenuButton; } Activity activity = mWindowAndroid.getActivity().get(); -@@ -420,7 +416,7 @@ class ExtensionActionListMediator implements Destroyable { +@@ -564,7 +565,7 @@ class ExtensionActionListMediator implements Destroyable { assert mActionState instanceof ActionState.Idle; ExtensionActionContextMenuBridge bridge = new ExtensionActionContextMenuBridge( @@ -1205,102 +1193,19 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow ExtensionActionContextMenuUtils.showContextMenu( mContext, buttonView, -@@ -452,7 +448,7 @@ class ExtensionActionListMediator implements Destroyable { +@@ -597,7 +598,7 @@ class ExtensionActionListMediator implements Destroyable { /** Updates the list of displayed actions to fit within the provided width constraint. */ public void fitActionsWithinWidth(int availableWidth) { -- mAvailableWidth = availableWidth; -+ // mAvailableWidth = availableWidth; +- mAvailableWidthForPinnedActions = availableWidth; ++ // mAvailableWidthForPinnedActions = availableWidth; // If this is called during an animation (e.g. the user resizes window during pinning / // unpinning animation), we abandon the animation and update to the new state instantly. -diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinator.java ---- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinator.java -+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinator.java -@@ -18,6 +18,7 @@ import org.chromium.build.annotations.Nullable; - import org.chromium.chrome.browser.layouts.toolbar.ToolbarWidthConsumer; - import org.chromium.chrome.browser.profiles.Profile; - import org.chromium.chrome.browser.tab.Tab; -+import org.chromium.chrome.browser.tabmodel.TabModel; - import org.chromium.chrome.browser.tabmodel.TabCreator; - import org.chromium.chrome.browser.theme.ThemeColorProvider; - import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTask; -@@ -26,6 +27,8 @@ import org.chromium.components.embedder_support.contextmenu.ContextMenuPopulator - import org.chromium.content_public.browser.selection.SelectionDropdownMenuDelegate; - import org.chromium.ui.base.WindowAndroid; - -+import java.util.function.Function; -+ - /** - * The coordinator of the extension-related toolbar UI. - * -diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinatorImpl.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinatorImpl.java ---- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinatorImpl.java -+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionToolbarCoordinatorImpl.java -@@ -65,23 +65,18 @@ public class ExtensionToolbarCoordinatorImpl implements ExtensionToolbarCoordina - ViewGroup rootView, - @Nullable ContextMenuPopulatorFactory contextMenuPopulatorFactory, - @Nullable SelectionDropdownMenuDelegate selectionDropdownMenuDelegate) { -- mBridge = new ExtensionActionsBridge(task, profile); -+ mBridge = ExtensionActionsBridge.Instance(); - - extensionToolbarStub.setLayoutResource(R.layout.extension_toolbar_container); - mContainer = (LinearLayout) extensionToolbarStub.inflate(); - -- mExtensionsToolbarBridge = new ExtensionsToolbarBridge(task, profile); -- -- mProfileSupplier.addObserver((profile) -> { -- if (!ExtensionUi.isEnabled(profileSupplier.get())) { -- container.setVisibility(View.GONE); -- } -- }); -+ mExtensionsToolbarBridge = ExtensionsToolbarBridge.Instance(); - - mExtensionActionListCoordinator = - new ExtensionActionListCoordinator( - context, - mContainer.findViewById(R.id.extension_action_list), -+ mContainer.findViewById(R.id.extensions_menu_button), - windowAndroid, - task, - profile, -@@ -108,8 +103,8 @@ public class ExtensionToolbarCoordinatorImpl implements ExtensionToolbarCoordina - public void destroy() { - mExtensionsMenuAndAccessControlButtonCoordinator.destroy(); - mExtensionActionListCoordinator.destroy(); -- mExtensionsToolbarBridge.destroy(); -- mBridge.destroy(); -+ //mExtensionsToolbarBridge.destroy(); -+ //mBridge.destroy(); - - LifetimeAssert.setSafeToGc(mLifetimeAssert, true); - } -diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuAndAccessControlButtonCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuAndAccessControlButtonCoordinator.java ---- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuAndAccessControlButtonCoordinator.java -+++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuAndAccessControlButtonCoordinator.java -@@ -48,7 +48,8 @@ public class ExtensionsMenuAndAccessControlButtonCoordinator implements Destroya - NullableObservableSupplier currentTabSupplier, - TabCreator tabCreator, - ExtensionsToolbarBridge extensionsToolbarBridge, -- View requestAccessButton) { -+ View requestAccessButton, -+ ExtensionActionListCoordinator extensionActionListCoordinator) { - mExtensionsMenuCoordinator = - new ExtensionsMenuCoordinator( - context, -@@ -58,7 +59,7 @@ public class ExtensionsMenuAndAccessControlButtonCoordinator implements Destroya - profile, - currentTabSupplier, - tabCreator, -- extensionsToolbarBridge); -+ extensionsToolbarBridge, extensionActionListCoordinator); - - mExtensionAccessControlButtonCoordinator = - new ExtensionAccessControlButtonCoordinator( diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java -@@ -43,6 +43,8 @@ import org.chromium.ui.modelutil.PropertyModelChangeProcessor; +@@ -45,6 +45,8 @@ import org.chromium.ui.modelutil.PropertyModelChangeProcessor; import org.chromium.ui.modelutil.SimpleRecyclerViewAdapter; import org.chromium.ui.widget.RectProvider; @@ -1337,26 +1242,26 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow /** * Mediator for the extensions menu. This class is responsible for listening to changes in the * extensions and updating the model accordingly. -@@ -43,7 +47,6 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ - private final PropertyModel mMenuPropertyModel; +@@ -44,7 +48,6 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ + private final PropertyModel mSitePermissionsPageModel; private final Runnable mOnReady; private final ChromeAndroidTask mTask; - private final Profile mProfile; private final ExtensionActionListCoordinator mExtensionActionListCoordinator; /** -@@ -69,8 +72,8 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ +@@ -73,8 +76,8 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ + mCurrentTabSupplier = currentTabSupplier; mOnReady = onReady; - mMenuPropertyModel = propertyModel; mTask = task; - mProfile = profile; - mMenuBridge = new ExtensionsMenuBridge(mTask, mProfile, /* observer= */ this); + mMenuBridge = ExtensionsMenuBridge.Instance(); + mMenuBridge.setObserver(task, /* observer= */ this); - mMenuPropertyModel.set( - ExtensionsMenuProperties.SITE_SETTINGS_TOGGLE_CLICK_LISTENER, -@@ -100,7 +103,7 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ + mMainPageModel = mainPageModel; + mMainPageModel.set( +@@ -112,7 +115,7 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ ExtensionActionContextMenuBridge contextMenuBridge = new ExtensionActionContextMenuBridge( @@ -1365,27 +1270,39 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow ExtensionActionContextMenuUtils.showContextMenu( mContext, -@@ -113,7 +116,7 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ - /** Destroys the mediator. */ - @Override +@@ -142,7 +145,7 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ public void destroy() { + mMainPageModel.set(ExtensionsMenuProperties.SITE_SETTINGS_TOGGLE_CLICK_LISTENER, null); + mSitePermissionsPageModel.set(SitePermissionsPageProperties.BACK_CLICK_LISTENER, null); - mMenuBridge.destroy(); + //mMenuBridge.destroy(); } /** -@@ -174,6 +177,7 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ - break; +@@ -253,6 +256,7 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ + break; + } } - } -+ if (oldIndex < 0) return; - assert oldIndex != -1 - : "Action model with ID " + entry.id + " should exist in mActionModels."; ++ if (oldIndex < 0) return; + assert oldIndex != -1 + : "Action model with ID " + entry.id + " should exist in mActionModels."; +diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java +--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java ++++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java +@@ -127,7 +127,7 @@ public class ExtensionsToolbarCoordinatorImpl implements ExtensionsToolbarCoordi + currentTabSupplier, + tabCreator, + mExtensionsToolbarBridge, +- mMenuButtonPinningDelegate); ++ mMenuButtonPinningDelegate, mExtensionActionListCoordinator); + + mExtensionAccessControlButtonCoordinator = + new ExtensionAccessControlButtonCoordinator( diff --git a/chrome/browser/ui/browser_window/internal/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskImpl.java b/chrome/browser/ui/browser_window/internal/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskImpl.java --- a/chrome/browser/ui/browser_window/internal/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskImpl.java +++ b/chrome/browser/ui/browser_window/internal/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskImpl.java -@@ -334,7 +334,7 @@ final class ChromeAndroidTaskImpl +@@ -329,7 +329,7 @@ final class ChromeAndroidTaskImpl // profile is destroyed. This should be fixed. For now we can just defer the // destruction until the activity is destroyed since there should never be more // than one profile/window on desktop Android. @@ -1394,8 +1311,8 @@ diff --git a/chrome/browser/ui/browser_window/internal/android/java/src/org/chro if (mPendingBrowserWindow != null && mPendingBrowserWindow.getProfile() == profile) { assert mActivityScopedObjectsDeque.isEmpty(); -@@ -402,6 +402,10 @@ final class ChromeAndroidTaskImpl - observer.onBrowserWindowAdded(ptr); +@@ -425,6 +425,10 @@ final class ChromeAndroidTaskImpl + } } } + @@ -1405,16 +1322,16 @@ diff --git a/chrome/browser/ui/browser_window/internal/android/java/src/org/chro } private @Nullable Integer mId; -@@ -685,7 +689,7 @@ final class ChromeAndroidTaskImpl - mFeatures.put(featureKey, feature); - feature.onAddedToTask(); - if (tabModelSelector != null) { -- feature.onTabModelSelected(tabModelSelector.getCurrentModel()); -+ feature.onTabModelSelected(this, tabModelSelector.getCurrentModel()); - } +@@ -738,7 +742,7 @@ final class ChromeAndroidTaskImpl + ? null + : topActivityScopedObjects.mTabModelSelector; + if (tabModelSelector != null) { +- feature.onTabModelSelected(tabModelSelector.getCurrentModel()); ++ feature.onTabModelSelected(this, tabModelSelector.getCurrentModel()); } } -@@ -1166,6 +1170,14 @@ final class ChromeAndroidTaskImpl + +@@ -1208,6 +1212,14 @@ final class ChromeAndroidTaskImpl for (var feature : mFeatures.values()) { feature.onTaskFocusChanged(isTopResumedActivity); } @@ -1429,7 +1346,7 @@ diff --git a/chrome/browser/ui/browser_window/internal/android/java/src/org/chro } @Override -@@ -1805,7 +1817,7 @@ final class ChromeAndroidTaskImpl +@@ -1867,7 +1879,7 @@ final class ChromeAndroidTaskImpl private void onTabModelSelected(TabModel tabModel) { for (var feature : mFeatures.values()) { @@ -1441,7 +1358,7 @@ diff --git a/chrome/browser/ui/browser_window/internal/android/java/src/org/chro diff --git a/chrome/browser/ui/browser_window/public/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskFeature.java b/chrome/browser/ui/browser_window/public/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskFeature.java --- a/chrome/browser/ui/browser_window/public/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskFeature.java +++ b/chrome/browser/ui/browser_window/public/android/java/src/org/chromium/chrome/browser/ui/browser_window/ChromeAndroidTaskFeature.java -@@ -62,5 +62,5 @@ public interface ChromeAndroidTaskFeature { +@@ -72,5 +72,5 @@ public interface ChromeAndroidTaskFeature { * * @param tabModel The selected {@link TabModel}. */ diff --git a/build/patches/Enable-native-Android-autofill.patch b/build/patches/Enable-native-Android-autofill.patch index 2cdfa386..f6d12749 100644 --- a/build/patches/Enable-native-Android-autofill.patch +++ b/build/patches/Enable-native-Android-autofill.patch @@ -38,7 +38,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../browser/content_autofill_driver.cc | 11 +++ .../content/browser/content_autofill_driver.h | 10 ++ .../content_autofill_driver_factory.cc | 12 +++ - .../content/renderer/autofill_agent.cc | 10 +- + .../content/renderer/autofill_agent.cc | 4 - .../renderer/password_autofill_agent.cc | 5 +- .../browser/foundations/autofill_driver.h | 2 + .../foundations/autofill_driver_factory.cc | 4 + @@ -50,7 +50,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../core/browser/password_form_manager.cc | 4 + .../core/browser/password_manager_client.cc | 2 + .../core/browser/password_manager_client.h | 2 + - 35 files changed, 255 insertions(+), 144 deletions(-) + 35 files changed, 249 insertions(+), 144 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 @@ -192,10 +192,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java -@@ -627,22 +627,8 @@ public class MainSettings extends ChromeBaseSettingsFragment - } +@@ -720,22 +720,8 @@ public class MainSettings extends ChromeBaseSettingsFragment - private void updateAutofillPreferences() { + // TODO(crbug.com/482988366): Remove this method once the Autofill and passwords feature is launched. + private void updateAutofillPreferencesPreAutofillAndPasswords() { - addPreferenceIfAbsent(PREF_AUTOFILL_SECTION); - addPreferenceIfAbsent(PREF_AUTOFILL_OPTIONS); - Preference autofillOptionsPreference = findPreference(PREF_AUTOFILL_OPTIONS); @@ -220,7 +220,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java -@@ -122,6 +122,13 @@ import java.util.HashMap; +@@ -121,6 +121,13 @@ import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -234,7 +234,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav /** * Implementation of the interface {@link Tab}. Contains and manages a {@link ContentView}. This * class is not intended to be extended. -@@ -1248,6 +1255,11 @@ class TabImpl implements Tab { +@@ -1252,6 +1259,11 @@ class TabImpl implements Tab { } mObservers.clear(); @@ -246,7 +246,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav if (!abortNavigationsFromTabClosures) mUserDataHost.destroy(); mTabViewManager.destroy(); hideNativePage(false, null); -@@ -1637,6 +1649,7 @@ class TabImpl implements Tab { +@@ -1641,6 +1653,7 @@ class TabImpl implements Tab { * @return iff the AutofillProvider should provide a ViewStructure when prompted. */ boolean providesAutofillStructure() { @@ -254,7 +254,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav if (!mProfile.isNativeInitialized()) { return false; } -@@ -2436,16 +2449,21 @@ class TabImpl implements Tab { +@@ -2440,16 +2453,21 @@ class TabImpl implements Tab { * @return true if the the provider is available for the given WebContents. */ private boolean prepareAutofillProvider(WebContents newWebContents) { @@ -282,7 +282,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav // TODO: crbug.com/432447902 — Provide only an activity context and push changes. mAutofillProvider = new AutofillProvider( -@@ -2455,7 +2473,16 @@ class TabImpl implements Tab { +@@ -2459,7 +2477,16 @@ class TabImpl implements Tab { getContext().getString(R.string.app_name)); TabImplJni.get().initializeAutofillIfNecessary(mNativeTabAndroid); } @@ -311,7 +311,7 @@ diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_ #include "chrome/browser/ui/android/context_menu_helper.h" #include "chrome/browser/ui/android/tab_model/tab_model.h" #include "chrome/browser/ui/android/tab_model/tab_model_list.h" -@@ -417,8 +418,7 @@ void TabAndroid::InitializeAutofillIfNecessary() { +@@ -431,8 +432,7 @@ void TabAndroid::InitializeAutofillIfNecessary() { ->MaybeInitKeyboardSuppressor(); return; } @@ -324,7 +324,7 @@ diff --git a/chrome/browser/android/tab_android.cc b/chrome/browser/android/tab_ diff --git a/chrome/browser/autofill/actor/actor_form_filling_service_impl.cc b/chrome/browser/autofill/actor/actor_form_filling_service_impl.cc --- a/chrome/browser/autofill/actor/actor_form_filling_service_impl.cc +++ b/chrome/browser/autofill/actor/actor_form_filling_service_impl.cc -@@ -426,14 +426,6 @@ GetAutofillManager(const tabs::TabInterface& tab) { +@@ -427,14 +427,6 @@ GetAutofillManager(const tabs::TabInterface& tab) { if (!profile) { return base::unexpected(kAutofillNotAvailable); } @@ -379,7 +379,7 @@ diff --git a/chrome/browser/autofill/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/password_manager/chrome_password_manager_client.cc b/chrome/browser/password_manager/chrome_password_manager_client.cc --- a/chrome/browser/password_manager/chrome_password_manager_client.cc +++ b/chrome/browser/password_manager/chrome_password_manager_client.cc -@@ -518,6 +518,12 @@ bool ChromePasswordManagerClient::PromptUserToChooseCredentials( +@@ -521,6 +521,12 @@ bool ChromePasswordManagerClient::PromptUserToChooseCredentials( } #if BUILDFLAG(IS_ANDROID) @@ -407,7 +407,7 @@ diff --git a/chrome/browser/password_manager/chrome_password_manager_client.h b/ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -336,6 +336,12 @@ CHAR_LIMIT guidelines: +@@ -345,6 +345,12 @@ CHAR_LIMIT guidelines: You and Google @@ -558,7 +558,7 @@ diff --git a/chrome/browser/ui/autofill/autofill_client_provider.h b/chrome/brow diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc --- a/chrome/browser/ui/tab_helpers.cc +++ b/chrome/browser/ui/tab_helpers.cc -@@ -380,9 +380,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { +@@ -389,9 +389,7 @@ void TabHelpers::AttachTabHelpers(WebContents* web_contents) { web_contents); ChainedBackNavigationTracker::CreateForWebContents(web_contents); chrome_browser_net::NetErrorTabHelper::CreateForWebContents(web_contents); @@ -712,7 +712,7 @@ new file mode 100644 diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/components/autofill/content/browser/content_autofill_driver.cc --- a/components/autofill/content/browser/content_autofill_driver.cc +++ b/components/autofill/content/browser/content_autofill_driver.cc -@@ -280,6 +280,13 @@ void RouteToManager(ContentAutofillDriver& source, +@@ -281,6 +281,13 @@ void RouteToManager(ContentAutofillDriver& source, AutofillManager& manager = target.GetAutofillManager(); (manager.* manager_fun)(WithNewVersion(std::forward(args))...); @@ -726,7 +726,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver.cc b/co }, source, Lift(source, std::forward(args))...); } -@@ -700,6 +707,10 @@ ContentAutofillDriver::GetAutofillAgent() { +@@ -701,6 +708,10 @@ ContentAutofillDriver::GetAutofillAgent() { return autofill_agent_; } @@ -796,7 +796,7 @@ diff --git a/components/autofill/content/browser/content_autofill_driver_factory diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components/autofill/content/renderer/autofill_agent.cc --- a/components/autofill/content/renderer/autofill_agent.cc +++ b/components/autofill/content/renderer/autofill_agent.cc -@@ -1615,17 +1615,19 @@ void AutofillAgent::ShowSuggestions( +@@ -1551,10 +1551,6 @@ void AutofillAgent::ShowSuggestions( password_generation_agent_->ShowPasswordGenerationSuggestions( input_element, form_cache)) { is_popup_possibly_visible_ = true; @@ -804,22 +804,9 @@ diff --git a/components/autofill/content/renderer/autofill_agent.cc b/components - features::kAutofillAndroidKeyboardAccessoryDynamicPositioning)) { - return; - } -+#if !BUILDFLAG(IS_ANDROID) -+ return; -+#endif } -+ [[maybe_unused]] - bool password_agent_handled_request = TryShowPasswordSuggestions( - input_element, IsPasswordsAutofillManuallyTriggered(trigger_source), - password_request); -+#if !BUILDFLAG(IS_ANDROID) - if (password_agent_handled_request) { - return; - } -+#endif } - if (config_.secure_context_required && diff --git a/components/autofill/content/renderer/password_autofill_agent.cc b/components/autofill/content/renderer/password_autofill_agent.cc --- a/components/autofill/content/renderer/password_autofill_agent.cc +++ b/components/autofill/content/renderer/password_autofill_agent.cc @@ -864,7 +851,7 @@ diff --git a/components/autofill/core/browser/foundations/autofill_driver_factor diff --git a/components/autofill/core/browser/foundations/autofill_manager.h b/components/autofill/core/browser/foundations/autofill_manager.h --- a/components/autofill/core/browser/foundations/autofill_manager.h +++ b/components/autofill/core/browser/foundations/autofill_manager.h -@@ -247,6 +247,8 @@ class AutofillManager +@@ -249,6 +249,8 @@ class AutofillManager LifecycleState new_state, base::PassKey pass_key); @@ -888,7 +875,7 @@ diff --git a/components/autofill/core/browser/foundations/browser_autofill_manag diff --git a/components/autofill/core/browser/foundations/browser_autofill_manager.h b/components/autofill/core/browser/foundations/browser_autofill_manager.h --- a/components/autofill/core/browser/foundations/browser_autofill_manager.h +++ b/components/autofill/core/browser/foundations/browser_autofill_manager.h -@@ -457,6 +457,8 @@ class BrowserAutofillManager : public AutofillManager { +@@ -452,6 +452,8 @@ class BrowserAutofillManager : public AutofillManager { // latter check is needed because IPC messages can arrive out of order. void UpdateInitialInteractionTimestamp(base::TimeTicks interaction_timestamp); @@ -921,7 +908,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.cc b/components/auto diff --git a/components/autofill/core/common/autofill_prefs.h b/components/autofill/core/common/autofill_prefs.h --- a/components/autofill/core/common/autofill_prefs.h +++ b/components/autofill/core/common/autofill_prefs.h -@@ -152,6 +152,11 @@ inline constexpr char kAutofillWasNameAndEmailProfileUsed[] = +@@ -153,6 +153,11 @@ inline constexpr char kAutofillWasNameAndEmailProfileUsed[] = // retention policy was run. inline constexpr char kAutocompleteLastVersionRetentionPolicy[] = "autocomplete.retention_policy_last_version"; @@ -936,7 +923,7 @@ diff --git a/components/autofill/core/common/autofill_prefs.h b/components/autof diff --git a/components/password_manager/core/browser/password_form_manager.cc b/components/password_manager/core/browser/password_form_manager.cc --- a/components/password_manager/core/browser/password_form_manager.cc +++ b/components/password_manager/core/browser/password_form_manager.cc -@@ -1196,6 +1196,10 @@ void PasswordFormManager::FillNow() { +@@ -1200,6 +1200,10 @@ void PasswordFormManager::FillNow() { } autofills_left_--; @@ -962,7 +949,7 @@ diff --git a/components/password_manager/core/browser/password_manager_client.cc diff --git a/components/password_manager/core/browser/password_manager_client.h b/components/password_manager/core/browser/password_manager_client.h --- a/components/password_manager/core/browser/password_manager_client.h +++ b/components/password_manager/core/browser/password_manager_client.h -@@ -224,6 +224,8 @@ class PasswordManagerClient { +@@ -228,6 +228,8 @@ class PasswordManagerClient { virtual void ShowKeyboardReplacingSurface( PasswordManagerDriver* driver, const autofill::PasswordSuggestionRequest& request); diff --git a/build/patches/Experimental-support-for-extensions-on-Android.patch b/build/patches/Experimental-support-for-extensions-on-Android.patch index b71e4633..02f8188e 100644 --- a/build/patches/Experimental-support-for-extensions-on-Android.patch +++ b/build/patches/Experimental-support-for-extensions-on-Android.patch @@ -42,11 +42,10 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../browser/tab/RequestDesktopUtils.java | 2 +- .../TabbedAppMenuPropertiesDelegate.java | 2 +- .../tabbed_mode/TabbedRootUiCoordinator.java | 4 +- - .../browser/tasks/ReturnToChromeUtil.java | 2 +- .../browser/toolbar/ToolbarManager.java | 2 +- chrome/app/extensions_strings.grdp | 7 ++ chrome/app/theme/theme_resources.grd | 4 +- - chrome/browser/BUILD.gn | 6 +- + chrome/browser/BUILD.gn | 4 +- chrome/browser/about_flags.cc | 4 ++ ...chrome_selection_dropdown_menu_delegate.cc | 4 +- .../bookmarks/bar/BookmarkBarUtils.java | 6 +- @@ -74,7 +73,6 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../feedback/DeviceInfoFeedbackSource.java | 2 +- .../browser/flags/ChromeFeatureList.java | 6 +- .../browser/incognito/IncognitoUtils.java | 2 +- - .../magic_stack/HomeModulesConfigManager.java | 2 +- chrome/browser/media/router/BUILD.gn | 4 +- .../browser/media/router/discovery/BUILD.gn | 2 +- .../media/router/media_router_feature.cc | 10 +-- @@ -83,7 +81,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../browser/open_in_app/OpenInAppUtils.java | 2 +- .../policy_value_and_status_aggregator.cc | 2 +- ...hrome_browser_main_extra_parts_profiles.cc | 2 +- - .../profiles/off_the_record_profile_impl.cc | 9 ++- + .../profiles/off_the_record_profile_impl.cc | 5 +- chrome/browser/profiles/profile_destroyer.cc | 2 +- chrome/browser/resources/BUILD.gn | 2 +- chrome/browser/resources/discards/BUILD.gn | 2 +- @@ -117,11 +115,11 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../browser/ui/android/tab_model/tab_model.cc | 2 +- .../android/tab_model/tab_model_test_helper.h | 2 +- .../toolbar/java/res/layout/toolbar_phone.xml | 6 ++ - .../ExtensionToolbarCoordinatorImpl.java | 12 +++- .../extensions/ExtensionsMenuCoordinator.java | 8 ++- - .../ExtensionsMenuItemProperties.java | 5 +- + .../ExtensionsMenuItemProperties.java | 4 ++ .../ExtensionsMenuItemViewBinder.java | 2 + .../extensions/ExtensionsMenuMediator.java | 9 ++- + .../ExtensionsToolbarCoordinatorImpl.java | 9 +-- chrome/browser/ui/browser_window/BUILD.gn | 2 +- .../ChromeAndroidTaskTrackerFactory.java | 2 +- chrome/browser/ui/prefs/BUILD.gn | 4 +- @@ -205,7 +203,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html ui/webui/resources/cr_elements/BUILD.gn | 2 +- .../cr_elements/cr_toolbar/cr_toolbar.css | 3 + ui/webui/resources/css/BUILD.gn | 2 +- - 193 files changed, 642 insertions(+), 309 deletions(-) + 191 files changed, 631 insertions(+), 306 deletions(-) create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Enable-extensions-Android.grdp create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Extensions-Android.grdp create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Extensions-Android.inc @@ -214,7 +212,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn --- a/android_webview/BUILD.gn +++ b/android_webview/BUILD.gn -@@ -1316,7 +1316,7 @@ declare_args() { +@@ -1315,7 +1315,7 @@ declare_args() { # logic more easily on an emulator, so the decision to use the arm64 # orderfile for x64 (instead of arm32) is somewhat arbitrary. We just # needed to use some real orderfile. @@ -226,15 +224,15 @@ diff --git a/android_webview/BUILD.gn b/android_webview/BUILD.gn diff --git a/base/allocator/partition_allocator/src/partition_alloc/BUILD.gn b/base/allocator/partition_allocator/src/partition_alloc/BUILD.gn --- a/base/allocator/partition_allocator/src/partition_alloc/BUILD.gn +++ b/base/allocator/partition_allocator/src/partition_alloc/BUILD.gn -@@ -170,6 +170,8 @@ pa_buildflag_header("buildflags") { +@@ -171,6 +171,8 @@ pa_buildflag_header("buildflags") { "HAS_64_BIT_POINTERS=$has_64_bit_pointers", "HAS_MEMORY_TAGGING=$has_memory_tagging", "IS_ANDROID=$is_android", + "IS_DESKTOP_ANDROID_FALSE=false", + "IS_DESKTOP_ANDROID_CROMITE=$is_desktop_android_cromite", "IS_CASTOS=$is_castos", - "IS_CAST_ANDROID=$is_cast_android", "IS_CHROMEOS=$is_chromeos", + "IS_DEBUG=$partition_alloc_is_debug", diff --git a/base/android/device_info.cc b/base/android/device_info.cc --- a/base/android/device_info.cc +++ b/base/android/device_info.cc @@ -279,7 +277,7 @@ diff --git a/base/android/device_info.h b/base/android/device_info.h diff --git a/base/android/java/src/org/chromium/base/DeviceInfo.java b/base/android/java/src/org/chromium/base/DeviceInfo.java --- a/base/android/java/src/org/chromium/base/DeviceInfo.java +++ b/base/android/java/src/org/chromium/base/DeviceInfo.java -@@ -143,10 +143,14 @@ public final class DeviceInfo { +@@ -152,10 +152,14 @@ public final class DeviceInfo { return getInstance().mIDeviceInfo.isFoldable; } @@ -295,7 +293,7 @@ diff --git a/base/android/java/src/org/chromium/base/DeviceInfo.java b/base/andr public static int getVulkanDeqpLevel() { return getInstance().mIDeviceInfo.vulkanDeqpLevel; } -@@ -308,7 +312,7 @@ public final class DeviceInfo { +@@ -320,7 +324,7 @@ public final class DeviceInfo { mIDeviceInfo.isDesktop = (sIsDesktopForTesting != null) ? sIsDesktopForTesting @@ -338,7 +336,7 @@ diff --git a/build/android/java/templates/BuildConfig.template b/build/android/j diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni --- a/build/config/android/rules.gni +++ b/build/config/android/rules.gni -@@ -2047,8 +2047,8 @@ if (!is_robolectric && enable_java_templates) { +@@ -2048,8 +2048,8 @@ if (!is_robolectric && enable_java_templates) { } else { defines += [ "_LOGTAG_PREFIX=cr_" ] } @@ -416,7 +414,7 @@ diff --git a/cc/resources/ui_resource_bitmap.cc b/cc/resources/ui_resource_bitma diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -981,7 +981,7 @@ if (_is_default_toolchain) { +@@ -990,7 +990,7 @@ if (_is_default_toolchain) { "//chrome/browser/password_entry_edit/android/internal:java", ] @@ -425,7 +423,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn deps += [ "//chrome/browser/ui/android/extensions/windowing/internal:java" ] } else { -@@ -2367,7 +2367,7 @@ if (_is_default_toolchain) { +@@ -2393,7 +2393,7 @@ if (_is_default_toolchain) { "//components/embedder_support/android:virtual_structure_javatests", ] @@ -449,7 +447,7 @@ diff --git a/chrome/android/chrome_public_apk_tmpl.gni b/chrome/android/chrome_p diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml -@@ -558,9 +558,6 @@ by a child template that "extends" this file. +@@ -550,9 +550,6 @@ by a child template that "extends" this file. android:theme="@style/Theme.Chromium.TabbedMode" android:exported="true" android:launchMode="singleTask" @@ -523,7 +521,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/appmenu/AppMenuPropertiesDelegateImpl.java -@@ -1195,7 +1195,7 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties +@@ -1225,7 +1225,7 @@ public abstract class AppMenuPropertiesDelegateImpl implements AppMenuProperties && !shouldShowReaderModePrefs(currentTab) && currentTab != null && currentTab.getWebContents() != null @@ -547,15 +545,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/appearance/sett diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/overlays/strip/StripLayoutUtils.java -@@ -415,7 +415,7 @@ public class StripLayoutUtils { +@@ -415,6 +415,6 @@ public class StripLayoutUtils { public static boolean shouldApplyMoreDensity() { return ChromeFeatureList.sTabStripDensityChangeAndroid.isEnabled() - && DeviceInfo.isDesktop(); + && DeviceInfo.isDesktopFalse(); } - - // Testing booleans + } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteSettingsIphController.java b/chrome/android/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteSettingsIphController.java --- a/chrome/android/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteSettingsIphController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/desktop_site/DesktopSiteSettingsIphController.java @@ -571,7 +568,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/desktop_site/De diff --git a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java --- a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java -@@ -225,7 +225,7 @@ public class MultiWindowUtils implements ActivityStateListener { +@@ -216,7 +216,7 @@ public class MultiWindowUtils implements ActivityStateListener { return TabWindowManager.MAX_SELECTORS_LEGACY; } @@ -670,7 +667,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/RequestDesk diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedAppMenuPropertiesDelegate.java -@@ -1004,7 +1004,7 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm +@@ -1022,7 +1022,7 @@ public class TabbedAppMenuPropertiesDelegate extends AppMenuPropertiesDelegateIm // 2. The current tab is a PDF page. NativePage nativePage = currentTab.getNativePage(); boolean isPdf = nativePage != null && nativePage.isPdf(); @@ -682,7 +679,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/TabbedRootUiCoordinator.java -@@ -650,7 +650,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -672,7 +672,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { }); mCrossDeviceSettingImporter = @@ -691,7 +688,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab ? null : new CrossDeviceSettingImporter( activityLifecycleDispatcher, -@@ -2224,7 +2224,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { +@@ -2357,7 +2357,7 @@ public class TabbedRootUiCoordinator extends RootUiCoordinator { } else if (id == R.id.toggle_bookmark_bar) { // isActivityStateBookmarkBarCompatible already checks the flag sAndroidBookmarkBar. if (BookmarkBarUtils.isActivityStateBookmarkBarCompatible(mActivity)) { @@ -700,22 +697,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabbed_mode/Tab // Desktop uses the synced UserPref. BookmarkBarUtils.toggleUserPrefsShowBookmarksBar( mProfileSupplier.get(), /* fromKeyboardShortcut= */ true); -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java b/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java ---- a/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/tasks/ReturnToChromeUtil.java -@@ -133,7 +133,7 @@ public final class ReturnToChromeUtil { - PersistableBundle persistableBundle, - ChromeInactivityTracker inactivityTracker) { - // If the device is android desktop, don't show a NTP homepage. -- if (ChromeFeatureList.sNtpSimplification.isEnabled() && DeviceInfo.isDesktop()) { -+ if (ChromeFeatureList.sNtpSimplification.isEnabled() && DeviceInfo.isDesktopFalse()) { - return false; - } - diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java --- a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/toolbar/ToolbarManager.java -@@ -2391,7 +2391,7 @@ public class ToolbarManager +@@ -2526,7 +2526,7 @@ public class ToolbarManager mActivityTabProvider.asObservable(), mTabCreatorManager.getTabCreator(false), getBrowsingModeThemeColorProvider(), @@ -723,7 +708,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar + mToolbarLayout, contextMenuPopulatorFactory, selectionDropdownMenuDelegate); - if (mExtensionToolbarCoordinator != null) { + if (mExtensionsToolbarCoordinator != null) { diff --git a/chrome/app/extensions_strings.grdp b/chrome/app/extensions_strings.grdp --- a/chrome/app/extensions_strings.grdp +++ b/chrome/app/extensions_strings.grdp @@ -768,16 +753,7 @@ diff --git a/chrome/app/theme/theme_resources.grd b/chrome/app/theme/theme_resou diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -7466,7 +7466,7 @@ static_library("browser") { - deps += [ "//media/mojo/mojom:remoting" ] - } - -- if (is_android && !enable_desktop_android_extensions) { -+ if (is_android && !enable_desktop_android_extensions_cromite) { - sources += [ "download/download_crx_util_android.cc" ] - } - -@@ -7810,7 +7810,7 @@ static_library("browser") { +@@ -7267,7 +7267,7 @@ static_library("browser") { # TODO(https://crbug.com/356905053): Add more dependencies here and merge this # block with the `enable_extensions` block above. @@ -786,7 +762,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn sources += [ # TODO(https://crbug.com/356905053): These files are temporary workarounds # allow for a lightweight extensions runtime in desktop-android builds. -@@ -8590,7 +8590,7 @@ static_library("browser_generated_files") { +@@ -7894,7 +7894,7 @@ group("browser_generated_files") { [ "//chrome/browser/ui/webui/new_tab_page/foo:mojo_bindings" ] } } @@ -798,7 +774,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc --- a/chrome/browser/about_flags.cc +++ b/chrome/browser/about_flags.cc -@@ -385,6 +385,10 @@ +@@ -389,6 +389,10 @@ #include "extensions/common/switches.h" #endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE) @@ -885,7 +861,7 @@ diff --git a/chrome/browser/browser_controls/android/java/src/org/chromium/chrom diff --git a/chrome/browser/browser_process_impl.cc b/chrome/browser/browser_process_impl.cc --- a/chrome/browser/browser_process_impl.cc +++ b/chrome/browser/browser_process_impl.cc -@@ -396,7 +396,7 @@ void BrowserProcessImpl::Init() { +@@ -399,7 +399,7 @@ void BrowserProcessImpl::Init() { // TODO(devlin): Move this block out of BrowserProcessImpl to somewhere like // //chrome/browser/initialize_extensions_browser_client, analogous to // `EnsureExtensionsClientInitialized()` above? @@ -1051,7 +1027,7 @@ diff --git a/chrome/browser/chrome_browser_field_trials.cc b/chrome/browser/chro diff --git a/chrome/browser/chrome_browser_interface_binders_webui.cc b/chrome/browser/chrome_browser_interface_binders_webui.cc --- a/chrome/browser/chrome_browser_interface_binders_webui.cc +++ b/chrome/browser/chrome_browser_interface_binders_webui.cc -@@ -48,7 +48,7 @@ +@@ -52,7 +52,7 @@ #include "mojo/public/cpp/bindings/binder_map.h" #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ @@ -1060,7 +1036,7 @@ diff --git a/chrome/browser/chrome_browser_interface_binders_webui.cc b/chrome/b #include "chrome/browser/ui/webui/discards/discards.mojom.h" #include "chrome/browser/ui/webui/discards/discards_ui.h" #include "chrome/browser/ui/webui/discards/site_data.mojom.h" -@@ -165,7 +165,7 @@ void PopulateChromeWebUIFrameBinders( +@@ -178,7 +178,7 @@ void PopulateChromeWebUIFrameBinders( #endif // BUILDFLAG(IS_CHROMEOS) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ @@ -1072,7 +1048,7 @@ diff --git a/chrome/browser/chrome_browser_interface_binders_webui.cc b/chrome/b 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 -@@ -4379,7 +4379,7 @@ base::OnceClosure ChromeContentBrowserClient::SelectClientCertificate( +@@ -4365,7 +4365,7 @@ base::OnceClosure ChromeContentBrowserClient::SelectClientCertificate( // TODO(wenz): This should instead proceed with the selected certificate // when there are matching certificates in the OS. #if BUILDFLAG(ENABLE_EXTENSIONS) && \ @@ -1081,7 +1057,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch if (matching_certificates.empty() && nonmatching_certificates.empty()) { extensions::ProcessMap* process_map = extensions::ProcessMap::Get(profile); -@@ -4611,7 +4611,7 @@ void ChromeContentBrowserClient::OverrideWebPreferences( +@@ -4648,7 +4648,7 @@ void ChromeContentBrowserClient::OverrideWebPreferences( // Fill font preferences. These are not registered on Android unless we're built // with extensions (the chrome.fontSettings API can change these). // - http://crbug.com/40337093, http://crbug.com/41304476. @@ -1093,7 +1069,7 @@ diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/ch diff --git a/chrome/browser/devtools/BUILD.gn b/chrome/browser/devtools/BUILD.gn --- a/chrome/browser/devtools/BUILD.gn +++ b/chrome/browser/devtools/BUILD.gn -@@ -356,7 +356,7 @@ static_library("devtools") { +@@ -363,7 +363,7 @@ static_library("devtools") { } } @@ -1105,7 +1081,7 @@ diff --git a/chrome/browser/devtools/BUILD.gn b/chrome/browser/devtools/BUILD.gn diff --git a/chrome/browser/download/chrome_download_manager_delegate.cc b/chrome/browser/download/chrome_download_manager_delegate.cc --- a/chrome/browser/download/chrome_download_manager_delegate.cc +++ b/chrome/browser/download/chrome_download_manager_delegate.cc -@@ -749,7 +749,7 @@ bool ChromeDownloadManagerDelegate::DetermineDownloadTarget( +@@ -745,7 +745,7 @@ bool ChromeDownloadManagerDelegate::DetermineDownloadTarget( DownloadPathReservationTracker::FilenameConflictAction action = kDefaultPlatformConflictAction; #if BUILDFLAG(IS_ANDROID) @@ -1138,7 +1114,7 @@ diff --git a/chrome/browser/download/download_offline_content_provider.cc b/chro diff --git a/chrome/browser/extensions/BUILD.gn b/chrome/browser/extensions/BUILD.gn --- a/chrome/browser/extensions/BUILD.gn +++ b/chrome/browser/extensions/BUILD.gn -@@ -1736,7 +1736,7 @@ source_set("chrome_extensions_browser_client") { +@@ -1697,7 +1697,7 @@ source_set("chrome_extensions_browser_client") { "//extensions/browser/updater", ] @@ -1147,7 +1123,7 @@ diff --git a/chrome/browser/extensions/BUILD.gn b/chrome/browser/extensions/BUIL sources += [ "chrome_extensions_browser_client_android.cc" ] deps += [ -@@ -1751,6 +1751,16 @@ source_set("chrome_extensions_browser_client") { +@@ -1712,6 +1712,16 @@ source_set("chrome_extensions_browser_client") { "//extensions/browser", "//extensions/browser/kiosk", ] @@ -1230,7 +1206,7 @@ diff --git a/chrome/browser/extensions/api/identity/web_auth_flow.h b/chrome/bro diff --git a/chrome/browser/extensions/api/tabs/tabs_api.cc b/chrome/browser/extensions/api/tabs/tabs_api.cc --- a/chrome/browser/extensions/api/tabs/tabs_api.cc +++ b/chrome/browser/extensions/api/tabs/tabs_api.cc -@@ -1693,6 +1693,9 @@ base::ListValue TabsQueryFunction::BuildTabList( +@@ -1725,6 +1725,9 @@ base::ListValue TabsQueryFunction::BuildTabList( } TabListInterface* tab_list = TabListInterface::From(browser); @@ -1287,7 +1263,7 @@ diff --git a/chrome/browser/extensions/api/tabs/tabs_event_router.cc b/chrome/br CHECK(web_contents); // Removing a tab can affect the indices of all existing tabs in the tab -@@ -513,6 +527,9 @@ void TabsEventRouter::OnTabMoved(TabListInterface& tab_list, +@@ -509,6 +523,9 @@ void TabsEventRouter::OnTabMoved(TabListInterface& tab_list, int to_index) { CHECK(tab); content::WebContents* web_contents = tab->GetContents(); @@ -1297,7 +1273,7 @@ diff --git a/chrome/browser/extensions/api/tabs/tabs_event_router.cc b/chrome/br CHECK(web_contents); // Moving tab can affect the indices of all existing tabs in the tab list -@@ -551,6 +568,9 @@ void TabsEventRouter::OnHighlightedTabsChanged( +@@ -547,6 +564,9 @@ void TabsEventRouter::OnHighlightedTabsChanged( for (tabs::TabInterface* tab : highlighted_tabs) { content::WebContents* web_contents = tab->GetContents(); @@ -1310,7 +1286,7 @@ diff --git a/chrome/browser/extensions/api/tabs/tabs_event_router.cc b/chrome/br diff --git a/chrome/browser/extensions/browser_extension_window_controller.cc b/chrome/browser/extensions/browser_extension_window_controller.cc --- a/chrome/browser/extensions/browser_extension_window_controller.cc +++ b/chrome/browser/extensions/browser_extension_window_controller.cc -@@ -105,14 +105,22 @@ BrowserExtensionWindowController::BrowserExtensionWindowController( +@@ -109,14 +109,22 @@ BrowserExtensionWindowController::BrowserExtensionWindowController( #if !BUILDFLAG(IS_ANDROID) window_(CHECK_DEREF(browser->GetBrowserForMigrationOnly()->window())), #endif // !BUILDFLAG(IS_ANDROID) @@ -1334,7 +1310,7 @@ diff --git a/chrome/browser/extensions/browser_extension_window_controller.cc b/ WindowControllerList::GetInstance()->RemoveExtensionWindow(this); } -@@ -122,6 +130,13 @@ BrowserExtensionWindowController* BrowserExtensionWindowController::From( +@@ -126,6 +134,13 @@ BrowserExtensionWindowController* BrowserExtensionWindowController::From( browser_window_interface->GetUnownedUserDataHost()); } @@ -1348,7 +1324,7 @@ diff --git a/chrome/browser/extensions/browser_extension_window_controller.cc b/ int BrowserExtensionWindowController::GetWindowId() const { return static_cast(session_id_.id()); } -@@ -268,7 +283,7 @@ base::ListValue BrowserExtensionWindowController::CreateTabList( +@@ -272,7 +287,7 @@ base::ListValue BrowserExtensionWindowController::CreateTabList( ExtensionTabUtil::GetScrubTabBehavior(extension, context, web_contents); tab_list.Append( ExtensionTabUtil::CreateTabObject(web_contents, scrub_tab_behavior, @@ -1397,7 +1373,7 @@ diff --git a/chrome/browser/extensions/browser_extension_window_controller.h b/c diff --git a/chrome/browser/extensions/extension_management.cc b/chrome/browser/extensions/extension_management.cc --- a/chrome/browser/extensions/extension_management.cc +++ b/chrome/browser/extensions/extension_management.cc -@@ -177,8 +177,12 @@ ManagedInstallationMode ExtensionManagement::GetInstallationMode( +@@ -178,8 +178,12 @@ ManagedInstallationMode ExtensionManagement::GetInstallationMode( update_url ? *update_url : std::string()); } @@ -1411,7 +1387,7 @@ diff --git a/chrome/browser/extensions/extension_management.cc b/chrome/browser/ std::string user_name = profile_->GetProfileUserName(); // Crude check to avoid passing invalid strings to `ExtractDomainName`. if (user_name.contains("@")) { -@@ -195,7 +199,7 @@ bool ExtensionManagement::ExtensionsEnabledForDesktopAndroid() const { +@@ -196,7 +200,7 @@ bool ExtensionManagement::ExtensionsEnabledForDesktopAndroid() const { ManagedInstallationMode ExtensionManagement::GetInstallationMode( const ExtensionId& extension_id, const std::string& update_url) { @@ -1470,7 +1446,7 @@ diff --git a/chrome/browser/feed/android/java/src/org/chromium/chrome/browser/fe - return (!ChromeFeatureList.sNtpSimplification.isEnabled() || !DeviceInfo.isDesktop()) + return (!ChromeFeatureList.sNtpSimplification.isEnabled() || !DeviceInfo.isDesktopCromite()) && FeedServiceBridge.isEnabled() - && isFeedEnabledByDSE(profile); + && isFeedEnabledByDse(profile); } diff --git a/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/DeviceInfoFeedbackSource.java b/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/DeviceInfoFeedbackSource.java --- a/chrome/browser/feedback/android/java/src/org/chromium/chrome/browser/feedback/DeviceInfoFeedbackSource.java @@ -1487,16 +1463,16 @@ diff --git a/chrome/browser/feedback/android/java/src/org/chromium/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -767,7 +767,7 @@ public abstract class ChromeFeatureList { +@@ -793,7 +793,7 @@ public abstract class ChromeFeatureList { public static final CachedFlag sAndroidNewMediaPicker = newCachedFlag(ANDROID_NEW_MEDIA_PICKER, false); public static final CachedFlag sAndroidOpenIncognitoAsWindow = - newCachedFlag(ANDROID_OPEN_INCOGNITO_AS_WINDOW, BuildConfig.IS_DESKTOP_ANDROID, true); + newCachedFlag(ANDROID_OPEN_INCOGNITO_AS_WINDOW, BuildConfig.IS_DESKTOP_ANDROID_FALSE, false); + public static final CachedFlag sAndroidPageInfoAsAppMenuItem = + newCachedFlag(ANDROID_PAGE_INFO_AS_APP_MENU_ITEM, false); public static final CachedFlag sAndroidProgressBarVisualUpdate = - newCachedFlag( - ANDROID_PROGRESS_BAR_VISUAL_UPDATE, -@@ -891,7 +891,7 @@ public abstract class ChromeFeatureList { +@@ -927,7 +927,7 @@ public abstract class ChromeFeatureList { public static final CachedFlag sChromeItemPickerUi = newCachedFlag(CHROME_ITEM_PICKER_UI, /* defaultValue= */ false); public static final CachedFlag sChromeNativeUrlOverriding = @@ -1505,7 +1481,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final CachedFlag sClampAutomotiveScaling = newCachedFlag(CLAMP_AUTOMOTIVE_SCALING, true); public static final CachedFlag sClankStartupLatencyInjection = -@@ -1067,7 +1067,7 @@ public abstract class ChromeFeatureList { +@@ -1122,7 +1122,7 @@ public abstract class ChromeFeatureList { newCachedFlag(POWER_SAVING_MODE_BROADCAST_RECEIVER_IN_BACKGROUND, true); public static final CachedFlag sPriceChangeModule = newCachedFlag(PRICE_CHANGE_MODULE, true); public static final CachedFlag sProtectRecentlyVisibleTab = @@ -1526,22 +1502,10 @@ diff --git a/chrome/browser/incognito/android/java/src/org/chromium/chrome/brows || ThreadUtils.runOnUiThreadBlocking( () -> DisplayUtil.isGlobalDefaultDisplayWithMinDiagonal( -diff --git a/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesConfigManager.java b/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesConfigManager.java ---- a/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesConfigManager.java -+++ b/chrome/browser/magic_stack/android/java/src/org/chromium/chrome/browser/magic_stack/HomeModulesConfigManager.java -@@ -89,7 +89,7 @@ public class HomeModulesConfigManager { - */ - public boolean getPrefModuleTypeEnabled(@ModuleType int moduleType) { - boolean defaultEnabled = -- !ChromeFeatureList.sNtpSimplification.isEnabled() || !DeviceInfo.isDesktop(); -+ !ChromeFeatureList.sNtpSimplification.isEnabled() || !DeviceInfo.isDesktopFalse(); - return mSharedPreferencesManager.readBoolean( - getSettingsPreferenceKey(moduleType), defaultEnabled); - } diff --git a/chrome/browser/media/router/BUILD.gn b/chrome/browser/media/router/BUILD.gn --- a/chrome/browser/media/router/BUILD.gn +++ b/chrome/browser/media/router/BUILD.gn -@@ -261,7 +261,7 @@ static_library("test_support") { +@@ -262,7 +262,7 @@ static_library("test_support") { deps = [] sources = [] @@ -1550,7 +1514,7 @@ diff --git a/chrome/browser/media/router/BUILD.gn b/chrome/browser/media/router/ deps += [ "//base", "//chrome/browser/media/router/discovery", -@@ -412,7 +412,7 @@ source_set("unittests") { +@@ -413,7 +413,7 @@ source_set("unittests") { } # Traditional desktop platforms and desktop android with extensions support. @@ -1634,7 +1598,7 @@ diff --git a/chrome/browser/media/router/media_router_feature.h b/chrome/browser diff --git a/chrome/browser/media/webrtc/webrtc_event_log_manager.cc b/chrome/browser/media/webrtc/webrtc_event_log_manager.cc --- a/chrome/browser/media/webrtc/webrtc_event_log_manager.cc +++ b/chrome/browser/media/webrtc/webrtc_event_log_manager.cc -@@ -112,7 +112,7 @@ class PeerConnectionTrackerProxyImpl +@@ -113,7 +113,7 @@ class PeerConnectionTrackerProxyImpl // necessarily for any given user profile. // Certain platforms (mobile) are blocked from remote-bound logging. bool IsRemoteLoggingFeatureEnabled() { @@ -1643,7 +1607,7 @@ diff --git a/chrome/browser/media/webrtc/webrtc_event_log_manager.cc b/chrome/br bool enabled = false; #else bool enabled = true; -@@ -464,7 +464,7 @@ WebRtcEventLogManager::CreateRemoteLogFileWriterFactory() { +@@ -465,7 +465,7 @@ WebRtcEventLogManager::CreateRemoteLogFileWriterFactory() { if (remote_log_file_writer_factory_for_testing_) { return std::move(remote_log_file_writer_factory_for_testing_); } else { @@ -1679,7 +1643,7 @@ diff --git a/chrome/browser/policy/policy_value_and_status_aggregator.cc b/chrom diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc --- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc +++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc -@@ -663,7 +663,7 @@ void ChromeBrowserMainExtraPartsProfiles:: +@@ -669,7 +669,7 @@ void ChromeBrowserMainExtraPartsProfiles:: chromeos_extensions::EnsureBrowserContextKeyedServiceFactoriesBuilt(); #endif extensions::EnsureBrowserContextKeyedServiceFactoriesBuilt(); @@ -1691,36 +1655,25 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc diff --git a/chrome/browser/profiles/off_the_record_profile_impl.cc b/chrome/browser/profiles/off_the_record_profile_impl.cc --- a/chrome/browser/profiles/off_the_record_profile_impl.cc +++ b/chrome/browser/profiles/off_the_record_profile_impl.cc -@@ -108,6 +108,8 @@ - #if BUILDFLAG(ENABLE_EXTENSIONS_CORE) +@@ -110,6 +110,7 @@ #include "chrome/browser/extensions/extension_special_storage_policy.h" #include "chrome/browser/ui/webui/extensions/extension_icon_source.h" -+#include "extensions/browser/api/web_request/extension_web_request_event_router.h" + #include "extensions/browser/api/web_request/extension_web_request_event_router.h" +#include "extensions/browser/process_manager.h" #endif - #if BUILDFLAG(ENABLE_EXTENSIONS) -@@ -216,7 +218,10 @@ void OffTheRecordProfileImpl::Init() { + #if BUILDFLAG(ENABLE_GUEST_VIEW) +@@ -209,7 +210,9 @@ void OffTheRecordProfileImpl::Init() { + // Make the chrome//extension-icon/ resource available. + content::URLDataSource::Add( this, std::make_unique(profile_)); - #endif - --#if BUILDFLAG(ENABLE_EXTENSIONS) -+#if BUILDFLAG(ENABLE_EXTENSIONS_CORE) +- + if (extensions::ProcessManager* process_manager = extensions::ProcessManager::Get(this)) { + process_manager->MaybeCreateStartupBackgroundHosts(); + } extensions::WebRequestEventRouter::OnOTRBrowserContextCreated(profile_, this); - #endif + #endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE) -@@ -275,7 +280,7 @@ OffTheRecordProfileImpl::~OffTheRecordProfileImpl() { - - SimpleKeyMap::GetInstance()->Dissociate(this); - --#if BUILDFLAG(ENABLE_EXTENSIONS) -+#if BUILDFLAG(ENABLE_EXTENSIONS_CORE) - extensions::WebRequestEventRouter::OnOTRBrowserContextDestroyed(profile_, - this); - #endif diff --git a/chrome/browser/profiles/profile_destroyer.cc b/chrome/browser/profiles/profile_destroyer.cc --- a/chrome/browser/profiles/profile_destroyer.cc +++ b/chrome/browser/profiles/profile_destroyer.cc @@ -1742,9 +1695,9 @@ diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD. - if (is_win || is_mac || is_linux || is_chromeos || is_desktop_android) { + if (is_win || is_mac || is_linux || is_chromeos || is_desktop_android_cromite) { - public_deps += [ "discards:resources" ] - } - + public_deps += [ + "discards:resources", + "management:resources", diff --git a/chrome/browser/resources/discards/BUILD.gn b/chrome/browser/resources/discards/BUILD.gn --- a/chrome/browser/resources/discards/BUILD.gn +++ b/chrome/browser/resources/discards/BUILD.gn @@ -1822,7 +1775,7 @@ diff --git a/chrome/browser/resources/extensions/item_list.css b/chrome/browser/ diff --git a/chrome/browser/resources/extensions/toolbar.html.ts b/chrome/browser/resources/extensions/toolbar.html.ts --- a/chrome/browser/resources/extensions/toolbar.html.ts +++ b/chrome/browser/resources/extensions/toolbar.html.ts -@@ -25,13 +25,6 @@ export function getHtml(this: ToolbarElement) { +@@ -26,13 +26,6 @@ export function getHtml(this: ToolbarElement) { aria-labelledby="devModeLabel"> @@ -1860,7 +1813,7 @@ diff --git a/chrome/browser/sessions/session_restore_android.cc b/chrome/browser diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProviderBase.java b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProviderBase.java --- a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProviderBase.java +++ b/chrome/browser/share/android/java/src/org/chromium/chrome/browser/share/ChromeProvidedSharingOptionsProviderBase.java -@@ -285,7 +285,7 @@ public abstract class ChromeProvidedSharingOptionsProviderBase { +@@ -305,7 +305,7 @@ public abstract class ChromeProvidedSharingOptionsProviderBase { } private void maybeAddCollaborateFirstPartyOption() { @@ -1869,7 +1822,7 @@ diff --git a/chrome/browser/share/android/java/src/org/chromium/chrome/browser/s return; } FirstPartyOption option = createCollaborateFirstPartyOption(); -@@ -317,7 +317,7 @@ public abstract class ChromeProvidedSharingOptionsProviderBase { +@@ -337,7 +337,7 @@ public abstract class ChromeProvidedSharingOptionsProviderBase { private void maybeAddPrintFirstPartyOption() { // For the desktop case, the Print action will be showed in the main menu. @@ -1953,7 +1906,7 @@ diff --git a/chrome/browser/task_manager/common/task_manager_features.cc b/chrom diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn --- a/chrome/browser/ui/BUILD.gn +++ b/chrome/browser/ui/BUILD.gn -@@ -706,7 +706,7 @@ static_library("ui") { +@@ -719,7 +719,7 @@ static_library("ui") { } # Desktop-Android-only dependencies. @@ -1962,7 +1915,7 @@ diff --git a/chrome/browser/ui/BUILD.gn b/chrome/browser/ui/BUILD.gn deps += [ "//chrome/browser/ui/android/extensions/windowing/internal" ] } -@@ -2975,7 +2975,7 @@ static_library("ui") { +@@ -3022,7 +3022,7 @@ static_library("ui") { allow_circular_includes_from += [ "//chrome/browser/ui/wallet" ] } @@ -2076,8 +2029,8 @@ diff --git a/chrome/browser/ui/android/desktop_windowing/java/src/org/chromium/c diff --git a/chrome/browser/ui/android/extensions/BUILD.gn b/chrome/browser/ui/android/extensions/BUILD.gn --- a/chrome/browser/ui/android/extensions/BUILD.gn +++ b/chrome/browser/ui/android/extensions/BUILD.gn -@@ -88,8 +88,8 @@ if (enable_extensions_core) { - # BuildConfig. +@@ -87,8 +87,8 @@ if (enable_extensions_core) { + java_cpp_template("generate_buildflags") { sources = [ "java/templates/ExtensionsBuildflags.template" ] - if (enable_desktop_android_extensions) { @@ -2106,9 +2059,9 @@ diff --git a/chrome/browser/ui/android/extensions/extension_actions_bridge.cc b/ #include "chrome/browser/ui/android/extensions/jni_headers/ExtensionAction_jni.h" #include "chrome/browser/ui/android/extensions/jni_headers/ExtensionActionsBridge_jni.h" -@@ -34,6 +37,26 @@ void ExtensionActionsBridge::Destroy(JNIEnv* env) { - delete this; - } +@@ -28,6 +31,26 @@ ExtensionActionsBridge::ExtensionActionsBridge( + + ExtensionActionsBridge::~ExtensionActionsBridge() = default; +void ExtensionActionsBridge::ClearExtensionData(JNIEnv* env) { + auto install_directory = profile_->GetPath().AppendASCII(kInstallDirectoryName); @@ -2130,24 +2083,24 @@ diff --git a/chrome/browser/ui/android/extensions/extension_actions_bridge.cc b/ + install_directory, install_updacked_directory)); +} + - jni_zero::ScopedJavaLocalRef - ExtensionActionsBridge::HandleKeyDownEvent( - JNIEnv* env, + void ExtensionActionsBridge::Destroy(JNIEnv* env) { + delete this; + } diff --git a/chrome/browser/ui/android/extensions/extension_actions_bridge.h b/chrome/browser/ui/android/extensions/extension_actions_bridge.h --- a/chrome/browser/ui/android/extensions/extension_actions_bridge.h +++ b/chrome/browser/ui/android/extensions/extension_actions_bridge.h -@@ -30,6 +30,7 @@ class ExtensionActionsBridge { +@@ -26,6 +26,7 @@ class ExtensionActionsBridge { + ~ExtensionActionsBridge(); // JNI implementations. - void Destroy(JNIEnv* env); + void ClearExtensionData(JNIEnv* env); - jni_zero::ScopedJavaLocalRef HandleKeyDownEvent( - JNIEnv* env, - const ui::KeyEventAndroid& key_event); + void Destroy(JNIEnv* env); + + private: diff --git a/chrome/browser/ui/android/extensions/extensions_toolbar_android.cc b/chrome/browser/ui/android/extensions/extensions_toolbar_android.cc --- a/chrome/browser/ui/android/extensions/extensions_toolbar_android.cc +++ b/chrome/browser/ui/android/extensions/extensions_toolbar_android.cc -@@ -159,6 +159,7 @@ base::android::ScopedJavaLocalRef ExtensionsToolbarAndroid::GetAction( +@@ -183,6 +183,7 @@ base::android::ScopedJavaLocalRef ExtensionsToolbarAndroid::GetAction( content::WebContents* web_contents) { ToolbarActionViewModel* action = toolbar_view_model_->GetActionModelForId(action_id); @@ -2158,36 +2111,36 @@ diff --git a/chrome/browser/ui/android/extensions/extensions_toolbar_android.cc diff --git a/chrome/browser/ui/android/extensions/java/res/layout/extensions_menu.xml b/chrome/browser/ui/android/extensions/java/res/layout/extensions_menu.xml --- a/chrome/browser/ui/android/extensions/java/res/layout/extensions_menu.xml +++ b/chrome/browser/ui/android/extensions/java/res/layout/extensions_menu.xml -@@ -76,6 +76,7 @@ found in the LICENSE file. +@@ -193,6 +193,7 @@ found in the LICENSE file. - - + style="@style/ExtensionsMenuFooterRow" + tools:ignore="UseCompoundDrawables" > + +@@ -70,4 +72,4 @@ found in the LICENSE file. + + - \ No newline at end of file @@ -2195,17 +2148,19 @@ diff --git a/chrome/browser/ui/android/extensions/java/res/layout/extensions_men diff --git a/chrome/browser/ui/android/extensions/java/res/values/dimens.xml b/chrome/browser/ui/android/extensions/java/res/values/dimens.xml --- a/chrome/browser/ui/android/extensions/java/res/values/dimens.xml +++ b/chrome/browser/ui/android/extensions/java/res/values/dimens.xml -@@ -7,4 +7,5 @@ found in the LICENSE file. +@@ -14,6 +14,7 @@ found in the LICENSE file. + 20dp - - 400dp + + 50dp - + 4dp + 20dp + 2dp diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java --- a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java +++ b/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/browser/ui/extensions/ExtensionActionsBridge.java -@@ -87,6 +87,10 @@ public class ExtensionActionsBridge implements Destroyable { - .handleKeyDownEvent(mNativeExtensionActionsBridge, event); +@@ -45,12 +45,18 @@ public class ExtensionActionsBridge implements Destroyable { + return ExtensionActionsBridgeJni.get().extensionsEnabled(profile); } + public void clearExtensionData() { @@ -2215,15 +2170,14 @@ diff --git a/chrome/browser/ui/android/extensions/java/src/org/chromium/chrome/b @NativeMethods public interface Natives { boolean extensionsEnabled(@JniType("Profile*") Profile profile); -@@ -95,6 +99,8 @@ public class ExtensionActionsBridge implements Destroyable { - void destroy(long nativeExtensionActionsBridge); + long init(ExtensionActionsBridge bridge, long browserWindowInterfacePtr); + void clearExtensionData(long nativeExtensionActionsBridge); + - HandleKeyEventResult handleKeyDownEvent( - long nativeExtensionActionsBridge, - @JniType("ui::KeyEventAndroid") KeyEvent keyEvent); + void destroy(long nativeExtensionActionsBridge); + } + } diff --git a/chrome/browser/ui/android/extensions/windowing/internal/BUILD.gn b/chrome/browser/ui/android/extensions/windowing/internal/BUILD.gn --- a/chrome/browser/ui/android/extensions/windowing/internal/BUILD.gn +++ b/chrome/browser/ui/android/extensions/windowing/internal/BUILD.gn @@ -2333,7 +2287,7 @@ new file mode 100644 diff --git a/chrome/browser/ui/android/tab_model/tab_model.cc b/chrome/browser/ui/android/tab_model/tab_model.cc --- a/chrome/browser/ui/android/tab_model/tab_model.cc +++ b/chrome/browser/ui/android/tab_model/tab_model.cc -@@ -173,7 +173,7 @@ bool TabListInterface::CanEditTabList(Profile& profile) { +@@ -183,7 +183,7 @@ bool TabListInterface::CanEditTabList(Profile& profile) { // static bool TabModel::EnableBrowserWindowInterfaceMobile() { @@ -2345,7 +2299,7 @@ diff --git a/chrome/browser/ui/android/tab_model/tab_model.cc b/chrome/browser/u diff --git a/chrome/browser/ui/android/tab_model/tab_model_test_helper.h b/chrome/browser/ui/android/tab_model/tab_model_test_helper.h --- a/chrome/browser/ui/android/tab_model/tab_model_test_helper.h +++ b/chrome/browser/ui/android/tab_model/tab_model_test_helper.h -@@ -129,7 +129,7 @@ class TestTabModel : public TabModel { +@@ -133,7 +133,7 @@ class TestTabModel : public TabModel { // BrowserWindowInterface is available on desktop Android, but not other Android // builds. @@ -2358,7 +2312,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml --- a/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml +++ b/chrome/browser/ui/android/toolbar/java/res/layout/toolbar_phone.xml @@ -65,6 +65,12 @@ found in the LICENSE file. - android:layout_height="wrap_content" + android:layout_height="match_parent" android:visibility="gone"/> + { -+ if (!ExtensionUi.isEnabled(profileSupplier.get())) { -+ container.setVisibility(View.GONE); -+ } -+ }); -+ - mExtensionActionListCoordinator = - new ExtensionActionListCoordinator( - context, -@@ -93,7 +100,8 @@ public class ExtensionToolbarCoordinatorImpl implements ExtensionToolbarCoordina - currentTabSupplier, - tabCreator, - mExtensionsToolbarBridge, -- mContainer.findViewById(R.id.extensions_request_access_button)); -+ mContainer.findViewById(R.id.extensions_request_access_button), -+ mExtensionActionListCoordinator); - } - - @Override -@@ -148,7 +156,7 @@ public class ExtensionToolbarCoordinatorImpl implements ExtensionToolbarCoordina - } - - private void setHasSpaceToShow(boolean hasSpaceToShow) { -- int visibility = hasSpaceToShow ? View.VISIBLE : View.GONE; -+ int visibility = View.VISIBLE; - mContainer.findViewById(R.id.extensions_menu_button).setVisibility(visibility); - mContainer.findViewById(R.id.extensions_divider).setVisibility(visibility); - } diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuCoordinator.java -@@ -24,6 +24,7 @@ import org.chromium.chrome.browser.tab.TabLaunchType; - import org.chromium.chrome.browser.tabmodel.TabCreator; +@@ -25,6 +25,7 @@ import org.chromium.chrome.browser.tabmodel.TabCreator; import org.chromium.chrome.browser.theme.ThemeColorProvider; import org.chromium.chrome.browser.toolbar.MenuBuilderHelper; + import org.chromium.chrome.browser.toolbar.extensions.ExtensionsToolbarCoordinatorImpl.MenuButtonPinningDelegate; +import org.chromium.chrome.browser.toolbar.extensions.ExtensionActionListCoordinator; import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTask; import org.chromium.chrome.browser.ui.extensions.ExtensionsToolbarBridge; import org.chromium.chrome.browser.ui.extensions.R; -@@ -63,6 +64,7 @@ public class ExtensionsMenuCoordinator implements Destroyable, ExtensionsToolbar +@@ -67,6 +68,7 @@ public class ExtensionsMenuCoordinator implements Destroyable, ExtensionsToolbar private final ExtensionsToolbarBridge mExtensionsToolbarBridge; - + private final MenuButtonPinningDelegate mMenuButtonPinningDelegate; private final ThemeColorProvider.TintObserver mTintObserver = this::onTintChanged; + private final ExtensionActionListCoordinator mExtensionActionListCoordinator; @Nullable @VisibleForTesting ExtensionsMenuMediator mMediator; -@@ -84,7 +86,9 @@ public class ExtensionsMenuCoordinator implements Destroyable, ExtensionsToolbar - Profile profile, +@@ -93,7 +95,9 @@ public class ExtensionsMenuCoordinator implements Destroyable, ExtensionsToolbar NullableObservableSupplier currentTabSupplier, TabCreator tabCreator, -- ExtensionsToolbarBridge extensionsToolbarBridge) { -+ ExtensionsToolbarBridge extensionsToolbarBridge, + ExtensionsToolbarBridge extensionsToolbarBridge, +- MenuButtonPinningDelegate menuButtonPinningDelegate) { ++ MenuButtonPinningDelegate menuButtonPinningDelegate, + ExtensionActionListCoordinator extensionActionListCoordinator) { + mExtensionActionListCoordinator = extensionActionListCoordinator; mContext = context; mCurrentTabSupplier = currentTabSupplier; mProfile = profile; -@@ -184,7 +188,7 @@ public class ExtensionsMenuCoordinator implements Destroyable, ExtensionsToolbar - mPropertyModel, +@@ -212,7 +216,7 @@ public class ExtensionsMenuCoordinator implements Destroyable, ExtensionsToolbar + mSitePermissionsPageModel, /* onReady= */ () -> { mExtensionsMenuButton.showMenu(); - }); @@ -2455,7 +2366,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemProperties.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemProperties.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemProperties.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemProperties.java -@@ -27,11 +27,14 @@ public class ExtensionsMenuItemProperties { +@@ -29,6 +29,9 @@ public class ExtensionsMenuItemProperties { public static final WritableIntPropertyKey CONTEXT_MENU_BUTTON_ICON = new WritableIntPropertyKey(); @@ -2465,16 +2376,18 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow public static final WritableObjectPropertyKey CONTEXT_MENU_BUTTON_ON_CLICK = new WritableObjectPropertyKey<>(); +@@ -58,6 +61,7 @@ public class ExtensionsMenuItemProperties { + public static final PropertyKey[] ALL_KEYS = new PropertyKey[] { -- EXTENSION_ID, ICON, TITLE, CONTEXT_MENU_BUTTON_ICON, CONTEXT_MENU_BUTTON_ON_CLICK -+ EXTENSION_ID, ICON, TITLE, ITEM_CLICK_LISTENER, CONTEXT_MENU_BUTTON_ICON, CONTEXT_MENU_BUTTON_ON_CLICK - }; - } ++ ITEM_CLICK_LISTENER, + EXTENSION_ID, + ICON, + TITLE, diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemViewBinder.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemViewBinder.java --- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemViewBinder.java +++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsMenuItemViewBinder.java -@@ -33,6 +33,8 @@ public class ExtensionsMenuItemViewBinder { +@@ -35,6 +35,8 @@ public class ExtensionsMenuItemViewBinder { // TODO: Investigate the correct resizing method. bitmap.setDensity(120); } @@ -2494,7 +2407,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow import org.chromium.chrome.browser.ui.browser_window.ChromeAndroidTask; import org.chromium.chrome.browser.ui.extensions.ExtensionActionContextMenuBridge; import org.chromium.chrome.browser.ui.extensions.ExtensionsMenuBridge; -@@ -43,6 +44,7 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ +@@ -44,6 +45,7 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ private final Runnable mOnReady; private final ChromeAndroidTask mTask; private final Profile mProfile; @@ -2502,10 +2415,10 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow /** * @param context The context to use. -@@ -58,7 +60,9 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ - NullableObservableSupplier currentTabSupplier, +@@ -63,7 +65,9 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ ModelList actionModels, - PropertyModel propertyModel, + PropertyModel mainPageModel, + PropertyModel sitePermissionsPropertyModel, - Runnable onReady) { + Runnable onReady, + ExtensionActionListCoordinator extensionActionListCoordinator) { @@ -2513,7 +2426,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mActionModels = actionModels; mContext = context; mCurrentTabSupplier = currentTabSupplier; -@@ -218,6 +222,9 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ +@@ -334,6 +338,9 @@ class ExtensionsMenuMediator implements Destroyable, ExtensionsMenuBridge.Observ ExtensionsMenuItemProperties.CONTEXT_MENU_BUTTON_ON_CLICK, (view) -> onContextMenuButtonClicked((ListMenuButton) view, entry.id)) @@ -2523,6 +2436,44 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow .with( ExtensionsMenuItemProperties.CONTEXT_MENU_BUTTON_ICON, contextMenuIcon) +diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java +--- a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java ++++ b/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/browser/toolbar/extensions/ExtensionsToolbarCoordinatorImpl.java +@@ -87,13 +87,13 @@ public class ExtensionsToolbarCoordinatorImpl implements ExtensionsToolbarCoordi + ViewGroup rootView, + @Nullable ContextMenuPopulatorFactory contextMenuPopulatorFactory, + @Nullable SelectionDropdownMenuDelegate selectionDropdownMenuDelegate) { +- mBridge = new ExtensionActionsBridge(task, profile); ++ mBridge = ExtensionActionsBridge.Instance(); + mProfile = profile; + + extensionsToolbarStub.setLayoutResource(R.layout.extensions_toolbar_container); + mContainer = (LinearLayout) extensionsToolbarStub.inflate(); + +- mExtensionsToolbarBridge = new ExtensionsToolbarBridge(task, profile); ++ mExtensionsToolbarBridge = ExtensionsToolbarBridge.Instance(); + + mPrefService = UserPrefs.get(profile); + +@@ -101,6 +101,7 @@ public class ExtensionsToolbarCoordinatorImpl implements ExtensionsToolbarCoordi + new ExtensionActionListCoordinator( + context, + mContainer.findViewById(R.id.extension_action_list), ++ mContainer.findViewById(R.id.extensions_menu_button), + windowAndroid, + task, + profile, +@@ -152,8 +153,8 @@ public class ExtensionsToolbarCoordinatorImpl implements ExtensionsToolbarCoordi + mExtensionAccessControlButtonCoordinator.destroy(); + mExtensionsMenuCoordinator.destroy(); + mExtensionActionListCoordinator.destroy(); +- mExtensionsToolbarBridge.destroy(); +- mBridge.destroy(); ++ // mExtensionsToolbarBridge.destroy(); ++ // mBridge.destroy(); + + LifetimeAssert.setSafeToGc(mLifetimeAssert, true); + } diff --git a/chrome/browser/ui/browser_window/BUILD.gn b/chrome/browser/ui/browser_window/BUILD.gn --- a/chrome/browser/ui/browser_window/BUILD.gn +++ b/chrome/browser/ui/browser_window/BUILD.gn @@ -2617,17 +2568,17 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/u - BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE) #include "chrome/browser/ui/webui/discards/discards_ui.h" + #include "chrome/browser/ui/webui/management/management_ui.h" #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || - // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID) -@@ -423,7 +423,7 @@ void RegisterChromeWebUIConfigs() { +@@ -426,7 +426,7 @@ void RegisterChromeWebUIConfigs() { // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ - BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID) + BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID_CROMITE) map.AddWebUIConfig(std::make_unique()); + map.AddWebUIConfig(std::make_unique()); #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || - // BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_DESKTOP_ANDROID) diff --git a/chrome/browser/ui/webui/current_channel_logo.cc b/chrome/browser/ui/webui/current_channel_logo.cc --- a/chrome/browser/ui/webui/current_channel_logo.cc +++ b/chrome/browser/ui/webui/current_channel_logo.cc @@ -2689,13 +2640,13 @@ diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni - if (is_win || is_mac || is_linux || is_chromeos || is_desktop_android) { + if (is_win || is_mac || is_linux || is_chromeos || is_desktop_android_cromite) { - sources += [ "$root_gen_dir/chrome/discards_resources.pak" ] - deps += [ "//chrome/browser/resources/discards:resources" ] - } + sources += [ + "$root_gen_dir/chrome/discards_resources.pak", + "$root_gen_dir/chrome/management_resources.pak", diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc --- a/chrome/common/chrome_switches.cc +++ b/chrome/common/chrome_switches.cc -@@ -805,7 +805,7 @@ const char kMarketUrlForTesting[] = "market-url-for-testing"; +@@ -755,7 +755,7 @@ const char kMarketUrlForTesting[] = "market-url-for-testing"; const char kRequestDesktopSites[] = "request-desktop-sites"; #endif // BUILDFLAG(IS_ANDROID) @@ -2707,7 +2658,7 @@ diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h --- a/chrome/common/chrome_switches.h +++ b/chrome/common/chrome_switches.h -@@ -239,7 +239,7 @@ extern const char kMarketUrlForTesting[]; +@@ -228,7 +228,7 @@ extern const char kMarketUrlForTesting[]; extern const char kRequestDesktopSites[]; #endif // BUILDFLAG(IS_ANDROID) @@ -2736,7 +2687,7 @@ diff --git a/chrome/common/extensions/api/api_sources.gni b/chrome/common/extens diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_constants.cc --- a/chrome/common/webui_url_constants.cc +++ b/chrome/common/webui_url_constants.cc -@@ -254,7 +254,7 @@ base::span ChromeURLHosts() { +@@ -255,7 +255,7 @@ base::span ChromeURLHosts() { ash::kChromeUIInternetDetailDialogHost, #endif #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ @@ -2748,7 +2699,7 @@ diff --git a/chrome/common/webui_url_constants.cc b/chrome/common/webui_url_cons diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_constants.h --- a/chrome/common/webui_url_constants.h +++ b/chrome/common/webui_url_constants.h -@@ -430,7 +430,7 @@ bool IsSystemWebUIHost(std::string_view host); +@@ -444,7 +444,7 @@ bool IsSystemWebUIHost(std::string_view host); #endif // BUILDFLAG(IS_CHROMEOS) #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \ @@ -2791,7 +2742,7 @@ diff --git a/chrome/renderer/sandbox_status_extension_android.h b/chrome/rendere diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn -@@ -391,7 +391,7 @@ static_library("test_support") { +@@ -385,7 +385,7 @@ static_library("test_support") { ] } @@ -2800,7 +2751,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn public_deps += [ "//extensions/browser:test_support", "//extensions/common:test_support", -@@ -503,7 +503,7 @@ static_library("test_support") { +@@ -498,7 +498,7 @@ static_library("test_support") { # TODO(https://crbug.com/356905053): Continue pulling more common test # support pieces into here and eventually merge this with the # `enable_extensions` block above. @@ -2809,7 +2760,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn sources += [ "../browser/extensions/test_extension_menu_model_android.cc", "../browser/extensions/test_extension_menu_model_android.h", -@@ -1599,7 +1599,7 @@ source_set("platform_browser_tests") { +@@ -1586,7 +1586,7 @@ source_set("platform_browser_tests") { sources += [ "../browser/enterprise/remote_commands/user_remote_commands_service_browsertest.cc" ] } @@ -2818,7 +2769,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn deps += [ "//chrome/browser/ui/prefs:browser_tests" ] } -@@ -1906,7 +1906,7 @@ source_set("platform_browser_tests") { +@@ -1896,7 +1896,7 @@ source_set("platform_browser_tests") { if (enable_guest_view) { deps += [ "//components/guest_view/browser" ] } @@ -2827,7 +2778,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn sources += [ "../browser/devtools/global_confirm_info_bar_browsertest.cc" ] } -@@ -2204,7 +2204,7 @@ if (is_android) { +@@ -2208,7 +2208,7 @@ if (is_android) { extra_args = [] # TODO(crbug.com/473636857): Include once all Android builds correctly use BrowserWindowInterface. @@ -2836,7 +2787,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn sources += [ "../browser/ui/android/browser_navigator_android_browsertest.cc" ] deps += [ -@@ -2301,7 +2301,7 @@ if (is_android) { +@@ -2305,7 +2305,7 @@ if (is_android) { ] } @@ -2845,7 +2796,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn sources += [ # These API tests can't be part of platform_browser_tests because they # run in interactive_ui_tests on Win/Mac/Linux. -@@ -6437,7 +6437,7 @@ template("performance_test_suite_template_base") { +@@ -6395,7 +6395,7 @@ template("performance_test_suite_template_base") { } args += [ "--chromium-output-directory=@WrappedPath(.)" ] @@ -2854,8 +2805,8 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn data = [ "//third_party/crossbench-web-tests" ] } -@@ -8260,7 +8260,7 @@ test("unit_tests") { - deps += [ "//chrome/browser/android/extensions:android" ] +@@ -8187,7 +8187,7 @@ test("unit_tests") { + ] } - if (is_desktop_android) { @@ -2863,7 +2814,7 @@ diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn deps += [ # Unit test targets for //chrome/browser/ui/browser_window/internal. # -@@ -10126,7 +10126,7 @@ test("unit_tests") { +@@ -10041,7 +10041,7 @@ test("unit_tests") { ] } @@ -3090,16 +3041,16 @@ diff --git a/components/policy/core/browser/cloud/user_policy_signin_service_bas diff --git a/components/policy/core/browser/configuration_policy_handler_list.cc b/components/policy/core/browser/configuration_policy_handler_list.cc --- a/components/policy/core/browser/configuration_policy_handler_list.cc +++ b/components/policy/core/browser/configuration_policy_handler_list.cc -@@ -104,7 +104,7 @@ bool ConfigurationPolicyHandlerList::IsBlockedDesktopAndroidPolicy( +@@ -109,7 +109,7 @@ bool ConfigurationPolicyHandlerList::IsBlockedDesktopAndroidPolicy( // TODO(b/478012386): We shouldn't use IS_DESKTOP_ANDROID long-term. The feature // flag needs to be removed as soon as we feel comfortable about all exist // Android -#if BUILDFLAG(IS_DESKTOP_ANDROID) +#if BUILDFLAG(IS_DESKTOP_ANDROID_FALSE) - if (!base::FeatureList::IsEnabled(features::kDesktopAndroidPolicy)) { + if (!base::FeatureList::IsEnabled(features::kDesktopAndroidPolicy)) { return false; } -@@ -174,7 +174,7 @@ bool ConfigurationPolicyHandlerList::IsBlockedFuturePolicy( +@@ -227,7 +227,7 @@ bool ConfigurationPolicyHandlerList::IsBlockedFuturePolicy( const base::flat_set& future_policies_allowed, const PolicyDetails& policy_details, PolicyMap::const_reference entry) const { @@ -3123,7 +3074,7 @@ diff --git a/components/policy/core/common/cloud/cloud_policy_constants.cc b/com diff --git a/components/policy/core/common/features.cc b/components/policy/core/common/features.cc --- a/components/policy/core/common/features.cc +++ b/components/policy/core/common/features.cc -@@ -39,7 +39,7 @@ const base::FeatureParam kPolicyRegistrationDelay{ +@@ -40,7 +40,7 @@ const base::FeatureParam kPolicyRegistrationDelay{ // Used to add a captive portal check in SafeSitesNavigationThrottle. BASE_FEATURE(kSafeSitesCaptivePortalCheck, base::FEATURE_ENABLED_BY_DEFAULT); @@ -3210,7 +3161,7 @@ diff --git a/components/webui/version/resources/about_version.html b/components/ diff --git a/content/browser/android/selection/selection_popup_controller.cc b/content/browser/android/selection/selection_popup_controller.cc --- a/content/browser/android/selection/selection_popup_controller.cc +++ b/content/browser/android/selection/selection_popup_controller.cc -@@ -353,6 +353,11 @@ void SelectionPopupController::OnSelectAroundCaretAck( +@@ -352,6 +352,11 @@ void SelectionPopupController::OnSelectAroundCaretAck( result->word_start_adjust, result->word_end_adjust); } @@ -3221,11 +3172,11 @@ diff --git a/content/browser/android/selection/selection_popup_controller.cc b/c + void SelectionPopupController::HidePopupsAndPreserveSelection() { JNIEnv* env = AttachCurrentThread(); - ScopedJavaLocalRef obj = java_obj_.get(env); + ScopedJavaLocalRef obj = GetJavaObject(env); diff --git a/content/browser/android/selection/selection_popup_controller.h b/content/browser/android/selection/selection_popup_controller.h --- a/content/browser/android/selection/selection_popup_controller.h +++ b/content/browser/android/selection/selection_popup_controller.h -@@ -70,6 +70,7 @@ class SelectionPopupController : public RenderWidgetHostConnector { +@@ -69,6 +69,7 @@ class SelectionPopupController : public RenderWidgetHostConnector { int endOffset, int surroundingTextLength, blink::mojom::SelectAroundCaretResultPtr result); @@ -3236,7 +3187,7 @@ diff --git a/content/browser/android/selection/selection_popup_controller.h b/co diff --git a/content/browser/browser_main_loop.cc b/content/browser/browser_main_loop.cc --- a/content/browser/browser_main_loop.cc +++ b/content/browser/browser_main_loop.cc -@@ -838,7 +838,7 @@ int BrowserMainLoop::PreCreateThreads() { +@@ -837,7 +837,7 @@ int BrowserMainLoop::PreCreateThreads() { base::UmaHistogramBoolean("SiteIsolation.IsSitePerProcessOrStricter", SiteIsolationPolicy::IsSitePerProcessOrStricter()); @@ -3260,7 +3211,7 @@ diff --git a/content/browser/renderer_host/render_widget_host_view_android.cc b/ diff --git a/content/public/android/java/src/org/chromium/content/browser/ContentUiEventHandler.java b/content/public/android/java/src/org/chromium/content/browser/ContentUiEventHandler.java --- a/content/public/android/java/src/org/chromium/content/browser/ContentUiEventHandler.java +++ b/content/public/android/java/src/org/chromium/content/browser/ContentUiEventHandler.java -@@ -124,9 +124,10 @@ public class ContentUiEventHandler implements UserData { +@@ -133,9 +133,10 @@ public class ContentUiEventHandler implements UserData { event, MotionEventUtils.getEventTimeNanos(event), EventForwarder.getMouseEventActionButton(event), @@ -3277,7 +3228,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/Conten diff --git a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java --- a/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java +++ b/content/public/android/java/src/org/chromium/content/browser/selection/SelectionPopupControllerImpl.java -@@ -763,6 +763,9 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper +@@ -779,6 +779,9 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper */ @Override public void finishActionMode() { @@ -3287,7 +3238,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select mHidden = false; mHandler.removeCallbacks(mRepeatingHideRunnable); -@@ -1982,6 +1985,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper +@@ -2002,6 +2005,8 @@ public class SelectionPopupControllerImpl extends ActionModeCallbackHelper void setTextHandlesTemporarilyHidden(long nativeSelectionPopupController, boolean hidden); @@ -3299,7 +3250,7 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/select diff --git a/content/public/common/content_features.cc b/content/public/common/content_features.cc --- a/content/public/common/content_features.cc +++ b/content/public/common/content_features.cc -@@ -614,7 +614,7 @@ BASE_FEATURE(kLoadingPredictorLimitPreconnectSocketCount, +@@ -611,7 +611,7 @@ BASE_FEATURE(kLoadingPredictorLimitPreconnectSocketCount, base::FEATURE_DISABLED_BY_DEFAULT); BASE_FEATURE(kLogJsConsoleMessages, @@ -3308,7 +3259,7 @@ diff --git a/content/public/common/content_features.cc b/content/public/common/c base::FEATURE_DISABLED_BY_DEFAULT #else base::FEATURE_ENABLED_BY_DEFAULT -@@ -1495,7 +1495,7 @@ bool IsFluidResizeEnabled() { +@@ -1503,7 +1503,7 @@ bool IsFluidResizeEnabled() { // dragging seen on tablets and desktops. return base::FeatureList::IsEnabled(features::kFluidResize) && (base::android::device_info::is_tablet() || @@ -3380,16 +3331,16 @@ new file mode 100644 diff --git a/extensions/browser/BUILD.gn b/extensions/browser/BUILD.gn --- a/extensions/browser/BUILD.gn +++ b/extensions/browser/BUILD.gn -@@ -10,7 +10,7 @@ import("//pdf/features.gni") - import("//rlz/buildflags/buildflags.gni") +@@ -11,7 +11,7 @@ import("//rlz/buildflags/buildflags.gni") import("//testing/libfuzzer/fuzzer_test.gni") + import("//third_party/protobuf/proto_library.gni") -if (enable_desktop_android_extensions) { +if (enable_desktop_android_extensions_cromite) { import("//build/config/android/rules.gni") } -@@ -1211,7 +1211,7 @@ source_set("unit_tests") { +@@ -1249,7 +1249,7 @@ source_set("unit_tests") { configs += [ "//build/config/compiler:no_exit_time_destructors" ] } @@ -3559,7 +3510,7 @@ diff --git a/extensions/common/command.cc b/extensions/common/command.cc diff --git a/extensions/common/extension_features.cc b/extensions/common/extension_features.cc --- a/extensions/common/extension_features.cc +++ b/extensions/common/extension_features.cc -@@ -57,7 +57,7 @@ BASE_FEATURE(kCheckingNoExtensionIdInExtensionIpcs, +@@ -62,7 +62,7 @@ BASE_FEATURE(kCheckingNoExtensionIdInExtensionIpcs, BASE_FEATURE(kEnableWebHidInWebView, base::FEATURE_ENABLED_BY_DEFAULT); @@ -3568,7 +3519,7 @@ diff --git a/extensions/common/extension_features.cc b/extensions/common/extensi // Disabled by default because on first-run we don't have a Finch seed yet, so // we want to default to the safe behavior of no extensions. BASE_FEATURE(kEnableExtensionsForCorpDesktopAndroid, -@@ -174,7 +174,7 @@ BASE_FEATURE(kDisableExtensionsOnChromeUrlsSwitch, +@@ -179,7 +179,7 @@ BASE_FEATURE(kDisableExtensionsOnChromeUrlsSwitch, // TODO (crbug.com/426554244): Determine if this switch should be // removed for desktop-android builds as well. #if BUILDFLAG(GOOGLE_CHROME_BRANDING) && !BUILDFLAG(IS_CHROMEOS) && \ @@ -3577,7 +3528,7 @@ diff --git a/extensions/common/extension_features.cc b/extensions/common/extensi base::FEATURE_ENABLED_BY_DEFAULT #else base::FEATURE_DISABLED_BY_DEFAULT -@@ -225,4 +225,10 @@ CROMITE_FEATURE(kEnableExtensionAutoupdate, +@@ -227,4 +227,10 @@ CROMITE_FEATURE(kEnableExtensionAutoupdate, CROMITE_FEATURE(kEnableExtensionManagementToChromeStore, "EnableExtensionToChromeStore", base::FEATURE_DISABLED_BY_DEFAULT); @@ -3591,7 +3542,7 @@ diff --git a/extensions/common/extension_features.cc b/extensions/common/extensi diff --git a/extensions/common/extension_features.h b/extensions/common/extension_features.h --- a/extensions/common/extension_features.h +++ b/extensions/common/extension_features.h -@@ -97,7 +97,7 @@ BASE_DECLARE_FEATURE(kCheckingNoExtensionIdInExtensionIpcs); +@@ -103,7 +103,7 @@ BASE_DECLARE_FEATURE(kCheckingNoExtensionIdInExtensionIpcs); // embedding Chrome App to request access to Human Interface Devices. BASE_DECLARE_FEATURE(kEnableWebHidInWebView); @@ -3600,7 +3551,7 @@ diff --git a/extensions/common/extension_features.h b/extensions/common/extensio // If enabled, extensions will be enabled for @google.com and @managedchrome.com // users on desktop Android. Otherwise they will be blocked. BASE_DECLARE_FEATURE(kEnableExtensionsForCorpDesktopAndroid); -@@ -333,6 +333,10 @@ BASE_DECLARE_FEATURE(kEnableExtensionAutoupdate); +@@ -330,6 +330,10 @@ BASE_DECLARE_FEATURE(kEnableExtensionAutoupdate); // Allows the installation of new extensions. // If active, exposes all features to the chrome web store like chromium. BASE_DECLARE_FEATURE(kEnableExtensionManagementToChromeStore); @@ -3677,7 +3628,7 @@ diff --git a/extensions/renderer/bindings/api_binding_util.cc b/extensions/rende diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc --- a/gpu/config/gpu_finch_features.cc +++ b/gpu/config/gpu_finch_features.cc -@@ -614,7 +614,7 @@ bool IsSkiaGraphiteSupportedByDevice(const base::CommandLine* command_line) { +@@ -625,7 +625,7 @@ bool IsSkiaGraphiteSupportedByDevice(const base::CommandLine* command_line) { // Desktop Android isn't ready to pick up the fieldtrial_testing_config.json // change that enables graphite. However, it's the same platform as regular // Android and does. Skip enabling the feature there for now. @@ -3686,7 +3637,7 @@ diff --git a/gpu/config/gpu_finch_features.cc b/gpu/config/gpu_finch_features.cc return false; } -@@ -727,7 +727,7 @@ bool ShouldEnableDrDc() { +@@ -738,7 +738,7 @@ bool ShouldEnableDrDc() { // Chrome on Android desktop aims to be Vulkan-only, which can result // in crashes when enabled together with DrDc. Re-enable DrDc after // crbug.com/380295059 is fixed if it is shown beneficial on desktop. @@ -3736,7 +3687,7 @@ diff --git a/skia/features.gni b/skia/features.gni diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc --- a/third_party/blink/common/features.cc +++ b/third_party/blink/common/features.cc -@@ -2426,7 +2426,7 @@ BASE_FEATURE(kStopInBackground, +@@ -2438,7 +2438,7 @@ BASE_FEATURE(kStopInBackground, // b/248036988 - Disable this for Chromecast on Android builds to prevent apps // that play audio in the background from stopping. #if BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CAST_ANDROID) && \ @@ -3748,7 +3699,7 @@ diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/fea diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_party/blink/renderer/modules/modules_initializer.cc --- a/third_party/blink/renderer/modules/modules_initializer.cc +++ b/third_party/blink/renderer/modules/modules_initializer.cc -@@ -120,7 +120,7 @@ +@@ -121,7 +121,7 @@ namespace blink { namespace { @@ -3757,7 +3708,7 @@ diff --git a/third_party/blink/renderer/modules/modules_initializer.cc b/third_p class SuspendCaptureObserver : public GarbageCollected, public Supplement, -@@ -376,7 +376,7 @@ void ModulesInitializer::ProvideModulesToPage( +@@ -378,7 +378,7 @@ void ModulesInitializer::ProvideModulesToPage( const SessionStorageNamespaceId& namespace_id) const { StorageNamespace::ProvideSessionStorageNamespaceTo(page, namespace_id); AudioGraphTracer::ProvideAudioGraphTracerTo(page); @@ -3794,7 +3745,7 @@ diff --git a/tools/json_schema_compiler/cpp_bundle_generator.py b/tools/json_sch diff --git a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java --- a/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java +++ b/ui/android/java/src/org/chromium/ui/base/SelectFileDialog.java -@@ -650,7 +650,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick +@@ -636,7 +636,7 @@ public class SelectFileDialog implements WindowAndroid.IntentCallback, PhotoPick // (e.g., MIME type */*), the Camera is often included in the app list by default, creating // a confusing experience for desktop users who expect a standard file picker. ArrayList extraIntents = new ArrayList<>(); diff --git a/build/patches/Restore-Simplified-NTP-launch.patch b/build/patches/Restore-Simplified-NTP-launch.patch index d4188d24..bd8391eb 100644 --- a/build/patches/Restore-Simplified-NTP-launch.patch +++ b/build/patches/Restore-Simplified-NTP-launch.patch @@ -28,7 +28,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../native_page/NativePageFactory.java | 20 +- .../NativePageNavigationDelegateImpl.java | 2 +- .../chrome/browser/ntp/NewTabPage.java | 8 +- - .../chrome/browser/ntp/NewTabPageLayout.java | 29 +- + .../browser/ntp/NewTabPageCoordinator.java | 28 +- .../ntp/search/SearchBoxViewBinder.java | 1 + .../suggestions/SuggestionsConfig.java | 2 +- .../SuggestionsNavigationDelegate.java | 27 +- @@ -40,8 +40,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../suggestions/tile/TilesLinearLayout.java | 2 +- .../engagement/important_sites_util.cc | 2 +- .../flags/android/chrome_feature_list.cc | 1 + - .../browser/flags/ChromeFeatureList.java | 3 +- - .../chrome_most_visited_sites_factory.cc | 3 - + .../browser/flags/ChromeFeatureList.java | 1 + + .../chrome_most_visited_sites_factory.cc | 4 - .../client_util/HomeModulesRankingHelper.java | 1 + .../strings/android_chrome_strings.grd | 6 + .../core/browser/top_sites_constants.h | 2 +- @@ -51,7 +51,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../Restore-Simplified-NTP-launch.inc | 12 + .../Restore-Simplified-NTP-launch.inc | 8 + .../Restore-Simplified-NTP-launch.inc | 1 + - 45 files changed, 647 insertions(+), 68 deletions(-) + 45 files changed, 646 insertions(+), 67 deletions(-) create mode 100644 chrome/android/java/res/drawable-hdpi/ic_most_visited_placeholder.png create mode 100644 chrome/android/java/res/drawable-mdpi/ic_most_visited_placeholder.png create mode 100644 chrome/android/java/res/drawable-xhdpi/ic_most_visited_placeholder.png @@ -81,7 +81,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja "java/res/drawable-hdpi/ic_phone_googblue_36dp.png", "java/res/drawable-hdpi/ic_photo_camera.png", "java/res/drawable-hdpi/ic_place_googblue_36dp.png", -@@ -544,6 +549,7 @@ chrome_java_resources = [ +@@ -553,6 +558,7 @@ chrome_java_resources = [ "java/res/layout/manage_space_activity.xml", "java/res/layout/material_tooltip.xml", "java/res/layout/multiline_spinner_item.xml", @@ -89,7 +89,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja "java/res/layout/mv_tiles_layout.xml", "java/res/layout/navigation_bubble.xml", "java/res/layout/navigation_sheet.xml", -@@ -552,8 +558,10 @@ chrome_java_resources = [ +@@ -561,8 +567,10 @@ chrome_java_resources = [ "java/res/layout/new_background_tab_animation_tab_switcher_icon.xml", "java/res/layout/new_custom_tab_toolbar.xml", "java/res/layout/new_tab_page_incognito.xml", @@ -103,7 +103,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -649,6 +649,7 @@ chrome_java_sources = [ +@@ -660,6 +660,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/feedback/FeedFeedbackCollector.java", "java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherImpl.java", "java/src/org/chromium/chrome/browser/feedback/ScreenshotTask.java", @@ -111,7 +111,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java "java/src/org/chromium/chrome/browser/findinpage/FindToolbar.java", "java/src/org/chromium/chrome/browser/findinpage/FindToolbarManager.java", "java/src/org/chromium/chrome/browser/findinpage/FindToolbarObserver.java", -@@ -1096,6 +1097,7 @@ chrome_java_sources = [ +@@ -1111,6 +1112,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesMetadataUtils.java", "java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java", "java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesLayout.java", @@ -416,7 +416,7 @@ diff --git a/chrome/android/java/res/layout/mv_tiles_layout.xml b/chrome/android diff --git a/chrome/android/java/res/layout/new_tab_page_layout.xml b/chrome/android/java/res/layout/new_tab_page_layout.xml --- a/chrome/android/java/res/layout/new_tab_page_layout.xml +++ b/chrome/android/java/res/layout/new_tab_page_layout.xml -@@ -50,6 +50,13 @@ found in the LICENSE file. +@@ -42,6 +42,13 @@ found in the LICENSE file. /> @@ -577,10 +577,10 @@ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java -@@ -3715,7 +3715,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt +@@ -3738,7 +3738,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt + getStartupMetricsTracker(), mRootUiCoordinator.getExclusiveAccessManager(), mBackPressManager, - mMultiInstanceManager, - mRecentlyClosedEntriesManager); + mRecentlyClosedEntriesManager, + mBookmarkManagerOpenerSupplier); @@ -598,7 +598,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; import org.chromium.chrome.browser.compositor.CompositorViewHolder; import org.chromium.chrome.browser.contextmenu.ChromeContextMenuPopulator; -@@ -58,6 +59,8 @@ import org.chromium.ui.modaldialog.ModalDialogManager; +@@ -56,6 +57,8 @@ import org.chromium.ui.modaldialog.ModalDialogManager; import java.util.List; import java.util.function.Supplier; @@ -607,7 +607,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe /** * {@link TabDelegateFactory} class to be used in all {@link Tab} instances owned by a {@link * ChromeTabbedActivity}. -@@ -92,6 +95,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { +@@ -89,6 +92,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { private final TopInsetProvider mTopInsetProvider; private final StartupMetricsTracker mStartupMetricsTracker; private final @Nullable ExclusiveAccessManager mExclusiveAccessManager; @@ -615,29 +615,29 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe + private @Nullable NativePageFactory mNativePageFactory; private final BackPressManager mBackPressManager; - private final MultiInstanceManager mMultiInstanceManager; -@@ -128,7 +133,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { + private final RecentlyClosedEntriesManager mRecentlyClosedEntriesManager; +@@ -122,7 +127,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { + StartupMetricsTracker startupMetricsTracker, @Nullable ExclusiveAccessManager exclusiveAccessManager, BackPressManager backPressManager, - MultiInstanceManager multiInstanceManager, - RecentlyClosedEntriesManager recentlyClosedEntriesManager) { + RecentlyClosedEntriesManager recentlyClosedEntriesManager, + @NonNull MonotonicObservableSupplier bookmarkManagerOpenerSupplier) { mActivity = activity; mAppBrowserControlsVisibilityDelegate = appBrowserControlsVisibilityDelegate; mShareDelegateSupplier = shareDelegateSupplier; -@@ -160,6 +166,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { +@@ -152,6 +158,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { + mExclusiveAccessManager = exclusiveAccessManager; mBackPressManager = backPressManager; - mMultiInstanceManager = multiInstanceManager; mRecentlyClosedEntriesManager = recentlyClosedEntriesManager; + mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier; } @Override -@@ -235,7 +242,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { +@@ -224,7 +231,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { + mTopInsetProvider, mStartupMetricsTracker, mBackPressManager, - mMultiInstanceManager, - mRecentlyClosedEntriesManager); + mRecentlyClosedEntriesManager, + mBookmarkManagerOpenerSupplier); @@ -701,10 +701,10 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java b/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java --- a/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java -@@ -201,7 +201,10 @@ public class IdentityDiscController +@@ -204,7 +204,10 @@ public class IdentityDiscController mButtonData.setButtonSpec( - buttonSpecWithDrawableAndDescription(mButtonData.getButtonSpec(), email)); + buttonSpecWithDrawableAndDescription(mButtonData.getButtonSpec(), profileData)); - mButtonData.setCanShow(true); + if (email == null) + mButtonData.setCanShow(false); @@ -731,8 +731,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat +import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener; import org.chromium.chrome.browser.browser_controls.BrowserControlsMarginAdapter; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; - import org.chromium.chrome.browser.flags.ChromeFeatureList; -@@ -104,6 +106,7 @@ public class NativePageFactory { + import org.chromium.chrome.browser.contextual_tasks.ContextualTasksNativePage; +@@ -102,6 +104,7 @@ public class NativePageFactory { private final MonotonicObservableSupplier mEdgeToEdgeControllerSupplier; private final TopInsetProvider mTopInsetProvider; private final StartupMetricsTracker mStartupMetricsTracker; @@ -740,37 +740,37 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat private @Nullable NewTabPageCreationTracker mNewTabPageCreationTracker; private @Nullable NativePageBuilder mNativePageBuilder; -@@ -134,7 +137,8 @@ public class NativePageFactory { +@@ -129,7 +132,8 @@ public class NativePageFactory { + TopInsetProvider topInsetProvider, StartupMetricsTracker startupMetricsTracker, BackPressManager backPressManager, - MultiInstanceManager multiInstanceManager, - RecentlyClosedEntriesManager recentlyClosedEntriesManager) { + RecentlyClosedEntriesManager recentlyClosedEntriesManager, + MonotonicObservableSupplier bookmarkManagerOpenerSupplier) { mActivity = activity; mBottomSheetController = sheetController; mBrowserControlsManager = browserControlsManager; -@@ -157,6 +161,7 @@ public class NativePageFactory { +@@ -150,6 +154,7 @@ public class NativePageFactory { + mStartupMetricsTracker = startupMetricsTracker; mBackPressManager = backPressManager; - mMultiInstanceManager = multiInstanceManager; mRecentlyClosedEntriesManager = recentlyClosedEntriesManager; + mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier; } private NativePageBuilder getBuilder() { -@@ -185,7 +190,8 @@ public class NativePageFactory { +@@ -176,7 +181,8 @@ public class NativePageFactory { + mTopInsetProvider, mStartupMetricsTracker, mBackPressManager, - mMultiInstanceManager, - mRecentlyClosedEntriesManager); + mRecentlyClosedEntriesManager, + mBookmarkManagerOpenerSupplier); } return mNativePageBuilder; } -@@ -224,9 +230,10 @@ public class NativePageFactory { +@@ -213,9 +219,10 @@ public class NativePageFactory { + private final StartupMetricsTracker mStartupMetricsTracker; private final BackPressManager mBackPressManager; - private final MultiInstanceManager mMultiInstanceManager; private final RecentlyClosedEntriesManager mRecentlyClosedEntriesManager; + private final MonotonicObservableSupplier mBookmarkManagerOpenerSupplier; @@ -780,30 +780,30 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat Supplier newTabPageCreationTracker, BottomSheetController sheetController, BrowserControlsManager browserControlsManager, -@@ -248,7 +255,8 @@ public class NativePageFactory { +@@ -235,7 +242,8 @@ public class NativePageFactory { + TopInsetProvider topInsetProvider, StartupMetricsTracker startupMetricsTracker, BackPressManager backPressManager, - MultiInstanceManager multiInstanceManager, - RecentlyClosedEntriesManager recentlyClosedEntriesManager) { + RecentlyClosedEntriesManager recentlyClosedEntriesManager, + MonotonicObservableSupplier bookmarkManagerOpenerSupplier) { mActivity = activity; mNewTabPageCreationTracker = newTabPageCreationTracker; mBottomSheetController = sheetController; -@@ -272,6 +280,7 @@ public class NativePageFactory { +@@ -257,6 +265,7 @@ public class NativePageFactory { + mStartupMetricsTracker = startupMetricsTracker; mBackPressManager = backPressManager; - mMultiInstanceManager = multiInstanceManager; mRecentlyClosedEntriesManager = recentlyClosedEntriesManager; + mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier; } protected NativePage buildNewTabPage(Tab tab, String url) { -@@ -316,7 +325,8 @@ public class NativePageFactory { +@@ -299,7 +308,8 @@ public class NativePageFactory { + mModuleRegistrySupplier, mEdgeToEdgeControllerSupplier, mTopInsetProvider, - mStartupMetricsTracker, -- mMultiInstanceManager); -+ mMultiInstanceManager, +- mStartupMetricsTracker); ++ mStartupMetricsTracker, + mBookmarkManagerOpenerSupplier); } @@ -811,7 +811,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java -@@ -31,7 +31,7 @@ import org.chromium.ui.mojom.WindowOpenDisposition; +@@ -28,7 +28,7 @@ import org.chromium.ui.mojom.WindowOpenDisposition; /** {@link NativePageNavigationDelegate} implementation. */ @NullMarked public class NativePageNavigationDelegateImpl implements NativePageNavigationDelegate { @@ -823,9 +823,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java -@@ -133,6 +133,9 @@ import org.chromium.ui.base.WindowAndroid; +@@ -110,6 +110,9 @@ import org.chromium.ui.base.DeviceFormFactor; + import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.modaldialog.ModalDialogManager; - import org.chromium.url.GURL; +import androidx.annotation.NonNull; +import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener; @@ -833,62 +833,54 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage. import java.util.List; import java.util.function.Supplier; -@@ -444,7 +447,8 @@ public class NewTabPage +@@ -402,7 +405,8 @@ public class NewTabPage + OneshotSupplier moduleRegistrySupplier, MonotonicObservableSupplier edgeToEdgeControllerSupplier, TopInsetProvider topInsetProvider, - StartupMetricsTracker startupMetricsTracker, -- MultiInstanceManager multiInstanceManager) { -+ MultiInstanceManager multiInstanceManager, +- StartupMetricsTracker startupMetricsTracker) { ++ StartupMetricsTracker startupMetricsTracker, + MonotonicObservableSupplier bookmarkManagerOpenerSupplier) { mConstructedTimeNs = System.nanoTime(); TraceEvent.begin(TAG); -@@ -474,7 +478,7 @@ public class NewTabPage - nativePageHost, - tabModelSelector, - mTab, -- multiInstanceManager); -+ multiInstanceManager, bookmarkManagerOpenerSupplier); +@@ -422,7 +426,7 @@ public class NewTabPage + + SuggestionsNavigationDelegate navigationDelegate = + new SuggestionsNavigationDelegate( +- activity, profile, nativePageHost, tabModelSelector, mTab); ++ activity, profile, nativePageHost, tabModelSelector, mTab, bookmarkManagerOpenerSupplier); mNewTabPageManager = new NewTabPageManagerImpl( navigationDelegate, profile, nativePageHost, snackbarManager); -diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java ---- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java -+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java -@@ -14,6 +14,7 @@ import android.graphics.Rect; +diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCoordinator.java +--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCoordinator.java ++++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCoordinator.java +@@ -13,6 +13,7 @@ import android.graphics.Point; + import android.graphics.Rect; import android.text.Editable; - import android.util.AttributeSet; import android.view.DragEvent; +import android.view.ViewStub; import android.view.View; + import android.view.View.OnLayoutChangeListener; import android.view.ViewGroup; - import android.view.ViewStub; -@@ -39,6 +40,7 @@ import org.chromium.chrome.browser.feed.FeedSurfaceScrollDelegate; - import org.chromium.chrome.browser.flags.ChromeFeatureList; - import org.chromium.chrome.browser.incognito.IncognitoUtils; - import org.chromium.chrome.browser.lens.LensEntryPoint; -+import org.chromium.chrome.browser.flags.ChromeFeatureList; - import org.chromium.chrome.browser.lens.LensMetrics; - import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher; - import org.chromium.chrome.browser.logo.LogoBridge.Logo; -@@ -59,6 +61,7 @@ import org.chromium.chrome.browser.signin.SigninAndHistorySyncActivityLauncherIm +@@ -64,6 +65,7 @@ import org.chromium.chrome.browser.setup_list.SetupListModuleUtils; + import org.chromium.chrome.browser.signin.SigninAndHistorySyncActivityLauncherImpl; import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesCoordinator; import org.chromium.chrome.browser.suggestions.tile.TileGroup; - import org.chromium.chrome.browser.suggestions.tile.TileGroup.Delegate; +import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesGridLayout; - import org.chromium.chrome.browser.tab_ui.InvalidationAwareThumbnailProvider; - import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager; - import org.chromium.chrome.browser.ui.native_page.TouchEnabledDelegate; -@@ -116,6 +119,8 @@ public class NewTabPageLayout extends LinearLayout { - private SearchEngineUtils.@Nullable SearchEngineIconObserver mSearchEngineIconObserver; - private SearchEngineUtils.@Nullable SearchBoxHintTextObserver mSearchBoxHintTextObserver; + import org.chromium.chrome.browser.tab.Tab; + import org.chromium.chrome.browser.tab.TabLaunchType; + import org.chromium.chrome.browser.tab.TabSelectionType; +@@ -147,6 +149,8 @@ public class NewTabPageCoordinator implements ModuleDelegateHost { + private SetupListManager.@Nullable Observer mSetupListObserver; + private @Nullable Point mContextMenuStartPosition; + private ViewGroup mShortcutsView; + /** * Whether the tiles shown in the layout have finished loading. With {@link #mHasShownView}, * it's one of the 2 flags used to track initialisation progress. -@@ -128,14 +133,14 @@ public class NewTabPageLayout extends LinearLayout { +@@ -159,14 +163,14 @@ public class NewTabPageCoordinator implements ModuleDelegateHost { */ private boolean mHasShownView; @@ -902,10 +894,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL private float mUrlFocusChangePercent; - private boolean mDisableUrlFocusChangeAnimations; + private boolean mDisableUrlFocusChangeAnimations = true; - private boolean mIsViewMoving; /** Flag used to request some layout changes after the next layout pass is completed. */ -@@ -302,6 +307,7 @@ public class NewTabPageLayout extends LinearLayout { + private boolean mTileCountChanged; +@@ -345,6 +349,7 @@ public class NewTabPageCoordinator implements ModuleDelegateHost { mSearchEngineUtils.addIconObserver(mSearchEngineIconObserver); setSearchBoxTextAppearance(); @@ -913,16 +905,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL initializeSearchBoxTextView(); initializeVoiceSearchButton(); initializeLensButton(); -@@ -762,7 +768,7 @@ public class NewTabPageLayout extends LinearLayout { - return; - } - boolean isSearchProviderIsGoogleChanged = mSearchProviderIsGoogle != isGoogle; -- mSearchProviderHasLogo = hasLogo; -+ mSearchProviderHasLogo = false; - mSearchProviderIsGoogle = isGoogle; - - if (!mSearchProviderIsGoogle) { -@@ -829,6 +835,7 @@ public class NewTabPageLayout extends LinearLayout { +@@ -742,6 +747,8 @@ public class NewTabPageCoordinator implements ModuleDelegateHost { + * @param isGoogle Whether the search provider is Google. + */ + void setSearchProviderInfo(boolean hasLogo, boolean isGoogle) { ++ hasLogo = false; ++ isGoogle = false; + if (hasLogo == mSearchProviderHasLogo + && isGoogle == mSearchProviderIsGoogle + && mInitialized) { +@@ -807,6 +814,7 @@ public class NewTabPageCoordinator implements ModuleDelegateHost { * @param disable Whether to disable the animations. */ void setUrlFocusAnimationsDisabled(boolean disable) { @@ -930,8 +922,8 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL if (disable == mDisableUrlFocusChangeAnimations) return; mDisableUrlFocusChangeAnimations = disable; if (!disable) onUrlFocusAnimationChanged(); -@@ -1141,6 +1148,22 @@ public class NewTabPageLayout extends LinearLayout { - mComposeplateUrlSupplier = null; +@@ -1335,6 +1343,22 @@ public class NewTabPageCoordinator implements ModuleDelegateHost { + } } + private void initializeShortcuts() { @@ -979,7 +971,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/Sug diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java -@@ -24,18 +24,43 @@ import org.chromium.ui.base.PageTransition; +@@ -23,17 +23,42 @@ import org.chromium.ui.base.PageTransition; import org.chromium.ui.mojom.WindowOpenDisposition; import org.chromium.url.GURL; @@ -1002,11 +994,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/Sug Profile profile, NativePageHost host, TabModelSelector tabModelSelector, - Tab tab, -- MultiInstanceManager multiInstanceManager) { -+ MultiInstanceManager multiInstanceManager, +- Tab tab) { ++ Tab tab, + MonotonicObservableSupplier bookmarkManagerOpenerSupplier) { - super(activity, profile, host, tabModelSelector, tab, multiInstanceManager); + super(activity, profile, host, tabModelSelector, tab); + mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier; + } + @@ -1390,7 +1381,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til MarginLayoutParams marginLayoutParams = (MarginLayoutParams) mMvTilesContainerLayout.getLayoutParams(); marginLayoutParams.width = -@@ -383,7 +377,5 @@ public class MostVisitedTilesMediator implements TileGroup.Observer { +@@ -379,7 +373,5 @@ public class MostVisitedTilesMediator implements TileGroup.Observer { double firstTileScore = mTileGroup.getSuggestionScore(firstTile.getUrl()); if (firstTileScore < MVT_CUSTOMIZATION_IPH_TILE_SCORE_THRESHOULD) return; @@ -1546,7 +1537,7 @@ diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc -@@ -364,6 +364,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { +@@ -382,6 +382,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kKeyboardEscBackNavigation, &kLaunchCauseScreenOffFix, &kLensOnQuickActionSearchWidget, @@ -1557,7 +1548,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -512,6 +512,7 @@ public abstract class ChromeFeatureList { +@@ -530,6 +530,7 @@ public abstract class ChromeFeatureList { "MayLaunchUrlUsesSeparateStoragePartition"; public static final String MEDIA_INDICATORS_ANDROID = "MediaIndicatorsAndroid"; public static final String MOST_VISITED_TILES_CUSTOMIZATION = "MostVisitedTilesCustomization"; @@ -1565,27 +1556,19 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f public static final String SEARCH_READY_OMNIBOX = "SearchReadyOmnibox"; public static final String MOST_VISITED_TILES_RESELECT = "MostVisitedTilesReselect"; public static final String MOVE_TO_FRONT_IN_LAUNCH_INTENT_DISPATCHER = -@@ -989,7 +990,7 @@ public abstract class ChromeFeatureList { - LOCK_TOP_CONTROLS_ON_LARGE_TABLETS_V2, - /* defaultValue= */ false, - /* defaultValueInTests= */ true); -- public static final CachedFlag sMagicStackAndroid = newCachedFlag(MAGIC_STACK_ANDROID, true); -+ public static final CachedFlag sMagicStackAndroid = newCachedFlag(MAGIC_STACK_ANDROID, false); - public static final CachedFlag sMaliciousApkDownloadCheck = - newCachedFlag( - MALICIOUS_APK_DOWNLOAD_CHECK, diff --git a/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc b/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc --- a/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc +++ b/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc -@@ -74,9 +74,6 @@ ChromeMostVisitedSitesFactory::NewForProfile(Profile* profile) { - } +@@ -67,10 +67,6 @@ ChromeMostVisitedSitesFactory::NewForProfile(Profile* profile) { std::unique_ptr data_decoder; + -#if BUILDFLAG(IS_ANDROID) - data_decoder = std::make_unique(); -#endif - +- bool is_default_chrome_app_migrated; + #if BUILDFLAG(IS_ANDROID) diff --git a/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java b/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java --- a/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java @@ -1601,7 +1584,7 @@ diff --git a/chrome/browser/segmentation_platform/android/java/src/org/chromium/ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -4127,6 +4127,12 @@ To change this setting, BEGIN_LINKdelete the Chrome d +@@ -4182,6 +4182,12 @@ To change this setting, BEGIN_LINKdelete the Chrome d Recent tabs @@ -1641,7 +1624,7 @@ diff --git a/components/ntp_tiles/custom_links_store.cc b/components/ntp_tiles/c diff --git a/components/omnibox/common/omnibox_features.cc b/components/omnibox/common/omnibox_features.cc --- a/components/omnibox/common/omnibox_features.cc +++ b/components/omnibox/common/omnibox_features.cc -@@ -194,6 +194,7 @@ BASE_FEATURE(kRemoveSearchReadyOmnibox, DISABLED); +@@ -194,6 +194,7 @@ BASE_FEATURE(kOmniboxAimDeferShowUntilVisualStateReady, ENABLED); BASE_FEATURE(kDefaultTypedNavigationsToHttps, "OmniboxDefaultTypedNavigationsToHttps", enable_if(IS_IOS)); @@ -1649,7 +1632,7 @@ diff --git a/components/omnibox/common/omnibox_features.cc b/components/omnibox/ // Override the delay to create a spare renderer when the omnibox is focused // on Android. -@@ -275,6 +276,7 @@ BASE_FEATURE(kOmniboxMobileParityUpdate, ENABLED); +@@ -278,6 +279,7 @@ BASE_FEATURE(kOmniboxMobileParityUpdate, ENABLED); // Updates various NTP/Omnibox assets and descriptions for visual alignment on // Android and iOS, V2. BASE_FEATURE(kOmniboxMobileParityUpdateV2, ENABLED); diff --git a/build/patches/Restore-chrome-password-store.patch b/build/patches/Restore-chrome-password-store.patch index 322169b9..7cd0ec0b 100644 --- a/build/patches/Restore-chrome-password-store.patch +++ b/build/patches/Restore-chrome-password-store.patch @@ -42,8 +42,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../android/java/res/values/dimens.xml | 17 + .../CredentialEditFragmentView.java | 228 ++++++ .../CredentialEntryFragmentViewBase.java | 135 ++++ - .../browser/password_manager/android/BUILD.gn | 23 + - .../ConfirmationDialogHelper.java | 30 + + .../browser/password_manager/android/BUILD.gn | 24 + + .../ConfirmationDialogHelper.java | 146 ++++ .../PasswordManagerHelper.java | 22 +- .../PasswordManagerUtilBridge.java | 3 +- .../settings/CallbackDelayer.java | 18 + @@ -68,8 +68,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../android/password_ui_view_android.cc | 450 +++++++++++ .../android/password_ui_view_android.h | 196 +++++ .../android/pwm_disabled/BUILD.gn | 2 - - .../password_store_backend_factory.cc | 14 +- ...ssword_manager_settings_service_factory.cc | 4 +- + .../password_store_backend_factory.cc | 14 +- chrome/browser/prefs/browser_prefs.cc | 7 - .../strings/android_chrome_strings.grd | 123 ++- .../Import-Password-Android.grdp | 9 + @@ -88,7 +88,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../core/common/password_manager_pref_names.h | 2 - components/sync/service/sync_prefs.cc | 2 +- .../Restore-chrome-password-store.inc | 1 + - 80 files changed, 5590 insertions(+), 81 deletions(-) + 80 files changed, 5707 insertions(+), 81 deletions(-) create mode 100644 chrome/android/java/res/layout/password_no_result.xml create mode 100644 chrome/android/java/res/menu/save_password_preferences_action_bar_menu.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java @@ -109,6 +109,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html create mode 100644 chrome/browser/password_entry_edit/android/java/res/values/dimens.xml create mode 100644 chrome/browser/password_entry_edit/android/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEditFragmentView.java create mode 100644 chrome/browser/password_entry_edit/android/java/src/org/chromium/chrome/browser/password_entry_edit/CredentialEntryFragmentViewBase.java + create mode 100644 chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/ConfirmationDialogHelper.java create mode 100644 chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/settings/CallbackDelayer.java create mode 100644 chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/settings/DialogManager.java create mode 100644 chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/settings/ExportErrorDialogFragment.java @@ -134,7 +135,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn --- a/chrome/android/BUILD.gn +++ b/chrome/android/BUILD.gn -@@ -822,6 +822,10 @@ if (_is_default_toolchain) { +@@ -827,6 +827,10 @@ if (_is_default_toolchain) { "//url/mojom:url_mojom_origin_java", ] @@ -145,7 +146,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn deps += feed_deps srcjar_deps = [ -@@ -972,6 +976,10 @@ if (_is_default_toolchain) { +@@ -981,6 +985,10 @@ if (_is_default_toolchain) { "//components/visited_url_ranking/internal:internal_java", ] @@ -159,7 +160,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni -@@ -654,3 +654,8 @@ chrome_java_resources = [ +@@ -666,3 +666,8 @@ chrome_java_resources = [ "java/res/xml/tracing_preferences.xml", "java/res/xml/unified_account_settings_preferences.xml", ] @@ -171,7 +172,7 @@ diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_ja diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni -@@ -932,6 +932,7 @@ chrome_java_sources = [ +@@ -947,6 +947,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/password_manager/PasswordManagerDialogViewBinder.java", "java/src/org/chromium/chrome/browser/password_manager/PasswordManagerErrorMessageHelperBridge.java", "java/src/org/chromium/chrome/browser/password_manager/PasswordManagerLauncher.java", @@ -182,7 +183,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java diff --git a/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator.java b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator.java --- a/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator.java +++ b/chrome/android/features/keyboard_accessory/internal/java/src/org/chromium/chrome/browser/keyboard_accessory/ManualFillingMediator.java -@@ -611,10 +611,7 @@ class ManualFillingMediator +@@ -620,10 +620,7 @@ class ManualFillingMediator // suggestions for non credential fields. The check for feature flag needs to happen before // `IS_CREDENTIAL_FIELD_OR_HAS_AUTOFILL_SUGGESTIONS` check to ensure we get the unbiased // metrics. @@ -197,7 +198,7 @@ diff --git a/chrome/android/features/keyboard_accessory/internal/java/src/org/ch diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml --- a/chrome/android/java/AndroidManifest.xml +++ b/chrome/android/java/AndroidManifest.xml -@@ -485,10 +485,9 @@ by a child template that "extends" this file. +@@ -477,10 +477,9 @@ by a child template that "extends" this file. @@ -310,20 +311,20 @@ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res 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 -@@ -64,7 +64,8 @@ found in the LICENSE file. +@@ -69,7 +69,8 @@ found in the LICENSE file. android:key="autofill_section" - android:order="11" + android:order="12" android:title="@string/prefs_section_autofill"/> - diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillPaymentMethodsFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillPaymentMethodsFragment.java --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillPaymentMethodsFragment.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillPaymentMethodsFragment.java -@@ -833,6 +833,7 @@ public class AutofillPaymentMethodsFragment extends ChromeBaseSettingsFragment +@@ -826,6 +826,7 @@ public class AutofillPaymentMethodsFragment extends ChromeBaseSettingsFragment } private static boolean disabledSettingsInThirdPartyMode(Profile profile) { @@ -334,7 +335,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settin diff --git a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java --- a/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/autofill/settings/AutofillProfilesFragment.java -@@ -635,6 +635,7 @@ public class AutofillProfilesFragment extends ChromeBaseSettingsFragment +@@ -772,6 +772,7 @@ public class AutofillProfilesFragment extends ChromeBaseSettingsFragment } private static boolean disabledSettingsInThirdPartyMode(Profile profile) { @@ -1061,7 +1062,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java -@@ -30,6 +30,8 @@ import org.chromium.chrome.browser.language.settings.LanguageSettings; +@@ -29,6 +29,8 @@ import org.chromium.chrome.browser.language.settings.LanguageSettings; import org.chromium.chrome.browser.lifetime.ApplicationLifetime; import org.chromium.chrome.browser.locale.LocaleManager; import org.chromium.chrome.browser.page_info.SiteSettingsHelper; @@ -1070,7 +1071,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme import org.chromium.chrome.browser.password_manager.PasswordManagerHelper; import org.chromium.chrome.browser.password_manager.PasswordStoreBridge; import org.chromium.chrome.browser.privacy_guide.PrivacyGuideFragment; -@@ -160,6 +162,9 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl +@@ -165,6 +167,9 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl PasswordManagerHelper.getForProfile(mProfile), new SettingsCustomTabLauncherImpl()); } @@ -1083,7 +1084,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java --- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java -@@ -657,17 +657,6 @@ public class MainSettings extends ChromeBaseSettingsFragment +@@ -750,17 +750,6 @@ public class MainSettings extends ChromeBaseSettingsFragment return SettingsNavigationHelper.showAutofillProfileSettings( getActivity()); }); @@ -1098,10 +1099,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe - mModalDialogManagerSupplier.asNonNull().get()); - return true; - }); + } - // This is temporary code needed for migrating people to UPM. With UPM there is no - // longer passwords setting page in Chrome, so we need to ask users to export their -@@ -720,12 +709,6 @@ public class MainSettings extends ChromeBaseSettingsFragment + private void maybeStartPasswordsExportFlow() { +@@ -815,12 +804,6 @@ public class MainSettings extends ChromeBaseSettingsFragment private static void showPasswordSettings( Context context, Profile profile, ModalDialogManager modalDialogManager) { @@ -1145,9 +1146,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -3207,6 +3207,13 @@ static_library("browser") { - "touch_to_fill/password_manager/touch_to_fill_controller_webauthn_delegate.h", - ] +@@ -3020,6 +3020,13 @@ static_library("browser") { + + public_deps += [ "//chrome/browser/accessibility/accessibility_prefs" ] + # static_library("browser") + sources += [ @@ -2985,12 +2986,13 @@ new file mode 100644 diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/password_manager/android/BUILD.gn --- a/chrome/browser/password_manager/android/BUILD.gn +++ b/chrome/browser/password_manager/android/BUILD.gn -@@ -188,6 +188,27 @@ android_library("java") { +@@ -187,6 +187,28 @@ android_library("java") { "java/src/org/chromium/chrome/browser/password_manager/settings/PasswordsPreference.java", ] + # android_library("java") + sources += [ ++ "java/src/org/chromium/chrome/browser/password_manager/ConfirmationDialogHelper.java", + "java/src/org/chromium/chrome/browser/password_manager/settings/PasswordManagerHandler.java", + "java/src/org/chromium/chrome/browser/password_manager/settings/PasswordManagerHandlerProvider.java", + "java/src/org/chromium/chrome/browser/password_manager/settings/PasswordUiView.java", @@ -3013,7 +3015,7 @@ diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/p resources_package = "org.chromium.chrome.browser.password_manager" } -@@ -209,6 +230,8 @@ generate_jni("jni_headers") { +@@ -208,6 +230,8 @@ generate_jni("jni_headers") { "java/src/org/chromium/chrome/browser/password_manager/PasswordStoreCredential.java", "java/src/org/chromium/chrome/browser/password_manager/PasswordSyncControllerDelegateBridgeImpl.java", ] @@ -3023,22 +3025,63 @@ diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/p android_library("utils_java") { diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/ConfirmationDialogHelper.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/ConfirmationDialogHelper.java ---- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/ConfirmationDialogHelper.java +new file mode 100644 +--- /dev/null +++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/ConfirmationDialogHelper.java -@@ -7,7 +7,9 @@ package org.chromium.chrome.browser.password_manager; - import static org.chromium.build.NullUtil.assumeNonNull; - - import android.content.Context; +@@ -0,0 +1,146 @@ ++// Copyright 2021 The Chromium Authors ++// Use of this source code is governed by a BSD-style license that can be ++// found in the LICENSE file. ++ ++package org.chromium.chrome.browser.password_manager; ++ ++import static org.chromium.build.NullUtil.assumeNonNull; ++ ++import android.content.Context; +import android.content.res.Resources; - ++ +import org.chromium.base.CallbackUtils; - import org.chromium.build.annotations.NullMarked; - import org.chromium.build.annotations.Nullable; - import org.chromium.components.browser_ui.modaldialog.AppModalPresenter; -@@ -49,6 +51,34 @@ public class ConfirmationDialogHelper { - mDialogModel = null; - } - ++import org.chromium.build.annotations.NullMarked; ++import org.chromium.build.annotations.Nullable; ++import org.chromium.components.browser_ui.modaldialog.AppModalPresenter; ++import org.chromium.ui.modaldialog.DialogDismissalCause; ++import org.chromium.ui.modaldialog.ModalDialogManager; ++import org.chromium.ui.modaldialog.ModalDialogManager.ModalDialogType; ++import org.chromium.ui.modaldialog.ModalDialogProperties; ++import org.chromium.ui.modaldialog.SimpleModalDialogController; ++import org.chromium.ui.modelutil.PropertyModel; ++ ++import java.util.ArrayList; ++import java.util.List; ++ ++/** ++ * Helps to show a confirmation. ++ * ++ * @deprecated use {@link ActionConfirmationDialog} instead - see crbug.com/440257087. ++ */ ++@Deprecated ++@NullMarked ++public class ConfirmationDialogHelper { ++ private final Context mContext; ++ private ModalDialogManager mModalDialogManager; ++ private @Nullable PropertyModel mDialogModel; ++ private @Nullable Runnable mConfirmedCallback; ++ private @Nullable Runnable mDeclinedCallback; ++ ++ public ConfirmationDialogHelper(Context context) { ++ mContext = context; ++ mModalDialogManager = ++ new ModalDialogManager(new AppModalPresenter(context), ModalDialogType.APP); ++ } ++ ++ /** Hides the dialog. */ ++ public void dismiss() { ++ if (mDialogModel != null) { ++ mModalDialogManager.dismissDialog(mDialogModel, DialogDismissalCause.UNKNOWN); ++ } ++ mDialogModel = null; ++ } ++ + // used by CredentialEditMediator.java + /** Returns the resources associated with the context used to launch the dialog. */ + public Resources getResources() { @@ -3067,9 +3110,71 @@ diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrom + CallbackUtils.emptyRunnable()); + } + - /** - * Shows an dialog to confirm the deletion. - * ++ /** ++ * Shows an dialog to confirm the deletion. ++ * ++ * @param title A {@link String} used as title. ++ * @param message A {@link CharSequence} used message body. ++ * @param confirmButtonText A {@link String} for confirmation button label. ++ * @param confirmedCallback A callback to run when the dialog is accepted. ++ * @param declinedCallback A callback to run when the dialog is declined. ++ */ ++ public void showConfirmation( ++ String title, ++ CharSequence message, ++ String confirmButtonText, ++ Runnable confirmedCallback, ++ Runnable declinedCallback) { ++ assert title != null; ++ assert message != null; ++ assert confirmedCallback != null; ++ ++ mConfirmedCallback = confirmedCallback; ++ mDeclinedCallback = declinedCallback; ++ ++ mDialogModel = ++ new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS) ++ .with( ++ ModalDialogProperties.CONTROLLER, ++ new SimpleModalDialogController( ++ mModalDialogManager, this::onDismiss)) ++ .with( ++ ModalDialogProperties.BUTTON_STYLES, ++ ModalDialogProperties.ButtonStyles.PRIMARY_FILLED_NEGATIVE_OUTLINE) ++ .with(ModalDialogProperties.TITLE, title) ++ .with( ++ ModalDialogProperties.MESSAGE_PARAGRAPHS, ++ new ArrayList<>(List.of(message))) ++ .with(ModalDialogProperties.POSITIVE_BUTTON_TEXT, confirmButtonText) ++ .with( ++ ModalDialogProperties.NEGATIVE_BUTTON_TEXT, ++ mContext.getString(R.string.cancel)) ++ .build(); ++ ++ mModalDialogManager.showDialog(mDialogModel, ModalDialogType.APP); ++ } ++ ++ private void onDismiss(@DialogDismissalCause int dismissalCause) { ++ switch (dismissalCause) { ++ case DialogDismissalCause.POSITIVE_BUTTON_CLICKED: ++ assumeNonNull(mConfirmedCallback); ++ mConfirmedCallback.run(); ++ break; ++ case DialogDismissalCause.NEGATIVE_BUTTON_CLICKED: ++ assumeNonNull(mDeclinedCallback); ++ mDeclinedCallback.run(); ++ break; ++ default: ++ // No explicit user decision. ++ break; ++ } ++ mDialogModel = null; ++ } ++ ++ void setModalDialogManagerForTesting(ModalDialogManager modalDialogManager) { ++ mModalDialogManager = modalDialogManager; ++ } ++} diff --git a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java --- a/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java +++ b/chrome/browser/password_manager/android/java/src/org/chromium/chrome/browser/password_manager/PasswordManagerHelper.java @@ -6073,6 +6178,20 @@ diff --git a/chrome/browser/password_manager/android/pwm_disabled/BUILD.gn b/chr "java/src/org/chromium/chrome/browser/pwm_disabled/PwmDeprecationDialogsMetricsRecorder.java", "java/src/org/chromium/chrome/browser/pwm_disabled/SingleThreadBarrierClosure.java", "java/src/org/chromium/chrome/browser/pwm_disabled/TimedCallbackDelayer.java", +diff --git a/chrome/browser/password_manager/factories/password_manager_settings_service_factory.cc b/chrome/browser/password_manager/factories/password_manager_settings_service_factory.cc +--- a/chrome/browser/password_manager/factories/password_manager_settings_service_factory.cc ++++ b/chrome/browser/password_manager/factories/password_manager_settings_service_factory.cc +@@ -90,9 +90,7 @@ PasswordManagerSettingsServiceFactory::CreateService(Profile* profile) const { + return std::make_unique( + profile->GetPrefs(), SyncServiceFactory::GetForProfile(profile)); + } +- return nullptr; +-#else ++#endif + return std::make_unique( + profile->GetPrefs()); +-#endif + } diff --git a/chrome/browser/password_manager/factories/password_store_backend_factory.cc b/chrome/browser/password_manager/factories/password_store_backend_factory.cc --- a/chrome/browser/password_manager/factories/password_store_backend_factory.cc +++ b/chrome/browser/password_manager/factories/password_store_backend_factory.cc @@ -6114,24 +6233,10 @@ diff --git a/chrome/browser/password_manager/factories/password_store_backend_fa std::move(login_db), behavior, prefs, os_crypt_async); -#endif // BUILDFLAG(IS_ANDROID) } -diff --git a/chrome/browser/password_manager/password_manager_settings_service_factory.cc b/chrome/browser/password_manager/password_manager_settings_service_factory.cc ---- a/chrome/browser/password_manager/password_manager_settings_service_factory.cc -+++ b/chrome/browser/password_manager/password_manager_settings_service_factory.cc -@@ -90,9 +90,7 @@ PasswordManagerSettingsServiceFactory::CreateService(Profile* profile) const { - return std::make_unique( - profile->GetPrefs(), SyncServiceFactory::GetForProfile(profile)); - } -- return nullptr; --#else -+#endif - return std::make_unique( - profile->GetPrefs()); --#endif - } diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browser_prefs.cc --- a/chrome/browser/prefs/browser_prefs.cc +++ b/chrome/browser/prefs/browser_prefs.cc -@@ -2642,13 +2642,6 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, +@@ -2527,13 +2527,6 @@ void MigrateObsoleteProfilePrefs(PrefService* profile_prefs, profile_prefs->ClearPref(kObsoletePasswordsUseUPMLocalAndSeparateStores); profile_prefs->ClearPref(kObsoleteEmptyProfileStoreLoginDatabase); profile_prefs->ClearPref(kObsoleteUpmAutoExportCsvNeedsDeletion); @@ -6148,7 +6253,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd -@@ -797,7 +797,7 @@ For more settings that use data to improve your Chrome experience, go to @@ -6157,7 +6262,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro Password saving is turned on by your administrator -@@ -897,6 +897,127 @@ For more settings that use data to improve your Chrome experience, go to @@ -6302,7 +6407,7 @@ new file mode 100644 diff --git a/components/autofill/core/common/autofill_features.cc b/components/autofill/core/common/autofill_features.cc --- a/components/autofill/core/common/autofill_features.cc +++ b/components/autofill/core/common/autofill_features.cc -@@ -391,6 +391,7 @@ BASE_FEATURE(kAutofillCreditCardUserPerceptionSurvey, +@@ -409,6 +409,7 @@ BASE_FEATURE(kAutofillCreditCardUserPerceptionSurvey, // If enabled, other apps can open the Autofill Options in Chrome. BASE_FEATURE(kAutofillDeepLinkAutofillOptions, base::FEATURE_ENABLED_BY_DEFAULT); @@ -6333,7 +6438,7 @@ diff --git a/components/browser_ui/settings/android/java/src/org/chromium/compon diff --git a/components/password_manager/core/browser/features/password_manager_features_util.cc b/components/password_manager/core/browser/features/password_manager_features_util.cc --- a/components/password_manager/core/browser/features/password_manager_features_util.cc +++ b/components/password_manager/core/browser/features/password_manager_features_util.cc -@@ -19,6 +19,7 @@ namespace password_manager::features_util { +@@ -18,6 +18,7 @@ namespace password_manager::features_util { namespace { bool IsUserEligibleForAccountStorage(const syncer::SyncService* sync_service) { @@ -6344,7 +6449,7 @@ diff --git a/components/password_manager/core/browser/features/password_manager_ diff --git a/components/password_manager/core/browser/import/password_importer.cc b/components/password_manager/core/browser/import/password_importer.cc --- a/components/password_manager/core/browser/import/password_importer.cc +++ b/components/password_manager/core/browser/import/password_importer.cc -@@ -75,6 +75,17 @@ const int32_t kMaxFileSizeBytes = 1000 * 1024; +@@ -82,6 +82,17 @@ base::expected ValidateDataSize(int64_t size) { // optional string. The string will be present if the status is SUCCESS. base::expected ReadFileToString( const base::FilePath& path) { @@ -6359,9 +6464,9 @@ diff --git a/components/password_manager/core/browser/import/password_importer.c + return std::move(file_contents); + } +#endif - std::optional file_size = base::GetFileSize(path); - - if (file_size.has_value()) { + if (std::optional file_size = base::GetFileSize(path)) { + RETURN_IF_ERROR(ValidateDataSize(file_size.value())); + } diff --git a/components/password_manager/core/browser/password_manager.cc b/components/password_manager/core/browser/password_manager.cc --- a/components/password_manager/core/browser/password_manager.cc +++ b/components/password_manager/core/browser/password_manager.cc @@ -6413,7 +6518,7 @@ diff --git a/components/password_manager/core/browser/password_manager_constants diff --git a/components/password_manager/core/browser/password_store/BUILD.gn b/components/password_manager/core/browser/password_store/BUILD.gn --- a/components/password_manager/core/browser/password_store/BUILD.gn +++ b/components/password_manager/core/browser/password_store/BUILD.gn -@@ -74,6 +74,19 @@ source_set("password_store_impl") { +@@ -75,6 +75,19 @@ source_set("password_store_impl") { "android_backend_error.h", "password_data_type_controller_delegate_android.cc", "password_data_type_controller_delegate_android.h", @@ -6457,15 +6562,15 @@ diff --git a/components/password_manager/core/browser/password_store/login_datab diff --git a/components/password_manager/core/browser/password_store/password_store_built_in_backend.cc b/components/password_manager/core/browser/password_store/password_store_built_in_backend.cc --- a/components/password_manager/core/browser/password_store/password_store_built_in_backend.cc +++ b/components/password_manager/core/browser/password_store/password_store_built_in_backend.cc -@@ -153,6 +153,7 @@ void PasswordStoreBuiltInBackend::InitBackend( - DCHECK(helper_); - affiliated_match_helper_ = affiliated_match_helper; +@@ -247,6 +247,7 @@ void PasswordStoreBuiltInBackend::InitBackend( + remote_form_changes_received_callback_ = remote_form_changes_received; + sync_enabled_or_disabled_cb_ = sync_enabled_or_disabled_cb; +#if !BUILDFLAG(IS_ANDROID) // To ensure that groups of the kClearUndecryptablePasswords will stay // balanced, after the cleanup is done an additional flag check is needed. // Users won't reach the flag the normal way since the LoginDB is working -@@ -161,6 +162,7 @@ void PasswordStoreBuiltInBackend::InitBackend( +@@ -255,6 +256,7 @@ void PasswordStoreBuiltInBackend::InitBackend( if (pref_service_->GetBoolean(prefs::kClearingUndecryptablePasswords)) { base::FeatureList::IsEnabled(features::kClearUndecryptablePasswords); } @@ -6473,7 +6578,7 @@ diff --git a/components/password_manager/core/browser/password_store/password_st background_task_runner_->PostTask( FROM_HERE, base::BindOnce(&LoginDatabaseAsyncHelper::CreateSyncBackend, -@@ -437,11 +439,15 @@ void PasswordStoreBuiltInBackend::OnEncryptorReceived( +@@ -561,11 +563,15 @@ void PasswordStoreBuiltInBackend::OnEncryptorReceived( weak_ptr_factory_.GetWeakPtr())) .Then(std::move(remote_form_changes_received)); @@ -6576,7 +6681,7 @@ diff --git a/components/password_manager/core/common/password_manager_pref_names diff --git a/components/sync/service/sync_prefs.cc b/components/sync/service/sync_prefs.cc --- a/components/sync/service/sync_prefs.cc +++ b/components/sync/service/sync_prefs.cc -@@ -740,7 +740,7 @@ bool SyncPrefs::IsTypeSupportedInTransportMode(UserSelectableType type) { +@@ -738,7 +738,7 @@ bool SyncPrefs::IsTypeSupportedInTransportMode(UserSelectableType type) { kSeparateLocalAndAccountSearchEngines); #endif case UserSelectableType::kPasswords: diff --git a/build/patches/Use-list-mode-for-tab-switcher.patch b/build/patches/Use-list-mode-for-tab-switcher.patch index d801b8e3..caac84fe 100644 --- a/build/patches/Use-list-mode-for-tab-switcher.patch +++ b/build/patches/Use-list-mode-for-tab-switcher.patch @@ -32,7 +32,6 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../chrome/browser/app/ChromeActivity.java | 5 +- chrome/browser/android/favicon_helper.cc | 214 ++++++++++- chrome/browser/android/favicon_helper.h | 25 ++ - .../browser/flags/ChromeFeatureList.java | 6 +- .../flags/cromite/sTabSwitcherListMode.java | 33 ++ .../tab_ui/TabListFaviconProvider.java | 111 ++++++ .../browser/ui/favicon/FaviconHelper.java | 57 ++- @@ -42,7 +41,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html .../java/res/drawable/ic_warning_red_16dp.xml | 26 ++ .../layout/title_and_description_layout.xml | 31 +- .../tab-switcher-list-mode.inc | 3 + - 35 files changed, 1184 insertions(+), 43 deletions(-) + 34 files changed, 1180 insertions(+), 41 deletions(-) create mode 100644 chrome/android/features/tab_ui/java/res/drawable/selected_tab_background.xml create mode 100644 chrome/android/features/tab_ui/java/res/drawable/selected_tab_background_incognito.xml create mode 100644 chrome/android/features/tab_ui/java/res/layout/tab_list_card_item.xml @@ -217,7 +216,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser import org.chromium.chrome.browser.tabmodel.TabClosingSource; import org.chromium.chrome.browser.tabmodel.TabClosureParamsUtils; import org.chromium.chrome.browser.tabmodel.TabCreatorUtil; -@@ -901,6 +902,13 @@ public class TabGridDialogMediator +@@ -900,6 +901,13 @@ public class TabGridDialogMediator TabGridDialogProperties.DIALOG_UNGROUP_BAR_HOVERED_TEXT_COLOR, ungroupBarHoveredTextColor); mModel.set(TabGridDialogProperties.IS_INCOGNITO, isIncognito); @@ -479,7 +478,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListMediator.java -@@ -2630,8 +2630,26 @@ class TabListMediator implements TabListNotificationHandler { +@@ -2622,8 +2622,26 @@ class TabListMediator implements TabListNotificationHandler { private void updateFaviconForTab( PropertyModel model, Tab tab, @Nullable Bitmap icon, @Nullable GURL iconUrl) { if (mActionsOnAllRelatedTabs && isTabInTabGroup(tab)) { @@ -997,7 +996,7 @@ new file mode 100644 diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherPaneBase.java b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherPaneBase.java --- a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherPaneBase.java +++ b/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabSwitcherPaneBase.java -@@ -298,7 +298,7 @@ public abstract class TabSwitcherPaneBase extends PaneBase +@@ -305,7 +305,7 @@ public abstract class TabSwitcherPaneBase extends PaneBase || isFullSpaceModeOnAndroidXr; @Nullable Tab tab = getCurrentTab(); @@ -1006,7 +1005,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser return FadeHubLayoutAnimationFactory.createFadeInAnimatorProvider( hubContainerView, HUB_LAYOUT_FADE_DURATION_MS, mOnToolbarAlphaChange); } else if (isFullSpaceModeOnAndroidXr && getTabListMode() == TabListMode.GRID) { -@@ -327,7 +327,7 @@ public abstract class TabSwitcherPaneBase extends PaneBase +@@ -334,7 +334,7 @@ public abstract class TabSwitcherPaneBase extends PaneBase HubContainerView hubContainerView) { assert !DeviceFormFactor.isNonMultiDisplayContextOnTablet(hubContainerView.getContext()); Tab tab = getCurrentTab(); @@ -1057,7 +1056,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser diff --git a/chrome/android/features/tab_ui/tab_management_java_sources.gni b/chrome/android/features/tab_ui/tab_management_java_sources.gni --- a/chrome/android/features/tab_ui/tab_management_java_sources.gni +++ b/chrome/android/features/tab_ui/tab_management_java_sources.gni -@@ -180,6 +180,8 @@ internal_tab_management_java_sources = [ +@@ -179,6 +179,8 @@ internal_tab_management_java_sources = [ "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListNotificationHandler.java", "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListOnScrollListener.java", "//chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser/tasks/tab_management/TabListRecyclerView.java", @@ -1085,15 +1084,15 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java -@@ -197,6 +197,7 @@ import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver; +@@ -199,6 +199,7 @@ import org.chromium.chrome.browser.tabmodel.TabModelSelectorTabObserver; import org.chromium.chrome.browser.tabmodel.TabModelUtils; import org.chromium.chrome.browser.task_manager.TaskManager; import org.chromium.chrome.browser.task_manager.TaskManagerFactory; +import org.chromium.chrome.browser.tasks.tab_management.TabUiFeatureUtilities; import org.chromium.chrome.browser.theme.ThemeModuleUtils; - import org.chromium.chrome.browser.tinker_tank.TinkerTankDelegate; import org.chromium.chrome.browser.toolbar.ControlContainer; -@@ -695,8 +696,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity + import org.chromium.chrome.browser.toolbar.ToolbarManager; +@@ -700,8 +701,8 @@ public abstract class ChromeActivity extends AsyncInitializationActivity new TabContentManager( this, mBrowserControlsManagerSupplier.get(), @@ -1408,29 +1407,6 @@ diff --git a/chrome/browser/android/favicon_helper.h b/chrome/browser/android/fa base::WeakPtrFactory weak_ptr_factory_{this}; }; -diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java ---- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java -@@ -21,6 +21,7 @@ import org.chromium.components.cached_flags.IntCachedFeatureParam; - import org.chromium.components.cached_flags.StringCachedFeatureParam; - - import org.chromium.chrome.browser.flags.cromite.CromiteCachedFlagImplBase; -+import org.chromium.chrome.browser.flags.cromite.sTabSwitcherListMode; - import java.util.Arrays; - import java.util.stream.Collectors; - -@@ -1372,8 +1373,9 @@ public abstract class ChromeFeatureList { - newMutableFlagWithSafeDefault(ANDROID_BOOKMARK_BAR_FAST_FOLLOW, true); - public static final MutableFlagWithSafeDefault sAndroidContextMenuDuplicateTabs = - newMutableFlagWithSafeDefault(ANDROID_CONTEXT_MENU_DUPLICATE_TABS, false); -- public static final MutableFlagWithSafeDefault sAndroidPinnedTabs = -- newMutableFlagWithSafeDefault(ANDROID_PINNED_TABS, true); -+ public static final MutableFlagWithSafeDefault sAndroidPinnedTabs = sTabSwitcherListMode.getInstance().isEnabled() -+ ? ChromeFeatureMap.getInstance().immutableFlagWithDefault(ANDROID_PINNED_TABS, false) -+ : newMutableFlagWithSafeDefault(ANDROID_PINNED_TABS, true); - public static final MutableFlagWithSafeDefault sAndroidPinnedTabsTabletTabStrip = - newMutableFlagWithSafeDefault(ANDROID_PINNED_TABS_TABLET_TAB_STRIP, true); - public static final MutableFlagWithSafeDefault sAndroidTipsNotifications = diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sTabSwitcherListMode.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/sTabSwitcherListMode.java new file mode 100644 --- /dev/null @@ -1658,7 +1634,7 @@ diff --git a/chrome/browser/ui/android/favicon/java/src/org/chromium/chrome/brow /** Helper for generating default favicons and sharing the same icon between multiple views. */ public static class DefaultFaviconHelper { private @Nullable Bitmap mChromeDarkBitmap; -@@ -220,6 +234,36 @@ public class FaviconHelper { +@@ -230,6 +244,36 @@ public class FaviconHelper { faviconImageCallback); } @@ -1695,7 +1671,7 @@ diff --git a/chrome/browser/ui/android/favicon/java/src/org/chromium/chrome/brow @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE) @NativeMethods public interface Natives { -@@ -227,6 +271,13 @@ public class FaviconHelper { +@@ -237,6 +281,13 @@ public class FaviconHelper { void destroy(long nativeFaviconHelper); @@ -1734,7 +1710,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow import org.chromium.chrome.browser.omnibox.LocationBarBackgroundDrawable; import org.chromium.chrome.browser.omnibox.LocationBarBackgroundDrawable.HairlineBehavior; import org.chromium.chrome.browser.omnibox.LocationBarCoordinator; -@@ -2106,7 +2107,7 @@ public class ToolbarPhone extends ToolbarLayout +@@ -2140,7 +2141,7 @@ public class ToolbarPhone extends ToolbarLayout // On entering the tab switcher, set the focusability of the url bar to be false. This will // occur at the start of the enter event, and will later be reset to true upon finishing the // exit event. @@ -1743,7 +1719,7 @@ diff --git a/chrome/browser/ui/android/toolbar/java/src/org/chromium/chrome/brow mLocationBar.setUrlBarFocusable(false); } -@@ -2334,7 +2335,8 @@ public class ToolbarPhone extends ToolbarLayout +@@ -2368,7 +2369,8 @@ public class ToolbarPhone extends ToolbarLayout ToggleTabStackButtonCoordinator tabSwitcherButtonCoordinator = getTabSwitcherButtonCoordinator(); assumeNonNull(tabSwitcherButtonCoordinator);