Bug 975144 - WebIDL changes for RTC identity sandbox draft
authorMartin Thomson <martin.thomson@gmail.com>
Sat, 21 Feb 2015 11:55:36 +1300
changeset 245131 b5569f328b12a4e4a5e120885f8301e70f2aa75f
parent 245130 e8cfd49ac790eb7a8db2ff79f6fad74c7f567129
child 245132 c8ddf1c42782bb19193849082fdbef54dd2709cf
push id749
push usermartin.thomson@gmail.com
push dateFri, 20 Feb 2015 23:01:27 +0000
bugs975144
milestone38.0a1
Bug 975144 - WebIDL changes for RTC identity sandbox
dom/webidl/RTCIdentityProvider.webidl
dom/webidl/moz.build
new file mode 100644
--- /dev/null
+++ b/dom/webidl/RTCIdentityProvider.webidl
@@ -0,0 +1,54 @@
+/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/.
+ *
+ * http://w3c.github.io/webrtc-pc/ (with https://github.com/w3c/webrtc-pc/pull/178)
+ */
+
+[NoInterfaceObject]
+interface RTCIdentityProviderRegistrar {
+  void register(RTCIdentityProvider idp);
+
+  /* The IdP that was passed to register() to chrome code, if any. */
+  [ChromeOnly]
+  readonly attribute RTCIdentityProvider? idp;
+  /* The following two chrome-only functions forward to the corresponding
+   * function on the registered IdP.  This is necessary because the
+   * JS-implemented WebIDL can't see these functions on `idp` above, chrome JS
+   * gets an Xray onto the content code that suppresses functions, see
+   * https://developer.mozilla.org/en-US/docs/Xray_vision#Xrays_for_JavaScript_objects
+   */
+  /* Forward to idp.generateAssertion() */
+  [ChromeOnly, Throws]
+  Promise<RTCIdentityAssertionResult>
+  generateAssertion(DOMString contents, DOMString origin,
+                    optional DOMString usernameHint);
+  /* Forward to idp.validateAssertion() */
+  [ChromeOnly, Throws]
+  Promise<RTCIdentityValidationResult>
+  validateAssertion(DOMString assertion, DOMString origin);
+};
+
+callback interface RTCIdentityProvider {
+  Promise<RTCIdentityAssertionResult>
+  generateAssertion(DOMString contents, DOMString origin,
+                    optional DOMString usernameHint);
+  Promise<RTCIdentityValidationResult>
+  validateAssertion(DOMString assertion, DOMString origin);
+};
+
+dictionary RTCIdentityAssertionResult {
+  required RTCIdentityProviderDetails idp;
+  required DOMString assertion;
+};
+
+dictionary RTCIdentityProviderDetails {
+  required DOMString domain;
+  DOMString protocol = "default";
+};
+
+dictionary RTCIdentityValidationResult {
+  required DOMString identity;
+  required DOMString contents;
+};
--- a/dom/webidl/moz.build
+++ b/dom/webidl/moz.build
@@ -351,16 +351,17 @@ WEBIDL_FILES = [
     'RequestSyncScheduler.webidl',
     'ResourceStats.webidl',
     'ResourceStatsManager.webidl',
     'Response.webidl',
     'RGBColor.webidl',
     'RTCConfiguration.webidl',
     'RTCIceCandidate.webidl',
     'RTCIdentityAssertion.webidl',
+    'RTCIdentityProvider.webidl',
     'RTCPeerConnection.webidl',
     'RTCPeerConnectionStatic.webidl',
     'RTCRtpReceiver.webidl',
     'RTCRtpSender.webidl',
     'RTCSessionDescription.webidl',
     'RTCStatsReport.webidl',
     'Screen.webidl',
     'ScriptProcessorNode.webidl',