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