chromium/chromeos/crosapi/mojom/BUILD.gn

# Copyright 2020 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import("//mojo/public/tools/bindings/mojom.gni")
import("//printing/buildflags/buildflags.gni")

mojom("mojom") {
  sources = [
    "account_manager.mojom",
    "app_service.mojom",
    "app_service_types.mojom",
    "app_window_tracker.mojom",
    "arc.mojom",
    "audio_service.mojom",
    "authentication.mojom",
    "automation.mojom",
    "bitmap.mojom",
    "browser_app_instance_registry.mojom",
    "browser_service.mojom",
    "browser_version.mojom",
    "cec_private.mojom",
    "cert_database.mojom",
    "cert_provisioning.mojom",
    "chaps_service.mojom",
    "chrome_app_kiosk_service.mojom",
    "clipboard.mojom",
    "clipboard_history.mojom",
    "content_protection.mojom",
    "cros_display_config.mojom",
    "crosapi.mojom",
    "debug_interface.mojom",
    "desk.mojom",
    "desk_profiles.mojom",
    "desk_template.mojom",
    "device_attributes.mojom",
    "device_local_account_extension_service.mojom",
    "device_oauth2_token_service.mojom",
    "device_settings_service.mojom",
    "diagnostics_service.mojom",
    "digital_goods.mojom",
    "dlp.mojom",
    "document_scan.mojom",
    "download_controller.mojom",
    "download_status_updater.mojom",
    "drive_integration_service.mojom",
    "echo_private.mojom",
    "editor_panel.mojom",
    "embedded_accessibility_helper.mojom",
    "emoji_picker.mojom",
    "extension_info_private.mojom",
    "extension_keeplist.mojom",
    "extension_printer.mojom",
    "eye_dropper.mojom",
    "feedback.mojom",
    "field_trial.mojom",
    "file_change_service_bridge.mojom",
    "file_manager.mojom",
    "file_system_access_cloud_identifier.mojom",
    "file_system_provider.mojom",
    "firewall_hole.mojom",
    "force_installed_tracker.mojom",
    "full_restore.mojom",
    "fullscreen_controller.mojom",
    "geolocation.mojom",
    "guest_os_sk_forwarder.mojom",
    "holding_space_service.mojom",
    "identity_manager.mojom",
    "idle_service.mojom",
    "image_writer.mojom",
    "input_methods.mojom",
    "kerberos_in_browser.mojom",
    "keystore_error.mojom",
    "keystore_service.mojom",
    "kiosk_session_service.mojom",
    "lacros_shelf_item_tracker.mojom",
    "launcher_search.mojom",
    "local_printer.mojom",
    "login.mojom",
    "login_screen_storage.mojom",
    "login_state.mojom",
    "magic_boost.mojom",
    "mahi.mojom",
    "media_app.mojom",
    "media_ui.mojom",
    "message_center.mojom",
    "metrics.mojom",
    "metrics_reporting.mojom",
    "multi_capture_service.mojom",
    "native_theme.mojom",
    "network_change.mojom",
    "network_settings_service.mojom",
    "networking_attributes.mojom",
    "networking_private.mojom",
    "nonclosable_app_toast_service.mojom",
    "notification.mojom",
    "nullable_primitives.mojom",
    "one_drive_integration_service.mojom",
    "one_drive_notification_service.mojom",
    "parent_access.mojom",
    "passkeys.mojom",
    "policy_namespace.mojom",
    "policy_service.mojom",
    "power.mojom",
    "prefs.mojom",
    "print_preview_cros.mojom",
    "printing_metrics.mojom",
    "probe_service.mojom",
    "remoting.mojom",
    "resource_manager.mojom",
    "screen_ai_downloader.mojom",
    "screen_manager.mojom",
    "select_file.mojom",
    "sharesheet.mojom",
    "smart_reader.mojom",
    "speech_recognition.mojom",
    "suggestion_service.mojom",
    "sync.mojom",
    "synced_session_client.mojom",
    "system_display.mojom",
    "task_manager.mojom",
    "telemetry_diagnostic_routine_service.mojom",
    "telemetry_event_service.mojom",
    "telemetry_extension_exception.mojom",
    "telemetry_keyboard_event.mojom",
    "telemetry_management_service.mojom",
    "test_controller.mojom",
    "timezone.mojom",
    "trusted_vault.mojom",
    "tts.mojom",
    "ui_constants.mojom",
    "url_handler.mojom",
    "video_conference.mojom",
    "virtual_keyboard.mojom",
    "volume_manager.mojom",
    "vpn_extension_observer.mojom",
    "vpn_service.mojom",
    "wallpaper.mojom",
    "web_app_service.mojom",
    "web_app_types.mojom",
    "web_kiosk_service.mojom",
    "web_page_info.mojom",
  ]
  disable_variants = true
  enable_js_fuzzing = false
  cpp_only = true

  public_deps = [
    ":structured_metrics_service",
    ":video_capture",
    "//chromeos/components/drivefs/mojom",
    "//chromeos/components/in_session_auth/mojom",
    "//chromeos/components/payments/mojom",
    "//chromeos/components/remote_apps/mojom",
    "//chromeos/components/sensors/mojom",
    "//chromeos/services/chromebox_for_meetings/public/mojom",
    "//chromeos/services/machine_learning/public/mojom",
    "//chromeos/services/network_health/public/mojom:types",
    "//components/digital_goods/mojom:mojom",
    "//components/global_media_controls/public/mojom:device_service",
    "//components/printing/common:mojo_interfaces",
    "//components/tab_groups/public/mojom:mojo_bindings",
    "//media/mojo/mojom:speech_recognition",
    "//mojo/public/mojom/base",
    "//printing/backend/mojom",
    "//printing/mojom",
    "//remoting/host/mojom:mojom",
    "//services/device/public/mojom:mojom",
    "//services/media_session/public/mojom:mojom",
    "//ui/accessibility:ax_enums_mojo",
    "//ui/accessibility/mojom",
    "//ui/base/mojom",
    "//ui/color:mojom",
    "//ui/display/mojom:mojom",
    "//ui/events/mojom:mojom",
    "//ui/gfx/geometry/mojom",
    "//ui/gfx/image/mojom",
    "//ui/gfx/mojom",
    "//url/mojom:url_mojom_gurl",
  ]

  cpp_typemaps = [
    {
      types = [
        {
          mojom = "crosapi.mojom.App"
          cpp = "::apps::AppPtr"
          move_only = true
          nullable_is_same_type = true
        },
        {
          mojom = "crosapi.mojom.PolicyDomain"
          cpp = "::policy::PolicyDomain"
          move_only = true
          nullable_is_same_type = true
        },
        {
          mojom = "crosapi.mojom.PolicyNamespace"
          cpp = "::policy::PolicyNamespace"
          move_only = true
          nullable_is_same_type = true
        },
        {
          mojom = "crosapi.mojom.UninstallSource"
          cpp = "::apps::UninstallSource"
        },
        {
          mojom = "crosapi.mojom.CapabilityAccess"
          cpp = "::apps::CapabilityAccessPtr"
          move_only = true
        },
        {
          mojom = "crosapi.mojom.IconType"
          cpp = "::apps::IconType"
        },
        {
          mojom = "crosapi.mojom.IconValue"
          cpp = "::apps::IconValuePtr"
          move_only = true
        },
        {
          mojom = "crosapi.mojom.IconKey"
          cpp = "::apps::IconKeyPtr"
          move_only = true
        },
        {
          mojom = "crosapi.mojom.WindowMode"
          cpp = "::apps::WindowMode"
        },
        {
          mojom = "crosapi.mojom.AppType"
          cpp = "::apps::AppType"
        },
        {
          mojom = "crosapi.mojom.LaunchSource"
          cpp = "::apps::LaunchSource"
        },
        {
          mojom = "crosapi.mojom.SharesheetLaunchSource"
          cpp = "::sharesheet::LaunchSource"
        },
        {
          mojom = "crosapi.mojom.SharesheetResult"
          cpp = "::sharesheet::SharesheetResult"
        },
        {
          mojom = "crosapi.mojom.BrowserWindowInstanceUpdate"
          cpp = "::apps::BrowserWindowInstanceUpdate"
          move_only = true
        },
        {
          mojom = "crosapi.mojom.BrowserAppInstanceUpdate"
          cpp = "::apps::BrowserAppInstanceUpdate"
          move_only = true
        },
        {
          mojom = "crosapi.mojom.BrowserAppInstanceType"
          cpp = "::apps::BrowserAppInstanceUpdate::Type"
        },
        {
          mojom = "crosapi.mojom.Permission"
          cpp = "::apps::PermissionPtr"
          move_only = true
        },
        {
          mojom = "crosapi.mojom.PreferredApp"
          cpp = "::apps::PreferredAppPtr"
          move_only = true
        },
        {
          mojom = "crosapi.mojom.PreferredAppChanges"
          cpp = "::apps::PreferredAppChangesPtr"
          move_only = true
        },
        {
          mojom = "crosapi.mojom.WebAppInstallResultCode"
          cpp = "::webapps::InstallResultCode"
        },
        {
          mojom = "crosapi.mojom.WebAppUninstallResultCode"
          cpp = "::webapps::UninstallResultCode"
        },
        {
          mojom = "crosapi.mojom.CertInfo"
          cpp = "::chromeos::certificate_provider::CertificateInfo"
        },
        {
          mojom = "crosapi.mojom.GUID"
          cpp = "::base::Uuid"
        },
        {
          mojom = "crosapi.mojom.TabGroup"
          cpp = "::tab_groups::TabGroupInfo"
        },
        {
          mojom = "crosapi.mojom.ResourceScaleFactor"
          cpp = "::ui::ResourceScaleFactor"
        },
        {
          mojom = "crosapi.mojom.AppShortcut"
          cpp = "::apps::ShortcutPtr"
          move_only = true
          nullable_is_same_type = true
        },
        {
          mojom = "crosapi.mojom.PackageId"
          cpp = "::apps::PackageId"
        },
      ]
      traits_headers = [
        "//chromeos/crosapi/mojom/app_service_types_mojom_traits.h",
        "//chromeos/crosapi/mojom/browser_app_instance_registry_mojom_traits.h",
        "//chromeos/crosapi/mojom/cert_database_mojom_traits.h",
        "//chromeos/crosapi/mojom/desk_mojom_traits.h",
        "//chromeos/crosapi/mojom/desk_template_mojom_traits.h",
        "//chromeos/crosapi/mojom/policy_domain_mojom_traits.h",
        "//chromeos/crosapi/mojom/policy_namespace_mojom_traits.h",
        "//chromeos/crosapi/mojom/sharesheet_mojom_traits.h",
        "//chromeos/crosapi/mojom/ui_constants_mojom_traits.h",
        "//chromeos/crosapi/mojom/web_app_types_mojom_traits.h",
        "//components/services/app_service/public/cpp/app_launch_util.h",
        "//components/services/app_service/public/cpp/app_types.h",
        "//components/services/app_service/public/cpp/shortcut/shortcut.h",
        "//components/services/app_service/public/cpp/capability_access.h",
        "//components/services/app_service/public/cpp/icon_types.h",
        "//components/services/app_service/public/cpp/package_id.h",
        "//components/services/app_service/public/cpp/permission.h",
        "//components/services/app_service/public/cpp/preferred_app.h",
      ]
      traits_sources = [
        "//chromeos/crosapi/mojom/app_service_types_mojom_traits.cc",
        "//chromeos/crosapi/mojom/browser_app_instance_registry_mojom_traits.cc",
        "//chromeos/crosapi/mojom/cert_database_mojom_traits.cc",
        "//chromeos/crosapi/mojom/desk_mojom_traits.cc",
        "//chromeos/crosapi/mojom/desk_template_mojom_traits.cc",
        "//chromeos/crosapi/mojom/policy_domain_mojom_traits.cc",
        "//chromeos/crosapi/mojom/policy_namespace_mojom_traits.cc",
        "//chromeos/crosapi/mojom/sharesheet_mojom_traits.cc",
        "//chromeos/crosapi/mojom/ui_constants_mojom_traits.cc",
        "//chromeos/crosapi/mojom/web_app_types_mojom_traits.cc",
      ]
      traits_public_deps = [
        "//base",
        "//chromeos/components/certificate_provider:certificate_provider",
        "//components/policy/core/common:policy_namespace",
        "//components/services/app_service/public/cpp:app_types",
        "//components/services/app_service/public/cpp/shortcut",
        "//components/tab_groups",
        "//components/webapps/browser:constants",
        "//ui/base:ui_data_pack",
        "//ui/gfx/range",
      ]
    },
  ]
}

# This needs a separate target, because this is also used
# by the Video Capture Service in Ash and blink bindings
# are needed.
mojom("video_capture") {
  sources = [ "video_capture.mojom" ]
  public_deps = [
    "//media/capture/mojom:image_capture",
    "//media/capture/mojom:video_capture_types",
    "//mojo/public/mojom/base",
    "//ui/gfx/geometry/mojom",
    "//ui/gfx/mojom",
  ]
}

# This needs a separate target, because this is also used
# by the ChromeOS Camera App in Ash and blink bindings
# are needed.
mojom("structured_metrics_service") {
  sources = [ "structured_metrics_service.mojom" ]
  public_deps = [
    "//components/metrics/structured/mojom",
    "//mojo/public/mojom/base",
  ]
  webui_module_path = "/"
}

source_set("unit_tests") {
  testonly = true
  sources = [
    "app_service_types_mojom_traits_unittest.cc",
    "sharesheet_mojom_traits_unittest.cc",
  ]

  deps = [
    ":mojom",
    "//base/test:test_support",
    "//components/services/app_service",
    "//mojo/public/cpp/test_support:test_utils",
    "//testing/gtest",
    "//ui/gfx:test_support",
  ]
}