# Copyright 2024 The Chromium Authors # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import("//components/lens/features.gni") import("//pdf/features.gni") assert(enable_lens_overlay_backend, "Lens backend logic is not supported on regular Mobile Android.") source_set("backend_logic_public") { sources = [ "lens_overlay_gen204_controller.h", "lens_overlay_image_helper.h", "lens_overlay_query_controller_types.h", "lens_search_feature_flag_utils.h", ] public_deps = [ "//base", "//chrome/browser/lens/core/mojom:mojo_bindings", "//components/lens", "//components/lens:lens_url_utils", "//components/lens/proto/server:proto", "//services/network/public/cpp", "//third_party/lens_server_proto:lens_overlay_proto", "//ui/gfx/geometry", ] deps = [ "//chrome/browser/profiles:profile" ] } source_set("backend_logic_impl") { sources = [ "lens_overlay_gen204_controller.cc", "lens_overlay_image_helper.cc", "lens_overlay_proto_converter.cc", "lens_overlay_proto_converter.h", "lens_overlay_query_controller.cc", "lens_overlay_query_controller.h", "lens_overlay_query_controller_types.cc", "lens_overlay_url_builder.cc", "lens_overlay_url_builder.h", "lens_search_feature_flag_utils.cc", "page_content_type_conversions.cc", "page_content_type_conversions.h", ] public_deps = [ ":backend_logic_public", "//base", "//chrome/browser/lens/core/mojom:mojo_bindings", "//components/endpoint_fetcher", "//components/lens", "//third_party/lens_server_proto:lens_overlay_proto", "//ui/gfx", "//ui/gfx/geometry", "//url", ] deps = [ "//chrome/browser:browser_process", "//chrome/browser:global_features", "//chrome/browser/autocomplete:aim_eligibility_service", "//chrome/browser/profiles:profile", "//chrome/browser/search_engines", "//chrome/browser/signin", "//chrome/browser/ui/omnibox", "//chrome/common", "//chrome/common:channel_info", "//components/application_locale_storage", "//components/base32", "//components/language/core/common", "//components/lens:enterprise_policy", "//components/metrics_services_manager", "//components/omnibox/browser", "//components/search_engines", "//components/signin/public/identity_manager", "//components/variations/service", "//components/version_info:channel", "//google_apis", "//google_apis/common", "//net", "//net/traffic_annotation", "//services/network/public/cpp", "//skia", "//third_party/icu:icui18n", "//third_party/icu:icuuc_public", "//ui/gfx/codec", ] } if (!is_android) { source_set("lens") { # The public interface is intentionally minimal. There should be a small # number of entry points and publicly used headers. public = [ "lens_composebox_controller.h", "lens_keyed_service.h", "lens_keyed_service_factory.h", "lens_media_link_handler.h", "lens_overlay_colors.h", "lens_overlay_controller.h", "lens_overlay_edu_utils.h", "lens_overlay_entry_point_controller.h", "lens_overlay_side_panel_navigation_throttle.h", "lens_overlay_untrusted_ui.h", "lens_query_flow_router.h", "lens_search_controller.h", "lens_searchbox_controller.h", "lens_side_panel_untrusted_ui.h", "lens_string_utils.h", "overlay_base_controller.h", ] friend = [ ":*", "//chrome/browser/glic/selection:interactive_ui_tests", ] sources = [ "lens_composebox_handler.h", "lens_help_menu_utils.h", "lens_keyed_service.cc", "lens_keyed_service.h", "lens_keyed_service_factory.cc", "lens_keyed_service_factory.h", "lens_media_link_handler.h", "lens_overlay_blur_layer_delegate.h", "lens_overlay_event_handler.h", "lens_overlay_languages_controller.h", "lens_overlay_side_panel_coordinator.h", "lens_overlay_side_panel_web_view.h", "lens_overlay_theme_utils.h", "lens_overlay_translate_options.h", "lens_permission_bubble_controller.h", "lens_preselection_bubble.h", "lens_results_panel_router.h", "lens_search_contextualization_controller.h", "lens_session_metrics_logger.h", ] public_deps = [ ":backend_logic_public", "//base", "//chrome/browser/companion/text_finder", "//chrome/browser/content_extraction", "//chrome/browser/lens/core/mojom:mojo_bindings", "//chrome/browser/search_engines", "//chrome/browser/themes", "//chrome/browser/ui:chrome_web_modal_dialog_manager_delegate", "//chrome/browser/ui/contextual_search", "//chrome/browser/ui/desktop_to_mobile_promos:service", "//chrome/browser/ui/exclusive_access", "//chrome/browser/ui/immersive:immersive_mode_controller", "//chrome/browser/ui/location_bar", "//chrome/browser/ui/omnibox", "//chrome/browser/ui/side_panel", "//chrome/browser/ui/side_panel:side_panel_views_dependent", "//chrome/browser/ui/views/side_panel", "//chrome/browser/ui/webui/cr_components/searchbox", "//chrome/browser/ui/webui/searchbox", "//chrome/browser/ui/webui/top_chrome", "//components/content_extraction/content/browser", "//components/contextual_tasks/public:query_contextualizer", "//components/desktop_to_mobile_promos", "//components/endpoint_fetcher", "//components/find_in_page", "//components/lens", "//components/optimization_guide/content/browser", "//components/optimization_guide/content/browser:page_context_eligibility", "//components/sync_preferences", "//components/user_education/webui", "//content/public/browser", "//third_party/lens_server_proto:lens_overlay_proto", "//ui/base/mojom:ui_base_types", "//ui/base/unowned_user_data", "//ui/views", "//ui/webui/resources/cr_components/composebox:mojo_bindings", ] if (enable_pdf) { public_deps += [ "//components/pdf/browser", "//pdf/mojom", ] } } source_set("impl") { sources = [ "lens_composebox_controller.cc", "lens_composebox_handler.cc", "lens_help_menu_utils.cc", "lens_media_link_handler.cc", "lens_overlay_blur_layer_delegate.cc", "lens_overlay_controller.cc", "lens_overlay_edu_utils.cc", "lens_overlay_entry_point_controller.cc", "lens_overlay_event_handler.cc", "lens_overlay_languages_controller.cc", "lens_overlay_side_panel_coordinator.cc", "lens_overlay_side_panel_navigation_throttle.cc", "lens_overlay_side_panel_web_view.cc", "lens_overlay_theme_utils.cc", "lens_overlay_untrusted_ui.cc", "lens_permission_bubble_controller.cc", "lens_preselection_bubble.cc", "lens_query_flow_router.cc", "lens_results_panel_router.cc", "lens_search_contextualization_controller.cc", "lens_search_controller.cc", "lens_searchbox_controller.cc", "lens_session_metrics_logger.cc", "lens_side_panel_untrusted_ui.cc", "lens_string_utils.cc", "overlay_base_controller.cc", ] deps = [ ":backend_logic_impl", ":lens", "//build:branding_buildflags", "//chrome/app:generated_resources_grit", "//chrome/app/theme:theme_resources_grit", "//chrome/app/vector_icons", "//chrome/browser:browser_process", "//chrome/browser:global_features", "//chrome/browser:primitives", "//chrome/browser/autocomplete:aim_eligibility_service", "//chrome/browser/contextual_search", "//chrome/browser/contextual_tasks:ui", "//chrome/browser/feedback", "//chrome/browser/lens/region_search", "//chrome/browser/media/webrtc", "//chrome/browser/profiles", "//chrome/browser/resources/lens/overlay:resources", "//chrome/browser/resources/lens/overlay:resources_grit", "//chrome/browser/resources/lens/shared:resources", "//chrome/browser/resources/lens/shared:resources_grit", "//chrome/browser/search", "//chrome/browser/task_manager", "//chrome/browser/ui:browser_actions", "//chrome/browser/ui:browser_element_identifiers", "//chrome/browser/ui/browser_window", "//chrome/browser/ui/color:color_headers", "//chrome/browser/ui/contextual_search", "//chrome/browser/ui/hats", "//chrome/browser/ui/omnibox", "//chrome/browser/ui/search", "//chrome/browser/ui/user_education", "//chrome/browser/ui/views/bubble", "//chrome/browser/ui/views/interaction", "//chrome/browser/ui/views/page_action", "//chrome/browser/ui/views/toolbar", "//chrome/browser/ui/webui", "//chrome/browser/ui/webui:theme_source", "//chrome/browser/ui/webui:webui_util", "//chrome/browser/ui/webui/new_tab_page", "//chrome/browser/ui/webui/new_tab_page_third_party", "//chrome/browser/ui/webui/ntp", "//chrome/browser/ui/webui/util", "//chrome/common", "//chrome/common:channel_info", "//components/application_locale_storage", "//components/base32", "//components/constrained_window", "//components/contextual_search:public", "//components/contextual_tasks/public", "//components/feature_engagement/public", "//components/input", "//components/language/core/common", "//components/lens:enterprise_policy", "//components/lens:features", "//components/lens/proto/server:proto", "//components/metrics_services_manager", "//components/omnibox/common:features", "//components/optimization_guide/content/browser", "//components/optimization_guide/content/browser:page_context_eligibility", "//components/prefs", "//components/sessions", "//components/signin/public/identity_manager", "//components/strings:components_strings_grit", "//components/sync/service", "//components/sync_preferences", "//components/unified_consent", "//components/variations", "//components/variations:variations_mojom", "//components/version_info:channel", "//components/web_modal", "//components/zoom", "//google_apis", "//google_apis/common", "//google_apis/common:request_util", "//mojo/public/cpp/bindings", "//net", "//net/traffic_annotation", "//pdf:buildflags", "//services/metrics/public/cpp:ukm_builders", "//services/network/public/cpp", "//skia", "//third_party/farmhash", "//third_party/lens_server_proto:lens_overlay_proto", "//third_party/omnibox_proto", "//third_party/zlib/google:compression_utils", "//ui/base:types", "//ui/gfx", "//ui/gfx/codec", "//ui/gfx/geometry", "//ui/menus", "//ui/webui", "//url", ] if (enable_pdf) { deps += [ "//chrome/browser/pdf", "//components/pdf/browser", ] } if (is_win || is_mac || is_linux || is_chromeos) { deps += [ "//chrome/browser/ui/webui:theme_source" ] } } source_set("test_support") { testonly = true sources = [ "test_lens_overlay_controller.cc", "test_lens_overlay_controller.h", "test_lens_overlay_query_controller.cc", "test_lens_overlay_query_controller.h", "test_lens_overlay_side_panel_coordinator.cc", "test_lens_overlay_side_panel_coordinator.h", "test_lens_search_contextualization_controller.cc", "test_lens_search_contextualization_controller.h", "test_lens_search_controller.cc", "test_lens_search_controller.h", ] deps = [ ":backend_logic_impl", ":lens", "//base/test:test_support", "//components/contextual_search:test_support", "//components/omnibox/common:features", "//components/tabs:test_support", "//google_apis/common", "//testing/gtest", "//third_party/lens_server_proto:lens_overlay_proto", ] } source_set("browser_tests") { testonly = true defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] sources = [ "lens_composebox_controller_browsertest.cc", "lens_overlay_controller_browsertest.cc", "lens_overlay_live_test.cc", "lens_overlay_wait_for_paint_utils.cc", "lens_overlay_wait_for_paint_utils.h", "lens_search_controller_contextual_tasks_browsertest.cc", "lens_search_controller_unification_browsertest.cc", "lens_search_feature_flag_utils_browsertest.cc", ] deps = [ ":backend_logic_impl", ":lens", ":test_support", "//base", "//base/test:test_support", "//chrome/browser", "//chrome/browser/autocomplete:aim_eligibility_service", "//chrome/browser/contextual_tasks:impl", "//chrome/browser/contextual_tasks:test_support", "//chrome/browser/contextual_tasks:ui", "//chrome/browser/lens/core/mojom:mojo_bindings", "//chrome/browser/pdf:pdf_extension_test_base", "//chrome/browser/profiles:profile", "//chrome/browser/signin/e2e_tests:test_support", "//chrome/browser/sync", "//chrome/browser/themes", "//chrome/browser/ui", "//chrome/browser/ui:browser_actions", "//chrome/browser/ui:browser_element_identifiers", "//chrome/browser/ui:ui_features", "//chrome/browser/ui/browser_window", "//chrome/browser/ui/exclusive_access", "//chrome/browser/ui/find_bar", "//chrome/browser/ui/hats", "//chrome/browser/ui/hats:test_support", "//chrome/browser/ui/location_bar", "//chrome/browser/ui/tabs:tabs_public", "//chrome/browser/ui/views/location_bar", "//chrome/browser/ui/views/page_action", "//chrome/browser/ui/views/page_action:page_action_test_support", "//chrome/browser/ui/views/side_panel", "//chrome/browser/ui/webui/searchbox:searchbox_test_utils", "//chrome/test:test_support", "//chrome/test:test_support_ui", "//components/base32", "//components/constrained_window", "//components/contextual_search:test_support", "//components/contextual_search/internal", "//components/contextual_tasks/public:feature_list", "//components/contextual_tasks/public:test_support", "//components/feature_engagement/public", "//components/lens:enterprise_policy", "//components/lens:features", "//components/lens/proto/server:proto", "//components/omnibox/common:features", "//components/permissions:test_support", "//components/prefs", "//components/renderer_context_menu", "//components/signin/public/identity_manager:test_support", "//components/ukm:test_support", "//content/public/browser", "//content/public/common", "//content/test:test_support", "//mojo/public/cpp/bindings", "//net", "//pdf:features", "//third_party/lens_server_proto:lens_overlay_proto", "//ui/base", "//ui/base:types", "//ui/base/clipboard:clipboard_test_support", "//ui/base/unowned_user_data", "//ui/compositor", "//ui/events:events_base", "//ui/events:test_support", "//ui/shell_dialogs:test_support", "//ui/views", "//ui/views:test_support", "//ui/views/controls/webview", "//url", ] if (enable_pdf) { deps += [ "//chrome/browser/pdf" ] } # TODO(crbug.com/40031409): Fix code that adds exit-time destructors and # enable the diagnostic by removing this line. configs += [ "//build/config/compiler:no_exit_time_destructors" ] } source_set("interactive_ui_tests") { testonly = true defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] sources = [ "contextual_tasks_lens_overlay_interactive_uitest.cc", "lens_overlay_controller_interactive_uitest.cc", "lens_overlay_homework_page_action_interactive_uitest.cc", "lens_overlay_interactive_test_base.cc", "lens_overlay_interactive_test_base.h", "lens_permission_bubble_controller_interactive_uitest.cc", ] deps = [ ":backend_logic_impl", ":lens", ":test_support", "//base/test:test_support", "//chrome/browser", "//chrome/browser/autocomplete:aim_eligibility_service", "//chrome/browser/contextual_tasks", "//chrome/browser/contextual_tasks:test_support", "//chrome/browser/contextual_tasks:ui", "//chrome/browser/profiles:profile", "//chrome/browser/search_engines", "//chrome/browser/signin", "//chrome/browser/sync", "//chrome/browser/themes", "//chrome/browser/ui", "//chrome/browser/ui:browser_element_identifiers", "//chrome/browser/ui:ui_features", "//chrome/browser/ui/browser_window", "//chrome/browser/ui/tabs:tabs_public", "//chrome/browser/ui/views/location_bar", "//chrome/test:test_support", "//chrome/test:test_support_ui", "//chrome/test/user_education:impl", "//components/contextual_search:test_support", "//components/contextual_search/internal", "//components/contextual_tasks/public:test_support", "//components/feature_engagement/public", "//components/lens:enterprise_policy", "//components/lens:features", "//components/omnibox/common:features", "//components/prefs", "//components/search_engines", "//components/user_education/views", "//content/test:test_support", "//testing/gtest", "//ui/base/clipboard:clipboard_test_support", ] if (enable_pdf) { deps += [ "//components/pdf/browser" ] } } source_set("unit_tests") { testonly = true sources = [ "lens_media_link_handler_unittest.cc", "lens_overlay_gen204_controller_unittest.cc", "lens_overlay_image_helper_unittest.cc", "lens_overlay_languages_controller_unittest.cc", "lens_overlay_proto_converter_unittest.cc", "lens_overlay_query_controller_unittest.cc", "lens_overlay_side_panel_navigation_throttle_unittest.cc", "lens_overlay_url_builder_unittest.cc", "lens_query_flow_router_unittest.cc", "lens_search_controller_unittest.cc", "lens_searchbox_controller_unittest.cc", ] deps = [ ":backend_logic_impl", ":lens", ":test_support", "//base", "//base/test:test_support", "//chrome/browser", "//chrome/browser:browser_process", "//chrome/browser/contextual_tasks:test_support", "//chrome/browser/contextual_tasks:ui", "//chrome/browser/lens/core/mojom:mojo_bindings", "//chrome/browser/optimization_guide:test_support", "//chrome/browser/search_engines", "//chrome/browser/signin", "//chrome/browser/sync", "//chrome/browser/themes", "//chrome/browser/ui:test_support", "//chrome/browser/ui/contextual_search", "//chrome/browser/ui/tabs:tabs_public", "//chrome/browser/ui/webui/new_tab_page/composebox/variations", "//chrome/browser/ui/webui/searchbox:searchbox_test_utils", "//chrome/test:test_support", "//components/base32", "//components/contextual_search:test_support", "//components/contextual_tasks/public", "//components/contextual_tasks/public:test_support", "//components/endpoint_fetcher", "//components/lens:enterprise_policy", "//components/lens:features", "//components/omnibox/browser:test_support", "//components/omnibox/common:features", "//components/optimization_guide/content/browser:page_context_eligibility", "//components/tabs:test_support", "//content/public/browser", "//content/test:test_support", "//google_apis/common", "//net", "//net/traffic_annotation", "//testing/gmock", "//testing/gtest", "//third_party/icu:icui18n", "//third_party/icu:icuuc_public", "//third_party/lens_server_proto:lens_overlay_proto", "//third_party/omnibox_proto", "//third_party/zlib/google:compression_utils", "//third_party/zstd:compress", "//ui/gfx", "//ui/gfx/codec", "//ui/gfx/geometry", "//url", ] # TODO(crbug.com/40031409): Fix code that adds exit-time destructors and # enable the diagnostic by removing this line. configs += [ "//build/config/compiler:no_exit_time_destructors" ] } }