# 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("//build/config/chrome_build.gni") import("//build/config/ui.gni") import("//components/compose/features.gni") import("//components/safe_browsing/buildflags.gni") import("//components/signin/features.gni") if (is_android) { import("//build/config/android/rules.gni") } assert(is_win || is_mac || is_linux || is_chromeos || is_android) if (is_android) { java_cpp_enum("autofill_ai_ui_java_enums") { sources = [ "autofill_ai/entity_attribute_update_details.h" ] } } source_set("bubble_controller_base") { public = [ "bubble_controller_base.h" ] public_deps = [ "//base" ] } source_set("autofill_ai_ui_utils") { sources = [ "autofill_ai/autofill_ai_import_string_utils.h", "autofill_ai/entity_attribute_update_details.h", ] public_deps = [ "//components/autofill/core/browser", "//ui/base", ] } source_set("autofill_ai_ui_utils_impl") { sources = [ "autofill_ai/autofill_ai_import_string_utils.cc", "autofill_ai/entity_attribute_update_details.cc", ] public_deps = [ ":autofill_ai_ui_utils", "//components/autofill/core/browser", "//components/strings:components_strings_grit", "//ui/base", ] } source_set("autofill") { sources = [ "autofill_bubble_base.h", "autofill_bubble_controller_base.h", "autofill_bubble_handler.h", "autofill_client_provider.h", "autofill_client_provider_factory.h", "autofill_popup_controller.h", "autofill_popup_hide_helper.h", "autofill_popup_view.h", "autofill_popup_view_delegate.h", "autofill_suggestion_controller.h", "autofill_suggestion_controller_utils.h", "chrome_autofill_client.h", "next_idle_barrier.h", "popup_controller_common.h", "risk_util.h", ] public_deps = [ ":autofill_ai_ui_utils", ":bubble_controller_base", "//base", "//base:i18n", "//chrome/browser:global_features", "//chrome/browser/actor", "//chrome/browser/feature_engagement", "//chrome/browser/picture_in_picture", "//chrome/browser/profiles:profile", "//chrome/browser/ui/autofill/payments", "//chrome/browser/ui/page_action:icon_type", "//chrome/browser/ui/passwords", "//components/application_locale_storage", "//components/autofill/content/browser", "//components/autofill/core/browser", "//components/autofill/core/common", "//components/input", "//components/keyed_service/core", "//components/optimization_guide/proto:optimization_guide_proto", "//components/personal_context/core", "//components/signin/public/identity_manager", "//components/zoom", "//content/public/browser", "//ui/actions:actions_headers", "//ui/gfx", "//ui/gfx/geometry", ] if (is_android) { sources += [ "at_memory_suggestion_controller.h", "autofill_dialog_controller.h", "autofill_dialog_controller_impl.h", "autofill_keyboard_accessory_controller.h", "autofill_keyboard_accessory_controller_impl.h", "autofill_keyboard_accessory_view.h", "autofill_message_controller.h", "autofill_message_controller_impl.h", "autofill_message_model.h", "autofill_snackbar_controller.h", "autofill_snackbar_controller_impl.h", "autofill_snackbar_type.h", "autofill_snackbar_view.h", ] public_deps += [ "//components/autofill/android:autofill_core_browser_java_enums", "//components/password_manager/core/browser:metrics_util", "//components/password_manager/core/browser:password_manager_java_enums_srcjar", "//content/public/android:content_public_android_java_enums_srcjar", ] } else { sources += [ "address_bubble_controller_delegate.h", "address_bubbles_controller.h", "address_bubbles_icon_controller.h", "address_editor_controller.h", "autofill_ai/autofill_ai_import_data_controller.h", "autofill_ai/autofill_ai_import_data_controller_impl.h", "autofill_context_menu_manager.h", "autofill_field_promo_controller.h", "autofill_field_promo_controller_impl.h", "autofill_field_promo_view.h", "autofill_popup_controller_impl.h", "bubble_manager.h", "bubble_manager_impl.h", "delete_address_profile_dialog_controller.h", "delete_address_profile_dialog_controller_impl.h", "delete_address_profile_dialog_view.h", "edit_address_profile_dialog_controller.h", "edit_address_profile_dialog_controller_impl.h", "edit_address_profile_view.h", "email_verifier/email_verification_popup_controller.h", "email_verifier/email_verified_toast_menu_model.h", "save_address_bubble_controller.h", "update_address_bubble_controller.h", ] public_deps += [ "//components/autofill/core/browser", "//components/password_manager/core/browser", "//components/password_manager/core/browser:password_form", "//components/renderer_context_menu", "//components/user_education/common", "//third_party/abseil-cpp:absl", "//ui/base/interaction", "//ui/menus", "//ui/views", ] } if (is_mac) { sources += [ "autofill_popup_controller_impl_mac.h" ] } allow_circular_includes_from = [ "//chrome/browser/ui/autofill/payments", "//chrome/browser/ui/passwords", ] } source_set("impl") { sources = [ "autofill_bubble_controller_base.cc", "autofill_bubble_handler.cc", "autofill_client_provider.cc", "autofill_client_provider_factory.cc", "autofill_popup_hide_helper.cc", "autofill_suggestion_controller.cc", "autofill_suggestion_controller_utils.cc", "chrome_autofill_client.cc", "chrome_otp_phish_guard_delegate.cc", "chrome_otp_phish_guard_delegate.h", "next_idle_barrier.cc", "popup_controller_common.cc", "risk_util.cc", ] public_deps = [ "//chrome/browser:browser_public_dependencies" ] deps = [ ":autofill", ":autofill_ai_ui_utils_impl", "//chrome/browser:browser_process", "//chrome/browser/account_settings", "//chrome/browser/actor", "//chrome/browser/autofill", "//chrome/browser/autofill/actor", "//chrome/browser/consent_auditor", "//chrome/browser/critical_actions", "//chrome/browser/device_reauth", "//chrome/browser/glic", "//chrome/browser/history", "//chrome/browser/metrics", "//chrome/browser/optimization_guide", "//chrome/browser/password_manager", "//chrome/browser/password_manager/factories", "//chrome/browser/personal_context", "//chrome/browser/personal_context/first_run", "//chrome/browser/profiles:profile", "//chrome/browser/safe_browsing", "//chrome/browser/signin", "//chrome/browser/ssl", "//chrome/browser/strike_database", "//chrome/browser/subscription_eligibility", "//chrome/browser/sync", "//chrome/browser/ui:browser_element_identifiers", "//chrome/browser/ui:ui_features", "//chrome/browser/ui/autofill/payments", "//chrome/browser/ui/browser_window", "//chrome/browser/ui/hats", "//chrome/browser/ui/page_info", "//chrome/browser/ui/passwords", "//chrome/browser/webdata_services", "//components/account_settings", "//components/autofill/content/browser", "//components/autofill/content/browser:risk_proto", "//components/compose/core/browser", "//components/compose/core/browser:features", "//components/device_reauth", "//components/embedder_support:user_agent", "//components/feature_engagement/public", "//components/infobars/content", "//components/infobars/core", "//components/language/core/browser", "//components/optimization_guide/content/browser", "//components/password_manager/content/browser", "//components/password_manager/content/browser:password_form_classification_util", "//components/password_manager/core/browser", "//components/password_manager/core/browser:metrics_util", "//components/password_manager/core/browser:password_form", "//components/password_manager/core/browser/form_parsing", "//components/personal_context/core", "//components/personal_context/first_run", "//components/profile_metrics", "//components/safe_browsing:buildflags", "//components/safe_browsing/core/browser/db:v5_get_hash_protocol_manager", "//components/safe_browsing/core/common:safe_browsing_prefs", "//components/security_state/content", "//components/strings:components_strings_grit", "//components/unified_consent", "//components/variations/service", "//components/vector_icons", ] if (safe_browsing_mode != 0) { deps += [ "//components/safe_browsing/content/browser/password_protection" ] } if (is_android) { sources += [ "at_memory_suggestion_controller.cc", "autofill_dialog_controller_impl.cc", "autofill_keyboard_accessory_controller.cc", "autofill_keyboard_accessory_controller_impl.cc", "autofill_message_controller_impl.cc", "autofill_message_model.cc", "autofill_snackbar_controller_impl.cc", ] deps += [ "//chrome/browser/autofill/android:jni_headers", "//chrome/browser/keyboard_accessory/android", "//chrome/browser/keyboard_accessory/android:impl", "//chrome/browser/touch_to_fill/autofill/android", "//chrome/browser/touch_to_fill/autofill/android:public", "//chrome/browser/ui/android/autofill", "//components/android_autofill/browser:android", "//components/messages/android:feature_flags", "//components/password_manager/core/browser/features:password_features", ] } else { sources += [ "address_bubbles_controller.cc", "address_bubbles_icon_controller.cc", "address_editor_controller.cc", "autofill_ai/autofill_ai_import_data_controller_impl.cc", "autofill_context_menu_manager.cc", "autofill_field_promo_controller_impl.cc", "autofill_popup_controller_impl.cc", "bubble_manager.cc", "bubble_manager_impl.cc", "delete_address_profile_dialog_controller_impl.cc", "edit_address_profile_dialog_controller_impl.cc", "email_verifier/email_verification_popup_controller.cc", "email_verifier/email_verified_toast_menu_model.cc", "save_address_bubble_controller.cc", "update_address_bubble_controller.cc", ] deps += [ "//chrome/app:command_ids", "//chrome/app/vector_icons", "//chrome/browser/apps/platform_apps", "//chrome/browser/desktop_to_mobile_promos:utils", "//chrome/browser/feedback", "//chrome/browser/profiles:profile_manager", "//chrome/browser/profiles:profile_util", "//chrome/browser/ui:chrome_pages", "//chrome/browser/ui/browser_window", "//chrome/browser/ui/desktop_to_mobile_promos:utils", "//chrome/browser/ui/page_action", "//chrome/browser/ui/toasts", "//chrome/browser/ui/toasts/api:toasts", "//chrome/browser/ui/user_education", "//chrome/browser/ui/views/autofill/popup/email_verifier", "//chrome/browser/ui/webauthn", "//chrome/browser/ui/webui/signin:login_ui_service", "//components/autofill/core/browser", "//components/desktop_to_mobile_promos", "//components/password_manager/core/browser/features:password_features", "//extensions/browser", ] } if (is_mac) { sources += [ "autofill_popup_controller_impl_mac.mm" ] deps += [ "//chrome/browser/ui/cocoa" ] } if (enable_compose) { deps += [ "//chrome/browser/compose" ] } } source_set("unit_tests") { testonly = true sources = [ "autofill_ai/entity_attribute_update_details_unittest.cc", "autofill_client_provider_unittest.cc", "autofill_suggestion_controller_unittest.cc", "chrome_autofill_client_unittest.cc", "chrome_otp_phish_guard_delegate_unittest.cc", ] deps = [ ":autofill", ":impl", ":test_support", ":test_support_unit", "//base", "//base/test:test_support", "//build:branding_buildflags", "//chrome/browser", "//chrome/browser:browser_process", "//chrome/browser/account_settings", "//chrome/browser/actor:test_support", "//chrome/browser/autofill", "//chrome/browser/autofill:test_support", "//chrome/browser/critical_actions", "//chrome/browser/glic", "//chrome/browser/password_manager", "//chrome/browser/personal_context", "//chrome/browser/safe_browsing", "//chrome/browser/ssl", "//chrome/browser/sync", "//chrome/browser/ui", "//chrome/browser/ui:browser_element_identifiers", "//chrome/browser/ui:test_support", "//chrome/browser/ui/autofill/payments", "//chrome/browser/ui/hats", "//chrome/browser/ui/tabs:tab_enums", "//chrome/test:test_support", "//components/autofill/content/browser:test_support", "//components/autofill/core/browser:test_support", "//components/autofill/core/common:test_support", "//components/critical_actions/core/browser", "//components/feature_engagement/public:feature_constants", "//components/input", "//components/keyed_service/content", "//components/keyed_service/core", "//components/password_manager/core/browser:password_form", "//components/password_manager/core/common", "//components/prefs:test_support", "//components/safe_browsing:buildflags", "//components/safe_browsing/core/common:safe_browsing_prefs", "//components/signin/public/identity_manager", "//components/strings:components_strings", "//components/sync:test_support", "//components/unified_consent", "//components/user_education/common", "//components/user_education/test", "//content/public/browser", "//content/test:test_support", "//mojo/public/cpp/bindings", "//testing/gmock", "//testing/gtest", "//third_party/blink/public/common:headers", "//ui/accessibility", "//ui/accessibility:ax_base", "//ui/base", "//ui/events", "//ui/events:dom_keycode_converter", "//ui/gfx", "//ui/gfx/geometry", "//ui/gfx/range", ] if (is_android) { sources += [ "at_memory_suggestion_controller_unittest.cc", "autofill_dialog_controller_impl_unittest.cc", "autofill_keyboard_accessory_controller_impl_unittest.cc", "autofill_message_controller_impl_unittest.cc", "autofill_message_model_unittest.cc", "autofill_snackbar_controller_impl_unittest.cc", ] deps += [ "//chrome/browser/autofill/android:jni_test_headers", "//chrome/browser/keyboard_accessory/android:impl", "//chrome/browser/preferences:android", "//chrome/browser/ui/android/autofill", "//components/messages/android:test_support", ] } else { sources += [ "address_editor_controller_unittest.cc", "autofill_field_promo_controller_impl_unittest.cc", "autofill_popup_controller_impl_unittest.cc", "bubble_manager_impl_unittest.cc", "edit_address_profile_dialog_controller_impl_unittest.cc", "save_address_bubble_controller_unittest.cc", "update_address_bubble_controller_unittest.cc", ] deps += [ "//chrome/browser/glic/test_support", "//chrome/browser/ui/browser_window", "//chrome/browser/ui/hats:test_support", "//chrome/browser/ui/user_education", "//chrome/test/user_education:impl", "//components/tabs:test_support", ] } if (is_mac) { sources += [ "autofill_popup_controller_impl_mac_unittest.mm" ] } # 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("test_support") { testonly = true sources = [ "test/test_autofill_bubble_handler.cc", "test/test_autofill_bubble_handler.h", ] public_deps = [ ":autofill", "//testing/gmock", ] if (is_android) { sources += [ "autofill_keyboard_accessory_controller_impl_test_api.h", "autofill_message_controller_test_api.h", "autofill_message_model_test_api.h", "mock_autofill_dialog_controller.cc", "mock_autofill_dialog_controller.h", "mock_autofill_dialog_view.cc", "mock_autofill_dialog_view.h", "mock_autofill_message_controller.cc", "mock_autofill_message_controller.h", ] } else { sources += [ "autofill_ai/mock_autofill_ai_import_data_controller.cc", "autofill_ai/mock_autofill_ai_import_data_controller.h", "autofill_popup_controller_impl_test_api.h", "mock_autofill_popup_controller.cc", "mock_autofill_popup_controller.h", "mock_bubble_manager.cc", "mock_bubble_manager.h", ] if (is_mac) { sources += [ "autofill_popup_controller_impl_mac_test_api.h" ] } public_deps += [ "//ui/gfx:test_support" ] } } if (!is_android && !is_chromeos_device) { source_set("interactive_ui_tests") { testonly = true defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] deps = [ ":autofill", "//base", "//base:i18n", "//base/test:test_support", "//build:buildflag_header_h", "//chrome/app:command_ids", "//chrome/browser/autofill:test_support", "//chrome/browser/profiles:profile", "//chrome/browser/sync", "//chrome/browser/sync:factories", "//chrome/browser/ui", "//chrome/browser/ui:ui_features", "//chrome/browser/ui/browser_web_contents_delegate", "//chrome/browser/ui/browser_window", "//chrome/browser/ui/user_education", "//chrome/common:constants", "//chrome/test:test_support", "//chrome/test:test_support_ui", "//components/autofill/content/browser:test_support", "//components/autofill/core/browser:test_support", "//components/autofill/core/common:features", "//components/autofill/core/common:test_support", "//components/feature_engagement/public", "//components/feature_engagement/test:test_support", "//components/keyed_service/content", "//components/prefs:test_support", "//components/sync:test_support", "//content/public/browser", "//content/test:test_support", "//net:test_support", "//testing/gmock", "//testing/gtest", "//third_party/blink/public/common", "//ui/base", "//ui/compositor", "//ui/gfx/geometry", "//ui/views", "//url", ] sources = [ "autofill_context_menu_manager_interactive_uitest.cc", "autofill_popup_controller_interactive_uitest.cc", "chrome_autofill_client_interactive_uitest.cc", ] if (toolkit_views) { sources += [ "address_bubbles_controller_interactive_uitest.cc", "delete_address_profile_dialog_controller_impl_interactive_uitest.cc", "edit_address_profile_dialog_controller_impl_interactive_uitest.cc", ] deps += [ "//chrome/browser/ui/views/autofill:address_editor_view", "//chrome/browser/ui/views/autofill:edit_address_profile_view", "//chrome/browser/ui/views/autofill:save_address_profile_view", "//chrome/browser/ui/views/autofill:update_address_profile_view", ] } } } source_set("test_support_unit") { testonly = true sources = [ "autofill_suggestion_controller_test_base.cc", "autofill_suggestion_controller_test_base.h", "mock_autofill_popup_view.cc", "mock_autofill_popup_view.h", ] public_deps = [ ":autofill", ":test_support", "//base", "//chrome/browser/autofill", "//chrome/browser/ui", "//chrome/test:test_support", "//components/autofill/content/browser:test_support", "//components/autofill/core/common:test_support", "//testing/gmock", "//testing/gtest", ] if (is_android) { sources += [ "mock_autofill_keyboard_accessory_view.cc", "mock_autofill_keyboard_accessory_view.h", "test_autofill_keyboard_accessory_controller_autofill_client.h", ] deps = [ "//chrome/browser/keyboard_accessory/android:impl" ] public_deps += [ "//chrome/browser/keyboard_accessory/test_utils/android" ] } else { sources += [ "test_autofill_popup_controller_autofill_client.h" ] } # 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" ] } if (!is_android) { source_set("browser_tests") { testonly = true defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] sources = [ "address_bubbles_controller_browsertest.cc", "autofill_ai/autofill_ai_import_data_controller_impl_browsertest.cc", "autofill_context_menu_manager_browsertest.cc", "delete_address_profile_dialog_controller_impl_browsertest.cc", ] deps = [ ":autofill", "//base", "//base/test:test_support", "//chrome/app:command_ids", "//chrome/app:generated_resources", "//chrome/browser", "//chrome/browser/autofill", "//chrome/browser/autofill:test_support", "//chrome/browser/password_manager", "//chrome/browser/password_manager:test_support", "//chrome/browser/password_manager/factories", "//chrome/browser/signin", "//chrome/browser/signin:signin_browser_test_base", "//chrome/browser/sync", "//chrome/browser/ui", "//chrome/browser/ui/browser_window", "//chrome/browser/ui/hats:test_support", "//chrome/browser/ui/side_panel:side_panel_views_dependent", "//chrome/test:test_support", "//chrome/test:test_support_ui", "//components/autofill/content/browser:test_support", "//components/autofill/core/browser", "//components/autofill/core/browser:test_support", "//components/autofill/core/common", "//components/keyed_service/content", "//components/keyed_service/core", "//components/password_manager/content/browser", "//components/password_manager/core/browser", "//components/password_manager/core/browser:password_form", "//components/password_manager/core/browser:test_support", "//components/password_manager/core/browser/features:password_features", "//components/password_manager/core/browser/password_store:password_store_interface", "//components/password_manager/core/browser/password_store:test_support", "//components/password_manager/core/common", "//components/personal_context/core:test_support", "//components/signin/public/base", "//components/signin/public/identity_manager:test_support", "//components/strings:components_strings", "//components/sync:test_support", "//components/sync/base:features", "//components/user_manager", "//components/variations/service", "//content/public/browser", "//content/test:test_support", "//testing/gtest", "//ui/base", "//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" ] } }