[Android WebViewShell] Make WebViewLayoutTest runnable with test_runner.py
[chromium-blink-merge.git] / chrome / test / ppapi / ppapi_browsertest.cc
blob5c708284bcf0aeb99a9df1dcdd5125b3b552dac8
1 // Copyright (c) 2012 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.
5 #include "base/path_service.h"
6 #include "base/test/test_timeouts.h"
7 #include "build/build_config.h"
8 #include "chrome/browser/extensions/extension_browsertest.h"
9 #include "chrome/browser/profiles/profile.h"
10 #include "chrome/browser/ui/browser.h"
11 #include "chrome/browser/ui/browser_navigator.h"
12 #include "chrome/browser/ui/extensions/app_launch_params.h"
13 #include "chrome/browser/ui/extensions/application_launch.h"
14 #include "chrome/browser/ui/tabs/tab_strip_model.h"
15 #include "chrome/common/chrome_paths.h"
16 #include "chrome/test/base/ui_test_utils.h"
17 #include "chrome/test/nacl/nacl_browsertest_util.h"
18 #include "chrome/test/ppapi/ppapi_test.h"
19 #include "components/content_settings/core/browser/host_content_settings_map.h"
20 #include "components/nacl/common/nacl_switches.h"
21 #include "content/public/browser/web_contents.h"
22 #include "content/public/common/content_switches.h"
23 #include "content/public/common/url_constants.h"
24 #include "content/public/test/javascript_test_observer.h"
25 #include "content/public/test/test_renderer_host.h"
26 #include "extensions/common/constants.h"
27 #include "extensions/test/extension_test_message_listener.h"
28 #include "ppapi/shared_impl/test_utils.h"
30 using content::RenderViewHost;
32 // This macro finesses macro expansion to do what we want.
33 #define STRIP_PREFIXES(test_name) ppapi::StripTestPrefixes(#test_name)
34 // Turn the given token into a string. This allows us to use precompiler stuff
35 // to turn names into DISABLED_Foo, but still pass a string to RunTest.
36 #define STRINGIFY(test_name) #test_name
37 #define LIST_TEST(test_name) STRINGIFY(test_name) ","
39 // Use these macros to run the tests for a specific interface.
40 // Most interfaces should be tested with both macros.
41 #define TEST_PPAPI_OUT_OF_PROCESS(test_name) \
42 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, test_name) { \
43 RunTest(STRIP_PREFIXES(test_name)); \
46 // Similar macros that test over HTTP.
47 #define TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(test_name) \
48 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, test_name) { \
49 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
52 // Similar macros that test with an SSL server.
53 #define TEST_PPAPI_OUT_OF_PROCESS_WITH_SSL_SERVER(test_name) \
54 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, test_name) { \
55 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \
58 // Disable all NaCl tests for --disable-nacl flag and on Mac ASAN builds.
59 // Flaky on Mac ASAN:
60 // http://crbug.com/437408
61 // http://crbug.com/457501
62 // http://crbug.com/437411
63 // http://crbug.com/501207
65 #if defined(DISABLE_NACL) || (defined(OS_MACOSX) && defined(ADDRESS_SANITIZER))
67 #define TEST_PPAPI_NACL(test_name)
68 #define TEST_PPAPI_NACL_DISALLOWED_SOCKETS(test_name)
69 #define TEST_PPAPI_NACL_WITH_SSL_SERVER(test_name)
70 #define TEST_PPAPI_NACL_SUBTESTS(test_name, run_statement)
72 #else
74 // NaCl based PPAPI tests
75 #define TEST_PPAPI_NACL(test_name) \
76 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, test_name) { \
77 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
78 } \
79 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, test_name) { \
80 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
81 } \
82 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, \
83 MAYBE_PNACL_NONSFI(test_name)) { \
84 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
85 } \
86 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest, \
87 MAYBE_PNACL_TRANSITIONAL_NONSFI(test_name)) { \
88 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
91 // NaCl based PPAPI tests
92 #define TEST_PPAPI_NACL_SUBTESTS(test_name, run_statement) \
93 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, test_name) { \
94 run_statement; \
95 } \
96 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, test_name) { \
97 run_statement; \
98 } \
99 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, \
100 MAYBE_PNACL_NONSFI(test_name)) { \
101 run_statement; \
103 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest, \
104 MAYBE_PNACL_TRANSITIONAL_NONSFI(test_name)) { \
105 run_statement; \
108 // NaCl based PPAPI tests with disallowed socket API
109 #define TEST_PPAPI_NACL_DISALLOWED_SOCKETS(test_name) \
110 IN_PROC_BROWSER_TEST_F(PPAPINaClTestDisallowedSockets, test_name) { \
111 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
114 // NaCl based PPAPI tests with SSL server
115 #define TEST_PPAPI_NACL_WITH_SSL_SERVER(test_name) \
116 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, test_name) { \
117 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \
119 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, test_name) { \
120 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \
122 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, \
123 MAYBE_PNACL_NONSFI(test_name)) { \
124 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \
126 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest, \
127 MAYBE_PNACL_TRANSITIONAL_NONSFI(test_name)) { \
128 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \
132 #endif // DISABLE_NACL
135 // Interface tests.
138 // Flaky, http://crbug.com/111355
139 TEST_PPAPI_OUT_OF_PROCESS(DISABLED_Broker)
141 IN_PROC_BROWSER_TEST_F(PPAPIBrokerInfoBarTest, Accept) {
142 // Accepting the infobar should grant permission to access the PPAPI broker.
143 InfoBarObserver observer(this);
144 observer.ExpectInfoBarAndAccept(true);
146 // PPB_Broker_Trusted::IsAllowed should return false before the infobar is
147 // popped and true after the infobar is popped.
148 RunTest("Broker_IsAllowedPermissionDenied");
149 RunTest("Broker_ConnectPermissionGranted");
150 RunTest("Broker_IsAllowedPermissionGranted");
152 // It should also set a content settings exception for the site.
153 GURL url = GetTestFileUrl("Broker_ConnectPermissionGranted");
154 HostContentSettingsMap* content_settings =
155 browser()->profile()->GetHostContentSettingsMap();
156 EXPECT_EQ(CONTENT_SETTING_ALLOW,
157 content_settings->GetContentSetting(
158 url, url, CONTENT_SETTINGS_TYPE_PPAPI_BROKER, std::string()));
161 IN_PROC_BROWSER_TEST_F(PPAPIBrokerInfoBarTest, Deny) {
162 // Canceling the infobar should deny permission to access the PPAPI broker.
163 InfoBarObserver observer(this);
164 observer.ExpectInfoBarAndAccept(false);
166 // PPB_Broker_Trusted::IsAllowed should return false before and after the
167 // infobar is popped.
168 RunTest("Broker_IsAllowedPermissionDenied");
169 RunTest("Broker_ConnectPermissionDenied");
170 RunTest("Broker_IsAllowedPermissionDenied");
172 // It should also set a content settings exception for the site.
173 GURL url = GetTestFileUrl("Broker_ConnectPermissionDenied");
174 HostContentSettingsMap* content_settings =
175 browser()->profile()->GetHostContentSettingsMap();
176 EXPECT_EQ(CONTENT_SETTING_BLOCK,
177 content_settings->GetContentSetting(
178 url, url, CONTENT_SETTINGS_TYPE_PPAPI_BROKER, std::string()));
181 IN_PROC_BROWSER_TEST_F(PPAPIBrokerInfoBarTest, Blocked) {
182 // Block access to the PPAPI broker.
183 browser()->profile()->GetHostContentSettingsMap()->SetDefaultContentSetting(
184 CONTENT_SETTINGS_TYPE_PPAPI_BROKER, CONTENT_SETTING_BLOCK);
186 // We shouldn't see an infobar.
187 InfoBarObserver observer(this);
189 RunTest("Broker_ConnectPermissionDenied");
190 RunTest("Broker_IsAllowedPermissionDenied");
193 IN_PROC_BROWSER_TEST_F(PPAPIBrokerInfoBarTest, Allowed) {
194 // Always allow access to the PPAPI broker.
195 browser()->profile()->GetHostContentSettingsMap()->SetDefaultContentSetting(
196 CONTENT_SETTINGS_TYPE_PPAPI_BROKER, CONTENT_SETTING_ALLOW);
198 // We shouldn't see an infobar.
199 InfoBarObserver observer(this);
201 RunTest("Broker_ConnectPermissionGranted");
202 RunTest("Broker_IsAllowedPermissionGranted");
205 TEST_PPAPI_NACL(Console)
207 TEST_PPAPI_NACL(Core)
209 // Non-NaCl TraceEvent tests are in content/test/ppapi/ppapi_browsertest.cc.
210 TEST_PPAPI_NACL(TraceEvent)
212 TEST_PPAPI_NACL(InputEvent)
214 // Flaky on Linux and Windows. http://crbug.com/135403
215 #if defined(OS_LINUX) || defined(OS_WIN)
216 #define MAYBE_ImeInputEvent DISABLED_ImeInputEvent
217 #else
218 #define MAYBE_ImeInputEvent ImeInputEvent
219 #endif
221 TEST_PPAPI_OUT_OF_PROCESS(MAYBE_ImeInputEvent)
222 TEST_PPAPI_NACL(MAYBE_ImeInputEvent)
224 // Graphics2D_Dev isn't supported in NaCl, only test the other interfaces
225 // TODO(jhorwich) Enable when Graphics2D_Dev interfaces are proxied in NaCl.
226 TEST_PPAPI_NACL(Graphics2D_InvalidResource)
227 TEST_PPAPI_NACL(Graphics2D_InvalidSize)
228 TEST_PPAPI_NACL(Graphics2D_Humongous)
229 TEST_PPAPI_NACL(Graphics2D_InitToZero)
230 TEST_PPAPI_NACL(Graphics2D_Describe)
231 TEST_PPAPI_NACL(Graphics2D_Paint)
232 TEST_PPAPI_NACL(Graphics2D_Scroll)
233 TEST_PPAPI_NACL(Graphics2D_Replace)
234 TEST_PPAPI_NACL(Graphics2D_Flush)
235 TEST_PPAPI_NACL(Graphics2D_FlushOffscreenUpdate)
236 TEST_PPAPI_NACL(Graphics2D_BindNull)
238 #if defined(OS_WIN)
239 #if defined(USE_AURA)
240 // These tests fail with the test compositor which is what's used by default for
241 // browser tests on Windows Aura. Renable when the software compositor is
242 // available.
243 #define MAYBE_IN_Graphics3D DISABLED_Graphics3D
244 #define MAYBE_OUT_Graphics3D DISABLED_Graphics3D
245 #define MAYBE_NACL_Graphics3D DISABLED_Graphics3D
246 #else // defined(USE_AURA)
247 // In-process and NaCl tests are having flaky failures on Win: crbug.com/242252
248 #define MAYBE_IN_Graphics3D DISABLED_Graphics3D
249 #define MAYBE_OUT_Graphics3D Graphics3D
250 #define MAYBE_NACL_Graphics3D DISABLED_Graphics3D
251 #endif // defined(USE_AURA)
252 #elif defined(OS_MACOSX)
253 // These tests fail when using the legacy software mode. Reenable when the
254 // software compositor is enabled crbug.com/286038
255 #define MAYBE_IN_Graphics3D DISABLED_Graphics3D
256 #define MAYBE_OUT_Graphics3D DISABLED_Graphics3D
257 #define MAYBE_NACL_Graphics3D DISABLED_Graphics3D
258 #else
259 // The tests are failing in-process. crbug.com/280282
260 #define MAYBE_IN_Graphics3D DISABLED_Graphics3D
261 #define MAYBE_OUT_Graphics3D Graphics3D
262 #define MAYBE_NACL_Graphics3D Graphics3D
263 #endif
264 TEST_PPAPI_OUT_OF_PROCESS(MAYBE_OUT_Graphics3D)
265 TEST_PPAPI_NACL(MAYBE_NACL_Graphics3D)
267 TEST_PPAPI_NACL(ImageData)
269 // TCPSocket and TCPSocketPrivate tests.
270 #define RUN_TCPSOCKET_SUBTESTS \
271 RunTestViaHTTP( \
272 LIST_TEST(TCPSocket_Connect) \
273 LIST_TEST(TCPSocket_ReadWrite) \
274 LIST_TEST(TCPSocket_SetOption) \
275 LIST_TEST(TCPSocket_Listen) \
276 LIST_TEST(TCPSocket_Backlog) \
277 LIST_TEST(TCPSocket_Interface_1_0) \
280 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, TCPSocket) {
281 RUN_TCPSOCKET_SUBTESTS;
283 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, TCPSocket) {
284 RUN_TCPSOCKET_SUBTESTS;
286 #if defined(OS_MACOSX) && defined(ADDRESS_SANITIZER)
287 // Flaky on Mac ASAN: http://crbug.com/437411.
288 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, DISABLED_TCPSocket) {
289 RUN_TCPSOCKET_SUBTESTS;
291 #else
292 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, DISABLED_TCPSocket) {
293 RUN_TCPSOCKET_SUBTESTS;
295 #endif
296 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
297 MAYBE_PNACL_NONSFI(TCPSocket)) {
298 RUN_TCPSOCKET_SUBTESTS;
300 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
301 MAYBE_PNACL_TRANSITIONAL_NONSFI(TCPSocket)) {
302 RUN_TCPSOCKET_SUBTESTS;
306 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(TCPServerSocketPrivate)
307 TEST_PPAPI_NACL(TCPServerSocketPrivate)
309 TEST_PPAPI_OUT_OF_PROCESS_WITH_SSL_SERVER(TCPSocketPrivate)
311 TEST_PPAPI_NACL_WITH_SSL_SERVER(TCPSocketPrivate)
313 TEST_PPAPI_OUT_OF_PROCESS_WITH_SSL_SERVER(TCPSocketPrivateTrusted)
315 // UDPSocket tests.
316 // UDPSocket_Broadcast is disabled for OSX because it requires root
317 // permissions on OSX 10.7+.
318 #if defined(OS_MACOSX)
319 #define MAYBE_UDPSocket_Broadcast DISABLED_UDPSocket_Broadcast
320 #else
321 #define MAYBE_UDPSocket_Broadcast UDPSocket_Broadcast
322 #endif
324 #define UDPSOCKET_TEST(_test) \
325 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, _test) { \
326 RunTestViaHTTP(LIST_TEST(_test)); \
328 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, _test) { \
329 RunTestViaHTTP(LIST_TEST(_test)); \
331 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(_test)) { \
332 RunTestViaHTTP(LIST_TEST(_test)); \
334 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, _test) { \
335 RunTestViaHTTP(LIST_TEST(_test)); \
337 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, \
338 MAYBE_PNACL_NONSFI(_test)) { \
339 RunTestViaHTTP(LIST_TEST(_test)); \
341 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest, \
342 MAYBE_PNACL_TRANSITIONAL_NONSFI(_test)) { \
343 RunTestViaHTTP(LIST_TEST(_test)); \
346 // Instead of one single test for all UDPSocket features (like it is done for
347 // TCPSocket), split them into multiple, making it easier to isolate which tests
348 // are failing.
349 UDPSOCKET_TEST(UDPSocket_ReadWrite)
350 UDPSOCKET_TEST(UDPSocket_SetOption)
351 UDPSOCKET_TEST(UDPSocket_SetOption_1_0)
352 UDPSOCKET_TEST(UDPSocket_SetOption_1_1)
353 UDPSOCKET_TEST(MAYBE_UDPSocket_Broadcast)
354 UDPSOCKET_TEST(UDPSocket_ParallelSend)
355 UDPSOCKET_TEST(UDPSocket_Multicast)
357 // UDPSocketPrivate tests.
358 // UDPSocketPrivate_Broadcast is disabled for OSX because it requires root
359 // permissions on OSX 10.7+.
360 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate_Connect)
361 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate_ConnectFailure)
362 #if !defined(OS_MACOSX)
363 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate_Broadcast)
364 #endif // !defined(OS_MACOSX)
365 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate_SetSocketFeatureErrors)
366 TEST_PPAPI_NACL(UDPSocketPrivate_Connect)
367 TEST_PPAPI_NACL(UDPSocketPrivate_ConnectFailure)
368 #if !defined(OS_MACOSX)
369 TEST_PPAPI_NACL(UDPSocketPrivate_Broadcast)
370 #endif // !defined(OS_MACOSX)
371 TEST_PPAPI_NACL(UDPSocketPrivate_SetSocketFeatureErrors)
373 // Disallowed socket tests.
374 TEST_PPAPI_NACL_DISALLOWED_SOCKETS(HostResolverPrivateDisallowed)
375 TEST_PPAPI_NACL_DISALLOWED_SOCKETS(TCPServerSocketPrivateDisallowed)
376 TEST_PPAPI_NACL_DISALLOWED_SOCKETS(TCPSocketPrivateDisallowed)
377 TEST_PPAPI_NACL_DISALLOWED_SOCKETS(UDPSocketPrivateDisallowed)
379 // HostResolver and HostResolverPrivate tests.
380 #define RUN_HOST_RESOLVER_SUBTESTS \
381 RunTestViaHTTP( \
382 LIST_TEST(HostResolver_Empty) \
383 LIST_TEST(HostResolver_Resolve) \
384 LIST_TEST(HostResolver_ResolveIPv4) \
387 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, HostResolver) {
388 RUN_HOST_RESOLVER_SUBTESTS;
391 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, HostResolver) {
392 RUN_HOST_RESOLVER_SUBTESTS;
394 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, HostResolver) {
395 RUN_HOST_RESOLVER_SUBTESTS;
397 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
398 MAYBE_PNACL_NONSFI(HostResolver)) {
399 RUN_HOST_RESOLVER_SUBTESTS;
401 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
402 MAYBE_PNACL_TRANSITIONAL_NONSFI(HostResolver)) {
403 RUN_HOST_RESOLVER_SUBTESTS;
406 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(HostResolverPrivate_Resolve)
407 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(HostResolverPrivate_ResolveIPv4)
408 TEST_PPAPI_NACL(HostResolverPrivate_Resolve)
409 TEST_PPAPI_NACL(HostResolverPrivate_ResolveIPv4)
411 // URLLoader tests. These are split into multiple test fixtures because if we
412 // run them all together, they tend to time out.
413 #define RUN_URLLOADER_SUBTESTS_0 \
414 RunTestViaHTTP( \
415 LIST_TEST(URLLoader_BasicGET) \
416 LIST_TEST(URLLoader_BasicPOST) \
417 LIST_TEST(URLLoader_BasicFilePOST) \
418 LIST_TEST(URLLoader_BasicFileRangePOST) \
419 LIST_TEST(URLLoader_CompoundBodyPOST) \
422 #define RUN_URLLOADER_SUBTESTS_1 \
423 RunTestViaHTTP( \
424 LIST_TEST(URLLoader_EmptyDataPOST) \
425 LIST_TEST(URLLoader_BinaryDataPOST) \
426 LIST_TEST(URLLoader_CustomRequestHeader) \
427 LIST_TEST(URLLoader_FailsBogusContentLength) \
428 LIST_TEST(URLLoader_StreamToFile) \
431 // TODO(bbudge) Fix Javascript URLs for trusted loaders.
432 // http://crbug.com/103062
433 #define RUN_URLLOADER_SUBTESTS_2 \
434 RunTestViaHTTP( \
435 LIST_TEST(URLLoader_UntrustedSameOriginRestriction) \
436 LIST_TEST(URLLoader_UntrustedCrossOriginRequest) \
437 LIST_TEST(URLLoader_UntrustedJavascriptURLRestriction) \
438 LIST_TEST(DISABLED_URLLoader_TrustedJavascriptURLRestriction) \
441 #define RUN_URLLOADER_NACL_SUBTESTS_2 \
442 RunTestViaHTTP( \
443 LIST_TEST(URLLoader_UntrustedSameOriginRestriction) \
444 LIST_TEST(URLLoader_UntrustedCrossOriginRequest) \
445 LIST_TEST(URLLoader_UntrustedJavascriptURLRestriction) \
446 LIST_TEST(DISABLED_URLLoader_TrustedJavascriptURLRestriction) \
449 #define RUN_URLLOADER_SUBTESTS_3 \
450 RunTestViaHTTP( \
451 LIST_TEST(URLLoader_UntrustedHttpRequests) \
452 LIST_TEST(URLLoader_FollowURLRedirect) \
453 LIST_TEST(URLLoader_AuditURLRedirect) \
454 LIST_TEST(URLLoader_AbortCalls) \
455 LIST_TEST(URLLoader_UntendedLoad) \
456 LIST_TEST(URLLoader_PrefetchBufferThreshold) \
459 // Note: we do not support Trusted APIs in NaCl, so these will be skipped.
460 // XRequestedWithHeader isn't trusted per-se, but the header isn't provided
461 // for NaCl and thus must be skipped.
462 #define RUN_URLLOADER_TRUSTED_SUBTESTS \
463 RunTestViaHTTP( \
464 LIST_TEST(URLLoader_TrustedSameOriginRestriction) \
465 LIST_TEST(URLLoader_TrustedCrossOriginRequest) \
466 LIST_TEST(URLLoader_TrustedHttpRequests) \
467 LIST_TEST(URLLoader_XRequestedWithHeader) \
470 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, URLLoader0) {
471 RUN_URLLOADER_SUBTESTS_0;
473 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, URLLoader1) {
474 RUN_URLLOADER_SUBTESTS_1;
476 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, URLLoader2) {
477 RUN_URLLOADER_SUBTESTS_2;
479 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, URLLoader3) {
480 RUN_URLLOADER_SUBTESTS_3;
482 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, URLLoaderTrusted) {
483 RUN_URLLOADER_TRUSTED_SUBTESTS;
485 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, URLLoader0) {
486 RUN_URLLOADER_SUBTESTS_0;
488 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, URLLoader1) {
489 RUN_URLLOADER_SUBTESTS_1;
492 #if defined(OS_MACOSX) && defined(ADDRESS_SANITIZER)
493 // Flaky on Mac ASAN: http://crbug.com/437411.
494 #define MAYBE_URLLoader2 DISABLED_URLLoader2
495 #else
496 #define MAYBE_URLLoader2 URLLoader2
497 #endif
498 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, MAYBE_URLLoader2) {
499 RUN_URLLOADER_SUBTESTS_2;
501 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, URLLoader3) {
502 RUN_URLLOADER_SUBTESTS_3;
505 // Flaky on 32-bit linux bot; http://crbug.com/308906
506 #if defined(OS_LINUX) && defined(ARCH_CPU_X86)
507 #define MAYBE_URLLoader_BasicFilePOST DISABLED_URLLoader_BasicFilePOST
508 #else
509 #define MAYBE_URLLoader_BasicFilePOST URLLoader_BasicFilePOST
510 #endif
512 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, URLLoader0) {
513 RUN_URLLOADER_SUBTESTS_0;
515 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, URLLoader1) {
516 RUN_URLLOADER_SUBTESTS_1;
518 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, URLLoader2) {
519 RUN_URLLOADER_SUBTESTS_2;
521 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, URLLoader3) {
522 RUN_URLLOADER_SUBTESTS_3;
524 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
525 MAYBE_PNACL_NONSFI(URLLoader0)) {
526 RUN_URLLOADER_SUBTESTS_0;
528 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
529 MAYBE_PNACL_NONSFI(URLLoader1)) {
530 RUN_URLLOADER_SUBTESTS_1;
532 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
533 MAYBE_PNACL_NONSFI(URLLoader2)) {
534 RUN_URLLOADER_SUBTESTS_2;
536 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
537 MAYBE_PNACL_NONSFI(URLLoader3)) {
538 RUN_URLLOADER_SUBTESTS_3;
540 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
541 MAYBE_PNACL_TRANSITIONAL_NONSFI(URLLoader0)) {
542 RUN_URLLOADER_SUBTESTS_0;
544 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
545 MAYBE_PNACL_TRANSITIONAL_NONSFI(URLLoader1)) {
546 RUN_URLLOADER_SUBTESTS_1;
548 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
549 MAYBE_PNACL_TRANSITIONAL_NONSFI(URLLoader2)) {
550 RUN_URLLOADER_SUBTESTS_2;
552 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
553 MAYBE_PNACL_TRANSITIONAL_NONSFI(URLLoader3)) {
554 RUN_URLLOADER_SUBTESTS_3;
558 // URLRequestInfo tests.
559 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_CreateAndIsURLRequestInfo)
561 // Timing out on Windows. http://crbug.com/129571
562 #if defined(OS_WIN)
563 #define MAYBE_URLRequest_CreateAndIsURLRequestInfo \
564 DISABLED_URLRequest_CreateAndIsURLRequestInfo
565 #else
566 #define MAYBE_URLRequest_CreateAndIsURLRequestInfo \
567 URLRequest_CreateAndIsURLRequestInfo
568 #endif
569 TEST_PPAPI_NACL(MAYBE_URLRequest_CreateAndIsURLRequestInfo)
571 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_SetProperty)
572 TEST_PPAPI_NACL(URLRequest_SetProperty)
573 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_AppendDataToBody)
574 TEST_PPAPI_NACL(URLRequest_AppendDataToBody)
575 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(DISABLED_URLRequest_AppendFileToBody)
576 TEST_PPAPI_NACL(DISABLED_URLRequest_AppendFileToBody)
577 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_Stress)
578 TEST_PPAPI_NACL(URLRequest_Stress)
580 TEST_PPAPI_OUT_OF_PROCESS(PaintAggregator)
581 TEST_PPAPI_NACL(PaintAggregator)
583 // TODO(danakj): http://crbug.com/115286
584 TEST_PPAPI_NACL(DISABLED_Scrollbar)
586 TEST_PPAPI_NACL(Var)
588 TEST_PPAPI_NACL(VarResource)
590 // PostMessage tests.
591 #define RUN_POSTMESSAGE_SUBTESTS \
592 RunTestViaHTTP( \
593 LIST_TEST(PostMessage_SendInInit) \
594 LIST_TEST(PostMessage_SendingData) \
595 LIST_TEST(PostMessage_SendingString) \
596 LIST_TEST(PostMessage_SendingArrayBuffer) \
597 LIST_TEST(PostMessage_SendingArray) \
598 LIST_TEST(PostMessage_SendingDictionary) \
599 LIST_TEST(PostMessage_SendingResource) \
600 LIST_TEST(PostMessage_SendingComplexVar) \
601 LIST_TEST(PostMessage_MessageEvent) \
602 LIST_TEST(PostMessage_NoHandler) \
603 LIST_TEST(PostMessage_ExtraParam) \
604 LIST_TEST(PostMessage_NonMainThread) \
607 // Windows defines 'PostMessage', so we have to undef it.
608 #ifdef PostMessage
609 #undef PostMessage
610 #endif
612 #if defined(OS_WIN)
613 // http://crbug.com/95557
614 #define MAYBE_PostMessage DISABLED_PostMessage
615 #else
616 #define MAYBE_PostMessage PostMessage
617 #endif
618 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, MAYBE_PostMessage) {
619 RUN_POSTMESSAGE_SUBTESTS;
622 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, PostMessage) {
623 RUN_POSTMESSAGE_SUBTESTS;
625 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, PostMessage) {
626 RUN_POSTMESSAGE_SUBTESTS;
628 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
629 MAYBE_PNACL_NONSFI(PostMessage)) {
630 RUN_POSTMESSAGE_SUBTESTS;
632 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
633 MAYBE_PNACL_TRANSITIONAL_NONSFI(PostMessage)) {
634 RUN_POSTMESSAGE_SUBTESTS;
637 TEST_PPAPI_NACL(Memory)
639 // FileIO tests.
640 #define RUN_FILEIO_SUBTESTS \
641 RunTestViaHTTP( \
642 LIST_TEST(FileIO_Open) \
643 LIST_TEST(FileIO_OpenDirectory) \
644 LIST_TEST(FileIO_AbortCalls) \
645 LIST_TEST(FileIO_ParallelReads) \
646 LIST_TEST(FileIO_ParallelWrites) \
647 LIST_TEST(FileIO_NotAllowMixedReadWrite) \
648 LIST_TEST(FileIO_ReadWriteSetLength) \
649 LIST_TEST(FileIO_ReadToArrayWriteSetLength) \
650 LIST_TEST(FileIO_TouchQuery) \
653 #define RUN_FILEIO_PRIVATE_SUBTESTS \
654 RunTestViaHTTP( \
655 LIST_TEST(FileIO_RequestOSFileHandle) \
656 LIST_TEST(FileIO_RequestOSFileHandleWithOpenExclusive) \
657 LIST_TEST(FileIO_Mmap) \
660 IN_PROC_BROWSER_TEST_F(PPAPIPrivateTest, FileIO_Private) {
661 RUN_FILEIO_PRIVATE_SUBTESTS;
664 // See: crbug.com/421284
665 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, DISABLED_FileIO) {
666 RUN_FILEIO_SUBTESTS;
668 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPIPrivateTest, FileIO_Private) {
669 RUN_FILEIO_PRIVATE_SUBTESTS;
672 // http://crbug.com/313401
673 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, DISABLED_FileIO) {
674 RUN_FILEIO_SUBTESTS;
676 // http://crbug.com/313401
677 IN_PROC_BROWSER_TEST_F(PPAPIPrivateNaClNewlibTest,
678 DISABLED_NaCl_Newlib_FileIO_Private) {
679 RUN_FILEIO_PRIVATE_SUBTESTS;
682 // http://crbug.com/313205
683 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, DISABLED_FileIO) {
684 RUN_FILEIO_SUBTESTS;
686 IN_PROC_BROWSER_TEST_F(PPAPIPrivateNaClPNaClTest,
687 DISABLED_PNaCl_FileIO_Private) {
688 RUN_FILEIO_PRIVATE_SUBTESTS;
691 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, MAYBE_PNACL_NONSFI(FileIO)) {
692 RUN_FILEIO_SUBTESTS;
694 IN_PROC_BROWSER_TEST_F(PPAPIPrivateNaClPNaClNonSfiTest,
695 MAYBE_PNACL_NONSFI(FILEIO_Private)) {
696 RUN_FILEIO_PRIVATE_SUBTESTS;
699 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
700 MAYBE_PNACL_TRANSITIONAL_NONSFI(FileIO)) {
701 RUN_FILEIO_SUBTESTS;
703 IN_PROC_BROWSER_TEST_F(PPAPIPrivateNaClPNaClTransitionalNonSfiTest,
704 MAYBE_PNACL_TRANSITIONAL_NONSFI(FILEIO_Private)) {
705 RUN_FILEIO_PRIVATE_SUBTESTS;
708 // FileRef tests.
709 #define RUN_FILEREF_SUBTESTS_1 \
710 RunTestViaHTTP( \
711 LIST_TEST(FileRef_Create) \
712 LIST_TEST(FileRef_GetFileSystemType) \
713 LIST_TEST(FileRef_GetName) \
714 LIST_TEST(FileRef_GetPath) \
715 LIST_TEST(FileRef_GetParent) \
716 LIST_TEST(FileRef_MakeDirectory) \
719 #define RUN_FILEREF_SUBTESTS_2 \
720 RunTestViaHTTP( \
721 LIST_TEST(FileRef_QueryAndTouchFile) \
722 LIST_TEST(FileRef_DeleteFileAndDirectory) \
723 LIST_TEST(FileRef_RenameFileAndDirectory) \
724 LIST_TEST(FileRef_Query) \
725 LIST_TEST(FileRef_FileNameEscaping) \
728 // Note, the FileRef tests are split into two, because all of them together
729 // sometimes take too long on windows: crbug.com/336999
730 // FileRef_ReadDirectoryEntries is flaky, so left out. See crbug.com/241646.
731 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, FileRef1) {
732 RUN_FILEREF_SUBTESTS_1;
734 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, FileRef2) {
735 RUN_FILEREF_SUBTESTS_2;
738 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, FileRef1) {
739 RUN_FILEREF_SUBTESTS_1;
741 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, FileRef2) {
742 RUN_FILEREF_SUBTESTS_2;
744 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, FileRef1) {
745 RUN_FILEREF_SUBTESTS_1;
747 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, FileRef2) {
748 RUN_FILEREF_SUBTESTS_2;
750 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
751 MAYBE_PNACL_NONSFI(FileRef1)) {
752 RUN_FILEREF_SUBTESTS_1;
754 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
755 MAYBE_PNACL_NONSFI(FileRef2)) {
756 RUN_FILEREF_SUBTESTS_2;
758 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
759 MAYBE_PNACL_TRANSITIONAL_NONSFI(FileRef1)) {
760 RUN_FILEREF_SUBTESTS_1;
762 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
763 MAYBE_PNACL_TRANSITIONAL_NONSFI(FileRef2)) {
764 RUN_FILEREF_SUBTESTS_2;
767 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(FileSystem)
769 // PPAPINaClTest.FileSystem times out consistently on Windows and Mac.
770 // http://crbug.com/130372
771 #if defined(OS_MACOSX) || defined(OS_WIN)
772 #define MAYBE_FileSystem DISABLED_FileSystem
773 #else
774 #define MAYBE_FileSystem FileSystem
775 #endif
777 TEST_PPAPI_NACL(MAYBE_FileSystem)
779 #if defined(OS_MACOSX)
780 // http://crbug.com/103912
781 #define MAYBE_Fullscreen DISABLED_Fullscreen
782 #elif defined(OS_LINUX)
783 // http://crbug.com/146008
784 #define MAYBE_Fullscreen DISABLED_Fullscreen
785 #elif defined(OS_WIN)
786 // http://crbug.com/342269
787 #define MAYBE_Fullscreen DISABLED_Fullscreen
788 #else
789 #define MAYBE_Fullscreen Fullscreen
790 #endif
792 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(MAYBE_Fullscreen)
793 TEST_PPAPI_NACL(MAYBE_Fullscreen)
795 TEST_PPAPI_OUT_OF_PROCESS(X509CertificatePrivate)
797 TEST_PPAPI_OUT_OF_PROCESS(UMA)
798 TEST_PPAPI_NACL(UMA)
800 // NetAddress tests.
801 #define RUN_NETADDRESS_SUBTESTS \
802 RunTestViaHTTP( \
803 LIST_TEST(NetAddress_IPv4Address) \
804 LIST_TEST(NetAddress_IPv6Address) \
805 LIST_TEST(NetAddress_DescribeAsString) \
808 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, NetAddress) {
809 RUN_NETADDRESS_SUBTESTS;
811 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, NetAddress) {
812 RUN_NETADDRESS_SUBTESTS;
814 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, NetAddress) {
815 RUN_NETADDRESS_SUBTESTS;
817 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
818 MAYBE_PNACL_NONSFI(NetAddress)) {
819 RUN_NETADDRESS_SUBTESTS;
821 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
822 MAYBE_PNACL_TRANSITIONAL_NONSFI(NetAddress)) {
823 RUN_NETADDRESS_SUBTESTS;
826 // NetAddressPrivate tests.
827 #define RUN_NETADDRESS_PRIVATE_SUBTESTS \
828 RunTestViaHTTP( \
829 LIST_TEST(NetAddressPrivate_AreEqual) \
830 LIST_TEST(NetAddressPrivate_AreHostsEqual) \
831 LIST_TEST(NetAddressPrivate_Describe) \
832 LIST_TEST(NetAddressPrivate_ReplacePort) \
833 LIST_TEST(NetAddressPrivate_GetAnyAddress) \
834 LIST_TEST(NetAddressPrivate_DescribeIPv6) \
835 LIST_TEST(NetAddressPrivate_GetFamily) \
836 LIST_TEST(NetAddressPrivate_GetPort) \
837 LIST_TEST(NetAddressPrivate_GetAddress) \
838 LIST_TEST(NetAddressPrivate_GetScopeID) \
841 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, NetAddressPrivate) {
842 RUN_NETADDRESS_PRIVATE_SUBTESTS;
845 #define RUN_NETADDRESS_PRIVATE_UNTRUSTED_SUBTESTS \
846 RunTestViaHTTP( \
847 LIST_TEST(NetAddressPrivateUntrusted_AreEqual) \
848 LIST_TEST(NetAddressPrivateUntrusted_AreHostsEqual) \
849 LIST_TEST(NetAddressPrivateUntrusted_Describe) \
850 LIST_TEST(NetAddressPrivateUntrusted_ReplacePort) \
851 LIST_TEST(NetAddressPrivateUntrusted_GetAnyAddress) \
852 LIST_TEST(NetAddressPrivateUntrusted_GetFamily) \
853 LIST_TEST(NetAddressPrivateUntrusted_GetPort) \
854 LIST_TEST(NetAddressPrivateUntrusted_GetAddress) \
857 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, NetAddressPrivate) {
858 RUN_NETADDRESS_PRIVATE_UNTRUSTED_SUBTESTS;
860 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, NetAddressPrivate) {
861 RUN_NETADDRESS_PRIVATE_UNTRUSTED_SUBTESTS;
863 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
864 MAYBE_PNACL_NONSFI(NetAddressPrivate)) {
865 RUN_NETADDRESS_PRIVATE_UNTRUSTED_SUBTESTS;
867 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
868 MAYBE_PNACL_TRANSITIONAL_NONSFI(NetAddressPrivate)) {
869 RUN_NETADDRESS_PRIVATE_UNTRUSTED_SUBTESTS;
872 // NetworkMonitor tests.
873 #define RUN_NETWORK_MONITOR_SUBTESTS \
874 RunTestViaHTTP( \
875 LIST_TEST(NetworkMonitor_Basic) \
876 LIST_TEST(NetworkMonitor_2Monitors) \
877 LIST_TEST(NetworkMonitor_DeleteInCallback) \
880 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, NetworkMonitor) {
881 RUN_NETWORK_MONITOR_SUBTESTS;
883 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, NetworkMonitor) {
884 RUN_NETWORK_MONITOR_SUBTESTS;
886 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, NetworkMonitor) {
887 RUN_NETWORK_MONITOR_SUBTESTS;
889 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
890 MAYBE_PNACL_NONSFI(NetworkMonitor)) {
891 RUN_NETWORK_MONITOR_SUBTESTS;
893 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
894 MAYBE_PNACL_TRANSITIONAL_NONSFI(NetworkMonitor)) {
895 RUN_NETWORK_MONITOR_SUBTESTS;
898 // Flash tests.
899 #define RUN_FLASH_SUBTESTS \
900 RunTestViaHTTP( \
901 LIST_TEST(Flash_SetInstanceAlwaysOnTop) \
902 LIST_TEST(Flash_GetCommandLineArgs) \
905 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, Flash) {
906 RUN_FLASH_SUBTESTS;
909 // In-process WebSocket tests. Note, the WebSocket tests are split into two,
910 // because all of them together sometimes take too long on windows:
911 // crbug.com/336999
912 #define RUN_WEBSOCKET_SUBTESTS_1 \
913 RunTestWithWebSocketServer( \
914 LIST_TEST(WebSocket_IsWebSocket) \
915 LIST_TEST(WebSocket_UninitializedPropertiesAccess) \
916 LIST_TEST(WebSocket_InvalidConnect) \
917 LIST_TEST(WebSocket_Protocols) \
918 LIST_TEST(WebSocket_GetURL) \
919 LIST_TEST(WebSocket_ValidConnect) \
920 LIST_TEST(WebSocket_InvalidClose) \
921 LIST_TEST(WebSocket_ValidClose) \
922 LIST_TEST(WebSocket_GetProtocol) \
923 LIST_TEST(WebSocket_TextSendReceive) \
924 LIST_TEST(WebSocket_BinarySendReceive) \
925 LIST_TEST(WebSocket_StressedSendReceive) \
926 LIST_TEST(WebSocket_BufferedAmount) \
929 #define RUN_WEBSOCKET_SUBTESTS_2 \
930 RunTestWithWebSocketServer( \
931 LIST_TEST(WebSocket_AbortCallsWithCallback) \
932 LIST_TEST(WebSocket_AbortSendMessageCall) \
933 LIST_TEST(WebSocket_AbortCloseCall) \
934 LIST_TEST(WebSocket_AbortReceiveMessageCall) \
935 LIST_TEST(WebSocket_ClosedFromServerWhileSending) \
936 LIST_TEST(WebSocket_CcInterfaces) \
937 LIST_TEST(WebSocket_UtilityInvalidConnect) \
938 LIST_TEST(WebSocket_UtilityProtocols) \
939 LIST_TEST(WebSocket_UtilityGetURL) \
940 LIST_TEST(WebSocket_UtilityValidConnect) \
941 LIST_TEST(WebSocket_UtilityInvalidClose) \
942 LIST_TEST(WebSocket_UtilityValidClose) \
943 LIST_TEST(WebSocket_UtilityGetProtocol) \
944 LIST_TEST(WebSocket_UtilityTextSendReceive) \
945 LIST_TEST(WebSocket_UtilityBinarySendReceive) \
946 LIST_TEST(WebSocket_UtilityBufferedAmount) \
949 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, WebSocket1) {
950 RUN_WEBSOCKET_SUBTESTS_1;
952 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, WebSocket2) {
953 RUN_WEBSOCKET_SUBTESTS_2;
955 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, WebSocket1) {
956 RUN_WEBSOCKET_SUBTESTS_1;
958 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, WebSocket2) {
959 RUN_WEBSOCKET_SUBTESTS_2;
961 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, WebSocket1) {
962 RUN_WEBSOCKET_SUBTESTS_1;
964 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, WebSocket2) {
965 RUN_WEBSOCKET_SUBTESTS_2;
967 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
968 MAYBE_PNACL_NONSFI(WebSocket1)) {
969 RUN_WEBSOCKET_SUBTESTS_1;
971 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
972 MAYBE_PNACL_NONSFI(WebSocket2)) {
973 RUN_WEBSOCKET_SUBTESTS_2;
975 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
976 MAYBE_PNACL_TRANSITIONAL_NONSFI(WebSocket1)) {
977 RUN_WEBSOCKET_SUBTESTS_1;
979 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
980 MAYBE_PNACL_TRANSITIONAL_NONSFI(WebSocket2)) {
981 RUN_WEBSOCKET_SUBTESTS_2;
984 // AudioConfig tests
985 #define RUN_AUDIO_CONFIG_SUBTESTS \
986 RunTestViaHTTP( \
987 LIST_TEST(AudioConfig_RecommendSampleRate) \
988 LIST_TEST(AudioConfig_ValidConfigs) \
989 LIST_TEST(AudioConfig_InvalidConfigs) \
992 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, AudioConfig) {
993 RUN_AUDIO_CONFIG_SUBTESTS;
995 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, AudioConfig) {
996 RUN_AUDIO_CONFIG_SUBTESTS;
998 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(AudioConfig)) {
999 RUN_AUDIO_CONFIG_SUBTESTS;
1001 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, AudioConfig) {
1002 RUN_AUDIO_CONFIG_SUBTESTS;
1004 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
1005 MAYBE_PNACL_NONSFI(AudioConfig)) {
1006 RUN_AUDIO_CONFIG_SUBTESTS;
1008 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
1009 MAYBE_PNACL_TRANSITIONAL_NONSFI(AudioConfig)) {
1010 RUN_AUDIO_CONFIG_SUBTESTS;
1013 // PPB_Audio tests.
1014 #define RUN_AUDIO_SUBTESTS \
1015 RunTestViaHTTP( \
1016 LIST_TEST(Audio_Creation) \
1017 LIST_TEST(Audio_DestroyNoStop) \
1018 LIST_TEST(Audio_Failures) \
1019 LIST_TEST(Audio_AudioCallback1) \
1020 LIST_TEST(Audio_AudioCallback2) \
1021 LIST_TEST(Audio_AudioCallback3) \
1022 LIST_TEST(Audio_AudioCallback4) \
1025 #if defined(OS_LINUX)
1026 // http://crbug.com/396464
1027 #define MAYBE_Audio DISABLED_Audio
1028 #else
1029 #define MAYBE_Audio Audio
1030 #endif
1031 // PPB_Audio is not supported in-process.
1032 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, MAYBE_Audio) {
1033 RUN_AUDIO_SUBTESTS;
1035 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, Audio) {
1036 RUN_AUDIO_SUBTESTS;
1038 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(Audio)) {
1039 RUN_AUDIO_SUBTESTS;
1041 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, Audio) {
1042 RUN_AUDIO_SUBTESTS;
1044 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
1045 MAYBE_PNACL_NONSFI(Audio)) {
1046 RUN_AUDIO_SUBTESTS;
1048 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
1049 MAYBE_PNACL_TRANSITIONAL_NONSFI(Audio)) {
1050 RUN_AUDIO_SUBTESTS;
1053 #define RUN_AUDIO_THREAD_CREATOR_SUBTESTS \
1054 RunTestViaHTTP( \
1055 LIST_TEST(Audio_AudioThreadCreatorIsRequired) \
1056 LIST_TEST(Audio_AudioThreadCreatorIsCalled) \
1059 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, AudioThreadCreator) {
1060 RUN_AUDIO_THREAD_CREATOR_SUBTESTS;
1062 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(AudioThreadCreator)) {
1063 RUN_AUDIO_THREAD_CREATOR_SUBTESTS;
1065 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, AudioThreadCreator) {
1066 RUN_AUDIO_THREAD_CREATOR_SUBTESTS;
1068 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
1069 MAYBE_PNACL_NONSFI(AudioThreadCreator)) {
1070 RUN_AUDIO_THREAD_CREATOR_SUBTESTS;
1072 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
1073 MAYBE_PNACL_TRANSITIONAL_NONSFI(AudioThreadCreator)) {
1074 RUN_AUDIO_THREAD_CREATOR_SUBTESTS;
1077 TEST_PPAPI_OUT_OF_PROCESS(View_CreatedVisible);
1078 #if defined(OS_MACOSX)
1079 // http://crbug.com/474399
1080 #define MAYBE_View_CreatedVisible DISABLED_View_CreatedVisible
1081 #else
1082 #define MAYBE_View_CreatedVisible View_CreatedVisible
1083 #endif
1084 TEST_PPAPI_NACL(MAYBE_View_CreatedVisible);
1086 // This test ensures that plugins created in a background tab have their
1087 // initial visibility set to false. We don't bother testing in-process for this
1088 // custom test since the out of process code also exercises in-process.
1089 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, View_CreateInvisible) {
1090 // Make a second tab in the foreground.
1091 GURL url = GetTestFileUrl("View_CreatedInvisible");
1092 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
1093 params.disposition = NEW_BACKGROUND_TAB;
1094 ui_test_utils::NavigateToURL(&params);
1097 // This test messes with tab visibility so is custom.
1098 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, DISABLED_View_PageHideShow) {
1099 // The plugin will be loaded in the foreground tab and will send us a message.
1100 PPAPITestMessageHandler handler;
1101 content::JavascriptTestObserver observer(
1102 browser()->tab_strip_model()->GetActiveWebContents(),
1103 &handler);
1105 GURL url = GetTestFileUrl("View_PageHideShow");
1106 ui_test_utils::NavigateToURL(browser(), url);
1108 ASSERT_TRUE(observer.Run()) << handler.error_message();
1109 EXPECT_STREQ("TestPageHideShow:Created", handler.message().c_str());
1110 observer.Reset();
1112 // Make a new tab to cause the original one to hide, this should trigger the
1113 // next phase of the test.
1114 chrome::NavigateParams params(
1115 browser(), GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_LINK);
1116 params.disposition = NEW_FOREGROUND_TAB;
1117 ui_test_utils::NavigateToURL(&params);
1119 // Wait until the test acks that it got hidden.
1120 ASSERT_TRUE(observer.Run()) << handler.error_message();
1121 EXPECT_STREQ("TestPageHideShow:Hidden", handler.message().c_str());
1122 observer.Reset();
1124 // Switch back to the test tab.
1125 browser()->tab_strip_model()->ActivateTabAt(0, true);
1127 ASSERT_TRUE(observer.Run()) << handler.error_message();
1128 EXPECT_STREQ("PASS", handler.message().c_str());
1131 // Tests that if a plugin accepts touch events, the browser knows to send touch
1132 // events to the renderer.
1133 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, InputEvent_AcceptTouchEvent) {
1134 std::string positive_tests[] = { "InputEvent_AcceptTouchEvent_1",
1135 "InputEvent_AcceptTouchEvent_2",
1136 "InputEvent_AcceptTouchEvent_3",
1137 "InputEvent_AcceptTouchEvent_4"
1140 for (size_t i = 0; i < arraysize(positive_tests); ++i) {
1141 RenderViewHost* host = browser()->tab_strip_model()->
1142 GetActiveWebContents()->GetRenderViewHost();
1143 RunTest(positive_tests[i]);
1144 EXPECT_TRUE(content::RenderViewHostTester::HasTouchEventHandler(host));
1148 // View tests.
1149 #define RUN_VIEW_SUBTESTS \
1150 RunTestViaHTTP( \
1151 LIST_TEST(View_SizeChange) \
1152 LIST_TEST(View_ClipChange) \
1153 LIST_TEST(View_ScrollOffsetChange) \
1156 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, View) {
1157 RUN_VIEW_SUBTESTS;
1159 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, View) {
1160 RUN_VIEW_SUBTESTS;
1162 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, View) {
1163 RUN_VIEW_SUBTESTS;
1165 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, MAYBE_PNACL_NONSFI(View)) {
1166 RUN_VIEW_SUBTESTS;
1168 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
1169 MAYBE_PNACL_TRANSITIONAL_NONSFI(View)) {
1170 RUN_VIEW_SUBTESTS;
1173 // FlashMessageLoop tests.
1174 #define RUN_FLASH_MESSAGE_LOOP_SUBTESTS \
1175 RunTest( \
1176 LIST_TEST(FlashMessageLoop_Basics) \
1177 LIST_TEST(FlashMessageLoop_RunWithoutQuit) \
1180 #if defined(OS_LINUX) // Disabled due to flakiness http://crbug.com/316925
1181 #define MAYBE_FlashMessageLoop DISABLED_FlashMessageLoop
1182 #else
1183 #define MAYBE_FlashMessageLoop FlashMessageLoop
1184 #endif
1185 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, MAYBE_FlashMessageLoop) {
1186 RUN_FLASH_MESSAGE_LOOP_SUBTESTS;
1189 // The compositor test timeouts sometimes, so we have to split it to two
1190 // subtests.
1191 #define RUN_COMPOSITOR_SUBTESTS_0 \
1192 RunTestViaHTTP( \
1193 LIST_TEST(Compositor_BindUnbind) \
1194 LIST_TEST(Compositor_Release) \
1195 LIST_TEST(Compositor_ReleaseUnbound) \
1196 LIST_TEST(Compositor_ReleaseWithoutCommit) \
1197 LIST_TEST(Compositor_ReleaseWithoutCommitUnbound) \
1200 #define RUN_COMPOSITOR_SUBTESTS_1 \
1201 RunTestViaHTTP( \
1202 LIST_TEST(Compositor_CommitTwoTimesWithoutChange) \
1203 LIST_TEST(Compositor_CommitTwoTimesWithoutChangeUnbound) \
1204 LIST_TEST(Compositor_General) \
1205 LIST_TEST(Compositor_GeneralUnbound) \
1208 #if defined(OS_WIN)
1209 // This test fails with the test compositor which is what's used by default for
1210 // browser tests on Windows. Renable when the software compositor is available.
1211 #define MAYBE_Compositor0 DISABLED_Compositor0
1212 #define MAYBE_Compositor1 DISABLED_Compositor1
1213 #elif defined(OS_MACOSX)
1214 // This test fails when using the legacy software mode. Reenable when the
1215 // software compositor is enabled crbug.com/286038
1216 #define MAYBE_Compositor0 DISABLED_Compositor0
1217 #define MAYBE_Compositor1 DISABLED_Compositor1
1218 #else
1219 // flaky on Linux: http://crbug.com/396482
1220 #define MAYBE_Compositor0 DISABLED_Compositor0
1221 #define MAYBE_Compositor1 DISABLED_Compositor1
1222 #endif
1224 TEST_PPAPI_NACL_SUBTESTS(MAYBE_Compositor0, RUN_COMPOSITOR_SUBTESTS_0)
1225 TEST_PPAPI_NACL_SUBTESTS(MAYBE_Compositor1, RUN_COMPOSITOR_SUBTESTS_1)
1227 #if defined(OS_LINUX) || defined(OS_WIN) || defined(OS_CHROMEOS)
1228 // Flaky on ChromeOS, Linux and Windows (crbug.com/438729)
1229 #define MAYBE_MediaStreamAudioTrack DISABLED_MediaStreamAudioTrack
1230 #else
1231 #define MAYBE_MediaStreamAudioTrack MediaStreamAudioTrack
1232 #endif
1233 TEST_PPAPI_NACL(MAYBE_MediaStreamAudioTrack)
1235 TEST_PPAPI_NACL(MediaStreamVideoTrack)
1237 TEST_PPAPI_NACL(MouseCursor)
1239 TEST_PPAPI_NACL(NetworkProxy)
1241 TEST_PPAPI_NACL(TrueTypeFont)
1243 TEST_PPAPI_NACL(VideoDecoder)
1245 TEST_PPAPI_NACL(VideoEncoder)
1247 // VideoDestination doesn't work in content_browsertests.
1248 TEST_PPAPI_OUT_OF_PROCESS(VideoDestination)
1249 TEST_PPAPI_NACL(VideoDestination)
1251 // VideoSource doesn't work in content_browsertests.
1252 TEST_PPAPI_OUT_OF_PROCESS(VideoSource)
1253 TEST_PPAPI_NACL(VideoSource)
1255 // Printing doesn't work in content_browsertests.
1256 TEST_PPAPI_OUT_OF_PROCESS(Printing)
1258 TEST_PPAPI_NACL(MessageHandler)
1260 TEST_PPAPI_NACL(MessageLoop_Basics)
1261 TEST_PPAPI_NACL(MessageLoop_Post)
1263 // Going forward, Flash APIs will only work out-of-process.
1264 TEST_PPAPI_OUT_OF_PROCESS(Flash_GetLocalTimeZoneOffset)
1265 TEST_PPAPI_OUT_OF_PROCESS(Flash_GetProxyForURL)
1266 TEST_PPAPI_OUT_OF_PROCESS(Flash_GetSetting)
1267 TEST_PPAPI_OUT_OF_PROCESS(Flash_SetCrashData)
1268 // http://crbug.com/176822
1269 #if !defined(OS_WIN)
1270 TEST_PPAPI_OUT_OF_PROCESS(FlashClipboard)
1271 #endif
1272 TEST_PPAPI_OUT_OF_PROCESS(FlashFile)
1273 // Mac/Aura reach NOTIMPLEMENTED/time out.
1274 // mac: http://crbug.com/96767
1275 // aura: http://crbug.com/104384
1276 // cros: http://crbug.com/396502
1277 #if defined(OS_MACOSX) || defined(OS_CHROMEOS)
1278 #define MAYBE_FlashFullscreen DISABLED_FlashFullscreen
1279 #else
1280 #define MAYBE_FlashFullscreen FlashFullscreen
1281 #endif
1282 TEST_PPAPI_OUT_OF_PROCESS(MAYBE_FlashFullscreen)
1284 TEST_PPAPI_OUT_OF_PROCESS(PDF)
1286 // TODO(dalecurtis): Renable once the platform verification infobar has been
1287 // implemented; see http://crbug.com/270908
1288 // #if defined(OS_CHROMEOS)
1289 // TEST_PPAPI_OUT_OF_PROCESS(PlatformVerificationPrivate)
1290 // #endif
1292 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, FlashDRM) {
1293 RunTest(
1294 #if (defined(OS_WIN) && defined(ENABLE_RLZ)) || defined(OS_CHROMEOS)
1295 // Only implemented on Windows and ChromeOS currently.
1296 LIST_TEST(FlashDRM_GetDeviceID)
1297 #endif
1298 LIST_TEST(FlashDRM_GetHmonitor)
1299 LIST_TEST(FlashDRM_GetVoucherFile));
1302 #if defined(OS_CHROMEOS)
1303 TEST_PPAPI_OUT_OF_PROCESS(OutputProtectionPrivate)
1304 #endif
1306 #if !defined(DISABLE_NACL)
1307 class PackagedAppTest : public ExtensionBrowserTest {
1308 public:
1309 explicit PackagedAppTest(const std::string& toolchain)
1310 : toolchain_(toolchain) { }
1312 void LaunchTestingApp(const std::string& extension_dirname) {
1313 base::FilePath data_dir;
1314 ASSERT_TRUE(PathService::Get(chrome::DIR_GEN_TEST_DATA, &data_dir));
1315 base::FilePath app_dir = data_dir.AppendASCII("ppapi")
1316 .AppendASCII("tests")
1317 .AppendASCII("extensions")
1318 .AppendASCII(extension_dirname)
1319 .AppendASCII(toolchain_);
1321 const extensions::Extension* extension = LoadExtension(app_dir);
1322 ASSERT_TRUE(extension);
1324 AppLaunchParams params(browser()->profile(), extension,
1325 extensions::LAUNCH_CONTAINER_NONE, NEW_WINDOW,
1326 extensions::SOURCE_TEST);
1327 params.command_line = *base::CommandLine::ForCurrentProcess();
1328 OpenApplication(params);
1331 void RunTests(const std::string& extension_dirname) {
1332 ExtensionTestMessageListener listener("PASS", true);
1333 LaunchTestingApp(extension_dirname);
1334 EXPECT_TRUE(listener.WaitUntilSatisfied());
1336 protected:
1337 std::string toolchain_;
1340 class NewlibPackagedAppTest : public PackagedAppTest {
1341 public:
1342 NewlibPackagedAppTest() : PackagedAppTest("newlib") { }
1345 class NonSfiPackagedAppTest : public PackagedAppTest {
1346 public:
1347 NonSfiPackagedAppTest() : PackagedAppTest("nonsfi") { }
1349 void SetUpCommandLine(base::CommandLine* command_line) override {
1350 PackagedAppTest::SetUpCommandLine(command_line);
1351 command_line->AppendSwitch(switches::kEnableNaClNonSfiMode);
1355 // TODO(hidehiko): Remove this when clean-up to drop Non-SFI support from
1356 // nacl_helper is done. See NaClBrowserTestPnaclTransitionalNonSfi
1357 // for more details.
1358 class TransitionalNonSfiPackagedAppTest : public NonSfiPackagedAppTest {
1359 public:
1360 void SetUpCommandLine(base::CommandLine* command_line) override {
1361 NonSfiPackagedAppTest::SetUpCommandLine(command_line);
1362 command_line->AppendSwitchASCII(switches::kUseNaClHelperNonSfi,
1363 "false");
1367 // Load a packaged app, and wait for it to successfully post a "hello" message
1368 // back.
1369 IN_PROC_BROWSER_TEST_F(NewlibPackagedAppTest, SuccessfulLoad) {
1370 RunTests("packaged_app");
1373 IN_PROC_BROWSER_TEST_F(NonSfiPackagedAppTest,
1374 MAYBE_PNACL_NONSFI(SuccessfulLoad)) {
1375 RunTests("packaged_app");
1378 IN_PROC_BROWSER_TEST_F(TransitionalNonSfiPackagedAppTest,
1379 MAYBE_PNACL_TRANSITIONAL_NONSFI(SuccessfulLoad)) {
1380 RunTests("packaged_app");
1383 IN_PROC_BROWSER_TEST_F(NewlibPackagedAppTest, SocketPermissions) {
1384 RunTests("socket_permissions");
1387 #endif