# 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/buildflag_header.gni")
import("//build/config/compiler/compiler.gni")
import("//build/config/features.gni")
import("//testing/test.gni")

# Public common API headers, mojom and libraries that can be linked and
# referenced both by browser-side and renderer-side components.
component("common") {
  output_name = "blink_common"

  public_deps = [
    "//third_party/blink/public/common:headers",
    "//third_party/blink/public/mojom:mojom_core",
  ]
  deps = [
    "//third_party/blink/common",
  ]
}

source_set("headers") {
  visibility = [
    "//chrome/*",
    "//content/*",
    "//third_party/blink/*",
    "//components/*",
    "//storage/*",
    ":*",
  ]

  sources = [
    "associated_interfaces/associated_interface_provider.h",
    "associated_interfaces/associated_interface_registry.h",
    "blob/blob_utils.h",
    "client_hints/client_hints.h",
    "device_memory/approximated_device_memory.h",
    "experiments/memory_ablation_experiment.h",
    "feature_policy/feature_policy.h",
    "features.h",
    "frame/frame_policy.h",
    "frame/sandbox_flags.h",
    "frame/user_activation_state.h",
    "frame/user_activation_update_source.h",
    "frame/user_activation_update_type.h",
    "manifest/manifest.h",
    "manifest/manifest_share_target_util.h",
    "manifest/web_display_mode.h",
    "message_port/cloneable_message.h",
    "message_port/message_port_channel.h",
    "message_port/string_message_codec.h",
    "message_port/transferable_message.h",
    "mime_util/mime_util.h",
    "origin_policy/origin_policy.h",
    "origin_trials/origin_trial_policy.h",
    "origin_trials/trial_token.h",
    "origin_trials/trial_token_validator.h",
    "page/launching_process_state.h",
    "screen_orientation/web_screen_orientation_enum_traits.h",
    "screen_orientation/web_screen_orientation_lock_type.h",
    "screen_orientation/web_screen_orientation_type.h",
    "service_worker/service_worker_status_code.h",
    "service_worker/service_worker_type_converters.h",
    "service_worker/service_worker_utils.h",
  ]

  public_deps = [
    "//third_party/blink/public/mojom:mojom_core",
  ]

  deps = [
    "//base",
    "//mojo/public/cpp/system",
    "//net",
  ]

  # iOS doesn't use and must not depend on //media
  if (!is_ios) {
    deps += [ "//media" ]
  }
}
