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

Side by Side Diff: third_party/WebKit/LayoutTests/harness-tests/mojo-helpers.html

Issue 2405093003: [WIP] Mojo native bindings interface.
Patch Set: fixes webui tests Created 3 years, 9 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
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <script src="../resources/testharness.js"></script> 2 <script src="../resources/testharness.js"></script>
3 <script src="../resources/testharnessreport.js"></script> 3 <script src="../resources/testharnessreport.js"></script>
4 <script src="../resources/mojo-helpers.js"></script> 4 <script src="../resources/mojo-helpers.js"></script>
5 <script> 5 <script>
6 'use strict'; 6 'use strict';
7 7
8 // Verify that the mojo_test helper functions properly and Mojo bindings 8 // Verify that the mojo_test helper functions properly and Mojo bindings
9 // are available. 9 // are available.
10 mojo_test(mojo => { 10 mojo_test(mojo => {
11 assert_true(mojo instanceof Object); 11 assert_true(mojo instanceof Object);
12 assert_true(mojo.core instanceof Object);
13 assert_true(mojo.router instanceof Object); 12 assert_true(mojo.router instanceof Object);
14 assert_true(mojo.frameInterfaces instanceof Object); 13 assert_true(mojo.frameInterfaces instanceof Object);
15 assert_true(mojo.interfaces instanceof Object); 14 assert_true(mojo.interfaces instanceof Object);
16 }, 'Mojo system APIs should be available to layout tests.'); 15 }, 'Mojo system APIs should be available to layout tests.');
17 16
18 mojo_test(mojo => { 17 mojo_test(mojo => {
19 return new Promise(resolve => { 18 return new Promise(resolve => {
20 let calls = 0; 19 let calls = 0;
21 // Complete the test as soon as two requests come in for a Frobinator 20 // Complete the test as soon as two requests come in for a Frobinator
22 // interface. 21 // interface.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 54
56 mojo.interfaces.addInterfaceOverrideForTesting('Frobinator', pipe => { 55 mojo.interfaces.addInterfaceOverrideForTesting('Frobinator', pipe => {
57 resolve(mojo_wait_for_incoming_message(mojo, pipe) 56 resolve(mojo_wait_for_incoming_message(mojo, pipe)
58 .then(message => { 57 .then(message => {
59 assert_array_equals(new Uint8Array(message.buffer), TEST_REQUEST); 58 assert_array_equals(new Uint8Array(message.buffer), TEST_REQUEST);
60 assert_array_equals(message.handles, []); 59 assert_array_equals(message.handles, []);
61 })); 60 }));
62 }); 61 });
63 62
64 let pipe = mojo.interfaces.getInterface('Frobinator'); 63 let pipe = mojo.interfaces.getInterface('Frobinator');
65 assert_equals(mojo.core.writeMessage(pipe, TEST_REQUEST, [], 0), 64 assert_equals(pipe.writeMessage(TEST_REQUEST, []), Mojo.RESULT_OK);
66 mojo.core.RESULT_OK);
67 }); 65 });
68 }, 'Mock interfaces can receive messages from test code.'); 66 }, 'Mock interfaces can receive messages from test code.');
69 67
70 mojo_test(mojo => { 68 mojo_test(mojo => {
71 let TEST_REQUEST = new Uint8Array([1, 2, 3, 4, 5]); 69 let TEST_REQUEST = new Uint8Array([1, 2, 3, 4, 5]);
72 let EXPECTED_RESPONSE = new Uint8Array([5, 4, 3, 2, 1]); 70 let EXPECTED_RESPONSE = new Uint8Array([5, 4, 3, 2, 1]);
73 71
74 // Mock interface should respond to any message with its reverse. 72 // Mock interface should respond to any message with its reverse.
75 mojo.interfaces.addInterfaceOverrideForTesting('Reversinator', pipe => { 73 mojo.interfaces.addInterfaceOverrideForTesting('Reversinator', pipe => {
76 mojo_wait_for_incoming_message(mojo, pipe) 74 mojo_wait_for_incoming_message(mojo, pipe)
77 .then(message => { 75 .then(message => {
78 let response = new Uint8Array(message.buffer); 76 let response = new Uint8Array(message.buffer);
79 response.reverse(); 77 response.reverse();
80 assert_equals(mojo.core.writeMessage(pipe, response, [], 0), 78 assert_equals(pipe.writeMessage(response, []), Mojo.RESULT_OK);
81 mojo.core.RESULT_OK);
82 }); 79 });
83 }); 80 });
84 81
85 let pipe = mojo.interfaces.getInterface('Reversinator'); 82 let pipe = mojo.interfaces.getInterface('Reversinator');
86 assert_equals(mojo.core.writeMessage(pipe, TEST_REQUEST, [], 0), 83 assert_equals(pipe.writeMessage(TEST_REQUEST, []), Mojo.RESULT_OK);
87 mojo.core.RESULT_OK);
88 84
89 return mojo_wait_for_incoming_message(mojo, pipe) 85 return mojo_wait_for_incoming_message(mojo, pipe)
90 .then(response => { 86 .then(response => {
91 assert_array_equals(new Uint8Array(response.buffer), EXPECTED_RESPONSE); 87 assert_array_equals(new Uint8Array(response.buffer), EXPECTED_RESPONSE);
92 assert_array_equals(response.handles, []); 88 assert_array_equals(response.handles, []);
93 }); 89 });
94 }, 'Test code can receive response messages from mock interfaces.'); 90 }, 'Test code can receive response messages from mock interfaces.');
95 91
96 mojo_test(() => { 92 mojo_test(() => {
97 return loadMojoModules( 93 return loadMojoModules(
(...skipping 28 matching lines...) Expand all
126 popup.close(); 122 popup.close();
127 window.removeEventListener('message', listener); 123 window.removeEventListener('message', listener);
128 assert_true(result.data); 124 assert_true(result.data);
129 resolve(); 125 resolve();
130 } 126 }
131 window.addEventListener('message', listener); 127 window.addEventListener('message', listener);
132 popup = window.open('resources/mojo-helpers-inner.html'); 128 popup = window.open('resources/mojo-helpers-inner.html');
133 }); 129 });
134 }, 'Mojo bindings are accessible from popups'); 130 }, 'Mojo bindings are accessible from popups');
135 </script> 131 </script>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698