Use Persistent::Reset.
[chromium-blink-merge.git] / ppapi / native_client / tests / ppapi_browser / ppp_instance / ppapi_ppp_instance.js
blob8d62b3c9e3ccc5a78c913f3bc9f69cfd96da9443
1 // Copyright (c) 2011 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.
5 function startsWith(str, prefix) {
6   return (str.indexOf(prefix) === 0);
9 function setupTests(tester, plugin) {
10   //////////////////////////////////////////////////////////////////////////////
11   // Test Helpers
12   //////////////////////////////////////////////////////////////////////////////
13   var numMessages = 0;
14   function addTestListeners(numListeners, test, testFunction, runCheck) {
15     var messageListener = test.wrap(function(message) {
16       if (!startsWith(message.data, testFunction)) return;
17       test.log(message.data);
18       numMessages++;
19       plugin.removeEventListener('message', messageListener, false);
20       test.assertEqual(message.data, testFunction + ':PASSED');
21       if (runCheck) test.assert(runCheck());
22       if (numMessages < numListeners) {
23         plugin.addEventListener('message', messageListener, false);
24       } else {
25         numMessages = 0;
26         test.pass();
27       }
28     });
29     plugin.addEventListener('message', messageListener, false);
30   }
32   function addTestListener(test, testFunction, runCheck) {
33     return addTestListeners(1, test, testFunction, runCheck);
34   }
36   //////////////////////////////////////////////////////////////////////////////
37   // Tests
38   //////////////////////////////////////////////////////////////////////////////
40   tester.addTest('PPP_Instance::DidCreate', function() {
41     assertEqual(plugin.lastError, '');
42   });
44   tester.addAsyncTest('PPP_Instance::DidChangeView', function(test) {
45     // The .cc file hardcodes an expected 15x20 size.
46     plugin.width = 15;
47     plugin.height = 20;
48     addTestListener(test, 'DidChangeView');
49   });
51   tester.addAsyncTest('PPP_Instance::DidChangeFocus', function(test) {
52     // TODO(polina): How can I simulate focusing on Windows?
53     // For now just pass explicitely.
54     if (startsWith(navigator.platform, 'Win')) {
55       test.log('skipping test on ' + navigator.platform);
56       test.pass();
57       return;
58     }
59     addTestListeners(2, test, 'DidChangeFocus');
60     plugin.tabIndex = 0;
61     plugin.focus();
62     plugin.blur();
63   });
65   // PPP_Instance::HandleDocumentLoad is only used with full-frame plugins.
66   // This is tested in tests/ppapi_browser/extension_mime_handler/
68   // PPP_Instance::DidDestroy is never invoked in the untrusted code.
69   // We could wait for a crash event from it, but CallOnMainThread semantics
70   // on shutdown are still buggy, so it might never come even if the function
71   // triggered. Plus waiting for something not to happen makes the test flaky.