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(&params);
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(&params);
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