Home | History | Annotate | Download | only in ppapi
      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 
     20 using 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 
    142 TEST_PPAPI_IN_PROCESS(Broker)
    143 // Flaky, http://crbug.com/111355
    144 TEST_PPAPI_OUT_OF_PROCESS(DISABLED_Broker)
    145 
    146 IN_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 
    166 IN_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 
    186 IN_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 
    198 IN_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 
    210 TEST_PPAPI_IN_PROCESS(Console)
    211 TEST_PPAPI_OUT_OF_PROCESS(Console)
    212 TEST_PPAPI_NACL(Console)
    213 
    214 TEST_PPAPI_IN_PROCESS(Core)
    215 TEST_PPAPI_OUT_OF_PROCESS(Core)
    216 TEST_PPAPI_NACL(Core)
    217 
    218 TEST_PPAPI_IN_PROCESS(TraceEvent)
    219 TEST_PPAPI_OUT_OF_PROCESS(TraceEvent)
    220 TEST_PPAPI_NACL(TraceEvent)
    221 
    222 TEST_PPAPI_IN_PROCESS(InputEvent)
    223 TEST_PPAPI_OUT_OF_PROCESS(InputEvent)
    224 TEST_PPAPI_NACL(InputEvent)
    225 
    226 // Flaky on Linux and Windows. http://crbug.com/135403
    227 #if defined(OS_LINUX) || defined(OS_WIN)
    228 #define MAYBE_ImeInputEvent DISABLED_ImeInputEvent
    229 #else
    230 #define MAYBE_ImeInputEvent ImeInputEvent
    231 #endif
    232 
    233 TEST_PPAPI_IN_PROCESS(MAYBE_ImeInputEvent)
    234 TEST_PPAPI_OUT_OF_PROCESS(MAYBE_ImeInputEvent)
    235 TEST_PPAPI_NACL(MAYBE_ImeInputEvent)
    236 
    237 // "Instance" tests are really InstancePrivate tests. InstancePrivate is not
    238 // supported in NaCl, so these tests are only run trusted.
    239 // Also note that these tests are run separately on purpose (versus collapsed
    240 // in to one IN_PROC_BROWSER_TEST_F macro), because some of them have leaks
    241 // on purpose that will look like failures to tests that are run later.
    242 TEST_PPAPI_IN_PROCESS(Instance_ExecuteScript);
    243 TEST_PPAPI_OUT_OF_PROCESS(Instance_ExecuteScript)
    244 
    245 // We run and reload the RecursiveObjects test to ensure that the InstanceObject
    246 // (and others) are properly cleaned up after the first run.
    247 IN_PROC_BROWSER_TEST_F(PPAPITest, Instance_RecursiveObjects) {
    248   RunTestAndReload("Instance_RecursiveObjects");
    249 }
    250 // TODO(dmichael): Make it work out-of-process (or at least see whether we
    251 //                 care).
    252 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest,
    253                        DISABLED_Instance_RecursiveObjects) {
    254   RunTestAndReload("Instance_RecursiveObjects");
    255 }
    256 TEST_PPAPI_IN_PROCESS(Instance_LeakedObjectDestructors);
    257 TEST_PPAPI_OUT_OF_PROCESS(Instance_LeakedObjectDestructors);
    258 
    259 IN_PROC_BROWSER_TEST_F(PPAPITest,
    260                        Instance_ExecuteScriptAtInstanceShutdown) {
    261   // In other tests, we use one call to RunTest so that the tests can all run
    262   // in one plugin instance. This saves time on loading the plugin (especially
    263   // for NaCl). Here, we actually want to destroy the Instance, to test whether
    264   // the destructor can run ExecuteScript successfully. That's why we have two
    265   // separate calls to RunTest; the second one forces a navigation which
    266   // destroys the instance from the prior RunTest.
    267   // See test_instance_deprecated.cc for more information.
    268   RunTest("Instance_SetupExecuteScriptAtInstanceShutdown");
    269   RunTest("Instance_ExecuteScriptAtInstanceShutdown");
    270 }
    271 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest,
    272                        Instance_ExecuteScriptAtInstanceShutdown) {
    273   // (See the comment for the in-process version of this test above)
    274   RunTest("Instance_SetupExecuteScriptAtInstanceShutdown");
    275   RunTest("Instance_ExecuteScriptAtInstanceShutdown");
    276 }
    277 
    278 TEST_PPAPI_IN_PROCESS(Graphics2D)
    279 TEST_PPAPI_OUT_OF_PROCESS(Graphics2D)
    280 // Graphics2D_Dev isn't supported in NaCl, only test the other interfaces
    281 // TODO(jhorwich) Enable when Graphics2D_Dev interfaces are proxied in NaCl.
    282 TEST_PPAPI_NACL(Graphics2D_InvalidResource)
    283 TEST_PPAPI_NACL(Graphics2D_InvalidSize)
    284 TEST_PPAPI_NACL(Graphics2D_Humongous)
    285 TEST_PPAPI_NACL(Graphics2D_InitToZero)
    286 TEST_PPAPI_NACL(Graphics2D_Describe)
    287 TEST_PPAPI_NACL(Graphics2D_Paint)
    288 TEST_PPAPI_NACL(Graphics2D_Scroll)
    289 TEST_PPAPI_NACL(Graphics2D_Replace)
    290 TEST_PPAPI_NACL(Graphics2D_Flush)
    291 TEST_PPAPI_NACL(Graphics2D_FlushOffscreenUpdate)
    292 TEST_PPAPI_NACL(Graphics2D_BindNull)
    293 
    294 #if defined(OS_WIN) && !defined(USE_AURA)
    295 // These tests fail with the test compositor which is what's used by default for
    296 // browser tests on Windows Aura. Renable when the software compositor is
    297 // available.
    298 // In-process and NaCl tests are having flaky failures on Win: crbug.com/242252
    299 TEST_PPAPI_IN_PROCESS(DISABLED_Graphics3D)
    300 TEST_PPAPI_OUT_OF_PROCESS(Graphics3D)
    301 TEST_PPAPI_NACL(DISABLED_Graphics3D)
    302 #endif
    303 
    304 TEST_PPAPI_IN_PROCESS(ImageData)
    305 TEST_PPAPI_OUT_OF_PROCESS(ImageData)
    306 TEST_PPAPI_NACL(ImageData)
    307 
    308 TEST_PPAPI_IN_PROCESS(BrowserFont)
    309 TEST_PPAPI_OUT_OF_PROCESS(BrowserFont)
    310 
    311 TEST_PPAPI_IN_PROCESS(Buffer)
    312 TEST_PPAPI_OUT_OF_PROCESS(Buffer)
    313 
    314 // TCPSocket tests.
    315 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, TCPSocket) {
    316   RunTestViaHTTP(
    317       LIST_TEST(TCPSocket_Connect)
    318       LIST_TEST(TCPSocket_ReadWrite)
    319       LIST_TEST(TCPSocket_SetOption)
    320   );
    321 }
    322 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, TCPSocket) {
    323   RunTestViaHTTP(
    324       LIST_TEST(TCPSocket_Connect)
    325       LIST_TEST(TCPSocket_ReadWrite)
    326       LIST_TEST(TCPSocket_SetOption)
    327   );
    328 }
    329 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(TCPSocket)) {
    330   RunTestViaHTTP(
    331       LIST_TEST(TCPSocket_Connect)
    332       LIST_TEST(TCPSocket_ReadWrite)
    333       LIST_TEST(TCPSocket_SetOption)
    334   );
    335 }
    336 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, TCPSocket) {
    337   RunTestViaHTTP(
    338       LIST_TEST(TCPSocket_Connect)
    339       LIST_TEST(TCPSocket_ReadWrite)
    340       LIST_TEST(TCPSocket_SetOption)
    341   );
    342 }
    343 
    344 TEST_PPAPI_OUT_OF_PROCESS_WITH_SSL_SERVER(TCPSocketPrivate)
    345 TEST_PPAPI_IN_PROCESS_WITH_SSL_SERVER(TCPSocketPrivate)
    346 TEST_PPAPI_NACL_WITH_SSL_SERVER(TCPSocketPrivate)
    347 
    348 TEST_PPAPI_OUT_OF_PROCESS_WITH_SSL_SERVER(TCPSocketPrivateTrusted)
    349 TEST_PPAPI_IN_PROCESS_WITH_SSL_SERVER(TCPSocketPrivateTrusted)
    350 
    351 // UDPSocket tests.
    352 // UDPSocket_Broadcast is disabled for OSX because it requires root permissions
    353 // on OSX 10.7+.
    354 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, UDPSocket) {
    355   RunTestViaHTTP(
    356       LIST_TEST(UDPSocket_ReadWrite)
    357       LIST_TEST(UDPSocket_SetOption)
    358 #if !defined(OS_MACOSX)
    359       LIST_TEST(UDPSocket_Broadcast)
    360 #endif
    361   );
    362 }
    363 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, UDPSocket) {
    364   RunTestViaHTTP(
    365       LIST_TEST(UDPSocket_ReadWrite)
    366       LIST_TEST(UDPSocket_SetOption)
    367 #if !defined(OS_MACOSX)
    368       LIST_TEST(UDPSocket_Broadcast)
    369 #endif
    370   );
    371 }
    372 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(UDPSocket)) {
    373   RunTestViaHTTP(
    374       LIST_TEST(UDPSocket_ReadWrite)
    375       LIST_TEST(UDPSocket_SetOption)
    376 #if !defined(OS_MACOSX)
    377       LIST_TEST(UDPSocket_Broadcast)
    378 #endif
    379   );
    380 }
    381 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, UDPSocket) {
    382   RunTestViaHTTP(
    383       LIST_TEST(UDPSocket_ReadWrite)
    384       LIST_TEST(UDPSocket_SetOption)
    385 #if !defined(OS_MACOSX)
    386       LIST_TEST(UDPSocket_Broadcast)
    387 #endif
    388   );
    389 }
    390 
    391 // UDPSocketPrivate tests.
    392 // UDPSocketPrivate_Broadcast is disabled for OSX because it requires
    393 // root permissions on OSX 10.7+.
    394 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate_Connect)
    395 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate_ConnectFailure)
    396 #if !defined(OS_MACOSX)
    397 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate_Broadcast)
    398 #endif  // !defined(OS_MACOSX)
    399 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate_SetSocketFeatureErrors)
    400 TEST_PPAPI_NACL(UDPSocketPrivate_Connect)
    401 TEST_PPAPI_NACL(UDPSocketPrivate_ConnectFailure)
    402 #if !defined(OS_MACOSX)
    403 TEST_PPAPI_NACL(UDPSocketPrivate_Broadcast)
    404 #endif  // !defined(OS_MACOSX)
    405 TEST_PPAPI_NACL(UDPSocketPrivate_SetSocketFeatureErrors)
    406 
    407 TEST_PPAPI_NACL_DISALLOWED_SOCKETS(HostResolverPrivateDisallowed)
    408 TEST_PPAPI_NACL_DISALLOWED_SOCKETS(TCPServerSocketPrivateDisallowed)
    409 TEST_PPAPI_NACL_DISALLOWED_SOCKETS(TCPSocketPrivateDisallowed)
    410 TEST_PPAPI_NACL_DISALLOWED_SOCKETS(UDPSocketPrivateDisallowed)
    411 
    412 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(TCPServerSocketPrivate)
    413 TEST_PPAPI_NACL(TCPServerSocketPrivate)
    414 
    415 // HostResolver tests.
    416 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, HostResolver) {
    417   RunTestViaHTTP(
    418       LIST_TEST(HostResolver_Empty)
    419       LIST_TEST(HostResolver_Resolve)
    420       LIST_TEST(HostResolver_ResolveIPv4)
    421   );
    422 }
    423 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, HostResolver) {
    424   RunTestViaHTTP(
    425       LIST_TEST(HostResolver_Empty)
    426       LIST_TEST(HostResolver_Resolve)
    427       LIST_TEST(HostResolver_ResolveIPv4)
    428   );
    429 }
    430 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(HostResolver)) {
    431   RunTestViaHTTP(
    432       LIST_TEST(HostResolver_Empty)
    433       LIST_TEST(HostResolver_Resolve)
    434       LIST_TEST(HostResolver_ResolveIPv4)
    435   );
    436 }
    437 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, HostResolver) {
    438   RunTestViaHTTP(
    439       LIST_TEST(HostResolver_Empty)
    440       LIST_TEST(HostResolver_Resolve)
    441       LIST_TEST(HostResolver_ResolveIPv4)
    442   );
    443 }
    444 
    445 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(HostResolverPrivate_Resolve)
    446 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(HostResolverPrivate_ResolveIPv4)
    447 TEST_PPAPI_NACL(HostResolverPrivate_Resolve)
    448 TEST_PPAPI_NACL(HostResolverPrivate_ResolveIPv4)
    449 
    450 // URLLoader tests.
    451 IN_PROC_BROWSER_TEST_F(PPAPITest, URLLoader) {
    452   RunTestViaHTTP(
    453       LIST_TEST(URLLoader_BasicGET)
    454       LIST_TEST(URLLoader_BasicPOST)
    455       LIST_TEST(URLLoader_BasicFilePOST)
    456       LIST_TEST(URLLoader_BasicFileRangePOST)
    457       LIST_TEST(URLLoader_CompoundBodyPOST)
    458       LIST_TEST(URLLoader_EmptyDataPOST)
    459       LIST_TEST(URLLoader_BinaryDataPOST)
    460       LIST_TEST(URLLoader_CustomRequestHeader)
    461       LIST_TEST(URLLoader_FailsBogusContentLength)
    462       LIST_TEST(URLLoader_StreamToFile)
    463       LIST_TEST(URLLoader_UntrustedSameOriginRestriction)
    464       LIST_TEST(URLLoader_TrustedSameOriginRestriction)
    465       LIST_TEST(URLLoader_UntrustedCrossOriginRequest)
    466       LIST_TEST(URLLoader_TrustedCrossOriginRequest)
    467       LIST_TEST(URLLoader_UntrustedJavascriptURLRestriction)
    468       // TODO(bbudge) Fix Javascript URLs for trusted loaders.
    469       // http://crbug.com/103062
    470       LIST_TEST(DISABLED_URLLoader_TrustedJavascriptURLRestriction)
    471       LIST_TEST(URLLoader_UntrustedHttpRequests)
    472       LIST_TEST(URLLoader_TrustedHttpRequests)
    473       LIST_TEST(URLLoader_FollowURLRedirect)
    474       LIST_TEST(URLLoader_AuditURLRedirect)
    475       LIST_TEST(URLLoader_AbortCalls)
    476       LIST_TEST(URLLoader_UntendedLoad)
    477       LIST_TEST(URLLoader_PrefetchBufferThreshold)
    478   );
    479 }
    480 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, URLLoader) {
    481   RunTestViaHTTP(
    482       LIST_TEST(URLLoader_BasicGET)
    483       LIST_TEST(URLLoader_BasicPOST)
    484       LIST_TEST(URLLoader_BasicFilePOST)
    485       LIST_TEST(URLLoader_BasicFileRangePOST)
    486       LIST_TEST(URLLoader_CompoundBodyPOST)
    487       LIST_TEST(URLLoader_EmptyDataPOST)
    488       LIST_TEST(URLLoader_BinaryDataPOST)
    489       LIST_TEST(URLLoader_CustomRequestHeader)
    490       LIST_TEST(URLLoader_FailsBogusContentLength)
    491       LIST_TEST(URLLoader_StreamToFile)
    492       LIST_TEST(URLLoader_UntrustedSameOriginRestriction)
    493       LIST_TEST(URLLoader_TrustedSameOriginRestriction)
    494       LIST_TEST(URLLoader_UntrustedCrossOriginRequest)
    495       LIST_TEST(URLLoader_TrustedCrossOriginRequest)
    496       LIST_TEST(URLLoader_UntrustedJavascriptURLRestriction)
    497       // TODO(bbudge) Fix Javascript URLs for trusted loaders.
    498       // http://crbug.com/103062
    499       LIST_TEST(DISABLED_URLLoader_TrustedJavascriptURLRestriction)
    500       LIST_TEST(URLLoader_UntrustedHttpRequests)
    501       LIST_TEST(URLLoader_TrustedHttpRequests)
    502       LIST_TEST(URLLoader_FollowURLRedirect)
    503       LIST_TEST(URLLoader_AuditURLRedirect)
    504       LIST_TEST(URLLoader_AbortCalls)
    505       LIST_TEST(URLLoader_UntendedLoad)
    506       LIST_TEST(URLLoader_PrefetchBufferThreshold)
    507   );
    508 }
    509 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, URLLoader) {
    510   RunTestViaHTTP(
    511       LIST_TEST(URLLoader_BasicGET)
    512       LIST_TEST(URLLoader_BasicPOST)
    513       LIST_TEST(URLLoader_BasicFilePOST)
    514       LIST_TEST(URLLoader_BasicFileRangePOST)
    515       LIST_TEST(URLLoader_CompoundBodyPOST)
    516       LIST_TEST(URLLoader_EmptyDataPOST)
    517       LIST_TEST(URLLoader_BinaryDataPOST)
    518       LIST_TEST(URLLoader_CustomRequestHeader)
    519       LIST_TEST(URLLoader_FailsBogusContentLength)
    520       LIST_TEST(URLLoader_StreamToFile)
    521       LIST_TEST(URLLoader_UntrustedSameOriginRestriction)
    522       // We don't support Trusted APIs in NaCl.
    523       LIST_TEST(DISABLED_URLLoader_TrustedSameOriginRestriction)
    524       LIST_TEST(URLLoader_UntrustedCrossOriginRequest)
    525       LIST_TEST(DISABLED_URLLoader_TrustedCrossOriginRequest)
    526       LIST_TEST(URLLoader_UntrustedJavascriptURLRestriction)
    527       // TODO(bbudge) Fix Javascript URLs for trusted loaders.
    528       // http://crbug.com/103062
    529       LIST_TEST(DISABLED_URLLoader_TrustedJavascriptURLRestriction)
    530       LIST_TEST(URLLoader_UntrustedHttpRequests)
    531       LIST_TEST(DISABLED_URLLoader_TrustedHttpRequests)
    532       LIST_TEST(URLLoader_FollowURLRedirect)
    533       LIST_TEST(URLLoader_AuditURLRedirect)
    534       LIST_TEST(URLLoader_AbortCalls)
    535       LIST_TEST(URLLoader_UntendedLoad)
    536       LIST_TEST(URLLoader_PrefetchBufferThreshold)
    537   );
    538 }
    539 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(URLLoader)) {
    540   RunTestViaHTTP(
    541       LIST_TEST(URLLoader_BasicGET)
    542       LIST_TEST(URLLoader_BasicPOST)
    543       LIST_TEST(URLLoader_BasicFilePOST)
    544       LIST_TEST(URLLoader_BasicFileRangePOST)
    545       LIST_TEST(URLLoader_CompoundBodyPOST)
    546       LIST_TEST(URLLoader_EmptyDataPOST)
    547       LIST_TEST(URLLoader_BinaryDataPOST)
    548       LIST_TEST(URLLoader_CustomRequestHeader)
    549       LIST_TEST(URLLoader_FailsBogusContentLength)
    550       LIST_TEST(URLLoader_StreamToFile)
    551       LIST_TEST(URLLoader_UntrustedSameOriginRestriction)
    552       // We don't support Trusted APIs in NaCl.
    553       LIST_TEST(DISABLED_URLLoader_TrustedSameOriginRestriction)
    554       LIST_TEST(URLLoader_UntrustedCrossOriginRequest)
    555       LIST_TEST(DISABLED_URLLoader_TrustedCrossOriginRequest)
    556       LIST_TEST(URLLoader_UntrustedJavascriptURLRestriction)
    557       // TODO(bbudge) Fix Javascript URLs for trusted loaders.
    558       // http://crbug.com/103062
    559       LIST_TEST(DISABLED_URLLoader_TrustedJavascriptURLRestriction)
    560       LIST_TEST(URLLoader_UntrustedHttpRequests)
    561       LIST_TEST(DISABLED_URLLoader_TrustedHttpRequests)
    562       LIST_TEST(URLLoader_FollowURLRedirect)
    563       LIST_TEST(URLLoader_AuditURLRedirect)
    564       LIST_TEST(URLLoader_AbortCalls)
    565       LIST_TEST(URLLoader_UntendedLoad)
    566       LIST_TEST(URLLoader_PrefetchBufferThreshold)
    567   );
    568 }
    569 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, URLLoader) {
    570   RunTestViaHTTP(
    571       LIST_TEST(URLLoader_BasicGET)
    572       LIST_TEST(URLLoader_BasicPOST)
    573       LIST_TEST(URLLoader_BasicFilePOST)
    574       LIST_TEST(URLLoader_BasicFileRangePOST)
    575       LIST_TEST(URLLoader_CompoundBodyPOST)
    576       LIST_TEST(URLLoader_EmptyDataPOST)
    577       LIST_TEST(URLLoader_BinaryDataPOST)
    578       LIST_TEST(URLLoader_CustomRequestHeader)
    579       LIST_TEST(URLLoader_FailsBogusContentLength)
    580       LIST_TEST(URLLoader_StreamToFile)
    581       LIST_TEST(URLLoader_UntrustedSameOriginRestriction)
    582       // We don't support Trusted APIs in NaCl.
    583       LIST_TEST(DISABLED_URLLoader_TrustedSameOriginRestriction)
    584       LIST_TEST(URLLoader_UntrustedCrossOriginRequest)
    585       LIST_TEST(DISABLED_URLLoader_TrustedCrossOriginRequest)
    586       LIST_TEST(URLLoader_UntrustedJavascriptURLRestriction)
    587       // TODO(bbudge) Fix Javascript URLs for trusted loaders.
    588       // http://crbug.com/103062
    589       LIST_TEST(DISABLED_URLLoader_TrustedJavascriptURLRestriction)
    590       LIST_TEST(URLLoader_UntrustedHttpRequests)
    591       LIST_TEST(DISABLED_URLLoader_TrustedHttpRequests)
    592       LIST_TEST(URLLoader_FollowURLRedirect)
    593       LIST_TEST(URLLoader_AuditURLRedirect)
    594       LIST_TEST(URLLoader_AbortCalls)
    595       LIST_TEST(URLLoader_UntendedLoad)
    596       LIST_TEST(URLLoader_PrefetchBufferThreshold)
    597   );
    598 }
    599 
    600 // URLRequestInfo tests.
    601 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLRequest_CreateAndIsURLRequestInfo)
    602 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_CreateAndIsURLRequestInfo)
    603 
    604 // Timing out on Windows. http://crbug.com/129571
    605 #if defined(OS_WIN)
    606 #define MAYBE_URLRequest_CreateAndIsURLRequestInfo \
    607   DISABLED_URLRequest_CreateAndIsURLRequestInfo
    608 #else
    609 #define MAYBE_URLRequest_CreateAndIsURLRequestInfo \
    610     URLRequest_CreateAndIsURLRequestInfo
    611 #endif
    612 TEST_PPAPI_NACL(MAYBE_URLRequest_CreateAndIsURLRequestInfo)
    613 
    614 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLRequest_SetProperty)
    615 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_SetProperty)
    616 // http://crbug.com/167150
    617 TEST_PPAPI_NACL(DISABLED_URLRequest_SetProperty)
    618 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLRequest_AppendDataToBody)
    619 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_AppendDataToBody)
    620 TEST_PPAPI_NACL(URLRequest_AppendDataToBody)
    621 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLRequest_AppendFileToBody)
    622 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_AppendFileToBody)
    623 TEST_PPAPI_NACL(URLRequest_AppendFileToBody)
    624 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLRequest_Stress)
    625 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_Stress)
    626 TEST_PPAPI_NACL(URLRequest_Stress)
    627 
    628 TEST_PPAPI_IN_PROCESS(PaintAggregator)
    629 TEST_PPAPI_OUT_OF_PROCESS(PaintAggregator)
    630 TEST_PPAPI_NACL(PaintAggregator)
    631 
    632 // TODO(danakj): http://crbug.com/115286
    633 TEST_PPAPI_IN_PROCESS(DISABLED_Scrollbar)
    634 // http://crbug.com/89961
    635 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, DISABLED_Scrollbar) {
    636   RunTest("Scrollbar");
    637 }
    638 // TODO(danakj): http://crbug.com/115286
    639 TEST_PPAPI_NACL(DISABLED_Scrollbar)
    640 
    641 TEST_PPAPI_IN_PROCESS(URLUtil)
    642 TEST_PPAPI_OUT_OF_PROCESS(URLUtil)
    643 
    644 TEST_PPAPI_IN_PROCESS(CharSet)
    645 TEST_PPAPI_OUT_OF_PROCESS(CharSet)
    646 
    647 TEST_PPAPI_IN_PROCESS(Crypto)
    648 TEST_PPAPI_OUT_OF_PROCESS(Crypto)
    649 
    650 TEST_PPAPI_IN_PROCESS(Var)
    651 TEST_PPAPI_OUT_OF_PROCESS(Var)
    652 TEST_PPAPI_NACL(Var)
    653 
    654 // Flaky on mac, http://crbug.com/121107
    655 #if defined(OS_MACOSX)
    656 #define MAYBE_VarDeprecated DISABLED_VarDeprecated
    657 #else
    658 #define MAYBE_VarDeprecated VarDeprecated
    659 #endif
    660 
    661 TEST_PPAPI_IN_PROCESS(VarDeprecated)
    662 TEST_PPAPI_OUT_OF_PROCESS(MAYBE_VarDeprecated)
    663 
    664 // Windows defines 'PostMessage', so we have to undef it.
    665 #ifdef PostMessage
    666 #undef PostMessage
    667 #endif
    668 // PostMessage tests.
    669 IN_PROC_BROWSER_TEST_F(PPAPITest, PostMessage) {
    670   RunTestViaHTTP(
    671       LIST_TEST(PostMessage_SendInInit)
    672       LIST_TEST(PostMessage_SendingData)
    673       LIST_TEST(PostMessage_SendingArrayBuffer)
    674       LIST_TEST(DISABLED_PostMessage_SendingArray)
    675       LIST_TEST(DISABLED_PostMessage_SendingDictionary)
    676       LIST_TEST(DISABLED_PostMessage_SendingComplexVar)
    677       LIST_TEST(PostMessage_MessageEvent)
    678       LIST_TEST(PostMessage_NoHandler)
    679       LIST_TEST(PostMessage_ExtraParam)
    680   );
    681 }
    682 
    683 // Flaky: crbug.com/269530
    684 #if defined(OS_WIN)
    685 #define MAYBE_PostMessage DISABLED_PostMessage
    686 #else
    687 #define MAYBE_PostMessage PostMessage
    688 #endif
    689 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, MAYBE_PostMessage) {
    690   RunTestViaHTTP(
    691       LIST_TEST(PostMessage_SendInInit)
    692       LIST_TEST(PostMessage_SendingData)
    693       LIST_TEST(PostMessage_SendingArrayBuffer)
    694       LIST_TEST(PostMessage_SendingArray)
    695       LIST_TEST(PostMessage_SendingDictionary)
    696       LIST_TEST(PostMessage_SendingComplexVar)
    697       LIST_TEST(PostMessage_MessageEvent)
    698       LIST_TEST(PostMessage_NoHandler)
    699       LIST_TEST(PostMessage_ExtraParam)
    700       LIST_TEST(PostMessage_NonMainThread)
    701   );
    702 }
    703 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, PostMessage) {
    704   RunTestViaHTTP(
    705       LIST_TEST(PostMessage_SendInInit)
    706       LIST_TEST(PostMessage_SendingData)
    707       LIST_TEST(PostMessage_SendingArrayBuffer)
    708       LIST_TEST(PostMessage_SendingArray)
    709       LIST_TEST(PostMessage_SendingDictionary)
    710       LIST_TEST(PostMessage_SendingComplexVar)
    711       LIST_TEST(PostMessage_MessageEvent)
    712       LIST_TEST(PostMessage_NoHandler)
    713       LIST_TEST(PostMessage_ExtraParam)
    714       LIST_TEST(PostMessage_NonMainThread)
    715   );
    716 }
    717 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(PostMessage)) {
    718   RunTestViaHTTP(
    719       LIST_TEST(PostMessage_SendInInit)
    720       LIST_TEST(PostMessage_SendingData)
    721       LIST_TEST(PostMessage_SendingArrayBuffer)
    722       LIST_TEST(PostMessage_SendingArray)
    723       LIST_TEST(PostMessage_SendingDictionary)
    724       LIST_TEST(PostMessage_SendingComplexVar)
    725       LIST_TEST(PostMessage_MessageEvent)
    726       LIST_TEST(PostMessage_NoHandler)
    727       LIST_TEST(PostMessage_ExtraParam)
    728       LIST_TEST(PostMessage_NonMainThread)
    729   );
    730 }
    731 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, PostMessage) {
    732   RunTestViaHTTP(
    733       LIST_TEST(PostMessage_SendInInit)
    734       LIST_TEST(PostMessage_SendingData)
    735       LIST_TEST(PostMessage_SendingArrayBuffer)
    736       LIST_TEST(PostMessage_SendingArray)
    737       LIST_TEST(PostMessage_SendingDictionary)
    738       LIST_TEST(PostMessage_SendingComplexVar)
    739       LIST_TEST(PostMessage_MessageEvent)
    740       LIST_TEST(PostMessage_NoHandler)
    741       LIST_TEST(PostMessage_ExtraParam)
    742       LIST_TEST(PostMessage_NonMainThread)
    743   );
    744 }
    745 
    746 TEST_PPAPI_IN_PROCESS(Memory)
    747 TEST_PPAPI_OUT_OF_PROCESS(Memory)
    748 TEST_PPAPI_NACL(Memory)
    749 
    750 TEST_PPAPI_IN_PROCESS(VideoDecoder)
    751 TEST_PPAPI_OUT_OF_PROCESS(VideoDecoder)
    752 
    753 // FileIO tests.
    754 IN_PROC_BROWSER_TEST_F(PPAPITest, FileIO) {
    755   RunTestViaHTTP(
    756       LIST_TEST(FileIO_Open)
    757       LIST_TEST(FileIO_OpenDirectory)
    758       LIST_TEST(FileIO_AbortCalls)
    759       LIST_TEST(FileIO_ParallelReads)
    760       LIST_TEST(FileIO_ParallelWrites)
    761       LIST_TEST(FileIO_NotAllowMixedReadWrite)
    762       LIST_TEST(FileIO_ReadWriteSetLength)
    763       LIST_TEST(FileIO_ReadToArrayWriteSetLength)
    764       LIST_TEST(FileIO_TouchQuery)
    765       LIST_TEST(FileIO_WillWriteWillSetLength)
    766       LIST_TEST(FileIO_RequestOSFileHandle)
    767       LIST_TEST(FileIO_RequestOSFileHandleWithOpenExclusive)
    768       LIST_TEST(FileIO_Mmap)
    769   );
    770 }
    771 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, FileIO) {
    772   RunTestViaHTTP(
    773       LIST_TEST(FileIO_Open)
    774       LIST_TEST(FileIO_AbortCalls)
    775       LIST_TEST(FileIO_ParallelReads)
    776       LIST_TEST(FileIO_ParallelWrites)
    777       LIST_TEST(FileIO_NotAllowMixedReadWrite)
    778       LIST_TEST(FileIO_ReadWriteSetLength)
    779       LIST_TEST(FileIO_ReadToArrayWriteSetLength)
    780       LIST_TEST(FileIO_TouchQuery)
    781       LIST_TEST(FileIO_WillWriteWillSetLength)
    782       LIST_TEST(FileIO_RequestOSFileHandle)
    783       LIST_TEST(FileIO_RequestOSFileHandleWithOpenExclusive)
    784       LIST_TEST(FileIO_Mmap)
    785   );
    786 }
    787 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, FileIO) {
    788   RunTestViaHTTP(
    789       LIST_TEST(FileIO_Open)
    790       LIST_TEST(FileIO_AbortCalls)
    791       LIST_TEST(FileIO_ParallelReads)
    792       LIST_TEST(FileIO_ParallelWrites)
    793       LIST_TEST(FileIO_NotAllowMixedReadWrite)
    794       LIST_TEST(FileIO_ReadWriteSetLength)
    795       LIST_TEST(FileIO_ReadToArrayWriteSetLength)
    796       LIST_TEST(FileIO_TouchQuery)
    797       // The following test requires PPB_FileIO_Trusted, not available in NaCl.
    798       LIST_TEST(DISABLED_FileIO_WillWriteWillSetLength)
    799       LIST_TEST(FileIO_RequestOSFileHandle)
    800       LIST_TEST(FileIO_RequestOSFileHandleWithOpenExclusive)
    801       LIST_TEST(FileIO_Mmap)
    802   );
    803 }
    804 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(FileIO)) {
    805   RunTestViaHTTP(
    806       LIST_TEST(FileIO_Open)
    807       LIST_TEST(FileIO_AbortCalls)
    808       LIST_TEST(FileIO_ParallelReads)
    809       LIST_TEST(FileIO_ParallelWrites)
    810       LIST_TEST(FileIO_NotAllowMixedReadWrite)
    811       LIST_TEST(FileIO_ReadWriteSetLength)
    812       LIST_TEST(FileIO_ReadToArrayWriteSetLength)
    813       LIST_TEST(FileIO_TouchQuery)
    814       // The following test requires PPB_FileIO_Trusted, not available in NaCl.
    815       LIST_TEST(DISABLED_FileIO_WillWriteWillSetLength)
    816       LIST_TEST(FileIO_RequestOSFileHandle)
    817       LIST_TEST(FileIO_RequestOSFileHandleWithOpenExclusive)
    818       LIST_TEST(FileIO_Mmap)
    819   );
    820 }
    821 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, FileIO) {
    822   RunTestViaHTTP(
    823       LIST_TEST(FileIO_Open)
    824       LIST_TEST(FileIO_AbortCalls)
    825       LIST_TEST(FileIO_ParallelReads)
    826       LIST_TEST(FileIO_ParallelWrites)
    827       LIST_TEST(FileIO_NotAllowMixedReadWrite)
    828       LIST_TEST(FileIO_ReadWriteSetLength)
    829       LIST_TEST(FileIO_ReadToArrayWriteSetLength)
    830       LIST_TEST(FileIO_TouchQuery)
    831       // The following test requires PPB_FileIO_Trusted, not available in NaCl.
    832       LIST_TEST(DISABLED_FileIO_WillWriteWillSetLength)
    833       LIST_TEST(FileIO_RequestOSFileHandle)
    834       LIST_TEST(FileIO_RequestOSFileHandleWithOpenExclusive)
    835       LIST_TEST(FileIO_Mmap)
    836   );
    837 }
    838 
    839 IN_PROC_BROWSER_TEST_F(PPAPITest, FileRef) {
    840   RunTestViaHTTP(
    841       LIST_TEST(FileRef_Create)
    842       LIST_TEST(FileRef_GetFileSystemType)
    843       LIST_TEST(FileRef_GetName)
    844       LIST_TEST(FileRef_GetPath)
    845       LIST_TEST(FileRef_GetParent)
    846       LIST_TEST(FileRef_MakeDirectory)
    847       LIST_TEST(FileRef_QueryAndTouchFile)
    848       LIST_TEST(FileRef_DeleteFileAndDirectory)
    849       LIST_TEST(FileRef_RenameFileAndDirectory)
    850       // TODO(teravest): Add in-process support.
    851       // LIST_TEST(FileRef_Query)
    852       LIST_TEST(FileRef_FileNameEscaping)
    853       // TODO(teravest): Add in-process support.
    854       // LIST_TEST(FileRef_ReadDirectoryEntries)
    855   );
    856 }
    857 // OutOfProcessPPAPITest.FileRef times out fairly often.
    858 // http://crbug.com/241646
    859 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, FileRef) {
    860   RunTestViaHTTP(
    861       LIST_TEST(FileRef_Create)
    862       LIST_TEST(FileRef_GetFileSystemType)
    863       LIST_TEST(FileRef_GetName)
    864       LIST_TEST(FileRef_GetPath)
    865       LIST_TEST(FileRef_GetParent)
    866       LIST_TEST(FileRef_MakeDirectory)
    867       LIST_TEST(FileRef_QueryAndTouchFile)
    868       LIST_TEST(FileRef_DeleteFileAndDirectory)
    869       LIST_TEST(FileRef_RenameFileAndDirectory)
    870       LIST_TEST(FileRef_Query)
    871       LIST_TEST(FileRef_FileNameEscaping)
    872       LIST_TEST(DISABLED_FileRef_ReadDirectoryEntries)
    873   );
    874 }
    875 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, FileRef) {
    876   RunTestViaHTTP(
    877       LIST_TEST(FileRef_Create)
    878       LIST_TEST(FileRef_GetFileSystemType)
    879       LIST_TEST(FileRef_GetName)
    880       LIST_TEST(FileRef_GetPath)
    881       LIST_TEST(FileRef_GetParent)
    882       LIST_TEST(FileRef_MakeDirectory)
    883       LIST_TEST(FileRef_QueryAndTouchFile)
    884       LIST_TEST(FileRef_DeleteFileAndDirectory)
    885       LIST_TEST(FileRef_RenameFileAndDirectory)
    886       LIST_TEST(FileRef_Query)
    887       LIST_TEST(FileRef_FileNameEscaping)
    888       LIST_TEST(DISABLED_FileRef_ReadDirectoryEntries)
    889   );
    890 }
    891 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(FileRef)) {
    892   RunTestViaHTTP(
    893       LIST_TEST(FileRef_Create)
    894       LIST_TEST(FileRef_GetFileSystemType)
    895       LIST_TEST(FileRef_GetName)
    896       LIST_TEST(FileRef_GetPath)
    897       LIST_TEST(FileRef_GetParent)
    898       LIST_TEST(FileRef_MakeDirectory)
    899       LIST_TEST(FileRef_QueryAndTouchFile)
    900       LIST_TEST(FileRef_DeleteFileAndDirectory)
    901       LIST_TEST(FileRef_RenameFileAndDirectory)
    902       LIST_TEST(FileRef_Query)
    903       LIST_TEST(FileRef_FileNameEscaping)
    904       LIST_TEST(DISABLED_FileRef_ReadDirectoryEntries)
    905   );
    906 }
    907 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, FileRef) {
    908   RunTestViaHTTP(
    909       LIST_TEST(FileRef_Create)
    910       LIST_TEST(FileRef_GetFileSystemType)
    911       LIST_TEST(FileRef_GetName)
    912       LIST_TEST(FileRef_GetPath)
    913       LIST_TEST(FileRef_GetParent)
    914       LIST_TEST(FileRef_MakeDirectory)
    915       LIST_TEST(FileRef_QueryAndTouchFile)
    916       LIST_TEST(FileRef_DeleteFileAndDirectory)
    917       LIST_TEST(FileRef_RenameFileAndDirectory)
    918       LIST_TEST(FileRef_Query)
    919       LIST_TEST(FileRef_FileNameEscaping)
    920       LIST_TEST(DISABLED_FileRef_ReadDirectoryEntries)
    921   );
    922 }
    923 
    924 TEST_PPAPI_IN_PROCESS_VIA_HTTP(FileSystem)
    925 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(FileSystem)
    926 
    927 // PPAPINaClTest.FileSystem times out consistently on Windows and Mac.
    928 // http://crbug.com/130372
    929 #if defined(OS_MACOSX) || defined(OS_WIN)
    930 #define MAYBE_FileSystem DISABLED_FileSystem
    931 #else
    932 #define MAYBE_FileSystem FileSystem
    933 #endif
    934 
    935 TEST_PPAPI_NACL(MAYBE_FileSystem)
    936 
    937 #if defined(OS_MACOSX)
    938 // http://crbug.com/103912
    939 #define MAYBE_Fullscreen DISABLED_Fullscreen
    940 #elif defined(OS_LINUX)
    941 // http://crbug.com/146008
    942 #define MAYBE_Fullscreen DISABLED_Fullscreen
    943 #else
    944 #define MAYBE_Fullscreen Fullscreen
    945 #endif
    946 
    947 TEST_PPAPI_IN_PROCESS_VIA_HTTP(MAYBE_Fullscreen)
    948 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(MAYBE_Fullscreen)
    949 TEST_PPAPI_NACL(MAYBE_Fullscreen)
    950 
    951 TEST_PPAPI_IN_PROCESS(X509CertificatePrivate)
    952 TEST_PPAPI_OUT_OF_PROCESS(X509CertificatePrivate)
    953 
    954 // There is no proxy. This is used for PDF metrics reporting, and PDF only
    955 // runs in process, so there's currently no need for a proxy.
    956 TEST_PPAPI_IN_PROCESS(UMA)
    957 
    958 // NetAddress tests
    959 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, NetAddress) {
    960   RunTestViaHTTP(
    961       LIST_TEST(NetAddress_IPv4Address)
    962       LIST_TEST(NetAddress_IPv6Address)
    963       LIST_TEST(NetAddress_DescribeAsString)
    964   );
    965 }
    966 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, NetAddress) {
    967   RunTestViaHTTP(
    968       LIST_TEST(NetAddress_IPv4Address)
    969       LIST_TEST(NetAddress_IPv6Address)
    970       LIST_TEST(NetAddress_DescribeAsString)
    971   );
    972 }
    973 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(NetAddress)) {
    974   RunTestViaHTTP(
    975       LIST_TEST(NetAddress_IPv4Address)
    976       LIST_TEST(NetAddress_IPv6Address)
    977       LIST_TEST(NetAddress_DescribeAsString)
    978   );
    979 }
    980 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, NetAddress) {
    981   RunTestViaHTTP(
    982       LIST_TEST(NetAddress_IPv4Address)
    983       LIST_TEST(NetAddress_IPv6Address)
    984       LIST_TEST(NetAddress_DescribeAsString)
    985   );
    986 }
    987 
    988 IN_PROC_BROWSER_TEST_F(PPAPITest, NetAddressPrivate) {
    989   RunTestViaHTTP(
    990       LIST_TEST(NetAddressPrivate_AreEqual)
    991       LIST_TEST(NetAddressPrivate_AreHostsEqual)
    992       LIST_TEST(NetAddressPrivate_Describe)
    993       LIST_TEST(NetAddressPrivate_ReplacePort)
    994       LIST_TEST(NetAddressPrivate_GetAnyAddress)
    995       LIST_TEST(NetAddressPrivate_DescribeIPv6)
    996       LIST_TEST(NetAddressPrivate_GetFamily)
    997       LIST_TEST(NetAddressPrivate_GetPort)
    998       LIST_TEST(NetAddressPrivate_GetAddress)
    999       LIST_TEST(NetAddressPrivate_GetScopeID)
   1000   );
   1001 }
   1002 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, NetAddressPrivate) {
   1003   RunTestViaHTTP(
   1004       LIST_TEST(NetAddressPrivate_AreEqual)
   1005       LIST_TEST(NetAddressPrivate_AreHostsEqual)
   1006       LIST_TEST(NetAddressPrivate_Describe)
   1007       LIST_TEST(NetAddressPrivate_ReplacePort)
   1008       LIST_TEST(NetAddressPrivate_GetAnyAddress)
   1009       LIST_TEST(NetAddressPrivate_DescribeIPv6)
   1010       LIST_TEST(NetAddressPrivate_GetFamily)
   1011       LIST_TEST(NetAddressPrivate_GetPort)
   1012       LIST_TEST(NetAddressPrivate_GetAddress)
   1013       LIST_TEST(NetAddressPrivate_GetScopeID)
   1014   );
   1015 }
   1016 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, NetAddressPrivate) {
   1017   RunTestViaHTTP(
   1018       LIST_TEST(NetAddressPrivateUntrusted_AreEqual)
   1019       LIST_TEST(NetAddressPrivateUntrusted_AreHostsEqual)
   1020       LIST_TEST(NetAddressPrivateUntrusted_Describe)
   1021       LIST_TEST(NetAddressPrivateUntrusted_ReplacePort)
   1022       LIST_TEST(NetAddressPrivateUntrusted_GetAnyAddress)
   1023       LIST_TEST(NetAddressPrivateUntrusted_GetFamily)
   1024       LIST_TEST(NetAddressPrivateUntrusted_GetPort)
   1025       LIST_TEST(NetAddressPrivateUntrusted_GetAddress)
   1026   );
   1027 }
   1028 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(NetAddressPrivate)) {
   1029   RunTestViaHTTP(
   1030       LIST_TEST(NetAddressPrivateUntrusted_AreEqual)
   1031       LIST_TEST(NetAddressPrivateUntrusted_AreHostsEqual)
   1032       LIST_TEST(NetAddressPrivateUntrusted_Describe)
   1033       LIST_TEST(NetAddressPrivateUntrusted_ReplacePort)
   1034       LIST_TEST(NetAddressPrivateUntrusted_GetAnyAddress)
   1035       LIST_TEST(NetAddressPrivateUntrusted_GetFamily)
   1036       LIST_TEST(NetAddressPrivateUntrusted_GetPort)
   1037       LIST_TEST(NetAddressPrivateUntrusted_GetAddress)
   1038   );
   1039 }
   1040 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, NetAddressPrivate) {
   1041   RunTestViaHTTP(
   1042       LIST_TEST(NetAddressPrivateUntrusted_AreEqual)
   1043       LIST_TEST(NetAddressPrivateUntrusted_AreHostsEqual)
   1044       LIST_TEST(NetAddressPrivateUntrusted_Describe)
   1045       LIST_TEST(NetAddressPrivateUntrusted_ReplacePort)
   1046       LIST_TEST(NetAddressPrivateUntrusted_GetAnyAddress)
   1047       LIST_TEST(NetAddressPrivateUntrusted_GetFamily)
   1048       LIST_TEST(NetAddressPrivateUntrusted_GetPort)
   1049       LIST_TEST(NetAddressPrivateUntrusted_GetAddress)
   1050   );
   1051 }
   1052 
   1053 // NetworkMonitor tests.
   1054 IN_PROC_BROWSER_TEST_F(PPAPITest, NetworkMonitor) {
   1055   RunTestViaHTTP(
   1056       LIST_TEST(NetworkMonitorPrivate_Basic)
   1057       LIST_TEST(NetworkMonitorPrivate_2Monitors)
   1058       LIST_TEST(NetworkMonitorPrivate_DeleteInCallback)
   1059       LIST_TEST(NetworkMonitorPrivate_ListObserver)
   1060   );
   1061 }
   1062 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, NetworkMonitor) {
   1063   RunTestViaHTTP(
   1064       LIST_TEST(NetworkMonitorPrivate_Basic)
   1065       LIST_TEST(NetworkMonitorPrivate_2Monitors)
   1066       LIST_TEST(NetworkMonitorPrivate_DeleteInCallback)
   1067       LIST_TEST(NetworkMonitorPrivate_ListObserver)
   1068   );
   1069 }
   1070 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, NetworkMonitor) {
   1071   RunTestViaHTTP(
   1072       LIST_TEST(NetworkMonitorPrivate_Basic)
   1073       LIST_TEST(NetworkMonitorPrivate_2Monitors)
   1074       LIST_TEST(NetworkMonitorPrivate_DeleteInCallback)
   1075       LIST_TEST(NetworkMonitorPrivate_ListObserver)
   1076   );
   1077 }
   1078 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(NetworkMonitor)) {
   1079   RunTestViaHTTP(
   1080       LIST_TEST(NetworkMonitorPrivate_Basic)
   1081       LIST_TEST(NetworkMonitorPrivate_2Monitors)
   1082       LIST_TEST(NetworkMonitorPrivate_DeleteInCallback)
   1083       LIST_TEST(NetworkMonitorPrivate_ListObserver)
   1084   );
   1085 }
   1086 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, NetworkMonitor) {
   1087   RunTestViaHTTP(
   1088       LIST_TEST(NetworkMonitorPrivate_Basic)
   1089       LIST_TEST(NetworkMonitorPrivate_2Monitors)
   1090       LIST_TEST(NetworkMonitorPrivate_DeleteInCallback)
   1091       LIST_TEST(NetworkMonitorPrivate_ListObserver)
   1092   );
   1093 }
   1094 
   1095 // Flash tests.
   1096 IN_PROC_BROWSER_TEST_F(PPAPITest, Flash) {
   1097   RunTestViaHTTP(
   1098       LIST_TEST(Flash_SetInstanceAlwaysOnTop)
   1099       LIST_TEST(Flash_GetCommandLineArgs)
   1100   );
   1101 }
   1102 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, Flash) {
   1103   RunTestViaHTTP(
   1104       LIST_TEST(Flash_SetInstanceAlwaysOnTop)
   1105       LIST_TEST(Flash_GetCommandLineArgs)
   1106   );
   1107 }
   1108 
   1109 // In-process WebSocket tests
   1110 IN_PROC_BROWSER_TEST_F(PPAPITest, WebSocket) {
   1111   RunTestWithWebSocketServer(
   1112       LIST_TEST(WebSocket_IsWebSocket)
   1113       LIST_TEST(WebSocket_UninitializedPropertiesAccess)
   1114       LIST_TEST(WebSocket_InvalidConnect)
   1115       LIST_TEST(WebSocket_Protocols)
   1116       LIST_TEST(WebSocket_GetURL)
   1117       LIST_TEST(WebSocket_ValidConnect)
   1118       LIST_TEST(WebSocket_InvalidClose)
   1119       LIST_TEST(WebSocket_ValidClose)
   1120       LIST_TEST(WebSocket_GetProtocol)
   1121       LIST_TEST(WebSocket_TextSendReceive)
   1122       LIST_TEST(WebSocket_BinarySendReceive)
   1123       LIST_TEST(WebSocket_StressedSendReceive)
   1124       LIST_TEST(WebSocket_BufferedAmount)
   1125       LIST_TEST(WebSocket_AbortCallsWithCallback)
   1126       LIST_TEST(WebSocket_AbortSendMessageCall)
   1127       LIST_TEST(WebSocket_AbortCloseCall)
   1128       LIST_TEST(WebSocket_AbortReceiveMessageCall)
   1129       LIST_TEST(WebSocket_CcInterfaces)
   1130       LIST_TEST(WebSocket_UtilityInvalidConnect)
   1131       LIST_TEST(WebSocket_UtilityProtocols)
   1132       LIST_TEST(WebSocket_UtilityGetURL)
   1133       LIST_TEST(WebSocket_UtilityValidConnect)
   1134       LIST_TEST(WebSocket_UtilityInvalidClose)
   1135       LIST_TEST(WebSocket_UtilityValidClose)
   1136       LIST_TEST(WebSocket_UtilityGetProtocol)
   1137       LIST_TEST(WebSocket_UtilityTextSendReceive)
   1138       LIST_TEST(WebSocket_UtilityBinarySendReceive)
   1139       LIST_TEST(WebSocket_UtilityBufferedAmount));
   1140 }
   1141 
   1142 // Out-of-process WebSocket tests
   1143 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, WebSocket) {
   1144   RunTestWithWebSocketServer(
   1145       LIST_TEST(WebSocket_IsWebSocket)
   1146       LIST_TEST(WebSocket_UninitializedPropertiesAccess)
   1147       LIST_TEST(WebSocket_InvalidConnect)
   1148       LIST_TEST(WebSocket_Protocols)
   1149       LIST_TEST(WebSocket_GetURL)
   1150       LIST_TEST(WebSocket_ValidConnect)
   1151       LIST_TEST(WebSocket_InvalidClose)
   1152       LIST_TEST(WebSocket_ValidClose)
   1153       LIST_TEST(WebSocket_GetProtocol)
   1154       LIST_TEST(WebSocket_TextSendReceive)
   1155       LIST_TEST(WebSocket_BinarySendReceive)
   1156       LIST_TEST(WebSocket_StressedSendReceive)
   1157       LIST_TEST(WebSocket_BufferedAmount)
   1158       LIST_TEST(WebSocket_AbortCallsWithCallback)
   1159       LIST_TEST(WebSocket_AbortSendMessageCall)
   1160       LIST_TEST(WebSocket_AbortCloseCall)
   1161       LIST_TEST(WebSocket_AbortReceiveMessageCall)
   1162       LIST_TEST(WebSocket_CcInterfaces)
   1163       LIST_TEST(WebSocket_UtilityInvalidConnect)
   1164       LIST_TEST(WebSocket_UtilityProtocols)
   1165       LIST_TEST(WebSocket_UtilityGetURL)
   1166       LIST_TEST(WebSocket_UtilityValidConnect)
   1167       LIST_TEST(WebSocket_UtilityInvalidClose)
   1168       LIST_TEST(WebSocket_UtilityValidClose)
   1169       LIST_TEST(WebSocket_UtilityGetProtocol)
   1170       LIST_TEST(WebSocket_UtilityTextSendReceive)
   1171       LIST_TEST(WebSocket_UtilityBinarySendReceive)
   1172       LIST_TEST(WebSocket_UtilityBufferedAmount));
   1173 }
   1174 
   1175 // NaClNewlib WebSocket tests
   1176 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, WebSocket) {
   1177   RunTestWithWebSocketServer(
   1178       LIST_TEST(WebSocket_IsWebSocket)
   1179       LIST_TEST(WebSocket_UninitializedPropertiesAccess)
   1180       LIST_TEST(WebSocket_InvalidConnect)
   1181       LIST_TEST(WebSocket_Protocols)
   1182       LIST_TEST(WebSocket_GetURL)
   1183       LIST_TEST(WebSocket_ValidConnect)
   1184       LIST_TEST(WebSocket_InvalidClose)
   1185       LIST_TEST(WebSocket_ValidClose)
   1186       LIST_TEST(WebSocket_GetProtocol)
   1187       LIST_TEST(WebSocket_TextSendReceive)
   1188       LIST_TEST(WebSocket_BinarySendReceive)
   1189       LIST_TEST(WebSocket_StressedSendReceive)
   1190       LIST_TEST(WebSocket_BufferedAmount)
   1191       LIST_TEST(WebSocket_AbortCallsWithCallback)
   1192       LIST_TEST(WebSocket_AbortSendMessageCall)
   1193       LIST_TEST(WebSocket_AbortCloseCall)
   1194       LIST_TEST(WebSocket_AbortReceiveMessageCall)
   1195       LIST_TEST(WebSocket_CcInterfaces)
   1196       LIST_TEST(WebSocket_UtilityInvalidConnect)
   1197       LIST_TEST(WebSocket_UtilityProtocols)
   1198       LIST_TEST(WebSocket_UtilityGetURL)
   1199       LIST_TEST(WebSocket_UtilityValidConnect)
   1200       LIST_TEST(WebSocket_UtilityInvalidClose)
   1201       LIST_TEST(WebSocket_UtilityValidClose)
   1202       LIST_TEST(WebSocket_UtilityGetProtocol)
   1203       LIST_TEST(WebSocket_UtilityTextSendReceive)
   1204       LIST_TEST(WebSocket_UtilityBinarySendReceive)
   1205       LIST_TEST(WebSocket_UtilityBufferedAmount));
   1206 }
   1207 
   1208 // NaClGLibc WebSocket tests
   1209 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(WebSocket)) {
   1210   RunTestWithWebSocketServer(
   1211       LIST_TEST(WebSocket_IsWebSocket)
   1212       LIST_TEST(WebSocket_UninitializedPropertiesAccess)
   1213       LIST_TEST(WebSocket_InvalidConnect)
   1214       LIST_TEST(WebSocket_Protocols)
   1215       LIST_TEST(WebSocket_GetURL)
   1216       LIST_TEST(WebSocket_ValidConnect)
   1217       LIST_TEST(WebSocket_InvalidClose)
   1218       LIST_TEST(WebSocket_ValidClose)
   1219       LIST_TEST(WebSocket_GetProtocol)
   1220       LIST_TEST(WebSocket_TextSendReceive)
   1221       LIST_TEST(WebSocket_BinarySendReceive)
   1222       LIST_TEST(WebSocket_StressedSendReceive)
   1223       LIST_TEST(WebSocket_BufferedAmount)
   1224       LIST_TEST(WebSocket_AbortCallsWithCallback)
   1225       LIST_TEST(WebSocket_AbortSendMessageCall)
   1226       LIST_TEST(WebSocket_AbortCloseCall)
   1227       LIST_TEST(WebSocket_AbortReceiveMessageCall)
   1228       LIST_TEST(WebSocket_CcInterfaces)
   1229       LIST_TEST(WebSocket_UtilityInvalidConnect)
   1230       LIST_TEST(WebSocket_UtilityProtocols)
   1231       LIST_TEST(WebSocket_UtilityGetURL)
   1232       LIST_TEST(WebSocket_UtilityValidConnect)
   1233       LIST_TEST(WebSocket_UtilityInvalidClose)
   1234       LIST_TEST(WebSocket_UtilityValidClose)
   1235       LIST_TEST(WebSocket_UtilityGetProtocol)
   1236       LIST_TEST(WebSocket_UtilityTextSendReceive)
   1237       LIST_TEST(WebSocket_UtilityBinarySendReceive)
   1238       LIST_TEST(WebSocket_UtilityBufferedAmount));
   1239 }
   1240 
   1241 // PNaCl WebSocket tests
   1242 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, WebSocket) {
   1243   RunTestWithWebSocketServer(
   1244       LIST_TEST(WebSocket_IsWebSocket)
   1245       LIST_TEST(WebSocket_UninitializedPropertiesAccess)
   1246       LIST_TEST(WebSocket_InvalidConnect)
   1247       LIST_TEST(WebSocket_Protocols)
   1248       LIST_TEST(WebSocket_GetURL)
   1249       LIST_TEST(WebSocket_ValidConnect)
   1250       LIST_TEST(WebSocket_InvalidClose)
   1251       LIST_TEST(WebSocket_ValidClose)
   1252       LIST_TEST(WebSocket_GetProtocol)
   1253       LIST_TEST(WebSocket_TextSendReceive)
   1254       LIST_TEST(WebSocket_BinarySendReceive)
   1255       LIST_TEST(WebSocket_StressedSendReceive)
   1256       LIST_TEST(WebSocket_BufferedAmount)
   1257       LIST_TEST(WebSocket_AbortCallsWithCallback)
   1258       LIST_TEST(WebSocket_AbortSendMessageCall)
   1259       LIST_TEST(WebSocket_AbortCloseCall)
   1260       LIST_TEST(WebSocket_AbortReceiveMessageCall)
   1261       LIST_TEST(WebSocket_CcInterfaces)
   1262       LIST_TEST(WebSocket_UtilityInvalidConnect)
   1263       LIST_TEST(WebSocket_UtilityProtocols)
   1264       LIST_TEST(WebSocket_UtilityGetURL)
   1265       LIST_TEST(WebSocket_UtilityValidConnect)
   1266       LIST_TEST(WebSocket_UtilityInvalidClose)
   1267       LIST_TEST(WebSocket_UtilityValidClose)
   1268       LIST_TEST(WebSocket_UtilityGetProtocol)
   1269       LIST_TEST(WebSocket_UtilityTextSendReceive)
   1270       LIST_TEST(WebSocket_UtilityBinarySendReceive)
   1271       LIST_TEST(WebSocket_UtilityBufferedAmount));
   1272 }
   1273 
   1274 
   1275 // In-process AudioConfig tests
   1276 IN_PROC_BROWSER_TEST_F(PPAPITest, AudioConfig) {
   1277   RunTest(
   1278       LIST_TEST(AudioConfig_RecommendSampleRate)
   1279       LIST_TEST(AudioConfig_ValidConfigs)
   1280       LIST_TEST(AudioConfig_InvalidConfigs));
   1281 }
   1282 
   1283 // Out-of-process AudioConfig tests
   1284 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, AudioConfig) {
   1285   RunTest(
   1286       LIST_TEST(AudioConfig_RecommendSampleRate)
   1287       LIST_TEST(AudioConfig_ValidConfigs)
   1288       LIST_TEST(AudioConfig_InvalidConfigs));
   1289 }
   1290 
   1291 // NaClNewlib AudioConfig tests
   1292 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, AudioConfig) {
   1293   RunTestViaHTTP(
   1294       LIST_TEST(AudioConfig_RecommendSampleRate)
   1295       LIST_TEST(AudioConfig_ValidConfigs)
   1296       LIST_TEST(AudioConfig_InvalidConfigs));
   1297 }
   1298 
   1299 // NaClGLibc AudioConfig tests
   1300 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(AudioConfig)) {
   1301   RunTestViaHTTP(
   1302       LIST_TEST(AudioConfig_RecommendSampleRate)
   1303       LIST_TEST(AudioConfig_ValidConfigs)
   1304       LIST_TEST(AudioConfig_InvalidConfigs));
   1305 }
   1306 
   1307 // PNaCl AudioConfig tests
   1308 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, AudioConfig) {
   1309   RunTestViaHTTP(
   1310       LIST_TEST(AudioConfig_RecommendSampleRate)
   1311       LIST_TEST(AudioConfig_ValidConfigs)
   1312       LIST_TEST(AudioConfig_InvalidConfigs));
   1313 }
   1314 
   1315 
   1316 IN_PROC_BROWSER_TEST_F(PPAPITest, Audio) {
   1317   RunTest(LIST_TEST(Audio_Creation)
   1318           LIST_TEST(Audio_DestroyNoStop)
   1319           LIST_TEST(Audio_Failures)
   1320           LIST_TEST(Audio_AudioCallback1)
   1321           LIST_TEST(Audio_AudioCallback2));
   1322 }
   1323 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, Audio) {
   1324   RunTest(LIST_TEST(Audio_Creation)
   1325           LIST_TEST(Audio_DestroyNoStop)
   1326           LIST_TEST(Audio_Failures)
   1327           LIST_TEST(Audio_AudioCallback1)
   1328           LIST_TEST(Audio_AudioCallback2));
   1329 }
   1330 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, Audio) {
   1331   RunTestViaHTTP(LIST_TEST(Audio_Creation)
   1332                  LIST_TEST(Audio_DestroyNoStop)
   1333                  LIST_TEST(Audio_Failures)
   1334                  LIST_TEST(Audio_AudioCallback1)
   1335                  LIST_TEST(Audio_AudioCallback2));
   1336 }
   1337 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(Audio)) {
   1338   RunTestViaHTTP(LIST_TEST(Audio_Creation)
   1339                  LIST_TEST(Audio_DestroyNoStop)
   1340                  LIST_TEST(Audio_Failures)
   1341                  LIST_TEST(Audio_AudioCallback1)
   1342                  LIST_TEST(Audio_AudioCallback2));
   1343 }
   1344 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, Audio) {
   1345   RunTestViaHTTP(LIST_TEST(Audio_Creation)
   1346                  LIST_TEST(Audio_DestroyNoStop)
   1347                  LIST_TEST(Audio_Failures)
   1348                  LIST_TEST(Audio_AudioCallback1)
   1349                  LIST_TEST(Audio_AudioCallback2));
   1350 }
   1351 
   1352 TEST_PPAPI_IN_PROCESS(View_CreatedVisible);
   1353 TEST_PPAPI_OUT_OF_PROCESS(View_CreatedVisible);
   1354 TEST_PPAPI_NACL(View_CreatedVisible);
   1355 // This test ensures that plugins created in a background tab have their
   1356 // initial visibility set to false. We don't bother testing in-process for this
   1357 // custom test since the out of process code also exercises in-process.
   1358 
   1359 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, View_CreateInvisible) {
   1360   // Make a second tab in the foreground.
   1361   GURL url = GetTestFileUrl("View_CreatedInvisible");
   1362   chrome::NavigateParams params(browser(), url, content::PAGE_TRANSITION_LINK);
   1363   params.disposition = NEW_BACKGROUND_TAB;
   1364   ui_test_utils::NavigateToURL(&params);
   1365 }
   1366 
   1367 // This test messes with tab visibility so is custom.
   1368 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, View_PageHideShow) {
   1369   // The plugin will be loaded in the foreground tab and will send us a message.
   1370   PPAPITestMessageHandler handler;
   1371   JavascriptTestObserver observer(
   1372       browser()->tab_strip_model()->GetActiveWebContents()->GetRenderViewHost(),
   1373       &handler);
   1374 
   1375   GURL url = GetTestFileUrl("View_PageHideShow");
   1376   ui_test_utils::NavigateToURL(browser(), url);
   1377 
   1378   ASSERT_TRUE(observer.Run()) << handler.error_message();
   1379   EXPECT_STREQ("TestPageHideShow:Created", handler.message().c_str());
   1380   observer.Reset();
   1381 
   1382   // Make a new tab to cause the original one to hide, this should trigger the
   1383   // next phase of the test.
   1384   chrome::NavigateParams params(browser(), GURL(content::kAboutBlankURL),
   1385                                 content::PAGE_TRANSITION_LINK);
   1386   params.disposition = NEW_FOREGROUND_TAB;
   1387   ui_test_utils::NavigateToURL(&params);
   1388 
   1389   // Wait until the test acks that it got hidden.
   1390   ASSERT_TRUE(observer.Run()) << handler.error_message();
   1391   EXPECT_STREQ("TestPageHideShow:Hidden", handler.message().c_str());
   1392   observer.Reset();
   1393 
   1394   // Switch back to the test tab.
   1395   browser()->tab_strip_model()->ActivateTabAt(0, true);
   1396 
   1397   ASSERT_TRUE(observer.Run()) << handler.error_message();
   1398   EXPECT_STREQ("PASS", handler.message().c_str());
   1399 }
   1400 
   1401 // Tests that if a plugin accepts touch events, the browser knows to send touch
   1402 // events to the renderer.
   1403 IN_PROC_BROWSER_TEST_F(PPAPITest, InputEvent_AcceptTouchEvent) {
   1404   std::string positive_tests[] = { "InputEvent_AcceptTouchEvent_1",
   1405                                    "InputEvent_AcceptTouchEvent_2",
   1406                                    "InputEvent_AcceptTouchEvent_3",
   1407                                    "InputEvent_AcceptTouchEvent_4"
   1408                                  };
   1409 
   1410   for (size_t i = 0; i < arraysize(positive_tests); ++i) {
   1411     RenderViewHost* host = browser()->tab_strip_model()->
   1412         GetActiveWebContents()->GetRenderViewHost();
   1413     RunTest(positive_tests[i]);
   1414     EXPECT_TRUE(content::RenderViewHostTester::HasTouchEventHandler(host));
   1415   }
   1416 }
   1417 
   1418 IN_PROC_BROWSER_TEST_F(PPAPITest, View) {
   1419   RunTest(LIST_TEST(View_SizeChange)
   1420           LIST_TEST(View_ClipChange));
   1421 }
   1422 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, View) {
   1423   RunTest(LIST_TEST(View_SizeChange)
   1424           LIST_TEST(View_ClipChange));
   1425 }
   1426 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, View) {
   1427   RunTestViaHTTP(LIST_TEST(View_SizeChange)
   1428                  LIST_TEST(View_ClipChange));
   1429 }
   1430 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, MAYBE_GLIBC(View)) {
   1431   RunTestViaHTTP(LIST_TEST(View_SizeChange)
   1432                  LIST_TEST(View_ClipChange));
   1433 }
   1434 IN_PROC_BROWSER_TEST_F(PPAPINaClPNaClTest, View) {
   1435   RunTestViaHTTP(LIST_TEST(View_SizeChange)
   1436                  LIST_TEST(View_ClipChange));
   1437 }
   1438 
   1439 IN_PROC_BROWSER_TEST_F(PPAPITest, ResourceArray) {
   1440   RunTest(LIST_TEST(ResourceArray_Basics)
   1441           LIST_TEST(ResourceArray_OutOfRangeAccess)
   1442           LIST_TEST(ResourceArray_EmptyArray)
   1443           LIST_TEST(ResourceArray_InvalidElement));
   1444 }
   1445 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, ResourceArray) {
   1446   RunTest(LIST_TEST(ResourceArray_Basics)
   1447           LIST_TEST(ResourceArray_OutOfRangeAccess)
   1448           LIST_TEST(ResourceArray_EmptyArray)
   1449           LIST_TEST(ResourceArray_InvalidElement));
   1450 }
   1451 
   1452 IN_PROC_BROWSER_TEST_F(PPAPITest, FlashMessageLoop) {
   1453   RunTest(LIST_TEST(FlashMessageLoop_Basics)
   1454           LIST_TEST(FlashMessageLoop_RunWithoutQuit));
   1455 }
   1456 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, FlashMessageLoop) {
   1457   RunTest(LIST_TEST(FlashMessageLoop_Basics)
   1458           LIST_TEST(FlashMessageLoop_RunWithoutQuit));
   1459 }
   1460 
   1461 TEST_PPAPI_IN_PROCESS(MouseCursor)
   1462 TEST_PPAPI_OUT_OF_PROCESS(MouseCursor)
   1463 TEST_PPAPI_NACL(MouseCursor)
   1464 
   1465 // PPB_NetworkProxy is not supported in-process.
   1466 TEST_PPAPI_OUT_OF_PROCESS(NetworkProxy)
   1467 TEST_PPAPI_NACL(NetworkProxy)
   1468 
   1469 TEST_PPAPI_OUT_OF_PROCESS(TrueTypeFont)
   1470 TEST_PPAPI_NACL(TrueTypeFont)
   1471 
   1472 TEST_PPAPI_OUT_OF_PROCESS(VideoDestination)
   1473 TEST_PPAPI_NACL(VideoDestination)
   1474 
   1475 TEST_PPAPI_OUT_OF_PROCESS(VideoSource)
   1476 TEST_PPAPI_NACL(VideoSource)
   1477 
   1478 // PPB_Printing only implemented for out of process.
   1479 TEST_PPAPI_OUT_OF_PROCESS(Printing)
   1480 
   1481 // PPB_MessageLoop is only supported out-of-process.
   1482 // TODO(dmichael): Enable for NaCl with the IPC proxy. crbug.com/116317
   1483 TEST_PPAPI_OUT_OF_PROCESS(MessageLoop_Basics)
   1484 // MessageLoop_Post starts a thread so only run it if pepper threads are
   1485 // enabled.
   1486 #ifdef ENABLE_PEPPER_THREADING
   1487 TEST_PPAPI_OUT_OF_PROCESS(MessageLoop_Post)
   1488 #endif
   1489 
   1490 // Going forward, Flash APIs will only work out-of-process.
   1491 TEST_PPAPI_OUT_OF_PROCESS(Flash_GetLocalTimeZoneOffset)
   1492 TEST_PPAPI_OUT_OF_PROCESS(Flash_GetProxyForURL)
   1493 TEST_PPAPI_OUT_OF_PROCESS(Flash_GetSetting)
   1494 TEST_PPAPI_OUT_OF_PROCESS(Flash_SetCrashData)
   1495 // http://crbug.com/176822
   1496 #if !defined(OS_WIN)
   1497 TEST_PPAPI_OUT_OF_PROCESS(FlashClipboard)
   1498 #endif
   1499 TEST_PPAPI_OUT_OF_PROCESS(FlashFile)
   1500 // Mac/Aura reach NOTIMPLEMENTED/time out.
   1501 // mac: http://crbug.com/96767
   1502 // aura: http://crbug.com/104384
   1503 #if defined(OS_MACOSX)
   1504 #define MAYBE_FlashFullscreen DISABLED_FlashFullscreen
   1505 #else
   1506 #define MAYBE_FlashFullscreen FlashFullscreen
   1507 #endif
   1508 TEST_PPAPI_OUT_OF_PROCESS(MAYBE_FlashFullscreen)
   1509 
   1510 TEST_PPAPI_OUT_OF_PROCESS(PDF)
   1511 
   1512 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, FlashDRM) {
   1513   RunTest(
   1514 #if (defined(OS_WIN) && defined(ENABLE_RLZ)) || defined(OS_CHROMEOS)
   1515           // Only implemented on Windows and ChromeOS currently.
   1516           LIST_TEST(FlashDRM_GetDeviceID)
   1517 #endif
   1518           LIST_TEST(FlashDRM_GetHmonitor)
   1519           LIST_TEST(FlashDRM_GetVoucherFile));
   1520 }
   1521 
   1522 TEST_PPAPI_IN_PROCESS(TalkPrivate)
   1523 TEST_PPAPI_OUT_OF_PROCESS(TalkPrivate)
   1524 
   1525 #endif // ADDRESS_SANITIZER
   1526