Update the presentation-api IDL file (#9814)
diff --git a/interfaces/presentation-api.idl b/interfaces/presentation-api.idl
new file mode 100644
index 0000000..3f6e631
--- /dev/null
+++ b/interfaces/presentation-api.idl
@@ -0,0 +1,111 @@
+// GENERATED CONTENT - DO NOT EDIT
+// Content of this file was automatically extracted from the
+// "Presentation API" spec.
+// See: https://w3c.github.io/presentation-api/
+
+partial interface Navigator {
+ [SecureContext,
+ SameObject]
+ readonly attribute Presentation presentation;
+};
+
+[SecureContext,
+ Exposed=Window]
+interface Presentation {
+};
+partial interface Presentation {
+ attribute PresentationRequest? defaultRequest;
+};
+partial interface Presentation {
+ readonly attribute PresentationReceiver? receiver;
+};
+[Constructor(USVString url),
+ Constructor(sequence<USVString> urls),
+ SecureContext,
+ Exposed=Window]
+interface PresentationRequest : EventTarget {
+ Promise<PresentationConnection> start();
+ Promise<PresentationConnection> reconnect(USVString presentationId);
+ Promise<PresentationAvailability> getAvailability();
+
+ attribute EventHandler onconnectionavailable;
+};
+[SecureContext,
+ Exposed=Window]
+interface PresentationAvailability : EventTarget {
+ readonly attribute boolean value;
+
+ attribute EventHandler onchange;
+};
+[Constructor(DOMString type, PresentationConnectionAvailableEventInit eventInitDict),
+ SecureContext,
+ Exposed=Window]
+interface PresentationConnectionAvailableEvent : Event {
+ [SameObject]
+ readonly attribute PresentationConnection connection;
+};
+
+dictionary PresentationConnectionAvailableEventInit : EventInit {
+ required PresentationConnection connection;
+};
+enum PresentationConnectionState {
+ "connecting",
+ "connected",
+ "closed",
+ "terminated"
+};
+
+enum BinaryType {
+ "blob",
+ "arraybuffer"
+};
+
+[SecureContext,
+ Exposed=Window]
+interface PresentationConnection : EventTarget {
+ readonly attribute USVString id;
+ readonly attribute USVString url;
+ readonly attribute PresentationConnectionState state;
+ void close();
+ void terminate();
+ attribute EventHandler onconnect;
+ attribute EventHandler onclose;
+ attribute EventHandler onterminate;
+
+ // Communication
+ attribute BinaryType binaryType;
+ attribute EventHandler onmessage;
+ void send(DOMString message);
+ void send(Blob data);
+ void send(ArrayBuffer data);
+ void send(ArrayBufferView data);
+};
+enum PresentationConnectionCloseReason {
+ "error",
+ "closed",
+ "wentaway"
+};
+
+[Constructor(DOMString type, PresentationConnectionCloseEventInit eventInitDict),
+ SecureContext,
+ Exposed=Window]
+interface PresentationConnectionCloseEvent : Event {
+ readonly attribute PresentationConnectionCloseReason reason;
+ readonly attribute DOMString message;
+};
+
+dictionary PresentationConnectionCloseEventInit : EventInit {
+ required PresentationConnectionCloseReason reason;
+ DOMString message = "";
+};
+[SecureContext,
+ Exposed=Window]
+interface PresentationReceiver {
+ readonly attribute Promise<PresentationConnectionList> connectionList;
+};
+[SecureContext,
+ Exposed=Window]
+interface PresentationConnectionList : EventTarget {
+ readonly attribute FrozenArray<PresentationConnection> connections;
+ attribute EventHandler onconnectionavailable;
+};
diff --git a/presentation-api/controlling-ua/idlharness.https.html b/presentation-api/controlling-ua/idlharness.https.html
index 1077ddf..04d1741 100644
--- a/presentation-api/controlling-ua/idlharness.https.html
+++ b/presentation-api/controlling-ua/idlharness.https.html
@@ -8,134 +8,35 @@
<script src="/resources/WebIDLParser.js"></script>
<script src="/resources/idlharness.js"></script>
-<script id="untested_idl" type="text/plain">
-interface Navigator {
-};
-interface EventTarget {
-};
-interface EventHandler {
-};
-interface Event {
-};
-dictionary EventInit {
-};
-</script>
-
-<script id='idl' type="text/plain">
-partial interface Navigator {
- [SecureContext,
- SameObject]
- readonly attribute Presentation presentation;
-};
-
-[SecureContext,
- Exposed=Window]
-interface Presentation {
-};
-
-partial interface Presentation {
- attribute PresentationRequest? defaultRequest;
-};
-
-[Constructor(USVString url),
- Constructor(sequence<USVString> urls),
- SecureContext,
- Exposed=Window]
-interface PresentationRequest : EventTarget {
- Promise<PresentationConnection> start();
- Promise<PresentationConnection> reconnect(USVString presentationId);
- Promise<PresentationAvailability> getAvailability();
-
- attribute EventHandler onconnectionavailable;
-};
-
-[SecureContext,
- Exposed=Window]
-interface PresentationAvailability : EventTarget {
- readonly attribute boolean value;
- attribute EventHandler onchange;
-};
-
-[Constructor(DOMString type, PresentationConnectionAvailableEventInit eventInitDict),
- SecureContext,
- Exposed=Window]
-interface PresentationConnectionAvailableEvent : Event {
- [SameObject]
- readonly attribute PresentationConnection connection;
-};
-
-dictionary PresentationConnectionAvailableEventInit : EventInit {
- required PresentationConnection connection;
-};
-
-enum PresentationConnectionState {
- "connecting",
- "connected",
- "closed",
- "terminated"
-};
-
-enum BinaryType {
- "blob",
- "arraybuffer"
-};
-
-[SecureContext,
- Exposed=Window]
-interface PresentationConnection : EventTarget {
- readonly attribute USVString id;
- readonly attribute USVString url;
- readonly attribute PresentationConnectionState state;
- void close();
- void terminate();
- attribute EventHandler onconnect;
- attribute EventHandler onclose;
- attribute EventHandler onterminate;
-
- // Communication
- attribute BinaryType binaryType;
- attribute EventHandler onmessage;
- void send(DOMString message);
- void send(Blob data);
- void send(ArrayBuffer data);
- void send(ArrayBufferView data);
-};
-
-enum PresentationConnectionCloseReason {
- "error",
- "closed",
- "wentaway"
-};
-
-[Constructor(DOMString type, PresentationConnectionCloseEventInit eventInitDict),
- SecureContext,
- Exposed=Window]
-interface PresentationConnectionCloseEvent : Event {
- readonly attribute PresentationConnectionCloseReason reason;
- readonly attribute DOMString message;
-};
-
-dictionary PresentationConnectionCloseEventInit : EventInit {
- required PresentationConnectionCloseReason reason;
- DOMString message = "";
-};
-</script>
-
<script>
- (function() {
- "use strict";
- var idl_array = new IdlArray();
- var idls = document.getElementById('idl').textContent;
- idl_array.add_untested_idls(document.getElementById('untested_idl').textContent);
- idl_array.add_idls(idls);
- window.presentation_request = new PresentationRequest("/presentation-api/receiving-ua/idlharness.html");
- window.presentation_request_urls = new PresentationRequest(["/presentation-api/receiving-ua/idlharness.html",
- "https://www.example.com/presentation.html"]);
- navigator.presentation.defaultRequest = presentation_request;
- idl_array.add_objects({
- Presentation: ['navigator.presentation'],
- PresentationRequest: ['navigator.presentation.defaultRequest', 'presentation_request', 'presentation_request_urls']
- });
- idl_array.test();
- })();
+ "use strict";
+
+ promise_test(async () => {
+ const srcs = ['presentation-api', 'dom', 'html'];
+ const [idl, dom, html] = await Promise.all(
+ srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text())));
+
+ const idl_array = new IdlArray();
+ idl_array.add_idls(idl, {
+ except: [
+ 'PresentationReceiver',
+ 'PresentationConnectionList'
+ ]
+ });
+ idl_array.add_dependency_idls(dom);
+ idl_array.add_dependency_idls(html);
+
+ window.presentation_request = new PresentationRequest("/presentation-api/receiving-ua/idlharness.html");
+ window.presentation_request_urls = new PresentationRequest([
+ "/presentation-api/receiving-ua/idlharness.html",
+ "https://www.example.com/presentation.html"
+ ]);
+ navigator.presentation.defaultRequest = presentation_request;
+
+ idl_array.add_objects({
+ Presentation: ['navigator.presentation'],
+ PresentationRequest: ['navigator.presentation.defaultRequest', 'presentation_request', 'presentation_request_urls']
+ });
+ idl_array.test();
+ }, "Test IDL implementation of Presentation API");
</script>
diff --git a/presentation-api/receiving-ua/support/idlharness_receiving-ua.html b/presentation-api/receiving-ua/support/idlharness_receiving-ua.html
index 32deeb4..2d5a5b1 100644
--- a/presentation-api/receiving-ua/support/idlharness_receiving-ua.html
+++ b/presentation-api/receiving-ua/support/idlharness_receiving-ua.html
@@ -11,120 +11,22 @@
<script src="../common.js"></script>
<script src="stash.js"></script>
-<script id="untested_idl" type="text/plain">
-interface Navigator {
-};
-interface EventTarget {
-};
-interface EventHandler {
-};
-interface Event {
-};
-dictionary EventInit {
-};
-</script>
-
-<script id='idl' type="text/plain">
-partial interface Navigator {
- [SecureContext,
- SameObject]
- readonly attribute Presentation presentation;
-};
-
-[SecureContext,
- Exposed=Window]
-interface Presentation {
-};
-
-partial interface Presentation {
- readonly attribute PresentationReceiver? receiver;
-};
-
-[Constructor(DOMString type, PresentationConnectionAvailableEventInit eventInitDict),
- SecureContext,
- Exposed=Window]
-interface PresentationConnectionAvailableEvent : Event {
- [SameObject]
- readonly attribute PresentationConnection connection;
-};
-
-dictionary PresentationConnectionAvailableEventInit : EventInit {
- required PresentationConnection connection;
-};
-
-enum PresentationConnectionState {
- "connecting",
- "connected",
- "closed",
- "terminated"
-};
-
-enum BinaryType {
- "blob",
- "arraybuffer"
-};
-
-[SecureContext,
- Exposed=Window]
-interface PresentationConnection : EventTarget {
- readonly attribute USVString id;
- readonly attribute USVString url;
- readonly attribute PresentationConnectionState state;
- void close();
- void terminate();
- attribute EventHandler onconnect;
- attribute EventHandler onclose;
- attribute EventHandler onterminate;
-
- // Communication
- attribute BinaryType binaryType;
- attribute EventHandler onmessage;
- void send(DOMString message);
- void send(Blob data);
- void send(ArrayBuffer data);
- void send(ArrayBufferView data);
-};
-
-enum PresentationConnectionCloseReason {
- "error",
- "closed",
- "wentaway"
-};
-
-[Constructor(DOMString type, PresentationConnectionCloseEventInit eventInitDict),
- SecureContext,
- Exposed=Window]
-interface PresentationConnectionCloseEvent : Event {
- readonly attribute PresentationConnectionCloseReason reason;
- readonly attribute DOMString message;
-};
-
-dictionary PresentationConnectionCloseEventInit : EventInit {
- required PresentationConnectionCloseReason reason;
- DOMString message = "";
-};
-
-[SecureContext,
- Exposed=Window]
-interface PresentationReceiver {
- readonly attribute Promise<PresentationConnectionList> connectionList;
-};
-
-[SecureContext,
- Exposed=Window]
-interface PresentationConnectionList : EventTarget {
- readonly attribute FrozenArray<PresentationConnection> connections;
- attribute EventHandler onconnectionavailable;
-};
-</script>
-
<script>
- (() => {
- 'use strict';
+ 'use strict';
+ (async () => {
+ const srcs = ['presentation-api', 'dom', 'html'];
+ const [idl, dom, html] = await Promise.all(
+ srcs.map(i => fetch(`/interfaces/${i}.idl`).then(r => r.text())));
+
const idl_array = new IdlArray();
- const idls = document.getElementById('idl').textContent;
- idl_array.add_untested_idls(document.getElementById('untested_idl').textContent);
- idl_array.add_idls(idls);
+ idl_array.add_idls(idl, {
+ except: [
+ 'PresentationRequest',
+ 'PresentationAvailability',
+ ]
+ });
+ idl_array.add_dependency_idls(dom);
+ idl_array.add_dependency_idls(html);
idl_array.add_objects({
Presentation: ['navigator.presentation'],
PresentationReceiver: ['navigator.presentation.receiver']