OLD | NEW |
1 'use strict'; | 1 'use strict'; |
2 | 2 |
3 function assert_relatedapplication_equals(actual, expected, description) { | 3 function assert_relatedapplication_equals(actual, expected, description) { |
4 assert_equals(actual.platform, expected.platform, description); | 4 assert_equals(actual.platform, expected.platform, description); |
5 assert_equals(actual.url, expected.url, description); | 5 assert_equals(actual.url, expected.url, description); |
6 assert_equals(actual.id, expected.id, description); | 6 assert_equals(actual.id, expected.id, description); |
7 } | 7 } |
8 | 8 |
9 function assert_array_relatedapplication_equals( | 9 function assert_array_relatedapplication_equals( |
10 actual, expected, description) { | 10 actual, expected, description) { |
11 assert_equals(actual.length, expected.length, description); | 11 assert_equals(actual.length, expected.length, description); |
12 | 12 |
13 for (let i = 0; i < actual.length; i++) | 13 for (let i = 0; i < actual.length; i++) |
14 assert_relatedapplication_equals(actual[i], expected[i], description); | 14 assert_relatedapplication_equals(actual[i], expected[i], description); |
15 } | 15 } |
| 16 |
| 17 let mockInstalledAppProvider = loadMojoModules( |
| 18 'mockInstalledAppProvider', |
| 19 ['mojo/public/js/bindings', |
| 20 'third_party/WebKit/public/platform/modules/installedapp/installed_app_prov
ider.mojom', |
| 21 ]).then(mojo => { |
| 22 let [bindings, installed_app_provider] = mojo.modules; |
| 23 |
| 24 class MockInstalledAppProvider { |
| 25 constructor(interfaceProvider) { |
| 26 this.bindingSet_ = |
| 27 new bindings.BindingSet(installed_app_provider.InstalledAppProvider); |
| 28 |
| 29 interfaceProvider.addInterfaceOverrideForTesting( |
| 30 installed_app_provider.InstalledAppProvider.name, |
| 31 handle => this.bindingSet_.addBinding(this, handle)); |
| 32 } |
| 33 |
| 34 // Returns a Promise that gets rejected if the test should fail. |
| 35 init_() { |
| 36 // sequence of [expectedRelatedApps, expectedOrigin, installedApps]. |
| 37 this.callQueue_ = []; |
| 38 |
| 39 return new Promise((resolve, reject) => {this.reject_ = reject}); |
| 40 } |
| 41 |
| 42 filterInstalledApps(relatedApps, origin) { |
| 43 let callback = null; |
| 44 let result = new Promise(resolve => {callback = resolve;}); |
| 45 |
| 46 if (!this.callQueue_.length) { |
| 47 this.reject_('Unexpected call to mojo FilterInstalledApps method'); |
| 48 return result; |
| 49 } |
| 50 |
| 51 let [expectedRelatedApps, expectedOrigin, installedApps] = |
| 52 this.callQueue_.shift(); |
| 53 try { |
| 54 assert_array_relatedapplication_equals( |
| 55 relatedApps, expectedRelatedApps); |
| 56 assert_equals(origin, expectedOrigin); |
| 57 } catch (e) { |
| 58 this.reject_(e); |
| 59 return result; |
| 60 } |
| 61 callback({installedApps: installedApps}); |
| 62 |
| 63 return result; |
| 64 } |
| 65 |
| 66 pushExpectedCall(expectedRelatedApps, expectedOrigin, installedApps) { |
| 67 this.callQueue_.push( |
| 68 [expectedRelatedApps, expectedOrigin, installedApps]); |
| 69 } |
| 70 } |
| 71 return new MockInstalledAppProvider(mojo.frameInterfaces); |
| 72 }); |
| 73 |
| 74 // Creates a test case that uses a mock InstalledAppProvider. |
| 75 // |func| is a function that takes (t, mock), where |mock| is a |
| 76 // MockInstalledAppProvider that can have expectations set with |
| 77 // pushExpectedCall. It should return a promise, the result of |
| 78 // getInstalledRelatedApps(). |
| 79 // |name| and |properties| are standard testharness arguments. |
| 80 function installedapp_test(func, name, properties) { |
| 81 promise_test(t => mockInstalledAppProvider.then(mock => { |
| 82 let mockPromise = mock.init_(); |
| 83 return Promise.race([func(t, mock), mockPromise]); |
| 84 }), name, properties); |
| 85 } |
OLD | NEW |