OLD | NEW |
1 /* | 1 /* |
2 * mojo-helpers contains extensions to testharness.js useful for consuming | 2 * mojo-helpers contains extensions to testharness.js useful for consuming |
3 * and mocking Mojo services directly within test code. | 3 * and mocking Mojo services directly within test code. |
4 */ | 4 */ |
5 'use strict'; | 5 'use strict'; |
6 | 6 |
7 // Fix up the global window.define, since all baked-in Mojo modules expect to | 7 // Fix up the global window.define, since all baked-in Mojo modules expect to |
8 // find it there. This define() also returns a promise to the module. | 8 // find it there. This define() also returns a promise to the module. |
9 let define = (function(){ | 9 let define = (function(){ |
10 let moduleCache = new Map(); | 10 let moduleCache = new Map(); |
(...skipping 12 matching lines...) Expand all Loading... |
23 }); | 23 }); |
24 moduleCache.set(name, promise); | 24 moduleCache.set(name, promise); |
25 } | 25 } |
26 return promise; | 26 return promise; |
27 } | 27 } |
28 })(); | 28 })(); |
29 | 29 |
30 define('Mojo Helpers', [ | 30 define('Mojo Helpers', [ |
31 'mojo/public/js/core', | 31 'mojo/public/js/core', |
32 'mojo/public/js/router', | 32 'mojo/public/js/router', |
33 'mojo/public/js/support', | |
34 'content/public/renderer/frame_interfaces', | 33 'content/public/renderer/frame_interfaces', |
35 'content/public/renderer/interfaces', | 34 'content/public/renderer/interfaces', |
36 'content/shell/renderer/layout_test/frame_interface_registry', | 35 'content/shell/renderer/layout_test/frame_interface_registry', |
37 'content/shell/renderer/layout_test/interface_registry', | 36 'content/shell/renderer/layout_test/interface_registry', |
38 ], (core, router, support, frameInterfaces, interfaces, frameInterfaceRegistry, | 37 ], (core, router, frameInterfaces, interfaces, frameInterfaceRegistry, |
39 interfaceRegistry) => { | 38 interfaceRegistry) => { |
40 let tearDown = () => { | 39 let tearDown = () => { |
41 frameInterfaces.clearInterfaceOverridesForTesting(); | 40 frameInterfaces.clearInterfaceOverridesForTesting(); |
42 interfaces.clearInterfaceOverridesForTesting(); | 41 interfaces.clearInterfaceOverridesForTesting(); |
43 }; | 42 }; |
44 addEventListener('unload', tearDown); | 43 addEventListener('unload', tearDown); |
45 if (window.add_completion_callback) | 44 if (window.add_completion_callback) |
46 add_completion_callback(tearDown); | 45 add_completion_callback(tearDown); |
47 | 46 |
48 return { | 47 return { |
49 core, | 48 core, |
50 router, | 49 router, |
51 support, | |
52 frameInterfaces, | 50 frameInterfaces, |
53 frameInterfaceRegistry, | 51 frameInterfaceRegistry, |
54 interfaces, | 52 interfaces, |
55 interfaceRegistry, | 53 interfaceRegistry, |
56 }; | 54 }; |
57 }); | 55 }); |
58 | 56 |
59 // Returns a promise to an object that exposes common Mojo module interfaces. | 57 // Returns a promise to an object that exposes common Mojo module interfaces. |
60 // Additional modules to load can be specified in the |modules| parameter. The | 58 // Additional modules to load can be specified in the |modules| parameter. The |
61 // result will contain them, in the same order, in the |modules| field. | 59 // result will contain them, in the same order, in the |modules| field. |
(...skipping 11 matching lines...) Expand all Loading... |
73 // that exposes common Mojo module interfaces. | 71 // that exposes common Mojo module interfaces. |
74 function mojo_test(func, name, properties) { | 72 function mojo_test(func, name, properties) { |
75 promise_test(() => loadMojoModules(name).then(mojo => { | 73 promise_test(() => loadMojoModules(name).then(mojo => { |
76 return Promise.resolve(func(mojo)); | 74 return Promise.resolve(func(mojo)); |
77 }), name, properties); | 75 }), name, properties); |
78 } | 76 } |
79 | 77 |
80 // Waits for a message to become available on a pipe. | 78 // Waits for a message to become available on a pipe. |
81 function mojo_wait_for_incoming_message(mojo, pipe) { | 79 function mojo_wait_for_incoming_message(mojo, pipe) { |
82 return new Promise((resolve, reject) => { | 80 return new Promise((resolve, reject) => { |
83 mojo.support.asyncWait(pipe, mojo.core.HANDLE_SIGNAL_READABLE, result => { | 81 let watcher = mojo.core.watch(pipe, mojo.core.HANDLE_SIGNAL_READABLE, result
=> { |
| 82 watcher.cancel(); |
84 if (result != mojo.core.RESULT_OK) { | 83 if (result != mojo.core.RESULT_OK) { |
85 reject(result); | 84 reject(result); |
86 return; | 85 return; |
87 } | 86 } |
88 let buffer, handles; | 87 let buffer, handles; |
89 ({ result, buffer, handles } = mojo.core.readMessage(pipe, 0)); | 88 ({ result, buffer, handles } = mojo.core.readMessage(pipe, 0)); |
90 if (result !== mojo.core.RESULT_OK) { | 89 if (result !== mojo.core.RESULT_OK) { |
91 reject(result); | 90 reject(result); |
92 return; | 91 return; |
93 } | 92 } |
94 resolve({ buffer, handles }); | 93 resolve({ buffer, handles }); |
95 }); | 94 }); |
96 }); | 95 }); |
97 }; | 96 }; |
OLD | NEW |