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

import("//build/dart/dart_library.gni")
import("//third_party/cobalt_config/metrics_registry.gni")
import("//topaz/runtime/dart/dart_test.gni")

metrics_registry("modules_metrics_registry") {
  project_id = 104
  sdk_category = "partner"

  generate_binarypb = false
  generate_dart = true
}

dart_library("dart") {
  package_name = "lib.app_driver.dart"

  sdk_category = "partner"

  sources = [
    "app_driver.dart",
    "module_driver.dart",
    "src/intent_parameters.dart",
    "src/module_driver.dart",
    "src/service_client.dart",
  ]

  deps = [
    ":modules_metrics_registry_dartlib",
    "//peridot/public/fidl/fuchsia.modular",
    "//topaz/public/lib/app/dart",
    "//topaz/public/lib/component/dart",
    "//topaz/public/lib/entity/dart",
    "//topaz/public/lib/intent_handler/dart",
    "//topaz/public/lib/lifecycle/dart",
    "//topaz/public/lib/module/dart",
    "//topaz/public/lib/module_resolver/dart",
    "//topaz/public/lib/schemas/dart",
    "//topaz/public/lib/story/dart",
    "//zircon/public/fidl/fuchsia-cobalt",
  ]
}
