ozone: evdev: Sync caps lock LED state to evdev
[chromium-blink-merge.git] / chrome / test / ppapi / ppapi_browsertest.cc
blobbe5a136f3da369797e0dbb3f17e9e775c0852b47
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/url_constants.h"
23 #include "content/public/test/javascript_test_observer.h"
24 #include "content/public/test/test_renderer_host.h"
25 #include "extensions/common/constants.h"
26 #include "extensions/test/extension_test_message_listener.h"
27 #include "ppapi/shared_impl/test_harness_utils.h"
29 using content::RenderViewHost;
31 // This macro finesses macro expansion to do what we want.
32 #define STRIP_PREFIXES(test_name) ppapi::StripTestPrefixes(#test_name)
33 // Turn the given token into a string. This allows us to use precompiler stuff
34 // to turn names into DISABLED_Foo, but still pass a string to RunTest.
35 #define STRINGIFY(test_name) #test_name
36 #define LIST_TEST(test_name) STRINGIFY(test_name) ","
38 // Use these macros to run the tests for a specific interface.
39 // Most interfaces should be tested with both macros.
40 #define TEST_PPAPI_OUT_OF_PROCESS(test_name) \
41 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, test_name) { \
42 RunTest(STRIP_PREFIXES(test_name)); \
45 // Similar macros that test over HTTP.
46 #define TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(test_name) \
47 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, test_name) { \
48 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
51 // Similar macros that test with an SSL server.
52 #define TEST_PPAPI_OUT_OF_PROCESS_WITH_SSL_SERVER(test_name) \
53 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, test_name) { \
54 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \
57 #if defined(DISABLE_NACL)
59 #define TEST_PPAPI_NACL(test_name)
60 #define TEST_PPAPI_NACL_DISALLOWED_SOCKETS(test_name)
61 #define TEST_PPAPI_NACL_WITH_SSL_SERVER(test_name)
62 #define TEST_PPAPI_NACL_SUBTESTS(test_name, run_statement)
64 #else
66 // NaCl based PPAPI tests
67 #define TEST_PPAPI_NACL(test_name) \
68 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, test_name) { \
69 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
70 } \
71 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, test_name) { \
72 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
73 } \
74 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, \
75 MAYBE_PNACL_NONSFI(test_name)) { \
76 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
77 } \
78 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest, \
79 MAYBE_PNACL_TRANSITIONAL_NONSFI(test_name)) { \
80 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
83 // NaCl based PPAPI tests
84 #define TEST_PPAPI_NACL_SUBTESTS(test_name, run_statement) \
85 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, test_name) { \
86 run_statement; \
87 } \
88 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, test_name) { \
89 run_statement; \
90 } \
91 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, \
92 MAYBE_PNACL_NONSFI(test_name)) { \
93 run_statement; \
94 } \
95 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest, \
96 MAYBE_PNACL_TRANSITIONAL_NONSFI(test_name)) { \
97 run_statement; \
100 // NaCl based PPAPI tests with disallowed socket API
101 #define TEST_PPAPI_NACL_DISALLOWED_SOCKETS(test_name) \
102 IN_PROC_BROWSER_TEST_F(PPAPINaClTestDisallowedSockets, test_name) { \
103 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
106 // NaCl based PPAPI tests with SSL server
107 #define TEST_PPAPI_NACL_WITH_SSL_SERVER(test_name) \
108 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, test_name) { \
109 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \
111 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, test_name) { \
112 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \
114 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, \
115 MAYBE_PNACL_NONSFI(test_name)) { \
116 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \
118 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest, \
119 MAYBE_PNACL_TRANSITIONAL_NONSFI(test_name)) { \
120 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \
124 #endif // DISABLE_NACL
127 // Interface tests.
130 // Flaky, http://crbug.com/111355
131 TEST_PPAPI_OUT_OF_PROCESS(DISABLED_Broker)
133 IN_PROC_BROWSER_TEST_F(PPAPIBrokerInfoBarTest, Accept) {
134 // Accepting the infobar should grant permission to access the PPAPI broker.
135 InfoBarObserver observer(this);
136 observer.ExpectInfoBarAndAccept(true);
138 // PPB_Broker_Trusted::IsAllowed should return false before the infobar is
139 // popped and true after the infobar is popped.
140 RunTest("Broker_IsAllowedPermissionDenied");
141 RunTest("Broker_ConnectPermissionGranted");
142 RunTest("Broker_IsAllowedPermissionGranted");
144 // It should also set a content settings exception for the site.
145 GURL url = GetTestFileUrl("Broker_ConnectPermissionGranted");
146 HostContentSettingsMap* content_settings =
147 browser()->profile()->GetHostContentSettingsMap();
148 EXPECT_EQ(CONTENT_SETTING_ALLOW,
149 content_settings->GetContentSetting(
150 url, url, CONTENT_SETTINGS_TYPE_PPAPI_BROKER, std::string()));
153 IN_PROC_BROWSER_TEST_F(PPAPIBrokerInfoBarTest, Deny) {
154 // Canceling the infobar should deny permission to access the PPAPI broker.
155 InfoBarObserver observer(this);
156 observer.ExpectInfoBarAndAccept(false);
158 // PPB_Broker_Trusted::IsAllowed should return false before and after the
159 // infobar is popped.
160 RunTest("Broker_IsAllowedPermissionDenied");
161 RunTest("Broker_ConnectPermissionDenied");
162 RunTest("Broker_IsAllowedPermissionDenied");
164 // It should also set a content settings exception for the site.
165 GURL url = GetTestFileUrl("Broker_ConnectPermissionDenied");
166 HostContentSettingsMap* content_settings =
167 browser()->profile()->GetHostContentSettingsMap();
168 EXPECT_EQ(CONTENT_SETTING_BLOCK,
169 content_settings->GetContentSetting(
170 url, url, CONTENT_SETTINGS_TYPE_PPAPI_BROKER, std::string()));
173 IN_PROC_BROWSER_TEST_F(PPAPIBrokerInfoBarTest, Blocked) {
174 // Block access to the PPAPI broker.
175 browser()->profile()->GetHostContentSettingsMap()->SetDefaultContentSetting(
176 CONTENT_SETTINGS_TYPE_PPAPI_BROKER, CONTENT_SETTING_BLOCK);
178 // We shouldn't see an infobar.
179 InfoBarObserver observer(this);
181 RunTest("Broker_ConnectPermissionDenied");
182 RunTest("Broker_IsAllowedPermissionDenied");
185 IN_PROC_BROWSER_TEST_F(PPAPIBrokerInfoBarTest, Allowed) {
186 // Always allow access to the PPAPI broker.
187 browser()->profile()->GetHostContentSettingsMap()->SetDefaultContentSetting(
188 CONTENT_SETTINGS_TYPE_PPAPI_BROKER, CONTENT_SETTING_ALLOW);
190 // We shouldn't see an infobar.
191 InfoBarObserver observer(this);
193 RunTest("Broker_ConnectPermissionGranted");
194 RunTest("Broker_IsAllowedPermissionGranted");
197 TEST_PPAPI_NACL(Console)
199 TEST_PPAPI_NACL(Core)
201 // Non-NaCl TraceEvent tests are in content/test/ppapi/ppapi_browsertest.cc.
202 TEST_PPAPI_NACL(TraceEvent)
204 TEST_PPAPI_NACL(InputEvent)
206 // Flaky on Linux and Windows. http://crbug.com/135403
207 #if defined(OS_LINUX) || defined(OS_WIN)
208 #define MAYBE_ImeInputEvent DISABLED_ImeInputEvent
209 #else
210 #define MAYBE_ImeInputEvent ImeInputEvent
211 #endif
213 TEST_PPAPI_OUT_OF_PROCESS(MAYBE_ImeInputEvent)
214 TEST_PPAPI_NACL(MAYBE_ImeInputEvent)
216 // Graphics2D_Dev isn't supported in NaCl, only test the other interfaces
217 // TODO(jhorwich) Enable when Graphics2D_Dev interfaces are proxied in NaCl.
218 TEST_PPAPI_NACL(Graphics2D_InvalidResource)
219 TEST_PPAPI_NACL(Graphics2D_InvalidSize)
220 TEST_PPAPI_NACL(Graphics2D_Humongous)
221 TEST_PPAPI_NACL(Graphics2D_InitToZero)
222 TEST_PPAPI_NACL(Graphics2D_Describe)
223 TEST_PPAPI_NACL(Graphics2D_Paint)
224 TEST_PPAPI_NACL(Graphics2D_Scroll)
225 TEST_PPAPI_NACL(Graphics2D_Replace)
226 TEST_PPAPI_NACL(Graphics2D_Flush)
227 TEST_PPAPI_NACL(Graphics2D_FlushOffscreenUpdate)
228 TEST_PPAPI_NACL(Graphics2D_BindNull)
230 #if defined(OS_WIN)
231 #if defined(USE_AURA)
232 // These tests fail with the test compositor which is what's used by default for
233 // browser tests on Windows Aura. Renable when the software compositor is
234 // available.
235 #define MAYBE_IN_Graphics3D DISABLED_Graphics3D
236 #define MAYBE_OUT_Graphics3D DISABLED_Graphics3D
237 #define MAYBE_NACL_Graphics3D DISABLED_Graphics3D
238 #else // defined(USE_AURA)
239 // In-process and NaCl tests are having flaky failures on Win: crbug.com/242252
240 #define MAYBE_IN_Graphics3D DISABLED_Graphics3D
241 #define MAYBE_OUT_Graphics3D Graphics3D
242 #define MAYBE_NACL_Graphics3D DISABLED_Graphics3D
243 #endif // defined(USE_AURA)
244 #elif defined(OS_MACOSX)
245 // These tests fail when using the legacy software mode. Reenable when the
246 // software compositor is enabled crbug.com/286038
247 #define MAYBE_IN_Graphics3D DISABLED_Graphics3D
248 #define MAYBE_OUT_Graphics3D DISABLED_Graphics3D
249 #define MAYBE_NACL_Graphics3D DISABLED_Graphics3D
250 #else
251 // The tests are failing in-process. crbug.com/280282
252 #define MAYBE_IN_Graphics3D DISABLED_Graphics3D
253 #define MAYBE_OUT_Graphics3D Graphics3D
254 #define MAYBE_NACL_Graphics3D Graphics3D
255 #endif
256 TEST_PPAPI_OUT_OF_PROCESS(MAYBE_OUT_Graphics3D)
257 TEST_PPAPI_NACL(MAYBE_NACL_Graphics3D)
259 TEST_PPAPI_NACL(ImageData)
261 // TCPSocket and TCPSocketPrivate tests.
262 #define RUN_TCPSOCKET_SUBTESTS \
263 RunTestViaHTTP( \
264 LIST_TEST(TCPSocket_Connect) \
265 LIST_TEST(TCPSocket_ReadWrite) \
266 LIST_TEST(TCPSocket_SetOption) \
267 LIST_TEST(TCPSocket_Listen) \
268 LIST_TEST(TCPSocket_Backlog) \
269 LIST_TEST(TCPSocket_Interface_1_0) \
272 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, TCPSocket) {
273 RUN_TCPSOCKET_SUBTESTS;
275 #if defined(OS_MACOSX) && defined(ADDRESS_SANITIZER)
276 // Flaky on Mac ASAN: http://crbug.com/437408 and http://crbug.com/457501.
277 #define MAYBE_TCPSocket DISABLED_TCPSocket
278 #else
279 #define MAYBE_TCPSocket TCPSocket
280 #endif
281 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, MAYBE_TCPSocket) {
282 RUN_TCPSOCKET_SUBTESTS;
284 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, TCPSocket) {
285 RUN_TCPSOCKET_SUBTESTS;
287 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
288 MAYBE_PNACL_NONSFI(TCPSocket)) {
289 RUN_TCPSOCKET_SUBTESTS;
291 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
292 MAYBE_PNACL_TRANSITIONAL_NONSFI(TCPSocket)) {
293 RUN_TCPSOCKET_SUBTESTS;
297 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(TCPServerSocketPrivate)
298 TEST_PPAPI_NACL(TCPServerSocketPrivate)
300 TEST_PPAPI_OUT_OF_PROCESS_WITH_SSL_SERVER(TCPSocketPrivate)
302 #if defined(OS_MACOSX) && defined(ADDRESS_SANITIZER)
303 // Flaky on Mac ASAN: http://crbug.com/437408.
304 #define MAYBE_TCPSocketPrivate DISABLED_TCPSocketPrivate
305 #else
306 #define MAYBE_TCPSocketPrivate TCPSocketPrivate
307 #endif
308 TEST_PPAPI_NACL_WITH_SSL_SERVER(MAYBE_TCPSocketPrivate)
310 TEST_PPAPI_OUT_OF_PROCESS_WITH_SSL_SERVER(TCPSocketPrivateTrusted)
312 // UDPSocket tests.
313 // UDPSocket_Broadcast is disabled for OSX because it requires root
314 // permissions on OSX 10.7+.
315 #if defined(OS_MACOSX)
316 #define MAYBE_UDPSocket_Broadcast DISABLED_UDPSocket_Broadcast
317 #else
318 #define MAYBE_UDPSocket_Broadcast UDPSocket_Broadcast
319 #endif
321 #define RUN_UDPSOCKET_SUBTESTS \
322 RunTestViaHTTP( \
323 LIST_TEST(UDPSocket_ReadWrite) \
324 LIST_TEST(UDPSocket_SetOption) \
325 LIST_TEST(MAYBE_UDPSocket_Broadcast) \
326 LIST_TEST(UDPSocket_ParallelSend))
328 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, UDPSocket) {
329 RUN_UDPSOCKET_SUBTESTS;
331 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, UDPSocket) {
332 RUN_UDPSOCKET_SUBTESTS;
334 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, UDPSocket) {
335 RUN_UDPSOCKET_SUBTESTS;
337 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
338 MAYBE_PNACL_NONSFI(UDPSocket)) {
339 RUN_UDPSOCKET_SUBTESTS;
341 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
342 MAYBE_PNACL_TRANSITIONAL_NONSFI(UDPSocket)) {
343 RUN_UDPSOCKET_SUBTESTS;
347 // UDPSocketPrivate tests.
348 // UDPSocketPrivate_Broadcast is disabled for OSX because it requires root
349 // permissions on OSX 10.7+.
350 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate_Connect)
351 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate_ConnectFailure)
352 #if !defined(OS_MACOSX)
353 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate_Broadcast)
354 #endif // !defined(OS_MACOSX)
355 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate_SetSocketFeatureErrors)
356 TEST_PPAPI_NACL(UDPSocketPrivate_Connect)
357 TEST_PPAPI_NACL(UDPSocketPrivate_ConnectFailure)
358 #if !defined(OS_MACOSX)
359 TEST_PPAPI_NACL(UDPSocketPrivate_Broadcast)
360 #endif // !defined(OS_MACOSX)
361 TEST_PPAPI_NACL(UDPSocketPrivate_SetSocketFeatureErrors)
363 // Disallowed socket tests.
364 TEST_PPAPI_NACL_DISALLOWED_SOCKETS(HostResolverPrivateDisallowed)
365 TEST_PPAPI_NACL_DISALLOWED_SOCKETS(TCPServerSocketPrivateDisallowed)
366 TEST_PPAPI_NACL_DISALLOWED_SOCKETS(TCPSocketPrivateDisallowed)
367 TEST_PPAPI_NACL_DISALLOWED_SOCKETS(UDPSocketPrivateDisallowed)
369 // HostResolver and HostResolverPrivate tests.
370 #define RUN_HOST_RESOLVER_SUBTESTS \
371 RunTestViaHTTP( \
372 LIST_TEST(HostResolver_Empty) \
373 LIST_TEST(HostResolver_Resolve) \
374 LIST_TEST(HostResolver_ResolveIPv4) \
377 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, HostResolver) {
378 RUN_HOST_RESOLVER_SUBTESTS;
380 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, HostResolver) {
381 RUN_HOST_RESOLVER_SUBTESTS;
383 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, HostResolver) {
384 RUN_HOST_RESOLVER_SUBTESTS;
386 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
387 MAYBE_PNACL_NONSFI(HostResolver)) {
388 RUN_HOST_RESOLVER_SUBTESTS;
390 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
391 MAYBE_PNACL_TRANSITIONAL_NONSFI(HostResolver)) {
392 RUN_HOST_RESOLVER_SUBTESTS;
395 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(HostResolverPrivate_Resolve)
396 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(HostResolverPrivate_ResolveIPv4)
397 TEST_PPAPI_NACL(HostResolverPrivate_Resolve)
398 TEST_PPAPI_NACL(HostResolverPrivate_ResolveIPv4)
400 // URLLoader tests. These are split into multiple test fixtures because if we
401 // run them all together, they tend to time out.
402 #define RUN_URLLOADER_SUBTESTS_0 \
403 RunTestViaHTTP( \
404 LIST_TEST(URLLoader_BasicGET) \
405 LIST_TEST(URLLoader_BasicPOST) \
406 LIST_TEST(URLLoader_BasicFilePOST) \
407 LIST_TEST(URLLoader_BasicFileRangePOST) \
408 LIST_TEST(URLLoader_CompoundBodyPOST) \
411 #define RUN_URLLOADER_SUBTESTS_1 \
412 RunTestViaHTTP( \
413 LIST_TEST(URLLoader_EmptyDataPOST) \
414 LIST_TEST(URLLoader_BinaryDataPOST) \
415 LIST_TEST(URLLoader_CustomRequestHeader) \
416 LIST_TEST(URLLoader_FailsBogusContentLength) \
417 LIST_TEST(URLLoader_StreamToFile) \
420 // TODO(bbudge) Fix Javascript URLs for trusted loaders.
421 // http://crbug.com/103062
422 #define RUN_URLLOADER_SUBTESTS_2 \
423 RunTestViaHTTP( \
424 LIST_TEST(URLLoader_UntrustedSameOriginRestriction) \
425 LIST_TEST(URLLoader_UntrustedCrossOriginRequest) \
426 LIST_TEST(URLLoader_UntrustedJavascriptURLRestriction) \
427 LIST_TEST(DISABLED_URLLoader_TrustedJavascriptURLRestriction) \
430 #define RUN_URLLOADER_NACL_SUBTESTS_2 \
431 RunTestViaHTTP( \
432 LIST_TEST(URLLoader_UntrustedSameOriginRestriction) \
433 LIST_TEST(URLLoader_UntrustedCrossOriginRequest) \
434 LIST_TEST(URLLoader_UntrustedJavascriptURLRestriction) \
435 LIST_TEST(DISABLED_URLLoader_TrustedJavascriptURLRestriction) \
438 #define RUN_URLLOADER_SUBTESTS_3 \
439 RunTestViaHTTP( \
440 LIST_TEST(URLLoader_UntrustedHttpRequests) \
441 LIST_TEST(URLLoader_FollowURLRedirect) \
442 LIST_TEST(URLLoader_AuditURLRedirect) \
443 LIST_TEST(URLLoader_AbortCalls) \
444 LIST_TEST(URLLoader_UntendedLoad) \
445 LIST_TEST(URLLoader_PrefetchBufferThreshold) \
448 // Note: we do not support Trusted APIs in NaCl, so these will be skipped.
449 // XRequestedWithHeader isn't trusted per-se, but the header isn't provided
450 // for NaCl and thus must be skipped.
451 #define RUN_URLLOADER_TRUSTED_SUBTESTS \
452 RunTestViaHTTP( \
453 LIST_TEST(URLLoader_TrustedSameOriginRestriction) \
454 LIST_TEST(URLLoader_TrustedCrossOriginRequest) \
455 LIST_TEST(URLLoader_TrustedHttpRequests) \
456 LIST_TEST(URLLoader_XRequestedWithHeader) \
459 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, URLLoader0) {
460 RUN_URLLOADER_SUBTESTS_0;
462 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, URLLoader1) {
463 RUN_URLLOADER_SUBTESTS_1;
465 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, URLLoader2) {
466 RUN_URLLOADER_SUBTESTS_2;
468 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, URLLoader3) {
469 RUN_URLLOADER_SUBTESTS_3;
471 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, URLLoaderTrusted) {
472 RUN_URLLOADER_TRUSTED_SUBTESTS;
474 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, URLLoader0) {
475 RUN_URLLOADER_SUBTESTS_0;
477 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, URLLoader1) {
478 RUN_URLLOADER_SUBTESTS_1;
480 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, URLLoader2) {
481 RUN_URLLOADER_SUBTESTS_2;
483 #if defined(OS_MACOSX) && defined(ADDRESS_SANITIZER)
484 // Flaky on Mac ASAN: http://crbug.com/437411.
485 #define MAYBE_URLLoader3 DISABLED_URLLoader3
486 #else
487 #define MAYBE_URLLoader3 URLLoader3
488 #endif
489 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, MAYBE_URLLoader3) {
490 RUN_URLLOADER_SUBTESTS_3;
493 // Flaky on 32-bit linux bot; http://crbug.com/308906
494 #if defined(OS_LINUX) && defined(ARCH_CPU_X86)
495 #define MAYBE_URLLoader_BasicFilePOST DISABLED_URLLoader_BasicFilePOST
496 #else
497 #define MAYBE_URLLoader_BasicFilePOST URLLoader_BasicFilePOST
498 #endif
500 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, URLLoader0) {
501 RUN_URLLOADER_SUBTESTS_0;
503 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, URLLoader1) {
504 RUN_URLLOADER_SUBTESTS_1;
506 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, URLLoader2) {
507 RUN_URLLOADER_SUBTESTS_2;
509 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, URLLoader3) {
510 RUN_URLLOADER_SUBTESTS_3;
512 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
513 MAYBE_PNACL_NONSFI(URLLoader0)) {
514 RUN_URLLOADER_SUBTESTS_0;
516 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
517 MAYBE_PNACL_NONSFI(URLLoader1)) {
518 RUN_URLLOADER_SUBTESTS_1;
520 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
521 MAYBE_PNACL_NONSFI(URLLoader2)) {
522 RUN_URLLOADER_SUBTESTS_2;
524 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
525 MAYBE_PNACL_NONSFI(URLLoader3)) {
526 RUN_URLLOADER_SUBTESTS_3;
528 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
529 MAYBE_PNACL_TRANSITIONAL_NONSFI(URLLoader0)) {
530 RUN_URLLOADER_SUBTESTS_0;
532 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
533 MAYBE_PNACL_TRANSITIONAL_NONSFI(URLLoader1)) {
534 RUN_URLLOADER_SUBTESTS_1;
536 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
537 MAYBE_PNACL_TRANSITIONAL_NONSFI(URLLoader2)) {
538 RUN_URLLOADER_SUBTESTS_2;
540 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
541 MAYBE_PNACL_TRANSITIONAL_NONSFI(URLLoader3)) {
542 RUN_URLLOADER_SUBTESTS_3;
546 // URLRequestInfo tests.
547 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_CreateAndIsURLRequestInfo)
549 // Timing out on Windows. http://crbug.com/129571
550 #if defined(OS_WIN)
551 #define MAYBE_URLRequest_CreateAndIsURLRequestInfo \
552 DISABLED_URLRequest_CreateAndIsURLRequestInfo
553 #else
554 #define MAYBE_URLRequest_CreateAndIsURLRequestInfo \
555 URLRequest_CreateAndIsURLRequestInfo
556 #endif
557 TEST_PPAPI_NACL(MAYBE_URLRequest_CreateAndIsURLRequestInfo)
559 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_SetProperty)
560 TEST_PPAPI_NACL(URLRequest_SetProperty)
561 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_AppendDataToBody)
562 TEST_PPAPI_NACL(URLRequest_AppendDataToBody)
563 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(DISABLED_URLRequest_AppendFileToBody)
564 TEST_PPAPI_NACL(DISABLED_URLRequest_AppendFileToBody)
565 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_Stress)
566 TEST_PPAPI_NACL(URLRequest_Stress)
568 TEST_PPAPI_OUT_OF_PROCESS(PaintAggregator)
569 TEST_PPAPI_NACL(PaintAggregator)
571 // TODO(danakj): http://crbug.com/115286
572 TEST_PPAPI_NACL(DISABLED_Scrollbar)
574 TEST_PPAPI_NACL(Var)
576 TEST_PPAPI_NACL(VarResource)
578 // PostMessage tests.
579 #define RUN_POSTMESSAGE_SUBTESTS \
580 RunTestViaHTTP( \
581 LIST_TEST(PostMessage_SendInInit) \
582 LIST_TEST(PostMessage_SendingData) \
583 LIST_TEST(PostMessage_SendingString) \
584 LIST_TEST(PostMessage_SendingArrayBuffer) \
585 LIST_TEST(PostMessage_SendingArray) \
586 LIST_TEST(PostMessage_SendingDictionary) \
587 LIST_TEST(PostMessage_SendingResource) \
588 LIST_TEST(PostMessage_SendingComplexVar) \
589 LIST_TEST(PostMessage_MessageEvent) \
590 LIST_TEST(PostMessage_NoHandler) \
591 LIST_TEST(PostMessage_ExtraParam) \
592 LIST_TEST(PostMessage_NonMainThread) \
595 // Windows defines 'PostMessage', so we have to undef it.
596 #ifdef PostMessage
597 #undef PostMessage
598 #endif
600 #if defined(OS_WIN)
601 // http://crbug.com/95557
602 #define MAYBE_PostMessage DISABLED_PostMessage
603 #else
604 #define MAYBE_PostMessage PostMessage
605 #endif
606 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, MAYBE_PostMessage) {
607 RUN_POSTMESSAGE_SUBTESTS;
609 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, PostMessage) {
610 RUN_POSTMESSAGE_SUBTESTS;
612 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, PostMessage) {
613 RUN_POSTMESSAGE_SUBTESTS;
615 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
616 MAYBE_PNACL_NONSFI(PostMessage)) {
617 RUN_POSTMESSAGE_SUBTESTS;
619 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
620 MAYBE_PNACL_TRANSITIONAL_NONSFI(PostMessage)) {
621 RUN_POSTMESSAGE_SUBTESTS;
624 TEST_PPAPI_NACL(Memory)
626 // FileIO tests.
627 #define RUN_FILEIO_SUBTESTS \
628 RunTestViaHTTP( \
629 LIST_TEST(FileIO_Open) \
630 LIST_TEST(FileIO_OpenDirectory) \
631 LIST_TEST(FileIO_AbortCalls) \
632 LIST_TEST(FileIO_ParallelReads) \
633 LIST_TEST(FileIO_ParallelWrites) \
634 LIST_TEST(FileIO_NotAllowMixedReadWrite) \
635 LIST_TEST(FileIO_ReadWriteSetLength) \
636 LIST_TEST(FileIO_ReadToArrayWriteSetLength) \
637 LIST_TEST(FileIO_TouchQuery) \
640 #define RUN_FILEIO_PRIVATE_SUBTESTS \
641 RunTestViaHTTP( \
642 LIST_TEST(FileIO_RequestOSFileHandle) \
643 LIST_TEST(FileIO_RequestOSFileHandleWithOpenExclusive) \
644 LIST_TEST(FileIO_Mmap) \
647 IN_PROC_BROWSER_TEST_F(PPAPIPrivateTest, FileIO_Private) {
648 RUN_FILEIO_PRIVATE_SUBTESTS;
651 // See: crbug.com/421284
652 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, DISABLED_FileIO) {
653 RUN_FILEIO_SUBTESTS;
655 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPIPrivateTest, FileIO_Private) {
656 RUN_FILEIO_PRIVATE_SUBTESTS;
659 // http://crbug.com/313401
660 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, DISABLED_FileIO) {
661 RUN_FILEIO_SUBTESTS;
663 // http://crbug.com/313401
664 IN_PROC_BROWSER_TEST_F(PPAPIPrivateNaClNewlibTest,
665 DISABLED_NaCl_Newlib_FileIO_Private) {
666 RUN_FILEIO_PRIVATE_SUBTESTS;
669 // http://crbug.com/313205
670 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, DISABLED_FileIO) {
671 RUN_FILEIO_SUBTESTS;
673 IN_PROC_BROWSER_TEST_F(PPAPIPrivateNaClPNaClTest,
674 DISABLED_PNaCl_FileIO_Private) {
675 RUN_FILEIO_PRIVATE_SUBTESTS;
678 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, MAYBE_PNACL_NONSFI(FileIO)) {
679 RUN_FILEIO_SUBTESTS;
681 IN_PROC_BROWSER_TEST_F(PPAPIPrivateNaClPNaClNonSfiTest,
682 MAYBE_PNACL_NONSFI(FILEIO_Private)) {
683 RUN_FILEIO_PRIVATE_SUBTESTS;
686 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
687 MAYBE_PNACL_TRANSITIONAL_NONSFI(FileIO)) {
688 RUN_FILEIO_SUBTESTS;
690 IN_PROC_BROWSER_TEST_F(PPAPIPrivateNaClPNaClTransitionalNonSfiTest,
691 MAYBE_PNACL_TRANSITIONAL_NONSFI(FILEIO_Private)) {
692 RUN_FILEIO_PRIVATE_SUBTESTS;
695 // FileRef tests.
696 #define RUN_FILEREF_SUBTESTS_1 \
697 RunTestViaHTTP( \
698 LIST_TEST(FileRef_Create) \
699 LIST_TEST(FileRef_GetFileSystemType) \
700 LIST_TEST(FileRef_GetName) \
701 LIST_TEST(FileRef_GetPath) \
702 LIST_TEST(FileRef_GetParent) \
703 LIST_TEST(FileRef_MakeDirectory) \
706 #define RUN_FILEREF_SUBTESTS_2 \
707 RunTestViaHTTP( \
708 LIST_TEST(FileRef_QueryAndTouchFile) \
709 LIST_TEST(FileRef_DeleteFileAndDirectory) \
710 LIST_TEST(FileRef_RenameFileAndDirectory) \
711 LIST_TEST(FileRef_Query) \
712 LIST_TEST(FileRef_FileNameEscaping) \
715 // Note, the FileRef tests are split into two, because all of them together
716 // sometimes take too long on windows: crbug.com/336999
717 // FileRef_ReadDirectoryEntries is flaky, so left out. See crbug.com/241646.
718 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, FileRef1) {
719 RUN_FILEREF_SUBTESTS_1;
721 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, FileRef2) {
722 RUN_FILEREF_SUBTESTS_2;
725 #if defined(OS_MACOSX) && defined(ADDRESS_SANITIZER)
726 // Flaky on Mac ASAN: http://crbug.com/437411.
727 #define MAYBE_FileRef1 DISABLED_FileRef1
728 #else
729 #define MAYBE_FileRef1 FileRef1
730 #endif
731 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, MAYBE_FileRef1) {
732 RUN_FILEREF_SUBTESTS_1;
734 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, FileRef2) {
735 RUN_FILEREF_SUBTESTS_2;
737 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, FileRef1) {
738 RUN_FILEREF_SUBTESTS_1;
740 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, FileRef2) {
741 RUN_FILEREF_SUBTESTS_2;
743 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
744 MAYBE_PNACL_NONSFI(FileRef1)) {
745 RUN_FILEREF_SUBTESTS_1;
747 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
748 MAYBE_PNACL_NONSFI(FileRef2)) {
749 RUN_FILEREF_SUBTESTS_2;
751 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
752 MAYBE_PNACL_TRANSITIONAL_NONSFI(FileRef1)) {
753 RUN_FILEREF_SUBTESTS_1;
755 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
756 MAYBE_PNACL_TRANSITIONAL_NONSFI(FileRef2)) {
757 RUN_FILEREF_SUBTESTS_2;
760 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(FileSystem)
762 // PPAPINaClTest.FileSystem times out consistently on Windows and Mac.
763 // http://crbug.com/130372
764 #if defined(OS_MACOSX) || defined(OS_WIN)
765 #define MAYBE_FileSystem DISABLED_FileSystem
766 #else
767 #define MAYBE_FileSystem FileSystem
768 #endif
770 TEST_PPAPI_NACL(MAYBE_FileSystem)
772 #if defined(OS_MACOSX)
773 // http://crbug.com/103912
774 #define MAYBE_Fullscreen DISABLED_Fullscreen
775 #elif defined(OS_LINUX)
776 // http://crbug.com/146008
777 #define MAYBE_Fullscreen DISABLED_Fullscreen
778 #elif defined(OS_WIN)
779 // http://crbug.com/342269
780 #define MAYBE_Fullscreen DISABLED_Fullscreen
781 #else
782 #define MAYBE_Fullscreen Fullscreen
783 #endif
785 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(MAYBE_Fullscreen)
786 TEST_PPAPI_NACL(MAYBE_Fullscreen)
788 TEST_PPAPI_OUT_OF_PROCESS(X509CertificatePrivate)
790 TEST_PPAPI_OUT_OF_PROCESS(UMA)
791 TEST_PPAPI_NACL(UMA)
793 // NetAddress tests.
794 #define RUN_NETADDRESS_SUBTESTS \
795 RunTestViaHTTP( \
796 LIST_TEST(NetAddress_IPv4Address) \
797 LIST_TEST(NetAddress_IPv6Address) \
798 LIST_TEST(NetAddress_DescribeAsString) \
801 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, NetAddress) {
802 RUN_NETADDRESS_SUBTESTS;
804 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, NetAddress) {
805 RUN_NETADDRESS_SUBTESTS;
807 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, NetAddress) {
808 RUN_NETADDRESS_SUBTESTS;
810 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
811 MAYBE_PNACL_NONSFI(NetAddress)) {
812 RUN_NETADDRESS_SUBTESTS;
814 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
815 MAYBE_PNACL_TRANSITIONAL_NONSFI(NetAddress)) {
816 RUN_NETADDRESS_SUBTESTS;
819 // NetAddressPrivate tests.
820 #define RUN_NETADDRESS_PRIVATE_SUBTESTS \
821 RunTestViaHTTP( \
822 LIST_TEST(NetAddressPrivate_AreEqual) \
823 LIST_TEST(NetAddressPrivate_AreHostsEqual) \
824 LIST_TEST(NetAddressPrivate_Describe) \
825 LIST_TEST(NetAddressPrivate_ReplacePort) \
826 LIST_TEST(NetAddressPrivate_GetAnyAddress) \
827 LIST_TEST(NetAddressPrivate_DescribeIPv6) \
828 LIST_TEST(NetAddressPrivate_GetFamily) \
829 LIST_TEST(NetAddressPrivate_GetPort) \
830 LIST_TEST(NetAddressPrivate_GetAddress) \
831 LIST_TEST(NetAddressPrivate_GetScopeID) \
834 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, NetAddressPrivate) {
835 RUN_NETADDRESS_PRIVATE_SUBTESTS;
838 #define RUN_NETADDRESS_PRIVATE_UNTRUSTED_SUBTESTS \
839 RunTestViaHTTP( \
840 LIST_TEST(NetAddressPrivateUntrusted_AreEqual) \
841 LIST_TEST(NetAddressPrivateUntrusted_AreHostsEqual) \
842 LIST_TEST(NetAddressPrivateUntrusted_Describe) \
843 LIST_TEST(NetAddressPrivateUntrusted_ReplacePort) \
844 LIST_TEST(NetAddressPrivateUntrusted_GetAnyAddress) \
845 LIST_TEST(NetAddressPrivateUntrusted_GetFamily) \
846 LIST_TEST(NetAddressPrivateUntrusted_GetPort) \
847 LIST_TEST(NetAddressPrivateUntrusted_GetAddress) \
850 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, NetAddressPrivate) {
851 RUN_NETADDRESS_PRIVATE_UNTRUSTED_SUBTESTS;
853 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, NetAddressPrivate) {
854 RUN_NETADDRESS_PRIVATE_UNTRUSTED_SUBTESTS;
856 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
857 MAYBE_PNACL_NONSFI(NetAddressPrivate)) {
858 RUN_NETADDRESS_PRIVATE_UNTRUSTED_SUBTESTS;
860 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
861 MAYBE_PNACL_TRANSITIONAL_NONSFI(NetAddressPrivate)) {
862 RUN_NETADDRESS_PRIVATE_UNTRUSTED_SUBTESTS;
865 // NetworkMonitor tests.
866 #define RUN_NETWORK_MONITOR_SUBTESTS \
867 RunTestViaHTTP( \
868 LIST_TEST(NetworkMonitor_Basic) \
869 LIST_TEST(NetworkMonitor_2Monitors) \
870 LIST_TEST(NetworkMonitor_DeleteInCallback) \
873 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, NetworkMonitor) {
874 RUN_NETWORK_MONITOR_SUBTESTS;
876 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, NetworkMonitor) {
877 RUN_NETWORK_MONITOR_SUBTESTS;
879 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, NetworkMonitor) {
880 RUN_NETWORK_MONITOR_SUBTESTS;
882 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
883 MAYBE_PNACL_NONSFI(NetworkMonitor)) {
884 RUN_NETWORK_MONITOR_SUBTESTS;
886 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
887 MAYBE_PNACL_TRANSITIONAL_NONSFI(NetworkMonitor)) {
888 RUN_NETWORK_MONITOR_SUBTESTS;
891 // Flash tests.
892 #define RUN_FLASH_SUBTESTS \
893 RunTestViaHTTP( \
894 LIST_TEST(Flash_SetInstanceAlwaysOnTop) \
895 LIST_TEST(Flash_GetCommandLineArgs) \
898 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, Flash) {
899 RUN_FLASH_SUBTESTS;
902 // In-process WebSocket tests. Note, the WebSocket tests are split into two,
903 // because all of them together sometimes take too long on windows:
904 // crbug.com/336999
905 #define RUN_WEBSOCKET_SUBTESTS_1 \
906 RunTestWithWebSocketServer( \
907 LIST_TEST(WebSocket_IsWebSocket) \
908 LIST_TEST(WebSocket_UninitializedPropertiesAccess) \
909 LIST_TEST(WebSocket_InvalidConnect) \
910 LIST_TEST(WebSocket_Protocols) \
911 LIST_TEST(WebSocket_GetURL) \
912 LIST_TEST(WebSocket_ValidConnect) \
913 LIST_TEST(WebSocket_InvalidClose) \
914 LIST_TEST(WebSocket_ValidClose) \
915 LIST_TEST(WebSocket_GetProtocol) \
916 LIST_TEST(WebSocket_TextSendReceive) \
917 LIST_TEST(WebSocket_BinarySendReceive) \
918 LIST_TEST(WebSocket_StressedSendReceive) \
919 LIST_TEST(WebSocket_BufferedAmount) \
922 #define RUN_WEBSOCKET_SUBTESTS_2 \
923 RunTestWithWebSocketServer( \
924 LIST_TEST(WebSocket_AbortCallsWithCallback) \
925 LIST_TEST(WebSocket_AbortSendMessageCall) \
926 LIST_TEST(WebSocket_AbortCloseCall) \
927 LIST_TEST(WebSocket_AbortReceiveMessageCall) \
928 LIST_TEST(WebSocket_ClosedFromServerWhileSending) \
929 LIST_TEST(WebSocket_CcInterfaces) \
930 LIST_TEST(WebSocket_UtilityInvalidConnect) \
931 LIST_TEST(WebSocket_UtilityProtocols) \
932 LIST_TEST(WebSocket_UtilityGetURL) \
933 LIST_TEST(WebSocket_UtilityValidConnect) \
934 LIST_TEST(WebSocket_UtilityInvalidClose) \
935 LIST_TEST(WebSocket_UtilityValidClose) \
936 LIST_TEST(WebSocket_UtilityGetProtocol) \
937 LIST_TEST(WebSocket_UtilityTextSendReceive) \
938 LIST_TEST(WebSocket_UtilityBinarySendReceive) \
939 LIST_TEST(WebSocket_UtilityBufferedAmount) \
942 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, WebSocket1) {
943 RUN_WEBSOCKET_SUBTESTS_1;
945 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, WebSocket2) {
946 RUN_WEBSOCKET_SUBTESTS_2;
948 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, WebSocket1) {
949 RUN_WEBSOCKET_SUBTESTS_1;
951 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, WebSocket2) {
952 RUN_WEBSOCKET_SUBTESTS_2;
954 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, WebSocket1) {
955 RUN_WEBSOCKET_SUBTESTS_1;
957 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, WebSocket2) {
958 RUN_WEBSOCKET_SUBTESTS_2;
960 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
961 MAYBE_PNACL_NONSFI(WebSocket1)) {
962 RUN_WEBSOCKET_SUBTESTS_1;
964 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
965 MAYBE_PNACL_NONSFI(WebSocket2)) {
966 RUN_WEBSOCKET_SUBTESTS_2;
968 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
969 MAYBE_PNACL_TRANSITIONAL_NONSFI(WebSocket1)) {
970 RUN_WEBSOCKET_SUBTESTS_1;
972 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
973 MAYBE_PNACL_TRANSITIONAL_NONSFI(WebSocket2)) {
974 RUN_WEBSOCKET_SUBTESTS_2;
977 // AudioConfig tests
978 #define RUN_AUDIO_CONFIG_SUBTESTS \
979 RunTestViaHTTP( \
980 LIST_TEST(AudioConfig_RecommendSampleRate) \
981 LIST_TEST(AudioConfig_ValidConfigs) \
982 LIST_TEST(AudioConfig_InvalidConfigs) \
985 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, AudioConfig) {
986 RUN_AUDIO_CONFIG_SUBTESTS;
988 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, AudioConfig) {
989 RUN_AUDIO_CONFIG_SUBTESTS;
991 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(AudioConfig)) {
992 RUN_AUDIO_CONFIG_SUBTESTS;
994 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, AudioConfig) {
995 RUN_AUDIO_CONFIG_SUBTESTS;
997 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
998 MAYBE_PNACL_NONSFI(AudioConfig)) {
999 RUN_AUDIO_CONFIG_SUBTESTS;
1001 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
1002 MAYBE_PNACL_TRANSITIONAL_NONSFI(AudioConfig)) {
1003 RUN_AUDIO_CONFIG_SUBTESTS;
1006 // PPB_Audio tests.
1007 #define RUN_AUDIO_SUBTESTS \
1008 RunTestViaHTTP( \
1009 LIST_TEST(Audio_Creation) \
1010 LIST_TEST(Audio_DestroyNoStop) \
1011 LIST_TEST(Audio_Failures) \
1012 LIST_TEST(Audio_AudioCallback1) \
1013 LIST_TEST(Audio_AudioCallback2) \
1014 LIST_TEST(Audio_AudioCallback3) \
1015 LIST_TEST(Audio_AudioCallback4) \
1018 #if defined(OS_LINUX)
1019 // http://crbug.com/396464
1020 #define MAYBE_Audio DISABLED_Audio
1021 #else
1022 #define MAYBE_Audio Audio
1023 #endif
1024 // PPB_Audio is not supported in-process.
1025 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, MAYBE_Audio) {
1026 RUN_AUDIO_SUBTESTS;
1028 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, Audio) {
1029 RUN_AUDIO_SUBTESTS;
1031 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(Audio)) {
1032 RUN_AUDIO_SUBTESTS;
1034 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, Audio) {
1035 RUN_AUDIO_SUBTESTS;
1037 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
1038 MAYBE_PNACL_NONSFI(Audio)) {
1039 RUN_AUDIO_SUBTESTS;
1041 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
1042 MAYBE_PNACL_TRANSITIONAL_NONSFI(Audio)) {
1043 RUN_AUDIO_SUBTESTS;
1046 #define RUN_AUDIO_THREAD_CREATOR_SUBTESTS \
1047 RunTestViaHTTP( \
1048 LIST_TEST(Audio_AudioThreadCreatorIsRequired) \
1049 LIST_TEST(Audio_AudioThreadCreatorIsCalled) \
1052 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, AudioThreadCreator) {
1053 RUN_AUDIO_THREAD_CREATOR_SUBTESTS;
1055 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(AudioThreadCreator)) {
1056 RUN_AUDIO_THREAD_CREATOR_SUBTESTS;
1058 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, AudioThreadCreator) {
1059 RUN_AUDIO_THREAD_CREATOR_SUBTESTS;
1061 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest,
1062 MAYBE_PNACL_NONSFI(AudioThreadCreator)) {
1063 RUN_AUDIO_THREAD_CREATOR_SUBTESTS;
1065 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
1066 MAYBE_PNACL_TRANSITIONAL_NONSFI(AudioThreadCreator)) {
1067 RUN_AUDIO_THREAD_CREATOR_SUBTESTS;
1070 TEST_PPAPI_OUT_OF_PROCESS(View_CreatedVisible);
1071 TEST_PPAPI_NACL(View_CreatedVisible);
1072 // This test ensures that plugins created in a background tab have their
1073 // initial visibility set to false. We don't bother testing in-process for this
1074 // custom test since the out of process code also exercises in-process.
1076 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, View_CreateInvisible) {
1077 // Make a second tab in the foreground.
1078 GURL url = GetTestFileUrl("View_CreatedInvisible");
1079 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_LINK);
1080 params.disposition = NEW_BACKGROUND_TAB;
1081 ui_test_utils::NavigateToURL(&params);
1084 // This test messes with tab visibility so is custom.
1085 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, DISABLED_View_PageHideShow) {
1086 // The plugin will be loaded in the foreground tab and will send us a message.
1087 PPAPITestMessageHandler handler;
1088 content::JavascriptTestObserver observer(
1089 browser()->tab_strip_model()->GetActiveWebContents(),
1090 &handler);
1092 GURL url = GetTestFileUrl("View_PageHideShow");
1093 ui_test_utils::NavigateToURL(browser(), url);
1095 ASSERT_TRUE(observer.Run()) << handler.error_message();
1096 EXPECT_STREQ("TestPageHideShow:Created", handler.message().c_str());
1097 observer.Reset();
1099 // Make a new tab to cause the original one to hide, this should trigger the
1100 // next phase of the test.
1101 chrome::NavigateParams params(
1102 browser(), GURL(url::kAboutBlankURL), ui::PAGE_TRANSITION_LINK);
1103 params.disposition = NEW_FOREGROUND_TAB;
1104 ui_test_utils::NavigateToURL(&params);
1106 // Wait until the test acks that it got hidden.
1107 ASSERT_TRUE(observer.Run()) << handler.error_message();
1108 EXPECT_STREQ("TestPageHideShow:Hidden", handler.message().c_str());
1109 observer.Reset();
1111 // Switch back to the test tab.
1112 browser()->tab_strip_model()->ActivateTabAt(0, true);
1114 ASSERT_TRUE(observer.Run()) << handler.error_message();
1115 EXPECT_STREQ("PASS", handler.message().c_str());
1118 // Tests that if a plugin accepts touch events, the browser knows to send touch
1119 // events to the renderer.
1120 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, InputEvent_AcceptTouchEvent) {
1121 std::string positive_tests[] = { "InputEvent_AcceptTouchEvent_1",
1122 "InputEvent_AcceptTouchEvent_2",
1123 "InputEvent_AcceptTouchEvent_3",
1124 "InputEvent_AcceptTouchEvent_4"
1127 for (size_t i = 0; i < arraysize(positive_tests); ++i) {
1128 RenderViewHost* host = browser()->tab_strip_model()->
1129 GetActiveWebContents()->GetRenderViewHost();
1130 RunTest(positive_tests[i]);
1131 EXPECT_TRUE(content::RenderViewHostTester::HasTouchEventHandler(host));
1135 // View tests.
1136 #define RUN_VIEW_SUBTESTS \
1137 RunTestViaHTTP( \
1138 LIST_TEST(View_SizeChange) \
1139 LIST_TEST(View_ClipChange) \
1140 LIST_TEST(View_ScrollOffsetChange) \
1143 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, View) {
1144 RUN_VIEW_SUBTESTS;
1146 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, View) {
1147 RUN_VIEW_SUBTESTS;
1149 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, View) {
1150 RUN_VIEW_SUBTESTS;
1152 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, MAYBE_PNACL_NONSFI(View)) {
1153 RUN_VIEW_SUBTESTS;
1155 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTransitionalNonSfiTest,
1156 MAYBE_PNACL_TRANSITIONAL_NONSFI(View)) {
1157 RUN_VIEW_SUBTESTS;
1160 // FlashMessageLoop tests.
1161 #define RUN_FLASH_MESSAGE_LOOP_SUBTESTS \
1162 RunTest( \
1163 LIST_TEST(FlashMessageLoop_Basics) \
1164 LIST_TEST(FlashMessageLoop_RunWithoutQuit) \
1167 #if defined(OS_LINUX) // Disabled due to flakiness http://crbug.com/316925
1168 #define MAYBE_FlashMessageLoop DISABLED_FlashMessageLoop
1169 #else
1170 #define MAYBE_FlashMessageLoop FlashMessageLoop
1171 #endif
1172 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, MAYBE_FlashMessageLoop) {
1173 RUN_FLASH_MESSAGE_LOOP_SUBTESTS;
1176 // The compositor test timeouts sometimes, so we have to split it to two
1177 // subtests.
1178 #define RUN_COMPOSITOR_SUBTESTS_0 \
1179 RunTestViaHTTP( \
1180 LIST_TEST(Compositor_BindUnbind) \
1181 LIST_TEST(Compositor_Release) \
1182 LIST_TEST(Compositor_ReleaseUnbound) \
1183 LIST_TEST(Compositor_ReleaseWithoutCommit) \
1184 LIST_TEST(Compositor_ReleaseWithoutCommitUnbound) \
1187 #define RUN_COMPOSITOR_SUBTESTS_1 \
1188 RunTestViaHTTP( \
1189 LIST_TEST(Compositor_CommitTwoTimesWithoutChange) \
1190 LIST_TEST(Compositor_CommitTwoTimesWithoutChangeUnbound) \
1191 LIST_TEST(Compositor_General) \
1192 LIST_TEST(Compositor_GeneralUnbound) \
1195 #if defined(OS_WIN)
1196 // This test fails with the test compositor which is what's used by default for
1197 // browser tests on Windows. Renable when the software compositor is available.
1198 #define MAYBE_Compositor0 DISABLED_Compositor0
1199 #define MAYBE_Compositor1 DISABLED_Compositor1
1200 #elif defined(OS_MACOSX)
1201 // This test fails when using the legacy software mode. Reenable when the
1202 // software compositor is enabled crbug.com/286038
1203 #define MAYBE_Compositor0 DISABLED_Compositor0
1204 #define MAYBE_Compositor1 DISABLED_Compositor1
1205 #else
1206 // flaky on Linux: http://crbug.com/396482
1207 #define MAYBE_Compositor0 DISABLED_Compositor0
1208 #define MAYBE_Compositor1 DISABLED_Compositor1
1209 #endif
1211 TEST_PPAPI_NACL_SUBTESTS(MAYBE_Compositor0, RUN_COMPOSITOR_SUBTESTS_0)
1212 TEST_PPAPI_NACL_SUBTESTS(MAYBE_Compositor1, RUN_COMPOSITOR_SUBTESTS_1)
1214 #if defined(OS_WIN)
1215 // Flaky on Windows (crbug.com/438729)
1216 #define MAYBE_MediaStreamAudioTrack DISABLED_MediaStreamAudioTrack
1217 #else
1218 #define MAYBE_MediaStreamAudioTrack MediaStreamAudioTrack
1219 #endif
1220 TEST_PPAPI_NACL(MAYBE_MediaStreamAudioTrack)
1222 TEST_PPAPI_NACL(MediaStreamVideoTrack)
1224 TEST_PPAPI_NACL(MouseCursor)
1226 TEST_PPAPI_NACL(NetworkProxy)
1228 TEST_PPAPI_NACL(TrueTypeFont)
1230 TEST_PPAPI_NACL(VideoDecoder)
1232 TEST_PPAPI_NACL(VideoEncoder)
1234 // VideoDestination doesn't work in content_browsertests.
1235 TEST_PPAPI_OUT_OF_PROCESS(VideoDestination)
1236 TEST_PPAPI_NACL(VideoDestination)
1238 // VideoSource doesn't work in content_browsertests.
1239 TEST_PPAPI_OUT_OF_PROCESS(VideoSource)
1240 TEST_PPAPI_NACL(VideoSource)
1242 // Printing doesn't work in content_browsertests.
1243 TEST_PPAPI_OUT_OF_PROCESS(Printing)
1245 TEST_PPAPI_NACL(MessageHandler)
1247 TEST_PPAPI_NACL(MessageLoop_Basics)
1248 TEST_PPAPI_NACL(MessageLoop_Post)
1250 // Going forward, Flash APIs will only work out-of-process.
1251 TEST_PPAPI_OUT_OF_PROCESS(Flash_GetLocalTimeZoneOffset)
1252 TEST_PPAPI_OUT_OF_PROCESS(Flash_GetProxyForURL)
1253 TEST_PPAPI_OUT_OF_PROCESS(Flash_GetSetting)
1254 TEST_PPAPI_OUT_OF_PROCESS(Flash_SetCrashData)
1255 // http://crbug.com/176822
1256 #if !defined(OS_WIN)
1257 TEST_PPAPI_OUT_OF_PROCESS(FlashClipboard)
1258 #endif
1259 TEST_PPAPI_OUT_OF_PROCESS(FlashFile)
1260 // Mac/Aura reach NOTIMPLEMENTED/time out.
1261 // mac: http://crbug.com/96767
1262 // aura: http://crbug.com/104384
1263 // cros: http://crbug.com/396502
1264 #if defined(OS_MACOSX) || defined(OS_CHROMEOS)
1265 #define MAYBE_FlashFullscreen DISABLED_FlashFullscreen
1266 #else
1267 #define MAYBE_FlashFullscreen FlashFullscreen
1268 #endif
1269 TEST_PPAPI_OUT_OF_PROCESS(MAYBE_FlashFullscreen)
1271 TEST_PPAPI_OUT_OF_PROCESS(PDF)
1273 // TODO(dalecurtis): Renable once the platform verification infobar has been
1274 // implemented; see http://crbug.com/270908
1275 // #if defined(OS_CHROMEOS)
1276 // TEST_PPAPI_OUT_OF_PROCESS(PlatformVerificationPrivate)
1277 // #endif
1279 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, FlashDRM) {
1280 RunTest(
1281 #if (defined(OS_WIN) && defined(ENABLE_RLZ)) || defined(OS_CHROMEOS)
1282 // Only implemented on Windows and ChromeOS currently.
1283 LIST_TEST(FlashDRM_GetDeviceID)
1284 #endif
1285 LIST_TEST(FlashDRM_GetHmonitor)
1286 LIST_TEST(FlashDRM_GetVoucherFile));
1289 TEST_PPAPI_OUT_OF_PROCESS(TalkPrivate)
1291 #if defined(OS_CHROMEOS)
1292 TEST_PPAPI_OUT_OF_PROCESS(OutputProtectionPrivate)
1293 #endif
1295 #if !defined(DISABLE_NACL)
1296 class PackagedAppTest : public ExtensionBrowserTest {
1297 public:
1298 explicit PackagedAppTest(const std::string& toolchain)
1299 : toolchain_(toolchain) { }
1301 void LaunchTestingApp(const std::string& extension_dirname) {
1302 base::FilePath data_dir;
1303 ASSERT_TRUE(PathService::Get(chrome::DIR_GEN_TEST_DATA, &data_dir));
1304 base::FilePath app_dir = data_dir.AppendASCII("ppapi")
1305 .AppendASCII("tests")
1306 .AppendASCII("extensions")
1307 .AppendASCII(extension_dirname)
1308 .AppendASCII(toolchain_);
1310 const extensions::Extension* extension = LoadExtension(app_dir);
1311 ASSERT_TRUE(extension);
1313 AppLaunchParams params(browser()->profile(), extension,
1314 extensions::LAUNCH_CONTAINER_NONE, NEW_WINDOW,
1315 extensions::SOURCE_TEST);
1316 params.command_line = *base::CommandLine::ForCurrentProcess();
1317 OpenApplication(params);
1320 void RunTests(const std::string& extension_dirname) {
1321 ExtensionTestMessageListener listener("PASS", true);
1322 LaunchTestingApp(extension_dirname);
1323 EXPECT_TRUE(listener.WaitUntilSatisfied());
1325 protected:
1326 std::string toolchain_;
1329 class NewlibPackagedAppTest : public PackagedAppTest {
1330 public:
1331 NewlibPackagedAppTest() : PackagedAppTest("newlib") { }
1334 class NonSfiPackagedAppTest : public PackagedAppTest {
1335 public:
1336 NonSfiPackagedAppTest() : PackagedAppTest("nonsfi") { }
1338 void SetUpCommandLine(base::CommandLine* command_line) override {
1339 PackagedAppTest::SetUpCommandLine(command_line);
1340 command_line->AppendSwitch(switches::kEnableNaClNonSfiMode);
1344 // TODO(hidehiko): Switch for NonSfi tests to use nacl_helper_nonsfi, when
1345 // it is launched officially. See NaClBrowserTestPnaclTransitionalNonSfi
1346 // for more details.
1347 class TransitionalNonSfiPackagedAppTest : public NonSfiPackagedAppTest {
1348 public:
1349 void SetUpCommandLine(base::CommandLine* command_line) override {
1350 NonSfiPackagedAppTest::SetUpCommandLine(command_line);
1351 command_line->AppendSwitch(switches::kUseNaClHelperNonSfi);
1355 // Load a packaged app, and wait for it to successfully post a "hello" message
1356 // back.
1357 IN_PROC_BROWSER_TEST_F(NewlibPackagedAppTest, SuccessfulLoad) {
1358 RunTests("packaged_app");
1361 IN_PROC_BROWSER_TEST_F(NonSfiPackagedAppTest,
1362 MAYBE_PNACL_NONSFI(SuccessfulLoad)) {
1363 RunTests("packaged_app");
1366 IN_PROC_BROWSER_TEST_F(TransitionalNonSfiPackagedAppTest,
1367 MAYBE_PNACL_TRANSITIONAL_NONSFI(SuccessfulLoad)) {
1368 RunTests("packaged_app");
1371 IN_PROC_BROWSER_TEST_F(NewlibPackagedAppTest, SocketPermissions) {
1372 RunTests("socket_permissions");
1375 class MojoPPAPITest : public InProcessBrowserTest {
1376 public:
1377 MojoPPAPITest() : InProcessBrowserTest() { }
1378 virtual ~MojoPPAPITest() { }
1380 void RunTestInternal() {
1381 base::FilePath document_root;
1382 ASSERT_TRUE(ui_test_utils::GetRelativeBuildDirectory(&document_root));
1383 net::SpawnedTestServer http_server(net::SpawnedTestServer::TYPE_HTTP,
1384 net::SpawnedTestServer::kLocalhost,
1385 document_root);
1386 ASSERT_TRUE(http_server.Start());
1388 std::string query = "files/test_case.html?testcase=Mojo&mode=mojo";
1389 GURL test_url = http_server.GetURL(query);
1391 PPAPITestMessageHandler handler;
1392 content::JavascriptTestObserver observer(
1393 browser()->tab_strip_model()->GetActiveWebContents(),
1394 &handler);
1395 ui_test_utils::NavigateToURL(browser(), test_url);
1397 ASSERT_TRUE(observer.Run()) << handler.error_message();
1398 result_ = handler.message();
1401 void RunTest() {
1402 base::CommandLine::ForCurrentProcess()->AppendSwitch(
1403 switches::kEnableNaClMojo);
1404 RunTestInternal();
1405 EXPECT_STREQ("PASS", result_.c_str());
1407 void RunTestWithoutFlag() {
1408 RunTestInternal();
1409 EXPECT_STREQ("Plugin crashed. 'NaCl module crashed'", result_.c_str());
1411 private:
1412 std::string result_;
1415 #if defined(OS_POSIX)
1416 #define MAYBE_MOJO(test_name) test_name
1417 #else
1418 #define MAYBE_MOJO(test_name) DISABLED_##test_name
1419 #endif
1421 IN_PROC_BROWSER_TEST_F(MojoPPAPITest, MAYBE_MOJO(Mojo)) {
1422 RunTest();
1425 IN_PROC_BROWSER_TEST_F(MojoPPAPITest, MAYBE_MOJO(MojoFailsWithoutFlag)) {
1426 RunTestWithoutFlag();
1428 #endif