# Copyright 2015 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("//chromecast/chromecast.gni")
import("//mojo/public/tools/bindings/mojom.gni")

cast_source_set("queryable_data") {
  sources = [
    "queryable_data.cc",
    "queryable_data.h",
  ]

  deps = [
    "//base",
  ]
}

cast_source_set("common") {
  sources = [
    "cast_content_client.cc",
    "cast_content_client.h",
    "cast_resource_delegate.cc",
    "cast_resource_delegate.h",
    "cast_url_loader_throttle.cc",
    "cast_url_loader_throttle.h",
    "global_descriptors.h",
  ]

  deps = [
    "//base",
    "//chromecast:chromecast_buildflags",
    "//chromecast/base",
    "//chromecast/base:cast_version",
    "//chromecast/common/media",
    "//content/public/common",
    "//net",
    "//services/network/public/cpp:cpp",
    "//ui/base",
    "//ui/gfx",
    "//url:url",
  ]

  if (enable_chromecast_extensions) {
    sources += [
      "cast_extensions_api_provider.cc",
      "cast_extensions_api_provider.h",
      "cast_extensions_client.cc",
      "cast_extensions_client.h",
      "cast_redirect_manifest_handler.cc",
      "cast_redirect_manifest_handler.h",
      "extensions_api/cast_api_permissions.cc",
      "extensions_api/cast_api_permissions.h",
      "extensions_api/cast_extension_messages.cc",
      "extensions_api/cast_extension_messages.h",
    ]

    deps += [
      "//chromecast/common/extensions_api:api",
      "//chromecast/common/extensions_api:extensions_features",
      "//components/version_info",
      "//extensions:extensions_resources_grd_grit",
      "//extensions/common",
      "//extensions/common:core_api_provider",
      "//extensions/common/api",
      "//extensions/shell:resources",
      "//extensions/shell:resources_grit",
    ]
  }

  if (!is_fuchsia) {
    deps += [ "//components/services/heap_profiling/public/cpp" ]
  }
}
