mirror of
https://github.com/servo/servo.git
synced 2025-10-15 07:50:20 +01:00
65 lines
1.9 KiB
JavaScript
65 lines
1.9 KiB
JavaScript
'use strict';
|
|
|
|
// These tests rely on the User Agent providing an implementation of
|
|
// the sms retriever.
|
|
//
|
|
// In Chromium-based browsers this implementation is provided by a polyfill
|
|
// in order to reduce the amount of test-only code shipped to users. To enable
|
|
// these tests the browser must be run with these options:
|
|
// // --enable-blink-features=MojoJS,MojoJSTest
|
|
|
|
async function loadChromiumResources() {
|
|
if (!window.MojoInterfaceInterceptor) {
|
|
// Do nothing on non-Chromium-based browsers or when the Mojo bindings are
|
|
// not present in the global namespace.
|
|
return;
|
|
}
|
|
|
|
const resources = [
|
|
'/gen/layout_test_data/mojo/public/js/mojo_bindings_lite.js',
|
|
'/gen/mojo/public/mojom/base/time.mojom-lite.js',
|
|
'/gen/third_party/blink/public/mojom/sms/sms_receiver.mojom-lite.js',
|
|
'/resources/chromium/mock-sms-receiver.js',
|
|
];
|
|
|
|
await Promise.all(resources.map(path => {
|
|
const script = document.createElement('script');
|
|
script.src = path;
|
|
script.async = false;
|
|
const promise = new Promise((resolve, reject) => {
|
|
script.onload = resolve;
|
|
script.onerror = reject;
|
|
});
|
|
document.head.appendChild(script);
|
|
return promise;
|
|
}));
|
|
|
|
Status.kSuccess = blink.mojom.SmsStatus.kSuccess;
|
|
Status.kTimeout = blink.mojom.SmsStatus.kTimeout;
|
|
Status.kCancelled = blink.mojom.SmsStatus.kCancelled;
|
|
};
|
|
|
|
const Status = {};
|
|
|
|
async function create_sms_provider() {
|
|
if (typeof SmsProvider === 'undefined') {
|
|
await loadChromiumResources();
|
|
}
|
|
if (typeof SmsProvider == 'undefined') {
|
|
throw new Error('Mojo testing interface is not available.');
|
|
}
|
|
return new SmsProvider();
|
|
}
|
|
|
|
function receive() {
|
|
throw new Error("expected to be overriden by tests");
|
|
}
|
|
|
|
function expect(call) {
|
|
return {
|
|
async andReturn(callback) {
|
|
const mock = await create_sms_provider();
|
|
mock.pushReturnValuesForTesting(call.name, callback);
|
|
}
|
|
}
|
|
}
|