# Copyright 2014 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("//media/media_options.gni")
import("//testing/test.gni")
import("//tools/v8_context_snapshot/v8_context_snapshot.gni")

component("blink") {
  output_name = "media_blink"

  sources = [
    "buffered_data_source_host_impl.cc",
    "buffered_data_source_host_impl.h",
    "cache_util.cc",
    "cache_util.h",
    "cdm_result_promise.h",
    "cdm_result_promise_helper.cc",
    "cdm_result_promise_helper.h",
    "cdm_session_adapter.cc",
    "cdm_session_adapter.h",
    "interval_map.h",
    "key_system_config_selector.cc",
    "key_system_config_selector.h",
    "lru.h",
    "media_blink_export.h",
    "multibuffer.cc",
    "multibuffer.h",
    "multibuffer_data_source.cc",
    "multibuffer_data_source.h",
    "multibuffer_reader.cc",
    "multibuffer_reader.h",
    "new_session_cdm_result_promise.cc",
    "new_session_cdm_result_promise.h",
    "remote_playback_client_wrapper_impl.cc",
    "remote_playback_client_wrapper_impl.h",
    "resource_fetch_context.h",
    "resource_multibuffer_data_provider.cc",
    "resource_multibuffer_data_provider.h",
    "texttrack_impl.cc",
    "texttrack_impl.h",
    "url_index.cc",
    "url_index.h",
    "video_decode_stats_reporter.cc",
    "video_decode_stats_reporter.h",
    "video_frame_compositor.cc",
    "video_frame_compositor.h",
    "watch_time_component.cc",
    "watch_time_component.h",
    "watch_time_reporter.cc",
    "watch_time_reporter.h",
    "webaudiosourceprovider_impl.cc",
    "webaudiosourceprovider_impl.h",
    "webcontentdecryptionmodule_impl.cc",
    "webcontentdecryptionmodule_impl.h",
    "webcontentdecryptionmoduleaccess_impl.cc",
    "webcontentdecryptionmoduleaccess_impl.h",
    "webcontentdecryptionmodulesession_impl.cc",
    "webcontentdecryptionmodulesession_impl.h",
    "webencryptedmediaclient_impl.cc",
    "webencryptedmediaclient_impl.h",
    "webinbandtexttrack_impl.cc",
    "webinbandtexttrack_impl.h",
    "webmediacapabilitiesclient_impl.cc",
    "webmediacapabilitiesclient_impl.h",
    "webmediaplayer_delegate.h",
    "webmediaplayer_params.cc",
    "webmediaplayer_params.h",
    "webmediaplayer_util.cc",
    "webmediaplayer_util.h",
    "webmediasource_impl.cc",
    "webmediasource_impl.h",
    "websourcebuffer_impl.cc",
    "websourcebuffer_impl.h",
  ]

  defines = [ "MEDIA_BLINK_IMPLEMENTATION" ]

  deps = [
    "//base",
    "//cc",
    "//gpu",
    "//media",
    "//media:shared_memory_support",
    "//media/mojo/interfaces",
    "//net",
    "//services/service_manager/public/cpp:cpp",
    "//skia",
    "//third_party/blink/public:blink",
    "//ui/gfx",
    "//ui/gfx/geometry",
    "//url",
  ]

  if (media_use_ffmpeg || !is_android) {
    sources += [
      "webmediaplayer_impl.cc",
      "webmediaplayer_impl.h",
    ]
    if (is_android) {
      sources += [
        "webmediaplayer_cast_android.cc",
        "webmediaplayer_cast_android.h",
      ]
      deps += [ "//gpu/command_buffer/client:gles2_interface" ]
    }
  }
}

test("media_blink_unittests") {
  deps = [
    ":blink",
    "//base",
    "//base/test:test_support",
    "//cc",
    "//gin",
    "//media:test_support",
    "//media/mojo/interfaces",
    "//media/mojo/services",
    "//mojo/core/embedder",
    "//net",
    "//testing/gmock",
    "//testing/gtest",
    "//third_party/blink/public:blink",
    "//third_party/blink/public:test_support",
    "//tools/v8_context_snapshot",
    "//ui/gfx:test_support",
    "//ui/gfx/geometry",
    "//url",
  ]

  data = [
    "//media/test/data/",
  ]

  configs += [
    "//build/config/compiler:no_size_t_to_int_warning",
    "//tools/v8_context_snapshot:use_v8_context_snapshot",
    "//v8:external_startup_data",
  ]

  sources = [
    "buffered_data_source_host_impl_unittest.cc",
    "cache_util_unittest.cc",
    "interval_map_unittest.cc",
    "key_system_config_selector_unittest.cc",
    "lru_unittest.cc",
    "mock_resource_fetch_context.cc",
    "mock_resource_fetch_context.h",
    "mock_webassociatedurlloader.cc",
    "mock_webassociatedurlloader.h",
    "multibuffer_data_source_unittest.cc",
    "multibuffer_unittest.cc",
    "resource_multibuffer_data_provider_unittest.cc",
    "run_all_unittests.cc",
    "test_response_generator.cc",
    "test_response_generator.h",
    "url_index_unittest.cc",
    "video_decode_stats_reporter_unittest.cc",
    "video_frame_compositor_unittest.cc",
    "watch_time_component_unittest.cc",
    "watch_time_reporter_unittest.cc",
    "webaudiosourceprovider_impl_unittest.cc",
    "webmediacapabilitiesclient_impl_unittest.cc",
    "webmediaplayer_impl_unittest.cc",
  ]

  if (is_android) {
    deps += [ "//media/base/android:media_java" ]
    if (use_v8_context_snapshot) {
      deps += [ "//tools/v8_context_snapshot:v8_context_snapshot_assets" ]
    } else {
      deps += [ "//v8:v8_external_startup_data_assets" ]
    }
  }
}
