blob: b529c499eefad0577080c712a8adc9dd72869532 [file] [log] [blame]
prashantv4025129e2015-04-21 21:54:221# Copyright 2015 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
slanca520532015-11-05 20:35:335import("//build/config/features.gni")
6import("//build/config/locales.gni")
7import("//build/config/ui.gni")
slan87db9d12015-10-05 20:37:388import("//chromecast/build/tests/cast_test.gni")
prashantv4025129e2015-04-21 21:54:229import("//chromecast/chromecast.gni")
slan0c9838b2015-08-05 18:37:4010import("//tools/grit/repack.gni")
11import("//ui/ozone/ozone.gni")
prashantv4025129e2015-04-21 21:54:2212
slan9ccf3592015-09-10 19:40:3313declare_args() {
14 # TODO(slan): This most likely needs to be moved into a .gni file.
15 use_chromecast_webui = true
16}
17
slan62afce42015-11-13 22:53:5818if (use_playready) {
19 config("playready_config") {
20 defines = [ "PLAYREADY_CDM_AVAILABLE" ]
prashantv4025129e2015-04-21 21:54:2221 }
22}
23
slan87db9d12015-10-05 20:37:3824# A list of all public test() binaries. This is an organizational target that
25# cannot be depended upon or built directly. Build cast_group_test_list instead.
26cast_test_group("cast_tests") {
27 tests = [
28 "//base:base_unittests",
slanf48fe872015-06-23 19:41:5229 "//chromecast/base:cast_base_unittests",
gunsch5ed6d7d2015-08-31 22:56:1930 "//chromecast/crypto:cast_crypto_unittests",
slan87db9d12015-10-05 20:37:3831 "//content/test:content_unittests",
32 "//crypto:crypto_unittests",
33 "//ipc:ipc_tests",
34 "//jingle:jingle_unittests",
35 "//media:media_unittests",
36 "//media/midi:midi_unittests",
37 "//net:net_unittests",
38 "//ppapi:ppapi_unittests",
39 "//sandbox/linux:sandbox_linux_unittests",
40 "//sql:sql_unittests",
41 "//sync:sync_unit_tests",
42 "//third_party/cacheinvalidation:cacheinvalidation_unittests",
43 "//ui/base:ui_base_unittests",
44 "//url:url_unittests",
slanf48fe872015-06-23 19:41:5245 ]
slan87db9d12015-10-05 20:37:3846
sanfin09990de52015-11-16 19:08:1947 if (is_linux) {
48 tests += [ "//chromecast/crash:cast_crash_unittests" ]
49 }
50
slan87db9d12015-10-05 20:37:3851 filters = []
52
53 if (target_cpu == "arm" && target_os == "linux") {
54 filters += [
55 # Run net_unittests first to avoid random failures due to slow python startup
56 # KeygenHandlerTest.SmokeTest and KeygenHandlerTest.ConcurrencyTest fail due to
57 # readonly certdb (b/8153161)
58 # URLRequestTestHTTP.GetTest_ManyCookies takes roughly 55s to run. Increase
59 # timeout to 90s from 45s to allow it to pass (b/19821476)
60 # ProxyScriptFetcherImplTest.HttpMimeType is flaking (b/19848784)
61 # Running a batch of net_unittests has high overhead. Run tests in batches of 25 to reduce number of batches (b/23156294).
62 "net_unittests --gtest_filter=-KeygenHandlerTest.SmokeTest:KeygenHandlerTest.ConcurrencyTest:ProxyScriptFetcherImplTest.HttpMimeType --test-launcher-timeout=90000 --test-launcher-batch-limit=25",
63
64 # Disable ProcessMetricsTest.GetNumberOfThreads (b/15610509)
65 # Disable ProcessUtilTest.* (need to define OS_ANDROID)
66 # Disable StackContainer.BufferAlignment (don't support 16-byte alignment)
67 # Disable SystemMetrics2Test.GetSystemMemoryInfo (buffers>0 can't be guaranteed)
68 "base_unittests --gtest_filter=-ProcessMetricsTest.GetNumberOfThreads:ProcessUtilTest.*:StackContainer.BufferAlignment:SystemMetrics2Test.GetSystemMemoryInfo",
69
70 # DesktopCaptureDeviceTest.*: No capture device on Eureka
71 # Disable PepperGamepadHostTest.WaitForReply (pepper not supported on Eureka)
72 # Disable GpuDataManagerImplPrivateTest.SetGLStrings and
73 # RenderWidgetHostTest.Background because we disable the blacklist to enable WebGL (b/16142554)
74 "content_unittests --gtest_filter=-DOMStorageDatabaseTest.TestCanOpenAndReadWebCoreDatabase:DesktopCaptureDeviceTest.Capture:GamepadProviderTest.PollingAccess:GpuDataManagerImplPrivateTest.SetGLStrings:PepperGamepadHostTest.WaitForReply:RenderWidgetHostTest.Background",
75
76 # Disable VP9 related tests (b/18593324)
77 # PipelineIntegrationTest.BasicPlayback_MediaSource_VP9_WebM
78 # PipelineIntegrationTest.BasicPlayback_VideoOnly_VP9_WebM
79 # PipelineIntegrationTest.BasicPlayback_VP9*
80 # PipelineIntegrationTest.P444_VP9_WebM
81 # Disable VP8A tests (b/18593324)
82 # PipelineIntegrationTest.BasicPlayback_VP8A*
83 # Disable OpusAudioDecoderTest/AudioDecoderTest.ProduceAudioSamples/0 (unit
84 # test fails when Opus decoder uses fixed-point)
85 # Due to b/16456550, disable the following four test cases:
86 # AudioOutputControllerTest.PlayDivertSwitchDeviceRevertClose
87 # AudioOutputControllerTest.PlaySwitchDeviceClose
88 # AudioStreamHandlerTest.Play
89 # SoundsManagerTest.Play
90 # Disable AudioStreamHandlerTest.ConsecutivePlayRequests (b/16539293)
91 "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",
92 "sync_unit_tests --gtest_filter=-SyncHttpBridgeTest.*",
93
94 # DoAppendUTF8Invalid fails because of dcheck_always_on flag in Eng builds
95 "url_unittests --gtest_filter=-URLCanonTest.DoAppendUTF8Invalid",
96 ]
97 } else if (target_cpu != "arm" || target_os == "android") {
98 filters += [
99 # Disable PipelineIntegrationTest.BasicPlayback_MediaSource_VP9_WebM (not supported)
100 "media_unittests --gtest_filter=-PipelineIntegrationTest.BasicPlayback_MediaSource_VP9_WebM",
101 ]
102 }
103
104 if (!is_android) {
105 tests += [
106 "//chromecast/app:cast_shell_unittests",
107 "//chromecast/browser:cast_shell_browser_test",
108 "//chromecast/media:cast_media_unittests",
109 ]
110
111 filters += [ "cast_shell_browser_test --no-sandbox --disable-gpu" ]
112 }
113
114 if (!disable_display) {
115 tests += [ "//gpu:gpu_unittests" ]
116 } else {
117 filters += [
118 # These are not supported by the backend right now. b/21737919
119 "cast_media_unittests --gtest_filter=-AudioVideoPipelineDeviceTest.VorbisPlayback:AudioVideoPipelineDeviceTest.WebmPlayback",
120 ]
121 }
122}
123
124# Creates the build and run lists for all test targets.
125cast_test_group_list("cast_test_lists") {
126 build_list_path = "$root_out_dir/tests/build_test_list.txt"
127
128 run_list_path = "$root_out_dir/tests/run_test_list.txt"
129
altimin5abfd722015-11-12 18:40:58130 additional_options = [ "--ozone-platform=headless" ]
slan87db9d12015-10-05 20:37:38131
132 build_tests = true
133
134 test_groups = [ ":cast_tests" ]
135
136 if (chromecast_branding != "public") {
137 test_groups += [ "//chromecast/internal:internal_cast_tests" ]
138 }
slanf48fe872015-06-23 19:41:52139}
slan0c9838b2015-08-05 18:37:40140
141source_set("cast_shell_common") {
142 deps = [
slan0c9838b2015-08-05 18:37:40143 ":cast_shell_pak",
slanca520532015-11-05 20:35:33144 ":chromecast_locales_pak",
slan0c9838b2015-08-05 18:37:40145 "//chromecast/app",
146 "//chromecast/browser",
147 "//chromecast/common",
148 "//chromecast/common/media",
149 "//chromecast/renderer",
150 ]
151}
152
153source_set("cast_shell_media") {
154 deps = [
155 "//chromecast/browser/media",
156 "//chromecast/common/media",
157 "//chromecast/renderer/media",
158 ]
159}
160
161executable("cast_shell") {
162 sources = [
163 "app/cast_main.cc",
164 ]
165
166 deps = [
167 ":cast_shell_common",
168 ":cast_shell_media",
brettwba7a73d2015-08-31 22:17:39169 "//build/config/sanitizers:deps",
slan0c9838b2015-08-05 18:37:40170 "//chromecast/app",
171 "//content/public/app:both",
172 ]
173
slan9ccf3592015-09-10 19:40:33174 if (chromecast_branding != "public") {
175 deps += [ "//chromecast/internal:cast_shell_internal" ]
176 }
177
slan0c9838b2015-08-05 18:37:40178 if (ozone_platform_egltest) {
179 deps += [ "//ui/ozone/platform/egltest:eglplatform_shim_x11" ]
180 }
181}
182
183repack("cast_shell_pak") {
184 sources = [
185 "$root_gen_dir/blink/public/resources/blink_image_resources_100_percent.pak",
186 "$root_gen_dir/blink/public/resources/blink_resources.pak",
187 "$root_gen_dir/chromecast/app/shell_resources.pak",
188 "$root_gen_dir/content/app/resources/content_resources_100_percent.pak",
189 "$root_gen_dir/content/app/strings/content_strings_en-US.pak",
190 "$root_gen_dir/content/content_resources.pak",
191 "$root_gen_dir/net/net_resources.pak",
192 "$root_gen_dir/ui/resources/ui_resources_100_percent.pak",
193 "$root_gen_dir/ui/resources/webui_resources.pak",
194 "$root_gen_dir/ui/strings/app_locale_settings_en-US.pak",
195 "$root_gen_dir/ui/strings/ui_strings_en-US.pak",
196 ]
197
slan0c9838b2015-08-05 18:37:40198 output = "$root_out_dir/assets/cast_shell.pak"
199
200 deps = [
201 "//chromecast/app:resources",
202 "//content:resources",
203 "//content/app/resources",
204 "//content/app/strings",
205 "//net:net_resources",
206 "//third_party/WebKit/public:resources",
207 "//third_party/WebKit/public:image_resources_grit",
208 "//ui/resources",
209 "//ui/strings",
210 ]
211
slan9ccf3592015-09-10 19:40:33212 if (chromecast_branding != "public") {
213 sources +=
214 [ "$root_gen_dir/chromecast/internal/shell/app/sound_resources.pak" ]
215
216 deps += [ "//chromecast/internal/shell/app:chromecast_sound_resources" ]
217
218 if (use_chromecast_webui) {
219 sources += [
220 "$root_gen_dir/chromecast/internal/webui/app_resources.pak",
221 "$root_gen_dir/chromecast/internal/webui/cast_webui_resources.pak",
222 ]
223
224 deps += [
225 "//chromecast/internal/webui:chromecast_app_resources",
226 "//chromecast/internal/webui:chromecast_webui_resources",
227 ]
228 }
slan0c9838b2015-08-05 18:37:40229 }
230}
slanca520532015-11-05 20:35:33231
232# GYP target: chromecast_locales.gyp:chromecast_locales_pak
233action("chromecast_locales_pak") {
234 script = "//chromecast/tools/build/chromecast_repack_locales.py"
235
236 # .pak resources in |grit_out_dir| with the same suffix are packed into a
237 # single resource and placed in |locales_dir|. The original .pak resources
238 # are generated by this target's dependencies.
239 grit_out_dir = "$root_gen_dir/chromecast_strings"
240 locales_dir = "$root_out_dir/chromecast_locales"
241
242 sources = []
243 outputs = []
244
245 # |locales| is an array of suffixes declared in //build/config/locals.gni.
246 foreach(locale, locales) {
247 sources += [ "$grit_out_dir/chromecast_settings_$locale.pak" ]
248 outputs += [ "$locales_dir/$locale.pak" ]
249 }
250 deps = [
251 "//chromecast/app:chromecast_settings",
252 ]
253
254 # Include string resources for internal builds.
255 if (chromecast_branding != "public") {
256 foreach(locale, locales) {
257 sources += [ "$grit_out_dir/app_strings_$locale.pak" ]
258 }
259 deps += [ "//chromecast/internal/webui:chromecast_app_strings" ]
260 }
261
262 # This script only accepts the following values for branding:
263 assert(chromecast_branding == "public" || chromecast_branding == "internal" ||
264 chromecast_branding == "google")
265 args = [
266 "-b",
267 "$chromecast_branding",
268 "-g",
269 rebase_path("$root_gen_dir/chromecast_strings"),
270 "-x",
271 rebase_path("$root_out_dir/chromecast_locales"),
272 ] + locales
273}