Bug 1155923 - Removing moz prefix from RTC interfaces, r?jesup,smaug draft
authorMartin Thomson <martin.thomson@gmail.com>
Fri, 21 Aug 2015 15:31:17 -0700
changeset 287189 8f0811dddf9942427db6a73f8b49a7358a0dab91
parent 287188 25b53d012913f94a2e27f037c0b967be54420b6c
child 287190 af6669ebf7f62f95776633ba5d00f846707d6d09
push id4660
push usermartin.thomson@gmail.com
push dateFri, 21 Aug 2015 22:37:38 +0000
reviewersjesup, smaug
bugs1155923
milestone43.0a1
Bug 1155923 - Removing moz prefix from RTC interfaces, r?jesup,smaug
browser/components/loop/.eslintrc
browser/components/loop/modules/MozLoopService.jsm
browser/components/loop/standalone/.jshintrc
browser/components/loop/test/shared/validate_test.js
dom/bindings/test/test_exceptions_from_jsimplemented.html
dom/media/PeerConnection.js
dom/media/tests/crashtests/791270.html
dom/media/tests/crashtests/791278.html
dom/media/tests/crashtests/791330.html
dom/media/tests/crashtests/799419.html
dom/media/tests/crashtests/801227.html
dom/media/tests/crashtests/812785.html
dom/media/tests/crashtests/822197.html
dom/media/tests/crashtests/834100.html
dom/media/tests/crashtests/836349.html
dom/media/tests/crashtests/837324.html
dom/media/tests/crashtests/855796.html
dom/media/tests/crashtests/860143.html
dom/media/tests/crashtests/861958.html
dom/media/tests/crashtests/863929.html
dom/media/tests/mochitest/identity/test_fingerprints.html
dom/media/tests/mochitest/pc.js
dom/media/tests/mochitest/templates.js
dom/media/tests/mochitest/test_dataChannel_noOffer.html
dom/media/tests/mochitest/test_peerConnection_addIceCandidate.html
dom/media/tests/mochitest/test_peerConnection_bug822674.html
dom/media/tests/mochitest/test_peerConnection_bug825703.html
dom/media/tests/mochitest/test_peerConnection_bug834153.html
dom/media/tests/mochitest/test_peerConnection_callbacks.html
dom/media/tests/mochitest/test_peerConnection_certificates.html
dom/media/tests/mochitest/test_peerConnection_close.html
dom/media/tests/mochitest/test_peerConnection_closeDuringIce.html
dom/media/tests/mochitest/test_peerConnection_errorCallbacks.html
dom/media/tests/mochitest/test_peerConnection_iceFailure.html
dom/media/tests/mochitest/test_peerConnection_localReofferRollback.html
dom/media/tests/mochitest/test_peerConnection_localRollback.html
dom/media/tests/mochitest/test_peerConnection_promiseSendOnly.html
dom/media/tests/mochitest/test_peerConnection_remoteReofferRollback.html
dom/media/tests/mochitest/test_peerConnection_remoteRollback.html
dom/media/tests/mochitest/test_peerConnection_throwInCallbacks.html
dom/media/tests/mochitest/test_peerConnection_toJSON.html
dom/tests/mochitest/general/test_interfaces.html
dom/webidl/Navigator.webidl
dom/webidl/PeerConnectionImpl.webidl
dom/webidl/PeerConnectionObserver.webidl
dom/webidl/RTCIceCandidate.webidl
dom/webidl/RTCPeerConnection.webidl
dom/webidl/RTCPeerConnectionIceEvent.webidl
dom/webidl/RTCPeerConnectionStatic.webidl
dom/webidl/RTCSessionDescription.webidl
dom/webidl/WebrtcDeprecated.webidl
dom/webidl/Window.webidl
dom/webidl/moz.build
media/webrtc/trunk/webrtc/test/manual/adapter.js
media/webrtc/trunk/webrtc/tools/loopback_test/adapter.js
mobile/android/modules/TabMirror.jsm
--- a/browser/components/loop/.eslintrc
+++ b/browser/components/loop/.eslintrc
@@ -17,17 +17,17 @@
     "_": false,
     "$": false,
     "Backbone": false,
     "chai": false,
     "console": false,
     "jQuery": false,
     "loop": true,
     "MozActivity": false,
-    "mozRTCSessionDescription": false,
+    "RTCSessionDescription": false,
     "OT": false,
     "performance": false,
     "Promise": false,
     "React": false,
     "sinon": false
   },
   "rules": {
     // turn off all kinds of stuff that we actually do want, because
--- a/browser/components/loop/modules/MozLoopService.jsm
+++ b/browser/components/loop/modules/MozLoopService.jsm
@@ -978,17 +978,17 @@ let MozLoopServiceInternal = {
                 if (Services.telemetry.canRecordExtended) {
                   this.stageForTelemetryUpload(window, pc);
                 }
                 break;
             }
           }
         };
 
-        let pc_static = new window.mozRTCPeerConnectionStatic();
+        let pc_static = new window.RTCPeerConnectionStatic();
         pc_static.registerPeerConnectionLifecycleCallback(onPCLifecycleChange);
 
         UITour.notify("Loop:ChatWindowOpened");
       }.bind(this), true);
     };
 
     let chatboxInstance = Chat.open(null, origin, "", url, undefined, undefined,
                                     callback);
--- a/browser/components/loop/standalone/.jshintrc
+++ b/browser/components/loop/standalone/.jshintrc
@@ -27,17 +27,17 @@
     "afterEach": false,
     "before": false,
     "beforeEach": false,
     "describe": false,
     "it": false,
 
     // firefox stuff not covered by "browser" option
     "indexedDB": true,
-    "mozRTCIceCandidate": false,
-    "mozRTCPeerConnection": false,
-    "mozRTCSessionDescription": false,
+    "RTCIceCandidate": false,
+    "RTCPeerConnection": false,
+    "RTCSessionDescription": false,
 
     "Backbone": false,
 
     "_": false
   }
 }
--- a/browser/components/loop/test/shared/validate_test.js
+++ b/browser/components/loop/test/shared/validate_test.js
@@ -12,21 +12,21 @@ describe("Validator", function() {
     return validator.validate.bind(validator, values);
   }
 
   // test types
   function X(){}
   function Y(){}
 
   describe("#validate", function() {
-    function mozRTCSessionDescription() {}
-    var mozRTC;
+    function RTCSessionDescription() {}
+    var rtcsd;
 
     beforeEach(function() {
-      mozRTC = new mozRTCSessionDescription();
+      rtcsd = new RTCSessionDescription();
     });
 
     it("should check for a single required dependency when no option passed",
       function() {
         expect(create({x: Number}, {}))
           .to.Throw(TypeError, /missing required x$/);
       });
 
@@ -69,19 +69,19 @@ describe("Validator", function() {
     });
 
     it("should check for a custom constructor dependency", function() {
       expect(create({foo: X}, {foo: null})).to.Throw(
         TypeError, /invalid dependency: foo; expected X, got null$/);
     });
 
     it("should check for a native constructor dependency", function() {
-      expect(create({foo: mozRTC}, {foo: "x"}))
+      expect(create({foo: rtcsd}, {foo: "x"}))
         .to.Throw(TypeError,
-                  /invalid dependency: foo; expected mozRTCSessionDescription/);
+                  /invalid dependency: foo; expected RTCSessionDescription/);
     });
 
     it("should check for a null dependency", function() {
       expect(create({foo: null}, {foo: "x"})).to.Throw(
         TypeError, /invalid dependency: foo; expected null, got String$/);
     });
   });
 });
--- a/dom/bindings/test/test_exceptions_from_jsimplemented.html
+++ b/dom/bindings/test/test_exceptions_from_jsimplemented.html
@@ -6,32 +6,32 @@ https://bugzilla.mozilla.org/show_bug.cg
 <head>
   <meta charset="utf-8">
   <title>Test for Bug 923010</title>
   <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
   <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
   <script type="application/javascript">
   /** Test for Bug 923010 **/
   try {
-    var conn = new mozRTCPeerConnection();
+    var conn = new RTCPeerConnection();
     try {
       conn.updateIce(candidate, function() {
           ok(false, "The call to updateIce succeeded when it should have thrown");
         }, function() {
           ok(false, "The call to updateIce failed when it should have thrown");
         })
       ok(false, "That call to updateIce should have thrown");
     } catch (e) {
       is(e.lineNumber, 16, "Exception should have been on line 16");
       is(e.message,
          "updateIce not yet implemented",
          "Should have the exception we expect");
     }
 
-    var candidate = new mozRTCIceCandidate({candidate: null });
+    var candidate = new RTCIceCandidate({candidate: null });
 
     conn.addIceCandidate(candidate)
     .then(function() {
       ok(false, "addIceCandidate succeeded when it should have failed");
     }, function(reason) {
       is(reason.lineNumber, 31, "Rejection should have been on line 31");
       is(reason.message,
          "Invalid candidate passed to addIceCandidate!",
--- a/dom/media/PeerConnection.js
+++ b/dom/media/PeerConnection.js
@@ -228,17 +228,17 @@ GlobalPCList.prototype = {
   },
 };
 let _globalPCList = new GlobalPCList();
 
 function RTCIceCandidate() {
   this.candidate = this.sdpMid = this.sdpMLineIndex = null;
 }
 RTCIceCandidate.prototype = {
-  classDescription: "mozRTCIceCandidate",
+  classDescription: "RTCIceCandidate",
   classID: PC_ICE_CID,
   contractID: PC_ICE_CONTRACT,
   QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports,
                                          Ci.nsIDOMGlobalPropertyInitializer]),
 
   init: function(win) { this._win = win; },
 
   __init: function(dict) {
@@ -247,17 +247,17 @@ RTCIceCandidate.prototype = {
     this.sdpMLineIndex = ("sdpMLineIndex" in dict)? dict.sdpMLineIndex : null;
   }
 };
 
 function RTCSessionDescription() {
   this.type = this.sdp = null;
 }
 RTCSessionDescription.prototype = {
-  classDescription: "mozRTCSessionDescription",
+  classDescription: "RTCSessionDescription",
   classID: PC_SESSION_CID,
   contractID: PC_SESSION_CONTRACT,
   QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports,
                                          Ci.nsIDOMGlobalPropertyInitializer]),
 
   init: function(win) { this._win = win; },
 
   __init: function(dict) {
@@ -341,17 +341,17 @@ function RTCPeerConnection() {
 
   this._localType = null;
   this._remoteType = null;
 
   // States
   this._iceGatheringState = this._iceConnectionState = "new";
 }
 RTCPeerConnection.prototype = {
-  classDescription: "mozRTCPeerConnection",
+  classDescription: "RTCPeerConnection",
   classID: PC_CID,
   contractID: PC_CONTRACT,
   QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports,
                                          Ci.nsIDOMGlobalPropertyInitializer]),
   init: function(win) { this._win = win; },
 
   __init: function(rtcConfig) {
     this._winID = this._win.QueryInterface(Ci.nsIInterfaceRequestor)
@@ -453,17 +453,17 @@ RTCPeerConnection.prototype = {
       let cert = certificates.find(c => c.expires.getTime() > Date.now());
       if (!cert) {
         throw new this._win.DOMException(
           "Unable to create RTCPeerConnection with an expired certificate",
           "InvalidParameterError");
       }
       certPromise = Promise.resolve(cert);
     } else {
-      certPromise = this._win.mozRTCPeerConnection.generateCertificate({
+      certPromise = this._win.RTCPeerConnection.generateCertificate({
         name: "ECDSA", namedCurve: "P-256"
       });
     }
     this._certificateReady = certPromise
       .then(cert => this._impl.certificate = cert);
   },
 
   _initIdp: function() {
@@ -727,17 +727,17 @@ RTCPeerConnection.prototype = {
         let p = Promise.all([this.getPermission(), this._certificateReady])
           .then(() => new this._win.Promise((resolve, reject) => {
             this._onCreateOfferSuccess = resolve;
             this._onCreateOfferFailure = reject;
             this._impl.createOffer(options);
           }));
         p = this._addIdentityAssertion(p, origin);
         return p.then(
-          sdp => new this._win.mozRTCSessionDescription({ type: "offer", sdp: sdp }));
+          sdp => new this._win.RTCSessionDescription({ type: "offer", sdp: sdp }));
       });
     });
   },
 
   createAnswer: function(optionsOrOnSuccess, onError) {
     // This entry-point handles both new and legacy call sig. Decipher which one
     let onSuccess, options;
     if (typeof optionsOrOnSuccess == "function") {
@@ -762,17 +762,17 @@ RTCPeerConnection.prototype = {
                                                "InvalidStateError");
             }
             this._onCreateAnswerSuccess = resolve;
             this._onCreateAnswerFailure = reject;
             this._impl.createAnswer();
           }));
         p = this._addIdentityAssertion(p, origin);
         return p.then(sdp => {
-          return new this._win.mozRTCSessionDescription({ type: "answer", sdp: sdp });
+          return new this._win.RTCSessionDescription({ type: "answer", sdp: sdp });
         });
       });
     });
   },
 
   getPermission: function() {
     if (this._havePermission) {
       return this._havePermission;
@@ -1063,27 +1063,27 @@ RTCPeerConnection.prototype = {
   get localDescription() {
     this._checkClosed();
     let sdp = this._impl.localDescription;
     if (sdp.length == 0) {
       return null;
     }
 
     sdp = this._localIdp.addIdentityAttribute(sdp);
-    return new this._win.mozRTCSessionDescription({ type: this._localType,
+    return new this._win.RTCSessionDescription({ type: this._localType,
                                                     sdp: sdp });
   },
 
   get remoteDescription() {
     this._checkClosed();
     let sdp = this._impl.remoteDescription;
     if (sdp.length == 0) {
       return null;
     }
-    return new this._win.mozRTCSessionDescription({ type: this._remoteType,
+    return new this._win.RTCSessionDescription({ type: this._remoteType,
                                                     sdp: sdp });
   },
 
   get peerIdentity() { return this._peerIdentity; },
   get idpLoginUrl() { return this._localIdp.idpLoginUrl; },
   get id() { return this._impl.id; },
   set id(s) { this._impl.id = s; },
   get iceGatheringState()  { return this._iceGatheringState; },
@@ -1262,17 +1262,17 @@ PeerConnectionObserver.prototype = {
   onAddIceCandidateError: function(code, message) {
     this._dompc._onAddIceCandidateError(this.newError(message, code));
   },
 
   onIceCandidate: function(level, mid, candidate) {
     if (candidate == "") {
       this.foundIceCandidate(null);
     } else {
-      this.foundIceCandidate(new this._dompc._win.mozRTCIceCandidate(
+      this.foundIceCandidate(new this._dompc._win.RTCIceCandidate(
           {
               candidate: candidate,
               sdpMid: mid,
               sdpMLineIndex: level
           }
       ));
     }
   },
@@ -1441,17 +1441,17 @@ PeerConnectionObserver.prototype = {
     this.dispatchEvent(new this._dompc._win.RTCDataChannelEvent("datachannel",
                                                                 { channel: channel }));
   }
 };
 
 function RTCPeerConnectionStatic() {
 }
 RTCPeerConnectionStatic.prototype = {
-  classDescription: "mozRTCPeerConnectionStatic",
+  classDescription: "RTCPeerConnectionStatic",
   QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports,
                                          Ci.nsIDOMGlobalPropertyInitializer]),
 
   classID: PC_STATIC_CID,
   contractID: PC_STATIC_CONTRACT,
 
   init: function(win) {
     this._winID = win.QueryInterface(Ci.nsIInterfaceRequestor)
--- a/dom/media/tests/crashtests/791270.html
+++ b/dom/media/tests/crashtests/791270.html
@@ -2,16 +2,16 @@
 <html>
 <!--
 https://bugzilla.mozilla.org/show_bug.cgi?id=791270
 -->
 <head>
   <meta charset="utf-8">
   <title>Simple PeerConnection Video Test</title>
   <script type="application/javascript">
-    var pc = new mozRTCPeerConnection();
+    var pc = new RTCPeerConnection();
     pc.addStream(undefined);
   </script>
 </head>
 
 <body>
 </body>
 </html>
--- a/dom/media/tests/crashtests/791278.html
+++ b/dom/media/tests/crashtests/791278.html
@@ -2,19 +2,19 @@
 <html>
 <!--
 https://bugzilla.mozilla.org/show_bug.cgi?id=791278
 -->
 <head>
   <meta charset="utf-8">
   <title>Simple PeerConnection Video Test - Invalid callback</title>
   <script type="application/javascript">
-    var pc1 = new mozRTCPeerConnection();
+    var pc1 = new RTCPeerConnection();
     pc1.setLocalDescription(function() {});
 
-    var pc2 = new mozRTCPeerConnection();
+    var pc2 = new RTCPeerConnection();
     pc2.setRemoteDescription(function() {});
   </script>
 </head>
 
 <body>
 </body>
 </html>
--- a/dom/media/tests/crashtests/791330.html
+++ b/dom/media/tests/crashtests/791330.html
@@ -7,17 +7,17 @@ https://bugzilla.mozilla.org/show_bug.cg
   <meta charset="utf-8">
   <title>PeerConnection test - operate on closed connection</title>
   <script type="application/javascript">
     function finish() {
       document.documentElement.removeAttribute("class");
     }
 
     function runTest() {
-      var pc = new mozRTCPeerConnection();
+      var pc = new RTCPeerConnection();
       pc.close();
 
       navigator.mozGetUserMedia({audio: true, fake: true}, function (stream) {
         try {
           pc.addStream(stream);
           pc.createOffer(function (offer) {});
         }
         finally {
--- a/dom/media/tests/crashtests/799419.html
+++ b/dom/media/tests/crashtests/799419.html
@@ -7,18 +7,18 @@ https://bugzilla.mozilla.org/show_bug.cg
   <meta charset="utf-8">
   <title>2 Peer Connections Create and Close + Fake Video</title>
   <script type="application/javascript">
     function finish() {
       document.documentElement.removeAttribute("class");
     }
 
     function boom() {
-      var v0 = new mozRTCPeerConnection();
-      var v1 = new mozRTCPeerConnection();
+      var v0 = new RTCPeerConnection();
+      var v1 = new RTCPeerConnection();
       var v2 = document.getElementById("pc1video");
       var v3 = document.getElementById("pc2video");
       navigator.mozGetUserMedia({video:true, fake: true},
         function(stream) {}, function() {});
       v0.close();
       v1.close();
 
       finish();
--- a/dom/media/tests/crashtests/801227.html
+++ b/dom/media/tests/crashtests/801227.html
@@ -2,17 +2,17 @@
 <html class="reftest-wait">
 <!--
 https://bugzilla.mozilla.org/show_bug.cgi?id=801227
 -->
 <head>
   <meta charset="utf-8">
   <title>Abort due to page reload</title>
   <script type="application/javascript">
-    var pc = new mozRTCPeerConnection();
+    var pc = new RTCPeerConnection();
 
     var index = localStorage.index || 0;
     if (index < 3) {
       localStorage.index = index + 1;
       window.location.reload();
     }
 
     function finish() {
--- a/dom/media/tests/crashtests/812785.html
+++ b/dom/media/tests/crashtests/812785.html
@@ -28,18 +28,18 @@ https://bugzilla.mozilla.org/show_bug.cg
     }
 
     function start() {
       localAudio = document.getElementById("local");
       remoteAudio = document.getElementById("remote");
 
       var stream = localAudio.mozCaptureStreamUntilEnded();
 
-      pc1 = new mozRTCPeerConnection();
-      pc2 = new mozRTCPeerConnection();
+      pc1 = new RTCPeerConnection();
+      pc2 = new RTCPeerConnection();
 
       pc1.addStream(stream);
       pc1.createOffer(function (offer) {
         pc1_offer = offer;
         pc1.setLocalDescription(pc1_offer, function () {
           pc2.setRemoteDescription(pc1_offer, function () {
             pc2.createAnswer(function (answer) {
               pc2_answer = answer;
--- a/dom/media/tests/crashtests/822197.html
+++ b/dom/media/tests/crashtests/822197.html
@@ -10,17 +10,17 @@ https://bugzilla.mozilla.org/show_bug.cg
     var pcArray = [];
 
     function finish() {
       document.documentElement.removeAttribute("class");
     }
 
     function start() {
       for(var i = 0; i < 70; i++) {
-        var pc = new mozRTCPeerConnection();
+        var pc = new RTCPeerConnection();
         pc.createOffer(function() {}, function() {});
         pcArray.push(pc);
       }
       finish();
     }
   </script>
 </head>
 
--- a/dom/media/tests/crashtests/834100.html
+++ b/dom/media/tests/crashtests/834100.html
@@ -1,15 +1,15 @@
 <html class="reftest-wait">
   <head>
     <script language="javascript">
 
 function start() {
-  remotePC = new mozRTCPeerConnection();
-  var cand = new mozRTCIceCandidate(
+  remotePC = new RTCPeerConnection();
+  var cand = new RTCIceCandidate(
                 {candidate: "1 1 UDP 1 127.0.0.1 34567 type host",
                  sdpMid: "helloworld",
                  sdbMid: "helloworld", // Mis-spelt attribute for bug 833948 compatibility.
                  sdpMLineIndex: 1
                 });
   try {remotePC.addIceCandidate(cand);} catch(e) {} // bug 842075 - remove try when fixed
   try {remotePC.addIceCandidate(cand, function(sdp){}, finish);} catch(e) {} // bug 842075 - remove try when fixed
   finish();
--- a/dom/media/tests/crashtests/836349.html
+++ b/dom/media/tests/crashtests/836349.html
@@ -4,17 +4,17 @@
 https://bugzilla.mozilla.org/show_bug.cgi?id=836349
 -->
 <head>
   <meta charset="utf-8">
   <title>Bug 836349</title>
   <script type="application/javascript">
     function crash()
     {
-      var pc = new mozRTCPeerConnection();
+      var pc = new RTCPeerConnection();
       var ld = pc.localDescription;
       dump(ld.sdp);
     }
   </script>
 </head>
 
 <body onload="crash();">
 </html>
--- a/dom/media/tests/crashtests/837324.html
+++ b/dom/media/tests/crashtests/837324.html
@@ -7,18 +7,18 @@ https://bugzilla.mozilla.org/show_bug.cg
   <meta charset="utf-8">
   <title>Bug 837324</title>
   <script type="application/javascript">
     function finish() {
       document.documentElement.removeAttribute("class");
     }
 
     function start() {
-      var o0 = new mozRTCPeerConnection();
-      var o1 = new mozRTCIceCandidate({"candidate":"0 -65535 IP 0 stun.sipgate.net 3227326073 type ::ffff:192.0.2.128 host 2302600701","sdpMid":"video 3907077665 RTP/SAVPF 5000","sdpMLineIndex":7});
+      var o0 = new RTCPeerConnection();
+      var o1 = new RTCIceCandidate({"candidate":"0 -65535 IP 0 stun.sipgate.net 3227326073 type ::ffff:192.0.2.128 host 2302600701","sdpMid":"video 3907077665 RTP/SAVPF 5000","sdpMLineIndex":7});
       try {o0.addIceCandidate(o1);} catch(e) {} // bug 842075 - remove try when fixed
 
       finish();
     }
   </script>
 </head>
 
 <body onload="setTimeout(start, 100)">
--- a/dom/media/tests/crashtests/855796.html
+++ b/dom/media/tests/crashtests/855796.html
@@ -44,18 +44,18 @@ https://bugzilla.mozilla.org/show_bug.cg
       pc1.setRemoteDescription(pc2_answer, step6, onFailure);
     }
 
     function step6() {
       stop();
     }
 
     function start() {
-      pc1 = new mozRTCPeerConnection();
-      pc2 = new mozRTCPeerConnection();
+      pc1 = new RTCPeerConnection();
+      pc2 = new RTCPeerConnection();
       navigator.mozGetUserMedia({audio:true, video:true, fake:true}, function(s) {
           pc1.addStream(s);
           navigator.mozGetUserMedia({audio:true, video:true, fake:true}, function(s) {
             pc2.addStream(s);
             pc1.createOffer(step1, onFailure);
         }, onFailure);
       }, onFailure);
     }
--- a/dom/media/tests/crashtests/860143.html
+++ b/dom/media/tests/crashtests/860143.html
@@ -3,17 +3,17 @@
 <!--
 https://bugzilla.mozilla.org/show_bug.cgi?id=860143
 -->
 <head>
   <meta charset="utf-8">
   <title>bug 860143</title>
   <script type="application/javascript">
     function start() {
-      var o0 = new window.mozRTCPeerConnection({
+      var o0 = new window.RTCPeerConnection({
         iceServers: [
           {
             url: "turn:AAAAAAAAAAAAAAAAA        AAAAAAAAAAA  AAAAAAAAAAAAA AA AAAAA        AAAAAAAAAAA  AAAAAAAAAAAAAAAA AAAAA        AAAAAAAAAA, AAAAAAAAAAAAAAAA        AAA    AAAAAAAAAAAAAAA"
           }
         ]
       });
       o0.close();
     }
--- a/dom/media/tests/crashtests/861958.html
+++ b/dom/media/tests/crashtests/861958.html
@@ -3,17 +3,17 @@
 <!--
 https://bugzilla.mozilla.org/show_bug.cgi?id=861958
 -->
 <head>
   <meta charset="utf-8">
   <title>bug 861958</title>
   <script type="application/javascript">
     function start() {
-      var o0 = new window.mozRTCPeerConnection();
+      var o0 = new window.RTCPeerConnection();
       var o1 = o0.createDataChannel("foo", {
           "protocol": "text/char",
           "preset": false,
           "stream": 512
       });
       o0.close();
     }
   </script>
--- a/dom/media/tests/crashtests/863929.html
+++ b/dom/media/tests/crashtests/863929.html
@@ -44,18 +44,18 @@ https://bugzilla.mozilla.org/show_bug.cg
       pc1.setRemoteDescription(pc2_answer, step6, onFailure);
     }
 
     function step6() {
       stop();
     }
 
     function start() {
-      pc1 = new mozRTCPeerConnection();
-      pc2 = new mozRTCPeerConnection();
+      pc1 = new RTCPeerConnection();
+      pc2 = new RTCPeerConnection();
       navigator.mozGetUserMedia({audio:true, video:true, fake:true}, function(s) {
         pc1.addStream(s);
           navigator.mozGetUserMedia({audio:true, video:true, fake:true}, function(s) {
             pc2.addStream(s);
             pc1.createOffer(step1, onFailure);
         }, onFailure);
       }, onFailure);
     }
--- a/dom/media/tests/mochitest/identity/test_fingerprints.html
+++ b/dom/media/tests/mochitest/identity/test_fingerprints.html
@@ -46,19 +46,19 @@ function fingerprintSdp(fingerprints) {
                                 ' ' + fp.digest + '\n').join('');
 }
 
 // Firefox only uses a single fingerprint.
 // That doesn't mean we have it create SDP that describes two.
 // This function synthesizes that SDP and tries to set it.
 function testMultipleFingerprints() {
   // this one fails setRemoteDescription if the identity is not good
-  var pcStrict = new mozRTCPeerConnection({ peerIdentity: 'someone@example.com'});
+  var pcStrict = new RTCPeerConnection({ peerIdentity: 'someone@example.com'});
   // this one will be manually tweaked to have two fingerprints
-  var pcDouble = new mozRTCPeerConnection({});
+  var pcDouble = new RTCPeerConnection({});
 
   var offer, match, fingerprints;
 
   var fail = msg =>
       (e => ok(false, 'error in ' + msg + ': ' +
                (e.message ? (e.message + '\n' + e.stack) : e)));
 
   navigator.mediaDevices.getUserMedia({ audio: true, fake: true })
@@ -81,17 +81,17 @@ function testMultipleFingerprints() {
     .then(assertion => {
       ok(assertion, 'Should have assertion');
 
       var sdp = offer.sdp.slice(0, match.index) +
           'a=identity:' + assertion + '\n' +
           fingerprintSdp(fingerprints.slice(1)) +
           offer.sdp.slice(match.index);
 
-      var desc = new mozRTCSessionDescription({ type: 'offer', sdp: sdp });
+      var desc = new RTCSessionDescription({ type: 'offer', sdp: sdp });
       return pcStrict.setRemoteDescription(desc);
     })
     .then(() => {
       ok(true, 'Modified fingerprints were accepted');
     }, error => {
       var e = SpecialPowers.wrap(error);
       ok(false, 'error in test: ' +
          (e.message ? (e.message + '\n' + e.stack) : e));
--- a/dom/media/tests/mochitest/pc.js
+++ b/dom/media/tests/mochitest/pc.js
@@ -277,43 +277,43 @@ PeerConnectionTest.prototype.createDataC
  * and automatically handles the failure case.
  *
  * @param {PeerConnectionWrapper} peer
  *        The peer connection wrapper to run the command on
  */
 PeerConnectionTest.prototype.createAnswer = function(peer) {
   return peer.createAnswer().then(answer => {
     // make a copy so this does not get updated with ICE candidates
-    this.originalAnswer = new mozRTCSessionDescription(JSON.parse(JSON.stringify(answer)));
+    this.originalAnswer = new RTCSessionDescription(JSON.parse(JSON.stringify(answer)));
     return answer;
   });
 };
 
 /**
  * Creates an offer for the specified peer connection instance
  * and automatically handles the failure case.
  *
  * @param {PeerConnectionWrapper} peer
  *        The peer connection wrapper to run the command on
  */
 PeerConnectionTest.prototype.createOffer = function(peer) {
   return peer.createOffer().then(offer => {
     // make a copy so this does not get updated with ICE candidates
-    this.originalOffer = new mozRTCSessionDescription(JSON.parse(JSON.stringify(offer)));
+    this.originalOffer = new RTCSessionDescription(JSON.parse(JSON.stringify(offer)));
     return offer;
   });
 };
 
 /**
  * Sets the local description for the specified peer connection instance
  * and automatically handles the failure case.
  *
  * @param {PeerConnectionWrapper} peer
           The peer connection wrapper to run the command on
- * @param {mozRTCSessionDescription} desc
+ * @param {RTCSessionDescription} desc
  *        Session description for the local description request
  */
 PeerConnectionTest.prototype.setLocalDescription =
 function(peer, desc, stateExpected) {
   var eventFired = new Promise(resolve => {
     peer.onsignalingstatechange = e => {
       info(peer + ": 'signalingstatechange' event received");
       var state = e.target.signalingState;
@@ -364,17 +364,17 @@ PeerConnectionTest.prototype.setOfferOpt
 };
 
 /**
  * Sets the remote description for the specified peer connection instance
  * and automatically handles the failure case.
  *
  * @param {PeerConnectionWrapper} peer
           The peer connection wrapper to run the command on
- * @param {mozRTCSessionDescription} desc
+ * @param {RTCSessionDescription} desc
  *        Session description for the remote description request
  */
 PeerConnectionTest.prototype.setRemoteDescription =
 function(peer, desc, stateExpected) {
   var eventFired = new Promise(resolve => {
     peer.onsignalingstatechange = e => {
       info(peer + ": 'signalingstatechange' event received");
       var state = e.target.signalingState;
@@ -678,17 +678,17 @@ function PeerConnectionWrapper(label, co
 
   this.disableRtpCountChecking = false;
 
   this.iceCheckingRestartExpected = false;
 
   this.h264 = typeof h264 !== "undefined" ? true : false;
 
   info("Creating " + this);
-  this._pc = new mozRTCPeerConnection(this.configuration);
+  this._pc = new RTCPeerConnection(this.configuration);
 
   /**
    * Setup callback handlers
    */
   // This allows test to register their own callbacks for ICE connection state changes
   this.ice_connection_callbacks = {};
 
   this._pc.oniceconnectionstatechange = e => {
@@ -936,48 +936,48 @@ PeerConnectionWrapper.prototype = {
       return answer;
     });
   },
 
   /**
    * Sets the local description and automatically handles the failure case.
    *
    * @param {object} desc
-   *        mozRTCSessionDescription for the local description request
+   *        RTCSessionDescription for the local description request
    */
   setLocalDescription : function(desc) {
     this.observedNegotiationNeeded = undefined;
     return this._pc.setLocalDescription(desc).then(() => {
       info(this + ": Successfully set the local description");
     });
   },
 
   /**
    * Tries to set the local description and expect failure. Automatically
    * causes the test case to fail if the call succeeds.
    *
    * @param {object} desc
-   *        mozRTCSessionDescription for the local description request
+   *        RTCSessionDescription for the local description request
    * @returns {Promise}
    *        A promise that resolves to the expected error
    */
   setLocalDescriptionAndFail : function(desc) {
     return this._pc.setLocalDescription(desc).then(
       generateErrorCallback("setLocalDescription should have failed."),
       err => {
         info(this + ": As expected, failed to set the local description");
         return err;
       });
   },
 
   /**
    * Sets the remote description and automatically handles the failure case.
    *
    * @param {object} desc
-   *        mozRTCSessionDescription for the remote description request
+   *        RTCSessionDescription for the remote description request
    */
   setRemoteDescription : function(desc) {
     this.observedNegotiationNeeded = undefined;
     return this._pc.setRemoteDescription(desc).then(() => {
       info(this + ": Successfully set remote description");
       if (desc.type == "rollback") {
         this.holdIceCandidates = new Promise(r => this.releaseIceCandidates = r);
 
@@ -987,17 +987,17 @@ PeerConnectionWrapper.prototype = {
     });
   },
 
   /**
    * Tries to set the remote description and expect failure. Automatically
    * causes the test case to fail if the call succeeds.
    *
    * @param {object} desc
-   *        mozRTCSessionDescription for the remote description request
+   *        RTCSessionDescription for the remote description request
    * @returns {Promise}
    *        a promise that resolve to the returned error
    */
   setRemoteDescriptionAndFail : function(desc) {
     return this._pc.setRemoteDescription(desc).then(
       generateErrorCallback("setRemoteDescription should have failed."),
       err => {
         info(this + ": As expected, failed to set the remote description");
@@ -1088,17 +1088,17 @@ PeerConnectionWrapper.prototype = {
     });
   },
 
   /**
    * Either adds a given ICE candidate right away or stores it to be added
    * later, depending on the state of the PeerConnection.
    *
    * @param {object} candidate
-   *        The mozRTCIceCandidate to be added or stored
+   *        The RTCIceCandidate to be added or stored
    */
   storeOrAddIceCandidate : function(candidate) {
     this._remote_ice_candidates.push(candidate);
     if (this.signalingState === 'closed') {
       info("Received ICE candidate for closed PeerConnection - discarding");
       return;
     }
     this.holdIceCandidates.then(() => {
--- a/dom/media/tests/mochitest/templates.js
+++ b/dom/media/tests/mochitest/templates.js
@@ -136,17 +136,17 @@ var checkAllTrackStats = pc => {
 // Commands run once at the beginning of each test, even when performing a
 // renegotiation test.
 var commandsPeerConnectionInitial = [
   function PC_SETUP_SIGNALING_CLIENT(test) {
     if (test.steeplechase) {
       test.setupSignalingClient();
       test.registerSignalingCallback("ice_candidate", function (message) {
         var pc = test.pcRemote ? test.pcRemote : test.pcLocal;
-        pc.storeOrAddIceCandidate(new mozRTCIceCandidate(message.ice_candidate));
+        pc.storeOrAddIceCandidate(new RTCIceCandidate(message.ice_candidate));
       });
       test.registerSignalingCallback("end_of_trickle_ice", function (message) {
         test.signalingMessagesFinished();
       });
     }
   },
 
   function PC_LOCAL_SETUP_ICE_LOGGER(test) {
@@ -296,17 +296,17 @@ var commandsPeerConnectionOfferAnswer = 
       test._local_offer = test.originalOffer;
       test._offer_constraints = test.pcLocal.constraints;
       test._offer_options = test.pcLocal.offerOptions;
       return Promise.resolve();
     }
     return test.getSignalingMessage("offer")
       .then(message => {
         ok("offer" in message, "Got an offer message");
-        test._local_offer = new mozRTCSessionDescription(message.offer);
+        test._local_offer = new RTCSessionDescription(message.offer);
         test._offer_constraints = message.offer_constraints;
         test._offer_options = message.offer_options;
       });
   },
 
   function PC_REMOTE_SET_REMOTE_DESCRIPTION(test) {
     return test.setRemoteDescription(test.pcRemote, test._local_offer, HAVE_REMOTE_OFFER)
       .then(() => {
@@ -394,17 +394,17 @@ var commandsPeerConnectionOfferAnswer = 
     if (!test.steeplechase) {
       test._remote_answer = test.originalAnswer;
       test._answer_constraints = test.pcRemote.constraints;
       return Promise.resolve();
     }
 
     return test.getSignalingMessage("answer").then(message => {
       ok("answer" in message, "Got an answer message");
-      test._remote_answer = new mozRTCSessionDescription(message.answer);
+      test._remote_answer = new RTCSessionDescription(message.answer);
       test._answer_constraints = message.answer_constraints;
     });
   },
 
   function PC_LOCAL_SET_REMOTE_DESCRIPTION(test) {
     return test.setRemoteDescription(test.pcLocal, test._remote_answer, STABLE)
       .then(() => {
         is(test.pcLocal.signalingState, STABLE,
--- a/dom/media/tests/mochitest/test_dataChannel_noOffer.html
+++ b/dom/media/tests/mochitest/test_dataChannel_noOffer.html
@@ -7,17 +7,17 @@
 <pre id="test">
 <script type="application/javascript">
   createHTML({
     bug: "856319",
     title: "Don't offer m=application unless createDataChannel is called first"
   });
 
   runNetworkTest(function () {
-    var pc = new mozRTCPeerConnection();
+    var pc = new RTCPeerConnection();
 
     // necessary to circumvent bug 864109
     var options = { offerToReceiveAudio: true };
 
     pc.createOffer(options).then(offer => {
       ok(!offer.sdp.includes("m=application"),
         "m=application is not contained in the SDP");
 
--- a/dom/media/tests/mochitest/test_peerConnection_addIceCandidate.html
+++ b/dom/media/tests/mochitest/test_peerConnection_addIceCandidate.html
@@ -14,64 +14,64 @@
   var test;
   runNetworkTest(function () {
     test = new PeerConnectionTest();
     test.setMediaConstraints([{audio: true}], [{audio: true}]);
     test.chain.removeAfter("PC_LOCAL_GET_ANSWER");
 
     test.chain.insertAfter("PC_LOCAL_SET_LOCAL_DESCRIPTION", [
       function PC_LOCAL_ADD_CANDIDATE_EARLY(test) {
-        var candidate = new mozRTCIceCandidate(
+        var candidate = new RTCIceCandidate(
           {candidate:"candidate:1 1 UDP 2130706431 192.168.2.1 50005 typ host",
            sdpMLineIndex: 0});
         return test.pcLocal._pc.addIceCandidate(candidate).then(
           generateErrorCallback("addIceCandidate should have failed."),
           err => {
             is(err.name, "InvalidStateError", "Error is InvalidStateError");
           });
         }
     ]);
     test.chain.insertAfter("PC_REMOTE_SET_LOCAL_DESCRIPTION", [
       function PC_REMOTE_ADD_CANDIDATE_INVALID_INDEX(test) {
-        var invalid_index = new mozRTCIceCandidate(
+        var invalid_index = new RTCIceCandidate(
           {candidate:"candidate:1 1 UDP 2130706431 192.168.2.1 50005 typ host",
            sdpMLineIndex: 2});
         return test.pcRemote._pc.addIceCandidate(invalid_index)
         .then(
           generateErrorCallback("addIceCandidate should have failed."),
           err => {
             is(err.name, "InvalidCandidateError", "Error is InvalidCandidateError");
           }
         );
       },
       function PC_REMOTE_ADD_BOGUS_CANDIDATE(test) {
-        var bogus = new mozRTCIceCandidate(
+        var bogus = new RTCIceCandidate(
           {candidate:"Pony Lords, jump!",
            sdpMLineIndex: 0});
         return test.pcRemote._pc.addIceCandidate(bogus)
         .then(
           generateErrorCallback("addIceCandidate should have failed."),
           err => {
             is(err.name, "InvalidCandidateError", "Error is InvalidCandidateError");
           }
         );
       },
       function PC_REMOTE_ADD_CANDIDATE_MISSING_INDEX(test) {
         // Note: it is probably not a good idea to automatically fill a missing
         //       MLineIndex with a default value of zero, see bug 1157034
-        var broken = new mozRTCIceCandidate(
+        var broken = new RTCIceCandidate(
           {candidate:"candidate:1 1 UDP 2130706431 192.168.2.1 50005 typ host"});
         return test.pcRemote._pc.addIceCandidate(broken)
         .then(
           // FIXME this needs to be updated once bug 1157034 is fixed
           todo(false, "Missing index in got automatically set to a valid value bz://1157034")
         );
       },
       function PC_REMOTE_ADD_VALID_CANDIDATE(test) {
-        var candidate = new mozRTCIceCandidate(
+        var candidate = new RTCIceCandidate(
           {candidate:"candidate:1 1 UDP 2130706431 192.168.2.1 50005 typ host",
            sdpMLineIndex: 0});
         return test.pcRemote._pc.addIceCandidate(candidate)
         .then(ok(true, "Successfully added valid ICE candidate"));
       }
     ]);
     test.run();
   });
--- a/dom/media/tests/mochitest/test_peerConnection_bug822674.html
+++ b/dom/media/tests/mochitest/test_peerConnection_bug822674.html
@@ -3,21 +3,21 @@
 <head>
   <script type="application/javascript" src="pc.js"></script>
 </head>
 <body>
 <pre id="test">
 <script type="application/javascript">
   createHTML({
     bug: "822674",
-    title: "mozRTCPeerConnection isn't a true javascript object as it should be"
+    title: "RTCPeerConnection isn't a true javascript object as it should be"
   });
 
   runNetworkTest(function () {
-    var pc = new mozRTCPeerConnection();
+    var pc = new RTCPeerConnection();
 
     pc.thereIsNeverGoingToBeAPropertyWithThisNameOnThisInterface = 1;
     is(pc.thereIsNeverGoingToBeAPropertyWithThisNameOnThisInterface, 1,
        "Can set expandos on an RTCPeerConnection");
 
     pc = null;
     networkTestFinished();
   });
--- a/dom/media/tests/mochitest/test_peerConnection_bug825703.html
+++ b/dom/media/tests/mochitest/test_peerConnection_bug825703.html
@@ -9,34 +9,34 @@
   createHTML({
     bug: "825703",
     title: "RTCConfiguration valid/invalid permutations"
   });
 
 var makePC = (config, expected_error) => {
   var exception;
   try {
-    new mozRTCPeerConnection(config).close();
+    new RTCPeerConnection(config).close();
   } catch (e) {
     exception = e;
   }
   is((exception? exception.name : "success"), expected_error || "success",
-     "mozRTCPeerConnection(" + JSON.stringify(config) + ")");
+     "RTCPeerConnection(" + JSON.stringify(config) + ")");
 };
 
 // This is a test of the iceServers parsing code + readable errors
 runNetworkTest(() => {
   var exception = null;
 
   try {
-    new mozRTCPeerConnection().close();
+    new RTCPeerConnection().close();
   } catch (e) {
     exception = e;
   }
-  ok(!exception, "mozRTCPeerConnection() succeeds");
+  ok(!exception, "RTCPeerConnection() succeeds");
   exception = null;
 
   makePC();
 
   makePC(1, "TypeError");
 
   makePC({});
 
@@ -61,24 +61,24 @@ runNetworkTest(() => {
 
   makePC({ iceServers: [{ urls:"turns:localhost:3478", username:"p" }] }, "InvalidAccessError");
 
   makePC({ iceServers: [{ url:"turns:localhost:3478", credential:"p" }] }, "InvalidAccessError");
 
   makePC({ iceServers: [{ urls:"http:0.0.0.0" }] }, "SyntaxError");
 
   try {
-    new mozRTCPeerConnection({ iceServers: [{ url:"http:0.0.0.0" }] }).close();
+    new RTCPeerConnection({ iceServers: [{ url:"http:0.0.0.0" }] }).close();
   } catch (e) {
     ok(e.message.indexOf("http") > 0,
-       "mozRTCPeerConnection() constructor has readable exceptions");
+       "RTCPeerConnection() constructor has readable exceptions");
   }
 
   // Below tests are setting the about:config User preferences for default
-  // ice servers and checking the outputs when mozRTCPeerConnection() is
+  // ice servers and checking the outputs when RTCPeerConnection() is
   // invoked. See Bug 1167922 for more information.
   // Note - We use promises here since the SpecialPowers API will be
   // performed asynchronously.
   var push = prefs => new Promise(resolve =>
       SpecialPowers.pushPrefEnv(prefs, resolve));
 
   push({ set: [['media.peerconnection.default_iceservers', ""]] })
       .then(() => makePC())
--- a/dom/media/tests/mochitest/test_peerConnection_bug834153.html
+++ b/dom/media/tests/mochitest/test_peerConnection_bug834153.html
@@ -7,18 +7,18 @@
 <pre id="test">
 <script type="application/javascript">
   createHTML({
     bug: "834153",
     title: "Queue CreateAnswer in PeerConnection.js"
   });
 
   runNetworkTest(function () {
-    var pc1 = new mozRTCPeerConnection();
-    var pc2 = new mozRTCPeerConnection();
+    var pc1 = new RTCPeerConnection();
+    var pc2 = new RTCPeerConnection();
 
     pc1.createOffer({ offerToReceiveAudio: true }).then(offer => {
       // The whole point of this test is not to wait for the
       // setRemoteDescription call to succesfully complete, so we
       // don't wait for it to succeed.
       pc2.setRemoteDescription(offer);
       return pc2.createAnswer();
     })
--- a/dom/media/tests/mochitest/test_peerConnection_callbacks.html
+++ b/dom/media/tests/mochitest/test_peerConnection_callbacks.html
@@ -22,18 +22,18 @@ function pcall(o, f, beforeArg) {
     if (typeof beforeArg !== 'undefined') {
       args.unshift(beforeArg);
     }
     info('Calling ' + f.name);
     f.apply(o, args);
   });
 }
 
-var pc1 = new mozRTCPeerConnection();
-var pc2 = new mozRTCPeerConnection();
+var pc1 = new RTCPeerConnection();
+var pc2 = new RTCPeerConnection();
 
 var pc2_haveRemoteOffer = new Promise(resolve => {
   pc2.onsignalingstatechange =
     e => (e.target.signalingState == "have-remote-offer") && resolve();
 });
 var pc1_stable = new Promise(resolve => {
   pc1.onsignalingstatechange =
     e => (e.target.signalingState == "stable") && resolve();
--- a/dom/media/tests/mochitest/test_peerConnection_certificates.html
+++ b/dom/media/tests/mochitest/test_peerConnection_certificates.html
@@ -7,17 +7,17 @@
 <pre id="test">
 <script type="application/javascript">
   createHTML({
     bug: "1172785",
     title: "Certificate management"
   });
 
   function badCertificate(config, expectedError, message) {
-    return mozRTCPeerConnection.generateCertificate(config)
+    return RTCPeerConnection.generateCertificate(config)
       .then(() => ok(false, message),
             e => is(e.name, expectedError, message));
   }
 
   // Checks a handful of obviously bad options to RTCCertificate.create().  Most
   // of the checking is done by the WebCrypto code underpinning this, hence the
   // baffling error codes, but a sanity check is still in order.
   function checkBadParameters() {
@@ -89,17 +89,17 @@
         });
     });
   }
 
   var test;
   runNetworkTest(function (options) {
     var expiredCert;
     return Promise.resolve()
-      .then(() => mozRTCPeerConnection.generateCertificate({
+      .then(() => RTCPeerConnection.generateCertificate({
         name: "ECDSA",
         namedCurve: "P-256",
         expires: 1 // smallest possible expiration window
       }))
       .then(cert => {
         ok(cert.expires instanceof Date, 'cert has expiration time');
         info('Expires at ' + cert.expires);
         expiredCert = cert;
@@ -112,42 +112,42 @@
         // Hopefully this delay is never needed.
         if (delay > 0) {
           return new Promise(r => setTimeout(r, delay));
         }
       })
       .then(() => {
         ok(expiredCert.expires <= Date.now(), 'Cert should be at or past expiration');
         try {
-          new mozRTCPeerConnection({ certificates: [expiredCert] });
+          new RTCPeerConnection({ certificates: [expiredCert] });
           ok(false, 'Constructing peer connection with an expired cert is not allowed');
         } catch(e) {
           is(e.name, 'InvalidParameterError',
              'Constructing peer connection with an expired certs is not allowed');
         }
       })
 
       .then(() => Promise.all([
-        mozRTCPeerConnection.generateCertificate({
+        RTCPeerConnection.generateCertificate({
           name: "ECDSA",
           namedCurve: "P-256"
         }),
-        mozRTCPeerConnection.generateCertificate({
+        RTCPeerConnection.generateCertificate({
           name: "RSASSA-PKCS1-v1_5",
           hash: "SHA-256",
           modulusLength: 2048,
           publicExponent: new Uint8Array([1, 0, 1])
         })
       ]))
 
     // A round trip through indexedDB should not do anything.
       .then(storeAndRetrieve)
       .then(certs => {
         try {
-          new mozRTCPeerConnection({ certificates: certs });
+          new RTCPeerConnection({ certificates: certs });
           ok(false, 'Constructing peer connection with multiple certs is not allowed');
         } catch(e) {
           is(e.name, 'NotSupportedError',
              'Constructing peer connection with multiple certs is not allowed');
         }
         return certs;
       })
       .then(certs => {
--- a/dom/media/tests/mochitest/test_peerConnection_close.html
+++ b/dom/media/tests/mochitest/test_peerConnection_close.html
@@ -7,17 +7,17 @@
 <pre id="test">
 <script type="application/javascript">
   createHTML({
     bug: "991877",
     title: "Basic RTCPeerConnection.close() tests"
   });
 
   runNetworkTest(function () {
-    var pc = new mozRTCPeerConnection();
+    var pc = new RTCPeerConnection();
     var exception = null;
     var eTimeout = null;
 
     // everything should be in initial state
     is(pc.signalingState, "stable", "Initial signalingState is 'stable'");
     is(pc.iceConnectionState, "new", "Initial iceConnectionState is 'new'");
     is(pc.iceGatheringState, "new", "Initial iceGatheringState is 'new'");
 
@@ -52,19 +52,19 @@
       // - setLocalDescription
       // - setRemoteDescription
       // - addIceCandidate
       // - getStats
       //
       // These legacy methods fire the error callback instead. This is not
       // entirely to spec but is better than ignoring programming errors.
 
-      var offer = new mozRTCSessionDescription({ sdp: "sdp", type: "offer" });
-      var answer = new mozRTCSessionDescription({ sdp: "sdp", type: "answer" });
-      var candidate = new mozRTCIceCandidate({ candidate: "dummy",
+      var offer = new RTCSessionDescription({ sdp: "sdp", type: "offer" });
+      var answer = new RTCSessionDescription({ sdp: "sdp", type: "answer" });
+      var candidate = new RTCIceCandidate({ candidate: "dummy",
                                                sdpMid: "test",
                                                sdpMLineIndex: 3 });
 
       var doesFail = (p, msg) => p.then(generateErrorCallback(),
                                         r => is(r.name, "InvalidStateError", msg));
 
       doesFail(pc.createOffer(), "createOffer fails on close")
       .then(() => doesFail(pc.createAnswer(), "createAnswer fails on close"))
--- a/dom/media/tests/mochitest/test_peerConnection_closeDuringIce.html
+++ b/dom/media/tests/mochitest/test_peerConnection_closeDuringIce.html
@@ -16,22 +16,22 @@
 
 function PC_LOCAL_SETUP_NULL_ICE_HANDLER(test) {
   test.pcLocal.setupIceCandidateHandler(test, function() {}, function () {});
 }
 function PC_REMOTE_SETUP_NULL_ICE_HANDLER(test) {
   test.pcRemote.setupIceCandidateHandler(test, function() {}, function () {});
 }
 function PC_REMOTE_ADD_FAKE_ICE_CANDIDATE(test) {
-  var cand = new mozRTCIceCandidate({"candidate":"candidate:0 1 UDP 2130379007 192.0.2.1 12345 typ host","sdpMid":"","sdpMLineIndex":0});
+  var cand = new RTCIceCandidate({"candidate":"candidate:0 1 UDP 2130379007 192.0.2.1 12345 typ host","sdpMid":"","sdpMLineIndex":0});
   test.pcRemote.storeOrAddIceCandidate(cand);
   info(test.pcRemote + " Stored fake candidate: " + JSON.stringify(cand));
 }
 function PC_LOCAL_ADD_FAKE_ICE_CANDIDATE(test) {
-  var cand = new mozRTCIceCandidate({"candidate":"candidate:0 1 UDP 2130379007 192.0.2.2 56789 typ host","sdpMid":"","sdpMLineIndex":0});
+  var cand = new RTCIceCandidate({"candidate":"candidate:0 1 UDP 2130379007 192.0.2.2 56789 typ host","sdpMid":"","sdpMLineIndex":0});
     test.pcLocal.storeOrAddIceCandidate(cand);
   info(test.pcLocal + " Stored fake candidate: " + JSON.stringify(cand));
 }
 function PC_LOCAL_CLOSE_DURING_ICE(test) {
   return test.pcLocal.iceChecking.then(() => {
     test.pcLocal.onsignalingstatechange = function () {};
     test.pcLocal.close();
     });
--- a/dom/media/tests/mochitest/test_peerConnection_errorCallbacks.html
+++ b/dom/media/tests/mochitest/test_peerConnection_errorCallbacks.html
@@ -12,36 +12,36 @@
   });
 
   function validateReason(reason) {
     ok(reason.name.length, "Reason name = " + reason.name);
     ok(reason.message.length, "Reason message = " + reason.message);
   };
 
   function testCreateAnswerError() {
-    var pc = new mozRTCPeerConnection();
+    var pc = new RTCPeerConnection();
     info ("Testing createAnswer error");
     return pc.createAnswer()
     .then(generateErrorCallback("createAnswer before offer should fail"),
           validateReason);
   };
 
   function testSetLocalDescriptionError() {
-    var pc = new mozRTCPeerConnection();
+    var pc = new RTCPeerConnection();
     info ("Testing setLocalDescription error");
-    return pc.setLocalDescription(new mozRTCSessionDescription({ sdp: "Picklechips!",
+    return pc.setLocalDescription(new RTCSessionDescription({ sdp: "Picklechips!",
                                                                  type: "offer" }))
     .then(generateErrorCallback("setLocalDescription with nonsense SDP should fail"),
           validateReason);
   };
 
   function testSetRemoteDescriptionError() {
-    var pc = new mozRTCPeerConnection();
+    var pc = new RTCPeerConnection();
     info ("Testing setRemoteDescription error");
-    return pc.setRemoteDescription(new mozRTCSessionDescription({ sdp: "Who?",
+    return pc.setRemoteDescription(new RTCSessionDescription({ sdp: "Who?",
                                                                   type: "offer" }))
     .then(generateErrorCallback("setRemoteDescription with nonsense SDP should fail"),
           validateReason);
   };
 
   // No test for createOffer errors -- there's nothing we can do at this
   // level to evoke an error in createOffer.
 
--- a/dom/media/tests/mochitest/test_peerConnection_iceFailure.html
+++ b/dom/media/tests/mochitest/test_peerConnection_iceFailure.html
@@ -15,22 +15,22 @@
 
 function PC_LOCAL_SETUP_NULL_ICE_HANDLER(test) {
   test.pcLocal.setupIceCandidateHandler(test, function() {}, function () {});
 }
 function PC_REMOTE_SETUP_NULL_ICE_HANDLER(test) {
   test.pcRemote.setupIceCandidateHandler(test, function() {}, function () {});
 }
 function PC_REMOTE_ADD_FAKE_ICE_CANDIDATE(test) {
-  var cand = new mozRTCIceCandidate({"candidate":"candidate:0 1 UDP 2130379007 192.0.2.1 12345 typ host","sdpMid":"","sdpMLineIndex":0});
+  var cand = new RTCIceCandidate({"candidate":"candidate:0 1 UDP 2130379007 192.0.2.1 12345 typ host","sdpMid":"","sdpMLineIndex":0});
   test.pcRemote.storeOrAddIceCandidate(cand);
   info(test.pcRemote + " Stored fake candidate: " + JSON.stringify(cand));
 }
 function PC_LOCAL_ADD_FAKE_ICE_CANDIDATE(test) {
-  var cand = new mozRTCIceCandidate({"candidate":"candidate:0 1 UDP 2130379007 192.0.2.2 56789 typ host","sdpMid":"","sdpMLineIndex":0});
+  var cand = new RTCIceCandidate({"candidate":"candidate:0 1 UDP 2130379007 192.0.2.2 56789 typ host","sdpMid":"","sdpMLineIndex":0});
     test.pcLocal.storeOrAddIceCandidate(cand);
   info(test.pcLocal + " Stored fake candidate: " + JSON.stringify(cand));
 }
 function PC_LOCAL_WAIT_FOR_ICE_FAILURE(test) {
   return test.pcLocal.iceFailed.then(() => {
     ok(true, this.pcLocal + " Ice Failure Reached.");
 	});
 }
--- a/dom/media/tests/mochitest/test_peerConnection_localReofferRollback.html
+++ b/dom/media/tests/mochitest/test_peerConnection_localReofferRollback.html
@@ -34,17 +34,17 @@
           return test.createOffer(test.pcRemote).then(offer => {
             return test.setLocalDescription(test.pcRemote, offer, HAVE_LOCAL_OFFER);
           });
         },
 
         function PC_REMOTE_ROLLBACK(test) {
           return test.setLocalDescription(
               test.pcRemote,
-              new mozRTCSessionDescription({ type: "rollback", sdp: ""}),
+              new RTCSessionDescription({ type: "rollback", sdp: ""}),
               STABLE);
         },
 
         // Rolling back should shut down gathering
         function PC_REMOTE_WAIT_FOR_END_OF_TRICKLE(test) {
           return test.pcRemote.endOfTrickleIce;
         },
     ]);
--- a/dom/media/tests/mochitest/test_peerConnection_localRollback.html
+++ b/dom/media/tests/mochitest/test_peerConnection_localRollback.html
@@ -20,17 +20,17 @@
           return test.createOffer(test.pcRemote).then(offer => {
             return test.setLocalDescription(test.pcRemote, offer, HAVE_LOCAL_OFFER);
           });
         },
 
         function PC_REMOTE_ROLLBACK(test) {
           return test.setLocalDescription(
               test.pcRemote,
-              new mozRTCSessionDescription({ type: "rollback", sdp: ""}),
+              new RTCSessionDescription({ type: "rollback", sdp: ""}),
               STABLE);
         },
 
         // Rolling back should shut down gathering
         function PC_REMOTE_WAIT_FOR_END_OF_TRICKLE(test) {
           return test.pcRemote.endOfTrickleIce;
         },
 
--- a/dom/media/tests/mochitest/test_peerConnection_promiseSendOnly.html
+++ b/dom/media/tests/mochitest/test_peerConnection_promiseSendOnly.html
@@ -7,18 +7,18 @@
 <pre id="test">
 <script type="application/javascript;version=1.8">
   createHTML({
     bug: "1091898",
     title: "PeerConnection with promises (sendonly)",
     visible: true
   });
 
-  var pc1 = new mozRTCPeerConnection();
-  var pc2 = new mozRTCPeerConnection();
+  var pc1 = new RTCPeerConnection();
+  var pc2 = new RTCPeerConnection();
 
   var pc2_haveRemoteOffer = new Promise(resolve => pc2.onsignalingstatechange =
     e => (e.target.signalingState == "have-remote-offer") && resolve());
   var pc1_stable = new Promise(resolve => pc1.onsignalingstatechange =
     e => (e.target.signalingState == "stable") && resolve());
 
   pc1.onicecandidate = e => pc2_haveRemoteOffer.then(() => !e.candidate ||
     pc2.addIceCandidate(e.candidate)).catch(generateErrorCallback());
--- a/dom/media/tests/mochitest/test_peerConnection_remoteReofferRollback.html
+++ b/dom/media/tests/mochitest/test_peerConnection_remoteReofferRollback.html
@@ -32,24 +32,24 @@
               send_message({"type": "end_of_trickle_ice"});
             });
           }
         },
 
         function PC_REMOTE_ROLLBACK(test) {
           return test.setRemoteDescription(
               test.pcRemote,
-              new mozRTCSessionDescription({ type: "rollback" }),
+              new RTCSessionDescription({ type: "rollback" }),
               STABLE);
         },
 
         function PC_LOCAL_ROLLBACK(test) {
           return test.setLocalDescription(
               test.pcLocal,
-              new mozRTCSessionDescription({ type: "rollback", sdp: ""}),
+              new RTCSessionDescription({ type: "rollback", sdp: ""}),
               STABLE);
         },
 
         // Rolling back should shut down gathering
         function PC_LOCAL_WAIT_FOR_END_OF_TRICKLE(test) {
           return test.pcLocal.endOfTrickleIce;
         },
       ],
--- a/dom/media/tests/mochitest/test_peerConnection_remoteRollback.html
+++ b/dom/media/tests/mochitest/test_peerConnection_remoteRollback.html
@@ -15,24 +15,24 @@
   runNetworkTest(function (options) {
     test = new PeerConnectionTest(options);
     test.setMediaConstraints([{audio: true}], [{audio: true}]);
     test.chain.removeAfter('PC_REMOTE_SET_REMOTE_DESCRIPTION');
     test.chain.append([
         function PC_REMOTE_ROLLBACK(test) {
           return test.setRemoteDescription(
               test.pcRemote,
-              new mozRTCSessionDescription({ type: "rollback" }),
+              new RTCSessionDescription({ type: "rollback" }),
               STABLE);
         },
 
         function PC_LOCAL_ROLLBACK(test) {
           return test.setLocalDescription(
               test.pcLocal,
-              new mozRTCSessionDescription({ type: "rollback", sdp: ""}),
+              new RTCSessionDescription({ type: "rollback", sdp: ""}),
               STABLE);
         },
 
         // Rolling back should shut down gathering
         function PC_LOCAL_WAIT_FOR_END_OF_TRICKLE(test) {
           return test.pcLocal.endOfTrickleIce;
         },
     ]);
--- a/dom/media/tests/mochitest/test_peerConnection_throwInCallbacks.html
+++ b/dom/media/tests/mochitest/test_peerConnection_throwInCallbacks.html
@@ -37,20 +37,20 @@ runNetworkTest(function () {
       finish();
     }
     throw new Error("window.onerror may throw");
     return false;
   }
 
   let pc0, pc1, pc2;
   // Test failure callbacks (limited to 1 for now)
-  pc0 = new mozRTCPeerConnection();
+  pc0 = new RTCPeerConnection();
   pc0.createOffer(getFail(), function(err) {
-    pc1 = new mozRTCPeerConnection();
-    pc2 = new mozRTCPeerConnection();
+    pc1 = new RTCPeerConnection();
+    pc2 = new RTCPeerConnection();
 
     // Test success callbacks (happy path)
     navigator.mozGetUserMedia({video:true, fake: true}, function(video1) {
       pc1.addStream(video1);
       pc1.createOffer(function(offer) {
         pc1.setLocalDescription(offer, function() {
           pc2.setRemoteDescription(offer, function() {
             pc2.createAnswer(function(answer) {
--- a/dom/media/tests/mochitest/test_peerConnection_toJSON.html
+++ b/dom/media/tests/mochitest/test_peerConnection_toJSON.html
@@ -3,33 +3,33 @@
 <head>
   <script type="application/javascript" src="pc.js"></script>
 </head>
 <body>
 <pre id="test">
 <script type="application/javascript">
   createHTML({
     bug: "928304",
-    title: "test toJSON() on mozRTCSessionDescription and mozRTCIceCandidate"
+    title: "test toJSON() on RTCSessionDescription and RTCIceCandidate"
   });
 
   runNetworkTest(function () {
     /** Test for Bug 872377 **/
 
-    var rtcSession = new mozRTCSessionDescription({ sdp: "Picklechips!",
+    var rtcSession = new RTCSessionDescription({ sdp: "Picklechips!",
                                                     type: "offer" });
     var jsonCopy = JSON.parse(JSON.stringify(rtcSession));
     for (key in rtcSession) {
       if (typeof(rtcSession[key]) == "function") continue;
       is(rtcSession[key], jsonCopy[key], "key " + key + " should match.");
     }
 
     /** Test for Bug 928304 **/
 
-    var rtcIceCandidate = new mozRTCIceCandidate({ candidate: "dummy",
+    var rtcIceCandidate = new RTCIceCandidate({ candidate: "dummy",
                                                    sdpMid: "test",
                                                    sdpMLineIndex: 3 });
     jsonCopy = JSON.parse(JSON.stringify(rtcIceCandidate));
     for (key in rtcIceCandidate) {
       if (typeof(rtcIceCandidate[key]) == "function") continue;
       is(rtcIceCandidate[key], jsonCopy[key], "key " + key + " should match.");
     }
     networkTestFinished();
--- a/dom/tests/mochitest/general/test_interfaces.html
+++ b/dom/tests/mochitest/general/test_interfaces.html
@@ -112,19 +112,16 @@ var ecmaGlobals =
 //
 // This is a list of interfaces that were prefixed with 'moz' instead of 'Moz'.
 // We should never to that again, interfaces in the DOM start with an uppercase
 // letter. If you think you need to add an interface here, DON'T. Rename your
 // interface.
 var legacyMozPrefixedInterfaces =
   [
     "mozContact",
-    "mozRTCIceCandidate",
-    "mozRTCPeerConnection",
-    "mozRTCSessionDescription",
   ];
 // IMPORTANT: Do not change the list above without review from a DOM peer,
 //            except to remove items from it!
 
 // IMPORTANT: Do not change the list below without review from a DOM peer!
 var interfaceNamesInGlobalScope =
   [
 // IMPORTANT: Do not change this list without review from a DOM peer!
@@ -797,21 +794,21 @@ var interfaceNamesInGlobalScope =
     "MozMobileMessageThread",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     {name: "MozNDEFRecord", b2g: true},
 // IMPORTANT: Do not change this list without review from a DOM peer!
     {name: "MozOtaStatusEvent", b2g: true},
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "MozPowerManager",
 // IMPORTANT: Do not change this list without review from a DOM peer!
-    "mozRTCIceCandidate",
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    "mozRTCPeerConnection",
-// IMPORTANT: Do not change this list without review from a DOM peer!
-    "mozRTCSessionDescription",
+    "RTCIceCandidate",
+// IMPORTANT: Do not change this list without review from a DOM peer!
+    "RTCPeerConnection",
+// IMPORTANT: Do not change this list without review from a DOM peer!
+    "RTCSessionDescription",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "MozSettingsEvent",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     {name: "MozSettingsTransactionEvent", permission: ["settings-api-read"]},
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "MozSmsMessage",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     {name: "MozSpeakerManager", b2g: true},
@@ -949,22 +946,28 @@ var interfaceNamesInGlobalScope =
     "Response",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "RGBColor",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "RTCCertificate",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "RTCDataChannelEvent",
 // IMPORTANT: Do not change this list without review from a DOM peer!
+    "RTCIceCandidate",
+// IMPORTANT: Do not change this list without review from a DOM peer!
+    "RTCPeerConnection",
+// IMPORTANT: Do not change this list without review from a DOM peer!
     "RTCPeerConnectionIceEvent",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "RTCRtpReceiver",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "RTCRtpSender",
 // IMPORTANT: Do not change this list without review from a DOM peer!
+    "RTCSessionDescription",
+// IMPORTANT: Do not change this list without review from a DOM peer!
     "RTCStatsReport",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "Screen",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "ScreenOrientation",
 // IMPORTANT: Do not change this list without review from a DOM peer!
     "ScriptProcessorNode",
 // IMPORTANT: Do not change this list without review from a DOM peer!
--- a/dom/webidl/Navigator.webidl
+++ b/dom/webidl/Navigator.webidl
@@ -383,17 +383,18 @@ partial interface Navigator {
 callback NavigatorUserMediaSuccessCallback = void (MediaStream stream);
 callback NavigatorUserMediaErrorCallback = void (MediaStreamError error);
 
 partial interface Navigator {
   [Throws, Func="Navigator::HasUserMediaSupport"]
   readonly attribute MediaDevices mediaDevices;
 
   // Deprecated. Use mediaDevices.getUserMedia instead.
-  [Throws, Func="Navigator::HasUserMediaSupport", UnsafeInPrerendering]
+  [Deprecated="NavigatorGetUserMedia", Throws,
+   Func="Navigator::HasUserMediaSupport", UnsafeInPrerendering]
   void mozGetUserMedia(MediaStreamConstraints constraints,
                        NavigatorUserMediaSuccessCallback successCallback,
                        NavigatorUserMediaErrorCallback errorCallback);
 };
 
 // nsINavigatorUserMedia
 callback MozGetUserMediaDevicesSuccessCallback = void (nsIVariant? devices);
 partial interface Navigator {
--- a/dom/webidl/PeerConnectionImpl.webidl
+++ b/dom/webidl/PeerConnectionImpl.webidl
@@ -1,16 +1,16 @@
 /* -*- 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/.
  *
  * PeerConnection.js' interface to the C++ PeerConnectionImpl.
  *
- * Do not confuse with mozRTCPeerConnection. This interface is purely for
+ * Do not confuse with RTCPeerConnection. This interface is purely for
  * communication between the PeerConnection JS DOM binding and the C++
  * implementation in SIPCC.
  *
  * See media/webrtc/signaling/include/PeerConnectionImpl.h
  *
  */
 
 interface nsISupports;
--- a/dom/webidl/PeerConnectionObserver.webidl
+++ b/dom/webidl/PeerConnectionObserver.webidl
@@ -3,17 +3,17 @@
  * 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/.
  */
 
 interface nsISupports;
 
 [ChromeOnly,
  JSImplementation="@mozilla.org/dom/peerconnectionobserver;1",
- Constructor (mozRTCPeerConnection domPC)]
+ Constructor (RTCPeerConnection domPC)]
 interface PeerConnectionObserver
 {
   /* JSEP callbacks */
   void onCreateOfferSuccess(DOMString offer);
   void onCreateOfferError(unsigned long name, DOMString message);
   void onCreateAnswerSuccess(DOMString answer);
   void onCreateAnswerError(unsigned long name, DOMString message);
   void onSetLocalDescriptionSuccess();
--- a/dom/webidl/RTCIceCandidate.webidl
+++ b/dom/webidl/RTCIceCandidate.webidl
@@ -11,15 +11,15 @@ dictionary RTCIceCandidateInit {
   DOMString? candidate = null;
   DOMString? sdpMid = null;
   unsigned short sdpMLineIndex;
 };
 
 [Pref="media.peerconnection.enabled",
  JSImplementation="@mozilla.org/dom/rtcicecandidate;1",
  Constructor(optional RTCIceCandidateInit candidateInitDict)]
-interface mozRTCIceCandidate {
+interface RTCIceCandidate {
   attribute DOMString?      candidate;
   attribute DOMString?      sdpMid;
   attribute unsigned short? sdpMLineIndex;
 
   jsonifier;
 };
--- a/dom/webidl/RTCPeerConnection.webidl
+++ b/dom/webidl/RTCPeerConnection.webidl
@@ -2,17 +2,17 @@
 /* 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/.
  *
  * The origin of this IDL file is
  * http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCPeerConnection
  */
 
-callback RTCSessionDescriptionCallback = void (mozRTCSessionDescription sdp);
+callback RTCSessionDescriptionCallback = void (RTCSessionDescription sdp);
 callback RTCPeerConnectionErrorCallback = void (DOMError error);
 callback VoidFunction = void ();
 callback RTCStatsCallback = void (RTCStatsReport report);
 
 enum RTCSignalingState {
     "stable",
     "have-local-offer",
     "have-remote-offer",
@@ -57,16 +57,19 @@ dictionary RTCOfferAnswerOptions {
 };
 
 dictionary RTCAnswerOptions : RTCOfferAnswerOptions {
 };
 
 dictionary RTCOfferOptions : RTCOfferAnswerOptions {
   long    offerToReceiveVideo;
   long    offerToReceiveAudio;
+  // boolean iceRestart = false; // Not implemented (Bug 906986)
+
+  // Mozilla proprietary options (at risk: Bug 1196974)
   boolean mozDontOfferDataChannel;
   boolean mozBundleOnly;
 
   // TODO: Remove old constraint-like RTCOptions support soon (Bug 1064223).
   DeprecatedRTCOfferOptionsSet mandatory;
   sequence<DeprecatedRTCOfferOptionsSet> _optional;
 };
 
@@ -78,36 +81,35 @@ dictionary DeprecatedRTCOfferOptionsSet 
 };
 
 interface RTCDataChannel;
 
 [Pref="media.peerconnection.enabled",
  JSImplementation="@mozilla.org/dom/peerconnection;1",
  Constructor (optional RTCConfiguration configuration,
               optional object? constraints)]
-// moz-prefixed until sufficiently standardized.
-interface mozRTCPeerConnection : EventTarget  {
+interface RTCPeerConnection : EventTarget  {
   [Throws, StaticClassOverride="mozilla::dom::RTCCertificate"]
   static Promise<RTCCertificate> generateCertificate (AlgorithmIdentifier keygenAlgorithm);
 
   [Pref="media.peerconnection.identity.enabled"]
   void setIdentityProvider (DOMString provider,
                             optional DOMString protocol,
                             optional DOMString username);
   [Pref="media.peerconnection.identity.enabled"]
   Promise<DOMString> getIdentityAssertion();
-  Promise<mozRTCSessionDescription> createOffer (optional RTCOfferOptions options);
-  Promise<mozRTCSessionDescription> createAnswer (optional RTCAnswerOptions options);
-  Promise<void> setLocalDescription (mozRTCSessionDescription description);
-  Promise<void> setRemoteDescription (mozRTCSessionDescription description);
-  readonly attribute mozRTCSessionDescription? localDescription;
-  readonly attribute mozRTCSessionDescription? remoteDescription;
+  Promise<RTCSessionDescription> createOffer (optional RTCOfferOptions options);
+  Promise<RTCSessionDescription> createAnswer (optional RTCAnswerOptions options);
+  Promise<void> setLocalDescription (RTCSessionDescription description);
+  Promise<void> setRemoteDescription (RTCSessionDescription description);
+  readonly attribute RTCSessionDescription? localDescription;
+  readonly attribute RTCSessionDescription? remoteDescription;
   readonly attribute RTCSignalingState signalingState;
   void updateIce (optional RTCConfiguration configuration);
-  Promise<void> addIceCandidate (mozRTCIceCandidate candidate);
+  Promise<void> addIceCandidate (RTCIceCandidate candidate);
   readonly attribute RTCIceGatheringState iceGatheringState;
   readonly attribute RTCIceConnectionState iceConnectionState;
   [Pref="media.peerconnection.identity.enabled"]
   readonly attribute Promise<RTCIdentityAssertion> peerIdentity;
   [Pref="media.peerconnection.identity.enabled"]
   readonly attribute DOMString? idpLoginUrl;
 
   [ChromeOnly]
@@ -149,31 +151,31 @@ interface mozRTCPeerConnection : EventTa
   // Data channel.
   RTCDataChannel createDataChannel (DOMString label,
                                     optional RTCDataChannelInit dataChannelDict);
   attribute EventHandler ondatachannel;
 };
 
 // Legacy callback API
 
-partial interface mozRTCPeerConnection {
+partial interface RTCPeerConnection {
 
   // Dummy Promise<void> return values avoid "WebIDL.WebIDLError: error:
   // We have overloads with both Promise and non-Promise return types"
 
   Promise<void> createOffer (RTCSessionDescriptionCallback successCallback,
                              RTCPeerConnectionErrorCallback failureCallback,
                              optional RTCOfferOptions options);
   Promise<void> createAnswer (RTCSessionDescriptionCallback successCallback,
                               RTCPeerConnectionErrorCallback failureCallback);
-  Promise<void> setLocalDescription (mozRTCSessionDescription description,
+  Promise<void> setLocalDescription (RTCSessionDescription description,
                                      VoidFunction successCallback,
                                      RTCPeerConnectionErrorCallback failureCallback);
-  Promise<void> setRemoteDescription (mozRTCSessionDescription description,
+  Promise<void> setRemoteDescription (RTCSessionDescription description,
                                       VoidFunction successCallback,
                                       RTCPeerConnectionErrorCallback failureCallback);
-  Promise<void> addIceCandidate (mozRTCIceCandidate candidate,
+  Promise<void> addIceCandidate (RTCIceCandidate candidate,
                                  VoidFunction successCallback,
                                  RTCPeerConnectionErrorCallback failureCallback);
   Promise<void> getStats (MediaStreamTrack? selector,
                           RTCStatsCallback successCallback,
                           RTCPeerConnectionErrorCallback failureCallback);
 };
--- a/dom/webidl/RTCPeerConnectionIceEvent.webidl
+++ b/dom/webidl/RTCPeerConnectionIceEvent.webidl
@@ -3,17 +3,17 @@
  * 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/.
  *
  * The origin of this IDL file is
  * http://dev.w3.org/2011/webrtc/editor/webrtc.html#idl-def-RTCPeerConnectionIceEvent
  */
 
 dictionary RTCPeerConnectionIceEventInit : EventInit {
-  mozRTCIceCandidate? candidate = null;
+  RTCIceCandidate? candidate = null;
 };
 
 [Pref="media.peerconnection.enabled",
  Constructor(DOMString type,
              optional RTCPeerConnectionIceEventInit eventInitDict)]
 interface RTCPeerConnectionIceEvent : Event {
-  readonly attribute mozRTCIceCandidate? candidate;
+  readonly attribute RTCIceCandidate? candidate;
 };
--- a/dom/webidl/RTCPeerConnectionStatic.webidl
+++ b/dom/webidl/RTCPeerConnectionStatic.webidl
@@ -3,36 +3,36 @@
  * 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/.
  */
 
 /*
   Right now, it is not possible to add static functions to a JS implemented
   interface (see bug 863952), so we need to create a simple interface with a
   trivial constructor and no data to hold these functions that really ought to
-  be static in mozRTCPeerConnection.
+  be static in RTCPeerConnection.
   TODO(bcampen@mozilla.com) Merge this code into RTCPeerConnection once this
   limitation is gone. (Bug 1017082)
 */
 
 enum RTCLifecycleEvent {
     "initialized",
     "icegatheringstatechange",
     "iceconnectionstatechange"
 };
 
-callback PeerConnectionLifecycleCallback = void (mozRTCPeerConnection pc,
+callback PeerConnectionLifecycleCallback = void (RTCPeerConnection pc,
                                                  unsigned long long windowId,
                                                  RTCLifecycleEvent eventType);
 
 [ChromeOnly,
  Pref="media.peerconnection.enabled",
  JSImplementation="@mozilla.org/dom/peerconnectionstatic;1",
  Constructor()]
-interface mozRTCPeerConnectionStatic {
+interface RTCPeerConnectionStatic {
 
   /* One slot per window (the window in which the register call is made),
      automatically unregistered when window goes away.
      Fires when a PC is created, and whenever the ICE connection state or
      gathering state changes. */
   void registerPeerConnectionLifecycleCallback(
     PeerConnectionLifecycleCallback cb);
 };
--- a/dom/webidl/RTCSessionDescription.webidl
+++ b/dom/webidl/RTCSessionDescription.webidl
@@ -17,14 +17,14 @@ enum RTCSdpType {
 dictionary RTCSessionDescriptionInit {
   RTCSdpType? type = null;
   DOMString? sdp = "";
 };
 
 [Pref="media.peerconnection.enabled",
  JSImplementation="@mozilla.org/dom/rtcsessiondescription;1",
  Constructor(optional RTCSessionDescriptionInit descriptionInitDict)]
-interface mozRTCSessionDescription {
+interface RTCSessionDescription {
   attribute RTCSdpType? type;
   attribute DOMString? sdp;
 
   jsonifier;
 };
new file mode 100644
--- /dev/null
+++ b/dom/webidl/WebrtcDeprecated.webidl
@@ -0,0 +1,21 @@
+/* -*- 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/.
+ *
+ * This file includes all the deprecated mozRTC prefixed interfaces.
+ *
+ * The declaration of each should match the declaration of the real, unprefixed
+ * interface.
+ */
+
+[NoInterfaceObject]
+interface WebrtcDeprecated
+{
+  [Deprecated="WebrtcDeprecatedPrefix", Pref="media.peerconnection.enabled"]
+  readonly attribute object mozRTCIceCandidate;
+  [Deprecated="WebrtcDeprecatedPrefix", Pref="media.peerconnection.enabled"]
+  readonly attribute object mozRTCPeerConnection;
+  [Deprecated="WebrtcDeprecatedPrefix", Pref="media.peerconnection.enabled"]
+  readonly attribute object mozRTCSessionDescription;
+};
--- a/dom/webidl/Window.webidl
+++ b/dom/webidl/Window.webidl
@@ -26,17 +26,17 @@ typedef any Transferable;
 [PrimaryGlobal, NeedResolve]
 /*sealed*/ interface Window : EventTarget {
   // the current browsing context
   [Unforgeable, Constant, StoreInSlot,
    CrossOriginReadable] readonly attribute Window window;
   [Replaceable, Constant, StoreInSlot,
    CrossOriginReadable] readonly attribute Window self;
   [Unforgeable, StoreInSlot, Pure] readonly attribute Document? document;
-  [Throws] attribute DOMString name; 
+  [Throws] attribute DOMString name;
   [PutForwards=href, Unforgeable, Throws,
    CrossOriginReadable, CrossOriginWritable] readonly attribute Location? location;
   [Throws] readonly attribute History history;
   [Replaceable, Throws] readonly attribute BarProp locationbar;
   [Replaceable, Throws] readonly attribute BarProp menubar;
   [Replaceable, Throws] readonly attribute BarProp personalbar;
   [Replaceable, Throws] readonly attribute BarProp scrollbars;
   [Replaceable, Throws] readonly attribute BarProp statusbar;
@@ -60,17 +60,17 @@ typedef any Transferable;
   //[Throws] WindowProxy open(optional DOMString url = "about:blank", optional DOMString target = "_blank", [TreatNullAs=EmptyString] optional DOMString features = "", optional boolean replace = false);
   [Throws, UnsafeInPrerendering] WindowProxy? open(optional DOMString url = "", optional DOMString target = "", [TreatNullAs=EmptyString] optional DOMString features = "");
   // We think the indexed getter is a bug in the spec, it actually needs to live
   // on the WindowProxy
   //getter WindowProxy (unsigned long index);
   getter object (DOMString name);
 
   // the user agent
-  [Throws] readonly attribute Navigator navigator; 
+  [Throws] readonly attribute Navigator navigator;
 #ifdef HAVE_SIDEBAR
   [Replaceable, Throws] readonly attribute External external;
 #endif
   [Throws] readonly attribute ApplicationCache applicationCache;
 
   // user prompts
   [Throws, UnsafeInPrerendering] void alert();
   [Throws, UnsafeInPrerendering] void alert(DOMString message);
@@ -338,17 +338,17 @@ partial interface Window {
    * been painted to the screen.
    */
   [Throws] readonly attribute unsigned long long mozPaintCount;
 
   /**
    * This property exists because static attributes don't yet work for
    * JS-implemented WebIDL (see bugs 1058606 and 863952). With this hack, we
    * can use `MozSelfSupport.something(...)`, which will continue to work
-   * after we ditch this property and switch to static attributes. See 
+   * after we ditch this property and switch to static attributes. See
    */
   [ChromeOnly, Throws] readonly attribute MozSelfSupport MozSelfSupport;
 
   [Pure]
            attribute EventHandler onwheel;
 
            attribute EventHandler ondevicemotion;
            attribute EventHandler ondeviceorientation;
@@ -479,8 +479,9 @@ interface ChromeWindow {
    */
   [Throws, Func="nsGlobalWindow::IsPrivilegedChromeWindow"]
   void beginWindowMove(Event mouseDownEvent, optional Element? panel = null);
 };
 
 Window implements ChromeWindow;
 Window implements GlobalFetch;
 Window implements ImageBitmapFactories;
+Window implements WebrtcDeprecated;
--- a/dom/webidl/moz.build
+++ b/dom/webidl/moz.build
@@ -613,16 +613,17 @@ if CONFIG['MOZ_WEBRTC']:
         'RTCIceCandidate.webidl',
         'RTCIdentityAssertion.webidl',
         'RTCIdentityProvider.webidl',
         'RTCPeerConnection.webidl',
         'RTCPeerConnectionStatic.webidl',
         'RTCRtpReceiver.webidl',
         'RTCRtpSender.webidl',
         'RTCSessionDescription.webidl',
+        'WebrtcDeprecated.webidl',
         'WebrtcGlobalInformation.webidl',
     ]
 
 if CONFIG['MOZ_WEBSPEECH']:
     WEBIDL_FILES += [
         'SpeechGrammar.webidl',
         'SpeechGrammarList.webidl',
         'SpeechRecognition.webidl',
--- a/media/webrtc/trunk/webrtc/test/manual/adapter.js
+++ b/media/webrtc/trunk/webrtc/test/manual/adapter.js
@@ -1,17 +1,17 @@
 var RTCPeerConnection = null;
 var getUserMedia = null;
 var attachMediaStream = null;
 
 if (navigator.mozGetUserMedia) {
   console.log("This appears to be Firefox");
 
   // The RTCPeerConnection object.
-  RTCPeerConnection = mozRTCPeerConnection;
+  RTCPeerConnection = RTCPeerConnection || mozRTCPeerConnection;
 
   // Get UserMedia (only difference is the prefix).
   // Code from Adam Barth.
   getUserMedia = navigator.mozGetUserMedia.bind(navigator);
 
   // Attach a media stream to an element.
   attachMediaStream = function(element, stream) {
     console.log("Attaching media stream");
--- a/media/webrtc/trunk/webrtc/tools/loopback_test/adapter.js
+++ b/media/webrtc/trunk/webrtc/tools/loopback_test/adapter.js
@@ -44,24 +44,24 @@ if (navigator.mozGetUserMedia) {
 
   webrtcDetectedVersion =
            parseInt(navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1], 10);
 
   // The RTCPeerConnection object.
   var RTCPeerConnection = function(pcConfig, pcConstraints) {
     // .urls is not supported in FF yet.
     maybeFixConfiguration(pcConfig);
-    return new mozRTCPeerConnection(pcConfig, pcConstraints);
+    return new (RTCPeerConnectioni || mozRTCPeerConnection)(pcConfig, pcConstraints);
   }
 
   // The RTCSessionDescription object.
-  RTCSessionDescription = mozRTCSessionDescription;
+  RTCSessionDescription = RTCSessionDescription || mozRTCSessionDescription;
 
   // The RTCIceCandidate object.
-  RTCIceCandidate = mozRTCIceCandidate;
+  RTCIceCandidate = RTCIceCandidate || mozRTCIceCandidate;
 
   // Get UserMedia (only difference is the prefix).
   // Code from Adam Barth.
   getUserMedia = navigator.mozGetUserMedia.bind(navigator);
   navigator.getUserMedia = getUserMedia;
 
   // Creates iceServer from the url for FF.
   createIceServer = function(url, username, password) {
--- a/mobile/android/modules/TabMirror.jsm
+++ b/mobile/android/modules/TabMirror.jsm
@@ -14,24 +14,24 @@ let log = Cu.import("resource://gre/modu
 
 let failure = function(x) {
   log("ERROR: " + JSON.stringify(x));
 };
 
 let TabMirror = function(deviceId, window) {
 
   this.deviceId = deviceId;
-  // Save mozRTCSessionDescription and mozRTCIceCandidate for later when the window object is not available.
-  this.RTCSessionDescription = window.mozRTCSessionDescription;
-  this.RTCIceCandidate = window.mozRTCIceCandidate;
+  // Save RTCSessionDescription and RTCIceCandidate for later when the window object is not available.
+  this.RTCSessionDescription = window.RTCSessionDescription;
+  this.RTCIceCandidate = window.RTCIceCandidate;
 
   Services.obs.addObserver((aSubject, aTopic, aData) => this._processMessage(aData), "MediaPlayer:Response", false);
   this._sendMessage({ start: true });
   this._window = window;
-  this._pc = new window.mozRTCPeerConnection(CONFIG, {});
+  this._pc = new window.RTCPeerConnection(CONFIG, {});
   if (!this._pc) {
     throw "Failure creating Webrtc object";
   }
 
 };
 
 TabMirror.prototype = {
   _window: null,