# Copyright 2025 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//ios/web/public/js_messaging/optimize_ts.gni") source_set("model") { sources = [ "reader_mode_browser_agent.h", "reader_mode_browser_agent.mm", "reader_mode_browser_agent_delegate.h", "reader_mode_browser_agent_observer_bridge.h", "reader_mode_browser_agent_observer_bridge.mm", "reader_mode_content_delegate.h", "reader_mode_content_tab_helper.h", "reader_mode_content_tab_helper.mm", "reader_mode_dependency_bridge.h", "reader_mode_dependency_bridge.mm", "reader_mode_distiller_page.h", "reader_mode_distiller_page.mm", "reader_mode_distiller_viewer.h", "reader_mode_distiller_viewer.mm", "reader_mode_eligibility_decider.h", "reader_mode_eligibility_decider.mm", "reader_mode_font_size_utils.h", "reader_mode_font_size_utils.mm", "reader_mode_infobar_delegate.h", "reader_mode_infobar_delegate.mm", "reader_mode_java_script_feature.h", "reader_mode_java_script_feature.mm", "reader_mode_metrics_helper.h", "reader_mode_metrics_helper.mm", "reader_mode_model.h", "reader_mode_model.mm", "reader_mode_model_factory.h", "reader_mode_model_factory.mm", "reader_mode_panel_item_configuration.h", "reader_mode_panel_item_configuration.mm", "reader_mode_scroll_anchor_java_script_feature.h", "reader_mode_scroll_anchor_java_script_feature.mm", "reader_mode_tab_helper.h", "reader_mode_tab_helper.mm", "reader_mode_tab_helper_observer_bridge.h", "reader_mode_tab_helper_observer_bridge.mm", "reader_mode_web_state_delegate.h", "reader_mode_web_state_delegate.mm", "reader_mode_web_state_utils.h", "reader_mode_web_state_utils.mm", ] deps = [ ":constants", ":features", ":reader_mode_js", ":reader_mode_scroll_anchor_js", "//base", "//components/dom_distiller/core", "//components/dom_distiller/core/proto", "//components/dom_distiller/ios", "//components/feature_engagement/public", "//components/google/core/common", "//components/keyed_service/core", "//components/language/core/browser", "//components/language/ios/browser", "//components/optimization_guide/core", "//components/prefs", "//components/strings", "//components/ukm/ios:ukm_url_recorder", "//ios/chrome/app/strings:ios_strings_grit", "//ios/chrome/browser/browser_content/model", "//ios/chrome/browser/contextual_panel/model:public", "//ios/chrome/browser/crash_report/model", "//ios/chrome/browser/dom_distiller/model", "//ios/chrome/browser/feature_engagement/model", "//ios/chrome/browser/flags:system_flags", "//ios/chrome/browser/fullscreen/ui_bundled", "//ios/chrome/browser/infobars/model", "//ios/chrome/browser/infobars/model:public", "//ios/chrome/browser/infobars/model/overlays", "//ios/chrome/browser/intelligence/bwg/model:gemini_service", "//ios/chrome/browser/intelligence/bwg/model:gemini_service_factory", "//ios/chrome/browser/intelligence/bwg/model:tab_helper", "//ios/chrome/browser/intelligence/features", "//ios/chrome/browser/language/model", "//ios/chrome/browser/link_to_text/model", "//ios/chrome/browser/optimization_guide/model", "//ios/chrome/browser/overlays/model", "//ios/chrome/browser/shared/model/application_context", "//ios/chrome/browser/shared/model/browser", "//ios/chrome/browser/shared/model/prefs:pref_names", "//ios/chrome/browser/shared/model/profile", "//ios/chrome/browser/shared/model/profile:profile_keyed_service_factory", "//ios/chrome/browser/shared/model/url", "//ios/chrome/browser/shared/model/web_state_list", "//ios/chrome/browser/shared/public/commands", "//ios/chrome/browser/shared/public/features:system_flags", "//ios/chrome/browser/shared/ui/symbols", "//ios/chrome/browser/snapshots/model", "//ios/chrome/browser/snapshots/model:snapshot_source", "//ios/chrome/browser/tab_switcher/ui_bundled:utils", "//ios/chrome/browser/tabs/model", "//ios/chrome/browser/tabs/model:dependency_installer", "//ios/chrome/browser/translate/model", "//ios/chrome/browser/web/model/web_view_proxy", "//ios/chrome/browser/web_selection/model", "//ios/web/public", "//ios/web/public/js_messaging", "//net", "//services/metrics/public/cpp:ukm_builders", "//third_party/re2", ] public_deps = [ "//base" ] } source_set("features") { sources = [ "features.h", "features.mm", ] deps = [ ":constants", "//base", "//components/variations/service", "//ios/chrome/browser/shared/model/application_context", "//ios/chrome/browser/shared/public/features", "//ios/chrome/browser/shared/public/features:system_flags", ] } optimize_ts("reader_mode_scroll_anchor_js") { visibility = [ ":model" ] sources = [ "resources/reader_mode_scroll_anchor.ts" ] deps = [ "//ios/web/public/js_messaging:gcrweb", "//ios/web/public/js_messaging:util_scripts", ] } optimize_ts("reader_mode_js") { visibility = [ ":model" ] sources = [ "resources/reader_mode.ts" ] deps = [ "//ios/web/public/js_messaging:gcrweb", "//ios/web/public/js_messaging:util_scripts", ] } source_set("constants") { sources = [ "constants.h", "constants.mm", ] deps = [ "//base", "//ios/chrome/browser/shared/ui/symbols", ] } source_set("test_support") { testonly = true sources = [ "reader_mode_test.h", "reader_mode_test.mm", ] deps = [ ":constants", ":features", ":model", "//base", "//base/test:test_support", "//components/dom_distiller/core", "//components/feature_engagement/test:test_support", "//components/language/ios/browser", "//components/prefs:test_support", "//components/sync:test_support", "//components/translate/core/browser:translate_pref_names", "//components/translate/core/language_detection", "//ios/chrome/browser/dom_distiller/model", "//ios/chrome/browser/feature_engagement/model", "//ios/chrome/browser/infobars/model", "//ios/chrome/browser/infobars/model/overlays", "//ios/chrome/browser/infobars/model/overlays:test_support", "//ios/chrome/browser/optimization_guide/model", "//ios/chrome/browser/overlays/model", "//ios/chrome/browser/safe_browsing/model", "//ios/chrome/browser/shared/model/application_context", "//ios/chrome/browser/shared/model/profile/test", "//ios/chrome/browser/snapshots/model", "//ios/chrome/browser/snapshots/model:snapshot_source", "//ios/chrome/browser/sync/model", "//ios/chrome/browser/sync/model:test_support", "//ios/chrome/test:test_support", "//ios/components/security_interstitials/safe_browsing:test_support", "//ios/web/public/js_messaging", "//ios/web/public/test", ] } source_set("unit_tests") { testonly = true sources = [ "reader_mode_browser_agent_unittest.mm", "reader_mode_content_tab_helper_unittest.mm", "reader_mode_dependency_bridge_unittest.mm", "reader_mode_distiller_page_unittest.mm", "reader_mode_font_size_utils_unittest.mm", "reader_mode_java_script_feature_unittest.mm", "reader_mode_metrics_helper_unittest.mm", "reader_mode_model_unittest.mm", "reader_mode_tab_helper_unittest.mm", "reader_mode_web_state_delegate_unittest.mm", ] deps = [ ":constants", ":features", ":model", ":test_support", "//base", "//base/test:test_support", "//components/dom_distiller/core", "//components/feature_engagement/test:test_support", "//components/optimization_guide/proto:optimization_guide_proto", "//components/sync:test_support", "//components/sync_preferences", "//components/sync_preferences:test_support", "//components/ukm:test_support", "//components/ukm/ios:ukm_url_recorder", "//ios/chrome/browser/browser_content/model", "//ios/chrome/browser/contextual_panel/model:public", "//ios/chrome/browser/dom_distiller/model", "//ios/chrome/browser/feature_engagement/model", "//ios/chrome/browser/infobars/model", "//ios/chrome/browser/infobars/model/overlays", "//ios/chrome/browser/infobars/model/overlays:test_support", "//ios/chrome/browser/intelligence/bwg/model:tab_helper", "//ios/chrome/browser/intelligence/features", "//ios/chrome/browser/optimization_guide/model", "//ios/chrome/browser/overlays/model", "//ios/chrome/browser/shared/model/browser/test:test_support", "//ios/chrome/browser/shared/model/prefs:browser_prefs", "//ios/chrome/browser/shared/model/prefs:pref_names", "//ios/chrome/browser/shared/model/profile/test", "//ios/chrome/browser/shared/model/url:constants", "//ios/chrome/browser/shared/model/web_state_list", "//ios/chrome/browser/shared/public/commands", "//ios/chrome/browser/snapshots/model", "//ios/chrome/browser/snapshots/model:snapshot_source", "//ios/chrome/browser/sync/model", "//ios/chrome/browser/tabs/model:dependency_installer", "//ios/chrome/browser/web/model:web_internal", "//ios/chrome/browser/web/model/web_view_proxy", "//ios/chrome/browser/web_selection/model", "//ios/chrome/test:test_support", "//ios/chrome/test/fakes", "//ios/web/js_messaging:java_script_feature_manager_header", "//ios/web/public/js_messaging", "//ios/web/public/test", "//testing/gtest", "//third_party/ocmock", "//ui/base", ] }