| # 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/catalog/public/tools/catalog.gni") |
| import("//services/service_manager/public/cpp/service.gni") |
| import("//services/service_manager/public/service_manifest.gni") |
| import("//services/service_manager/public/tools/test/service_test.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") |
| mojo_renderer_enabled = false |
| foreach(service, mojo_media_services) { |
| if (service == "renderer") { |
| defines += [ "ENABLE_MOJO_RENDERER" ] |
| mojo_renderer_enabled = true |
| } 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") |
| } |
| } |
| assert( |
| mojo_renderer_enabled || !enable_runtime_media_renderer_selection, |
| "The mojo renderer must be enabled to use runtime media renderer selection.") |
| |
| 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 = [ |
| "gpu_mojo_media_client.cc", |
| "gpu_mojo_media_client.h", |
| "interface_factory_impl.cc", |
| "interface_factory_impl.h", |
| "media_mojo_export.h", |
| "media_resource_shim.cc", |
| "media_resource_shim.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", |
| "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 |
| |
| # crbug.com/676418: Suppress symbol import warnings. |
| if (is_win && is_component_build) { |
| ldflags = [ "/ignore:4217" ] |
| } |
| |
| sources = [ |
| "main.cc", |
| ] |
| |
| public_deps = [ |
| "//base", |
| "//media", |
| ] |
| |
| deps = [ |
| ":lib", |
| "//mojo/public/c/system", |
| "//services/service_manager/public/cpp", |
| ] |
| } |
| |
| # crbug.com/676055: media_service_unittests currently fails to link in Windows |
| # component builds, so don't declare it, otherwise the "all" target will still |
| # try to build it. |
| if (!(is_win && is_component_build)) { |
| service_test("media_service_unittests") { |
| testonly = true |
| |
| sources = [ |
| "media_service_unittest.cc", |
| ] |
| |
| catalog = ":media_service_unittests_catalog" |
| |
| deps = [ |
| "//base", |
| "//media", |
| "//media/base:test_support", |
| "//media/mojo/clients", |
| "//media/mojo/common", |
| "//media/mojo/interfaces", |
| "//services/service_manager/public/cpp:service_test_support", |
| "//testing/gmock", |
| "//testing/gtest", |
| ] |
| |
| data_deps = [ |
| ":media", |
| ] |
| } |
| } # !(is_win && is_component_build) |
| |
| service_manifest("media_manifest") { |
| name = "media" |
| source = "media_manifest.json" |
| } |
| |
| service_manifest("test_manifest") { |
| name = "media_service_unittests" |
| source = "test_manifest.json" |
| } |
| |
| service_test("media_pipeline_integration_unittests") { |
| testonly = true |
| |
| catalog = ":media_pipeline_integration_unittests_catalog" |
| |
| deps = [ |
| "//media/test:mojo_pipeline_integration_tests", |
| ] |
| |
| data_deps = [ |
| ":media", |
| ] |
| } |
| |
| service_manifest("pipeline_test_manifest") { |
| name = "media_pipeline_integration_unittests" |
| source = "pipeline_test_manifest.json" |
| } |
| |
| catalog("media_service_unittests_catalog") { |
| embedded_services = [ ":test_manifest" ] |
| standalone_services = [ ":media_manifest" ] |
| } |
| |
| catalog("media_pipeline_integration_unittests_catalog") { |
| embedded_services = [ ":pipeline_test_manifest" ] |
| standalone_services = [ ":media_manifest" ] |
| } |