blob: 162d435d7be2f0417a65e96cc294ff1e91960115 [file] [log] [blame]
# 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("//services/service_manager/public/cpp/service.gni")
import("//services/service_manager/public/service_manifest.gni")
import("//testing/test.gni")
config("mojo_media_config") {
if (!enable_mojo_media) {
assert(mojo_media_services == [], "Mojo media is not enabled")
assert(mojo_media_host == "none", "Mojo media is not enabled")
assert(!enable_test_mojo_media_client, "Mojo media is not enabled")
} else {
defines = [ "ENABLE_MOJO_MEDIA" ]
assert(mojo_media_services != [], "No mojo media service specified")
foreach(service, mojo_media_services) {
if (service == "renderer") {
defines += [ "ENABLE_MOJO_RENDERER" ]
} else if (service == "cdm") {
defines += [ "ENABLE_MOJO_CDM" ]
} else if (service == "audio_decoder") {
defines += [ "ENABLE_MOJO_AUDIO_DECODER" ]
} else if (service == "video_decoder") {
defines += [ "ENABLE_MOJO_VIDEO_DECODER" ]
} else {
assert(false, "Invalid mojo media service: $service")
}
}
if (mojo_media_host == "browser") {
defines += [ "ENABLE_MOJO_MEDIA_IN_BROWSER_PROCESS" ]
} else if (mojo_media_host == "gpu") {
defines += [ "ENABLE_MOJO_MEDIA_IN_GPU_PROCESS" ]
} else if (mojo_media_host == "utility") {
defines += [ "ENABLE_MOJO_MEDIA_IN_UTILITY_PROCESS" ]
} else {
assert(false, "Invalid mojo media host: $mojo_media_host")
}
if (enable_test_mojo_media_client) {
defines += [ "ENABLE_TEST_MOJO_MEDIA_CLIENT" ]
}
}
}
component("services") {
output_name = "media_mojo_services"
public_deps = [
":lib",
]
}
# TODO(xhwang): Add this intermediate target because ServiceTest doesn't support
# services that depend on shared libraries in component build.
# See http://crbug.com/670094
source_set("lib") {
sources = [
"demuxer_stream_provider_shim.cc",
"demuxer_stream_provider_shim.h",
"gpu_mojo_media_client.cc",
"gpu_mojo_media_client.h",
"interface_factory_impl.cc",
"interface_factory_impl.h",
"media_mojo_export.h",
"media_service.cc",
"media_service.h",
"media_service_factory.cc",
"media_service_factory.h",
"mojo_audio_decoder_service.cc",
"mojo_audio_decoder_service.h",
"mojo_cdm_allocator.cc",
"mojo_cdm_allocator.h",
"mojo_cdm_promise.cc",
"mojo_cdm_promise.h",
"mojo_cdm_service.cc",
"mojo_cdm_service.h",
"mojo_cdm_service_context.cc",
"mojo_cdm_service_context.h",
"mojo_decryptor_service.cc",
"mojo_decryptor_service.h",
"mojo_demuxer_stream_adapter.cc",
"mojo_demuxer_stream_adapter.h",
"mojo_media_client.cc",
"mojo_media_client.h",
"mojo_provision_fetcher.cc",
"mojo_provision_fetcher.h",
"mojo_renderer_service.cc",
"mojo_renderer_service.h",
"mojo_video_decoder_service.cc",
"mojo_video_decoder_service.h",
"strong_binding_set.h",
"test_mojo_media_client.cc",
"test_mojo_media_client.h",
]
defines = [ "MEDIA_MOJO_IMPLEMENTATION" ]
# TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
public_configs = [ ":mojo_media_config" ]
public_deps = [
"//base",
"//media",
"//media/mojo/interfaces",
"//mojo/public/cpp/bindings",
"//mojo/public/cpp/system",
"//services/service_manager/public/cpp",
"//url",
]
deps = [
"//media:cdm_api",
"//media:shared_memory_support",
"//media/mojo/common",
"//mojo/common",
"//services/service_manager/public/interfaces",
]
if (is_android) {
sources += [
"android_mojo_media_client.cc",
"android_mojo_media_client.h",
]
}
}
service("media") {
testonly = true
sources = [
"main.cc",
]
public_deps = [
"//base",
"//media",
]
deps = [
":lib",
"//mojo/public/c/system",
"//services/service_manager/public/cpp",
]
data_deps = [
":media_manifest",
]
}
test("media_service_unittests") {
testonly = true
sources = [
"media_service_unittest.cc",
]
deps = [
"//media",
"//media/base:test_support",
"//media/mojo/clients",
"//media/mojo/common",
"//media/mojo/interfaces",
"//services/service_manager/public/cpp:service_test_support",
"//services/service_manager/public/cpp/test:run_all_service_tests",
"//testing/gmock",
"//testing/gtest",
]
data_deps = [
":media",
":test_manifest",
]
}
service_manifest("media_manifest") {
name = "media"
source = "media_manifest.json"
}
service_manifest("test_manifest") {
name = "media_service_unittests"
source = "test_manifest.json"
}
test("media_pipeline_integration_unittests") {
testonly = true
deps = [
"//media/test:mojo_pipeline_integration_tests",
"//services/service_manager/public/cpp/test:run_all_service_tests",
]
data_deps = [
":media",
":pipeline_test_manifest",
]
}
service_manifest("pipeline_test_manifest") {
name = "media_pipeline_integration_unittests"
source = "pipeline_test_manifest.json"
}