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