# Copyright 2017 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("//third_party/blink/renderer/modules/modules.gni")

blink_modules_sources("exported") {
  sources = [
    "indexed_db_key_builder.cc",
    "web_apply_constraints_request.cc",
    "web_ax_context.cc",
    "web_ax_object.cc",
    "web_crypto_normalize.cc",
    "web_dom_file_system.cc",
    "web_dom_media_stream_track.cc",
    "web_embedded_worker_impl.cc",
    "web_embedded_worker_impl.h",
    "web_idb_key.cc",
    "web_idb_key_range.cc",
    "web_idb_value.cc",
    "web_storage_event_dispatcher_impl.cc",
    "web_user_media_request.cc",
  ]

  defines = [ "BLINK_MODULES_IMPLEMENTATION=1" ]
}

static_library("test_support") {
  deps = [
    "//skia",
    "//third_party/blink/renderer/core:testing",
    "//third_party/blink/renderer/modules:modules_testing",
    "//third_party/blink/renderer/platform",
    "//v8",
  ]

  sources = [
    "web_testing_support.cc",
  ]

  configs += [
    "//third_party/blink/renderer:config",
    "//third_party/blink/renderer/core:blink_core_pch",
  ]
}
