Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(48)

Side by Side Diff: chrome/test/ui/ppapi_uitest.cc

Issue 10699045: Fix PPB_MouseLock.LockMouse crash and add tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: changes in response to Vincent's suggestions & fix compilation failure. Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
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/ui/ppapi_uitest.h"
6
7 #include "base/command_line.h"
8 #include "base/file_util.h"
9 #include "base/logging.h"
10 #include "base/path_service.h"
11 #include "base/stringprintf.h"
12 #include "base/string_util.h"
13 #include "base/test/test_timeouts.h"
14 #include "base/timer.h"
15 #include "build/build_config.h"
16 #include "chrome/browser/ui/browser.h"
17 #include "chrome/browser/ui/browser_navigator.h"
18 #include "chrome/common/chrome_paths.h"
19 #include "chrome/common/chrome_switches.h"
20 #include "chrome/test/base/in_process_browser_test.h"
21 #include "chrome/test/base/ui_test_utils.h"
22 #include "content/public/browser/dom_operation_notification_details.h"
23 #include "content/public/browser/notification_types.h"
24 #include "content/public/browser/web_contents.h"
25 #include "content/public/common/content_paths.h"
26 #include "content/public/common/content_switches.h"
27 #include "content/public/common/url_constants.h"
28 #include "media/audio/audio_manager.h"
29 #include "net/base/net_util.h"
30 #include "net/test/test_server.h"
31 #include "webkit/plugins/plugin_switches.h"
32
33 using content::DomOperationNotificationDetails;
34 using content::RenderViewHost;
35
36 namespace {
37
38 // Platform-specific filename relative to the chrome executable.
39 #if defined(OS_WIN)
40 const wchar_t library_name[] = L"ppapi_tests.dll";
41 #elif defined(OS_MACOSX)
42 const char library_name[] = "ppapi_tests.plugin";
43 #elif defined(OS_POSIX)
44 const char library_name[] = "libppapi_tests.so";
45 #endif
46
47 // The large timeout was causing the cycle time for the whole test suite
48 // to be too long when a tiny bug caused all tests to timeout.
49 // http://crbug.com/108264
50 static int kTimeoutMs = 90000;
51 //static int kTimeoutMs = TestTimeouts::large_test_timeout_ms());
52
53 bool IsAudioOutputAvailable() {
54 scoped_ptr<media::AudioManager> audio_manager(media::AudioManager::Create());
55 return audio_manager->HasAudioOutputDevices();
56 }
57
58 class TestFinishObserver : public content::NotificationObserver {
59 public:
60 explicit TestFinishObserver(RenderViewHost* render_view_host, int timeout_s)
61 : finished_(false), waiting_(false), timeout_s_(timeout_s) {
62 registrar_.Add(this, content::NOTIFICATION_DOM_OPERATION_RESPONSE,
63 content::Source<RenderViewHost>(render_view_host));
64 timer_.Start(FROM_HERE, base::TimeDelta::FromSeconds(timeout_s),
65 this, &TestFinishObserver::OnTimeout);
66 }
67
68 bool WaitForFinish() {
69 if (!finished_) {
70 waiting_ = true;
71 ui_test_utils::RunMessageLoop();
72 waiting_ = false;
73 }
74 return finished_;
75 }
76
77 virtual void Observe(int type,
78 const content::NotificationSource& source,
79 const content::NotificationDetails& details) {
80 DCHECK(type == content::NOTIFICATION_DOM_OPERATION_RESPONSE);
81 content::Details<DomOperationNotificationDetails> dom_op_details(details);
82 // We might receive responses for other script execution, but we only
83 // care about the test finished message.
84 std::string response;
85 TrimString(dom_op_details->json, "\"", &response);
86 if (response == "...") {
87 timer_.Stop();
88 timer_.Start(FROM_HERE, base::TimeDelta::FromSeconds(timeout_s_),
89 this, &TestFinishObserver::OnTimeout);
90 } else {
91 result_ = response;
92 finished_ = true;
93 if (waiting_)
94 MessageLoopForUI::current()->Quit();
95 }
96 }
97
98 std::string result() const { return result_; }
99
100 void Reset() {
101 finished_ = false;
102 waiting_ = false;
103 result_.clear();
104 }
105
106 private:
107 void OnTimeout() {
108 MessageLoopForUI::current()->Quit();
109 }
110
111 bool finished_;
112 bool waiting_;
113 int timeout_s_;
114 std::string result_;
115 content::NotificationRegistrar registrar_;
116 base::RepeatingTimer<TestFinishObserver> timer_;
117
118 DISALLOW_COPY_AND_ASSIGN(TestFinishObserver);
119 };
120
121 } // namespace
122
123 PPAPITestBase::PPAPITestBase() {
124 EnableDOMAutomation();
125 }
126
127 void PPAPITestBase::SetUpCommandLine(CommandLine* command_line) {
128 // The test sends us the result via a cookie.
129 command_line->AppendSwitch(switches::kEnableFileCookies);
130
131 // Some stuff is hung off of the testing interface which is not enabled
132 // by default.
133 command_line->AppendSwitch(switches::kEnablePepperTesting);
134
135 // Smooth scrolling confuses the scrollbar test.
136 command_line->AppendSwitch(switches::kDisableSmoothScrolling);
137 }
138
139 GURL PPAPITestBase::GetTestFileUrl(const std::string& test_case) {
140 FilePath test_path;
141 EXPECT_TRUE(PathService::Get(base::DIR_SOURCE_ROOT, &test_path));
142 test_path = test_path.Append(FILE_PATH_LITERAL("ppapi"));
143 test_path = test_path.Append(FILE_PATH_LITERAL("tests"));
144 test_path = test_path.Append(FILE_PATH_LITERAL("test_case.html"));
145
146 // Sanity check the file name.
147 EXPECT_TRUE(file_util::PathExists(test_path));
148
149 GURL test_url = net::FilePathToFileURL(test_path);
150
151 GURL::Replacements replacements;
152 std::string query = BuildQuery("", test_case);
153 replacements.SetQuery(query.c_str(), url_parse::Component(0, query.size()));
154 return test_url.ReplaceComponents(replacements);
155 }
156
157 void PPAPITestBase::RunTest(const std::string& test_case) {
158 GURL url = GetTestFileUrl(test_case);
159 RunTestURL(url);
160 }
161
162 void PPAPITestBase::RunTestAndReload(const std::string& test_case) {
163 GURL url = GetTestFileUrl(test_case);
164 RunTestURL(url);
165 // If that passed, we simply run the test again, which navigates again.
166 RunTestURL(url);
167 }
168
169 void PPAPITestBase::RunTestViaHTTP(const std::string& test_case) {
170 FilePath document_root;
171 ASSERT_TRUE(GetHTTPDocumentRoot(&document_root));
172 RunHTTPTestServer(document_root, test_case, "");
173 }
174
175 void PPAPITestBase::RunTestWithSSLServer(const std::string& test_case) {
176 FilePath document_root;
177 ASSERT_TRUE(GetHTTPDocumentRoot(&document_root));
178 net::TestServer test_server(net::BaseTestServer::HTTPSOptions(),
179 document_root);
180 ASSERT_TRUE(test_server.Start());
181 uint16_t port = test_server.host_port_pair().port();
182 RunHTTPTestServer(document_root, test_case,
183 StringPrintf("ssl_server_port=%d", port));
184 }
185
186 void PPAPITestBase::RunTestWithWebSocketServer(const std::string& test_case) {
187 FilePath websocket_root_dir;
188 ASSERT_TRUE(
189 PathService::Get(content::DIR_LAYOUT_TESTS, &websocket_root_dir));
190 ui_test_utils::TestWebSocketServer server;
191 int port = server.UseRandomPort();
192 ASSERT_TRUE(server.Start(websocket_root_dir));
193 FilePath http_document_root;
194 ASSERT_TRUE(GetHTTPDocumentRoot(&http_document_root));
195 RunHTTPTestServer(http_document_root, test_case,
196 StringPrintf("websocket_port=%d", port));
197 }
198
199 void PPAPITestBase::RunTestIfAudioOutputAvailable(
200 const std::string& test_case) {
201 if (IsAudioOutputAvailable()) {
202 RunTest(test_case);
203 } else {
204 LOG(WARNING) << "PPAPITest: " << test_case <<
205 " was not executed because there are no audio devices available.";
206 }
207 }
208
209 void PPAPITestBase::RunTestViaHTTPIfAudioOutputAvailable(
210 const std::string& test_case) {
211 if (IsAudioOutputAvailable()) {
212 RunTestViaHTTP(test_case);
213 } else {
214 LOG(WARNING) << "PPAPITest: " << test_case <<
215 " was not executed because there are no audio devices available.";
216 }
217 }
218
219 std::string PPAPITestBase::StripPrefixes(const std::string& test_name) {
220 const char* const prefixes[] = {
221 "FAILS_", "FLAKY_", "DISABLED_", "SLOW_" };
222 for (size_t i = 0; i < sizeof(prefixes)/sizeof(prefixes[0]); ++i)
223 if (test_name.find(prefixes[i]) == 0)
224 return test_name.substr(strlen(prefixes[i]));
225 return test_name;
226 }
227
228 void PPAPITestBase::RunTestURL(const GURL& test_url) {
229 // See comment above TestingInstance in ppapi/test/testing_instance.h.
230 // Basically it sends messages using the DOM automation controller. The
231 // value of "..." means it's still working and we should continue to wait,
232 // any other value indicates completion (in this case it will start with
233 // "PASS" or "FAIL"). This keeps us from timing out on waits for long tests.
234 TestFinishObserver observer(
235 browser()->GetActiveWebContents()->GetRenderViewHost(), kTimeoutMs);
236
237 ui_test_utils::NavigateToURL(browser(), test_url);
238
239 ASSERT_TRUE(observer.WaitForFinish()) << "Test timed out.";
240
241 EXPECT_STREQ("PASS", observer.result().c_str());
242 }
243
244 void PPAPITestBase::RunHTTPTestServer(
245 const FilePath& document_root,
246 const std::string& test_case,
247 const std::string& extra_params) {
248 net::TestServer test_server(net::TestServer::TYPE_HTTP,
249 net::TestServer::kLocalhost,
250 document_root);
251 ASSERT_TRUE(test_server.Start());
252 std::string query = BuildQuery("files/test_case.html?", test_case);
253 if (!extra_params.empty())
254 query = StringPrintf("%s&%s", query.c_str(), extra_params.c_str());
255
256 GURL url = test_server.GetURL(query);
257 RunTestURL(url);
258 }
259
260 bool PPAPITestBase::GetHTTPDocumentRoot(FilePath* document_root) {
261 // For HTTP tests, we use the output DIR to grab the generated files such
262 // as the NEXEs.
263 FilePath exe_dir = CommandLine::ForCurrentProcess()->GetProgram().DirName();
264 FilePath src_dir;
265 if (!PathService::Get(base::DIR_SOURCE_ROOT, &src_dir))
266 return false;
267
268 // TestServer expects a path relative to source. So we must first
269 // generate absolute paths to SRC and EXE and from there generate
270 // a relative path.
271 if (!exe_dir.IsAbsolute()) file_util::AbsolutePath(&exe_dir);
272 if (!src_dir.IsAbsolute()) file_util::AbsolutePath(&src_dir);
273 if (!exe_dir.IsAbsolute())
274 return false;
275 if (!src_dir.IsAbsolute())
276 return false;
277
278 size_t match, exe_size, src_size;
279 std::vector<FilePath::StringType> src_parts, exe_parts;
280
281 // Determine point at which src and exe diverge, and create a relative path.
282 exe_dir.GetComponents(&exe_parts);
283 src_dir.GetComponents(&src_parts);
284 exe_size = exe_parts.size();
285 src_size = src_parts.size();
286 for (match = 0; match < exe_size && match < src_size; ++match) {
287 if (exe_parts[match] != src_parts[match])
288 break;
289 }
290 for (size_t tmp_itr = match; tmp_itr < src_size; ++tmp_itr) {
291 *document_root = document_root->Append(FILE_PATH_LITERAL(".."));
292 }
293 for (; match < exe_size; ++match) {
294 *document_root = document_root->Append(exe_parts[match]);
295 }
296 return true;
297 }
298
299 PPAPITest::PPAPITest() {
300 }
301
302 void PPAPITest::SetUpCommandLine(CommandLine* command_line) {
303 PPAPITestBase::SetUpCommandLine(command_line);
304
305 // Append the switch to register the pepper plugin.
306 // library name = <out dir>/<test_name>.<library_extension>
307 // MIME type = application/x-ppapi-<test_name>
308 FilePath plugin_dir;
309 EXPECT_TRUE(PathService::Get(base::DIR_MODULE, &plugin_dir));
310
311 FilePath plugin_lib = plugin_dir.Append(library_name);
312 EXPECT_TRUE(file_util::PathExists(plugin_lib));
313 FilePath::StringType pepper_plugin = plugin_lib.value();
314 pepper_plugin.append(FILE_PATH_LITERAL(";application/x-ppapi-tests"));
315 command_line->AppendSwitchNative(switches::kRegisterPepperPlugins,
316 pepper_plugin);
317 command_line->AppendSwitchASCII(switches::kAllowNaClSocketAPI, "127.0.0.1");
318 }
319
320 std::string PPAPITest::BuildQuery(const std::string& base,
321 const std::string& test_case){
322 return StringPrintf("%stestcase=%s", base.c_str(), test_case.c_str());
323 }
324
325 OutOfProcessPPAPITest::OutOfProcessPPAPITest() {
326 }
327
328 void OutOfProcessPPAPITest::SetUpCommandLine(CommandLine* command_line) {
329 PPAPITest::SetUpCommandLine(command_line);
330
331 // Run PPAPI out-of-process to exercise proxy implementations.
332 command_line->AppendSwitch(switches::kPpapiOutOfProcess);
333 }
334
335 void PPAPINaClTest::SetUpCommandLine(CommandLine* command_line) {
336 PPAPITestBase::SetUpCommandLine(command_line);
337
338 FilePath plugin_lib;
339 EXPECT_TRUE(PathService::Get(chrome::FILE_NACL_PLUGIN, &plugin_lib));
340 EXPECT_TRUE(file_util::PathExists(plugin_lib));
341
342 // Enable running NaCl outside of the store.
343 command_line->AppendSwitch(switches::kEnableNaCl);
344 command_line->AppendSwitchASCII(switches::kAllowNaClSocketAPI, "127.0.0.1");
345 }
346
347 // Append the correct mode and testcase string
348 std::string PPAPINaClNewlibTest::BuildQuery(const std::string& base,
349 const std::string& test_case) {
350 return StringPrintf("%smode=nacl_newlib&testcase=%s", base.c_str(),
351 test_case.c_str());
352 }
353
354 // Append the correct mode and testcase string
355 std::string PPAPINaClGLibcTest::BuildQuery(const std::string& base,
356 const std::string& test_case) {
357 return StringPrintf("%smode=nacl_glibc&testcase=%s", base.c_str(),
358 test_case.c_str());
359 }
360
361 void PPAPINaClTestDisallowedSockets::SetUpCommandLine(
362 CommandLine* command_line) {
363 PPAPITestBase::SetUpCommandLine(command_line);
364
365 FilePath plugin_lib;
366 EXPECT_TRUE(PathService::Get(chrome::FILE_NACL_PLUGIN, &plugin_lib));
367 EXPECT_TRUE(file_util::PathExists(plugin_lib));
368
369 // Enable running NaCl outside of the store.
370 command_line->AppendSwitch(switches::kEnableNaCl);
371 }
372
373 // Append the correct mode and testcase string
374 std::string PPAPINaClTestDisallowedSockets::BuildQuery(
375 const std::string& base,
376 const std::string& test_case) {
377 return StringPrintf("%smode=nacl_newlib&testcase=%s", base.c_str(),
378 test_case.c_str());
379 }
380
381 // This macro finesses macro expansion to do what we want.
382 #define STRIP_PREFIXES(test_name) StripPrefixes(#test_name)
383
384 // Use these macros to run the tests for a specific interface.
385 // Most interfaces should be tested with both macros.
386 #define TEST_PPAPI_IN_PROCESS(test_name) \
387 IN_PROC_BROWSER_TEST_F(PPAPITest, test_name) { \
388 RunTest(STRIP_PREFIXES(test_name)); \
389 }
390 #define TEST_PPAPI_OUT_OF_PROCESS(test_name) \
391 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, test_name) { \
392 RunTest(STRIP_PREFIXES(test_name)); \
393 }
394
395 // Similar macros that test over HTTP.
396 #define TEST_PPAPI_IN_PROCESS_VIA_HTTP(test_name) \
397 IN_PROC_BROWSER_TEST_F(PPAPITest, test_name) { \
398 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
399 }
400 #define TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(test_name) \
401 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, test_name) { \
402 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
403 }
404
405 // Similar macros that test with an SSL server.
406 #define TEST_PPAPI_IN_PROCESS_WITH_SSL_SERVER(test_name) \
407 IN_PROC_BROWSER_TEST_F(PPAPITest, test_name) { \
408 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \
409 }
410 #define TEST_PPAPI_OUT_OF_PROCESS_WITH_SSL_SERVER(test_name) \
411 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, test_name) { \
412 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \
413 }
414
415 // Similar macros that test with WebSocket server.
416 #define TEST_PPAPI_IN_PROCESS_WITH_WS(test_name) \
417 IN_PROC_BROWSER_TEST_F(PPAPITest, test_name) { \
418 RunTestWithWebSocketServer(STRIP_PREFIXES(test_name)); \
419 }
420 #define TEST_PPAPI_OUT_OF_PROCESS_WITH_WS(test_name) \
421 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, test_name) { \
422 RunTestWithWebSocketServer(STRIP_PREFIXES(test_name)); \
423 }
424
425 // Similar macros for tests that require an audio device.
426 #define TEST_PPAPI_IN_PROCESS_WITH_AUDIO_OUTPUT(test_name) \
427 IN_PROC_BROWSER_TEST_F(PPAPITest, test_name) { \
428 RunTestIfAudioOutputAvailable(STRIP_PREFIXES(test_name)); \
429 }
430 #define TEST_PPAPI_OUT_OF_PROCESS_WITH_AUDIO_OUTPUT(test_name) \
431 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, test_name) { \
432 RunTestIfAudioOutputAvailable(STRIP_PREFIXES(test_name)); \
433 }
434
435 #if defined(DISABLE_NACL)
436 #define TEST_PPAPI_NACL_VIA_HTTP(test_name)
437 #define TEST_PPAPI_NACL_VIA_HTTP_DISALLOWED_SOCKETS(test_name)
438 #define TEST_PPAPI_NACL_WITH_SSL_SERVER(test_name)
439 #define TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(test_name)
440 #define TEST_PPAPI_NACL_VIA_HTTP_WITH_AUDIO_OUTPUT(test_name)
441 #else
442
443 // NaCl based PPAPI tests
444 #define TEST_PPAPI_NACL_VIA_HTTP(test_name) \
445 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, test_name) { \
446 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
447 } \
448 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, test_name) { \
449 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
450 }
451
452 // NaCl based PPAPI tests with disallowed socket API
453 #define TEST_PPAPI_NACL_VIA_HTTP_DISALLOWED_SOCKETS(test_name) \
454 IN_PROC_BROWSER_TEST_F(PPAPINaClTestDisallowedSockets, test_name) { \
455 RunTestViaHTTP(STRIP_PREFIXES(test_name)); \
456 }
457
458 // NaCl based PPAPI tests with SSL server
459 #define TEST_PPAPI_NACL_WITH_SSL_SERVER(test_name) \
460 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, test_name) { \
461 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \
462 } \
463 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, test_name) { \
464 RunTestWithSSLServer(STRIP_PREFIXES(test_name)); \
465 }
466
467 // NaCl based PPAPI tests with WebSocket server
468 #define TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(test_name) \
469 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, test_name) { \
470 RunTestWithWebSocketServer(STRIP_PREFIXES(test_name)); \
471 } \
472 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, test_name) { \
473 RunTestWithWebSocketServer(STRIP_PREFIXES(test_name)); \
474 }
475
476 // NaCl based PPAPI tests requiring an Audio device.
477 #define TEST_PPAPI_NACL_VIA_HTTP_WITH_AUDIO_OUTPUT(test_name) \
478 IN_PROC_BROWSER_TEST_F(PPAPINaClNewlibTest, test_name) { \
479 RunTestViaHTTPIfAudioOutputAvailable(STRIP_PREFIXES(test_name)); \
480 } \
481 IN_PROC_BROWSER_TEST_F(PPAPINaClGLibcTest, test_name) { \
482 RunTestViaHTTPIfAudioOutputAvailable(STRIP_PREFIXES(test_name)); \
483 }
484 #endif
485
486
487 //
488 // Interface tests.
489 //
490
491 // Disable tests under ASAN. http://crbug.com/104832.
492 // This is a bit heavy handed, but the majority of these tests fail under ASAN.
493 // See bug for history.
494 #if !defined(ADDRESS_SANITIZER)
495
496 TEST_PPAPI_IN_PROCESS(Broker)
497 // Flaky, http://crbug.com/111355
498 TEST_PPAPI_OUT_OF_PROCESS(DISABLED_Broker)
499
500 TEST_PPAPI_IN_PROCESS(Core)
501 TEST_PPAPI_OUT_OF_PROCESS(Core)
502
503 // Times out on Linux. http://crbug.com/108859
504 #if defined(OS_LINUX)
505 #define MAYBE_InputEvent DISABLED_InputEvent
506 #elif defined(OS_MACOSX)
507 // Flaky on Mac. http://crbug.com/109258
508 #define MAYBE_InputEvent DISABLED_InputEvent
509 #else
510 #define MAYBE_InputEvent InputEvent
511 #endif
512
513 TEST_PPAPI_IN_PROCESS(MAYBE_InputEvent)
514 TEST_PPAPI_OUT_OF_PROCESS(MAYBE_InputEvent)
515 // TODO(bbudge) Enable when input events are proxied correctly for NaCl.
516 TEST_PPAPI_NACL_VIA_HTTP(DISABLED_InputEvent)
517
518 TEST_PPAPI_IN_PROCESS(ImeInputEvent)
519 TEST_PPAPI_OUT_OF_PROCESS(ImeInputEvent)
520 // TODO(kinaba) Enable when IME events are proxied correctly for NaCl.
521 TEST_PPAPI_NACL_VIA_HTTP(DISABLED_ImeInputEvent)
522
523 TEST_PPAPI_IN_PROCESS(Instance_ExecuteScript);
524 TEST_PPAPI_OUT_OF_PROCESS(Instance_ExecuteScript)
525 // ExecuteScript isn't supported by NaCl.
526
527 // We run and reload the RecursiveObjects test to ensure that the InstanceObject
528 // (and others) are properly cleaned up after the first run.
529 IN_PROC_BROWSER_TEST_F(PPAPITest, Instance_RecursiveObjects) {
530 RunTestAndReload("Instance_RecursiveObjects");
531 }
532 // TODO(dmichael): Make it work out-of-process (or at least see whether we
533 // care).
534 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest,
535 DISABLED_Instance_RecursiveObjects) {
536 RunTestAndReload("Instance_RecursiveObjects");
537 }
538 TEST_PPAPI_IN_PROCESS(Instance_LeakedObjectDestructors);
539 TEST_PPAPI_OUT_OF_PROCESS(Instance_LeakedObjectDestructors);
540 // ScriptableObjects aren't supported in NaCl, so Instance_RecursiveObjects and
541 // Instance_TestLeakedObjectDestructors don't make sense for NaCl.
542
543 TEST_PPAPI_IN_PROCESS(Graphics2D)
544 TEST_PPAPI_OUT_OF_PROCESS(Graphics2D)
545 TEST_PPAPI_NACL_VIA_HTTP(Graphics2D)
546
547 TEST_PPAPI_IN_PROCESS(ImageData)
548 TEST_PPAPI_OUT_OF_PROCESS(ImageData)
549
550 // PPAPINaClTest.ImageData times out consistently on all platforms.
551 // http://crbug.com/130377
552 TEST_PPAPI_NACL_VIA_HTTP(DISABLED_ImageData)
553
554 TEST_PPAPI_IN_PROCESS(BrowserFont)
555 TEST_PPAPI_OUT_OF_PROCESS(BrowserFont)
556
557 TEST_PPAPI_IN_PROCESS(Buffer)
558 TEST_PPAPI_OUT_OF_PROCESS(Buffer)
559
560 TEST_PPAPI_OUT_OF_PROCESS_WITH_SSL_SERVER(TCPSocketPrivate)
561 TEST_PPAPI_IN_PROCESS_WITH_SSL_SERVER(TCPSocketPrivate)
562 TEST_PPAPI_NACL_WITH_SSL_SERVER(TCPSocketPrivate)
563
564 TEST_PPAPI_OUT_OF_PROCESS_WITH_SSL_SERVER(TCPSocketPrivateTrusted)
565 TEST_PPAPI_IN_PROCESS_WITH_SSL_SERVER(TCPSocketPrivateTrusted)
566
567 TEST_PPAPI_IN_PROCESS_VIA_HTTP(UDPSocketPrivate)
568 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(UDPSocketPrivate)
569 TEST_PPAPI_NACL_VIA_HTTP(UDPSocketPrivate)
570
571 TEST_PPAPI_NACL_VIA_HTTP_DISALLOWED_SOCKETS(TCPServerSocketPrivateDisallowed)
572 TEST_PPAPI_NACL_VIA_HTTP_DISALLOWED_SOCKETS(TCPSocketPrivateDisallowed)
573 TEST_PPAPI_NACL_VIA_HTTP_DISALLOWED_SOCKETS(UDPSocketPrivateDisallowed)
574
575 TEST_PPAPI_IN_PROCESS_VIA_HTTP(TCPServerSocketPrivate)
576 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(TCPServerSocketPrivate)
577 TEST_PPAPI_NACL_VIA_HTTP(TCPServerSocketPrivate)
578
579 TEST_PPAPI_IN_PROCESS_VIA_HTTP(HostResolverPrivate_Resolve)
580 TEST_PPAPI_IN_PROCESS_VIA_HTTP(HostResolverPrivate_ResolveIPv4)
581 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(HostResolverPrivate_Resolve)
582 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(HostResolverPrivate_ResolveIPv4)
583 TEST_PPAPI_NACL_VIA_HTTP(HostResolverPrivate_Resolve)
584 TEST_PPAPI_NACL_VIA_HTTP(HostResolverPrivate_ResolveIPv4)
585
586 // URLLoader tests.
587 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_BasicGET)
588 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_BasicPOST)
589 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_BasicFilePOST)
590 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_BasicFileRangePOST)
591 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_CompoundBodyPOST)
592 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_EmptyDataPOST)
593 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_BinaryDataPOST)
594 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_CustomRequestHeader)
595 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_FailsBogusContentLength)
596 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_StreamToFile)
597 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_UntrustedSameOriginRestriction)
598 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_TrustedSameOriginRestriction)
599 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_UntrustedCrossOriginRequest)
600 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_TrustedCrossOriginRequest)
601 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_UntrustedJavascriptURLRestriction)
602 // TODO(bbudge) Fix Javascript URLs for trusted loaders.
603 // http://crbug.com/103062
604 TEST_PPAPI_IN_PROCESS_VIA_HTTP(
605 DISABLED_URLLoader_TrustedJavascriptURLRestriction)
606 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_UntrustedHttpRequests)
607 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_TrustedHttpRequests)
608 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_FollowURLRedirect)
609 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_AuditURLRedirect)
610 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_AbortCalls)
611 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_UntendedLoad)
612 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLLoader_PrefetchBufferThreshold)
613
614 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_BasicGET)
615 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_BasicPOST)
616 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_BasicFilePOST)
617 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_BasicFileRangePOST)
618 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_CompoundBodyPOST)
619 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_EmptyDataPOST)
620 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_BinaryDataPOST)
621 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_CustomRequestHeader)
622 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_FailsBogusContentLength)
623 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_StreamToFile)
624 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_UntrustedSameOriginRestriction)
625 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_TrustedSameOriginRestriction)
626 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_UntrustedCrossOriginRequest)
627 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_TrustedCrossOriginRequest)
628 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_UntrustedJavascriptURLRestriction)
629 // TODO(bbudge) Fix Javascript URLs for trusted loaders.
630 // http://crbug.com/103062
631 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(
632 DISABLED_URLLoader_TrustedJavascriptURLRestriction)
633 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_UntrustedHttpRequests)
634 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_TrustedHttpRequests)
635 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_FollowURLRedirect)
636 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_AuditURLRedirect)
637 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_AbortCalls)
638 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLLoader_UntendedLoad)
639
640 TEST_PPAPI_NACL_VIA_HTTP(URLLoader_BasicGET)
641 TEST_PPAPI_NACL_VIA_HTTP(URLLoader_BasicPOST)
642 TEST_PPAPI_NACL_VIA_HTTP(URLLoader_BasicFilePOST)
643 TEST_PPAPI_NACL_VIA_HTTP(URLLoader_BasicFileRangePOST)
644 TEST_PPAPI_NACL_VIA_HTTP(URLLoader_CompoundBodyPOST)
645 TEST_PPAPI_NACL_VIA_HTTP(URLLoader_EmptyDataPOST)
646 TEST_PPAPI_NACL_VIA_HTTP(URLLoader_BinaryDataPOST)
647 TEST_PPAPI_NACL_VIA_HTTP(URLLoader_CustomRequestHeader)
648 TEST_PPAPI_NACL_VIA_HTTP(URLLoader_FailsBogusContentLength)
649 TEST_PPAPI_NACL_VIA_HTTP(URLLoader_StreamToFile)
650 TEST_PPAPI_NACL_VIA_HTTP(URLLoader_UntrustedSameOriginRestriction)
651 TEST_PPAPI_NACL_VIA_HTTP(URLLoader_UntrustedCrossOriginRequest)
652 TEST_PPAPI_NACL_VIA_HTTP(URLLoader_UntrustedJavascriptURLRestriction)
653 TEST_PPAPI_NACL_VIA_HTTP(URLLoader_UntrustedHttpRequests)
654 TEST_PPAPI_NACL_VIA_HTTP(URLLoader_FollowURLRedirect)
655 TEST_PPAPI_NACL_VIA_HTTP(URLLoader_AuditURLRedirect)
656 TEST_PPAPI_NACL_VIA_HTTP(URLLoader_AbortCalls)
657 TEST_PPAPI_NACL_VIA_HTTP(URLLoader_UntendedLoad)
658
659 // URLRequestInfo tests.
660 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLRequest_CreateAndIsURLRequestInfo)
661 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_CreateAndIsURLRequestInfo)
662
663 // Timing out on Windows. http://crbug.com/129571
664 #if defined(OS_WIN)
665 #define MAYBE_URLRequest_CreateAndIsURLRequestInfo \
666 FLAKY_URLRequest_CreateAndIsURLRequestInfo
667 #else
668 #define MAYBE_URLRequest_CreateAndIsURLRequestInfo \
669 URLRequest_CreateAndIsURLRequestInfo
670 #endif
671 TEST_PPAPI_NACL_VIA_HTTP(MAYBE_URLRequest_CreateAndIsURLRequestInfo)
672
673 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLRequest_SetProperty)
674 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_SetProperty)
675 TEST_PPAPI_NACL_VIA_HTTP(URLRequest_SetProperty)
676 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLRequest_AppendDataToBody)
677 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_AppendDataToBody)
678 TEST_PPAPI_NACL_VIA_HTTP(URLRequest_AppendDataToBody)
679 TEST_PPAPI_IN_PROCESS_VIA_HTTP(URLRequest_Stress)
680 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(URLRequest_Stress)
681 TEST_PPAPI_NACL_VIA_HTTP(URLRequest_Stress)
682
683 TEST_PPAPI_IN_PROCESS(PaintAggregator)
684 TEST_PPAPI_OUT_OF_PROCESS(PaintAggregator)
685 TEST_PPAPI_NACL_VIA_HTTP(PaintAggregator)
686
687 // TODO(danakj): http://crbug.com/115286
688 TEST_PPAPI_IN_PROCESS(DISABLED_Scrollbar)
689 // http://crbug.com/89961
690 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, DISABLED_Scrollbar) {
691 RunTest("Scrollbar");
692 }
693 // TODO(danakj): http://crbug.com/115286
694 TEST_PPAPI_NACL_VIA_HTTP(DISABLED_Scrollbar)
695
696 TEST_PPAPI_IN_PROCESS(URLUtil)
697 TEST_PPAPI_OUT_OF_PROCESS(URLUtil)
698
699 TEST_PPAPI_IN_PROCESS(CharSet)
700 TEST_PPAPI_OUT_OF_PROCESS(CharSet)
701
702 TEST_PPAPI_IN_PROCESS(Crypto)
703 TEST_PPAPI_OUT_OF_PROCESS(Crypto)
704
705 TEST_PPAPI_IN_PROCESS(Var)
706 TEST_PPAPI_OUT_OF_PROCESS(Var)
707 TEST_PPAPI_NACL_VIA_HTTP(Var)
708
709 // Flaky on mac, http://crbug.com/121107
710 #if defined(OS_MACOSX)
711 #define MAYBE_VarDeprecated DISABLED_VarDeprecated
712 #else
713 #define MAYBE_VarDeprecated VarDeprecated
714 #endif
715
716 TEST_PPAPI_IN_PROCESS(VarDeprecated)
717 TEST_PPAPI_OUT_OF_PROCESS(MAYBE_VarDeprecated)
718
719 // Windows defines 'PostMessage', so we have to undef it.
720 #ifdef PostMessage
721 #undef PostMessage
722 #endif
723 TEST_PPAPI_IN_PROCESS(PostMessage_SendInInit)
724 TEST_PPAPI_IN_PROCESS(PostMessage_SendingData)
725 // TODO(danakj): http://crbug.com/115286
726 TEST_PPAPI_IN_PROCESS(DISABLED_PostMessage_SendingArrayBuffer)
727 TEST_PPAPI_IN_PROCESS(PostMessage_MessageEvent)
728 TEST_PPAPI_IN_PROCESS(PostMessage_NoHandler)
729 TEST_PPAPI_IN_PROCESS(PostMessage_ExtraParam)
730 TEST_PPAPI_OUT_OF_PROCESS(PostMessage_SendInInit)
731 TEST_PPAPI_OUT_OF_PROCESS(PostMessage_SendingData)
732 TEST_PPAPI_OUT_OF_PROCESS(PostMessage_SendingArrayBuffer)
733 TEST_PPAPI_OUT_OF_PROCESS(PostMessage_MessageEvent)
734 TEST_PPAPI_OUT_OF_PROCESS(PostMessage_NoHandler)
735 TEST_PPAPI_OUT_OF_PROCESS(PostMessage_ExtraParam)
736 #if !defined(OS_WIN) && !(defined(OS_LINUX) && defined(ARCH_CPU_64_BITS))
737 // Times out on Windows XP, Windows 7, and Linux x64: http://crbug.com/95557
738 TEST_PPAPI_OUT_OF_PROCESS(PostMessage_NonMainThread)
739 #endif
740 TEST_PPAPI_NACL_VIA_HTTP(PostMessage_SendInInit)
741 TEST_PPAPI_NACL_VIA_HTTP(PostMessage_SendingData)
742 TEST_PPAPI_NACL_VIA_HTTP(SLOW_PostMessage_SendingArrayBuffer)
743 TEST_PPAPI_NACL_VIA_HTTP(PostMessage_MessageEvent)
744 TEST_PPAPI_NACL_VIA_HTTP(PostMessage_NoHandler)
745
746 #if defined(OS_WIN)
747 // Flaky: http://crbug.com/111209
748 //
749 // Note from sheriffs miket and syzm: we're not convinced that this test is
750 // directly to blame for the flakiness. It's possible that it's a more general
751 // problem that is exposing itself only with one of the later tests in this
752 // series.
753 TEST_PPAPI_NACL_VIA_HTTP(DISABLED_PostMessage_ExtraParam)
754 #else
755 TEST_PPAPI_NACL_VIA_HTTP(PostMessage_ExtraParam)
756 #endif
757
758 TEST_PPAPI_IN_PROCESS(Memory)
759 TEST_PPAPI_OUT_OF_PROCESS(Memory)
760 TEST_PPAPI_NACL_VIA_HTTP(Memory)
761
762 TEST_PPAPI_IN_PROCESS(VideoDecoder)
763 TEST_PPAPI_OUT_OF_PROCESS(VideoDecoder)
764
765 // Touch and SetLength fail on Mac and Linux due to sandbox restrictions.
766 // http://crbug.com/101128
767 #if defined(OS_MACOSX) || defined(OS_LINUX)
768 #define MAYBE_FileIO_ReadWriteSetLength DISABLED_FileIO_ReadWriteSetLength
769 #define MAYBE_FileIO_TouchQuery DISABLED_FileIO_TouchQuery
770 #define MAYBE_FileIO_WillWriteWillSetLength \
771 DISABLED_FileIO_WillWriteWillSetLength
772 #else
773 #define MAYBE_FileIO_ReadWriteSetLength FileIO_ReadWriteSetLength
774 #define MAYBE_FileIO_TouchQuery FileIO_TouchQuery
775 #define MAYBE_FileIO_WillWriteWillSetLength FileIO_WillWriteWillSetLength
776 #endif
777
778 TEST_PPAPI_IN_PROCESS_VIA_HTTP(FileIO_Open)
779 TEST_PPAPI_IN_PROCESS_VIA_HTTP(FileIO_AbortCalls)
780 TEST_PPAPI_IN_PROCESS_VIA_HTTP(FileIO_ParallelReads)
781 TEST_PPAPI_IN_PROCESS_VIA_HTTP(FileIO_ParallelWrites)
782 TEST_PPAPI_IN_PROCESS_VIA_HTTP(FileIO_NotAllowMixedReadWrite)
783 TEST_PPAPI_IN_PROCESS_VIA_HTTP(MAYBE_FileIO_ReadWriteSetLength)
784 TEST_PPAPI_IN_PROCESS_VIA_HTTP(MAYBE_FileIO_TouchQuery)
785 TEST_PPAPI_IN_PROCESS_VIA_HTTP(MAYBE_FileIO_WillWriteWillSetLength)
786
787 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(FileIO_Open)
788 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(FileIO_AbortCalls)
789 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(FileIO_ParallelReads)
790 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(FileIO_ParallelWrites)
791 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(FileIO_NotAllowMixedReadWrite)
792 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(MAYBE_FileIO_ReadWriteSetLength)
793 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(MAYBE_FileIO_TouchQuery)
794 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(MAYBE_FileIO_WillWriteWillSetLength)
795
796 // PPAPINaclTest.FileIO_ParallelReads is flaky on Mac. http://crbug.com/121104
797 #if defined(OS_MACOSX)
798 #define MAYBE_FileIO_ParallelReads DISABLED_FileIO_ParallelReads
799 #else
800 #define MAYBE_FileIO_ParallelReads FileIO_ParallelReads
801 #endif
802
803 // PPAPINaclTest.FileIO_TouchQuery is flaky on Windows. http://crbug.com/130349
804 #if defined(OS_WIN)
805 #define MAYBE_NACL_FileIO_TouchQuery DISABLED_FileIO_TouchQuery
806 #else
807 #define MAYBE_NACL_FileIO_TouchQuery MAYBE_FileIO_TouchQuery
808 #endif
809
810 TEST_PPAPI_NACL_VIA_HTTP(FileIO_Open)
811 TEST_PPAPI_NACL_VIA_HTTP(FileIO_AbortCalls)
812 TEST_PPAPI_NACL_VIA_HTTP(MAYBE_FileIO_ParallelReads)
813 TEST_PPAPI_NACL_VIA_HTTP(FileIO_ParallelWrites)
814 TEST_PPAPI_NACL_VIA_HTTP(FileIO_NotAllowMixedReadWrite)
815 TEST_PPAPI_NACL_VIA_HTTP(MAYBE_NACL_FileIO_TouchQuery)
816 TEST_PPAPI_NACL_VIA_HTTP(MAYBE_FileIO_ReadWriteSetLength)
817 // The following test requires PPB_FileIO_Trusted, not available in NaCl.
818 TEST_PPAPI_NACL_VIA_HTTP(DISABLED_FileIO_WillWriteWillSetLength)
819
820 TEST_PPAPI_IN_PROCESS_VIA_HTTP(FileRef)
821 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(FileRef)
822 TEST_PPAPI_NACL_VIA_HTTP(FileRef)
823
824 TEST_PPAPI_IN_PROCESS_VIA_HTTP(FileSystem)
825 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(FileSystem)
826
827 // PPAPINaClTest.FileSystem times out consistently on Windows and Mac.
828 // http://crbug.com/130372
829 #if defined(OS_MACOSX) || defined(OS_WIN)
830 #define MAYBE_FileSystem DISABLED_FileSystem
831 #else
832 #define MAYBE_FileSystem FileSystem
833 #endif
834
835 TEST_PPAPI_NACL_VIA_HTTP(MAYBE_FileSystem)
836
837 // Mac/Aura reach NOTIMPLEMENTED/time out.
838 // Other systems work in-process, but flake out-of-process because of the
839 // asyncronous nature of the proxy.
840 // mac: http://crbug.com/96767
841 // aura: http://crbug.com/104384
842 // async flakiness: http://crbug.com/108471
843 #if defined(OS_MACOSX) || defined(USE_AURA)
844 #define MAYBE_FlashFullscreen DISABLED_FlashFullscreen
845 #define MAYBE_OutOfProcessFlashFullscreen DISABLED_FlashFullscreen
846 #else
847 #define MAYBE_FlashFullscreen FlashFullscreen
848 #define MAYBE_OutOfProcessFlashFullscreen FlashFullscreen
849 #endif
850
851 IN_PROC_BROWSER_TEST_F(PPAPITest, MAYBE_FlashFullscreen) {
852 RunTestViaHTTP("FlashFullscreen");
853 }
854 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, MAYBE_OutOfProcessFlashFullscreen) {
855 RunTestViaHTTP("FlashFullscreen");
856 }
857
858 TEST_PPAPI_IN_PROCESS_VIA_HTTP(Fullscreen)
859 TEST_PPAPI_OUT_OF_PROCESS_VIA_HTTP(Fullscreen)
860
861 TEST_PPAPI_IN_PROCESS(FlashClipboard)
862 TEST_PPAPI_OUT_OF_PROCESS(FlashClipboard)
863
864 TEST_PPAPI_IN_PROCESS(X509CertificatePrivate)
865 TEST_PPAPI_OUT_OF_PROCESS(X509CertificatePrivate)
866
867 // http://crbug.com/63239
868 #if defined(OS_POSIX)
869 #define MAYBE_DirectoryReader DISABLED_DirectoryReader
870 #else
871 #define MAYBE_DirectoryReader DirectoryReader
872 #endif
873
874 // Flaky on Mac + Linux, maybe http://codereview.chromium.org/7094008
875 // Not implemented out of process: http://crbug.com/106129
876 IN_PROC_BROWSER_TEST_F(PPAPITest, MAYBE_DirectoryReader) {
877 RunTestViaHTTP("DirectoryReader");
878 }
879
880 // There is no proxy. This is used for PDF metrics reporting, and PDF only
881 // runs in process, so there's currently no need for a proxy.
882 TEST_PPAPI_IN_PROCESS(UMA)
883
884 TEST_PPAPI_IN_PROCESS(NetAddressPrivate_AreEqual)
885 TEST_PPAPI_IN_PROCESS(NetAddressPrivate_AreHostsEqual)
886 TEST_PPAPI_IN_PROCESS(NetAddressPrivate_Describe)
887 TEST_PPAPI_IN_PROCESS(NetAddressPrivate_ReplacePort)
888 TEST_PPAPI_IN_PROCESS(NetAddressPrivate_GetAnyAddress)
889 TEST_PPAPI_IN_PROCESS(NetAddressPrivate_DescribeIPv6)
890 TEST_PPAPI_IN_PROCESS(NetAddressPrivate_GetFamily)
891 TEST_PPAPI_IN_PROCESS(NetAddressPrivate_GetPort)
892 TEST_PPAPI_IN_PROCESS(NetAddressPrivate_GetAddress)
893 TEST_PPAPI_IN_PROCESS(NetAddressPrivate_GetScopeID)
894 TEST_PPAPI_OUT_OF_PROCESS(NetAddressPrivate_AreEqual)
895 TEST_PPAPI_OUT_OF_PROCESS(NetAddressPrivate_AreHostsEqual)
896 TEST_PPAPI_OUT_OF_PROCESS(NetAddressPrivate_Describe)
897 TEST_PPAPI_OUT_OF_PROCESS(NetAddressPrivate_ReplacePort)
898 TEST_PPAPI_OUT_OF_PROCESS(NetAddressPrivate_GetAnyAddress)
899 TEST_PPAPI_OUT_OF_PROCESS(NetAddressPrivate_DescribeIPv6)
900 TEST_PPAPI_OUT_OF_PROCESS(NetAddressPrivate_GetFamily)
901 TEST_PPAPI_OUT_OF_PROCESS(NetAddressPrivate_GetPort)
902 TEST_PPAPI_OUT_OF_PROCESS(NetAddressPrivate_GetAddress)
903 TEST_PPAPI_OUT_OF_PROCESS(NetAddressPrivate_GetScopeID)
904
905 // Frequently timing out on Windows. http://crbug.com/115440
906 #if defined(OS_WIN)
907 #define MAYBE_NetAddressPrivateUntrusted_Describe \
908 DISABLED_NetAddressPrivateUntrusted_Describe
909 #define MAYBE_NetAddressPrivateUntrusted_ReplacePort \
910 DISABLED_NetAddressPrivateUntrusted_ReplacePort
911 #define MAYBE_NetAddressPrivateUntrusted_GetPort \
912 DISABLED_NetAddressPrivateUntrusted_GetPort
913 #else
914 #define MAYBE_NetAddressPrivateUntrusted_Describe \
915 NetAddressPrivateUntrusted_Describe
916 #define MAYBE_NetAddressPrivateUntrusted_ReplacePort \
917 NetAddressPrivateUntrusted_ReplacePort
918 #define MAYBE_NetAddressPrivateUntrusted_GetPort \
919 NetAddressPrivateUntrusted_GetPort
920 #endif
921
922 // PPAPINaClTest.NetAddressPrivateUntrusted_GetFamily timing out frequently on
923 // Windows and Mac. http://crbug.com/130380
924 #if defined(OS_WIN) || defined(OS_MACOSX)
925 #define MAYBE_NetAddressPrivateUntrusted_GetFamily DISABLED_NetAddressPrivateUnt rusted_GetFamily
926 #else
927 #define MAYBE_NetAddressPrivateUntrusted_GetFamily NetAddressPrivateUntrusted_Ge tFamily
928 #endif
929
930 TEST_PPAPI_NACL_VIA_HTTP(NetAddressPrivateUntrusted_AreEqual)
931 TEST_PPAPI_NACL_VIA_HTTP(NetAddressPrivateUntrusted_AreHostsEqual)
932 TEST_PPAPI_NACL_VIA_HTTP(MAYBE_NetAddressPrivateUntrusted_Describe)
933 TEST_PPAPI_NACL_VIA_HTTP(MAYBE_NetAddressPrivateUntrusted_ReplacePort)
934 TEST_PPAPI_NACL_VIA_HTTP(NetAddressPrivateUntrusted_GetAnyAddress)
935 TEST_PPAPI_NACL_VIA_HTTP(MAYBE_NetAddressPrivateUntrusted_GetFamily)
936 TEST_PPAPI_NACL_VIA_HTTP(MAYBE_NetAddressPrivateUntrusted_GetPort)
937 TEST_PPAPI_NACL_VIA_HTTP(NetAddressPrivateUntrusted_GetAddress)
938
939 TEST_PPAPI_IN_PROCESS(NetworkMonitorPrivate_Basic)
940 TEST_PPAPI_OUT_OF_PROCESS(NetworkMonitorPrivate_Basic)
941 TEST_PPAPI_IN_PROCESS(NetworkMonitorPrivate_2Monitors)
942 TEST_PPAPI_OUT_OF_PROCESS(NetworkMonitorPrivate_2Monitors)
943 TEST_PPAPI_IN_PROCESS(NetworkMonitorPrivate_DeleteInCallback)
944 TEST_PPAPI_OUT_OF_PROCESS(NetworkMonitorPrivate_DeleteInCallback)
945 TEST_PPAPI_IN_PROCESS(NetworkMonitorPrivate_ListObserver)
946 TEST_PPAPI_OUT_OF_PROCESS(NetworkMonitorPrivate_ListObserver)
947
948 TEST_PPAPI_IN_PROCESS(Flash_SetInstanceAlwaysOnTop)
949 TEST_PPAPI_IN_PROCESS(Flash_GetProxyForURL)
950 TEST_PPAPI_IN_PROCESS(Flash_MessageLoop)
951 TEST_PPAPI_IN_PROCESS(Flash_GetLocalTimeZoneOffset)
952 TEST_PPAPI_IN_PROCESS(Flash_GetCommandLineArgs)
953 TEST_PPAPI_IN_PROCESS(Flash_GetDeviceID)
954 TEST_PPAPI_IN_PROCESS(Flash_GetSettingInt)
955 TEST_PPAPI_IN_PROCESS(Flash_GetSetting)
956 TEST_PPAPI_OUT_OF_PROCESS(Flash_SetInstanceAlwaysOnTop)
957 TEST_PPAPI_OUT_OF_PROCESS(Flash_GetProxyForURL)
958 TEST_PPAPI_OUT_OF_PROCESS(Flash_MessageLoop)
959 TEST_PPAPI_OUT_OF_PROCESS(Flash_GetLocalTimeZoneOffset)
960 TEST_PPAPI_OUT_OF_PROCESS(Flash_GetCommandLineArgs)
961 TEST_PPAPI_OUT_OF_PROCESS(Flash_GetDeviceID)
962 TEST_PPAPI_OUT_OF_PROCESS(Flash_GetSettingInt)
963 TEST_PPAPI_OUT_OF_PROCESS(Flash_GetSetting)
964
965 TEST_PPAPI_IN_PROCESS(WebSocket_IsWebSocket)
966 TEST_PPAPI_IN_PROCESS(WebSocket_UninitializedPropertiesAccess)
967 TEST_PPAPI_IN_PROCESS(WebSocket_InvalidConnect)
968 TEST_PPAPI_IN_PROCESS(WebSocket_Protocols)
969 TEST_PPAPI_IN_PROCESS(WebSocket_GetURL)
970 TEST_PPAPI_IN_PROCESS_WITH_WS(WebSocket_ValidConnect)
971 TEST_PPAPI_IN_PROCESS_WITH_WS(WebSocket_InvalidClose)
972 TEST_PPAPI_IN_PROCESS_WITH_WS(WebSocket_ValidClose)
973 TEST_PPAPI_IN_PROCESS_WITH_WS(WebSocket_GetProtocol)
974 TEST_PPAPI_IN_PROCESS_WITH_WS(WebSocket_TextSendReceive)
975 TEST_PPAPI_IN_PROCESS_WITH_WS(WebSocket_BinarySendReceive)
976 TEST_PPAPI_IN_PROCESS_WITH_WS(WebSocket_StressedSendReceive)
977 TEST_PPAPI_IN_PROCESS_WITH_WS(WebSocket_BufferedAmount)
978 TEST_PPAPI_IN_PROCESS_WITH_WS(WebSocket_AbortCalls)
979 TEST_PPAPI_IN_PROCESS_WITH_WS(WebSocket_CcInterfaces)
980 TEST_PPAPI_IN_PROCESS(WebSocket_UtilityInvalidConnect)
981 TEST_PPAPI_IN_PROCESS(WebSocket_UtilityProtocols)
982 TEST_PPAPI_IN_PROCESS(WebSocket_UtilityGetURL)
983 TEST_PPAPI_IN_PROCESS_WITH_WS(WebSocket_UtilityValidConnect)
984 TEST_PPAPI_IN_PROCESS_WITH_WS(WebSocket_UtilityInvalidClose)
985 TEST_PPAPI_IN_PROCESS_WITH_WS(WebSocket_UtilityValidClose)
986 TEST_PPAPI_IN_PROCESS_WITH_WS(WebSocket_UtilityGetProtocol)
987 TEST_PPAPI_IN_PROCESS_WITH_WS(WebSocket_UtilityTextSendReceive)
988 TEST_PPAPI_IN_PROCESS_WITH_WS(WebSocket_UtilityBinarySendReceive)
989 TEST_PPAPI_IN_PROCESS_WITH_WS(WebSocket_UtilityBufferedAmount)
990 TEST_PPAPI_NACL_VIA_HTTP(WebSocket_IsWebSocket)
991 TEST_PPAPI_NACL_VIA_HTTP(WebSocket_UninitializedPropertiesAccess)
992 TEST_PPAPI_NACL_VIA_HTTP(WebSocket_InvalidConnect)
993 TEST_PPAPI_NACL_VIA_HTTP(WebSocket_Protocols)
994 TEST_PPAPI_NACL_VIA_HTTP(WebSocket_GetURL)
995 TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(WebSocket_ValidConnect)
996 TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(WebSocket_InvalidClose)
997 TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(WebSocket_ValidClose)
998 TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(WebSocket_GetProtocol)
999 TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(WebSocket_TextSendReceive)
1000 TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(WebSocket_BinarySendReceive)
1001 TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(WebSocket_StressedSendReceive)
1002 TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(WebSocket_BufferedAmount)
1003 TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(WebSocket_AbortCalls)
1004 TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(WebSocket_CcInterfaces)
1005 TEST_PPAPI_NACL_VIA_HTTP(WebSocket_UtilityInvalidConnect)
1006 TEST_PPAPI_NACL_VIA_HTTP(WebSocket_UtilityProtocols)
1007 TEST_PPAPI_NACL_VIA_HTTP(WebSocket_UtilityGetURL)
1008 TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(WebSocket_UtilityValidConnect)
1009 TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(WebSocket_UtilityInvalidClose)
1010 TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(WebSocket_UtilityValidClose)
1011 TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(WebSocket_UtilityGetProtocol)
1012 TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(WebSocket_UtilityTextSendReceive)
1013 TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(WebSocket_UtilityBinarySendReceive)
1014 TEST_PPAPI_NACL_VIA_HTTP_WITH_WS(WebSocket_UtilityBufferedAmount)
1015
1016 TEST_PPAPI_IN_PROCESS(AudioConfig_RecommendSampleRate)
1017 TEST_PPAPI_IN_PROCESS(AudioConfig_ValidConfigs)
1018 TEST_PPAPI_IN_PROCESS(AudioConfig_InvalidConfigs)
1019 TEST_PPAPI_OUT_OF_PROCESS(AudioConfig_RecommendSampleRate)
1020 TEST_PPAPI_OUT_OF_PROCESS(AudioConfig_ValidConfigs)
1021 TEST_PPAPI_OUT_OF_PROCESS(AudioConfig_InvalidConfigs)
1022
1023 // Only run audio output tests if we have an audio device available.
1024 // TODO(raymes): We should probably test scenarios where there is no audio
1025 // device available.
1026 TEST_PPAPI_IN_PROCESS_WITH_AUDIO_OUTPUT(Audio_Creation)
1027 TEST_PPAPI_IN_PROCESS_WITH_AUDIO_OUTPUT(Audio_DestroyNoStop)
1028 TEST_PPAPI_IN_PROCESS_WITH_AUDIO_OUTPUT(Audio_Failures)
1029 TEST_PPAPI_IN_PROCESS_WITH_AUDIO_OUTPUT(Audio_AudioCallback1)
1030 TEST_PPAPI_IN_PROCESS_WITH_AUDIO_OUTPUT(Audio_AudioCallback2)
1031 TEST_PPAPI_OUT_OF_PROCESS_WITH_AUDIO_OUTPUT(Audio_Creation)
1032 TEST_PPAPI_OUT_OF_PROCESS_WITH_AUDIO_OUTPUT(Audio_DestroyNoStop)
1033 TEST_PPAPI_OUT_OF_PROCESS_WITH_AUDIO_OUTPUT(Audio_Failures)
1034 TEST_PPAPI_OUT_OF_PROCESS_WITH_AUDIO_OUTPUT(Audio_AudioCallback1)
1035 TEST_PPAPI_OUT_OF_PROCESS_WITH_AUDIO_OUTPUT(Audio_AudioCallback2)
1036 TEST_PPAPI_NACL_VIA_HTTP_WITH_AUDIO_OUTPUT(Audio_Creation)
1037 TEST_PPAPI_NACL_VIA_HTTP_WITH_AUDIO_OUTPUT(Audio_DestroyNoStop)
1038 TEST_PPAPI_NACL_VIA_HTTP_WITH_AUDIO_OUTPUT(Audio_Failures)
1039 TEST_PPAPI_NACL_VIA_HTTP_WITH_AUDIO_OUTPUT(Audio_AudioCallback1)
1040 TEST_PPAPI_NACL_VIA_HTTP_WITH_AUDIO_OUTPUT(Audio_AudioCallback2)
1041
1042 TEST_PPAPI_IN_PROCESS(View_CreatedVisible);
1043 TEST_PPAPI_OUT_OF_PROCESS(View_CreatedVisible);
1044 TEST_PPAPI_NACL_VIA_HTTP(View_CreatedVisible);
1045 // This test ensures that plugins created in a background tab have their
1046 // initial visibility set to false. We don't bother testing in-process for this
1047 // custom test since the out of process code also exercises in-process.
1048
1049 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, View_CreateInvisible) {
1050 // Make a second tab in the foreground.
1051 GURL url = GetTestFileUrl("View_CreatedInvisible");
1052 browser::NavigateParams params(browser(), url, content::PAGE_TRANSITION_LINK);
1053 params.disposition = NEW_BACKGROUND_TAB;
1054 ui_test_utils::NavigateToURL(&params);
1055 }
1056
1057 // This test messes with tab visibility so is custom.
1058 IN_PROC_BROWSER_TEST_F(OutOfProcessPPAPITest, View_PageHideShow) {
1059 // The plugin will be loaded in the foreground tab and will send us a message.
1060 TestFinishObserver observer(
1061 browser()->GetActiveWebContents()->GetRenderViewHost(),
1062 TestTimeouts::action_max_timeout_ms());
1063
1064 GURL url = GetTestFileUrl("View_PageHideShow");
1065 ui_test_utils::NavigateToURL(browser(), url);
1066
1067 ASSERT_TRUE(observer.WaitForFinish()) << "Test timed out.";
1068 EXPECT_STREQ("TestPageHideShow:Created", observer.result().c_str());
1069 observer.Reset();
1070
1071 // Make a new tab to cause the original one to hide, this should trigger the
1072 // next phase of the test.
1073 browser::NavigateParams params(
1074 browser(), GURL(chrome::kAboutBlankURL), content::PAGE_TRANSITION_LINK);
1075 params.disposition = NEW_FOREGROUND_TAB;
1076 ui_test_utils::NavigateToURL(&params);
1077
1078 // Wait until the test acks that it got hidden.
1079 ASSERT_TRUE(observer.WaitForFinish()) << "Test timed out.";
1080 EXPECT_STREQ("TestPageHideShow:Hidden", observer.result().c_str());
1081
1082 // Wait for the test completion event.
1083 observer.Reset();
1084
1085 // Switch back to the test tab.
1086 browser()->ActivateTabAt(0, true);
1087
1088 ASSERT_TRUE(observer.WaitForFinish()) << "Test timed out.";
1089 EXPECT_STREQ("PASS", observer.result().c_str());
1090 }
1091
1092 TEST_PPAPI_IN_PROCESS(View_SizeChange);
1093 TEST_PPAPI_OUT_OF_PROCESS(View_SizeChange);
1094 TEST_PPAPI_NACL_VIA_HTTP(View_SizeChange);
1095 TEST_PPAPI_IN_PROCESS(View_ClipChange);
1096 TEST_PPAPI_OUT_OF_PROCESS(View_ClipChange);
1097 TEST_PPAPI_NACL_VIA_HTTP(View_ClipChange);
1098
1099 TEST_PPAPI_IN_PROCESS(ResourceArray_Basics)
1100 TEST_PPAPI_IN_PROCESS(ResourceArray_OutOfRangeAccess)
1101 TEST_PPAPI_IN_PROCESS(ResourceArray_EmptyArray)
1102 TEST_PPAPI_IN_PROCESS(ResourceArray_InvalidElement)
1103 TEST_PPAPI_OUT_OF_PROCESS(ResourceArray_Basics)
1104 TEST_PPAPI_OUT_OF_PROCESS(ResourceArray_OutOfRangeAccess)
1105 TEST_PPAPI_OUT_OF_PROCESS(ResourceArray_EmptyArray)
1106 TEST_PPAPI_OUT_OF_PROCESS(ResourceArray_InvalidElement)
1107
1108 TEST_PPAPI_IN_PROCESS(FlashMessageLoop_Basics)
1109 TEST_PPAPI_IN_PROCESS(FlashMessageLoop_RunWithoutQuit)
1110 TEST_PPAPI_OUT_OF_PROCESS(FlashMessageLoop_Basics)
1111 TEST_PPAPI_OUT_OF_PROCESS(FlashMessageLoop_RunWithoutQuit)
1112
1113 TEST_PPAPI_IN_PROCESS(MouseCursor)
1114 TEST_PPAPI_OUT_OF_PROCESS(MouseCursor)
1115 TEST_PPAPI_NACL_VIA_HTTP(MouseCursor)
1116
1117 // Only enabled in out-of-process mode.
1118 TEST_PPAPI_OUT_OF_PROCESS(FlashFile_CreateTemporaryFile)
1119
1120 #endif // ADDRESS_SANITIZER
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698