| # 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("//extensions/buildflags/buildflags.gni") |
| |
| source_set("usb") { |
| sources = [ |
| "chrome_usb_delegate.h", |
| "usb_blocklist.h", |
| "usb_chooser_context.h", |
| "usb_chooser_context_factory.h", |
| "usb_chooser_controller.h", |
| "usb_policy_allowed_devices.h", |
| "web_usb_chooser.h", |
| "web_usb_histograms.h", |
| ] |
| public_deps = [ |
| "//base", |
| "//chrome/browser/profiles:profile", |
| "//components/permissions", |
| "//components/prefs", |
| "//content/public/browser", |
| "//mojo/public/cpp/bindings", |
| "//services/device/public/mojom:usb", |
| "//url", |
| |
| # Note that `chrome_usb_delegate.h` and `usb_chooser_controller.h` both |
| # include headers from `//third_party/blink/public/mojom/usb` GN target, |
| # which should be explicitly listed here. |
| # However, it causes a linking error on Windows bots (duplicated symbol), |
| # given that this target is also implicitly included via the chain below. |
| # |
| # //chrome/browser/usb:usb --[public]--> |
| # //content/public/browser:browser --[public]--> |
| # //content/public/browser:browser_sources --[public]--> |
| # //components/services/storage/privileged/mojom:mojom --[public]--> |
| # |
| # This also applies to other targets below, including `:browser_tests` and |
| # `:unit_tests`. |
| ] |
| |
| if (is_android) { |
| sources += [ "android/web_usb_chooser_android.h" ] |
| } else { |
| sources += [ |
| "usb_connection_tracker.h", |
| "usb_connection_tracker_factory.h", |
| "usb_system_tray_icon.h", |
| "web_usb_chooser_desktop.h", |
| "web_usb_detector.h", |
| ] |
| public_deps += [ |
| "//chrome/browser/device_notifications", |
| "//ui/gfx", |
| ] |
| |
| if (!is_chromeos) { |
| sources += [ "usb_status_icon.h" ] |
| } else { |
| sources += [ "usb_pinned_notification.h" ] |
| } |
| } |
| } |
| |
| source_set("impl") { |
| sources = [ |
| "chrome_usb_delegate.cc", |
| "usb_blocklist.cc", |
| "usb_chooser_context.cc", |
| "usb_chooser_context_factory.cc", |
| "usb_chooser_controller.cc", |
| "usb_policy_allowed_devices.cc", |
| "web_usb_chooser.cc", |
| "web_usb_histograms.cc", |
| ] |
| deps = [ |
| ":usb", |
| "//base", |
| "//chrome/app:generated_resources", |
| "//chrome/browser/chooser_controller", |
| "//chrome/browser/content_settings:content_settings_factory", |
| "//chrome/browser/profiles:profile", |
| "//chrome/browser/ui", |
| "//chrome/common", |
| "//chrome/common:chrome_features", |
| "//components/content_settings/core/common", |
| "//components/permissions", |
| "//components/prefs", |
| "//components/strings:components_strings", |
| "//content/public/browser", |
| "//services/device/public/cpp:device_features", |
| "//services/device/public/cpp/usb", |
| "//services/device/public/mojom:usb", |
| "//services/network/public/mojom:mojom_permissions_policy_shared", |
| "//services/network/public/mojom:mojom_permissions_policy_shared_cpp_sources", |
| "//third_party/blink/public:runtime_features_for_public", |
| "//ui/base", |
| "//url", |
| ] |
| |
| if (is_android) { |
| sources += [ |
| "android/usb_bridge.cc", |
| "android/web_usb_chooser_android.cc", |
| ] |
| deps += [ "//chrome/browser/usb/android:jni_headers" ] |
| } else { |
| sources += [ |
| "usb_connection_tracker.cc", |
| "usb_connection_tracker_factory.cc", |
| "usb_system_tray_icon.cc", |
| "web_usb_chooser_desktop.cc", |
| "web_usb_detector.cc", |
| ] |
| |
| deps += [ |
| "//chrome/app:branded_strings", |
| "//chrome/app/vector_icons", |
| "//chrome/browser:browser_process", |
| "//chrome/browser/ui:browser_tab_strip", |
| "//chrome/browser/ui/tab_contents", |
| "//chrome/browser/ui/tabs:tab_strip", |
| "//components/url_formatter", |
| "//components/vector_icons", |
| "//extensions/buildflags", |
| "//services/network/public/cpp:is_potentially_trustworthy", |
| "//ui/base:types", |
| "//ui/gfx", |
| "//ui/gfx:color_utils", |
| "//ui/message_center/public/cpp", |
| ] |
| |
| if (!is_chromeos) { |
| sources += [ "usb_status_icon.cc" ] |
| } else { |
| sources += [ "usb_pinned_notification.cc" ] |
| deps += [ |
| "//ash/constants", |
| "//chromeos/ash/components/settings", |
| ] |
| } |
| } |
| |
| if (enable_extensions_core) { |
| deps += [ |
| "//extensions/browser", |
| "//extensions/common", |
| "//extensions/common:common_constants", |
| ] |
| } |
| |
| public_deps = [ "//chrome/browser:browser_public_dependencies" ] |
| } |
| |
| source_set("unit_tests") { |
| testonly = true |
| sources = [] |
| deps = [] |
| |
| if (!is_android) { |
| sources += [ |
| "chrome_usb_delegate_unittest.cc", |
| "usb_blocklist_unittest.cc", |
| "usb_chooser_context_mock_device_observer.cc", |
| "usb_chooser_context_mock_device_observer.h", |
| "usb_chooser_context_unittest.cc", |
| "usb_chooser_controller_unittest.cc", |
| "usb_connection_tracker_unittest.cc", |
| "usb_policy_allowed_devices_unittest.cc", |
| "usb_test_utils.cc", |
| "usb_test_utils.h", |
| ] |
| deps = [ |
| ":usb", |
| "//base", |
| "//base/test:test_support", |
| "//chrome/browser/content_settings:content_settings_factory", |
| "//chrome/browser/device_notifications:unit_tests", |
| "//chrome/browser/extensions:test_support", |
| "//chrome/common:chrome_features", |
| "//chrome/common:non_code_constants", |
| "//chrome/test:test_support", |
| "//components/content_settings/core/browser", |
| "//components/content_settings/core/common", |
| "//components/permissions:test_support", |
| "//components/prefs", |
| "//components/sync_preferences:test_support", |
| "//content/public/browser", |
| "//content/test:test_support", |
| "//extensions:test_support", |
| "//extensions/browser", |
| "//extensions/buildflags", |
| "//mojo/public/cpp/bindings", |
| "//services/device/public/cpp:device_features", |
| "//services/device/public/cpp:test_support", |
| "//url", |
| ] |
| } |
| |
| if (!is_android && !is_chromeos) { |
| sources += [ "usb_status_icon_unittest.cc" ] |
| deps += [ |
| "//chrome/app:branded_strings", |
| "//chrome/app:command_ids", |
| "//extensions/common:common_constants", |
| "//ui/base", |
| ] |
| } |
| |
| if (is_chromeos) { |
| sources += [ "usb_pinned_notification_unittest.cc" ] |
| deps += [ |
| ":usb", |
| "//chrome/app:branded_strings", |
| "//chrome/browser/ash/settings", |
| "//chrome/browser/ash/settings:test_support", |
| "//chromeos/ash/components/settings", |
| "//extensions/common:common_constants", |
| "//ui/base", |
| ] |
| } |
| } |
| |
| if (is_linux || is_mac || is_win) { |
| source_set("device_realtarget_browsertests") { |
| testonly = true |
| defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] |
| sources = [ "chrome_usb_realtarget_browsertest.cc" ] |
| deps = [ |
| ":usb", |
| "//base", |
| "//chrome/browser/ui", |
| "//chrome/browser/ui/tabs:tab_strip", |
| "//chrome/test:test_support_ui", |
| "//content/public/browser", |
| "//content/public/common", |
| "//content/test:test_support", |
| ] |
| } |
| } |
| |
| if (!is_android) { |
| source_set("browser_tests") { |
| testonly = true |
| defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] |
| sources = [ |
| "chrome_usb_browsertest.cc", |
| "usb_browser_test_utils.cc", |
| "usb_browser_test_utils.h", |
| "web_usb_detector_browsertest.cc", |
| ] |
| public_deps = [ |
| ":usb", |
| "//base", |
| "//chrome/browser", |
| ] |
| deps = [ |
| "//base/test:test_support", |
| "//chrome/app:command_ids", |
| "//chrome/browser:browser_process", |
| "//chrome/browser/content_settings:content_settings_factory", |
| "//chrome/browser/notifications", |
| "//chrome/browser/profiles:profile", |
| "//chrome/browser/ui", |
| "//chrome/browser/ui:browser_list", |
| "//chrome/browser/ui/tabs:tab_strip", |
| "//chrome/browser/web_applications", |
| "//chrome/browser/web_applications:web_applications_test_support", |
| "//chrome/common:chrome_features", |
| "//chrome/test:test_support", |
| "//chrome/test:test_support_ui", |
| "//components/account_id", |
| "//components/content_settings/core/browser", |
| "//components/content_settings/core/common", |
| "//components/permissions", |
| "//components/prefs", |
| "//content/public/browser", |
| "//content/public/common", |
| "//content/test:test_support", |
| "//extensions:test_support", |
| "//extensions/buildflags", |
| "//extensions/common", |
| "//mojo/public/cpp/bindings", |
| "//services/device/public/cpp:test_support", |
| "//services/device/public/mojom:usb", |
| "//services/service_manager/public/cpp", |
| "//testing/gtest", |
| "//ui/message_center/public/cpp", |
| "//url", |
| ] |
| if (is_chromeos) { |
| deps += [ "//chrome/browser/ash/test:test_support" ] |
| } |
| } |
| } |