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. 4 5 #include "chrome/test/ppapi/ppapi_test.h" 6 7 #include "base/test/test_timeouts.h" 8 #include "build/build_config.h" 9 #include "chrome/browser/content_settings/host_content_settings_map.h" 10 #include "chrome/browser/profiles/profile.h" 11 #include "chrome/browser/ui/browser.h" 12 #include "chrome/browser/ui/browser_navigator.h" 13 #include "chrome/browser/ui/tabs/tab_strip_model.h" 14 #include "chrome/test/base/ui_test_utils.h" 15 #include "chrome/test/nacl/nacl_browsertest_util.h" 16 #include "content/public/browser/web_contents.h" 17 #include "content/public/common/url_constants.h" 18 #include "content/public/test/javascript_test_observer.h" 19 #include "content/public/test/test_renderer_host.h" 20 #include "ppapi/shared_impl/test_harness_utils.h" 21 22 using content::RenderViewHost; 23 24 // This macro finesses macro expansion to do what we want. 25 #define STRIP_PREFIXES(test_name) ppapi::StripTestPrefixes(#test_name) 26 // Turn the given token into a string. This allows us to use precompiler stuff 27 // to turn names into DISABLED_Foo, but still pass a string to RunTest. 28 #define STRINGIFY(test_name) #test_name 29 #define LIST_TEST(test_name) STRINGIFY(test_name) "," 30 31 // Use these macros to run the tests for a specific interface. 32 // Most interfaces should be tested with both macros. 33 #define TEST_PPAPI_IN_PROCESS(test_name) \ 34 IN_PROC_BROWSER_TEST_F(PPAPITest, test_name) { \ 35 RunTest(STRIP_PREFIXES(test_name)); \ 36 } 37 #define TEST_PPAPI_OUT_OF_PROCESS(test_name) \ 38 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, test_name) { \ 39 RunTest(STRIP_PREFIXES(test_name)); \ 40 } 41 42 // Similar macros that test over HTTP. 43 #define TEST_PPAPI_IN_PROCESS_VIA_HTTP(test_name) \ 44 IN_PROC_BROWSER_TEST_F(PPAPITest, test_name) { \ 45 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \ 46 } 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)); \ 50 } 51 52 // Similar macros that test with an SSL server. 53 #define TEST_PPAPI_IN_PROCESS_WITH_SSL_SERVER(test_name) \ 54 IN_PROC_BROWSER_TEST_F(PPAPITest, test_name) { \ 55 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \ 56 } 57 #define TEST_PPAPI_OUT_OF_PROCESS_WITH_SSL_SERVER(test_name) \ 58 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, test_name) { \ 59 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \ 60 } 61 62 #if defined(DISABLE_NACL) 63 64 #define TEST_PPAPI_NACL(test_name) 65 #define TEST_PPAPI_NACL_NO_PNACL(test_name) 66 #define TEST_PPAPI_NACL_DISALLOWED_SOCKETS(test_name) 67 #define TEST_PPAPI_NACL_WITH_SSL_SERVER(test_name) 68 69 #else 70 71 // TODO(dmichael): Remove this macro, crbug.com/384539 72 #define TEST_PPAPI_NACL_NO_PNACL(test_name) \ 73 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, test_name) { \ 74 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \ 75 } \ 76 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(test_name)) { \ 77 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \ 78 } \ 79 80 // NaCl based PPAPI tests 81 #define TEST_PPAPI_NACL(test_name) \ 82 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, test_name) { \ 83 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \ 84 } \ 85 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(test_name)) { \ 86 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \ 87 } \ 88 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, test_name) { \ 89 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \ 90 } \ 91 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, \ 92 MAYBE_PNACL_NONSFI(test_name)) { \ 93 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \ 94 } 95 96 // NaCl based PPAPI tests with disallowed socket API 97 #define TEST_PPAPI_NACL_DISALLOWED_SOCKETS(test_name) \ 98 IN_PROC_BROWSER_TEST_F(PPAPINaClTestDisallowedSockets, test_name) { \ 99 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \ 100 } 101 102 // NaCl based PPAPI tests with SSL server 103 #define TEST_PPAPI_NACL_WITH_SSL_SERVER(test_name) \ 104 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, test_name) { \ 105 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \ 106 } \ 107 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(test_name)) { \ 108 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \ 109 } \ 110 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, test_name) { \ 111 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \ 112 } \ 113 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, \ 114 MAYBE_PNACL_NONSFI(test_name)) { \ 115 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \ 116 } 117 118 #endif // DISABLE_NACL 119 120 // 121 // Interface tests. 122 // 123 124 TEST_PPAPI_IN_PROCESS(Broker) 125 // Flaky, http://crbug.com/111355 126 TEST_PPAPI_OUT_OF_PROCESS(DISABLED_Broker) 127 128 IN_PROC_BROWSER_TEST_F(PPAPIBrokerInfoBarTest, Accept) { 129 // Accepting the infobar should grant permission to access the PPAPI broker. 130 InfoBarObserver observer(this); 131 observer.ExpectInfoBarAndAccept(true); 132 133 // PPB_Broker_Trusted::IsAllowed should return false before the infobar is 134 // popped and true after the infobar is popped. 135 RunTest("Broker_IsAllowedPermissionDenied"); 136 RunTest("Broker_ConnectPermissionGranted"); 137 RunTest("Broker_IsAllowedPermissionGranted"); 138 139 // It should also set a content settings exception for the site. 140 GURL url = GetTestFileUrl("Broker_ConnectPermissionGranted"); 141 HostContentSettingsMap* content_settings = 142 browser()->profile()->GetHostContentSettingsMap(); 143 EXPECT_EQ(CONTENT_SETTING_ALLOW, 144 content_settings->GetContentSetting( 145 url, url, CONTENT_SETTINGS_TYPE_PPAPI_BROKER, std::string())); 146 } 147 148 IN_PROC_BROWSER_TEST_F(PPAPIBrokerInfoBarTest, Deny) { 149 // Canceling the infobar should deny permission to access the PPAPI broker. 150 InfoBarObserver observer(this); 151 observer.ExpectInfoBarAndAccept(false); 152 153 // PPB_Broker_Trusted::IsAllowed should return false before and after the 154 // infobar is popped. 155 RunTest("Broker_IsAllowedPermissionDenied"); 156 RunTest("Broker_ConnectPermissionDenied"); 157 RunTest("Broker_IsAllowedPermissionDenied"); 158 159 // It should also set a content settings exception for the site. 160 GURL url = GetTestFileUrl("Broker_ConnectPermissionDenied"); 161 HostContentSettingsMap* content_settings = 162 browser()->profile()->GetHostContentSettingsMap(); 163 EXPECT_EQ(CONTENT_SETTING_BLOCK, 164 content_settings->GetContentSetting( 165 url, url, CONTENT_SETTINGS_TYPE_PPAPI_BROKER, std::string())); 166 } 167 168 IN_PROC_BROWSER_TEST_F(PPAPIBrokerInfoBarTest, Blocked) { 169 // Block access to the PPAPI broker. 170 browser()->profile()->GetHostContentSettingsMap()->SetDefaultContentSetting( 171 CONTENT_SETTINGS_TYPE_PPAPI_BROKER, CONTENT_SETTING_BLOCK); 172 173 // We shouldn't see an infobar. 174 InfoBarObserver observer(this); 175 176 RunTest("Broker_ConnectPermissionDenied"); 177 RunTest("Broker_IsAllowedPermissionDenied"); 178 } 179 180 IN_PROC_BROWSER_TEST_F(PPAPIBrokerInfoBarTest, Allowed) { 181 // Always allow access to the PPAPI broker. 182 browser()->profile()->GetHostContentSettingsMap()->SetDefaultContentSetting( 183 CONTENT_SETTINGS_TYPE_PPAPI_BROKER, CONTENT_SETTING_ALLOW); 184 185 // We shouldn't see an infobar. 186 InfoBarObserver observer(this); 187 188 RunTest("Broker_ConnectPermissionGranted"); 189 RunTest("Broker_IsAllowedPermissionGranted"); 190 } 191 192 TEST_PPAPI_NACL(Console) 193 194 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA) 195 // TODO(erg): linux_aura bringup: http://crbug.com/318961 196 #define MAYBE_Core DISABLED_Core 197 #else 198 #define MAYBE_Core Core 199 #endif 200 TEST_PPAPI_NACL(MAYBE_Core) 201 202 // Non-NaCl TraceEvent tests are in content/test/ppapi/ppapi_browsertest.cc. 203 TEST_PPAPI_NACL(TraceEvent) 204 205 TEST_PPAPI_NACL(InputEvent) 206 207 // Flaky on Linux and Windows. http://crbug.com/135403 208 #if defined(OS_LINUX) || defined(OS_WIN) 209 #define MAYBE_ImeInputEvent DISABLED_ImeInputEvent 210 #else 211 #define MAYBE_ImeInputEvent ImeInputEvent 212 #endif 213 214 TEST_PPAPI_OUT_OF_PROCESS(MAYBE_ImeInputEvent) 215 TEST_PPAPI_NACL(MAYBE_ImeInputEvent) 216 217 // Graphics2D_Dev isn't supported in NaCl, only test the other interfaces 218 // TODO(jhorwich) Enable when Graphics2D_Dev interfaces are proxied in NaCl. 219 TEST_PPAPI_NACL(Graphics2D_InvalidResource) 220 TEST_PPAPI_NACL(Graphics2D_InvalidSize) 221 TEST_PPAPI_NACL(Graphics2D_Humongous) 222 TEST_PPAPI_NACL(Graphics2D_InitToZero) 223 TEST_PPAPI_NACL(Graphics2D_Describe) 224 TEST_PPAPI_NACL(Graphics2D_Paint) 225 TEST_PPAPI_NACL(Graphics2D_Scroll) 226 TEST_PPAPI_NACL(Graphics2D_Replace) 227 TEST_PPAPI_NACL(Graphics2D_Flush) 228 TEST_PPAPI_NACL(Graphics2D_FlushOffscreenUpdate) 229 TEST_PPAPI_NACL(Graphics2D_BindNull) 230 231 #if defined(OS_WIN) 232 #if defined(USE_AURA) 233 // These tests fail with the test compositor which is what's used by default for 234 // browser tests on Windows Aura. Renable when the software compositor is 235 // available. 236 #define MAYBE_IN_Graphics3D DISABLED_Graphics3D 237 #define MAYBE_OUT_Graphics3D DISABLED_Graphics3D 238 #define MAYBE_NACL_Graphics3D DISABLED_Graphics3D 239 #else // defined(USE_AURA) 240 // In-process and NaCl tests are having flaky failures on Win: crbug.com/242252 241 #define MAYBE_IN_Graphics3D DISABLED_Graphics3D 242 #define MAYBE_OUT_Graphics3D Graphics3D 243 #define MAYBE_NACL_Graphics3D DISABLED_Graphics3D 244 #endif // defined(USE_AURA) 245 #elif defined(OS_MACOSX) 246 // These tests fail when using the legacy software mode. Reenable when the 247 // software compositor is enabled crbug.com/286038 248 #define MAYBE_IN_Graphics3D DISABLED_Graphics3D 249 #define MAYBE_OUT_Graphics3D DISABLED_Graphics3D 250 #define MAYBE_NACL_Graphics3D DISABLED_Graphics3D 251 #else 252 // The tests are failing in-process. crbug.com/280282 253 #define MAYBE_IN_Graphics3D DISABLED_Graphics3D 254 #define MAYBE_OUT_Graphics3D Graphics3D 255 #define MAYBE_NACL_Graphics3D Graphics3D 256 #endif 257 TEST_PPAPI_IN_PROCESS(MAYBE_IN_Graphics3D) 258 TEST_PPAPI_OUT_OF_PROCESS(MAYBE_OUT_Graphics3D) 259 TEST_PPAPI_NACL(MAYBE_NACL_Graphics3D) 260 261 TEST_PPAPI_NACL(ImageData) 262 263 // TCPSocket and TCPSocketPrivate tests. 264 #define RUN_TCPSOCKET_SUBTESTS \ 265 RunTestViaHTTP( \ 266 LIST_TEST(TCPSocket_Connect) \ 267 LIST_TEST(TCPSocket_ReadWrite) \ 268 LIST_TEST(TCPSocket_SetOption) \ 269 LIST_TEST(TCPSocket_Listen) \ 270 LIST_TEST(TCPSocket_Backlog) \ 271 LIST_TEST(TCPSocket_Interface_1_0) \ 272 ) 273 274 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, TCPSocket) { 275 RUN_TCPSOCKET_SUBTESTS; 276 } 277 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, TCPSocket) { 278 RUN_TCPSOCKET_SUBTESTS; 279 } 280 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(TCPSocket)) { 281 RUN_TCPSOCKET_SUBTESTS; 282 } 283 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, TCPSocket) { 284 RUN_TCPSOCKET_SUBTESTS; 285 } 286 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, 287 MAYBE_PNACL_NONSFI(TCPSocket)) { 288 RUN_TCPSOCKET_SUBTESTS; 289 } 290 291 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(TCPServerSocketPrivate) 292 TEST_PPAPI_NACL(TCPServerSocketPrivate) 293 294 TEST_PPAPI_OUT_OF_PROCESS_WITH_SSL_SERVER(TCPSocketPrivate) 295 TEST_PPAPI_NACL_WITH_SSL_SERVER(TCPSocketPrivate) 296 297 TEST_PPAPI_OUT_OF_PROCESS_WITH_SSL_SERVER(TCPSocketPrivateTrusted) 298 299 // UDPSocket tests. 300 // UDPSocket_Broadcast is disabled for OSX because it requires root 301 // permissions on OSX 10.7+. 302 #if defined(OS_MACOSX) 303 #define MAYBE_UDPSocket_Broadcast DISABLED_UDPSocket_Broadcast 304 #else 305 #define MAYBE_UDPSocket_Broadcast UDPSocket_Broadcast 306 #endif 307 308 #define RUN_UDPSOCKET_SUBTESTS \ 309 RunTestViaHTTP( \ 310 LIST_TEST(UDPSocket_ReadWrite) \ 311 LIST_TEST(UDPSocket_SetOption) \ 312 LIST_TEST(MAYBE_UDPSocket_Broadcast) \ 313 ) 314 315 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, UDPSocket) { 316 RUN_UDPSOCKET_SUBTESTS; 317 } 318 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, UDPSocket) { 319 RUN_UDPSOCKET_SUBTESTS; 320 } 321 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(UDPSocket)) { 322 RUN_UDPSOCKET_SUBTESTS; 323 } 324 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, UDPSocket) { 325 RUN_UDPSOCKET_SUBTESTS; 326 } 327 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, 328 MAYBE_PNACL_NONSFI(UDPSocket)) { 329 RUN_UDPSOCKET_SUBTESTS; 330 } 331 332 333 // UDPSocketPrivate tests. 334 // UDPSocketPrivate_Broadcast is disabled for OSX because it requires root 335 // permissions on OSX 10.7+. 336 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate_Connect) 337 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate_ConnectFailure) 338 #if !defined(OS_MACOSX) 339 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate_Broadcast) 340 #endif // !defined(OS_MACOSX) 341 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate_SetSocketFeatureErrors) 342 TEST_PPAPI_NACL(UDPSocketPrivate_Connect) 343 TEST_PPAPI_NACL(UDPSocketPrivate_ConnectFailure) 344 #if !defined(OS_MACOSX) 345 TEST_PPAPI_NACL(UDPSocketPrivate_Broadcast) 346 #endif // !defined(OS_MACOSX) 347 TEST_PPAPI_NACL(UDPSocketPrivate_SetSocketFeatureErrors) 348 349 // Disallowed socket tests. 350 TEST_PPAPI_NACL_DISALLOWED_SOCKETS(HostResolverPrivateDisallowed) 351 TEST_PPAPI_NACL_DISALLOWED_SOCKETS(TCPServerSocketPrivateDisallowed) 352 TEST_PPAPI_NACL_DISALLOWED_SOCKETS(TCPSocketPrivateDisallowed) 353 TEST_PPAPI_NACL_DISALLOWED_SOCKETS(UDPSocketPrivateDisallowed) 354 355 // HostResolver and HostResolverPrivate tests. 356 #define RUN_HOST_RESOLVER_SUBTESTS \ 357 RunTestViaHTTP( \ 358 LIST_TEST(HostResolver_Empty) \ 359 LIST_TEST(HostResolver_Resolve) \ 360 LIST_TEST(HostResolver_ResolveIPv4) \ 361 ) 362 363 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, HostResolver) { 364 RUN_HOST_RESOLVER_SUBTESTS; 365 } 366 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, HostResolver) { 367 RUN_HOST_RESOLVER_SUBTESTS; 368 } 369 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(HostResolver)) { 370 RUN_HOST_RESOLVER_SUBTESTS; 371 } 372 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, HostResolver) { 373 RUN_HOST_RESOLVER_SUBTESTS; 374 } 375 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, 376 MAYBE_PNACL_NONSFI(HostResolver)) { 377 RUN_HOST_RESOLVER_SUBTESTS; 378 } 379 380 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(HostResolverPrivate_Resolve) 381 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(HostResolverPrivate_ResolveIPv4) 382 TEST_PPAPI_NACL(HostResolverPrivate_Resolve) 383 TEST_PPAPI_NACL(HostResolverPrivate_ResolveIPv4) 384 385 // URLLoader tests. These are split into multiple test fixtures because if we 386 // run them all together, they tend to time out. 387 #define RUN_URLLOADER_SUBTESTS_0 \ 388 RunTestViaHTTP( \ 389 LIST_TEST(URLLoader_BasicGET) \ 390 LIST_TEST(URLLoader_BasicPOST) \ 391 LIST_TEST(URLLoader_BasicFilePOST) \ 392 LIST_TEST(URLLoader_BasicFileRangePOST) \ 393 LIST_TEST(URLLoader_CompoundBodyPOST) \ 394 ) 395 396 #define RUN_URLLOADER_SUBTESTS_1 \ 397 RunTestViaHTTP( \ 398 LIST_TEST(URLLoader_EmptyDataPOST) \ 399 LIST_TEST(URLLoader_BinaryDataPOST) \ 400 LIST_TEST(URLLoader_CustomRequestHeader) \ 401 LIST_TEST(URLLoader_FailsBogusContentLength) \ 402 LIST_TEST(URLLoader_StreamToFile) \ 403 ) 404 405 // TODO(bbudge) Fix Javascript URLs for trusted loaders. 406 // http://crbug.com/103062 407 #define RUN_URLLOADER_SUBTESTS_2 \ 408 RunTestViaHTTP( \ 409 LIST_TEST(URLLoader_UntrustedSameOriginRestriction) \ 410 LIST_TEST(URLLoader_UntrustedCrossOriginRequest) \ 411 LIST_TEST(URLLoader_UntrustedJavascriptURLRestriction) \ 412 LIST_TEST(DISABLED_URLLoader_TrustedJavascriptURLRestriction) \ 413 ) 414 415 #define RUN_URLLOADER_NACL_SUBTESTS_2 \ 416 RunTestViaHTTP( \ 417 LIST_TEST(URLLoader_UntrustedSameOriginRestriction) \ 418 LIST_TEST(URLLoader_UntrustedCrossOriginRequest) \ 419 LIST_TEST(URLLoader_UntrustedJavascriptURLRestriction) \ 420 LIST_TEST(DISABLED_URLLoader_TrustedJavascriptURLRestriction) \ 421 ) 422 423 #define RUN_URLLOADER_SUBTESTS_3 \ 424 RunTestViaHTTP( \ 425 LIST_TEST(URLLoader_UntrustedHttpRequests) \ 426 LIST_TEST(URLLoader_FollowURLRedirect) \ 427 LIST_TEST(URLLoader_AuditURLRedirect) \ 428 LIST_TEST(URLLoader_AbortCalls) \ 429 LIST_TEST(URLLoader_UntendedLoad) \ 430 LIST_TEST(URLLoader_PrefetchBufferThreshold) \ 431 ) 432 433 // Note: we do not support Trusted APIs in NaCl, so these will be skipped. 434 #define RUN_URLLOADER_TRUSTED_SUBTESTS \ 435 RunTestViaHTTP( \ 436 LIST_TEST(URLLoader_TrustedSameOriginRestriction) \ 437 LIST_TEST(URLLoader_TrustedCrossOriginRequest) \ 438 LIST_TEST(URLLoader_TrustedHttpRequests) \ 439 ) 440 441 IN_PROC_BROWSER_TEST_F(PPAPITest, URLLoader0) { 442 RUN_URLLOADER_SUBTESTS_0; 443 } 444 IN_PROC_BROWSER_TEST_F(PPAPITest, URLLoader1) { 445 RUN_URLLOADER_SUBTESTS_1; 446 } 447 IN_PROC_BROWSER_TEST_F(PPAPITest, URLLoader2) { 448 RUN_URLLOADER_SUBTESTS_2; 449 } 450 IN_PROC_BROWSER_TEST_F(PPAPITest, URLLoader3) { 451 RUN_URLLOADER_SUBTESTS_3; 452 } 453 IN_PROC_BROWSER_TEST_F(PPAPITest, URLLoaderTrusted) { 454 RUN_URLLOADER_TRUSTED_SUBTESTS; 455 } 456 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, URLLoader0) { 457 RUN_URLLOADER_SUBTESTS_0; 458 } 459 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, URLLoader1) { 460 RUN_URLLOADER_SUBTESTS_1; 461 } 462 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, URLLoader2) { 463 RUN_URLLOADER_SUBTESTS_2; 464 } 465 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, URLLoader3) { 466 RUN_URLLOADER_SUBTESTS_3; 467 } 468 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, URLLoaderTrusted) { 469 RUN_URLLOADER_TRUSTED_SUBTESTS; 470 } 471 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, URLLoader0) { 472 RUN_URLLOADER_SUBTESTS_0; 473 } 474 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, URLLoader1) { 475 RUN_URLLOADER_SUBTESTS_1; 476 } 477 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, URLLoader2) { 478 RUN_URLLOADER_SUBTESTS_2; 479 } 480 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, URLLoader3) { 481 RUN_URLLOADER_SUBTESTS_3; 482 } 483 484 // Flaky on 32-bit linux bot; http://crbug.com/308906 485 #if defined(OS_LINUX) && defined(ARCH_CPU_X86) 486 #define MAYBE_URLLoader_BasicFilePOST DISABLED_URLLoader_BasicFilePOST 487 #else 488 #define MAYBE_URLLoader_BasicFilePOST URLLoader_BasicFilePOST 489 #endif 490 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(URLLoader0)) { 491 RunTestViaHTTP( 492 LIST_TEST(URLLoader_BasicGET) 493 LIST_TEST(URLLoader_BasicPOST) 494 LIST_TEST(MAYBE_URLLoader_BasicFilePOST) 495 LIST_TEST(URLLoader_BasicFileRangePOST) 496 LIST_TEST(URLLoader_CompoundBodyPOST) 497 ); 498 } 499 500 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(URLLoader1)) { 501 RUN_URLLOADER_SUBTESTS_1; 502 } 503 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(URLLoader2)) { 504 RUN_URLLOADER_SUBTESTS_2; 505 } 506 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(URLLoader3)) { 507 RUN_URLLOADER_SUBTESTS_3; 508 } 509 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, URLLoader0) { 510 RUN_URLLOADER_SUBTESTS_0; 511 } 512 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, URLLoader1) { 513 RUN_URLLOADER_SUBTESTS_1; 514 } 515 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, URLLoader2) { 516 RUN_URLLOADER_SUBTESTS_2; 517 } 518 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, URLLoader3) { 519 RUN_URLLOADER_SUBTESTS_3; 520 } 521 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, 522 MAYBE_PNACL_NONSFI(URLLoader0)) { 523 RUN_URLLOADER_SUBTESTS_0; 524 } 525 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, 526 MAYBE_PNACL_NONSFI(URLLoader1)) { 527 RUN_URLLOADER_SUBTESTS_1; 528 } 529 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, 530 MAYBE_PNACL_NONSFI(URLLoader2)) { 531 RUN_URLLOADER_SUBTESTS_2; 532 } 533 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, 534 MAYBE_PNACL_NONSFI(URLLoader3)) { 535 RUN_URLLOADER_SUBTESTS_3; 536 } 537 538 // URLRequestInfo tests. 539 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLRequest_CreateAndIsURLRequestInfo) 540 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_CreateAndIsURLRequestInfo) 541 542 // Timing out on Windows. http://crbug.com/129571 543 #if defined(OS_WIN) 544 #define MAYBE_URLRequest_CreateAndIsURLRequestInfo \ 545 DISABLED_URLRequest_CreateAndIsURLRequestInfo 546 #else 547 #define MAYBE_URLRequest_CreateAndIsURLRequestInfo \ 548 URLRequest_CreateAndIsURLRequestInfo 549 #endif 550 TEST_PPAPI_NACL(MAYBE_URLRequest_CreateAndIsURLRequestInfo) 551 552 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLRequest_SetProperty) 553 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_SetProperty) 554 TEST_PPAPI_NACL(URLRequest_SetProperty) 555 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLRequest_AppendDataToBody) 556 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_AppendDataToBody) 557 TEST_PPAPI_NACL(URLRequest_AppendDataToBody) 558 TEST_PPAPI_IN_PROCESS_VIA_HTTP(DISABLED_URLRequest_AppendFileToBody) 559 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(DISABLED_URLRequest_AppendFileToBody) 560 TEST_PPAPI_NACL(DISABLED_URLRequest_AppendFileToBody) 561 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLRequest_Stress) 562 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_Stress) 563 TEST_PPAPI_NACL(URLRequest_Stress) 564 565 TEST_PPAPI_IN_PROCESS(PaintAggregator) 566 TEST_PPAPI_OUT_OF_PROCESS(PaintAggregator) 567 TEST_PPAPI_NACL(PaintAggregator) 568 569 // TODO(danakj): http://crbug.com/115286 570 TEST_PPAPI_NACL(DISABLED_Scrollbar) 571 572 TEST_PPAPI_NACL(Var) 573 574 TEST_PPAPI_NACL(VarResource) 575 576 // PostMessage tests. 577 #define RUN_POSTMESSAGE_SUBTESTS \ 578 RunTestViaHTTP( \ 579 LIST_TEST(PostMessage_SendInInit) \ 580 LIST_TEST(PostMessage_SendingData) \ 581 LIST_TEST(PostMessage_SendingString) \ 582 LIST_TEST(PostMessage_SendingArrayBuffer) \ 583 LIST_TEST(PostMessage_SendingArray) \ 584 LIST_TEST(PostMessage_SendingDictionary) \ 585 LIST_TEST(PostMessage_SendingResource) \ 586 LIST_TEST(PostMessage_SendingComplexVar) \ 587 LIST_TEST(PostMessage_MessageEvent) \ 588 LIST_TEST(PostMessage_NoHandler) \ 589 LIST_TEST(PostMessage_ExtraParam) \ 590 LIST_TEST(PostMessage_NonMainThread) \ 591 ) 592 593 // Windows defines 'PostMessage', so we have to undef it. 594 #ifdef PostMessage 595 #undef PostMessage 596 #endif 597 598 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, PostMessage) { 599 RUN_POSTMESSAGE_SUBTESTS; 600 } 601 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, PostMessage) { 602 RUN_POSTMESSAGE_SUBTESTS; 603 } 604 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(PostMessage)) { 605 RUN_POSTMESSAGE_SUBTESTS; 606 } 607 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, PostMessage) { 608 RUN_POSTMESSAGE_SUBTESTS; 609 } 610 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, 611 MAYBE_PNACL_NONSFI(PostMessage)) { 612 RUN_POSTMESSAGE_SUBTESTS; 613 } 614 615 TEST_PPAPI_NACL(Memory) 616 617 // FileIO tests. 618 #define RUN_FILEIO_SUBTESTS \ 619 RunTestViaHTTP( \ 620 LIST_TEST(FileIO_Open) \ 621 LIST_TEST(FileIO_OpenDirectory) \ 622 LIST_TEST(FileIO_AbortCalls) \ 623 LIST_TEST(FileIO_ParallelReads) \ 624 LIST_TEST(FileIO_ParallelWrites) \ 625 LIST_TEST(FileIO_NotAllowMixedReadWrite) \ 626 LIST_TEST(FileIO_ReadWriteSetLength) \ 627 LIST_TEST(FileIO_ReadToArrayWriteSetLength) \ 628 LIST_TEST(FileIO_TouchQuery) \ 629 ) 630 631 #define RUN_FILEIO_PRIVATE_SUBTESTS \ 632 RunTestViaHTTP( \ 633 LIST_TEST(FileIO_RequestOSFileHandle) \ 634 LIST_TEST(FileIO_RequestOSFileHandleWithOpenExclusive) \ 635 LIST_TEST(FileIO_Mmap) \ 636 ) 637 638 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA) 639 // TODO(erg): linux_aura bringup: http://crbug.com/318961 640 #define MAYBE_FileIO DISABLED_FileIO 641 #define MAYBE_FileIO_Private DISABLED_FileIO_Private 642 #else 643 #define MAYBE_FileIO FileIO 644 #define MAYBE_FileIO_Private FileIO_Private 645 #endif 646 647 IN_PROC_BROWSER_TEST_F(PPAPITest, MAYBE_FileIO) { 648 RUN_FILEIO_SUBTESTS; 649 } 650 IN_PROC_BROWSER_TEST_F(PPAPIPrivateTest, MAYBE_FileIO_Private) { 651 RUN_FILEIO_PRIVATE_SUBTESTS; 652 } 653 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, MAYBE_FileIO) { 654 RUN_FILEIO_SUBTESTS; 655 } 656 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPIPrivateTest, MAYBE_FileIO_Private) { 657 RUN_FILEIO_PRIVATE_SUBTESTS; 658 } 659 660 // Flaky on XP; times out, http://crbug.com/313401 661 #if defined(OS_WIN) 662 #define MAYBE_NaCl_Newlib_FileIO DISABLED_FileIO 663 #define MAYBE_NaCl_Newlib_FileIO_Private DISABLED_FileIO_Private 664 #else 665 #define MAYBE_NaCl_Newlib_FileIO FileIO 666 #define MAYBE_NaCl_Newlib_FileIO_Private FileIO_Private 667 #endif 668 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, MAYBE_NaCl_Newlib_FileIO) { 669 RUN_FILEIO_SUBTESTS; 670 } 671 IN_PROC_BROWSER_TEST_F(PPAPIPrivateNaClNewlibTest, 672 MAYBE_NaCl_Newlib_FileIO_Private) { 673 RUN_FILEIO_PRIVATE_SUBTESTS; 674 } 675 676 // Flaky on 32-bit linux bot; http://crbug.com/308905 677 // Flaky on Windows too; http://crbug.com/321300 678 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, DISABLED_FileIO) { 679 RUN_FILEIO_SUBTESTS; 680 } 681 IN_PROC_BROWSER_TEST_F(PPAPIPrivateNaClGLibcTest, DISABLED_FileIO_Private) { 682 RUN_FILEIO_PRIVATE_SUBTESTS; 683 } 684 685 // Flaky on XP; times out, http://crbug.com/313205 686 #if defined(OS_WIN) 687 #define MAYBE_PNaCl_FileIO DISABLED_FileIO 688 #define MAYBE_PNaCl_FileIO_Private DISABLED_FileIO_Private 689 #else 690 #define MAYBE_PNaCl_FileIO FileIO 691 #define MAYBE_PNaCl_FileIO_Private FileIO_Private 692 #endif 693 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, MAYBE_PNaCl_FileIO) { 694 RUN_FILEIO_SUBTESTS; 695 } 696 IN_PROC_BROWSER_TEST_F(PPAPIPrivateNaClPNaClTest, MAYBE_PNaCl_FileIO_Private) { 697 RUN_FILEIO_PRIVATE_SUBTESTS; 698 } 699 700 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, MAYBE_PNACL_NONSFI(FileIO)) { 701 RUN_FILEIO_SUBTESTS; 702 } 703 IN_PROC_BROWSER_TEST_F(PPAPIPrivateNaClPNaClTest, 704 MAYBE_PNACL_NONSFI(FILEIO_Private)) { 705 RUN_FILEIO_PRIVATE_SUBTESTS; 706 } 707 708 // PPB_FileMapping is only implemented on POSIX currently. 709 // http://crbug.com/83774 710 #if defined(OS_WIN) 711 #define MAYBE_FileMapping DISABLED_FileMapping 712 #else 713 #define MAYBE_FileMapping FileMapping 714 #endif 715 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(MAYBE_FileMapping) 716 TEST_PPAPI_NACL(MAYBE_FileMapping) 717 718 // FileRef tests. 719 #define RUN_FILEREF_SUBTESTS_1 \ 720 RunTestViaHTTP( \ 721 LIST_TEST(FileRef_Create) \ 722 LIST_TEST(FileRef_GetFileSystemType) \ 723 LIST_TEST(FileRef_GetName) \ 724 LIST_TEST(FileRef_GetPath) \ 725 LIST_TEST(FileRef_GetParent) \ 726 LIST_TEST(FileRef_MakeDirectory) \ 727 ) 728 729 #define RUN_FILEREF_SUBTESTS_2 \ 730 RunTestViaHTTP( \ 731 LIST_TEST(FileRef_QueryAndTouchFile) \ 732 LIST_TEST(FileRef_DeleteFileAndDirectory) \ 733 LIST_TEST(FileRef_RenameFileAndDirectory) \ 734 LIST_TEST(FileRef_Query) \ 735 LIST_TEST(FileRef_FileNameEscaping) \ 736 ) 737 738 // Note, the FileRef tests are split into two, because all of them together 739 // sometimes take too long on windows: crbug.com/336999 740 IN_PROC_BROWSER_TEST_F(PPAPITest, FileRef1) { 741 RUN_FILEREF_SUBTESTS_1; 742 } 743 IN_PROC_BROWSER_TEST_F(PPAPITest, FileRef2) { 744 RUN_FILEREF_SUBTESTS_2; 745 } 746 // This test only works as an in-process test. See crbug.com/241646. 747 IN_PROC_BROWSER_TEST_F(PPAPITest, FileRef_ReadDirectoryEntries) { 748 RunTestViaHTTP(LIST_TEST(FileRef_ReadDirectoryEntries)); 749 } 750 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, FileRef1) { 751 RUN_FILEREF_SUBTESTS_1; 752 } 753 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, FileRef2) { 754 RUN_FILEREF_SUBTESTS_2; 755 } 756 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, FileRef1) { 757 RUN_FILEREF_SUBTESTS_1; 758 } 759 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, FileRef2) { 760 RUN_FILEREF_SUBTESTS_2; 761 } 762 // Flaky on 32-bit linux bot; http://crbug.com/308908 763 // Glibc not available on ARM 764 #if (defined(OS_LINUX) && defined(ARCH_CPU_X86)) \ 765 || defined(ARCH_CPU_ARM_FAMILY) 766 #define MAYBE_NaCl_Glibc_FileRef1 DISABLED_FileRef1 767 #define MAYBE_NaCl_Glibc_FileRef2 DISABLED_FileRef2 768 #else 769 #define MAYBE_NaCl_Glibc_FileRef1 FileRef1 770 #define MAYBE_NaCl_Glibc_FileRef2 FileRef2 771 #endif 772 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_NaCl_Glibc_FileRef1) { 773 RUN_FILEREF_SUBTESTS_1; 774 } 775 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_NaCl_Glibc_FileRef2) { 776 RUN_FILEREF_SUBTESTS_2; 777 } 778 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, FileRef1) { 779 RUN_FILEREF_SUBTESTS_1; 780 } 781 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, FileRef2) { 782 RUN_FILEREF_SUBTESTS_2; 783 } 784 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, 785 MAYBE_PNACL_NONSFI(FileRef1)) { 786 RUN_FILEREF_SUBTESTS_1; 787 } 788 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, 789 MAYBE_PNACL_NONSFI(FileRef2)) { 790 RUN_FILEREF_SUBTESTS_2; 791 } 792 793 TEST_PPAPI_IN_PROCESS_VIA_HTTP(FileSystem) 794 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(FileSystem) 795 796 // PPAPINaClTest.FileSystem times out consistently on Windows and Mac. 797 // http://crbug.com/130372 798 #if defined(OS_MACOSX) || defined(OS_WIN) 799 #define MAYBE_FileSystem DISABLED_FileSystem 800 #else 801 #define MAYBE_FileSystem FileSystem 802 #endif 803 804 TEST_PPAPI_NACL(MAYBE_FileSystem) 805 806 #if defined(OS_MACOSX) 807 // http://crbug.com/103912 808 #define MAYBE_Fullscreen DISABLED_Fullscreen 809 #elif defined(OS_LINUX) 810 // http://crbug.com/146008 811 #define MAYBE_Fullscreen DISABLED_Fullscreen 812 #elif defined(OS_WIN) 813 // http://crbug.com/342269 814 #define MAYBE_Fullscreen DISABLED_Fullscreen 815 #else 816 #define MAYBE_Fullscreen Fullscreen 817 #endif 818 819 TEST_PPAPI_IN_PROCESS_VIA_HTTP(MAYBE_Fullscreen) 820 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(MAYBE_Fullscreen) 821 TEST_PPAPI_NACL(MAYBE_Fullscreen) 822 823 TEST_PPAPI_OUT_OF_PROCESS(X509CertificatePrivate) 824 825 TEST_PPAPI_IN_PROCESS(UMA) 826 TEST_PPAPI_OUT_OF_PROCESS(UMA) 827 TEST_PPAPI_NACL(UMA) 828 829 // NetAddress tests. 830 #define RUN_NETADDRESS_SUBTESTS \ 831 RunTestViaHTTP( \ 832 LIST_TEST(NetAddress_IPv4Address) \ 833 LIST_TEST(NetAddress_IPv6Address) \ 834 LIST_TEST(NetAddress_DescribeAsString) \ 835 ) 836 837 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, NetAddress) { 838 RUN_NETADDRESS_SUBTESTS; 839 } 840 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, NetAddress) { 841 RUN_NETADDRESS_SUBTESTS; 842 } 843 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(NetAddress)) { 844 RUN_NETADDRESS_SUBTESTS; 845 } 846 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, NetAddress) { 847 RUN_NETADDRESS_SUBTESTS; 848 } 849 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, 850 MAYBE_PNACL_NONSFI(NetAddress)) { 851 RUN_NETADDRESS_SUBTESTS; 852 } 853 854 // NetAddressPrivate tests. 855 #define RUN_NETADDRESS_PRIVATE_SUBTESTS \ 856 RunTestViaHTTP( \ 857 LIST_TEST(NetAddressPrivate_AreEqual) \ 858 LIST_TEST(NetAddressPrivate_AreHostsEqual) \ 859 LIST_TEST(NetAddressPrivate_Describe) \ 860 LIST_TEST(NetAddressPrivate_ReplacePort) \ 861 LIST_TEST(NetAddressPrivate_GetAnyAddress) \ 862 LIST_TEST(NetAddressPrivate_DescribeIPv6) \ 863 LIST_TEST(NetAddressPrivate_GetFamily) \ 864 LIST_TEST(NetAddressPrivate_GetPort) \ 865 LIST_TEST(NetAddressPrivate_GetAddress) \ 866 LIST_TEST(NetAddressPrivate_GetScopeID) \ 867 ) 868 869 IN_PROC_BROWSER_TEST_F(PPAPITest, NetAddressPrivate) { 870 RUN_NETADDRESS_PRIVATE_SUBTESTS; 871 } 872 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, NetAddressPrivate) { 873 RUN_NETADDRESS_PRIVATE_SUBTESTS; 874 } 875 876 #define RUN_NETADDRESS_PRIVATE_UNTRUSTED_SUBTESTS \ 877 RunTestViaHTTP( \ 878 LIST_TEST(NetAddressPrivateUntrusted_AreEqual) \ 879 LIST_TEST(NetAddressPrivateUntrusted_AreHostsEqual) \ 880 LIST_TEST(NetAddressPrivateUntrusted_Describe) \ 881 LIST_TEST(NetAddressPrivateUntrusted_ReplacePort) \ 882 LIST_TEST(NetAddressPrivateUntrusted_GetAnyAddress) \ 883 LIST_TEST(NetAddressPrivateUntrusted_GetFamily) \ 884 LIST_TEST(NetAddressPrivateUntrusted_GetPort) \ 885 LIST_TEST(NetAddressPrivateUntrusted_GetAddress) \ 886 ) 887 888 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, NetAddressPrivate) { 889 RUN_NETADDRESS_PRIVATE_UNTRUSTED_SUBTESTS; 890 } 891 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(NetAddressPrivate)) { 892 RUN_NETADDRESS_PRIVATE_UNTRUSTED_SUBTESTS; 893 } 894 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, NetAddressPrivate) { 895 RUN_NETADDRESS_PRIVATE_UNTRUSTED_SUBTESTS; 896 } 897 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, 898 MAYBE_PNACL_NONSFI(NetAddressPrivate)) { 899 RUN_NETADDRESS_PRIVATE_UNTRUSTED_SUBTESTS; 900 } 901 902 // NetworkMonitor tests. 903 #define RUN_NETWORK_MONITOR_SUBTESTS \ 904 RunTestViaHTTP( \ 905 LIST_TEST(NetworkMonitor_Basic) \ 906 LIST_TEST(NetworkMonitor_2Monitors) \ 907 LIST_TEST(NetworkMonitor_DeleteInCallback) \ 908 ) 909 910 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, NetworkMonitor) { 911 RUN_NETWORK_MONITOR_SUBTESTS; 912 } 913 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, NetworkMonitor) { 914 RUN_NETWORK_MONITOR_SUBTESTS; 915 } 916 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(NetworkMonitor)) { 917 RUN_NETWORK_MONITOR_SUBTESTS; 918 } 919 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, NetworkMonitor) { 920 RUN_NETWORK_MONITOR_SUBTESTS; 921 } 922 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, 923 MAYBE_PNACL_NONSFI(NetworkMonitor)) { 924 RUN_NETWORK_MONITOR_SUBTESTS; 925 } 926 927 // Flash tests. 928 #define RUN_FLASH_SUBTESTS \ 929 RunTestViaHTTP( \ 930 LIST_TEST(Flash_SetInstanceAlwaysOnTop) \ 931 LIST_TEST(Flash_GetCommandLineArgs) \ 932 ) 933 934 IN_PROC_BROWSER_TEST_F(PPAPITest, Flash) { 935 RUN_FLASH_SUBTESTS; 936 } 937 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, Flash) { 938 RUN_FLASH_SUBTESTS; 939 } 940 941 // In-process WebSocket tests. Note, the WebSocket tests are split into two, 942 // because all of them together sometimes take too long on windows: 943 // crbug.com/336999 944 #define RUN_WEBSOCKET_SUBTESTS_1 \ 945 RunTestWithWebSocketServer( \ 946 LIST_TEST(WebSocket_IsWebSocket) \ 947 LIST_TEST(WebSocket_UninitializedPropertiesAccess) \ 948 LIST_TEST(WebSocket_InvalidConnect) \ 949 LIST_TEST(WebSocket_Protocols) \ 950 LIST_TEST(WebSocket_GetURL) \ 951 LIST_TEST(WebSocket_ValidConnect) \ 952 LIST_TEST(WebSocket_InvalidClose) \ 953 LIST_TEST(WebSocket_ValidClose) \ 954 LIST_TEST(WebSocket_GetProtocol) \ 955 LIST_TEST(WebSocket_TextSendReceive) \ 956 LIST_TEST(WebSocket_BinarySendReceive) \ 957 LIST_TEST(WebSocket_StressedSendReceive) \ 958 LIST_TEST(WebSocket_BufferedAmount) \ 959 ) 960 961 #define RUN_WEBSOCKET_SUBTESTS_2 \ 962 RunTestWithWebSocketServer( \ 963 LIST_TEST(WebSocket_AbortCallsWithCallback) \ 964 LIST_TEST(WebSocket_AbortSendMessageCall) \ 965 LIST_TEST(WebSocket_AbortCloseCall) \ 966 LIST_TEST(WebSocket_AbortReceiveMessageCall) \ 967 LIST_TEST(WebSocket_CcInterfaces) \ 968 LIST_TEST(WebSocket_UtilityInvalidConnect) \ 969 LIST_TEST(WebSocket_UtilityProtocols) \ 970 LIST_TEST(WebSocket_UtilityGetURL) \ 971 LIST_TEST(WebSocket_UtilityValidConnect) \ 972 LIST_TEST(WebSocket_UtilityInvalidClose) \ 973 LIST_TEST(WebSocket_UtilityValidClose) \ 974 LIST_TEST(WebSocket_UtilityGetProtocol) \ 975 LIST_TEST(WebSocket_UtilityTextSendReceive) \ 976 LIST_TEST(WebSocket_UtilityBinarySendReceive) \ 977 ) 978 // TODO(yhirano): List this test in SUBTESTS_2 once the close ordering 979 // is implemented correctly. 980 // LIST_TEST(WebSocket_UtilityBufferedAmount) 981 982 IN_PROC_BROWSER_TEST_F(PPAPITest, WebSocket1) { 983 RUN_WEBSOCKET_SUBTESTS_1; 984 } 985 IN_PROC_BROWSER_TEST_F(PPAPITest, WebSocket2) { 986 RUN_WEBSOCKET_SUBTESTS_2; 987 } 988 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, WebSocket1) { 989 RUN_WEBSOCKET_SUBTESTS_1; 990 } 991 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, WebSocket2) { 992 RUN_WEBSOCKET_SUBTESTS_2; 993 } 994 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, WebSocket1) { 995 RUN_WEBSOCKET_SUBTESTS_1; 996 } 997 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, WebSocket2) { 998 RUN_WEBSOCKET_SUBTESTS_2; 999 } 1000 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(WebSocket1)) { 1001 RUN_WEBSOCKET_SUBTESTS_1; 1002 } 1003 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(WebSocket2)) { 1004 RUN_WEBSOCKET_SUBTESTS_2; 1005 } 1006 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, WebSocket1) { 1007 RUN_WEBSOCKET_SUBTESTS_1; 1008 } 1009 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, WebSocket2) { 1010 RUN_WEBSOCKET_SUBTESTS_2; 1011 } 1012 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, 1013 MAYBE_PNACL_NONSFI(WebSocket1)) { 1014 RUN_WEBSOCKET_SUBTESTS_1; 1015 } 1016 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, 1017 MAYBE_PNACL_NONSFI(WebSocket2)) { 1018 RUN_WEBSOCKET_SUBTESTS_2; 1019 } 1020 1021 // AudioConfig tests 1022 #define RUN_AUDIO_CONFIG_SUBTESTS \ 1023 RunTestViaHTTP( \ 1024 LIST_TEST(AudioConfig_RecommendSampleRate) \ 1025 LIST_TEST(AudioConfig_ValidConfigs) \ 1026 LIST_TEST(AudioConfig_InvalidConfigs) \ 1027 ) 1028 1029 IN_PROC_BROWSER_TEST_F(PPAPITest, AudioConfig) { 1030 RUN_AUDIO_CONFIG_SUBTESTS; 1031 } 1032 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, AudioConfig) { 1033 RUN_AUDIO_CONFIG_SUBTESTS; 1034 } 1035 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, AudioConfig) { 1036 RUN_AUDIO_CONFIG_SUBTESTS; 1037 } 1038 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(AudioConfig)) { 1039 RUN_AUDIO_CONFIG_SUBTESTS; 1040 } 1041 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, AudioConfig) { 1042 RUN_AUDIO_CONFIG_SUBTESTS; 1043 } 1044 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, 1045 MAYBE_PNACL_NONSFI(AudioConfig)) { 1046 RUN_AUDIO_CONFIG_SUBTESTS; 1047 } 1048 1049 // PPB_Audio tests. 1050 #define RUN_AUDIO_SUBTESTS \ 1051 RunTestViaHTTP( \ 1052 LIST_TEST(Audio_Creation) \ 1053 LIST_TEST(Audio_DestroyNoStop) \ 1054 LIST_TEST(Audio_Failures) \ 1055 LIST_TEST(Audio_AudioCallback1) \ 1056 LIST_TEST(Audio_AudioCallback2) \ 1057 LIST_TEST(Audio_AudioCallback3) \ 1058 LIST_TEST(Audio_AudioCallback4) \ 1059 ) 1060 1061 // PPB_Audio is not supported in-process. 1062 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, Audio) { 1063 RUN_AUDIO_SUBTESTS; 1064 } 1065 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, Audio) { 1066 RUN_AUDIO_SUBTESTS; 1067 } 1068 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(Audio)) { 1069 RUN_AUDIO_SUBTESTS; 1070 } 1071 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, Audio) { 1072 RUN_AUDIO_SUBTESTS; 1073 } 1074 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, 1075 MAYBE_PNACL_NONSFI(Audio)) { 1076 RUN_AUDIO_SUBTESTS; 1077 } 1078 1079 #define RUN_AUDIO_THREAD_CREATOR_SUBTESTS \ 1080 RunTestViaHTTP( \ 1081 LIST_TEST(Audio_AudioThreadCreatorIsRequired) \ 1082 LIST_TEST(Audio_AudioThreadCreatorIsCalled) \ 1083 ) 1084 1085 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, AudioThreadCreator) { 1086 RUN_AUDIO_THREAD_CREATOR_SUBTESTS; 1087 } 1088 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(AudioThreadCreator)) { 1089 RUN_AUDIO_THREAD_CREATOR_SUBTESTS; 1090 } 1091 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, AudioThreadCreator) { 1092 RUN_AUDIO_THREAD_CREATOR_SUBTESTS; 1093 } 1094 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, 1095 MAYBE_PNACL_NONSFI(AudioThreadCreator)) { 1096 RUN_AUDIO_THREAD_CREATOR_SUBTESTS; 1097 } 1098 1099 TEST_PPAPI_IN_PROCESS(View_CreatedVisible); 1100 TEST_PPAPI_OUT_OF_PROCESS(View_CreatedVisible); 1101 TEST_PPAPI_NACL(View_CreatedVisible); 1102 // This test ensures that plugins created in a background tab have their 1103 // initial visibility set to false. We don't bother testing in-process for this 1104 // custom test since the out of process code also exercises in-process. 1105 1106 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, View_CreateInvisible) { 1107 // Make a second tab in the foreground. 1108 GURL url = GetTestFileUrl("View_CreatedInvisible"); 1109 chrome::NavigateParams params(browser(), url, content::PAGE_TRANSITION_LINK); 1110 params.disposition = NEW_BACKGROUND_TAB; 1111 ui_test_utils::NavigateToURL(¶ms); 1112 } 1113 1114 // This test messes with tab visibility so is custom. 1115 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, View_PageHideShow) { 1116 // The plugin will be loaded in the foreground tab and will send us a message. 1117 PPAPITestMessageHandler handler; 1118 content::JavascriptTestObserver observer( 1119 browser()->tab_strip_model()->GetActiveWebContents(), 1120 &handler); 1121 1122 GURL url = GetTestFileUrl("View_PageHideShow"); 1123 ui_test_utils::NavigateToURL(browser(), url); 1124 1125 ASSERT_TRUE(observer.Run()) << handler.error_message(); 1126 EXPECT_STREQ("TestPageHideShow:Created", handler.message().c_str()); 1127 observer.Reset(); 1128 1129 // Make a new tab to cause the original one to hide, this should trigger the 1130 // next phase of the test. 1131 chrome::NavigateParams params( 1132 browser(), GURL(url::kAboutBlankURL), content::PAGE_TRANSITION_LINK); 1133 params.disposition = NEW_FOREGROUND_TAB; 1134 ui_test_utils::NavigateToURL(¶ms); 1135 1136 // Wait until the test acks that it got hidden. 1137 ASSERT_TRUE(observer.Run()) << handler.error_message(); 1138 EXPECT_STREQ("TestPageHideShow:Hidden", handler.message().c_str()); 1139 observer.Reset(); 1140 1141 // Switch back to the test tab. 1142 browser()->tab_strip_model()->ActivateTabAt(0, true); 1143 1144 ASSERT_TRUE(observer.Run()) << handler.error_message(); 1145 EXPECT_STREQ("PASS", handler.message().c_str()); 1146 } 1147 1148 // Tests that if a plugin accepts touch events, the browser knows to send touch 1149 // events to the renderer. 1150 IN_PROC_BROWSER_TEST_F(PPAPITest, InputEvent_AcceptTouchEvent) { 1151 std::string positive_tests[] = { "InputEvent_AcceptTouchEvent_1", 1152 "InputEvent_AcceptTouchEvent_2", 1153 "InputEvent_AcceptTouchEvent_3", 1154 "InputEvent_AcceptTouchEvent_4" 1155 }; 1156 1157 for (size_t i = 0; i < arraysize(positive_tests); ++i) { 1158 RenderViewHost* host = browser()->tab_strip_model()-> 1159 GetActiveWebContents()->GetRenderViewHost(); 1160 RunTest(positive_tests[i]); 1161 EXPECT_TRUE(content::RenderViewHostTester::HasTouchEventHandler(host)); 1162 } 1163 } 1164 1165 // View tests. 1166 #define RUN_VIEW_SUBTESTS \ 1167 RunTestViaHTTP( \ 1168 LIST_TEST(View_SizeChange) \ 1169 LIST_TEST(View_ClipChange) \ 1170 LIST_TEST(View_ScrollOffsetChange) \ 1171 ) 1172 1173 IN_PROC_BROWSER_TEST_F(PPAPITest, View) { 1174 RUN_VIEW_SUBTESTS; 1175 } 1176 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, View) { 1177 RUN_VIEW_SUBTESTS; 1178 } 1179 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, View) { 1180 RUN_VIEW_SUBTESTS; 1181 } 1182 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(View)) { 1183 RUN_VIEW_SUBTESTS; 1184 } 1185 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, View) { 1186 RUN_VIEW_SUBTESTS; 1187 } 1188 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClNonSfiTest, MAYBE_PNACL_NONSFI(View)) { 1189 RUN_VIEW_SUBTESTS; 1190 } 1191 1192 // FlashMessageLoop tests. 1193 #define RUN_FLASH_MESSAGE_LOOP_SUBTESTS \ 1194 RunTest( \ 1195 LIST_TEST(FlashMessageLoop_Basics) \ 1196 LIST_TEST(FlashMessageLoop_RunWithoutQuit) \ 1197 ) 1198 1199 IN_PROC_BROWSER_TEST_F(PPAPITest, FlashMessageLoop) { 1200 RUN_FLASH_MESSAGE_LOOP_SUBTESTS; 1201 } 1202 #if defined(OS_LINUX) // Disabled due to flakiness http://crbug.com/316925 1203 #define MAYBE_FlashMessageLoop DISABLED_FlashMessageLoop 1204 #else 1205 #define MAYBE_FlashMessageLoop FlashMessageLoop 1206 #endif 1207 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, MAYBE_FlashMessageLoop) { 1208 RUN_FLASH_MESSAGE_LOOP_SUBTESTS; 1209 } 1210 1211 #if defined(OS_WIN) 1212 // This test fails with the test compositor which is what's used by default for 1213 // browser tests on Windows. Renable when the software compositor is available. 1214 #define MAYBE_Compositor DISABLED_Compositor 1215 #elif defined(OS_MACOSX) 1216 // This test fails when using the legacy software mode. Reenable when the 1217 // software compositor is enabled crbug.com/286038 1218 #define MAYBE_Compositor DISABLED_Compositor 1219 #else 1220 #define MAYBE_Compositor Compositor 1221 #endif 1222 TEST_PPAPI_NACL(MAYBE_Compositor) 1223 1224 TEST_PPAPI_NACL(MediaStreamAudioTrack) 1225 1226 TEST_PPAPI_NACL(MediaStreamVideoTrack) 1227 1228 TEST_PPAPI_NACL(MouseCursor) 1229 1230 TEST_PPAPI_NACL(NetworkProxy) 1231 1232 TEST_PPAPI_NACL(TrueTypeFont) 1233 1234 TEST_PPAPI_NACL(VideoDecoder) 1235 1236 // VideoDestination doesn't work in content_browsertests. 1237 TEST_PPAPI_OUT_OF_PROCESS(VideoDestination) 1238 TEST_PPAPI_NACL(VideoDestination) 1239 1240 // VideoSource doesn't work in content_browsertests. 1241 TEST_PPAPI_OUT_OF_PROCESS(VideoSource) 1242 TEST_PPAPI_NACL(VideoSource) 1243 1244 // Printing doesn't work in content_browsertests. 1245 TEST_PPAPI_OUT_OF_PROCESS(Printing) 1246 1247 // TODO(dmichael): Make this work on PNaCl and remove the macro. 1248 // crbug.com/384539 1249 TEST_PPAPI_NACL_NO_PNACL(MessageHandler) 1250 1251 TEST_PPAPI_NACL(MessageLoop_Basics) 1252 TEST_PPAPI_NACL(MessageLoop_Post) 1253 1254 // Going forward, Flash APIs will only work out-of-process. 1255 TEST_PPAPI_OUT_OF_PROCESS(Flash_GetLocalTimeZoneOffset) 1256 TEST_PPAPI_OUT_OF_PROCESS(Flash_GetProxyForURL) 1257 TEST_PPAPI_OUT_OF_PROCESS(Flash_GetSetting) 1258 TEST_PPAPI_OUT_OF_PROCESS(Flash_SetCrashData) 1259 // http://crbug.com/176822 1260 #if !defined(OS_WIN) 1261 TEST_PPAPI_OUT_OF_PROCESS(FlashClipboard) 1262 #endif 1263 TEST_PPAPI_OUT_OF_PROCESS(FlashFile) 1264 // Mac/Aura reach NOTIMPLEMENTED/time out. 1265 // mac: http://crbug.com/96767 1266 // aura: http://crbug.com/104384 1267 #if defined(OS_MACOSX) 1268 #define MAYBE_FlashFullscreen DISABLED_FlashFullscreen 1269 #else 1270 #define MAYBE_FlashFullscreen FlashFullscreen 1271 #endif 1272 TEST_PPAPI_OUT_OF_PROCESS(MAYBE_FlashFullscreen) 1273 1274 TEST_PPAPI_OUT_OF_PROCESS(PDF) 1275 1276 // TODO(dalecurtis): Renable once the platform verification infobar has been 1277 // implemented; see http://crbug.com/270908 1278 // #if defined(OS_CHROMEOS) 1279 // TEST_PPAPI_OUT_OF_PROCESS(PlatformVerificationPrivate) 1280 // #endif 1281 1282 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, FlashDRM) { 1283 RunTest( 1284 #if (defined(OS_WIN) && defined(ENABLE_RLZ)) || defined(OS_CHROMEOS) 1285 // Only implemented on Windows and ChromeOS currently. 1286 LIST_TEST(FlashDRM_GetDeviceID) 1287 #endif 1288 LIST_TEST(FlashDRM_GetHmonitor) 1289 LIST_TEST(FlashDRM_GetVoucherFile)); 1290 } 1291 1292 TEST_PPAPI_IN_PROCESS(TalkPrivate) 1293 TEST_PPAPI_OUT_OF_PROCESS(TalkPrivate) 1294 1295 #if defined(OS_CHROMEOS) 1296 TEST_PPAPI_OUT_OF_PROCESS(OutputProtectionPrivate) 1297 #endif 1298