public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Than Ngo <than@redhat.com>
To: git-commits@fedoraproject.org
Subject: [rpms/chromium] epel9-next: Disable AI (patch from ungoogle chromium)
Date: Fri, 07 Aug 2026 16:09:01 GMT [thread overview]
Message-ID: <178611894140.1.7924746032902079676.rpms-chromium-44c0f09115c3@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/chromium
Branch : epel9-next
Commit : 44c0f09115c3c743d45b42e325bade8642f625bd
Author : Than Ngo <than@redhat.com>
Date : 2026-05-08T17:12:56+02:00
Stats : +1309/-0 in 2 file(s)
URL : https://src.fedoraproject.org/rpms/chromium/c/44c0f09115c3c743d45b42e325bade8642f625bd?branch=epel9-next
Log:
Disable AI (patch from ungoogle chromium)
---
diff --git a/chromium.spec b/chromium.spec
index d243cee..bf2d866 100644
--- a/chromium.spec
+++ b/chromium.spec
@@ -520,6 +520,7 @@ Patch511: 0001-fips-disable-options.patch
# Patches from ungoogle chromium, https://github.com/ungoogled-software/ungoogled-chromium
# remove rollup binary, build with wasm-rollup
Patch520: build-with-wasm-rollup.patch
+Patch521: disable-ai.patch
# upstream patches
@@ -1231,6 +1232,7 @@ Qt6 UI for chromium.
%endif
%patch -P520 -p1 -b .build-with-wasm-rollup
+%patch -P521 -p1 -b .disable-ai
# Upstream patches
diff --git a/disable-ai.patch b/disable-ai.patch
new file mode 100644
index 0000000..567e1db
--- /dev/null
+++ b/disable-ai.patch
@@ -0,0 +1,1307 @@
+# Disable Glic ("Gemini Live in Chrome"), ScreenAI, and associated AI-based
+# features.
+
+--- a/chrome/browser/BUILD.gn
++++ b/chrome/browser/BUILD.gn
+@@ -3396,10 +3396,6 @@ static_library("browser") {
+ allow_circular_includes_from += [ "//chrome/browser/payments:impl" ]
+
+ sources += [
+- "accessibility/ax_main_node_annotator_controller.cc",
+- "accessibility/ax_main_node_annotator_controller.h",
+- "accessibility/ax_main_node_annotator_controller_factory.cc",
+- "accessibility/ax_main_node_annotator_controller_factory.h",
+ "accessibility/caption_bubble_context_browser.h",
+ "accessibility/embedded_a11y_extension_loader.cc",
+ "accessibility/embedded_a11y_extension_loader.h",
+@@ -3829,8 +3825,6 @@ static_library("browser") {
+ "//chrome/app:command_ids",
+ "//chrome/app/theme:chrome_unscaled_resources_grit",
+ "//chrome/app/vector_icons",
+- "//chrome/browser/accessibility/tree_fixing:prefs",
+- "//chrome/browser/accessibility/tree_fixing:service",
+ "//chrome/browser/accessibility_annotator/content_annotator",
+ "//chrome/browser/actor/ui",
+ "//chrome/browser/actor/ui:actor_overlay",
+@@ -3880,10 +3874,6 @@ static_library("browser") {
+ "//chrome/browser/record_replay",
+ "//chrome/browser/record_replay:impl",
+ "//chrome/browser/resource_coordinator",
+- "//chrome/browser/screen_ai:prefs",
+- "//chrome/browser/screen_ai:screen_ai_install_state",
+- "//chrome/browser/screen_ai:screen_ai_service_router_factory",
+- "//chrome/browser/screen_ai/public:optical_character_recognizer",
+ "//chrome/browser/sharing_hub",
+ "//chrome/browser/sharing_hub:impl",
+ "//chrome/browser/smart_card",
+@@ -3960,7 +3950,6 @@ static_library("browser") {
+ "//chrome/browser/ui/webui:webui_util",
+ "//chrome/browser/ui/webui/access_code_cast",
+ "//chrome/browser/ui/webui/app_service_internals",
+- "//chrome/browser/ui/webui/autofill_ml_internals",
+ "//chrome/browser/ui/webui/color_pipeline_internals",
+ "//chrome/browser/ui/webui/commerce",
+ "//chrome/browser/ui/webui/commerce:impl",
+@@ -4065,9 +4054,6 @@ static_library("browser") {
+ "//components/webauthn/core/browser",
+ "//components/webauthn/core/browser:passkey_model",
+ "//services/device/public/cpp/hid",
+- "//services/screen_ai",
+- "//services/screen_ai/public/cpp:utilities",
+- "//services/screen_ai/public/mojom",
+ "//third_party/crashpad/crashpad/client:common",
+ "//third_party/zxcvbn-cpp",
+ "//ui/views",
+@@ -4264,8 +4250,6 @@ static_library("browser") {
+ sources += [
+ "accessibility/soda_installer_impl.cc",
+ "accessibility/soda_installer_impl.h",
+- "component_updater/screen_ai_component_installer.cc",
+- "component_updater/screen_ai_component_installer.h",
+ "download/bubble/download_bubble_accessible_alerts_map.cc",
+ "download/bubble/download_bubble_accessible_alerts_map.h",
+ "download/bubble/download_bubble_display_info.cc",
+@@ -4313,8 +4297,6 @@ static_library("browser") {
+ "profiles/profile_activity_metrics_recorder.h",
+ "profiles/profile_list_desktop.cc",
+ "profiles/profile_list_desktop.h",
+- "screen_ai/screen_ai_downloader_non_chromeos.cc",
+- "screen_ai/screen_ai_downloader_non_chromeos.h",
+ "signin/force_signin_verifier.cc",
+ "signin/force_signin_verifier.h",
+ ]
+@@ -5117,7 +5099,6 @@ static_library("browser") {
+ "//chrome/browser/policy:system_features_disable_list",
+ "//chrome/browser/push_notification",
+ "//chrome/browser/resources:app_icon_resources",
+- "//chrome/browser/screen_ai:screen_ai_dlc_installer",
+ "//chrome/browser/sharesheet",
+ "//chrome/browser/support_tool/ash",
+ "//chrome/browser/ui/ash/accelerator",
+@@ -5381,7 +5362,6 @@ static_library("browser") {
+ "//remoting/host/chromeos:browser_interop",
+ "//remoting/host/chromeos:features",
+ "//services/device/public/cpp/geolocation",
+- "//services/screen_ai/public/cpp:metrics",
+ "//third_party/nearby:rpc_resources_proto",
+ "//third_party/nearby:wire_format_proto",
+ "//ui/chromeos",
+--- a/chrome/browser/accessibility/tree_fixing/BUILD.gn
++++ b/chrome/browser/accessibility/tree_fixing/BUILD.gn
+@@ -63,11 +63,9 @@ source_set("internal") {
+ deps = [
+ "//base",
+ "//chrome/browser/profiles:profile",
+- "//chrome/browser/screen_ai:screen_ai_service_router_factory",
+ "//components/paint_preview/browser",
+ "//components/paint_preview/common",
+ "//components/paint_preview/public",
+ "//content/public/browser",
+- "//services/screen_ai/public/mojom",
+ ]
+ }
+--- a/chrome/browser/actor/actor_keyed_service.cc
++++ b/chrome/browser/actor/actor_keyed_service.cc
+@@ -616,13 +616,6 @@ bool ActorKeyedService::IsActiveOnTab(co
+
+ ActorTask* ActorKeyedService::GetTaskFromTab(
+ const tabs::TabInterface& tab) const {
+- tabs::TabHandle handle = tab.GetHandle();
+- for (const auto& [task_id, task] : active_tasks_) {
+- if (task->HasTab(handle)) {
+- return task.get();
+- }
+- }
+-
+ return nullptr;
+ }
+
+--- a/chrome/browser/actor/ui/actor_ui_tab_controller.cc
++++ b/chrome/browser/actor/ui/actor_ui_tab_controller.cc
+@@ -49,7 +49,6 @@ ActorUiTabController::ActorUiTabControll
+ base::Unretained(this))),
+ scoped_unowned_user_data_(tab.GetUnownedUserDataHost(), *this) {
+ CHECK(base::FeatureList::IsEnabled(features::kGlicActor));
+- CHECK(actor_keyed_service_);
+ }
+
+ ActorUiTabController::~ActorUiTabController() = default;
+--- a/chrome/browser/browser_process_impl.cc
++++ b/chrome/browser/browser_process_impl.cc
+@@ -259,12 +259,10 @@ void OnLocalStatePrefsLoaded();
+ #if BUILDFLAG(IS_CHROMEOS)
+ #include "chrome/browser/chromeos/extensions/telemetry/chromeos_telemetry_extensions_browser_api_provider.h"
+ #include "chrome/browser/hid/hid_pinned_notification.h"
+-#include "chrome/browser/screen_ai/screen_ai_downloader_chromeos.h"
+ #include "chrome/browser/usb/usb_pinned_notification.h"
+ #include "components/crash/core/app/crashpad.h"
+ #elif !BUILDFLAG(IS_ANDROID)
+ #include "chrome/browser/hid/hid_status_icon.h"
+-#include "chrome/browser/screen_ai/screen_ai_downloader_non_chromeos.h"
+ #include "chrome/browser/usb/usb_status_icon.h"
+ #include "components/enterprise/browser/controller/chrome_browser_cloud_management_controller.h"
+ #endif
+@@ -1641,9 +1639,6 @@ void BrowserProcessImpl::PreMainMessageL
+ soda_installer_impl_ = std::make_unique<speech::SodaInstallerImplChromeOS>();
+ #endif // BUILDFLAG(IS_CHROMEOS)
+
+-#if !BUILDFLAG(IS_ANDROID)
+- screen_ai_download_ = screen_ai::ScreenAIInstallState::Create();
+-#endif
+
+ base::FilePath user_data_dir;
+ bool result = base::PathService::Get(chrome::DIR_USER_DATA, &user_data_dir);
+--- a/chrome/browser/browser_process_impl.h
++++ b/chrome/browser/browser_process_impl.h
+@@ -95,9 +95,6 @@ namespace speech {
+ class SodaInstaller;
+ } // namespace speech
+
+-namespace screen_ai {
+-class ScreenAIInstallState;
+-} // namespace screen_ai
+
+ namespace supervised_user {
+ class DeviceParentalControls;
+@@ -457,9 +454,6 @@ class BrowserProcessImpl : public Browse
+ // to ensure that SodaInstallerImpl gets destructed first.
+ std::unique_ptr<speech::SodaInstaller> soda_installer_impl_;
+
+- // Used to download Screen AI on demand and keep track of the library
+- // availability.
+- std::unique_ptr<screen_ai::ScreenAIInstallState> screen_ai_download_;
+ #endif
+
+ std::unique_ptr<BrowserProcessPlatformPart> platform_part_;
+--- a/chrome/browser/chrome_browser_interface_binders.cc
++++ b/chrome/browser/chrome_browser_interface_binders.cc
+@@ -85,8 +85,6 @@
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
+ BUILDFLAG(IS_CHROMEOS)
+-#include "chrome/browser/screen_ai/screen_ai_service_router.h"
+-#include "chrome/browser/screen_ai/screen_ai_service_router_factory.h"
+ #include "chrome/browser/web_applications/sub_apps_service_impl.h"
+ #endif
+
+@@ -373,27 +371,6 @@ void BindMediaFoundationPreferences(
+ }
+ #endif // BUILDFLAG(IS_WIN)
+
+-#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || \
+- BUILDFLAG(IS_WIN)
+-void BindScreenAIAnnotator(
+- content::RenderFrameHost* frame_host,
+- mojo::PendingReceiver<screen_ai::mojom::ScreenAIAnnotator> receiver) {
+- content::BrowserContext* browser_context =
+- frame_host->GetProcess()->GetBrowserContext();
+-
+- screen_ai::ScreenAIServiceRouterFactory::GetForBrowserContext(browser_context)
+- ->BindScreenAIAnnotator(std::move(receiver));
+-}
+-
+-void BindScreen2xMainContentExtractor(
+- content::RenderFrameHost* frame_host,
+- mojo::PendingReceiver<screen_ai::mojom::Screen2xMainContentExtractor>
+- receiver) {
+- screen_ai::ScreenAIServiceRouterFactory::GetForBrowserContext(
+- frame_host->GetProcess()->GetBrowserContext())
+- ->BindMainContentExtractor(std::move(receiver));
+-}
+-#endif
+
+ void BindModelBroker(
+ content::RenderFrameHost* frame_host,
+@@ -558,10 +535,6 @@ void PopulateChromeFrameBinders(
+ &web_app::SubAppsServiceImpl::CreateIfAllowed);
+ }
+
+- map->Add<screen_ai::mojom::ScreenAIAnnotator>(&BindScreenAIAnnotator);
+-
+- map->Add<screen_ai::mojom::Screen2xMainContentExtractor>(
+- &BindScreen2xMainContentExtractor);
+ #endif
+
+ #if BUILDFLAG(IS_WIN)
+--- a/chrome/browser/chrome_browser_interface_binders_webui_parts_desktop.cc
++++ b/chrome/browser/chrome_browser_interface_binders_webui_parts_desktop.cc
+@@ -511,8 +511,6 @@ void PopulateChromeWebUIFrameBindersPart
+ ::mojom::app_service_internals::AppServiceInternalsPageHandler,
+ AppServiceInternalsUI>(map);
+
+- RegisterWebUIControllerInterfaceBinder<
+- ::autofill_ml_internals::mojom::PageHandler, AutofillMlInternalsUI>(map);
+
+ RegisterWebUIControllerInterfaceBinder<
+ access_code_cast::mojom::PageHandlerFactory,
+--- a/chrome/browser/component_updater/registration.cc
++++ b/chrome/browser/component_updater/registration.cc
+@@ -53,8 +53,6 @@
+
+ #if BUILDFLAG(IS_ANDROID)
+ #include "chrome/browser/component_updater/real_time_url_checks_allowlist_component_installer.h"
+-#else
+-#include "chrome/browser/component_updater/screen_ai_component_installer.h"
+ #endif // BUILDFLAG(IS_ANDROID)
+
+ #if !BUILDFLAG(IS_ANDROID)
+@@ -209,9 +207,6 @@ void RegisterComponentsForUpdate() {
+ RegisterRealTimeUrlChecksAllowlistComponent(cus);
+ #endif // BUIDLFLAG(IS_ANDROID)
+
+-#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS)
+- ManageScreenAIComponentRegistration(cus, g_browser_process->local_state());
+-#endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS)
+
+ RegisterCommerceHeuristicsComponent(cus);
+
+--- a/chrome/browser/glic/host/glic_skills_manager_impl.cc
++++ b/chrome/browser/glic/host/glic_skills_manager_impl.cc
+@@ -37,35 +37,6 @@ GlicSkillsManagerImpl::~GlicSkillsManage
+
+ void GlicSkillsManagerImpl::UpdateSkillPreviews(
+ std::optional<tabs::TabInterface*> updated_tab) {
+- if (!host_->IsWebClientConnected()) {
+- return;
+- }
+- auto* focused_tab = host_->sharing_manager().GetFocusedTabData().focus();
+- if (!focused_tab) {
+- host_->NotifyContextualSkillsChanged({});
+- contextual_skill_previews_.clear();
+- return;
+- }
+- if (updated_tab && focused_tab != *updated_tab) {
+- // The update does not apply to the focused tab.
+- return;
+- }
+- auto* observer = skills::SkillsUpdateObserver::From(focused_tab);
+- if (!observer) {
+- return;
+- }
+- auto new_skill_previews = observer->GetContextualSkillPreviews();
+-
+- if (mojo::Equals(contextual_skill_previews_, new_skill_previews)) {
+- return;
+- }
+- contextual_skill_previews_ = std::move(new_skill_previews);
+-
+- std::vector<mojom::SkillPreviewPtr> skill_previews;
+- for (const auto& preview : contextual_skill_previews_) {
+- skill_previews.push_back(preview.Clone());
+- }
+- host_->NotifyContextualSkillsChanged(std::move(skill_previews));
+ }
+
+ tabs::TabInterface* GlicSkillsManagerImpl::EnsureTabForSkills() {
+--- a/chrome/browser/navigation_predictor/navigation_predictor.cc
++++ b/chrome/browser/navigation_predictor/navigation_predictor.cc
+@@ -18,8 +18,6 @@
+ #include "base/time/default_tick_clock.h"
+ #include "chrome/browser/navigation_predictor/navigation_predictor_keyed_service.h"
+ #include "chrome/browser/navigation_predictor/navigation_predictor_keyed_service_factory.h"
+-#include "chrome/browser/navigation_predictor/preloading_model_keyed_service.h"
+-#include "chrome/browser/navigation_predictor/preloading_model_keyed_service_factory.h"
+ #include "chrome/browser/preloading/preloading_prefs.h"
+ #include "chrome/browser/profiles/profile.h"
+ #include "components/no_state_prefetch/browser/no_state_prefetch_manager.h"
+@@ -105,10 +103,6 @@ base::TimeDelta MLModelExecutionTimerSta
+ blink::features::kPreloadingModelTimerStartDelay.Get());
+ }
+
+-base::TimeDelta MLModelExecutionTimerInterval() {
+- return base::Milliseconds(
+- blink::features::kPreloadingModelTimerInterval.Get());
+-}
+
+ base::TimeDelta MLModelMaxHoverTime() {
+ return blink::features::kPreloadingModelMaxHoverTime.Get();
+@@ -415,80 +409,6 @@ void NavigationPredictor::ProcessPointer
+ }
+
+ void NavigationPredictor::OnMLModelExecutionTimerFired() {
+- // Check whether preloading is enabled or not.
+- Profile* profile =
+- Profile::FromBrowserContext(render_frame_host().GetBrowserContext());
+- if (prefetch::IsSomePreloadingEnabled(*profile->GetPrefs()) !=
+- content::PreloadingEligibility::kEligible) {
+- return;
+- }
+-
+- // Execute the model.
+- PreloadingModelKeyedService* model_service =
+- PreloadingModelKeyedServiceFactory::GetForProfile(profile);
+- if (!model_service) {
+- return;
+- }
+-
+- if (!ml_model_candidate_.has_value()) {
+- return;
+- }
+- auto it = anchors_.find(ml_model_candidate_.value());
+- if (it == anchors_.end()) {
+- return;
+- }
+-
+- AnchorElementData& anchor = it->second;
+-
+- PreloadingModelKeyedService::Inputs inputs;
+- inputs.contains_image = anchor.contains_image;
+- inputs.font_size = anchor.font_size;
+- inputs.has_text_sibling = anchor.has_text_sibling;
+- inputs.is_bold = anchor.is_bold_font;
+- inputs.is_in_iframe = anchor.is_in_iframe;
+- inputs.is_url_incremented_by_one = anchor.is_url_incremented_by_one;
+- inputs.navigation_start_to_link_logged =
+- anchor.first_report_timestamp - navigation_start_;
+- auto path_info = GetUrlPathLengthDepthAndHash(anchor.target_url);
+- inputs.path_length = path_info.path_length;
+- inputs.path_depth = path_info.path_depth;
+- inputs.percent_clickable_area = anchor.ratio_area;
+- inputs.percent_vertical_distance =
+- static_cast<int>(anchor.ratio_distance_root_top * 100);
+-
+- inputs.is_same_host = anchor.is_same_host;
+- auto to_timedelta = [this](std::optional<base::TimeTicks> ts) {
+- return ts.has_value() ? NowTicks() - ts.value() : base::TimeDelta();
+- };
+- // TODO(329691634): Using the real viewport entry time for
+- // `entered_viewport_to_left_viewport` produces low quality results.
+- // We could remove it from the model, if we can't get this to be useful.
+- inputs.entered_viewport_to_left_viewport = base::TimeDelta();
+- inputs.hover_dwell_time = to_timedelta(anchor.pointer_over_timestamp);
+- inputs.pointer_hovering_over_count = anchor.pointer_hovering_over_count;
+- if (model_score_callback_) {
+- std::move(model_score_callback_).Run(inputs);
+- }
+-
+- content::PreloadingData* preloading_data =
+- content::PreloadingData::GetOrCreateForWebContents(
+- content::WebContents::FromRenderFrameHost(&render_frame_host()));
+- preloading_data->OnPreloadingHeuristicsModelInput(
+- anchor.target_url,
+- base::BindOnce(&RecordMetricsForModelTraining, inputs,
+- render_frame_host().GetPageUkmSourceId()));
+- model_service->Score(
+- &scoring_model_task_tracker_, inputs,
+- base::BindOnce(&NavigationPredictor::OnPreloadingHeuristicsModelDone,
+- weak_ptr_factory_.GetWeakPtr(), anchor.target_url));
+-
+- if (inputs.hover_dwell_time < MLModelMaxHoverTime() &&
+- !ml_model_execution_timer_.IsRunning()) {
+- ml_model_execution_timer_.Start(
+- FROM_HERE, MLModelExecutionTimerInterval(),
+- base::BindOnce(&NavigationPredictor::OnMLModelExecutionTimerFired,
+- base::Unretained(this)));
+- }
+ }
+
+ void NavigationPredictor::SetModelScoreCallbackForTesting(
+--- a/chrome/browser/page_content_annotations/page_content_annotations_service_factory.cc
++++ b/chrome/browser/page_content_annotations/page_content_annotations_service_factory.cc
+@@ -118,62 +118,6 @@ PageContentAnnotationsServiceFactory::~P
+ std::unique_ptr<KeyedService>
+ PageContentAnnotationsServiceFactory::BuildServiceInstanceForBrowserContext(
+ content::BrowserContext* context) const {
+- Profile* profile = Profile::FromBrowserContext(context);
+-
+- if (!ShouldEnablePageContentAnnotations(profile))
+- return nullptr;
+-
+- auto* proto_db_provider = profile->GetOriginalProfile()
+- ->GetDefaultStoragePartition()
+- ->GetProtoDatabaseProvider();
+- base::FilePath profile_path = profile->GetOriginalProfile()->GetPath();
+-
+- // The optimization guide and history services must be available for the page
+- // content annotations service to work.
+- OptimizationGuideKeyedService* optimization_guide_keyed_service =
+- OptimizationGuideKeyedServiceFactory::GetForProfile(profile);
+- history::HistoryService* history_service =
+- HistoryServiceFactory::GetForProfile(profile,
+- ServiceAccessType::IMPLICIT_ACCESS);
+- TemplateURLService* template_url_service =
+- TemplateURLServiceFactory::GetForProfile(profile);
+- ZeroSuggestCacheService* zero_suggest_cache_service =
+- ZeroSuggestCacheServiceFactory::GetForProfile(profile);
+-
+- if (optimization_guide_keyed_service && history_service) {
+- std::string country_code =
+- GetCurrentCountryCode(g_browser_process->variations_service());
+-
+- page_content_annotations::PageEmbeddingsService* page_embeddings_service =
+- page_content_annotations::PageEmbeddingsServiceFactory::GetForProfile(
+- profile);
+- passage_embeddings::EmbedderMetadataProvider* embedder_metadata_provider =
+- page_embeddings_service
+- ? page_embeddings_service->GetEmbedderMetadataProvider()
+- : nullptr;
+-
+- auto service = std::make_unique<
+- page_content_annotations::PageContentAnnotationsService>(
+- g_browser_process->GetApplicationLocale(), country_code,
+- optimization_guide_keyed_service, history_service, template_url_service,
+- zero_suggest_cache_service, proto_db_provider, profile_path,
+- optimization_guide_keyed_service->GetOptimizationGuideLogger(),
+- optimization_guide_keyed_service, embedder_metadata_provider,
+- base::ThreadPool::CreateSequencedTaskRunner(
+- {base::MayBlock(), base::TaskPriority::BEST_EFFORT}));
+-
+- page_content_annotations::OnDeviceCategoryClassifier* category_classifier =
+- service->on_device_category_classifier();
+- if (category_classifier && page_embeddings_service) {
+- service->SetPageCategoryClassifierBridge(
+- std::make_unique<
+- page_content_annotations::PageCategoryClassifierBridgeImpl>(
+- *page_embeddings_service, *category_classifier,
+- optimization_guide_keyed_service->GetOptimizationGuideLogger()));
+- }
+-
+- return service;
+- }
+ return nullptr;
+ }
+
+--- a/chrome/browser/password_manager/password_change_delegate_impl.cc
++++ b/chrome/browser/password_manager/password_change_delegate_impl.cc
+@@ -338,16 +338,6 @@ void PasswordChangeDelegateImpl::StartPa
+ base::BindRepeating(&PasswordChangeDelegateImpl::OnLoginStateCheckResult,
+ weak_ptr_factory_.GetWeakPtr()));
+
+- // This creates FieldClassificationModelHandler and should trigger download of
+- // a local ML model for field classification.
+- // TODO(452883239): Clean this up when model is downloaded on start-up for
+- // everybody.
+- if (base::FeatureList::IsEnabled(
+- password_manager::features::
+- kProactivelyDownloadModelForPasswordChange)) {
+- PasswordFieldClassificationModelHandlerFactory::GetForBrowserContext(
+- originator_->GetBrowserContext());
+- }
+ }
+
+ void PasswordChangeDelegateImpl::OnLoginStateCheckResult(
+--- a/chrome/browser/pdf/pdf_extension_util.cc
++++ b/chrome/browser/pdf/pdf_extension_util.cc
+@@ -128,7 +128,6 @@ base::DictValue GetPdfViewerStrings() {
+ {"rotationStateLabel90", IDS_PDF_ROTATION_STATE_LABEL_90},
+ {"rotationStateLabel180", IDS_PDF_ROTATION_STATE_LABEL_180},
+ {"rotationStateLabel270", IDS_PDF_ROTATION_STATE_LABEL_270},
+- {"searchifyInProgress", IDS_PDF_SEARCHIFY_IN_PROGRESS},
+ {"sidebarLabel", IDS_PDF_SIDEBAR_LABEL},
+ {"thumbnailPageAriaLabel", IDS_PDF_THUMBNAIL_PAGE_ARIA_LABEL},
+ {"tooltipAttachments", IDS_PDF_TOOLTIP_ATTACHMENTS},
+--- a/chrome/browser/permissions/BUILD.gn
++++ b/chrome/browser/permissions/BUILD.gn
+@@ -43,12 +43,6 @@ source_set("permissions") {
+ "prediction_service/language_detection_observer.h",
+ "prediction_service/passage_embedder_delegate.cc",
+ "prediction_service/passage_embedder_delegate.h",
+- "prediction_service/permissions_ai_ui_selector.cc",
+- "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_service_factory.cc",
+ "prediction_service/prediction_service_factory.h",
+ "prediction_service/prediction_service_request.cc",
+--- a/chrome/browser/permissions/chrome_permissions_client.cc
++++ b/chrome/browser/permissions/chrome_permissions_client.cc
+@@ -29,7 +29,6 @@
+ #include "chrome/browser/permissions/permission_actions_history_factory.h"
+ #include "chrome/browser/permissions/permission_decision_auto_blocker_factory.h"
+ #include "chrome/browser/permissions/permission_revocation_request.h"
+-#include "chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.h"
+ #include "chrome/browser/permissions/pref_based_quiet_permission_ui_selector.h"
+ #include "chrome/browser/permissions/quiet_notification_permission_ui_config.h"
+ #include "chrome/browser/permissions/system/system_permission_settings.h"
+@@ -475,8 +474,6 @@ ChromePermissionsClient::CreatePermissio
+ #endif
+ selectors.emplace_back(std::make_unique<PrefBasedQuietPermissionUiSelector>(
+ Profile::FromBrowserContext(browser_context)));
+- selectors.emplace_back(std::make_unique<PermissionsAiUiSelector>(
+- Profile::FromBrowserContext(browser_context)));
+ return selectors;
+ }
+
+@@ -498,8 +495,6 @@ void ChromePermissionsClient::OnPromptRe
+
+ Profile* profile =
+ Profile::FromBrowserContext(web_contents->GetBrowserContext());
+- PermissionActionsHistoryFactory::GetForProfile(profile)->RecordAction(
+- action, request_type, prompt_disposition);
+
+ if (request_type == permissions::RequestType::kNotifications) {
+ if (action == permissions::PermissionAction::GRANTED &&
+--- a/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc
++++ b/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc
+@@ -26,18 +26,6 @@ PassageEmbedderDelegate::PassageEmbedder
+ : profile_(profile) {}
+
+ Embedder* PassageEmbedderDelegate::GetPassageEmbedder() {
+- if (auto* prediction_model_handler_provider =
+- PredictionModelHandlerProviderFactory::GetForBrowserContext(
+- profile_)) {
+- bool is_ready = prediction_model_handler_provider->IsPassageEmbedderReady();
+- PermissionUmaUtil::RecordPassageEmbedderMetadataValid(is_ready);
+- if (!is_ready) {
+- VLOG(1) << "[PermissionsAIv4] "
+- "PassageEmbedderDelegate::GetPassageEmbedder is not ready.";
+- return nullptr;
+- }
+- return prediction_model_handler_provider->GetPassageEmbedder();
+- }
+ PermissionUmaUtil::RecordPassageEmbedderMetadataValid(false);
+ return nullptr;
+ }
+--- a/chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.cc
++++ b/chrome/browser/permissions/prediction_service/permissions_ai_ui_selector.cc
+@@ -797,7 +797,7 @@ void PermissionsAiUiSelector::ExecuteOnD
+ ModelExecutionData model_data) {
+ VLOG(1) << "[PermissionsAI] ExecuteOnDeviceAivXModel";
+ PredictionModelHandlerProvider* prediction_model_handler_provider =
+- PredictionModelHandlerProviderFactory::GetForBrowserContext(profile_);
++ nullptr;
+ if (prediction_model_handler_provider) {
+ permissions::RequestType request_type =
+ model_data.request_metadata.request_type;
+--- a/chrome/browser/prefs/BUILD.gn
++++ b/chrome/browser/prefs/BUILD.gn
+@@ -339,7 +339,6 @@ source_set("impl") {
+ "//chrome/browser/actor/ui",
+ "//chrome/browser/desktop_to_mobile_promos:utils",
+ "//chrome/browser/device_identity",
+- "//chrome/browser/screen_ai:prefs",
+ "//chrome/browser/search_engine_choice",
+ "//chrome/browser/search_engines",
+ "//chrome/browser/sharing_hub",
+--- a/chrome/browser/prefs/browser_prefs.cc
++++ b/chrome/browser/prefs/browser_prefs.cc
+@@ -1605,9 +1605,6 @@ void RegisterLocalState(PrefRegistrySimp
+ DeviceOAuth2TokenStoreDesktop::RegisterPrefs(registry);
+ #endif
+
+-#if !BUILDFLAG(IS_ANDROID)
+- screen_ai::RegisterLocalStatePrefs(registry);
+-#endif // !BUILDFLAG(IS_ANDROID)
+
+ #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_ANDROID)
+ PlatformAuthPolicyObserver::RegisterPrefs(registry);
+--- a/chrome/browser/profiles/BUILD.gn
++++ b/chrome/browser/profiles/BUILD.gn
+@@ -525,7 +525,6 @@ source_set("profiles_extra_parts_impl")
+ } else {
+ deps += [
+ "//chrome/browser/accessibility/phrase_segmentation",
+- "//chrome/browser/accessibility/tree_fixing:service",
+ "//chrome/browser/accessibility_annotator/content_annotator",
+ "//chrome/browser/apps/app_service",
+ "//chrome/browser/autofill",
+@@ -540,7 +539,6 @@ source_set("profiles_extra_parts_impl")
+ "//chrome/browser/private_ai",
+ "//chrome/browser/profile_resetter",
+ "//chrome/browser/record_replay",
+- "//chrome/browser/screen_ai:screen_ai_service_router_factory",
+ "//chrome/browser/search",
+ "//chrome/browser/search_engine_choice",
+ "//chrome/browser/sharing_hub",
+--- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
++++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
+@@ -129,7 +129,6 @@
+ #include "chrome/browser/metrics/variations/google_groups_manager_factory.h"
+ #include "chrome/browser/multistep_filter/core/multistep_filter_service_factory.h"
+ #include "chrome/browser/navigation_predictor/navigation_predictor_keyed_service_factory.h"
+-#include "chrome/browser/navigation_predictor/preloading_model_keyed_service_factory.h"
+ #include "chrome/browser/navigation_predictor/search_engine_preconnector.h"
+ #include "chrome/browser/navigation_predictor/search_engine_preconnector_keyed_service_factory.h"
+ #include "chrome/browser/net/dns_probe_service_factory.h"
+@@ -365,7 +364,6 @@
+ #include "chrome/browser/private_ai/private_ai_service_factory.h"
+ #include "chrome/browser/profile_resetter/reset_report_uploader_factory.h"
+ #include "chrome/browser/record_replay/recording_data_manager_factory.h"
+-#include "chrome/browser/screen_ai/screen_ai_service_router_factory.h"
+ #include "chrome/browser/search/instant_service_factory.h"
+ #include "chrome/browser/search_engine_choice/search_engine_choice_dialog_service_factory.h"
+ #include "chrome/browser/speech/speech_recognition_client_browser_interface_factory.h"
+@@ -1122,7 +1120,6 @@ void ChromeBrowserMainExtraPartsProfiles
+ #if BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI)
+ net::ServerCertificateDatabaseServiceFactory::GetInstance();
+ #endif
+- PreloadingModelKeyedServiceFactory::GetInstance();
+ #if BUILDFLAG(ENABLE_DICE_SUPPORT)
+ HistorySyncOptinServiceFactory::GetInstance();
+ ProfileManagementDisclaimerServiceFactory::GetInstance();
+@@ -1169,9 +1166,6 @@ void ChromeBrowserMainExtraPartsProfiles
+ OneGoogleBarServiceFactory::GetInstance();
+ OneTimePermissionsTrackerFactory::GetInstance();
+ #endif
+- if (optimization_guide::ShouldStartModelValidator()) {
+- optimization_guide::ModelValidatorKeyedServiceFactory::GetInstance();
+- }
+ OptimizationGuideGlobalStateHolderKeyedServiceFactory::GetInstance();
+ OptimizationGuideKeyedServiceFactory::GetInstance();
+ OriginKeyedPermissionActionServiceFactory::GetInstance();
+@@ -1256,7 +1250,6 @@ void ChromeBrowserMainExtraPartsProfiles
+ #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
+ policy::UserPolicyOidcSigninServiceFactory::GetInstance();
+ #endif
+- PredictionModelHandlerProviderFactory::GetInstance();
+ PredictionServiceFactory::GetInstance();
+ predictors::AutocompleteActionPredictorFactory::GetInstance();
+ predictors::LoadingPredictorFactory::GetInstance();
+@@ -1333,10 +1326,6 @@ void ChromeBrowserMainExtraPartsProfiles
+ SafetyHubMenuNotificationServiceFactory::GetInstance();
+ #if !BUILDFLAG(IS_ANDROID)
+ SafetyHubHatsServiceFactory::GetInstance();
+- if (features::IsMainNodeAnnotationsEnabled()) {
+- screen_ai::AXMainNodeAnnotatorControllerFactory::GetInstance();
+- }
+- screen_ai::ScreenAIServiceRouterFactory::EnsureFactoryBuilt();
+ #endif
+ #if BUILDFLAG(IS_CHROMEOS)
+ if (ash::features::IsScannerEnabled()) {
+@@ -1450,7 +1439,6 @@ void ChromeBrowserMainExtraPartsProfiles
+ TopSitesFactory::GetInstance();
+ translate::TranslateRankerFactory::GetInstance();
+ #if !BUILDFLAG(IS_ANDROID)
+- tree_fixing::AXTreeFixingServicesRouterFactory::GetInstance();
+ TriggeredProfileResetterFactory::GetInstance();
+ #endif
+ #if !BUILDFLAG(IS_CHROMEOS) && !BUILDFLAG(IS_ANDROID)
+--- a/chrome/browser/profiles/off_the_record_profile_impl.cc
++++ b/chrome/browser/profiles/off_the_record_profile_impl.cc
+@@ -220,11 +220,6 @@ void OffTheRecordProfileImpl::Init() {
+ // AccessibilityLabelsService has a default prefs behavior in incognito.
+ AccessibilityLabelsService::InitOffTheRecordPrefs(this);
+
+-#if !BUILDFLAG(IS_ANDROID)
+- // To avoid using any server-side tree fixing service, it is disabled in
+- // Incognito profiles.
+- tree_fixing::InitOffTheRecordPrefs(this);
+-#endif // !BUILDFLAG(IS_ANDROID)
+
+ // The ad service might not be available for some irregular profiles, like the
+ // System Profile.
+--- a/chrome/browser/profiles/profile_impl.cc
++++ b/chrome/browser/profiles/profile_impl.cc
+@@ -859,11 +859,6 @@ void ProfileImpl::DoFinalInit(CreateMode
+ // The password settings service needs to start listening to settings
+ // changes from Google Mobile Services, as early as possible.
+ PasswordManagerSettingsServiceFactory::GetForProfile(this);
+-#else
+-
+- if (features::IsMainNodeAnnotationsEnabled()) {
+- screen_ai::AXMainNodeAnnotatorControllerFactory::GetForProfile(this);
+- }
+ #endif // BUILDFLAG(IS_ANDROID)
+
+ // The announcement notification service might not be available for some
+--- a/chrome/browser/profiles/profile_manager.cc
++++ b/chrome/browser/profiles/profile_manager.cc
+@@ -51,7 +51,6 @@
+ #include "chrome/browser/buildflags.h"
+ #include "chrome/browser/lifetime/application_lifetime.h"
+ #include "chrome/browser/navigation_predictor/navigation_predictor_keyed_service_factory.h"
+-#include "chrome/browser/navigation_predictor/preloading_model_keyed_service_factory.h"
+ #include "chrome/browser/prefs/incognito_mode_prefs.h"
+ #include "chrome/browser/profiles/delete_profile_helper.h"
+ #include "chrome/browser/profiles/keep_alive/profile_keep_alive_types.h"
+@@ -1625,9 +1624,6 @@ void ProfileManager::DoFinalInitForServi
+ // Ensure NavigationPredictorKeyedService is started.
+ NavigationPredictorKeyedServiceFactory::GetForProfile(profile);
+
+- // Ensure PreloadingModelKeyedService is started.
+- PreloadingModelKeyedServiceFactory::GetForProfile(profile);
+-
+ IdentityManagerFactory::GetForProfile(profile)->OnNetworkInitialized();
+ AccountReconcilorFactory::GetForProfile(profile);
+ #if BUILDFLAG(IS_ANDROID)
+--- a/chrome/browser/resources/pdf/pdf_viewer.html
++++ b/chrome/browser/resources/pdf/pdf_viewer.html
+@@ -106,10 +106,6 @@ import {AnnotationMode} from './constant
+ </cr-page-selector>
+ ` : ''}
+ </if>
+- <cr-toast id="searchifyProgress">
+- <div class="spinner"></div>
+- <span>$i18n{searchifyInProgress}</span>
+- </cr-toast>
+ </div>
+
+ ${this.showErrorDialog ? html`<viewer-error-dialog id="error-dialog">
+--- a/chrome/browser/skills/BUILD.gn
++++ b/chrome/browser/skills/BUILD.gn
+@@ -59,13 +59,9 @@ source_set("public") {
+ source_set("ui") {
+ sources = [
+ "skills_dialog_launcher.cc",
+- "skills_update_observer.cc",
+- "skills_update_observer.h",
+ ]
+ if (!is_android) {
+ sources += [
+- "skills_ui_tab_controller.cc",
+- "skills_ui_tab_controller.h",
+ "skills_ui_window_controller.cc",
+ ]
+ }
+--- a/chrome/browser/ui/BUILD.gn
++++ b/chrome/browser/ui/BUILD.gn
+@@ -1595,8 +1595,6 @@ static_library("ui") {
+ "//chrome/browser/regional_capabilities",
+ "//chrome/browser/safe_browsing",
+ "//chrome/browser/safe_browsing:advanced_protection",
+- "//chrome/browser/screen_ai:screen_ai_install_state",
+- "//chrome/browser/screen_ai:screen_ai_service_router_factory",
+ "//chrome/browser/smart_card",
+ "//chrome/browser/tab_group_sync:utils",
+ "//chrome/browser/themes",
+@@ -2414,7 +2412,6 @@ static_library("ui") {
+ "//chrome/browser/policy:onc",
+ "//chrome/browser/policy:system_features_disable_list",
+ "//chrome/browser/push_notification",
+- "//chrome/browser/screen_ai/public:optical_character_recognizer",
+ "//chrome/browser/ui/ash/app_access",
+ "//chrome/browser/ui/ash/arc",
+ "//chrome/browser/ui/ash/arc/arc_app_dialog_view",
+@@ -4912,7 +4909,6 @@ static_library("ui") {
+ "//chrome/browser/ui/waap:waap_utils",
+ "//chrome/browser/ui/webauthn:impl",
+ "//chrome/browser/ui/webui/app_service_internals",
+- "//chrome/browser/ui/webui/autofill_ml_internals",
+ "//chrome/browser/ui/webui/content_annotator_internals",
+ "//chrome/browser/ui/webui/side_panel/customize_chrome",
+ "//chrome/browser/ui/window_name_prompt",
+--- a/chrome/browser/ui/pdf/BUILD.gn
++++ b/chrome/browser/ui/pdf/BUILD.gn
+@@ -6,7 +6,6 @@ import("//pdf/features.gni")
+ import("//services/screen_ai/buildflags/features.gni")
+
+ assert(enable_pdf)
+-assert(enable_screen_ai_service)
+
+ source_set("pdf") {
+ sources = [
+@@ -17,7 +16,6 @@ source_set("pdf") {
+ "//chrome/browser/download",
+ "//chrome/browser/glic",
+ "//chrome/browser/pdf",
+- "//chrome/browser/screen_ai:screen_ai_install_state",
+ "//chrome/browser/ui/tab_contents",
+ "//chrome/browser/ui/user_education",
+ "//chrome/common",
+--- a/chrome/browser/ui/pdf/chrome_pdf_document_helper_client.cc
++++ b/chrome/browser/ui/pdf/chrome_pdf_document_helper_client.cc
+@@ -147,22 +147,3 @@ void ChromePDFDocumentHelperClient::SetP
+ }
+ }
+
+-void ChromePDFDocumentHelperClient::OnSearchifyStarted(
+- content::RenderFrameHost* render_frame_host) {
+- // Show the promo only when ScreenAI component is available and OCR can be
+- // done.
+- if (!screen_ai::ScreenAIInstallState::GetInstance()->IsComponentAvailable()) {
+- return;
+- }
+- content::WebContents* web_contents = GetWebContentsToUse(render_frame_host);
+- if (!MaybeShowFeaturePromo(feature_engagement::kIPHPdfSearchifyFeature,
+- web_contents)) {
+- return;
+- }
+- auto* const tab = tabs::TabInterface::MaybeGetFromContents(web_contents);
+- if (!tab) {
+- return;
+- }
+- tab_subscriptions_.push_back(tab->RegisterWillDeactivate(
+- base::BindRepeating(&MaybeHideSearchifyFeaturePromo)));
+-}
+--- a/chrome/browser/ui/pdf/chrome_pdf_document_helper_client.h
++++ b/chrome/browser/ui/pdf/chrome_pdf_document_helper_client.h
+@@ -27,7 +27,6 @@ class ChromePDFDocumentHelperClient : pu
+ void OnSaveURL() override;
+ void SetPluginCanSave(content::RenderFrameHost* render_frame_host,
+ bool can_save) override;
+- void OnSearchifyStarted(content::RenderFrameHost* render_frame_host) override;
+
+ // Holds subscriptions for TabInterface callbacks.
+ std::vector<base::CallbackListSubscription> tab_subscriptions_;
+--- a/chrome/browser/ui/tabs/tab_features.cc
++++ b/chrome/browser/ui/tabs/tab_features.cc
+@@ -394,11 +394,6 @@ void TabFeatures::Init(TabInterface& tab
+ actor_tab_data_ =
+ GetUserDataFactory().CreateInstance<actor::ActorTabData>(tab, &tab);
+
+- if (base::FeatureList::IsEnabled(features::kSkillsEnabled)) {
+- skills_ui_tab_controller_ =
+- GetUserDataFactory().CreateInstance<skills::SkillsUiTabController>(
+- tab, tab);
+- }
+
+ if (accessibility_annotator::
+ ContentAnnotatorService* content_annotator_service =
+@@ -574,10 +569,6 @@ void TabFeatures::Init(TabInterface& tab
+ #endif
+
+ #if !BUILDFLAG(IS_ANDROID)
+- if (base::FeatureList::IsEnabled(features::kSkillsEnabled)) {
+- skills_update_observer_ =
+- std::make_unique<skills::SkillsUpdateObserver>(tab);
+- }
+ if (base::FeatureList::IsEnabled(features::kIndigo)) {
+ indigo_page_action_controller_ =
+ std::make_unique<indigo::IndigoPageActionController>(
+--- a/chrome/browser/ui/views/user_education/browser_user_education_service.cc
++++ b/chrome/browser/ui/views/user_education/browser_user_education_service.cc
+@@ -907,40 +907,6 @@ void MaybeRegisterChromeFeaturePromos(
+ "Triggered when the PDF Viewer opens.")));
+ #endif
+
+- // kIPHPdfSearchifyFeature:
+- registry.RegisterFeature(std::move(
+- FeaturePromoSpecification::CreateForToastPromo(
+- feature_engagement::kIPHPdfSearchifyFeature,
+- kBrowserDialogAnchorElementId, IDS_PDF_SEARCHIFY_IPH_BODY,
+- IDS_PDF_SEARCHIFY_IPH_BODY_SCREEN_READER,
+- FeaturePromoSpecification::AcceleratorInfo())
+- .SetBubbleArrow(HelpBubbleArrow::kNone)
+- .SetBubbleTitleText(IDS_PDF_SEARCHIFY_IPH_TITLE)
+- .SetMetadata(132, "rhalavati@chromium.org",
+- "Triggered once when user opens a PDF which gets OCRed.")
+- .SetAnchorElementFilter(base::BindRepeating(
+- [](const ui::ElementTracker::ElementList& elements)
+- -> ui::TrackedElement* {
+- if (elements.empty()) {
+- return nullptr;
+- }
+- // Ensure a searchified PDF is visible before showing the IPH.
+- auto* const browser_view =
+- views::ElementTrackerViews::GetInstance()
+- ->GetFirstMatchingViewAs<BrowserView>(
+- kBrowserViewElementId, elements[0]->context());
+- std::vector<ContentsWebView*> contents_web_views =
+- browser_view->GetAllVisibleContentsWebViews();
+- for (auto* contents_web_view : contents_web_views) {
+- auto* pdf_doc_helper =
+- pdf::PDFDocumentHelper::MaybeGetForWebContents(
+- contents_web_view->GetWebContents());
+- if (pdf_doc_helper && pdf_doc_helper->SearchifyStarted()) {
+- return elements[0];
+- }
+- }
+- return nullptr;
+- }))));
+
+ // kIPHLensOverlayFeature:
+ registry.RegisterFeature(std::move(
+--- a/chrome/browser/ui/webui/BUILD.gn
++++ b/chrome/browser/ui/webui/BUILD.gn
+@@ -78,7 +78,6 @@ source_set("configs") {
+ "//chrome/browser/glic/selection",
+ "//chrome/browser/ui/webui/access_code_cast",
+ "//chrome/browser/ui/webui/app_service_internals",
+- "//chrome/browser/ui/webui/autofill_ml_internals",
+ "//chrome/browser/ui/webui/color_pipeline_internals",
+ "//chrome/browser/ui/webui/content_annotator_internals",
+ "//chrome/browser/ui/webui/data_sharing",
+--- a/chrome/browser/ui/webui/chrome_web_ui_configs.cc
++++ b/chrome/browser/ui/webui/chrome_web_ui_configs.cc
+@@ -324,7 +324,6 @@ void RegisterChromeWebUIConfigs() {
+ content_annotator_internals::ContentAnnotatorInternalsUIConfig>());
+ map.AddWebUIConfig(std::make_unique<actor::ui::ActorOverlayUIConfig>());
+ map.AddWebUIConfig(std::make_unique<AppServiceInternalsUIConfig>());
+- map.AddWebUIConfig(std::make_unique<AutofillMlInternalsUIConfig>());
+ map.AddWebUIConfig(std::make_unique<media_router::AccessCodeCastUIConfig>());
+ map.AddWebUIConfig(std::make_unique<BookmarksSidePanelUIConfig>());
+ map.AddWebUIConfig(std::make_unique<BookmarksUIConfig>());
+--- a/chrome/browser/ui/webui/settings/accessibility_main_handler.cc
++++ b/chrome/browser/ui/webui/settings/accessibility_main_handler.cc
+@@ -35,11 +35,6 @@ void AccessibilityMainHandler::RegisterM
+ base::BindRepeating(
+ &AccessibilityMainHandler::HandleCheckAccessibilityImageLabels,
+ base::Unretained(this)));
+- web_ui()->RegisterMessageCallback(
+- "getScreenAiInstallState",
+- base::BindRepeating(
+- &AccessibilityMainHandler::HandleGetScreenAIInstallState,
+- base::Unretained(this)));
+ }
+
+ void AccessibilityMainHandler::OnJavascriptAllowed() {
+@@ -50,11 +45,6 @@ void AccessibilityMainHandler::OnJavascr
+ base::Unretained(this)));
+ #endif // BUILDFLAG(IS_CHROMEOS)
+
+- if (features::IsMainNodeAnnotationsEnabled()) {
+- CHECK(!component_ready_observer_.IsObserving());
+- component_ready_observer_.Observe(
+- screen_ai::ScreenAIInstallState::GetInstance());
+- }
+ }
+
+ void AccessibilityMainHandler::OnJavascriptDisallowed() {
+@@ -62,35 +52,6 @@ void AccessibilityMainHandler::OnJavascr
+ accessibility_subscription_ = {};
+ #endif // BUILDFLAG(IS_CHROMEOS)
+
+- if (features::IsMainNodeAnnotationsEnabled()) {
+- component_ready_observer_.Reset();
+- }
+-}
+-
+-void AccessibilityMainHandler::DownloadProgressChanged(double progress) {
+- CHECK_GE(progress, 0.0);
+- CHECK_LE(progress, 1.0);
+- const int progress_num = progress * 100;
+- FireWebUIListener("screen-ai-downloading-progress-changed",
+- base::Value(progress_num));
+-}
+-
+-void AccessibilityMainHandler::StateChanged(
+- screen_ai::ScreenAIInstallState::State state) {
+- base::Value state_value = base::Value(static_cast<int>(state));
+- FireWebUIListener("screen-ai-state-changed", state_value);
+-}
+-
+-void AccessibilityMainHandler::HandleGetScreenAIInstallState(
+- const base::ListValue& args) {
+- CHECK_EQ(1U, args.size());
+- const base::Value& callback_id = args[0];
+- AllowJavascript();
+- // Get the current install state and send it back to a UI callback.
+- screen_ai::ScreenAIInstallState::State current_install_state =
+- screen_ai::ScreenAIInstallState::GetInstance()->get_state();
+- ResolveJavascriptCallback(
+- callback_id, base::Value(static_cast<int>(current_install_state)));
+ }
+
+ void AccessibilityMainHandler::HandleGetScreenReaderState(
+--- a/chrome/browser/ui/webui/settings/accessibility_main_handler.h
++++ b/chrome/browser/ui/webui/settings/accessibility_main_handler.h
+@@ -19,8 +19,7 @@ namespace settings {
+ // Settings handler for the main accessibility settings page,
+ // chrome://settings/accessibility.
+ class AccessibilityMainHandler
+- : public ::settings::SettingsPageUIHandler,
+- public screen_ai::ScreenAIInstallState::Observer {
++ : public ::settings::SettingsPageUIHandler {
+ public:
+ AccessibilityMainHandler();
+ ~AccessibilityMainHandler() override;
+@@ -32,9 +31,6 @@ class AccessibilityMainHandler
+ void OnJavascriptAllowed() override;
+ void OnJavascriptDisallowed() override;
+
+- // screen_ai::ScreenAIInstallState::Observer:
+- void DownloadProgressChanged(double progress) override;
+- void StateChanged(screen_ai::ScreenAIInstallState::State state) override;
+
+ private:
+ void HandleGetScreenReaderState(const base::ListValue& args);
+@@ -51,9 +47,6 @@ class AccessibilityMainHandler
+ base::CallbackListSubscription accessibility_subscription_;
+ #endif // BUILDFLAG(IS_CHROMEOS)
+
+- base::ScopedObservation<screen_ai::ScreenAIInstallState,
+- screen_ai::ScreenAIInstallState::Observer>
+- component_ready_observer_{this};
+ };
+
+ } // namespace settings
+--- a/chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_page_handler.cc
++++ b/chrome/browser/ui/webui/side_panel/read_anything/read_anything_untrusted_page_handler.cc
+@@ -24,8 +24,6 @@
+ #include "chrome/browser/dom_distiller/dom_distiller_service_factory.h"
+ #include "chrome/browser/language/language_model_manager_factory.h"
+ #include "chrome/browser/profiles/profile.h"
+-#include "chrome/browser/screen_ai/screen_ai_service_router.h"
+-#include "chrome/browser/screen_ai/screen_ai_service_router_factory.h"
+ #include "chrome/browser/speech/extension_api/tts_engine_extension_api.h"
+ #include "chrome/browser/translate/chrome_translate_client.h"
+ #include "chrome/browser/ui/browser.h"
+@@ -430,14 +428,6 @@ ReadAnythingUntrustedPageHandler::ReadAn
+ prefs_lang = language::ExtractBaseLanguage(prefs_lang);
+ SetDefaultLanguageCode(prefs_lang);
+
+- if (use_screen_ai_service_) {
+- screen_ai::ScreenAIServiceRouterFactory::GetForBrowserContext(profile_)
+- ->GetServiceStateAsync(
+- screen_ai::ScreenAIServiceRouter::Service::kMainContentExtraction,
+- base::BindOnce(
+- &ReadAnythingUntrustedPageHandler::OnScreenAIServiceInitialized,
+- weak_factory_.GetWeakPtr()));
+- }
+
+ if (features::IsReadAnythingWithReadabilityEnabled() &&
+ !features::IsReadAnythingReadAloudPhraseHighlightingEnabled()) {
+--- a/chrome/renderer/BUILD.gn
++++ b/chrome/renderer/BUILD.gn
+@@ -355,8 +355,6 @@ static_library("renderer") {
+ ]
+ } else {
+ sources += [
+- "accessibility/ax_tree_distiller.cc",
+- "accessibility/ax_tree_distiller.h",
+ "accessibility/phrase_segmentation/base_phrase_segmenter.cc",
+ "accessibility/phrase_segmentation/base_phrase_segmenter.h",
+ "accessibility/phrase_segmentation/dependency_parser_model.cc",
+@@ -373,16 +371,6 @@ static_library("renderer") {
+ "accessibility/phrase_segmentation/tokenized_sentence.h",
+ "accessibility/phrase_segmentation/tokenizer.cc",
+ "accessibility/phrase_segmentation/tokenizer.h",
+- "accessibility/read_anything/read_aloud_app_model.cc",
+- "accessibility/read_anything/read_aloud_app_model.h",
+- "accessibility/read_anything/read_aloud_traversal_utils.cc",
+- "accessibility/read_anything/read_aloud_traversal_utils.h",
+- "accessibility/read_anything/read_anything_app_controller.cc",
+- "accessibility/read_anything/read_anything_app_controller.h",
+- "accessibility/read_anything/read_anything_app_model.cc",
+- "accessibility/read_anything/read_anything_app_model.h",
+- "accessibility/read_anything/read_anything_node_utils.cc",
+- "accessibility/read_anything/read_anything_node_utils.h",
+ "media/chrome_speech_recognition_client.cc",
+ "media/chrome_speech_recognition_client.h",
+ "searchbox/searchbox.cc",
+@@ -399,7 +387,6 @@ static_library("renderer") {
+ "//components/crx_file",
+ "//components/trusted_vault",
+ "//services/screen_ai/buildflags",
+- "//services/screen_ai/public/mojom",
+ "//services/strings",
+ "//third_party/re2",
+ "//third_party/tensorflow-text",
+--- a/chrome/renderer/chrome_render_frame_observer.cc
++++ b/chrome/renderer/chrome_render_frame_observer.cc
+@@ -77,7 +77,6 @@
+ #include "url/gurl.h"
+
+ #if !BUILDFLAG(IS_ANDROID)
+-#include "chrome/renderer/accessibility/read_anything/read_anything_app_controller.h"
+ #include "chrome/renderer/searchbox/searchbox_extension.h"
+ #endif // !BUILDFLAG(IS_ANDROID)
+
+@@ -340,14 +339,6 @@ void ChromeRenderFrameObserver::DidClear
+ SearchBoxExtension::Install(render_frame()->GetWebFrame());
+ }
+
+- // Install ReadAnythingAppController on render frames with the Read Anything
+- // url, which is chrome-untrusted. ReadAnythingAppController installs v8
+- // bindings in the chrome.readingMode namespace which are consumed by
+- // read_anything/app.ts, the resource of the Read Anything WebUI.
+- if (render_frame()->GetWebFrame()->GetDocument().Url() ==
+- chrome::kChromeUIUntrustedReadAnythingSidePanelURL) {
+- ReadAnythingAppController::Install(render_frame());
+- }
+ #endif // !BUILDFLAG(IS_ANDROID)
+ #if BUILDFLAG(ENABLE_GUEST_VIEW) && !BUILDFLAG(ENABLE_EXTENSIONS_CORE)
+ guest_view::SlimWebViewBindings::MaybeInstall(*render_frame());
+--- a/chrome/test/BUILD.gn
++++ b/chrome/test/BUILD.gn
+@@ -2736,9 +2736,6 @@ if (!is_android) {
+ "//chrome/browser/resource_coordinator:mojo_bindings",
+ "//chrome/browser/safe_browsing:advanced_protection",
+ "//chrome/browser/safe_browsing:verdict_cache_manager_factory",
+- "//chrome/browser/screen_ai:screen_ai_install_state",
+- "//chrome/browser/screen_ai:screen_ai_service_router_factory",
+- "//chrome/browser/screen_ai/public:test_support",
+ "//chrome/browser/search",
+ "//chrome/browser/search_engines",
+ "//chrome/browser/segmentation_platform:test_utils",
+@@ -3228,8 +3225,6 @@ if (!is_android) {
+ "//services/preferences/public/cpp",
+ "//services/preferences/public/cpp/tracked",
+ "//services/preferences/tracked:features",
+- "//services/screen_ai/public/cpp:utilities",
+- "//services/screen_ai/public/mojom",
+ "//services/service_manager/public/cpp",
+ "//services/strings",
+ "//services/test/echo/public/mojom",
+@@ -8769,7 +8764,6 @@ test("unit_tests") {
+ #
+ # TODO(crbug.com/417513088): Maybe merge with the non-android `deps` declaration above?
+ deps += [
+- "../browser/screen_ai:screen_ai_install_state",
+ "//chrome:packed_resources",
+ "//chrome/browser/apps:icon_standardizer",
+ "//chrome/browser/apps/app_service",
+@@ -8806,7 +8800,6 @@ test("unit_tests") {
+ "//chrome/browser/profile_resetter:fake_profile_resetter",
+ "//chrome/browser/profile_resetter:unit_tests",
+ "//chrome/browser/resources/new_tab_page_instant:resources_grit",
+- "//chrome/browser/screen_ai:unit_tests",
+ "//chrome/browser/search/background",
+ "//chrome/browser/search/background:constants",
+ "//chrome/browser/search_engine_choice:unit_tests",
+--- a/chrome/utility/BUILD.gn
++++ b/chrome/utility/BUILD.gn
+@@ -147,7 +147,6 @@ static_library("utility") {
+ "//components/user_data_importer/content",
+ "//components/user_data_importer/utility:bookmarks",
+ "//services/proxy_resolver:lib",
+- "//services/screen_ai",
+ ]
+ }
+
+--- a/chrome/utility/services.cc
++++ b/chrome/utility/services.cc
+@@ -62,8 +62,6 @@
+ #include "components/private_ai/oak_session_service/oak_session_service.h" // nogncheck
+ #include "services/proxy_resolver/proxy_resolver_factory_impl.h" // nogncheck
+ #include "services/proxy_resolver/public/mojom/proxy_resolver.mojom.h"
+-#include "services/screen_ai/public/mojom/screen_ai_factory.mojom.h" // nogncheck
+-#include "services/screen_ai/screen_ai_service_impl.h" // nogncheck
+ #endif // !BUILDFLAG(IS_ANDROID)
+
+ #if BUILDFLAG(ENABLE_BROWSER_SPEECH_SERVICE)
+@@ -266,12 +264,6 @@ auto RunSpeechRecognitionService(
+ }
+ #endif // !BUILDFLAG(ENABLE_BROWSER_SPEECH_SERVICE)
+
+-#if !BUILDFLAG(IS_ANDROID)
+-auto RunScreenAIServiceFactory(
+- mojo::PendingReceiver<screen_ai::mojom::ScreenAIServiceFactory> receiver) {
+- return std::make_unique<screen_ai::ScreenAIService>(std::move(receiver));
+-}
+-#endif
+
+ #if (BUILDFLAG(SAFE_BROWSING_DOWNLOAD_PROTECTION) && \
+ !BUILDFLAG(IS_ANDROID)) || \
+@@ -451,7 +443,6 @@ void RegisterMainThreadServices(mojo::Se
+ services.Add(RunOakSessionService);
+ services.Add(RunProfileImporter);
+ services.Add(RunMirroringService);
+- services.Add(RunScreenAIServiceFactory);
+ #endif // !BUILDFLAG(IS_ANDROID)
+
+ #if BUILDFLAG(ENABLE_BROWSER_SPEECH_SERVICE)
+--- a/components/BUILD.gn
++++ b/components/BUILD.gn
+@@ -639,7 +639,6 @@ 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/privacy_sandbox/privacy_sandbox_attestations:unit_tests",
+ "//components/safety_check:unit_tests",
+ "//components/security_interstitials/content:unit_tests",
+--- a/components/autofill/core/browser/autofill_field.cc
++++ b/components/autofill/core/browser/autofill_field.cc
+@@ -25,7 +25,6 @@
+ #include "components/autofill/core/browser/field_type_utils.h"
+ #include "components/autofill/core/browser/field_types.h"
+ #include "components/autofill/core/browser/heuristic_source.h"
+-#include "components/autofill/core/browser/ml_model/field_classification_model_handler.h"
+ #include "components/autofill/core/browser/proto/api_v1.pb.h"
+ #include "components/autofill/core/browser/proto/server.pb.h"
+ #include "components/autofill/core/common/autofill_constants.h"
+--- a/components/autofill/core/browser/foundations/autofill_manager.cc
++++ b/components/autofill/core/browser/foundations/autofill_manager.cc
+@@ -137,8 +137,6 @@ struct AutofillManager::AsyncContext {
+
+ std::vector<FormData> forms;
+ std::vector<RegexPredictions> regex_predictions;
+- std::vector<ModelPredictions> autofill_predictions;
+- std::vector<ModelPredictions> password_manager_predictions;
+ GeoIpCountryCode country_code;
+ LanguageCode current_page_language;
+ std::unique_ptr<BufferingLogManager> log_manager;
+@@ -833,10 +831,8 @@ void AutofillManager::RunMlModels(
+ }));
+ switch (source) {
+ case HeuristicSource::kAutofillMachineLearning:
+- context.autofill_predictions = std::move(model_predictions);
+ break;
+ case HeuristicSource::kPasswordManagerMachineLearning:
+- context.password_manager_predictions = std::move(model_predictions);
+ break;
+ case HeuristicSource::kRegexes:
+ NOTREACHED();
+@@ -1043,12 +1039,6 @@ void AutofillManager::UpdateFormCache(
+
+ auto apply_predictions = [](FormStructure& form_structure,
+ const AsyncContext& context, size_t i) {
+- if (!context.autofill_predictions.empty()) {
+- context.autofill_predictions[i].ApplyTo(form_structure.fields());
+- }
+- if (!context.password_manager_predictions.empty()) {
+- context.password_manager_predictions[i].ApplyTo(form_structure.fields());
+- }
+ if (!context.regex_predictions.empty()) {
+ context.regex_predictions[i].ApplyTo(form_structure.fields());
+ }
+@@ -1166,26 +1156,6 @@ void AutofillManager::LogCurrentFieldTyp
+
+ void AutofillManager::SubscribeToMlModelChanges(
+ FieldClassificationModelHandler& handler) {
+- switch (handler.optimization_target()) {
+- case optimization_guide::proto::OptimizationTarget::
+- OPTIMIZATION_TARGET_AUTOFILL_FIELD_CLASSIFICATION:
+- if (!autofill_model_change_subscription_) {
+- autofill_model_change_subscription_ =
+- handler.RegisterModelChangeCallback(base::BindRepeating(
+- &AutofillManager::ReparseKnownForms, base::Unretained(this)));
+- }
+- break;
+- case optimization_guide::proto::OptimizationTarget::
+- OPTIMIZATION_TARGET_PASSWORD_MANAGER_FORM_CLASSIFICATION:
+- if (!password_manager_model_change_subscription_) {
+- password_manager_model_change_subscription_ =
+- handler.RegisterModelChangeCallback(base::BindRepeating(
+- &AutofillManager::ReparseKnownForms, base::Unretained(this)));
+- }
+- break;
+- default:
+- NOTREACHED();
+- }
+ }
+
+ } // namespace autofill
+--- a/components/page_content_annotations/content/BUILD.gn
++++ b/components/page_content_annotations/content/BUILD.gn
+@@ -57,8 +57,6 @@ source_set("page_embeddings") {
+ sources = [
+ "embeddings_candidate_generator.cc",
+ "embeddings_candidate_generator.h",
+- "page_category_classifier_bridge_impl.cc",
+- "page_category_classifier_bridge_impl.h",
+ "page_embeddings_service.cc",
+ "page_embeddings_service.h",
+ ]
+--- a/components/pdf/renderer/pdf_view_web_plugin_client.h
++++ b/components/pdf/renderer/pdf_view_web_plugin_client.h
+@@ -12,7 +12,6 @@
+ #include "base/memory/weak_ptr.h"
+ #include "mojo/public/cpp/bindings/remote.h"
+ #include "pdf/pdf_view_web_plugin.h"
+-#include "services/screen_ai/public/mojom/screen_ai_service.mojom.h"
+
+ namespace blink {
+ class WebLocalFrame;
+@@ -110,8 +109,6 @@ class PdfViewWebPluginClient : public ch
+
+ raw_ptr<blink::WebPluginContainer> plugin_container_;
+
+- mojo::Remote<screen_ai::mojom::ScreenAIAnnotator> screen_ai_annotator_;
+- base::RepeatingClosure ocr_disconnect_callback_;
+
+ base::WeakPtrFactory<PdfViewWebPluginClient> weak_factory_{this};
+ };
+--- a/services/screen_ai/buildflags/features.gni
++++ b/services/screen_ai/buildflags/features.gni
+@@ -6,14 +6,13 @@ import("//build/config/sanitizers/saniti
+
+ declare_args() {
+ # Screen AI service is only supported on desktop platforms.
+- enable_screen_ai_service = is_linux || is_mac || is_chromeos || is_win
++ enable_screen_ai_service = false
+
+ # Screen AI library is not available for browser tests on ChromeOS. Tast tests
+ # cover library's OCR functionality on ChromeOS.
+ enable_screen_ai_browsertests =
+- is_linux || (is_mac && (target_cpu == "arm64" || target_cpu == "x64")) ||
+- (is_win && (target_cpu == "x64" || target_cpu == "x86"))
++ false
+
+ # Screen AI library is not available for MSAN and UBSAN.
+- use_fake_screen_ai = is_msan || is_ubsan || is_ubsan_vptr || is_ubsan_security
++ use_fake_screen_ai = false
+ }
reply other threads:[~2026-08-07 16:09 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178611894140.1.7924746032902079676.rpms-chromium-44c0f09115c3@fedoraproject.org \
--to=than@redhat.com \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox