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

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

Powered by Google App Engine
This is Rietveld 408576698