# Copyright 2015 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/config/features.gni") import("//build/config/locales.gni") import("//build/config/ui.gni") import("//chromecast/build/tests/cast_test.gni") import("//chromecast/chromecast.gni") import("//media/media_options.gni") import("//tools/grit/repack.gni") import("//ui/ozone/ozone.gni") declare_args() { # TODO(slan): This most likely needs to be moved into a .gni file. use_chromecast_webui = true } if (use_playready) { config("playready_config") { defines = [ "PLAYREADY_CDM_AVAILABLE" ] } } # A list of all public test() binaries. This is an organizational target that # cannot be depended upon or built directly. Build cast_group_test_list instead. cast_test_group("cast_tests") { tests = [ "//base:base_unittests", "//chromecast/base:cast_base_unittests", "//chromecast/crypto:cast_crypto_unittests", "//content/test:content_unittests", "//crypto:crypto_unittests", "//ipc:ipc_tests", "//jingle:jingle_unittests", "//media:media_unittests", "//media/midi:midi_unittests", "//net:net_unittests", "//ppapi:ppapi_unittests", "//sandbox/linux:sandbox_linux_unittests", "//sql:sql_unittests", "//sync:sync_unit_tests", "//third_party/cacheinvalidation:cacheinvalidation_unittests", "//ui/base:ui_base_unittests", "//url:url_unittests", ] if (is_linux) { tests += [ "//chromecast/crash:cast_crash_unittests" ] } filters = [] # Apply filters to embedded linux devices. if (target_os == "linux" && !is_cast_desktop_build) { filters += [ # Run net_unittests first to avoid random failures due to slow python startup # KeygenHandlerTest.SmokeTest and KeygenHandlerTest.ConcurrencyTest fail due to # readonly certdb (b/8153161) # URLRequestTestHTTP.GetTest_ManyCookies takes roughly 55s to run. Increase # timeout to 90s from 45s to allow it to pass (b/19821476) # ProxyScriptFetcherImplTest.HttpMimeType is flaking (b/19848784) # Running a batch of net_unittests has high overhead. Run tests in batches of 25 to reduce number of batches (b/23156294). "net_unittests --gtest_filter=-KeygenHandlerTest.SmokeTest:KeygenHandlerTest.ConcurrencyTest:ProxyScriptFetcherImplTest.HttpMimeType --test-launcher-timeout=90000 --test-launcher-batch-limit=25", # Disable ProcessMetricsTest.GetNumberOfThreads (b/15610509) # Disable ProcessUtilTest.* (need to define OS_ANDROID) # Disable StackContainer.BufferAlignment (don't support 16-byte alignment) # Disable SystemMetrics2Test.GetSystemMemoryInfo (buffers>0 can't be guaranteed) "base_unittests --gtest_filter=-ProcessMetricsTest.GetNumberOfThreads:ProcessUtilTest.*:StackContainer.BufferAlignment:SystemMetrics2Test.GetSystemMemoryInfo", # DesktopCaptureDeviceTest.*: No capture device on Eureka # Disable PepperGamepadHostTest.WaitForReply (pepper not supported on Eureka) # Disable GpuDataManagerImplPrivateTest.SetGLStrings and # RenderWidgetHostTest.Background because we disable the blacklist to enable WebGL (b/16142554) "content_unittests --gtest_filter=-DOMStorageDatabaseTest.TestCanOpenAndReadWebCoreDatabase:DesktopCaptureDeviceTest.Capture:GamepadProviderTest.PollingAccess:GpuDataManagerImplPrivateTest.SetGLStrings:PepperGamepadHostTest.WaitForReply:RenderWidgetHostTest.Background", # Disable VP9 related tests (b/18593324) # PipelineIntegrationTest.BasicPlayback_MediaSource_VP9_WebM # PipelineIntegrationTest.BasicPlayback_VideoOnly_VP9_WebM # PipelineIntegrationTest.BasicPlayback_VP9* # PipelineIntegrationTest.P444_VP9_WebM # Disable VP8A tests (b/18593324) # PipelineIntegrationTest.BasicPlayback_VP8A* # Disable OpusAudioDecoderTest/AudioDecoderTest.ProduceAudioSamples/0 (unit # test fails when Opus decoder uses fixed-point) # Due to b/16456550, disable the following four test cases: # AudioOutputControllerTest.PlayDivertSwitchDeviceRevertClose # AudioOutputControllerTest.PlaySwitchDeviceClose # AudioStreamHandlerTest.Play # SoundsManagerTest.Play # Disable AudioStreamHandlerTest.ConsecutivePlayRequests (b/16539293) "media_unittests --gtest_filter=-AudioOutputControllerTest.PlayDivertSwitchDeviceRevertClose:AudioOutputControllerTest.PlaySwitchDeviceClose:AudioStreamHandlerTest.Play:AudioStreamHandlerTest.ConsecutivePlayRequests:PipelineIntegrationTest.BasicPlayback_MediaSource_VP9_WebM:PipelineIntegrationTest.BasicPlayback_VideoOnly_VP9_WebM:PipelineIntegrationTest.BasicPlayback_VP9*:PipelineIntegrationTest.P444_VP9_WebM:PipelineIntegrationTest.BasicPlayback_VP8A*:OpusAudioDecoderTest/AudioDecoderTest.ProduceAudioSamples/0:SoundsManagerTest.Play", "sync_unit_tests --gtest_filter=-SyncHttpBridgeTest.*", # DoAppendUTF8Invalid fails because of dcheck_always_on flag in Eng builds "url_unittests --gtest_filter=-URLCanonTest.DoAppendUTF8Invalid", ] } else if (is_cast_desktop_build || target_os == "android") { filters += [ # Disable PipelineIntegrationTest.BasicPlayback_MediaSource_VP9_WebM (not supported) "media_unittests --gtest_filter=-PipelineIntegrationTest.BasicPlayback_MediaSource_VP9_WebM", ] } if (!is_android) { tests += [ "//chromecast/app:cast_shell_unittests", "//chromecast/browser:cast_shell_browser_test", "//chromecast/media:cast_media_unittests", ] # --enable-local-file-accesses => to load sample media files # --test-launcher-jobs=1 => so internal code can bind to port filters += [ "cast_shell_browser_test --no-sandbox --enable-local-file-accesses --enable-cma-media-pipeline --ozone-platform=cast --test-launcher-jobs=1" ] # TODO(slan): Reenable this test for Desktop x86 when CQ supports it. # (b/26429268) if (use_alsa && !is_cast_desktop_build) { tests += [ "//chromecast/media/cma/backend/alsa:alsa_cma_backend_unittests" ] } } if (!disable_display) { tests += [ "//gpu:gpu_unittests" ] } else { filters += [ # These are not supported by the backend right now. b/21737919 "cast_media_unittests --gtest_filter=-AudioVideoPipelineDeviceTest.VorbisPlayback:AudioVideoPipelineDeviceTest.WebmPlayback", ] } } # Creates the build and run lists for all test targets. cast_test_group_list("cast_test_lists") { build_list_path = "$root_out_dir/tests/build_test_list.txt" run_list_path = "$root_out_dir/tests/run_test_list.txt" additional_options = [ "--ozone-platform=headless" ] build_tests = true test_groups = [ ":cast_tests" ] if (chromecast_branding != "public") { test_groups += [ "//chromecast/internal:internal_cast_tests" ] } } source_set("cast_shell_common") { deps = [ ":cast_shell_pak", ":chromecast_locales_pak", "//chromecast/app", "//chromecast/browser", "//chromecast/common", "//chromecast/common/media", "//chromecast/renderer", ] } source_set("cast_shell_media") { deps = [ "//chromecast/browser/media", "//chromecast/common/media", "//chromecast/renderer/media", ] } executable("cast_shell") { sources = [ "app/cast_main.cc", ] deps = [ ":cast_shell_common", ":cast_shell_media", "//build/config/sanitizers:deps", "//chromecast/app", "//content/public/app:both", ] if (chromecast_branding != "public") { deps += [ "//chromecast/internal:cast_shell_internal" ] } if (ozone_platform_egltest) { deps += [ "//ui/ozone/platform/egltest:eglplatform_shim_x11" ] } } repack("cast_shell_pak") { sources = [ "$root_gen_dir/blink/public/resources/blink_image_resources_100_percent.pak", "$root_gen_dir/blink/public/resources/blink_resources.pak", "$root_gen_dir/chromecast/app/shell_resources.pak", "$root_gen_dir/content/app/resources/content_resources_100_percent.pak", "$root_gen_dir/content/app/strings/content_strings_en-US.pak", "$root_gen_dir/content/content_resources.pak", "$root_gen_dir/net/net_resources.pak", "$root_gen_dir/ui/resources/ui_resources_100_percent.pak", "$root_gen_dir/ui/resources/webui_resources.pak", "$root_gen_dir/ui/strings/app_locale_settings_en-US.pak", "$root_gen_dir/ui/strings/ui_strings_en-US.pak", ] output = "$root_out_dir/assets/cast_shell.pak" deps = [ "//chromecast/app:resources", "//content:resources", "//content/app/resources", "//content/app/strings", "//net:net_resources", "//third_party/WebKit/public:image_resources_grit", "//third_party/WebKit/public:resources", "//ui/resources", "//ui/strings", ] if (chromecast_branding != "public") { sources += [ "$root_gen_dir/chromecast/internal/shell/app/sound_resources.pak" ] deps += [ "//chromecast/internal/shell/app:chromecast_sound_resources" ] if (use_chromecast_webui) { sources += [ "$root_gen_dir/chromecast/internal/webui/app_resources.pak", "$root_gen_dir/chromecast/internal/webui/cast_webui_resources.pak", ] deps += [ "//chromecast/internal/webui:chromecast_app_resources", "//chromecast/internal/webui:chromecast_webui_resources", ] } } } # GYP target: chromecast_locales.gyp:chromecast_locales_pak action("chromecast_locales_pak") { script = "//chromecast/tools/build/chromecast_repack_locales.py" # .pak resources in |grit_out_dir| with the same suffix are packed into a # single resource and placed in |locales_dir|. The original .pak resources # are generated by this target's dependencies. grit_out_dir = "$root_gen_dir/chromecast_strings" locales_dir = "$root_out_dir/chromecast_locales" sources = [] outputs = [] # |locales| is an array of suffixes declared in //build/config/locals.gni. foreach(locale, locales) { sources += [ "$grit_out_dir/chromecast_settings_$locale.pak" ] outputs += [ "$locales_dir/$locale.pak" ] } deps = [ "//chromecast/app:chromecast_settings", ] # Include string resources for internal builds. if (chromecast_branding != "public") { foreach(locale, locales) { sources += [ "$grit_out_dir/app_strings_$locale.pak" ] } deps += [ "//chromecast/internal/webui:chromecast_app_strings" ] } # This script only accepts the following values for branding: assert(chromecast_branding == "public" || chromecast_branding == "internal" || chromecast_branding == "google") args = [ "-b", "$chromecast_branding", "-g", rebase_path("$root_gen_dir/chromecast_strings"), "-x", rebase_path("$root_out_dir/chromecast_locales"), ] + locales }