Commit 7777e961 authored by Rayan Kanso's avatar Rayan Kanso Committed by Commit Bot

[InstalledApp] Move & update some of the web tests to wpt.

Also update the idl definition to the correct value.

Change-Id: Ida7936ef43733702f20c5a6efa9ef7a869de09c6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1912900Reviewed-by: default avatarPeter Beverloo <peter@chromium.org>
Commit-Queue: Rayan Kanso <rayankans@chromium.org>
Cr-Commit-Position: refs/heads/master@{#714931}
parent 3b061838
......@@ -9,5 +9,5 @@
ImplementedAs=NavigatorInstalledApp,
RuntimeEnabled=InstalledApp
] partial interface Navigator {
[CallWith=ScriptState, Measure, SecureContext] Promise<RelatedApplication> getInstalledRelatedApps();
[CallWith=ScriptState, Measure, SecureContext] Promise<sequence<RelatedApplication>> getInstalledRelatedApps();
};
// META: global=window
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js
'use strict';
// https://wicg.github.io/get-installed-related-apps/spec/
const idl = `
dictionary RelatedApplication {
required USVString platform;
USVString url;
DOMString id;
USVString version;
};
[Exposed=Window]
partial interface Navigator {
[SecureContext] Promise<sequence<RelatedApplication>> getInstalledRelatedApps();
};`;
test(t => {
const idl_array = new IdlArray();
idl_array.add_untested_idls("interface Navigator {};");
idl_array.add_idls(idl);
idl_array.add_objects({
Navigator: ['navigator'],
});
idl_array.test();
}, 'IDL test for getInstalledRelatedApps');
// META: script=resources/utils.js
'use strict';
// https://wicg.github.io/get-installed-related-app/spec
promise_test(async t => {
assert_true('getInstalledRelatedApps' in navigator);
assert_array_equals(await navigator.getInstalledRelatedApps(), []);
}, 'Check calling getInstalledRelatedApps works as expected');
promise_test(async t => {
const iframeWindow = await new Promise(resolve => {
const iframe = document.createElement('iframe');
iframe.src = 'resources/iframe.html';
iframe.onload = () => resolve(iframe.contentWindow);
document.body.appendChild(iframe);
});
try {
await iframeWindow.navigator.getInstalledRelatedApps();
assert_unreached('expected a DOMException, but none was thrown');
} catch (e) {
assert_equals(e.name, 'InvalidStateError');
}
}, 'Calling getInstalledrelatedApps from an iframe fails');
\ No newline at end of file
<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<iframe srcdoc="
<!DOCTYPE html>
<script>
window.top.promise_test(function() {
var expectedError = 'InvalidStateError';
var promise = navigator.getInstalledRelatedApps();
return window.top.promise_rejects(this, expectedError, promise);
}, 'getInstalledRelatedApps() should error when called in an iframe.');
</script>
"></iframe>
<!DOCTYPE html>
<link rel="help" href="https://github.com/WICG/get-installed-related-apps/blob/master/EXPLAINER.md">
<script src=../resources/testharness.js></script>
<script src=../resources/testharnessreport.js></script>
<script src=../resources/webidl2.js></script>
<script src=../resources/idlharness.js></script>
<script type="text/plain" id="untested">
interface Navigator {
};
</script>
<script type="text/plain" id="tested">
[NoInterfaceObject]
interface RelatedApplication {
readonly attribute DOMString platform;
readonly attribute DOMString url;
readonly attribute DOMString id;
};
partial interface Navigator {
Promise<RelatedApplication> getInstalledRelatedApps();
};
</script>
<script>
"use strict";
var idl_array = new IdlArray();
idl_array.add_untested_idls(document.querySelector("#untested").textContent);
idl_array.add_idls(document.querySelector('#tested').textContent);
idl_array.add_objects({
Navigator: ['navigator']
});
idl_array.test();
</script>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment