merge mozilla-inbound to mozilla-central a=merge
authorCarsten "Tomcat" Book <cbook@mozilla.com>
Fri, 06 May 2016 14:18:17 +0200
changeset 296397 19a1743ceb2e035e571012e88d25275ce627b925
parent 296396 25d777f7efb357fc5478251913548521986abaa0 (current diff)
parent 296349 1a00d3da0e9eed5f8e527b1d60842d5f72b3c1c9 (diff)
child 296398 84a3e571680149b8fafcfc338aa4e0f27cb16050
child 296482 9d202f109312b37f42224c55724ea845a4b86c23
push id76311
push usercbook@mozilla.com
push dateFri, 06 May 2016 12:26:12 +0000
treeherdermozilla-inbound@84a3e5716801 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone49.0a1
first release with
nightly linux32
19a1743ceb2e / 49.0a1 / 20160506052823 / files
nightly linux64
19a1743ceb2e / 49.0a1 / 20160506052037 / files
nightly mac
19a1743ceb2e / 49.0a1 / 20160506052037 / files
nightly win32
19a1743ceb2e / 49.0a1 / 20160506052823 / files
nightly win64
19a1743ceb2e / 49.0a1 / 20160506052823 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
merge mozilla-inbound to mozilla-central a=merge
devtools/shared/gcli/source/lib/gcli/commands/connect.js
devtools/shared/gcli/source/lib/gcli/commands/exec.js
devtools/shared/gcli/source/lib/gcli/commands/global.js
devtools/shared/gcli/source/lib/gcli/commands/intro.js
devtools/shared/gcli/source/lib/gcli/commands/lang.js
testing/web-platform/meta/html/semantics/embedded-content/the-img-element/relevant-mutations.html.ini
testing/web-platform/meta/shadow-dom/untriaged/elements-and-dom-objects/extensions-to-element-interface/methods/test-003.html.ini
testing/web-platform/meta/shadow-dom/untriaged/html-elements-and-their-shadow-trees/test-001.html.ini
testing/web-platform/meta/shadow-dom/untriaged/html-elements-and-their-shadow-trees/test-003.html.ini
testing/web-platform/meta/shadow-dom/untriaged/shadow-trees/composition/test-001.html.ini
testing/web-platform/meta/shadow-dom/untriaged/shadow-trees/lower-boundary-encapsulation/test-004.html.ini
testing/web-platform/meta/shadow-dom/untriaged/shadow-trees/rendering-shadow-trees/test-001.html.ini
testing/web-platform/meta/shadow-dom/untriaged/styles/css-variables/test-001.html.ini
testing/web-platform/meta/shadow-dom/untriaged/styles/test-007.html.ini
testing/web-platform/meta/shadow-dom/untriaged/styles/test-009.html.ini
testing/web-platform/meta/shadow-dom/untriaged/styles/test-010.html.ini
testing/web-platform/tests/shadow-dom/untriaged/elements-and-dom-objects/extensions-to-element-interface/methods/test-003.html
testing/web-platform/tests/shadow-dom/untriaged/elements-and-dom-objects/shadowroot-object/shadowroot-attributes/test-014.html
testing/web-platform/tests/shadow-dom/untriaged/events/event-retargeting/test-002.html
testing/web-platform/tests/shadow-dom/untriaged/html-elements-and-their-shadow-trees/test-001.html
testing/web-platform/tests/shadow-dom/untriaged/html-elements-and-their-shadow-trees/test-002.html
testing/web-platform/tests/shadow-dom/untriaged/html-elements-and-their-shadow-trees/test-003.html
testing/web-platform/tests/shadow-dom/untriaged/html-elements-and-their-shadow-trees/test-004.html
testing/web-platform/tests/shadow-dom/untriaged/shadow-trees/composition/test-001.html
testing/web-platform/tests/shadow-dom/untriaged/shadow-trees/lower-boundary-encapsulation/distribution-001-ref.html
testing/web-platform/tests/shadow-dom/untriaged/shadow-trees/lower-boundary-encapsulation/distribution-001.html
testing/web-platform/tests/shadow-dom/untriaged/shadow-trees/lower-boundary-encapsulation/distribution-002-ref.html
testing/web-platform/tests/shadow-dom/untriaged/shadow-trees/lower-boundary-encapsulation/distribution-002.html
testing/web-platform/tests/shadow-dom/untriaged/shadow-trees/lower-boundary-encapsulation/distribution-003.html
testing/web-platform/tests/shadow-dom/untriaged/shadow-trees/lower-boundary-encapsulation/test-003.html
testing/web-platform/tests/shadow-dom/untriaged/shadow-trees/lower-boundary-encapsulation/test-004.html
testing/web-platform/tests/shadow-dom/untriaged/shadow-trees/lower-boundary-encapsulation/test-005.html
testing/web-platform/tests/shadow-dom/untriaged/shadow-trees/nested-shadow-trees/test-001.html
testing/web-platform/tests/shadow-dom/untriaged/shadow-trees/rendering-shadow-trees/test-001.html
testing/web-platform/tests/shadow-dom/untriaged/shadow-trees/reprojection/reprojection-002-ref.html
testing/web-platform/tests/shadow-dom/untriaged/shadow-trees/reprojection/reprojection-002.html
testing/web-platform/tests/shadow-dom/untriaged/shadow-trees/reprojection/test-001.html
testing/web-platform/tests/shadow-dom/untriaged/styles/css-variables/test-001.html
testing/web-platform/tests/shadow-dom/untriaged/styles/test-007.html
testing/web-platform/tests/shadow-dom/untriaged/styles/test-009.html
testing/web-platform/tests/shadow-dom/untriaged/styles/test-010.html
toolkit/components/telemetry/Histograms.json
toolkit/components/telemetry/histogram-whitelists.json
--- a/accessible/base/EventTree.cpp
+++ b/accessible/base/EventTree.cpp
@@ -147,17 +147,16 @@ TreeMutation::Done()
 #ifdef DEBUG
   for (uint32_t idx = 0; idx < mStartIdx && idx < length; idx++) {
     MOZ_ASSERT(mParent->mChildren[idx]->mIndexInParent == static_cast<int32_t>(idx),
                "Wrong index detected");
   }
 #endif
 
   for (uint32_t idx = mStartIdx; idx < length; idx++) {
-    mParent->mChildren[idx]->mIndexInParent = idx;
     mParent->mChildren[idx]->mInt.mIndexOfEmbeddedChild = -1;
     mParent->mChildren[idx]->mStateFlags |= Accessible::eGroupInfoDirty;
   }
 
   if (mStartIdx < mParent->mChildren.Length() - 1) {
     mParent->mEmbeddedObjCollector = nullptr;
   }
 
--- a/accessible/generic/Accessible.cpp
+++ b/accessible/generic/Accessible.cpp
@@ -2076,16 +2076,20 @@ Accessible::InsertChildAt(uint32_t aInde
     if (!mChildren.AppendElement(aChild))
       return false;
 
   } else {
     if (!mChildren.InsertElementAt(aIndex, aChild))
       return false;
 
     MOZ_ASSERT(mStateFlags & eKidsMutating, "Illicit children change");
+
+    for (uint32_t idx = aIndex + 1; idx < mChildren.Length(); idx++) {
+      mChildren[idx]->mIndexInParent = idx;
+    }
   }
 
   if (aChild->IsText()) {
     mStateFlags |= eHasTextKids;
   }
 
   aChild->BindToParent(this, aIndex);
   return true;
@@ -2099,27 +2103,26 @@ Accessible::RemoveChild(Accessible* aChi
 
   if (aChild->mParent != this || aChild->mIndexInParent == -1)
     return false;
 
   MOZ_ASSERT((mStateFlags & eKidsMutating) || aChild->IsDefunct() || aChild->IsDoc(),
              "Illicit children change");
 
   int32_t index = static_cast<uint32_t>(aChild->mIndexInParent);
-
-  // If we adopt a child during a tree construction, then indexes might be not
-  // rebuilt yet.
-  if (mChildren.SafeElementAt(index) != aChild) {
-    index = mChildren.IndexOf(aChild);
-    MOZ_ASSERT(index != -1,
-               "Child is bound to parent but parent hasn't this child at its index.");
-  }
+  MOZ_ASSERT(mChildren.SafeElementAt(index) == aChild,
+             "A wrong child index");
 
   aChild->UnbindFromParent();
   mChildren.RemoveElementAt(index);
+
+  for (uint32_t idx = index; idx < mChildren.Length(); idx++) {
+    mChildren[idx]->mIndexInParent = idx;
+  }
+
   return true;
 }
 
 void
 Accessible::MoveChild(uint32_t aNewIndex, Accessible* aChild)
 {
   MOZ_ASSERT(aChild, "No child was given");
   MOZ_ASSERT(aChild->mParent == this, "A child from different subtree was given");
--- a/accessible/tests/mochitest/treeupdate/a11y.ini
+++ b/accessible/tests/mochitest/treeupdate/a11y.ini
@@ -16,16 +16,17 @@ support-files =
 [test_bug1189277.html]
 [test_canvas.html]
 [test_colorpicker.xul]
 [test_contextmenu.xul]
 [test_cssoverflow.html]
 [test_deck.xul]
 [test_doc.html]
 [test_gencontent.html]
+[test_general.html]
 [test_hidden.html]
 [test_imagemap.html]
 skip-if = buildapp == "mulet"
 [test_list.html]
 [test_list_editabledoc.html]
 [test_listbox.xul]
 [test_menu.xul]
 [test_menubutton.xul]
new file mode 100644
--- /dev/null
+++ b/accessible/tests/mochitest/treeupdate/test_general.html
@@ -0,0 +1,117 @@
+<html>
+
+<head>
+  <title>Testing the tree updates</title>
+
+  <link rel="stylesheet" type="text/css"
+        href="chrome://mochikit/content/tests/SimpleTest/test.css" />
+
+  <script type="application/javascript"
+          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+
+  <script type="application/javascript"
+          src="../common.js"></script>
+  <script type="application/javascript"
+          src="../role.js"></script>
+  <script type="application/javascript"
+          src="../events.js"></script>
+
+  <script type="application/javascript">
+
+    ////////////////////////////////////////////////////////////////////////////
+    // Invokers
+    ////////////////////////////////////////////////////////////////////////////
+
+    function prependAppend(aContainer)
+    {
+      this.eventSeq = [
+        new invokerChecker(EVENT_REORDER, aContainer)
+      ];
+
+      this.invoke = function prependAppend_invoke()
+      {
+        var checkbox = document.createElement('input');
+        checkbox.setAttribute('type', 'checkbox');
+        getNode(aContainer).insertBefore(checkbox, getNode(aContainer).firstChild);
+
+        var button = document.createElement('input');
+        button.setAttribute('type', 'button');
+        getNode(aContainer).appendChild(button);
+      }
+
+      this.finalCheck = function prependAppend_finalCheck()
+      {
+        var accTree =
+          { SECTION: [ // container
+            { CHECKBUTTON: [ ] },
+            { ENTRY: [ ] },
+            { PUSHBUTTON: [ ] }
+          ] };
+        testAccessibleTree(aContainer, accTree);
+      }
+
+      this.getID = function prependAppend_getID()
+      {
+        return "prepends a child and appends a child";
+      }
+    }
+
+    function removeRemove(aContainer)
+    {
+      this.eventSeq = [
+        new invokerChecker(EVENT_REORDER, aContainer)
+      ];
+
+      this.invoke = function removeRemove_invoke()
+      {
+        getNode(aContainer).removeChild(getNode(aContainer).firstChild);
+      }
+
+      this.finalCheck = function removeRemove_finalCheck()
+      {
+        var accTree =
+          { SECTION: [ // container
+            { PUSHBUTTON: [ ] }
+          ] };
+        testAccessibleTree(aContainer, accTree);
+      }
+
+      this.getID = function removeRemove_getID()
+      {
+        return "remove first and second children";
+      }
+    }
+
+    ////////////////////////////////////////////////////////////////////////////
+    // Do tests
+    ////////////////////////////////////////////////////////////////////////////
+
+    var gQueue = null;
+    //gA11yEventDumpID = "eventdump"; // debug stuff
+    //gA11yEventDumpToConsole = true;
+
+    function doTests()
+    {
+      gQueue = new eventQueue();
+
+      gQueue.push(new prependAppend("c1"));
+      gQueue.push(new removeRemove("c2"));
+
+      gQueue.invoke(); // Will call SimpleTest.finish();
+    }
+
+    SimpleTest.waitForExplicitFinish();
+    addA11yLoadEvent(doTests);
+  </script>
+</head>
+
+<body>
+  <p id="display"></p>
+  <div id="content" style="display: none"></div>
+  <pre id="test">
+  </pre>
+
+  <div id="c1"><input></div>
+  <div id="c2"><span><input type="checkbox"><input></span><input type="button"></div>
+</body>
+</html>
--- a/browser/base/content/abouthome/aboutHome.css
+++ b/browser/base/content/abouthome/aboutHome.css
@@ -82,25 +82,25 @@ a {
   border-radius: 2px 0 0 2px;
   border-color: hsla(210,54%,20%,.15) hsla(210,54%,20%,.17) hsla(210,54%,20%,.2);
   box-shadow: 0 1px 0 hsla(210,65%,9%,.02) inset,
               0 0 2px hsla(210,65%,9%,.1) inset,
               0 1px 0 hsla(0,0%,100%,.2);
   color: inherit;
 }
 
-#searchText:-moz-dir(rtl) {
+#searchText:dir(rtl) {
   border-radius: 0 2px 2px 0;
 }
 
 #searchText[aria-expanded="true"] {
   border-radius: 2px 0 0 0;
 }
 
-#searchText[aria-expanded="true"]:-moz-dir(rtl) {
+#searchText[aria-expanded="true"]:dir(rtl) {
   border-radius: 0 2px 0 0;
 }
 
 #searchText[keepfocus],
 #searchText:focus,
 #searchText[autofocus] {
   border-color: hsla(206,100%,60%,.6) hsla(206,76%,52%,.6) hsla(204,100%,40%,.6);
 }
@@ -117,17 +117,17 @@ a {
               0 1px 0 hsla(0,0%,100%,.2);
   color: inherit;
   cursor: pointer;
   transition-property: background-color, border-color, box-shadow;
   transition-duration: 150ms;
   width: 50px;
 }
 
-#searchSubmit:-moz-dir(rtl) {
+#searchSubmit:dir(rtl) {
   border-radius: 2px 0 0 2px;
 }
 
 #searchText:focus + #searchSubmit,
 #searchText[keepfocus] + #searchSubmit,
 #searchText + #searchSubmit:hover,
 #searchText[autofocus] + #searchSubmit {
   border-color: #59b5fc #45a3e7 #3294d5;
@@ -166,19 +166,19 @@ a {
   padding: 6px 0;
   -moz-padding-start: 49px;
 }
 
 #rightsSnippet[hidden] {
   display: none;
 }
 
-#defaultSnippet1:-moz-dir(rtl),
-#defaultSnippet2:-moz-dir(rtl),
-#rightsSnippet:-moz-dir(rtl) {
+#defaultSnippet1:dir(rtl),
+#defaultSnippet2:dir(rtl),
+#rightsSnippet:dir(rtl) {
   background-position: right 0 center;
 }
 
 #defaultSnippet1 {
   background-image: url("chrome://browser/content/abouthome/snippet1.png");
 }
 
 #defaultSnippet2 {
@@ -328,17 +328,17 @@ body[narrow] #restorePreviousSession {
   height: 48px;
   width: 48px;
   display: inline-block; /* display on same line as text label */
   vertical-align: middle;
   margin-bottom: 0;
   -moz-margin-end: 8px;
 }
 
-#restorePreviousSession:-moz-dir(rtl)::before {
+#restorePreviousSession:dir(rtl)::before {
   transform: scaleX(-1);
 }
 
 body[narrow] #restorePreviousSession::before {
   content: url("chrome://browser/content/abouthome/restore.png");
   height: 32px;
   width: 32px;
 }
@@ -389,18 +389,18 @@ body[narrow] #restorePreviousSession::be
   }
 
   .launchButton::before,
   #aboutMozilla::before {
     transform: scale(.5);
     transform-origin: 0 0;
   }
 
-  .launchButton:-moz-dir(rtl)::before,
-  #aboutMozilla:-moz-dir(rtl)::before {
+  .launchButton:dir(rtl)::before,
+  #aboutMozilla:dir(rtl)::before {
     transform: scale(.5) translateX(32px);
   }
 
   #downloads::before {
     content: url("chrome://browser/content/abouthome/downloads@2x.png");
   }
 
   #bookmarks::before {
@@ -426,17 +426,17 @@ body[narrow] #restorePreviousSession::be
   #restorePreviousSession::before {
     content: url("chrome://browser/content/abouthome/restore-large@2x.png");
   }
 
   body[narrow] #restorePreviousSession::before {
     content: url("chrome://browser/content/abouthome/restore@2x.png");
   }
 
-  #restorePreviousSession:-moz-dir(rtl)::before {
+  #restorePreviousSession:dir(rtl)::before {
     transform: scale(-0.5, 0.5) translateX(24px);
     transform-origin: top center;
   }
 
   #aboutMozilla::before {
     content: url("chrome://browser/content/abouthome/mozilla@2x.png");
   }
 }
--- a/browser/base/content/newtab/newTab.css
+++ b/browser/base/content/newtab/newTab.css
@@ -45,17 +45,17 @@ input[type=button] {
 /* CUSTOMIZE */
 #newtab-customize-button {
   position: absolute;
   top: 10px;
   right: 20px;
   z-index: 101;
 }
 
-#newtab-customize-button:-moz-dir(rtl) {
+#newtab-customize-button:dir(rtl) {
   left: 20px;
   right: auto;
 }
 
 /* MARGINS */
 #newtab-vertical-margin {
   display: -moz-box;
   position: relative;
@@ -66,22 +66,22 @@ input[type=button] {
 #newtab-margin-undo-container {
   display: -moz-box;
   left: 6px;
   position: absolute;
   top: 6px;
   z-index: 1;
 }
 
-#newtab-margin-undo-container:-moz-dir(rtl) {
+#newtab-margin-undo-container:dir(rtl) {
   left: auto;
   right: 6px;
 }
 
-#newtab-undo-close-button:-moz-dir(rtl) {
+#newtab-undo-close-button:dir(rtl) {
   float:left;
 }
 
 #newtab-horizontal-margin {
   display: -moz-box;
   -moz-box-flex: 1;
 }
 
@@ -239,17 +239,17 @@ input[type=button] {
   border: 0;
   color: white;
 }
 
 .newtab-site > .newtab-sponsored[active] {
   background-color: #000000;
 }
 
-.newtab-sponsored:-moz-dir(rtl) {
+.newtab-sponsored:dir(rtl) {
   right: 0;
   left: auto;
 }
 
 .newtab-site:-moz-any([type=enhanced], [type=sponsored], [suggested]) .newtab-sponsored {
   display: block;
 }
 
@@ -302,23 +302,23 @@ input[type=button] {
 }
 
 @media (-moz-touch-enabled) {
   .newtab-control {
     opacity: 1;
   }
 }
 
-.newtab-control-pin:-moz-dir(ltr),
-.newtab-control-block:-moz-dir(rtl) {
+.newtab-control-pin:dir(ltr),
+.newtab-control-block:dir(rtl) {
   left: 4px;
 }
 
-.newtab-control-block:-moz-dir(ltr),
-.newtab-control-pin:-moz-dir(rtl) {
+.newtab-control-block:dir(ltr),
+.newtab-control-pin:dir(rtl) {
   right: 4px;
 }
 
 /* DRAG & DROP */
 
 /*
  * This is just a temporary drag element used for dataTransfer.setDragImage()
  * so that we can use custom drag images and elements. It needs an opacity of
@@ -374,25 +374,25 @@ input[type=button] {
   border-radius: 2px 0 0 2px;
   border-color: hsla(210,54%,20%,.15) hsla(210,54%,20%,.17) hsla(210,54%,20%,.2);
   box-shadow: 0 1px 0 hsla(210,65%,9%,.02) inset,
               0 0 2px hsla(210,65%,9%,.1) inset,
               0 1px 0 hsla(0,0%,100%,.2);
   color: inherit;
 }
 
-#newtab-search-text:-moz-dir(rtl) {
+#newtab-search-text:dir(rtl) {
   border-radius: 0 2px 2px 0;
 }
 
 #newtab-search-text[aria-expanded="true"] {
   border-radius: 2px 0 0 0;
 }
 
-#newtab-search-text[aria-expanded="true"]:-moz-dir(rtl) {
+#newtab-search-text[aria-expanded="true"]:dir(rtl) {
   border-radius: 0 2px 0 0;
 }
 
 #newtab-search-text[keepfocus],
 #newtab-search-text:focus,
 #newtab-search-text[autofocus] {
   border-color: hsla(206,100%,60%,.6) hsla(206,76%,52%,.6) hsla(204,100%,40%,.6);
 }
@@ -409,17 +409,17 @@ input[type=button] {
               0 1px 0 hsla(0,0%,100%,.2);
   color: inherit;
   cursor: pointer;
   transition-property: background-color, border-color, box-shadow;
   transition-duration: 150ms;
   width: 50px;
 }
 
-#newtab-search-submit:-moz-dir(rtl) {
+#newtab-search-submit:dir(rtl) {
   border-radius: 2px 0 0 2px;
 }
 
 #newtab-search-text:focus + #newtab-search-submit,
 #newtab-search-text + #newtab-search-submit:hover,
 #newtab-search-text[autofocus] + #newtab-search-submit {
   border-color: #59b5fc #45a3e7 #3294d5;
   color: white;
@@ -461,17 +461,17 @@ input[type=button] {
 }
 
 .newtab-customize-panel-container {
   position: absolute;
   margin-right: 40px;
   right: 0;
 }
 
-.newtab-customize-panel-container:-moz-dir(rtl) {
+.newtab-customize-panel-container:dir(rtl) {
   right: auto;
   left: 0;
 }
 
 #newtab-customize-panel {
   z-index: 999;
   margin-top: 55px;
   min-width: 270px;
@@ -479,22 +479,22 @@ input[type=button] {
   top: 100%;
   right: -25px;
   filter: drop-shadow(0 0 1px rgba(0,0,0,0.4)) drop-shadow(0 3px 4px rgba(0,0,0,0.4));
   transition: all 200ms ease-in-out;
   transform-origin: top right;
   transform: translate(-30px, -20px) scale(0) translate(30px, 20px);
 }
 
-#newtab-customize-panel:-moz-dir(rtl) {
+#newtab-customize-panel:dir(rtl) {
   transform-origin: 40px top 20px;
 }
 
-#newtab-customize-panel:-moz-dir(rtl),
-#newtab-customize-panel-anchor:-moz-dir(rtl) {
+#newtab-customize-panel:dir(rtl),
+#newtab-customize-panel-anchor:dir(rtl) {
   left: 15px;
   right: auto;
 }
 
 #newtab-customize-panel[open="true"] {
   transform: translate(-30px, -20px) scale(1) translate(30px, 20px);
 }
 
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -2495,16 +2495,26 @@
 
             // Removing the panel requires fixing up selectedPanel immediately
             // (see below), which would be hindered by the potentially expensive
             // browser removal. So we remove the browser and the panel in two
             // steps.
 
             var panel = this.getNotificationBox(browser);
 
+            // In the multi-process case, it's possible an asynchronous tab switch
+            // is still underway. If so, then it's possible that the last visible
+            // browser is the one we're in the process of removing. There's the
+            // risk of displaying preloaded browsers that are at the end of the
+            // deck if we remove the browser before the switch is complete, so
+            // we alert the switcher in order to show a spinner instead.
+            if (this._switcher) {
+              this._switcher.onTabRemoved(aTab);
+            }
+
             // This will unload the document. An unload handler could remove
             // dependant tabs, so it's important that the tabbrowser is now in
             // a consistent state (tab removed, tab positions updated, etc.).
             browser.parentNode.removeChild(browser);
 
             // Release the browser in case something is erroneously holding a
             // reference to the tab after its removal.
             this._tabForBrowser.delete(aTab.linkedBrowser);
@@ -3643,16 +3653,29 @@
                 if (this.getTabState(tab) == this.STATE_LOADING) {
                   this.onLayersReady(tab.linkedBrowser);
                 } else if (this.getTabState(tab) == this.STATE_UNLOADING) {
                   this.onLayersCleared(tab.linkedBrowser);
                 }
               }
             },
 
+            // Called when a tab has been removed, and the browser node is
+            // about to be removed from the DOM.
+            onTabRemoved: function(tab) {
+              if (this.lastVisibleTab == tab) {
+                // The browser that was being presented to the user is
+                // going to be removed during this tick of the event loop.
+                // This will cause us to show a tab spinner instead.
+                this.preActions();
+                this.lastVisibleTab = null;
+                this.postActions();
+              }
+            },
+
             // Called when the user asks to switch to a given tab.
             requestTab: function(tab) {
               if (tab === this.requestedTab) {
                 return;
               }
 
               // Instrumentation to figure out bug 1166351 - if the binding
               // on the browser we're switching to has gone away, try to find out
index 7e6ef77ec407eccb3e07bc21d85d8418ab84e011..4e8b4d3a3d8e27dc6592427e7560a9be23645c3c
GIT binary patch
literal 20316
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
--- a/browser/base/content/test/general/browser.ini
+++ b/browser/base/content/test/general/browser.ini
@@ -142,16 +142,17 @@ support-files =
 [browser_aboutSupport_newtab_security_state.js]
 [browser_aboutHealthReport.js]
 skip-if = os == "linux" # Bug 924307
 [browser_aboutHome.js]
 [browser_aboutHome_wrapsCorrectly.js]
 [browser_addKeywordSearch.js]
 [browser_alltabslistener.js]
 [browser_audioTabIcon.js]
+tags = audiochannel
 [browser_backButtonFitts.js]
 skip-if = os == "mac" # The Fitt's Law back button is not supported on OS X
 [browser_beforeunload_duplicate_dialogs.js]
 [browser_blob-channelname.js]
 [browser_bookmark_popup.js]
 skip-if = (os == "linux" && debug) # mouseover not reliable on linux debug builds
 [browser_bookmark_titles.js]
 skip-if = buildapp == 'mulet' || toolkit == "windows" # Disabled on Windows due to frequent failures (bugs 825739, 841341)
--- a/browser/components/contextualidentity/test/browser/browser.ini
+++ b/browser/components/contextualidentity/test/browser/browser.ini
@@ -1,14 +1,15 @@
 [DEFAULT]
 skip-if = buildapp == "mulet"
 support-files =
   empty_file.html
   file_reflect_cookie_into_title.html
   serviceworker.html
   worker.js
 
+[browser_aboutURLs.js]
 [browser_usercontext.js]
 [browser_usercontextid_tabdrop.js]
 [browser_windowName.js]
 [browser_windowOpen.js]
 [browser_serviceworkers.js]
 [browser_broadcastchannel.js]
new file mode 100644
--- /dev/null
+++ b/browser/components/contextualidentity/test/browser/browser_aboutURLs.js
@@ -0,0 +1,42 @@
+add_task(function* () {
+  let aboutURLs = [];
+
+  // List of about: URLs that will initiate network requests.
+  let networkURLs = [
+    "credits",
+    "telemetry" // about:telemetry will fetch Telemetry asynchrounously and takes
+                // longer, we skip this for now.
+  ];
+
+  let ios = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
+  for (let cid in Cc) {
+    let result = cid.match(/@mozilla.org\/network\/protocol\/about;1\?what\=(.*)$/);
+    if (!result) {
+      continue;
+    }
+
+    let aboutType = result[1];
+    let contract = "@mozilla.org/network/protocol/about;1?what=" + aboutType;
+    try {
+      let am = Cc[contract].getService(Ci.nsIAboutModule);
+      let uri = ios.newURI("about:"+aboutType, null, null);
+      let flags = am.getURIFlags(uri);
+      if (!(flags & Ci.nsIAboutModule.HIDE_FROM_ABOUTABOUT) &&
+          networkURLs.indexOf(aboutType) == -1) {
+        aboutURLs.push(aboutType);
+      }
+    } catch (e) {
+      // getService might have thrown if the component doesn't actually
+      // implement nsIAboutModule
+    }
+  }
+
+  for (let url of aboutURLs) {
+    let tab = gBrowser.addTab("about:"+url, {userContextId: 1});
+    yield BrowserTestUtils.browserLoaded(tab.linkedBrowser);
+
+    ok(true);
+
+    yield BrowserTestUtils.removeTab(tab);
+  }
+});
--- a/browser/components/extensions/ext-browserAction.js
+++ b/browser/components/extensions/ext-browserAction.js
@@ -33,16 +33,22 @@ function BrowserAction(options, extensio
     enabled: true,
     title: options.default_title || extension.name,
     badgeText: "",
     badgeBackgroundColor: null,
     icon: IconDetails.normalize({path: options.default_icon}, extension),
     popup: options.default_popup || "",
   };
 
+  this.browserStyle = options.browser_style || false;
+  if (options.browser_style === null) {
+    this.extension.logger.warn("Please specify whether you want browser_style " +
+                               "or not in your browser_action options.");
+  }
+
   this.tabContext = new TabContext(tab => Object.create(this.defaults),
                                    extension);
 
   EventEmitter.decorate(this);
 }
 
 BrowserAction.prototype = {
   build() {
@@ -86,17 +92,17 @@ BrowserAction.prototype = {
         this.tabManager.addActiveTabPermission(tab);
 
         // If the widget has a popup URL defined, we open a popup, but do not
         // dispatch a click event to the extension.
         // If it has no popup URL defined, we dispatch a click event, but do not
         // open a popup.
         if (popupURL) {
           try {
-            new ViewPopup(this.extension, event.target, popupURL);
+            new ViewPopup(this.extension, event.target, popupURL, this.browserStyle);
           } catch (e) {
             Cu.reportError(e);
             event.preventDefault();
           }
         } else {
           // This isn't not a hack, but it seems to provide the correct behavior
           // with the fewest complications.
           event.preventDefault();
--- a/browser/components/extensions/ext-pageAction.js
+++ b/browser/components/extensions/ext-pageAction.js
@@ -21,16 +21,22 @@ function PageAction(options, extension) 
 
   this.defaults = {
     show: false,
     title: options.default_title || extension.name,
     icon: IconDetails.normalize({path: options.default_icon}, extension),
     popup: options.default_popup || "",
   };
 
+  this.browserStyle = options.browser_style || false;
+  if (options.browser_style === null) {
+    this.extension.logger.warn("Please specify whether you want browser_style " +
+                               "or not in your page_action options.");
+  }
+
   this.tabContext = new TabContext(tab => Object.create(this.defaults),
                                    extension);
 
   this.tabContext.on("location-change", this.handleLocationChange.bind(this)); // eslint-disable-line mozilla/balanced-listeners
 
   // WeakMap[ChromeWindow -> <xul:image>]
   this.buttons = new WeakMap();
 
@@ -147,17 +153,18 @@ PageAction.prototype = {
 
     this.tabManager.addActiveTabPermission(tab);
 
     // If the widget has a popup URL defined, we open a popup, but do not
     // dispatch a click event to the extension.
     // If it has no popup URL defined, we dispatch a click event, but do not
     // open a popup.
     if (popupURL) {
-      new PanelPopup(this.extension, this.getButton(window), popupURL);
+      new PanelPopup(this.extension, this.getButton(window), popupURL,
+                     this.browserStyle);
     } else {
       this.emit("click", tab);
     }
   },
 
   handleLocationChange(eventType, tab, fromBrowse) {
     if (fromBrowse) {
       this.tabContext.clear(tab);
--- a/browser/components/extensions/ext-utils.js
+++ b/browser/components/extensions/ext-utils.js
@@ -154,26 +154,27 @@ XPCOMUtils.defineLazyGetter(global, "sty
     let macStyleSheet = styleSheetService.preloadSheet(styleSheetURI,
                                                        styleSheetService.AGENT_SHEET);
     stylesheets.push(macStyleSheet);
   }
   return stylesheets;
 });
 
 class BasePopup {
-  constructor(extension, viewNode, popupURL) {
+  constructor(extension, viewNode, popupURL, browserStyle) {
     let popupURI = Services.io.newURI(popupURL, null, extension.baseURI);
 
     Services.scriptSecurityManager.checkLoadURIWithPrincipal(
       extension.principal, popupURI,
       Services.scriptSecurityManager.DISALLOW_SCRIPT);
 
     this.extension = extension;
     this.popupURI = popupURI;
     this.viewNode = viewNode;
+    this.browserStyle = browserStyle;
     this.window = viewNode.ownerDocument.defaultView;
 
     this.contentReady = new Promise(resolve => {
       this._resolveContentReady = resolve;
     });
 
     this.viewNode.addEventListener(this.DESTROY_EVENT, this);
 
@@ -207,17 +208,17 @@ class BasePopup {
 
   handleEvent(event) {
     switch (event.type) {
       case this.DESTROY_EVENT:
         this.destroy();
         break;
 
       case "DOMWindowCreated":
-        if (event.target === this.browser.contentDocument) {
+        if (this.browserStyle && event.target === this.browser.contentDocument) {
           let winUtils = this.browser.contentWindow
               .QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils);
           for (let stylesheet of global.stylesheets) {
             winUtils.addSheet(stylesheet, winUtils.AGENT_SHEET);
           }
         }
         break;
 
@@ -325,28 +326,28 @@ class BasePopup {
     this.browser.style.width = `${width}px`;
     this.browser.style.height = `${height}px`;
 
     this._resolveContentReady();
   }
 }
 
 global.PanelPopup = class PanelPopup extends BasePopup {
-  constructor(extension, imageNode, popupURL) {
+  constructor(extension, imageNode, popupURL, browserStyle) {
     let document = imageNode.ownerDocument;
 
     let panel = document.createElement("panel");
     panel.setAttribute("id", makeWidgetId(extension.id) + "-panel");
     panel.setAttribute("class", "browser-extension-panel");
     panel.setAttribute("type", "arrow");
     panel.setAttribute("role", "group");
 
     document.getElementById("mainPopupSet").appendChild(panel);
 
-    super(extension, panel, popupURL);
+    super(extension, panel, popupURL, browserStyle);
 
     this.contentReady.then(() => {
       panel.openPopup(imageNode, "bottomcenter topright", 0, 0, false, false);
     });
   }
 
   get DESTROY_EVENT() {
     return "popuphidden";
--- a/browser/components/extensions/extension.css
+++ b/browser/components/extensions/extension.css
@@ -133,47 +133,158 @@ button.default.pressed {
 
 button.default.focused {
   border-color: #fff;
 }
 
 /* Radio Buttons */
 .radioItem {
   margin-bottom: 6px;
+  text-align: left;
+}
+
+input[type="radio"] {
+  display: none;
 }
 
 input[type="radio"] + label {
   -moz-user-select: none;
-  text-align: left;
+}
+
+input[type="radio"] + label::before {
+  background-color: #fff;
+  background-position: center;
+  border: 1px solid #b1b1b1;
+  border-radius: 50%;
+  content: "";
+  display: inline-block;
+  height: 16px;
+  margin-right: 6px;
+  vertical-align: text-top;
+  width: 16px;
+}
+
+input[type="radio"]:hover + label::before,
+.radioItem.hover input[type="radio"]:not(active) + label::before {
+  background-color: #fbfbfb;
+  border-color: #b1b1b1;
+}
+
+input[type="radio"]:hover:active + label::before,
+.radioItem.pressed input[type="radio"]:not(active) + label::before {
+  background-color: #ebebeb;
+  border-color: #858585;
+}
+
+input[type="radio"]:checked + label::before {
+  background-color: #0996f8;
+  background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8Y2lyY2xlIGN4PSI4IiBjeT0iOCIgcj0iNCIgZmlsbD0iI2ZmZiIgLz4KPC9zdmc+Cg==);
+  border-color: #0670cc;
+}
+
+input[type="radio"]:checked:hover + label::before,
+.radioItem.hover input[type="radio"]:checked:not(active) + label::before {
+  background-color: #0670cc;
+  border-color: #005bab;
+}
+
+input[type="radio"]:checked:hover:active + label::before,
+.radioItem.pressed input[type="radio"]:checked:not(active) + label::before {
+  background-color: #005bab;
+  border-color: #004480;
 }
 
 .radioItem.disabled input[type="radio"] + label,
 .radioItem.disabled input[type="radio"]:hover + label,
 .radioItem.disabled input[type="radio"]:hover:active + label {
   color: #999;
   opacity: .5;
 }
 
+.radioItem.focused input[type="radio"] + label::before {
+  border-color: #0996f8;
+  box-shadow: 0 0 0 2px rgba(97, 181, 255, 0.75);
+}
+
+.radioItem.focused input[type="radio"]:checked + label::before {
+  border-color: #fff;
+}
+
 /* Checkboxes */
 .checkboxItem {
   margin-bottom: 6px;
+  text-align: left;
+}
+
+input[type="checkbox"] {
+  display: none;
 }
 
 input[type="checkbox"] + label {
   -moz-user-select: none;
-  text-align: left;
+}
+
+input[type="checkbox"] + label::before {
+  background-color: #fff;
+  background-position: center;
+  border: 1px solid #b1b1b1;
+  content: "";
+  display: inline-block;
+  height: 16px;
+  margin-right: 6px;
+  vertical-align: text-top;
+  width: 16px;
+}
+
+input[type="checkbox"]:hover + label::before,
+.checkboxItem.hover input[type="checkbox"]:not(active) + label::before {
+  background-color: #fbfbfb;
+  border-color: #b1b1b1;
+}
+
+input[type="checkbox"]:hover:active + label::before,
+.checkboxItem.pressed input[type="checkbox"]:not(active) + label::before {
+  background-color: #ebebeb;
+  border-color: #858585;
+}
+
+input[type="checkbox"]:checked + label::before {
+  background-color: #0996f8;
+  background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBkPSJNNy43LDEyLjkgQzcuNCwxMy4zIDYuOCwxMy40IDYuNCwxMyBMMy4yLDkuOCBDMi44LDkuNCAyLjgsOC42IDMuMiw4LjIgQzMuNiw3LjggNC40LDcuOCA0LjgsOC4yIEw2LjksMTAuMyBMMTEuMSw0LjQgQzExLjUsMy45IDEyLjIsMy44IDEyLjcsNC4xIEMxMy4yLDQuNSAxMy4zLDUuMiAxMyw1LjcgTDcuNywxMi45IEw3LjcsMTIuOSBaIiBmaWxsPSIjZmZmIiAvPgo8L3N2Zz4K);
+  border-color: #0670cc;
+}
+
+input[type="checkbox"]:checked:hover + label::before,
+.checkboxItem.hover input[type="checkbox"]:checked:not(active) + label::before {
+  background-color: #0670cc;
+  border-color: #005bab;
+}
+
+input[type="checkbox"]:checked:hover:active + label::before,
+.checkboxItem.pressed input[type="checkbox"]:checked:not(active) + label::before {
+  background-color: #005bab;
+  border-color: #004480;
 }
 
 .checkboxItem.disabled input[type="checkbox"] + label,
 .checkboxItem.disabled input[type="checkbox"]:hover + label,
 .checkboxItem.disabled input[type="checkbox"]:hover:active + label {
   color: #999;
   opacity: .5;
 }
 
+.checkboxItem.focused input[type="checkbox"] + label::before {
+  border-color: #0996f8;
+  box-shadow: 0 0 0 2px rgba(97, 181, 255, 0.75);
+}
+
+.checkboxItem.focused input[type="checkbox"]:checked + label::before {
+  border-color: #fff;
+}
+
 /* Expander Button */
 button.expander {
   background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBkPSJNOCwxMkwzLDcsNCw2bDQsNCw0LTQsMSwxWiIgZmlsbD0iIzZBNkE2QSIgLz4KPC9zdmc+Cg==);
   background-position: center;
   background-repeat: no-repeat;
   height: 24px;
   padding: 0;
   width: 24px;
@@ -349,17 +460,17 @@ textarea:focus:hover {
 }
 
 .panel-formElements-item:last-child {
   margin-bottom: 0;
 }
 
 .panel-formElements-item label {
   flex-shrink: 0;
-  margin: 0 6px;
+  margin-right: 6px;
   text-align: right;
 }
 
 .panel-formElements-item input[type="text"],
 .panel-formElements-item select {
   flex-grow: 1;
 }
 
--- a/browser/components/extensions/schemas/browser_action.json
+++ b/browser/components/extensions/schemas/browser_action.json
@@ -22,16 +22,20 @@
                 "$ref": "IconPath",
                 "optional": true
               },
               "default_popup": {
                 "type": "string",
                 "format": "relativeUrl",
                 "optional": true,
                 "preprocess": "localize"
+              },
+              "browser_style": {
+                "type": "boolean",
+                "optional": true
               }
             },
             "optional": true
           }
         }
       }
     ]
   },
--- a/browser/components/extensions/schemas/page_action.json
+++ b/browser/components/extensions/schemas/page_action.json
@@ -22,16 +22,20 @@
                 "$ref": "IconPath",
                 "optional": true
               },
               "default_popup": {
                 "type": "string",
                 "format": "relativeUrl",
                 "optional": true,
                 "preprocess": "localize"
+              },
+              "browser_style": {
+                "type": "boolean",
+                "optional": true
               }
             },
             "optional": true
           }
         }
       }
     ]
   },
--- a/browser/components/extensions/test/browser/browser_ext_browserAction_popup.js
+++ b/browser/components/extensions/test/browser/browser_ext_browserAction_popup.js
@@ -7,28 +7,27 @@ function* testInArea(area) {
 
   let extension = ExtensionTestUtils.loadExtension({
     manifest: {
       "background": {
         "page": "data/background.html",
       },
       "browser_action": {
         "default_popup": "popup-a.html",
+        "browser_style": true,
       },
     },
 
     files: {
       "popup-a.html": scriptPage("popup-a.js"),
       "popup-a.js": function() {
         window.onload = () => {
-          if (window.getComputedStyle(document.body).backgroundColor == "rgb(252, 252, 252)") {
-            browser.runtime.sendMessage("from-popup-a");
-          } else {
-            browser.runtime.sendMessage("popup-a-failed-style-check");
-          }
+          let background = window.getComputedStyle(document.body).backgroundColor;
+          browser.test.assertEq("rgb(252, 252, 252)", background);
+          browser.runtime.sendMessage("from-popup-a");
         };
         browser.runtime.onMessage.addListener(msg => {
           if (msg == "close-popup") {
             window.close();
           }
         });
       },
 
@@ -75,18 +74,16 @@ function* testInArea(area) {
         sendClick = ({expectEvent, expectPopup, runNextTest}) => {
           expect = {event: expectEvent, popup: expectPopup, runNextTest};
           browser.test.sendMessage("send-click");
         };
 
         browser.runtime.onMessage.addListener(msg => {
           if (msg == "close-popup") {
             return;
-          } else if (msg == "popup-a-failed-style-check") {
-            browser.test.fail("popup failed style check");
           } else if (expect.popup) {
             browser.test.assertEq(msg, `from-popup-${expect.popup}`,
                                   "expected popup opened");
           } else {
             browser.test.fail(`unexpected popup: ${msg}`);
           }
 
           expect.popup = null;
--- a/browser/components/extensions/test/browser/browser_ext_pageAction_popup.js
+++ b/browser/components/extensions/test/browser/browser_ext_pageAction_popup.js
@@ -13,17 +13,21 @@ add_task(function* testPageActionPopup()
       "page_action": {
         "default_popup": "popup-a.html",
       },
     },
 
     files: {
       "popup-a.html": scriptPage("popup-a.js"),
       "popup-a.js": function() {
-        browser.runtime.sendMessage("from-popup-a");
+        window.onload = () => {
+          let background = window.getComputedStyle(document.body).backgroundColor;
+          browser.test.assertEq("transparent", background);
+          browser.runtime.sendMessage("from-popup-a");
+        };
         browser.runtime.onMessage.addListener(msg => {
           if (msg == "close-popup") {
             window.close();
           }
         });
       },
 
       "data/popup-b.html": scriptPage("popup-b.js"),
--- a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.js
+++ b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.js
@@ -51,24 +51,23 @@ document.addEventListener("DOMContentLoa
            .setAttribute("href", FAVICON_QUESTION);
    document.getElementById("startPrivateBrowsing")
            .addEventListener("command", openPrivateWindow);
    return;
  }
 
  let tpToggle = document.getElementById("tpToggle");
  document.getElementById("tpButton").addEventListener('click', () => {
-   tpToggle.checked = !tpToggle.checked;
+   tpToggle.click();
  });
 
  document.title = stringBundle.GetStringFromName("title.head");
  document.getElementById("favicon")
          .setAttribute("href", FAVICON_PRIVACY);
- document.getElementById("tpButton")
-         .addEventListener("click", toggleTrackingProtection);
+ tpToggle.addEventListener("change", toggleTrackingProtection);
  document.getElementById("startTour")
          .addEventListener("click", dontShowIntroPanelAgain);
 
  let formatURLPref = Cc["@mozilla.org/toolkit/URLFormatterService;1"]
                        .getService(Ci.nsIURLFormatter).formatURLPref;
  document.getElementById("startTour").setAttribute("href",
                     formatURLPref("privacy.trackingprotection.introURL"));
  document.getElementById("learnMore").setAttribute("href",
--- a/browser/themes/shared/newtab/newTab.inc.css
+++ b/browser/themes/shared/newtab/newTab.inc.css
@@ -190,17 +190,17 @@
   height: 17px;
   left: 0;
   position: absolute;
   width: 10px;
   margin-left: 8px;
   margin-top: 6px;
 }
 
-.newtab-site[pinned] .newtab-title:-moz-dir(rtl)::before {
+.newtab-site[pinned] .newtab-title:dir(rtl)::before {
   left: auto;
   right: 0;
 }
 
 /* CONTROLS */
 .newtab-control {
   background-color: transparent;
   background-size: 24px;
--- a/browser/themes/windows/syncedtabs/sidebar.css
+++ b/browser/themes/windows/syncedtabs/sidebar.css
@@ -110,23 +110,23 @@ html {
 .item.client .item-twisty-container:hover {
   background-image: url("chrome://global/skin/tree/twisty.svg#open-hover");
 }
 
 .item.client.closed .item-twisty-container:hover {
   background-image: url("chrome://global/skin/tree/twisty.svg#clsd-hover");
 }
 
-.item.client .item-twisty-container:-moz-dir(rtl) {
+.item.client .item-twisty-container:dir(rtl) {
   background-image: url("chrome://global/skin/tree/twisty.svg#open-rtl");
 }
 
-.item.client.closed .item-twisty-container:-moz-dir(rtl) {
+.item.client.closed .item-twisty-container:dir(rtl) {
   background-image: url("chrome://global/skin/tree/twisty.svg#clsd-rtl");
 }
 
-.item.client .item-twisty-container:hover:-moz-dir(rtl) {
+.item.client .item-twisty-container:hover:dir(rtl) {
   background-image: url("chrome://global/skin/tree/twisty.svg#open-hover-rtl");
 }
 
-.item.client.closed .item-twisty-container:hover:-moz-dir(rtl) {
+.item.client.closed .item-twisty-container:hover:dir(rtl) {
   background-image: url("chrome://global/skin/tree/twisty.svg#clsd-hover-rtl");
 }
--- a/build/Makefile.in
+++ b/build/Makefile.in
@@ -1,37 +1,20 @@
 #
 # 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/.
 
-ifdef MOZ_APP_BASENAME
-APP_INI_DEPS = $(topsrcdir)/config/milestone.txt
-
-APP_INI_DEPS += $(DEPTH)/config/autoconf.mk
-endif
-
 ifdef MOZTTDIR
 # Install the Firefox OS fonts.
 include $(MOZTTDIR)/fonts.mk
 MOZTT_DEST = $(FINAL_TARGET)/fonts
 MOZTT_FILES = $(patsubst external/moztt/%,$(MOZTTDIR)/%,$(filter external/moztt/%,$(subst :, ,$(PRODUCT_COPY_FILES))))
 INSTALL_TARGETS += MOZTT
 endif
 
 include $(topsrcdir)/config/rules.mk
 
 TARGET_DEPTH = ..
 include $(srcdir)/automation-build.mk
 
-ifdef MOZ_APP_BASENAME
-$(FINAL_TARGET)/application.ini: $(APP_INI_DEPS)
-
-ifdef MOZ_APP_STATIC_INI
-application.ini.h: appini_header.py $(FINAL_TARGET)/application.ini
-	$(PYTHON) $^ > $@
-export:: application.ini.h
-GARBAGE += application.ini.h
-endif
-endif
-
 libs:: automation.py
 
--- a/build/appini_header.py
+++ b/build/appini_header.py
@@ -3,17 +3,17 @@
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 '''Parses a given application.ini file and outputs the corresponding
    XULAppData structure as a C++ header file'''
 
 import ConfigParser
 import sys
 
-def main(file):
+def main(output, file):
     config = ConfigParser.RawConfigParser()
     config.read(file)
     flags = set()
     try:
         if config.getint('XRE', 'EnableProfileMigrator') == 1:
             flags.add('NS_XRE_ENABLE_PROFILE_MIGRATOR')
     except: pass
     try:
@@ -29,32 +29,32 @@ def main(file):
     if missing:
         print >>sys.stderr, \
             "Missing values in %s: %s" % (file, ', '.join(missing))
         sys.exit(1)
 
     if not 'Crash Reporter:serverurl' in appdata:
         appdata['Crash Reporter:serverurl'] = ''
 
-    print '''#include "nsXREAppData.h"
+    output.write('''#include "nsXREAppData.h"
              static const nsXREAppData sAppData = {
                  sizeof(nsXREAppData),
                  NULL, // directory
                  "%(App:vendor)s",
                  "%(App:name)s",
                  "%(App:remotingname)s",
                  "%(App:version)s",
                  "%(App:buildid)s",
                  "%(App:id)s",
                  NULL, // copyright
                  %(flags)s,
                  NULL, // xreDirectory
                  "%(Gecko:minversion)s",
                  "%(Gecko:maxversion)s",
                  "%(Crash Reporter:serverurl)s",
                  %(App:profile)s
-             };''' % appdata
+             };''' % appdata)
 
 if __name__ == '__main__':
     if len(sys.argv) != 1:
-        main(sys.argv[1])
+        main(sys.stdout, sys.argv[1])
     else:
         print >>sys.stderr, "Usage: %s /path/to/application.ini" % sys.argv[0]
--- a/build/mach_bootstrap.py
+++ b/build/mach_bootstrap.py
@@ -52,16 +52,17 @@ environment.
 MERCURIAL_SETUP_FATAL_INTERVAL = 31 * 24 * 60 * 60
 
 
 # TODO Bug 794506 Integrate with the in-tree virtualenv configuration.
 SEARCH_PATHS = [
     'python/mach',
     'python/mozboot',
     'python/mozbuild',
+    'python/mozlint',
     'python/mozversioncontrol',
     'python/blessings',
     'python/compare-locales',
     'python/configobj',
     'python/futures',
     'python/jsmin',
     'python/psutil',
     'python/which',
@@ -134,16 +135,17 @@ MACH_MODULES = [
     'testing/marionette/mach_commands.py',
     'testing/mochitest/mach_commands.py',
     'testing/mozharness/mach_commands.py',
     'testing/talos/mach_commands.py',
     'testing/taskcluster/mach_commands.py',
     'testing/web-platform/mach_commands.py',
     'testing/xpcshell/mach_commands.py',
     'tools/docs/mach_commands.py',
+    'tools/lint/mach_commands.py',
     'tools/mercurial/mach_commands.py',
     'tools/mach_commands.py',
     'tools/power/mach_commands.py',
     'mobile/android/mach_commands.py',
 ]
 
 
 CATEGORIES = {
--- a/build/moz.build
+++ b/build/moz.build
@@ -65,16 +65,22 @@ FINAL_TARGET_FILES += ['/.gdbinit']
 if CONFIG['MOZ_ASAN'] and CONFIG['CLANG_CL']:
     FINAL_TARGET_FILES += ['%' + CONFIG['MOZ_CLANG_RT_ASAN_LIB_PATH']]
 
 if CONFIG['MOZ_APP_BASENAME']:
     FINAL_TARGET_PP_FILES += ['application.ini']
     if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'android' and CONFIG['MOZ_UPDATER']:
         FINAL_TARGET_PP_FILES += ['update-settings.ini']
 
+    if CONFIG['MOZ_APP_STATIC_INI']:
+        GENERATED_FILES += ['application.ini.h']
+        appini = GENERATED_FILES['application.ini.h']
+        appini.script = 'appini_header.py'
+        appini.inputs = ['!/dist/bin/application.ini']
+
 DEFINES['TOPOBJDIR'] = TOPOBJDIR
 
 # NOTE: Keep .gdbinit in the topsrcdir for people who run gdb from the topsrcdir.
 OBJDIR_FILES += ['/.gdbinit']
 
 # Put a .lldbinit in the bin directory and the objdir, to be picked up
 # automatically by LLDB when we debug executables using either of those two
 # directories as the current working directory.  The .lldbinit file will
--- a/build/virtualenv_packages.txt
+++ b/build/virtualenv_packages.txt
@@ -2,16 +2,17 @@ marionette_driver.pth:testing/marionette
 browsermobproxy.pth:testing/marionette/harness/marionette/runner/mixins/browsermob-proxy-py
 wptserve.pth:testing/web-platform/tests/tools/wptserve
 marionette.pth:testing/marionette/harness
 blessings.pth:python/blessings
 configobj.pth:python/configobj
 jsmin.pth:python/jsmin
 mach.pth:python/mach
 mozbuild.pth:python/mozbuild
+mozlint.pth:python/mozlint
 pymake.pth:build/pymake
 optional:setup.py:python/psutil:build_ext:--inplace
 optional:psutil.pth:python/psutil
 which.pth:python/which
 ply.pth:other-licenses/ply/
 mock.pth:python/mock-1.0.0
 mozilla.pth:build
 mozilla.pth:config
--- a/devtools/client/themes/layout.css
+++ b/devtools/client/themes/layout.css
@@ -21,29 +21,29 @@
 #layout-header {
   box-sizing: border-box;
   width: 100%;
   padding: 4px 14px;
   display: -moz-box;
   vertical-align: top;
 }
 
-#layout-header:-moz-dir(rtl) {
+#layout-header:dir(rtl) {
   -moz-box-direction: reverse;
 }
 
 #layout-header > span {
   display: -moz-box;
 }
 
 #layout-element-size {
   -moz-box-flex: 1;
 }
 
-#layout-element-size:-moz-dir(rtl) {
+#layout-element-size:dir(rtl) {
   -moz-box-pack: end;
 }
 
 @media (max-height: 250px) {
   #layout-header {
     padding-top: 0;
     padding-bottom: 0;
     margin-top: 10px;
--- a/devtools/client/themes/toolbars.css
+++ b/devtools/client/themes/toolbars.css
@@ -405,17 +405,17 @@
   background-image: var(--magnifying-glass-image);
   background-position: 8px center;
   background-size: 11px 11px;
   background-repeat: no-repeat;
   font-size: inherit;
 }
 
 .devtools-searchinput:-moz-locale-dir(rtl),
-.devtools-searchinput:-moz-dir(rtl) {
+.devtools-searchinput:dir(rtl) {
   background-position: calc(100% - 8px) center;
 }
 
 .devtools-searchinput > .textbox-input-box > .textbox-search-icons > .textbox-search-icon {
   visibility: hidden;
 }
 
 /* Searchbox is a div container element for a search input element */
@@ -487,17 +487,17 @@
   border: 0;
   width: 16px;
   height: 16px;
   background-position: 0 0;
   background-repeat: no-repeat;
   background-color: transparent;
 }
 
-.devtools-searchinput-clear:-moz-dir(rtl) {
+.devtools-searchinput-clear:dir(rtl) {
   right: unset;
   left: 7px;
 }
 
 .theme-dark .devtools-searchinput-clear {
   background-image: url("chrome://devtools/skin/images/search-clear-dark.svg");
 }
 
--- a/devtools/shared/gcli/source/docs/running-tests.md
+++ b/devtools/shared/gcli/source/docs/running-tests.md
@@ -43,27 +43,16 @@ Or, using the `test` command:
     testCompletion: Pass (funcs=1, checks=139)
     testExec: Pass (funcs=1, checks=133)
     testHistory: Pass (funcs=3, checks=13)
     ....
     
     Summary: Pass (951 checks)
 
 
-# Phantom
-
-The GCLI test suite can also be run under PhantomJS as follows:
-
-    $ phantomjs ./phantom-test.js
-    
-    Summary: Pass (4289 checks)
-    
-    Finished running unit tests. (total 3.843s, ave response time 3.36ms, ...)
-
-
 # Travis CI
 
 GCLI check-ins are automatically tested by [Travis CI](https://travis-ci.org/joewalker/gcli).
 
 
 # Test Case Generation
 
 GCLI can generate test cases automagically. Load ```localtest.html```, type a
--- a/devtools/shared/gcli/source/docs/writing-tests.md
+++ b/devtools/shared/gcli/source/docs/writing-tests.md
@@ -2,17 +2,17 @@
 # Writing Tests
 
 There are several sources of GCLI tests and several environments in which they
 are run.
 
 The majority of GCLI tests are stored in
 [this repository](https://github.com/joewalker/gcli/) in files named like
 ```./lib/gclitest/test*.js```. These tests run in Firefox, Chrome, Opera,
-PhantomJS, and NodeJS/JsDom
+and NodeJS/JsDom
 
 See [Running Tests](running-tests.md) for further details.
 
 GCLI comes with a generic unit test harness (in ```./lib/test/```) and a
 set of helpers for creating GCLI tests (in ```./lib/gclitest/helpers.js```).
 
 # GCLI tests in Firefox
 
--- a/devtools/shared/gcli/source/lib/gcli/cli.js
+++ b/devtools/shared/gcli/source/lib/gcli/cli.js
@@ -1163,17 +1163,19 @@ Requisition.prototype.getInputStatusMark
   cursor = cursor === 0 ? 0 : cursor - 1;
   var cTrace = argTraces[cursor];
 
   var markup = [];
   for (var i = 0; i < argTraces.length; i++) {
     var argTrace = argTraces[i];
     var arg = argTrace.arg;
     var status = Status.VALID;
-    if (argTrace.part === 'text') {
+    // When things get very async we can get here while something else is
+    // doing an update, in which case arg.assignment == null, so we check first
+    if (argTrace.part === 'text' && arg.assignment != null) {
       status = arg.assignment.getStatus(arg);
       // Promote INCOMPLETE to ERROR  ...
       if (status === Status.INCOMPLETE) {
         // If the cursor is in the prefix or suffix of an argument then we
         // don't consider it in the argument for the purposes of preventing
         // the escalation to ERROR. However if this is a NamedArgument, then we
         // allow the suffix (as space between 2 parts of the argument) to be in.
         // We use arg.assignment.arg not arg because we're looking at the arg
deleted file mode 100644
--- a/devtools/shared/gcli/source/lib/gcli/commands/connect.js
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright 2012, Mozilla Foundation and contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-var l10n = require('../util/l10n');
-var cli = require('../cli');
-var GcliFront = require('../connectors/remoted').GcliFront;
-
-/**
- * A lookup of the current connection
- */
-var fronts = {};
-
-/**
- * 'connection' type
- */
-var connection = {
-  item: 'type',
-  name: 'connection',
-  parent: 'selection',
-  lookup: function() {
-    return Object.keys(fronts).map(function(prefix) {
-      return { name: prefix, value: fronts[prefix] };
-    });
-  }
-};
-
-/**
- * 'connector' type
- */
-var connector = {
-  item: 'type',
-  name: 'connector',
-  parent: 'selection',
-  lookup: function(context) {
-    var connectors = context.system.connectors;
-    return connectors.getAll().map(function(connector) {
-      return { name: connector.name, value: connector };
-    });
-  }
-};
-
-/**
- * 'connect' command
- */
-var connect = {
-  item: 'command',
-  name: 'connect',
-  description: l10n.lookup('connectDesc'),
-  manual: l10n.lookup('connectManual'),
-  params: [
-    {
-      name: 'prefix',
-      type: 'string',
-      description: l10n.lookup('connectPrefixDesc')
-    },
-    {
-      name: 'method',
-      short: 'm',
-      type: 'connector',
-      description: l10n.lookup('connectMethodDesc'),
-      defaultValue: null,
-      option: true
-    },
-    {
-      name: 'url',
-      short: 'u',
-      type: 'string',
-      description: l10n.lookup('connectUrlDesc'),
-      defaultValue: null,
-      option: true
-    }
-  ],
-  returnType: 'string',
-
-  exec: function(args, context) {
-    if (fronts[args.prefix] != null) {
-      throw new Error(l10n.lookupFormat('connectDupReply', [ args.prefix ]));
-    }
-
-    args.method = args.method || context.system.connectors.get('xhr');
-
-    return GcliFront.create(args.method, args.url).then(function(front) {
-      // Nasty: stash the prefix on the front to help us tidy up
-      front.prefix = args.prefix;
-      fronts[args.prefix] = front;
-
-      return front.specs().then(function(specs) {
-        var remoter = this.createRemoter(args.prefix, front);
-        var commands = cli.getMapping(context).requisition.system.commands;
-        commands.addProxyCommands(specs, remoter, args.prefix, args.url);
-
-        // TODO: We should add type proxies here too
-
-        // commandSpecs doesn't include the parent command that we added
-        return l10n.lookupFormat('connectReply',
-                                 [ Object.keys(specs).length + 1 ]);
-      }.bind(this));
-    }.bind(this));
-  },
-
-  /**
-   * When we register a set of remote commands, we need to provide a proxy
-   * executor. This is that executor.
-   */
-  createRemoter: function(prefix, front) {
-    return function(cmdArgs, context) {
-      var typed = context.typed;
-
-      // If we've been called using a 'context' then there will be no prefix
-      // otherwise we need to remove it
-      if (typed.indexOf(prefix) === 0) {
-        typed = typed.substring(prefix.length).replace(/^ */, '');
-      }
-
-      return front.execute(typed).then(function(reply) {
-        var typedData = context.typedData(reply.type, reply.data);
-        if (!reply.error) {
-          return typedData;
-        }
-        else {
-          throw typedData;
-        }
-      });
-    }.bind(this);
-  }
-};
-
-/**
- * 'disconnect' command
- */
-var disconnect = {
-  item: 'command',
-  name: 'disconnect',
-  description: l10n.lookup('disconnectDesc2'),
-  manual: l10n.lookup('disconnectManual2'),
-  params: [
-    {
-      name: 'prefix',
-      type: 'connection',
-      description: l10n.lookup('disconnectPrefixDesc')
-    }
-  ],
-  returnType: 'string',
-
-  exec: function(args, context) {
-    var front = args.prefix;
-    return front.connection.disconnect().then(function() {
-      var commands = cli.getMapping(context).requisition.system.commands;
-      var removed = commands.removeProxyCommands(front.prefix);
-      delete fronts[front.prefix];
-      return l10n.lookupFormat('disconnectReply', [ removed.length ]);
-    });
-  }
-};
-
-exports.items = [ connection, connector, connect, disconnect ];
deleted file mode 100644
--- a/devtools/shared/gcli/source/lib/gcli/commands/exec.js
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright 2012, Mozilla Foundation and contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-var host = require('../util/host');
-var l10n = require('../util/l10n');
-var cli = require('../cli');
-
-exports.items = [
-  {
-    // 'cd' command
-    item: 'command',
-    name: 'cd',
-    description: l10n.lookup('cdDesc'),
-    manual: l10n.lookup('cdManual'),
-    params: [
-      {
-        name: 'directory',
-        type: {
-          name: 'file',
-          filetype: 'directory',
-          existing: 'yes'
-        },
-        description: l10n.lookup('cdDirectoryDesc')
-      }
-    ],
-    returnType: 'string',
-    exec: function(args, context) {
-      context.shell.cwd = args.directory;
-      return l10n.lookupFormat('cdOutput', [ context.shell.cwd ]);
-    }
-  },
-  {
-    // 'exec' command
-    item: 'command',
-    name: 'exec',
-    description: l10n.lookup('execDesc'),
-    manual: l10n.lookup('execManual'),
-    params: [
-      {
-        name: 'command',
-        type: 'string',
-        description: l10n.lookup('execCommandDesc')
-      }
-    ],
-    returnType: 'output',
-    exec: function(args, context) {
-      var cmdArgs = cli.tokenize(args.command).map(function(arg) {
-        return arg.text;
-      });
-      var cmd = cmdArgs.shift();
-
-      var spawnSpec = {
-        cmd: cmd,
-        args: cmdArgs,
-        env: context.shell.env,
-        cwd: context.shell.cwd
-      };
-
-      return host.spawn(context, spawnSpec).then(function(output) {
-        if (output.code === 0) {
-          return output;
-        }
-
-        throw output.data;
-      }, function(output) {
-        throw output.data;
-      });
-    }
-  },
-  {
-    // How we display the output of a generic exec command: we have to assume
-    // that it is a string to be displayed in a monospaced font
-    item: 'converter',
-    from: 'output',
-    to: 'view',
-    exec: function(output, context) {
-      return {
-        html: '<pre>${output.data}</pre>',
-        data: { output: output }
-      };
-    }
-  },
-  {
-    item: 'converter',
-    from: 'output',
-    to: 'string',
-    exec: function(output, context) {
-      return output.data;
-    }
-  }
-];
deleted file mode 100644
--- a/devtools/shared/gcli/source/lib/gcli/commands/global.js
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2012, Mozilla Foundation and contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-var l10n = require('../util/l10n');
-
-exports.items = [
-  {
-    // A type for selecting a known setting
-    item: 'type',
-    name: 'global',
-    parent: 'selection',
-    remote: true,
-    lookup: function(context) {
-      var knownWindows = context.environment.window == null ?
-                         [ ] : [ context.environment.window ];
-
-      this.last = findWindows(knownWindows).map(function(window) {
-        return { name: windowToString(window), value: window };
-      });
-
-      return this.last;
-    }
-  },
-  {
-    // A command to switch JS globals
-    item: 'command',
-    runAt: 'client',
-    name: 'global',
-    description: l10n.lookup('globalDesc'),
-    params: [
-      {
-        name: 'window',
-        type: 'global',
-        description: l10n.lookup('globalWindowDesc'),
-      }
-    ],
-    returnType: 'string',
-    exec: function(args, context) {
-      context.shell.global = args.window;
-      return l10n.lookupFormat('globalOutput', [ windowToString(args.window) ]);
-    }
-  }
-];
-
-function windowToString(win) {
-  return win.location ? win.location.href : 'NodeJS-Global';
-}
-
-function findWindows(knownWindows) {
-  knownWindows.forEach(function(window) {
-    addChildWindows(window, knownWindows);
-  });
-  return knownWindows;
-}
-
-function addChildWindows(win, knownWindows) {
-  var iframes = win.document.querySelectorAll('iframe');
-  [].forEach.call(iframes, function(iframe) {
-    var iframeWin = iframe.contentWindow;
-    if (knownWindows.indexOf(iframeWin) === -1) {
-      knownWindows.push(iframeWin);
-      addChildWindows(iframeWin, knownWindows);
-    }
-  });
-}
deleted file mode 100644
--- a/devtools/shared/gcli/source/lib/gcli/commands/intro.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright 2012, Mozilla Foundation and contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-var l10n = require('../util/l10n');
-var intro = require('../ui/intro');
-
-exports.items = [
-  {
-    item: 'converter',
-    from: 'intro',
-    to: 'view',
-    exec: intro.createView
-  },
-  {
-    item: 'command',
-    name: 'intro',
-    description: l10n.lookup('introDesc'),
-    manual: l10n.lookup('introManual'),
-    returnType: 'intro',
-    exec: function(args, context) {
-      // The intro command is pure formatting - no data
-    }
-  }
-];
deleted file mode 100644
--- a/devtools/shared/gcli/source/lib/gcli/commands/lang.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2012, Mozilla Foundation and contributors
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-'use strict';
-
-var l10n = require('../util/l10n');
-var cli = require('../cli');
-
-exports.items = [
-  {
-    // A type that lists available languages
-    item: 'type',
-    name: 'language',
-    parent: 'selection',
-    lookup: function(context) {
-      return context.system.languages.getAll().map(function(language) {
-        return { name: language.name, value: language };
-      });
-    }
-  },
-  {
-    // A command to switch languages
-    item: 'command',
-    name: 'lang',
-    description: l10n.lookup('langDesc'),
-    params: [
-      {
-        name: 'language',
-        type: 'language'
-      }
-    ],
-    returnType: 'view',
-    exec: function(args, context) {
-      var terminal = cli.getMapping(context).terminal;
-
-      context.environment.window.setTimeout(function() {
-        terminal.switchLanguage(args.language);
-      }, 10);
-
-      return {
-        html:
-          '<div class="gcli-section ${style}">' +
-          '  ${langOutput}' +
-          '</div>',
-        data: {
-          langOutput: l10n.lookupFormat('langOutput', [ args.language.name ]),
-          style: args.language.proportionalFonts ? '' : 'gcli-row-script'
-        }
-      };
-    }
-  }
-];
--- a/devtools/shared/gcli/source/lib/gcli/commands/mocks.js
+++ b/devtools/shared/gcli/source/lib/gcli/commands/mocks.js
@@ -13,18 +13,21 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 'use strict';
 
 var cli = require('../cli');
 var mockCommands = require('../test/mockCommands');
+var mockFileCommands = require('../test/mockFileCommands');
 var mockSettings = require('../test/mockSettings');
-var mockDocument = require('../test/mockDocument');
+
+var isNode = (typeof(process) !== 'undefined' &&
+             process.title.indexOf('node') != -1);
 
 exports.items = [
   {
     item: 'command',
     name: 'mocks',
     description: 'Add/remove mock commands',
     params: [
       {
@@ -42,18 +45,24 @@ exports.items = [
       var requisition = cli.getMapping(context).requisition;
       this[args.included](requisition);
       return 'Mock commands are now ' + args.included;
     },
 
     on: function(requisition) {
       mockCommands.setup(requisition);
       mockSettings.setup(requisition.system);
-      mockDocument.setup(requisition);
+
+      if (isNode) {
+        mockFileCommands.setup(requisition);
+      }
     },
 
     off: function(requisition) {
       mockCommands.shutdown(requisition);
       mockSettings.shutdown(requisition.system);
-      mockDocument.shutdown(requisition);
+
+      if (isNode) {
+        mockFileCommands.shutdown(requisition);
+      }
     }
   }
 ];
--- a/devtools/shared/gcli/source/lib/gcli/commands/moz.build
+++ b/devtools/shared/gcli/source/lib/gcli/commands/moz.build
@@ -2,20 +2,15 @@
 # vim: set filetype=python:
 # 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/.
 
 DevToolsModules(
     'clear.js',
     'commands.js',
-    'connect.js',
     'context.js',
-    'exec.js',
-    'global.js',
     'help.js',
-    'intro.js',
-    'lang.js',
     'mocks.js',
     'pref.js',
     'preflist.js',
     'test.js',
 )
--- a/devtools/shared/gcli/source/lib/gcli/commands/test.js
+++ b/devtools/shared/gcli/source/lib/gcli/commands/test.js
@@ -11,25 +11,29 @@
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 'use strict';
 
-require('../test/suite');
-
 var examiner = require('../testharness/examiner');
 var stati = require('../testharness/status').stati;
 var helpers = require('../test/helpers');
+var suite = require('../test/suite');
 var cli = require('../cli');
 var Requisition = require('../cli').Requisition;
 var createRequisitionAutomator = require('../test/automators/requisition').createRequisitionAutomator;
 
+var isNode = (typeof(process) !== 'undefined' &&
+             process.title.indexOf('node') != -1);
+
+suite.init(isNode);
+
 exports.optionsContainer = [];
 
 exports.items = [
   {
     item: 'type',
     name: 'suite',
     parent: 'selection',
     cacheable: true,
@@ -64,22 +68,25 @@ exports.items = [
         throw new Error('Can\'t use --usehost without injected options');
       }
 
       var options;
       if (args.usehost) {
         options = exports.optionsContainer[0];
       }
       else {
+        var env = {
+          document: document,
+          window: window
+        };
         options = {
-          isNode: (typeof(process) !== 'undefined' &&
-                   process.title.indexOf('node') != -1),
+          isNode: isNode,
           isFirefox: false,
           isPhantomjs: false,
-          requisition: new Requisition(context.system)
+          requisition: new Requisition(context.system, { environment: env })
         };
         options.automator = createRequisitionAutomator(options.requisition);
       }
 
       var requisition = options.requisition;
       requisition.system.commands.get('mocks').on(requisition);
       helpers.resetResponseTimes();
       examiner.reset();
--- a/devtools/shared/gcli/source/lib/gcli/languages/command.js
+++ b/devtools/shared/gcli/source/lib/gcli/languages/command.js
@@ -481,26 +481,31 @@ var commandLanguage = exports.commandLan
       }
       if (ev.output.error) {
         data.promptEle.classList.add('gcli-row-error');
       }
 
       util.clearElement(data.rowoutEle);
 
       return ev.output.convert('dom', context).then(function(node) {
+        this.terminal.scrollToBottom();
+        data.throbEle.style.display = ev.output.completed ? 'none' : 'block';
+
+        if (node == null) {
+          data.promptEle.classList.add('gcli-row-error');
+          // TODO: show some error to the user
+        }
+
         this._linksToNewTab(node);
         data.rowoutEle.appendChild(node);
 
         var event = document.createEvent('Event');
         event.initEvent('load', true, true);
         event.addedElement = node;
         node.dispatchEvent(event);
-
-        this.terminal.scrollToBottom();
-        data.throbEle.style.display = ev.output.completed ? 'none' : 'block';
       }.bind(this));
     }.bind(this)).catch(console.error);
 
     this.terminal.addElement(data.rowinEle);
     this.terminal.addElement(data.rowoutEle);
     this.terminal.scrollToBottom();
 
     this.focusManager.outputted();
--- a/devtools/shared/gcli/source/lib/gcli/types/delegate.js
+++ b/devtools/shared/gcli/source/lib/gcli/types/delegate.js
@@ -82,16 +82,17 @@ exports.items = [
     // change the function definition to accommodate this right now
     isImportant: false
   },
   {
     item: 'type',
     name: 'remote',
     paramName: undefined,
     blankIsValid: false,
+    hasPredictions: true,
 
     getSpec: function(commandName, paramName) {
       return {
         name: 'remote',
         commandName: commandName,
         paramName: paramName,
         blankIsValid: this.blankIsValid
       };
--- a/devtools/shared/gcli/source/lib/gcli/types/file.js
+++ b/devtools/shared/gcli/source/lib/gcli/types/file.js
@@ -58,25 +58,21 @@ exports.items = [
       }
 
       if (this.existing !== 'yes' && this.existing !== 'no' &&
           this.existing !== 'maybe') {
         throw new Error('existing must be one of [yes|no|maybe]');
       }
     },
 
-    getSpec: function() {
-      var matches = (typeof this.matches === 'string' || this.matches == null) ?
-                    this.matches :
-                    this.matches.source; // Assume RegExp
+    getSpec: function(commandName, paramName) {
       return {
-        name: 'file',
-        filetype: this.filetype,
-        existing: this.existing,
-        matches: matches
+        name: 'remote',
+        commandName: commandName,
+        paramName: paramName
       };
     },
 
     stringify: function(file) {
       if (file == null) {
         return '';
       }
 
--- a/devtools/shared/gcli/source/lib/gcli/util/host.js
+++ b/devtools/shared/gcli/source/lib/gcli/util/host.js
@@ -55,23 +55,16 @@ Highlighter.prototype._unhighlightNode =
   // Enable when the highlighter rewrite is done
 };
 
 exports.Highlighter = Highlighter;
 
 /**
  * See docs in lib/gcli/util/host.js
  */
-exports.spawn = function(context, spawnSpec) {
-  throw new Error('Not supported');
-};
-
-/**
- * See docs in lib/gcli/util/host.js
- */
 exports.exec = function(task) {
   return Task.spawn(task);
 };
 
 /**
  * The URL API is new enough that we need specific platform help
  */
 exports.createUrl = function(uristr, base) {
--- a/devtools/shared/gcli/source/lib/gcli/util/util.js
+++ b/devtools/shared/gcli/source/lib/gcli/util/util.js
@@ -171,17 +171,17 @@ exports.createEvent = function(name) {
     return new Promise(function(resolve, reject) {
       var handler = function(arg) {
         event.remove(handler);
         resolve(arg);
       };
 
       event.add(handler);
     });
-  },
+  };
 
   /**
    * Temporarily prevent this event from firing.
    * @see resumeFire(ev)
    */
   event.holdFire = function() {
     if (eventDebug) {
       console.group('Holding fire: ' + name);
--- a/dom/audiochannel/AudioChannelAgent.cpp
+++ b/dom/audiochannel/AudioChannelAgent.cpp
@@ -197,30 +197,33 @@ AudioChannelAgent::InitInternal(nsPIDOMW
          ("AudioChannelAgent, InitInternal, this = %p, type = %d, "
           "owner = %p, hasCallback = %d\n", this, mAudioChannelType,
           mWindow.get(), (!!mCallback || !!mWeakCallback)));
 
   return NS_OK;
 }
 
 NS_IMETHODIMP
-AudioChannelAgent::NotifyStartedPlaying(AudioPlaybackConfig* aConfig)
+AudioChannelAgent::NotifyStartedPlaying(AudioPlaybackConfig* aConfig,
+                                        bool aAudible)
 {
   if (NS_WARN_IF(!aConfig)) {
     return NS_ERROR_FAILURE;
   }
 
   RefPtr<AudioChannelService> service = AudioChannelService::GetOrCreate();
   if (mAudioChannelType == AUDIO_AGENT_CHANNEL_ERROR ||
       service == nullptr || mIsRegToService) {
     return NS_ERROR_FAILURE;
   }
 
+  MOZ_ASSERT(AudioChannelService::AudibleState::eAudible == true &&
+             AudioChannelService::AudibleState::eNotAudible == false);
   service->RegisterAudioChannelAgent(this,
-    static_cast<AudioChannel>(mAudioChannelType));
+    static_cast<AudioChannelService::AudibleState>(aAudible));
 
   AudioPlaybackConfig config = service->GetMediaConfig(mWindow,
                                                        mAudioChannelType);
 
   MOZ_LOG(AudioChannelService::GetAudioChannelLog(), LogLevel::Debug,
          ("AudioChannelAgent, NotifyStartedPlaying, this = %p, "
           "mute = %d, volume = %f, suspend = %d\n", this,
           config.mMuted, config.mVolume, config.mSuspend));
@@ -245,16 +248,33 @@ AudioChannelAgent::NotifyStoppedPlaying(
   if (service) {
     service->UnregisterAudioChannelAgent(this);
   }
 
   mIsRegToService = false;
   return NS_OK;
 }
 
+NS_IMETHODIMP
+AudioChannelAgent::NotifyStartedAudible(bool aAudible)
+{
+  MOZ_LOG(AudioChannelService::GetAudioChannelLog(), LogLevel::Debug,
+         ("AudioChannelAgent, NotifyStartedAudible, this = %p, "
+          "audible = %d\n", this, aAudible));
+
+  RefPtr<AudioChannelService> service = AudioChannelService::GetOrCreate();
+  if (NS_WARN_IF(!service)) {
+    return NS_ERROR_FAILURE;
+  }
+
+  service->AudioAudibleChanged(
+    this, static_cast<AudioChannelService::AudibleState>(aAudible));
+  return NS_OK;
+}
+
 already_AddRefed<nsIAudioChannelAgentCallback>
 AudioChannelAgent::GetCallback()
 {
   nsCOMPtr<nsIAudioChannelAgentCallback> callback = mCallback;
   if (!callback) {
     callback = do_QueryReferent(mWeakCallback);
   }
   return callback.forget();
--- a/dom/audiochannel/AudioChannelService.cpp
+++ b/dom/audiochannel/AudioChannelService.cpp
@@ -89,51 +89,45 @@ public:
   }
 
 private:
   const uint64_t mWindowID;
   const AudioChannel mAudioChannel;
   const bool mActive;
 };
 
-void
-NotifyChannelActive(uint64_t aWindowID, AudioChannel aAudioChannel,
-                    bool aActive)
-{
-  RefPtr<Runnable> runnable =
-    new NotifyChannelActiveRunnable(aWindowID, aAudioChannel, aActive);
-  NS_DispatchToCurrentThread(runnable);
-}
-
 bool
 IsParentProcess()
 {
   return XRE_GetProcessType() == GeckoProcessType_Default;
 }
 
-class MediaPlaybackRunnable : public Runnable
+class AudioPlaybackRunnable final : public Runnable
 {
 public:
-  MediaPlaybackRunnable(nsPIDOMWindowOuter* aWindow, bool aActive)
+  AudioPlaybackRunnable(nsPIDOMWindowOuter* aWindow, bool aActive)
     : mWindow(aWindow)
     , mActive(aActive)
   {}
 
  NS_IMETHOD Run()
  {
     nsCOMPtr<nsIObserverService> observerService =
       services::GetObserverService();
-    if (observerService) {
-      observerService->NotifyObservers(
-        ToSupports(mWindow),
-        "audio-playback",
-        mActive ? MOZ_UTF16("active")
-                : MOZ_UTF16("inactive"));
+    if (NS_WARN_IF(!observerService)) {
+      return NS_ERROR_FAILURE;
     }
 
+    observerService->NotifyObservers(ToSupports(mWindow),
+                                     "audio-playback",
+                                     mActive ? MOZ_UTF16("active")
+                                             : MOZ_UTF16("inactive"));
+
+    MOZ_LOG(AudioChannelService::GetAudioChannelLog(), LogLevel::Debug,
+           ("AudioPlaybackRunnable, active = %d\n", mActive));
     return NS_OK;
   }
 
 private:
   nsCOMPtr<nsPIDOMWindowOuter> mWindow;
   bool mActive;
 };
 
@@ -250,96 +244,59 @@ AudioChannelService::AudioChannelService
 }
 
 AudioChannelService::~AudioChannelService()
 {
 }
 
 void
 AudioChannelService::RegisterAudioChannelAgent(AudioChannelAgent* aAgent,
-                                               AudioChannel aChannel)
+                                               AudibleState aAudible)
 {
+  MOZ_ASSERT(aAgent);
+
   uint64_t windowID = aAgent->WindowID();
   AudioChannelWindow* winData = GetWindowData(windowID);
   if (!winData) {
     winData = new AudioChannelWindow(windowID);
     mWindows.AppendElement(winData);
   }
 
-  MOZ_ASSERT(!winData->mAgents.Contains(aAgent));
-  winData->mAgents.AppendElement(aAgent);
-
-  ++winData->mChannels[(uint32_t)aChannel].mNumberOfAgents;
-
-  // The first one, we must inform the BrowserElementAudioChannel.
-  if (winData->mChannels[(uint32_t)aChannel].mNumberOfAgents == 1) {
-    NotifyChannelActive(aAgent->WindowID(), aChannel, true);
-  }
-
-  // If this is the first agent for this window, we must notify the observers.
-  if (winData->mAgents.Length() == 1) {
-    RefPtr<MediaPlaybackRunnable> runnable =
-      new MediaPlaybackRunnable(aAgent->Window(), true /* active */);
-    NS_DispatchToCurrentThread(runnable);
-  }
-
-  // If the window has already been captured, the agent of that window should
-  // also be captured.
-  if (winData->mIsAudioCaptured) {
-    aAgent->WindowAudioCaptureChanged(aAgent->InnerWindowID(),
-                                      winData->mIsAudioCaptured);
-  }
+  // To make sure agent would be alive because AppendAgent() would trigger the
+  // callback function of AudioChannelAgentOwner that means the agent might be
+  // released in their callback.
+  RefPtr<AudioChannelAgent> kungFuDeathGrip(aAgent);
+  winData->AppendAgent(aAgent, aAudible);
 
   MaybeSendStatusUpdate();
 }
 
 void
 AudioChannelService::UnregisterAudioChannelAgent(AudioChannelAgent* aAgent)
 {
+  MOZ_ASSERT(aAgent);
+
   AudioChannelWindow* winData = GetWindowData(aAgent->WindowID());
   if (!winData) {
     return;
   }
 
-  if (winData->mAgents.Contains(aAgent)) {
-    int32_t channel = aAgent->AudioChannelType();
-    uint64_t windowID = aAgent->WindowID();
-
-    // aAgent can be freed after this call.
-    winData->mAgents.RemoveElement(aAgent);
-
-    MOZ_ASSERT(winData->mChannels[channel].mNumberOfAgents > 0);
-
-    --winData->mChannels[channel].mNumberOfAgents;
-
-    // The last one, we must inform the BrowserElementAudioChannel.
-    if (winData->mChannels[channel].mNumberOfAgents == 0) {
-      NotifyChannelActive(windowID, static_cast<AudioChannel>(channel), false);
-    }
-  }
+  // To make sure agent would be alive because AppendAgent() would trigger the
+  // callback function of AudioChannelAgentOwner that means the agent might be
+  // released in their callback.
+  RefPtr<AudioChannelAgent> kungFuDeathGrip(aAgent);
+  winData->RemoveAgent(aAgent);
 
 #ifdef MOZ_WIDGET_GONK
   bool active = AnyAudioChannelIsActive();
   for (uint32_t i = 0; i < mSpeakerManager.Length(); i++) {
     mSpeakerManager[i]->SetAudioChannelActive(active);
   }
 #endif
 
-  // If this is the last agent for this window, we must notify the observers.
-  if (winData->mAgents.IsEmpty()) {
-    RefPtr<MediaPlaybackRunnable> runnable =
-      new MediaPlaybackRunnable(aAgent->Window(), false /* active */);
-    NS_DispatchToCurrentThread(runnable);
-  }
-
-  // No need to capture non-audible object.
-  if (winData->mIsAudioCaptured) {
-    aAgent->WindowAudioCaptureChanged(aAgent->InnerWindowID(), false);
-  }
-
   MaybeSendStatusUpdate();
 }
 
 void
 AudioChannelService::RegisterTabParent(TabParent* aTabParent)
 {
   MOZ_ASSERT(aTabParent);
   MOZ_ASSERT(!mTabParents.Contains(aTabParent));
@@ -396,16 +353,29 @@ AudioChannelService::GetMediaConfig(nsPI
     window = do_QueryInterface(win);
 
     // If there is no parent, or we are the toplevel we don't continue.
   } while (window && window != aWindow);
 
   return config;
 }
 
+void
+AudioChannelService::AudioAudibleChanged(AudioChannelAgent* aAgent,
+                                         AudibleState aAudible)
+{
+  MOZ_ASSERT(aAgent);
+
+  uint64_t windowID = aAgent->WindowID();
+  AudioChannelWindow* winData = GetWindowData(windowID);
+  if (winData) {
+    winData->AudioAudibleChanged(aAgent, aAudible);
+  }
+}
+
 bool
 AudioChannelService::TelephonyChannelIsActive()
 {
   nsTObserverArray<nsAutoPtr<AudioChannelWindow>>::ForwardIterator windowsIter(mWindows);
   while (windowsIter.HasMore()) {
     AudioChannelWindow* next = windowsIter.GetNext();
     if (next->mChannels[(uint32_t)AudioChannel::Telephony].mNumberOfAgents != 0 &&
         !next->mChannels[(uint32_t)AudioChannel::Telephony].mMuted) {
@@ -1025,8 +995,151 @@ AudioChannelService::ChildStatusReceived
 }
 
 /* static */ bool
 AudioChannelService::IsAudioChannelMutedByDefault()
 {
   CreateServiceIfNeeded();
   return sAudioChannelMutedByDefault;
 }
+
+void
+AudioChannelService::AudioChannelWindow::AppendAgent(AudioChannelAgent* aAgent,
+                                                     AudibleState aAudible)
+{
+  MOZ_ASSERT(aAgent);
+
+  AppendAgentAndIncreaseAgentsNum(aAgent);
+  AudioCapturedChanged(aAgent, AudioCaptureState::eCapturing);
+  AudioAudibleChanged(aAgent, aAudible);
+}
+
+void
+AudioChannelService::AudioChannelWindow::RemoveAgent(AudioChannelAgent* aAgent)
+{
+  MOZ_ASSERT(aAgent);
+
+  RemoveAgentAndReduceAgentsNum(aAgent);
+  AudioCapturedChanged(aAgent, AudioCaptureState::eNotCapturing);
+  AudioAudibleChanged(aAgent, AudibleState::eNotAudible);
+}
+
+void
+AudioChannelService::AudioChannelWindow::AppendAgentAndIncreaseAgentsNum(AudioChannelAgent* aAgent)
+{
+  MOZ_ASSERT(aAgent);
+  MOZ_ASSERT(!mAgents.Contains(aAgent));
+
+  int32_t channel = aAgent->AudioChannelType();
+  mAgents.AppendElement(aAgent);
+
+  ++mChannels[channel].mNumberOfAgents;
+
+  // The first one, we must inform the BrowserElementAudioChannel.
+  if (mChannels[channel].mNumberOfAgents == 1) {
+    NotifyChannelActive(aAgent->WindowID(),
+                        static_cast<AudioChannel>(channel),
+                        true);
+  }
+}
+
+void
+AudioChannelService::AudioChannelWindow::RemoveAgentAndReduceAgentsNum(AudioChannelAgent* aAgent)
+{
+  MOZ_ASSERT(aAgent);
+  MOZ_ASSERT(mAgents.Contains(aAgent));
+
+  int32_t channel = aAgent->AudioChannelType();
+  mAgents.RemoveElement(aAgent);
+
+  MOZ_ASSERT(mChannels[channel].mNumberOfAgents > 0);
+  --mChannels[channel].mNumberOfAgents;
+
+  if (mChannels[channel].mNumberOfAgents == 0) {
+    NotifyChannelActive(aAgent->WindowID(),
+                        static_cast<AudioChannel>(channel),
+                        false);
+  }
+}
+
+void
+AudioChannelService::AudioChannelWindow::AudioCapturedChanged(AudioChannelAgent* aAgent,
+                                                              AudioCaptureState aCapture)
+{
+  MOZ_ASSERT(aAgent);
+
+  if (mIsAudioCaptured) {
+    aAgent->WindowAudioCaptureChanged(aAgent->InnerWindowID(), aCapture);
+  }
+}
+
+void
+AudioChannelService::AudioChannelWindow::AudioAudibleChanged(AudioChannelAgent* aAgent,
+                                                             AudibleState aAudible)
+{
+  MOZ_ASSERT(aAgent);
+
+  if (aAudible) {
+    AppendAudibleAgentIfNotContained(aAgent);
+  } else {
+    RemoveAudibleAgentIfContained(aAgent);
+  }
+}
+
+void
+AudioChannelService::AudioChannelWindow::AppendAudibleAgentIfNotContained(AudioChannelAgent* aAgent)
+{
+  MOZ_ASSERT(aAgent);
+  MOZ_ASSERT(mAgents.Contains(aAgent));
+
+  if (!mAudibleAgents.Contains(aAgent)) {
+    mAudibleAgents.AppendElement(aAgent);
+    if (IsFirstAudibleAgent()) {
+      NotifyAudioAudibleChanged(aAgent->Window(), AudibleState::eAudible);
+    }
+  }
+}
+
+void
+AudioChannelService::AudioChannelWindow::RemoveAudibleAgentIfContained(AudioChannelAgent* aAgent)
+{
+  MOZ_ASSERT(aAgent);
+
+  if (mAudibleAgents.Contains(aAgent)) {
+    mAudibleAgents.RemoveElement(aAgent);
+    if (IsLastAudibleAgent()) {
+      NotifyAudioAudibleChanged(aAgent->Window(), AudibleState::eNotAudible);
+    }
+  }
+}
+
+bool
+AudioChannelService::AudioChannelWindow::IsFirstAudibleAgent() const
+{
+  return (mAudibleAgents.Length() == 1);
+}
+
+bool
+AudioChannelService::AudioChannelWindow::IsLastAudibleAgent() const
+{
+  return mAudibleAgents.IsEmpty();
+}
+
+void
+AudioChannelService::AudioChannelWindow::NotifyAudioAudibleChanged(nsPIDOMWindowOuter* aWindow,
+                                                                   AudibleState aAudible)
+{
+  RefPtr<AudioPlaybackRunnable> runnable =
+    new AudioPlaybackRunnable(aWindow, aAudible);
+  nsresult rv = NS_DispatchToCurrentThread(runnable);
+  NS_WARN_IF(NS_FAILED(rv));
+}
+
+void
+AudioChannelService::AudioChannelWindow::NotifyChannelActive(uint64_t aWindowID,
+                                                             AudioChannel aChannel,
+                                                             bool aActive)
+{
+  RefPtr<NotifyChannelActiveRunnable> runnable =
+    new NotifyChannelActiveRunnable(aWindowID, aChannel, aActive);
+  nsresult rv = NS_DispatchToCurrentThread(runnable);
+  NS_WARN_IF(NS_FAILED(rv));
+}
--- a/dom/audiochannel/AudioChannelService.h
+++ b/dom/audiochannel/AudioChannelService.h
@@ -63,33 +63,43 @@ public:
 class AudioChannelService final : public nsIAudioChannelService
                                 , public nsIObserver
 {
 public:
   NS_DECL_ISUPPORTS
   NS_DECL_NSIOBSERVER
   NS_DECL_NSIAUDIOCHANNELSERVICE
 
+  enum AudibleState : bool {
+    eAudible = true,
+    eNotAudible = false
+  };
+
+  enum AudioCaptureState : bool {
+    eCapturing = true,
+    eNotCapturing = false
+  };
+
   /**
    * Returns the AudioChannelServce singleton.
    * If AudioChannelServce is not exist, create and return new one.
    * Only to be called from main thread.
    */
   static already_AddRefed<AudioChannelService> GetOrCreate();
 
   static bool IsAudioChannelMutedByDefault();
 
   static PRLogModuleInfo* GetAudioChannelLog();
 
   /**
    * Any audio channel agent that starts playing should register itself to
    * this service, sharing the AudioChannel.
    */
   void RegisterAudioChannelAgent(AudioChannelAgent* aAgent,
-                                 AudioChannel aChannel);
+                                 AudibleState aAudible);
 
   /**
    * Any audio channel agent that stops playing should unregister itself to
    * this service.
    */
   void UnregisterAudioChannelAgent(AudioChannelAgent* aAgent);
 
   /**
@@ -100,16 +110,23 @@ public:
 
   /**
    * Return the state to indicate this audioChannel for his window should keep
    * playing/muted/suspended.
    */
   AudioPlaybackConfig GetMediaConfig(nsPIDOMWindowOuter* aWindow,
                                      uint32_t aAudioChannel) const;
 
+  /**
+   * Called this method when the audible state of the audio playback changed,
+   * it would dispatch the playback event to observers which want to know the
+   * actual audible state of the window.
+   */
+  void AudioAudibleChanged(AudioChannelAgent* aAgent, AudibleState aAudible);
+
   /* Methods for the BrowserElementAudioChannel */
   float GetAudioChannelVolume(nsPIDOMWindowOuter* aWindow, AudioChannel aChannel);
 
   void SetAudioChannelVolume(nsPIDOMWindowOuter* aWindow, AudioChannel aChannel,
                              float aVolume);
 
   bool GetAudioChannelMuted(nsPIDOMWindowOuter* aWindow, AudioChannel aChannel);
 
@@ -210,32 +227,57 @@ private:
       : AudioPlaybackConfig(1.0, IsAudioChannelMutedByDefault(),
                             nsISuspendedTypes::NONE_SUSPENDED)
       , mNumberOfAgents(0)
     {}
 
     uint32_t mNumberOfAgents;
   };
 
-  struct AudioChannelWindow final
+  class AudioChannelWindow final
   {
+  public:
     explicit AudioChannelWindow(uint64_t aWindowID)
       : mWindowID(aWindowID),
         mIsAudioCaptured(false)
     {
       // Workaround for bug1183033, system channel type can always playback.
       mChannels[(int16_t)AudioChannel::System].mMuted = false;
     }
 
+    void AudioAudibleChanged(AudioChannelAgent* aAgent, AudibleState aAudible);
+
+    void AppendAgent(AudioChannelAgent* aAgent, AudibleState aAudible);
+    void RemoveAgent(AudioChannelAgent* aAgent);
+
     uint64_t mWindowID;
     bool mIsAudioCaptured;
     AudioChannelConfig mChannels[NUMBER_OF_AUDIO_CHANNELS];
 
     // Raw pointer because the AudioChannelAgent must unregister itself.
     nsTObserverArray<AudioChannelAgent*> mAgents;
+    nsTObserverArray<AudioChannelAgent*> mAudibleAgents;
+
+  private:
+    void AudioCapturedChanged(AudioChannelAgent* aAgent,
+                              AudioCaptureState aCapture);
+
+    void AppendAudibleAgentIfNotContained(AudioChannelAgent* aAgent);
+    void RemoveAudibleAgentIfContained(AudioChannelAgent* aAgent);
+
+    void AppendAgentAndIncreaseAgentsNum(AudioChannelAgent* aAgent);
+    void RemoveAgentAndReduceAgentsNum(AudioChannelAgent* aAgent);
+
+    bool IsFirstAudibleAgent() const;
+    bool IsLastAudibleAgent() const;
+
+    void NotifyAudioAudibleChanged(nsPIDOMWindowOuter* aWindow,
+                                   AudibleState aAudible);
+    void NotifyChannelActive(uint64_t aWindowID, AudioChannel aChannel,
+                             bool aActive);
   };
 
   AudioChannelWindow*
   GetOrCreateWindowData(nsPIDOMWindowOuter* aWindow);
 
   AudioChannelWindow*
   GetWindowData(uint64_t aWindowID) const;
 
--- a/dom/audiochannel/nsIAudioChannelAgent.idl
+++ b/dom/audiochannel/nsIAudioChannelAgent.idl
@@ -84,20 +84,18 @@ interface nsIAudioChannelAgentCallback :
   void windowAudioCaptureChanged(in bool aCapture);
 };
 
 /**
  * This interface provides an agent for gecko components to participate
  * in the audio channel service. Gecko components are responsible for
  *   1. Indicating what channel type they are using (via the init() member
  *      function).
- *   2. Before playing, checking the playable status of the channel.
- *   3. Notifying the agent when they start/stop using this channel.
- *   4. Notifying the agent of changes to the visibility of the component using
- *      this channel.
+ *   2. Notifying the agent when they start/stop using this channel.
+ *   3. Notifying the agent when they are audible.
  *
  * The agent will invoke a callback to notify Gecko components of
  *   1. Changes to the playable status of this channel.
  */
 
 [uuid(ab7e21c0-970c-11e5-a837-0800200c9a66)]
 interface nsIAudioChannelAgent : nsISupports
 {
@@ -160,20 +158,30 @@ interface nsIAudioChannelAgent : nsISupp
   /**
    * Notify the agent that we want to start playing.
    * Note: Gecko component SHOULD call this function first then start to
    *          play audio stream only when return value is true.
    *
    * @param config
    *    It contains the playback related states (volume/mute/suspend)
    */
-  void notifyStartedPlaying(in AudioPlaybackConfig config);
+  void notifyStartedPlaying(in AudioPlaybackConfig config, in bool audible);
 
   /**
    * Notify the agent we no longer want to play.
    *
    * Note : even if notifyStartedPlaying() returned false, the agent would
    * still be registered with the audio channel service and receive callbacks
    * for status changes. So notifyStoppedPlaying must still eventually be
    * called to unregister the agent with the channel service.
    */
   void notifyStoppedPlaying();
+
+
+  /**
+   * Notify agent that we already start producing audible data.
+   *
+   * Note : sometime audio might become silent during playing, this method is used to
+   * notify the actually audible state to other services which want to know
+   * about that, ex. tab sound indicator.
+   */
+  void notifyStartedAudible(in bool audible);
 };
--- a/dom/base/nsDOMTokenList.cpp
+++ b/dom/base/nsDOMTokenList.cpp
@@ -114,23 +114,18 @@ nsDOMTokenList::CheckTokens(const nsTArr
       return rv;
     }
   }
 
   return NS_OK;
 }
 
 bool
-nsDOMTokenList::Contains(const nsAString& aToken, ErrorResult& aError)
+nsDOMTokenList::Contains(const nsAString& aToken)
 {
-  aError = CheckToken(aToken);
-  if (aError.Failed()) {
-    return false;
-  }
-
   const nsAttrValue* attr = GetParsedAttr();
   return attr && attr->Contains(aToken);
 }
 
 void
 nsDOMTokenList::AddInternal(const nsAttrValue* aAttr,
                             const nsTArray<nsString>& aTokens)
 {
--- a/dom/base/nsDOMTokenList.h
+++ b/dom/base/nsDOMTokenList.h
@@ -53,17 +53,17 @@ public:
   {
     bool found;
     IndexedGetter(aIndex, found, aResult);
     if (!found) {
       SetDOMStringToNull(aResult);
     }
   }
   void IndexedGetter(uint32_t aIndex, bool& aFound, nsAString& aResult);
-  bool Contains(const nsAString& aToken, mozilla::ErrorResult& aError);
+  bool Contains(const nsAString& aToken);
   void Add(const nsAString& aToken, mozilla::ErrorResult& aError);
   void Add(const nsTArray<nsString>& aTokens,
            mozilla::ErrorResult& aError);
   void Remove(const nsAString& aToken, mozilla::ErrorResult& aError);
   void Remove(const nsTArray<nsString>& aTokens,
               mozilla::ErrorResult& aError);
   void Replace(const nsAString& aToken,
                const nsAString& aNewToken,
--- a/dom/base/nsDocument.cpp
+++ b/dom/base/nsDocument.cpp
@@ -5158,22 +5158,24 @@ nsDocument::DispatchContentLoadedEvents(
   mPreloadedPreconnects.Clear();
 
   if (mTiming) {
     mTiming->NotifyDOMContentLoadedStart(nsIDocument::GetDocumentURI());
   }
 
   // Dispatch observer notification to notify observers document is interactive.
   nsCOMPtr<nsIObserverService> os = mozilla::services::GetObserverService();
-  nsIPrincipal *principal = GetPrincipal();
-  os->NotifyObservers(static_cast<nsIDocument*>(this),
-                      nsContentUtils::IsSystemPrincipal(principal) ?
-                        "chrome-document-interactive" :
-                        "content-document-interactive",
-                      nullptr);
+  if (os) {
+    nsIPrincipal *principal = GetPrincipal();
+    os->NotifyObservers(static_cast<nsIDocument*>(this),
+                        nsContentUtils::IsSystemPrincipal(principal) ?
+                          "chrome-document-interactive" :
+                          "content-document-interactive",
+                        nullptr);
+  }
 
   // Fire a DOM event notifying listeners that this document has been
   // loaded (excluding images and other loads initiated by this
   // document).
   nsContentUtils::DispatchTrustedEvent(this, static_cast<nsIDocument*>(this),
                                        NS_LITERAL_STRING("DOMContentLoaded"),
                                        true, false);
 
@@ -9293,25 +9295,27 @@ nsDocument::OnPageShow(bool aPersisted,
 
   nsCOMPtr<EventTarget> target = aDispatchStartTarget;
   if (!target) {
     target = do_QueryInterface(GetWindow());
   }
 
   // Dispatch observer notification to notify observers page is shown.
   nsCOMPtr<nsIObserverService> os = mozilla::services::GetObserverService();
-  nsIPrincipal *principal = GetPrincipal();
-  os->NotifyObservers(static_cast<nsIDocument*>(this),
-                      nsContentUtils::IsSystemPrincipal(principal) ?
-                        "chrome-page-shown" :
-                        "content-page-shown",
-                      nullptr);
-  if (!mObservingAppThemeChanged) {
-    os->AddObserver(this, "app-theme-changed", /* ownsWeak */ false);
-    mObservingAppThemeChanged = true;
+  if (os) {
+    nsIPrincipal *principal = GetPrincipal();
+    os->NotifyObservers(static_cast<nsIDocument*>(this),
+                        nsContentUtils::IsSystemPrincipal(principal) ?
+                          "chrome-page-shown" :
+                          "content-page-shown",
+                        nullptr);
+    if (!mObservingAppThemeChanged) {
+      os->AddObserver(this, "app-theme-changed", /* ownsWeak */ false);
+      mObservingAppThemeChanged = true;
+    }
   }
 
   DispatchPageTransition(target, NS_LITERAL_STRING("pageshow"), aPersisted);
 }
 
 static bool
 NotifyPageHide(nsIDocument* aDocument, void* aData)
 {
index d7f6a0ccf47fbc30e936b47e3f4d2cf8f4a90a16..4e8b4d3a3d8e27dc6592427e7560a9be23645c3c
GIT binary patch
literal 20316
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
new file mode 100644
index 0000000000000000000000000000000000000000..dc136f1494024145ffa05952140216a878c9c5cb
GIT binary patch
literal 188376
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
--- a/dom/base/test/mochitest.ini
+++ b/dom/base/test/mochitest.ini
@@ -1,11 +1,12 @@
 [DEFAULT]
 support-files =
   audio.ogg
+  audioEndedDuringPlaying.webm
   iframe_bug962251.html
   iframe_bug976673.html
   iframe_main_bug1022229.html
   iframe_sandbox_bug1022229.html
   file_empty.html
   iframe_postMessage_solidus.html
   file_setname.html
   345339_iframe.html
@@ -280,16 +281,20 @@ skip-if = buildapp == 'b2g' # Requires w
 [test_applet_alternate_content.html]
 [test_appname_override.html]
 [test_async_setTimeout_stack.html]
 [test_async_setTimeout_stack_across_globals.html]
 [test_audioWindowUtils.html]
 [test_audioNotification.html]
 tags = audiochannel
 skip-if = buildapp == 'mulet'
+[test_audioNotificationSilent_audioFile.html]
+tags = audiochannel
+[test_audioNotificationSilent_webAudio.html]
+tags = audiochannel
 [test_audioNotificationStream.html]
 tags = audiochannel
 skip-if = buildapp == 'mulet'
 [test_audioNotificationStopOnNavigation.html]
 tags = audiochannel
 skip-if = buildapp == 'mulet'
 [test_audioNotificationWithEarlyPlay.html]
 tags = audiochannel
new file mode 100644
--- /dev/null
+++ b/dom/base/test/test_audioNotificationSilent_audioFile.html
@@ -0,0 +1,82 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Audio-playback should be inactive when input file is silent</title>
+  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+<script type="application/javascript;version=1.7">
+
+SimpleTest.waitForExplicitFinish();
+
+var generator = runTest();
+var expectedPlaybackActive = null;
+var expectedPlaying = null;
+
+var audio = new Audio();
+audio.src = "audioEndedDuringPlaying.webm";
+
+var observerService = SpecialPowers.Cc["@mozilla.org/observer-service;1"]
+                                   .getService(SpecialPowers.Ci.nsIObserverService);
+
+var observer = {
+  observe: function(subject, topic, data) {
+    is(topic, "audio-playback", "audio-playback received");
+    is(data, expectedPlaybackActive, "Corrrect audible state");
+    is(!audio.ended, expectedPlaying, "Corrrect playing state");
+    continueTest();
+  }
+};
+
+function continueTest() {
+  try {
+    generator.next();
+  } catch (e if e instanceof StopIteration) {
+    error("Stop test because of exception!");
+  }
+}
+
+function audioPlayingStart() {
+  observerService.addObserver(observer, "audio-playback", false);
+  ok(true, "Observer set");
+
+  expectedPlaybackActive = 'active';
+  expectedPlaying = true;
+
+  info("Audio playing start");
+  audio.play();
+}
+
+function audioBecomeSilentDuringPlaying() {
+  info("Audio would become silent during playing");
+
+  expectedPlaybackActive = 'inactive';
+  expectedPlaying = true;
+}
+
+function audioPlayingEnd() {
+  audio.onended = function() {
+    info("Audio playback ended");
+    audio.onended = null;
+
+    observerService.removeObserver(observer, "audio-playback");
+    ok(true, "Observer removed");
+
+    SimpleTest.finish();
+  };
+}
+
+function runTest() {
+  yield audioPlayingStart();
+
+  yield audioBecomeSilentDuringPlaying();
+
+  yield audioPlayingEnd();
+}
+
+continueTest();
+
+</script>
+</body>
+</html>
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/dom/base/test/test_audioNotificationSilent_webAudio.html
@@ -0,0 +1,103 @@
+<!DOCTYPE HTML>
+<html>
+<head>
+  <title>Audio-playback should be inactive when web-audio is silent</title>
+  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+<script type="application/javascript;version=1.7">
+
+SimpleTest.waitForExplicitFinish();
+
+var generator = runTest();
+var expectedPlaybackActive = null;
+var expectedPlaying = null;
+
+var ac = new AudioContext();
+var audibleDuration = 3;
+
+var observerService = SpecialPowers.Cc["@mozilla.org/observer-service;1"]
+                                   .getService(SpecialPowers.Ci.nsIObserverService);
+
+var observer = {
+  observe: function(subject, topic, data) {
+    is(topic, "audio-playback", "audio-playback received");
+    is(data, expectedPlaybackActive, "Corrrect audible state");
+    is(ac.state, expectedPlaying, "Corrrect playing state");
+    continueTest();
+  }
+};
+
+function continueTest() {
+  try {
+    generator.next();
+  } catch (e if e instanceof StopIteration) {
+    error("Stop test because of exception!");
+  }
+}
+
+function playOscillatorNode() {
+  var dest = ac.destination;
+  var osc = ac.createOscillator();
+  osc.connect(dest);
+  osc.start(0);
+  osc.stop(ac.currentTime + audibleDuration);
+}
+
+function audioPlayingStart() {
+  observerService.addObserver(observer, "audio-playback", false);
+  ok(true, "Observer set");
+
+  expectedPlaybackActive = 'active';
+  expectedPlaying = "running";
+
+  info("Audio playing start");
+  playOscillatorNode();
+}
+
+function audioBecomeSilentDuringPlaying() {
+  info("Audio would become silent during playing");
+
+  expectedPlaybackActive = 'inactive';
+  expectedPlaying = "running";
+}
+
+function finish() {
+  observerService.removeObserver(observer, "audio-playback");
+  ok(true, "Observer removed");
+
+  SimpleTest.finish();
+}
+
+function startAudioContext() {
+  if (ac.state != "running") {
+    ac.resume();
+    ac.onstatechange = function() {
+      if (ac.state == "running") {
+        ok(true, "AudioContext starts running!");
+        ac.onstatechange = null;
+        continueTest();
+      }
+    }
+  } else {
+    ok(true, "AudioContext is running!");
+    continueTest();
+  }
+}
+
+function runTest() {
+  yield startAudioContext();
+
+  yield audioPlayingStart();
+
+  yield audioBecomeSilentDuringPlaying();
+
+  yield finish();
+}
+
+continueTest();
+
+</script>
+</body>
+</html>
\ No newline at end of file
--- a/dom/base/test/test_bug562169-1.html
+++ b/dom/base/test/test_bug562169-1.html
@@ -20,17 +20,17 @@ https://bugzilla.mozilla.org/show_bug.cg
 
 /** Test for Bug 562169 **/
 /** Test that adding an child to an element with dir="rtl" makes the
       child have rtl directionality, and removing the child makes it
      go back to ltr directionality **/
 
 function checkSelector(element, expectedDir, expectedChild)
 {
-    ok(element.querySelector(":-moz-dir("+expectedDir+")") == expectedChild,
+    ok(element.querySelector(":dir("+expectedDir+")") == expectedChild,
        "direction should be " + expectedDir);
 }
 
 var x = document.createElement("div");
 var y = document.createElement("div");
 x.appendChild(y);
 checkSelector(x, "ltr", y);
 $(z).appendChild(x);
--- a/dom/base/test/test_bug562169-2.html
+++ b/dom/base/test/test_bug562169-2.html
@@ -15,15 +15,15 @@ https://bugzilla.mozilla.org/show_bug.cg
 <div id="content" style="display: none">
 </div>
 <pre id="test">
 <script type="application/javascript">
 
 /** Test for Bug 562169 **/
 /** Test that a newly created element has ltr directionality **/
 
-ok(document.createElement("div").matches(":-moz-dir(ltr)"),
+ok(document.createElement("div").matches(":dir(ltr)"),
    "Element should be ltr on creation");
 
 </script>
 </pre>
 </body>
 </html>
--- a/dom/base/test/test_classList.html
+++ b/dom/base/test/test_classList.html
@@ -95,17 +95,17 @@ function checkModification(e, funcName, 
 }
 
 function assignToClassListStrict(e) {
   "use strict";
   try {
     e.classList = "foo";
     ok(true, "assigning to classList didn't throw");
     e.removeAttribute("class");
-  } catch (e) { 
+  } catch (e) {
     ok(false, "assigning to classList threw");
   }
 }
 
 function assignToClassList(e) {
   try {
     var expect = e.classList;
     e.classList = "foo";
@@ -211,34 +211,31 @@ function testClassList(e) {
   is(e.classList[2], undefined, "wrong classList[] result");
 
   // contains() method
 
   e.removeAttribute("class");
   is(e.classList.contains("a"), false, "wrong classList.contains() result");
   try {
     e.classList.contains("");
-    ok(false, "classList.contains() didn't throw");
+    ok(true, "classList.contains(empty_string) didn't throw");
   } catch (e) {
-    is(e.name, "SyntaxError", "wrong exception thrown");
-    is(e.code, DOMException.SYNTAX_ERR, "wrong exception thrown");
+    ok(false, "classList.contains(empty_string) threw");
   }
   try {
     e.classList.contains("  ");
-    ok(false, "classList.contains() didn't throw");
+    ok(true, "classList.contains(string_with_spaces) didn't throw");
   } catch (e) {
-    is(e.name, "InvalidCharacterError", "wrong exception thrown");
-    is(e.code, DOMException.INVALID_CHARACTER_ERR, "wrong exception thrown");
+    ok(false, "classList.contains(string_with_spaces) threw");
   }
   try {
     e.classList.contains("aa ");
-    ok(false, "classList.contains() didn't throw");
+    ok(true, "classList.contains(string_with_spaces) didn't throw");
   } catch (e) {
-    is(e.name, "InvalidCharacterError", "wrong exception thrown");
-    is(e.code, DOMException.INVALID_CHARACTER_ERR, "wrong exception thrown");
+    ok(false, "classList.contains(string_with_spaces) threw");
   }
 
   e.setAttribute("class", "");
   is(e.classList.contains("a"), false, "wrong classList.contains() result");
 
   e.setAttribute("class", "a");
   is(e.classList.contains("a"), true, "wrong classList.contains() result");
   is(e.classList.contains("aa"), false, "wrong classList.contains() result");
@@ -377,17 +374,17 @@ function testClassList(e) {
   // Test for bug 530171
   checkToggle("null", null, false, "");
   checkToggle("", null, true, "null");
   checkToggle("undefined", undefined, false, "");
   checkToggle("", undefined, true, "undefined");
 
 
   // tests for the force argument handling
-  
+
   function checkForceToggle(before, argument, force, expectedRes, after, expectedException) {
     checkModification(e, "toggle", [argument, force], expectedRes, before, after, expectedException);
   }
 
   checkForceToggle("", "a", true, true, "a");
   checkForceToggle("a", "a", true, true, "a");
   checkForceToggle("a", "b", true, true, "a b");
   checkForceToggle("a b", "b", true, true, "a b");
index d7f6a0ccf47fbc30e936b47e3f4d2cf8f4a90a16..4e8b4d3a3d8e27dc6592427e7560a9be23645c3c
GIT binary patch
literal 20316
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
--- a/dom/events/EventStateManager.cpp
+++ b/dom/events/EventStateManager.cpp
@@ -4502,24 +4502,16 @@ EventStateManager::FireDragEnterOrExit(n
         aMessage == eDragEnter) {
       UpdateDragDataTransfer(&event);
     }
   }
 
   // Finally dispatch the event to the frame
   if (aTargetFrame)
     aTargetFrame->HandleEvent(aPresContext, &event, &status);
-
-  if (aMessage == eDragExit && IsRemoteTarget(aTargetContent)) {
-    nsEventStatus status = nsEventStatus_eIgnore;
-    WidgetDragEvent remoteEvent(aDragEvent->IsTrusted(), aMessage,
-                                aDragEvent->mWidget);
-    remoteEvent.AssignDragEventData(*aDragEvent, true);
-    HandleCrossProcessEvent(&remoteEvent, &status);
-  }
 }
 
 void
 EventStateManager::UpdateDragDataTransfer(WidgetDragEvent* dragEvent)
 {
   NS_ASSERTION(dragEvent, "drag event is null in UpdateDragDataTransfer!");
   if (!dragEvent->mDataTransfer) {
     return;
--- a/dom/events/test/mochitest.ini
+++ b/dom/events/test/mochitest.ini
@@ -193,9 +193,9 @@ skip-if = buildapp == 'b2g' || e10s
 support-files =
   bug1096146_embedded.html
 [test_offsetxy.html]
 [test_eventhandler_scoping.html]
 [test_bug1013412.html]
 skip-if = buildapp == 'b2g' # no wheel events on b2g
 [test_dom_activate_event.html]
 [test_bug1264380.html]
-run-if = e10s # bug1264380 comment 20, nsDragService::InvokeDragSessionImpl behaves differently among platform implementations in non-e10s mode which prevents us to check the validity of nsIDragService::getCurrentSession() consistently via synthesize mouse clicks in non-e10s mode.
+run-if = (e10s && os != "win") # Bug 1270043, crash at windows platforms; Bug1264380 comment 20, nsDragService::InvokeDragSessionImpl behaves differently among platform implementations in non-e10s mode which prevents us to check the validity of nsIDragService::getCurrentSession() consistently via synthesize mouse clicks in non-e10s mode.
--- a/dom/fetch/Fetch.cpp
+++ b/dom/fetch/Fetch.cpp
@@ -293,36 +293,82 @@ public:
       ErrorResult result;
       result.ThrowTypeError<MSG_FETCH_FAILED>();
       promise->MaybeReject(result);
     }
     return true;
   }
 };
 
-class WorkerFetchResponseEndRunnable final : public WorkerRunnable
+class WorkerFetchResponseEndBase
 {
-  RefPtr<WorkerFetchResolver> mResolver;
+  RefPtr<PromiseWorkerProxy> mPromiseProxy;
 public:
-  WorkerFetchResponseEndRunnable(WorkerPrivate* aWorkerPrivate,
-                                 WorkerFetchResolver* aResolver)
-    : WorkerRunnable(aWorkerPrivate, WorkerThreadModifyBusyCount)
-    , mResolver(aResolver)
+  explicit WorkerFetchResponseEndBase(PromiseWorkerProxy* aPromiseProxy)
+    : mPromiseProxy(aPromiseProxy)
+  {
+    MOZ_ASSERT(mPromiseProxy);
+  }
+
+  void
+  WorkerRunInternal(WorkerPrivate* aWorkerPrivate)
+  {
+    MOZ_ASSERT(aWorkerPrivate);
+    aWorkerPrivate->AssertIsOnWorkerThread();
+    mPromiseProxy->CleanUp();
+  }
+};
+
+class WorkerFetchResponseEndRunnable final : public WorkerRunnable
+                                           , public WorkerFetchResponseEndBase
+{
+public:
+  explicit WorkerFetchResponseEndRunnable(PromiseWorkerProxy* aPromiseProxy)
+    : WorkerRunnable(aPromiseProxy->GetWorkerPrivate(),
+                     WorkerThreadModifyBusyCount)
+    , WorkerFetchResponseEndBase(aPromiseProxy)
   {
   }
 
   bool
   WorkerRun(JSContext* aCx, WorkerPrivate* aWorkerPrivate) override
   {
-    MOZ_ASSERT(aWorkerPrivate);
-    aWorkerPrivate->AssertIsOnWorkerThread();
-
-    mResolver->mPromiseProxy->CleanUp();
+    WorkerRunInternal(aWorkerPrivate);
     return true;
   }
+
+  nsresult
+  Cancel() override
+  {
+    // Execute Run anyway to make sure we cleanup our promise proxy to avoid
+    // leaking the worker thread
+    Run();
+    return WorkerRunnable::Cancel();
+  }
+};
+
+class WorkerFetchResponseEndControlRunnable final : public WorkerControlRunnable
+                                                  , public WorkerFetchResponseEndBase
+{
+public:
+  explicit WorkerFetchResponseEndControlRunnable(PromiseWorkerProxy* aPromiseProxy)
+    : WorkerControlRunnable(aPromiseProxy->GetWorkerPrivate(),
+                            WorkerThreadUnchangedBusyCount)
+    , WorkerFetchResponseEndBase(aPromiseProxy)
+  {
+  }
+
+  bool
+  WorkerRun(JSContext* aCx, WorkerPrivate* aWorkerPrivate) override
+  {
+    WorkerRunInternal(aWorkerPrivate);
+    return true;
+  }
+
+  // Control runnable cancel already calls Run().
 };
 
 void
 WorkerFetchResolver::OnResponseAvailableInternal(InternalResponse* aResponse)
 {
   AssertIsOnMainThread();
 
   MutexAutoLock lock(mPromiseProxy->Lock());
@@ -344,20 +390,26 @@ WorkerFetchResolver::OnResponseEnd()
 {
   AssertIsOnMainThread();
   MutexAutoLock lock(mPromiseProxy->Lock());
   if (mPromiseProxy->CleanedUp()) {
     return;
   }
 
   RefPtr<WorkerFetchResponseEndRunnable> r =
-    new WorkerFetchResponseEndRunnable(mPromiseProxy->GetWorkerPrivate(), this);
+    new WorkerFetchResponseEndRunnable(mPromiseProxy);
 
   if (!r->Dispatch()) {
-    NS_WARNING("Could not dispatch fetch response end");
+    RefPtr<WorkerFetchResponseEndControlRunnable> cr =
+      new WorkerFetchResponseEndControlRunnable(mPromiseProxy);
+    // This can fail if the worker thread is canceled or killed causing
+    // the PromiseWorkerProxy to give up its WorkerFeature immediately,
+    // allowing the worker thread to become Dead.
+    NS_WARN_IF_FALSE(cr->Dispatch(),
+                     "Failed to dispatch WorkerFetchResponseEndControlRunnable");
   }
 }
 
 namespace {
 nsresult
 ExtractFromArrayBuffer(const ArrayBuffer& aBuffer,
                        nsIInputStream** aStream)
 {
--- a/dom/fmradio/FMRadio.cpp
+++ b/dom/fmradio/FMRadio.cpp
@@ -9,16 +9,17 @@
 #include "mozilla/Hal.h"
 #include "mozilla/HalTypes.h"
 #include "mozilla/Preferences.h"
 #include "mozilla/dom/FMRadioBinding.h"
 #include "mozilla/dom/ContentChild.h"
 #include "mozilla/dom/PFMRadioChild.h"
 #include "mozilla/dom/FMRadioService.h"
 #include "mozilla/dom/TypedArray.h"
+#include "AudioChannelService.h"
 #include "DOMRequest.h"
 #include "nsDOMClassInfo.h"
 #include "nsIDocShell.h"
 #include "nsIInterfaceRequestorUtils.h"
 #include "nsIAudioManager.h"
 
 #undef LOG
 #define LOG(args...) FM_LOG("FMRadio", args)
@@ -448,17 +449,18 @@ FMRadio::DisableRDS()
 }
 
 void
 FMRadio::EnableAudioChannelAgent()
 {
   NS_ENSURE_TRUE_VOID(mAudioChannelAgent);
 
   AudioPlaybackConfig config;
-  nsresult rv = mAudioChannelAgent->NotifyStartedPlaying(&config);
+  nsresult rv = mAudioChannelAgent->NotifyStartedPlaying(&config,
+                                                         AudioChannelService::AudibleState::eAudible);
   if (NS_WARN_IF(NS_FAILED(rv))) {
     return;
   }
 
   WindowVolumeChanged(config.mVolume, config.mMuted);
   WindowSuspendChanged(config.mSuspend);
 
   mAudioChannelAgentEnabled = true;
--- a/dom/html/HTMLCanvasElement.cpp
+++ b/dom/html/HTMLCanvasElement.cpp
@@ -1353,22 +1353,24 @@ HTMLCanvasElement::SetAttrFromAsyncCanva
 
   if (element->GetWidthHeight() == aRenderer->GetSize()) {
     return;
   }
 
   gfx::IntSize asyncCanvasSize = aRenderer->GetSize();
 
   ErrorResult rv;
-  element->SetUnsignedIntAttr(nsGkAtoms::width, asyncCanvasSize.width, rv);
+  element->SetUnsignedIntAttr(nsGkAtoms::width, asyncCanvasSize.width,
+                              DEFAULT_CANVAS_WIDTH, rv);
   if (rv.Failed()) {
     NS_WARNING("Failed to set width attribute to a canvas element asynchronously.");
   }
 
-  element->SetUnsignedIntAttr(nsGkAtoms::height, asyncCanvasSize.height, rv);
+  element->SetUnsignedIntAttr(nsGkAtoms::height, asyncCanvasSize.height,
+                              DEFAULT_CANVAS_HEIGHT, rv);
   if (rv.Failed()) {
     NS_WARNING("Failed to set height attribute to a canvas element asynchronously.");
   }
 
   element->mResetLayer = true;
 }
 
 /* static */ void
--- a/dom/html/HTMLCanvasElement.h
+++ b/dom/html/HTMLCanvasElement.h
@@ -146,30 +146,30 @@ public:
   }
   void SetHeight(uint32_t aHeight, ErrorResult& aRv)
   {
     if (mOffscreenCanvas) {
       aRv.Throw(NS_ERROR_FAILURE);
       return;
     }
 
-    SetUnsignedIntAttr(nsGkAtoms::height, aHeight, aRv);
+    SetUnsignedIntAttr(nsGkAtoms::height, aHeight, DEFAULT_CANVAS_HEIGHT, aRv);
   }
   uint32_t Width()
   {
     return GetUnsignedIntAttr(nsGkAtoms::width, DEFAULT_CANVAS_WIDTH);
   }
   void SetWidth(uint32_t aWidth, ErrorResult& aRv)
   {
     if (mOffscreenCanvas) {
       aRv.Throw(NS_ERROR_FAILURE);
       return;
     }
 
-    SetUnsignedIntAttr(nsGkAtoms::width, aWidth, aRv);
+    SetUnsignedIntAttr(nsGkAtoms::width, aWidth, DEFAULT_CANVAS_WIDTH, aRv);
   }
 
   virtual already_AddRefed<nsISupports>
   GetContext(JSContext* aCx, const nsAString& aContextId,
              JS::Handle<JS::Value> aContextOptions,
              ErrorResult& aRv) override;
 
   void ToDataURL(JSContext* aCx, const nsAString& aType,
--- a/dom/html/HTMLImageElement.cpp
+++ b/dom/html/HTMLImageElement.cpp
@@ -147,17 +147,17 @@ NS_IMPL_ELEMENT_CLONE(HTMLImageElement)
 NS_IMPL_STRING_ATTR(HTMLImageElement, Name, name)
 NS_IMPL_STRING_ATTR(HTMLImageElement, Align, align)
 NS_IMPL_STRING_ATTR(HTMLImageElement, Alt, alt)
 NS_IMPL_STRING_ATTR(HTMLImageElement, Border, border)
 NS_IMPL_INT_ATTR(HTMLImageElement, Hspace, hspace)
 NS_IMPL_BOOL_ATTR(HTMLImageElement, IsMap, ismap)
 NS_IMPL_URI_ATTR(HTMLImageElement, LongDesc, longdesc)
 NS_IMPL_STRING_ATTR(HTMLImageElement, Sizes, sizes)
-NS_IMPL_STRING_ATTR(HTMLImageElement, Lowsrc, lowsrc)
+NS_IMPL_URI_ATTR(HTMLImageElement, Lowsrc, lowsrc)
 NS_IMPL_URI_ATTR(HTMLImageElement, Src, src)
 NS_IMPL_STRING_ATTR(HTMLImageElement, Srcset, srcset)
 NS_IMPL_STRING_ATTR(HTMLImageElement, UseMap, usemap)
 NS_IMPL_INT_ATTR(HTMLImageElement, Vspace, vspace)
 
 bool
 HTMLImageElement::IsInteractiveHTMLContent(bool aIgnoreTabindex) const
 {
@@ -413,19 +413,19 @@ HTMLImageElement::AfterSetAttr(int32_t a
       aValue && !aValue->IsEmptyString()) {
     // add the image to the hashtable as needed
     MOZ_ASSERT(aValue->Type() == nsAttrValue::eAtom,
                "Expected atom value for name/id");
     mForm->AddImageElementToTable(this,
       nsDependentAtomString(aValue->GetAtomValue()));
   }
 
-  // Handle src/srcset/crossorigin updates. If aNotify is false, we are coming
-  // from the parser or some such place; we'll get bound after all the
-  // attributes have been set, so we'll do the image load from BindToTree.
+  // Handle src/srcset updates. If aNotify is false, we are coming from the
+  // parser or some such place; we'll get bound after all the attributes have
+  // been set, so we'll do the image load from BindToTree.
 
   nsAttrValueOrString attrVal(aValue);
 
   if (aName == nsGkAtoms::src &&
       aNameSpaceID == kNameSpaceID_None &&
       !aValue) {
     // SetAttr handles setting src since it needs to catch img.src =
     // img.src, so we only need to handle the unset case
@@ -442,30 +442,16 @@ HTMLImageElement::AfterSetAttr(int32_t a
   } else if (aName == nsGkAtoms::srcset &&
              aNameSpaceID == kNameSpaceID_None &&
              IsSrcsetEnabled()) {
     PictureSourceSrcsetChanged(this, attrVal.String(), aNotify);
   } else if (aName == nsGkAtoms::sizes &&
              aNameSpaceID == kNameSpaceID_None &&
              HTMLPictureElement::IsPictureEnabled()) {
     PictureSourceSizesChanged(this, attrVal.String(), aNotify);
-  } else if (aName == nsGkAtoms::crossorigin &&
-             aNameSpaceID == kNameSpaceID_None &&
-             aNotify) {
-    // Force a new load of the image with the new cross origin policy.
-    if (InResponsiveMode()) {
-      // per spec, full selection runs when this changes, even though
-      // it doesn't directly affect the source selection
-      QueueImageLoadTask(true);
-    } else {
-      // Bug 1076583 - We still use the older synchronous algorithm in
-      // non-responsive mode.  Force a new load of the image with the
-      // new cross origin policy.
-      ForceReload(aNotify);
-    }
   }
 
   return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName,
                                             aValue, aNotify);
 }
 
 
 nsresult
@@ -521,16 +507,17 @@ HTMLImageElement::IsHTMLFocusable(bool a
   return false;
 }
 
 nsresult
 HTMLImageElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
                           nsIAtom* aPrefix, const nsAString& aValue,
                           bool aNotify)
 {
+  bool forceReloadWithNewCORSMode = false;
   // We need to force our image to reload.  This must be done here, not in
   // AfterSetAttr or BeforeSetAttr, because we want to do it even if the attr is
   // being set to its existing value, which is normally optimized away as a
   // no-op.
   //
   // If we are in responsive mode, we drop the forced reload behavior,
   // but still trigger a image load task for img.src = img.src per
   // spec.
@@ -559,20 +546,47 @@ HTMLImageElement::SetAttr(int32_t aNameS
       // network if it's set to be not cacheable...  If we change things so that
       // the state gets in Element's attr-setting happen around this
       // LoadImage call, we could start passing false instead of aNotify
       // here.
       LoadImage(aValue, true, aNotify, eImageLoadType_Normal);
 
       mNewRequestsWillNeedAnimationReset = false;
     }
+  } else if (aNameSpaceID == kNameSpaceID_None &&
+             aName == nsGkAtoms::crossorigin &&
+             aNotify) {
+    nsAttrValue attrValue;
+    ParseCORSValue(aValue, attrValue);
+    if (GetCORSMode() != AttrValueToCORSMode(&attrValue)) {
+      // Force a new load of the image with the new cross origin policy.
+      forceReloadWithNewCORSMode = true;
+    }
   }
 
-  return nsGenericHTMLElement::SetAttr(aNameSpaceID, aName, aPrefix, aValue,
-                                       aNotify);
+  nsresult rv = nsGenericHTMLElement::SetAttr(aNameSpaceID, aName, aPrefix,
+                                              aValue, aNotify);
+
+  // Because we load image synchronously in non-responsive-mode, we need to do
+  // reload after the attribute has been set if the reload is triggerred by
+  // cross origin changing.
+  if (forceReloadWithNewCORSMode) {
+    if (InResponsiveMode()) {
+      // per spec, full selection runs when this changes, even though
+      // it doesn't directly affect the source selection
+      QueueImageLoadTask(true);
+    } else {
+      // Bug 1076583 - We still use the older synchronous algorithm in
+      // non-responsive mode. Force a new load of the image with the
+      // new cross origin policy
+      ForceReload(aNotify);
+    }
+  }
+
+  return rv;
 }
 
 nsresult
 HTMLImageElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
                              nsIContent* aBindingParent,
                              bool aCompileEventHandlers)
 {
   nsresult rv = nsGenericHTMLElement::BindToTree(aDocument, aParent,
--- a/dom/html/HTMLImageElement.h
+++ b/dom/html/HTMLImageElement.h
@@ -108,44 +108,44 @@ public:
     SetHTMLBoolAttr(nsGkAtoms::ismap, aIsMap, aError);
   }
   uint32_t Width()
   {
     return GetWidthHeightForImage(mCurrentRequest).width;
   }
   void SetWidth(uint32_t aWidth, ErrorResult& aError)
   {
-    SetUnsignedIntAttr(nsGkAtoms::width, aWidth, aError);
+    SetUnsignedIntAttr(nsGkAtoms::width, aWidth, 0, aError);
   }
   uint32_t Height()
   {
     return GetWidthHeightForImage(mCurrentRequest).height;
   }
   void SetHeight(uint32_t aHeight, ErrorResult& aError)
   {
-    SetUnsignedIntAttr(nsGkAtoms::height, aHeight, aError);
+    SetUnsignedIntAttr(nsGkAtoms::height, aHeight, 0, aError);
   }
   uint32_t NaturalWidth();
   uint32_t NaturalHeight();
   bool Complete();
   uint32_t Hspace()
   {
     return GetUnsignedIntAttr(nsGkAtoms::hspace, 0);
   }
   void SetHspace(uint32_t aHspace, ErrorResult& aError)
   {
-    SetUnsignedIntAttr(nsGkAtoms::hspace, aHspace, aError);
+    SetUnsignedIntAttr(nsGkAtoms::hspace, aHspace, 0, aError);
   }
   uint32_t Vspace()
   {
     return GetUnsignedIntAttr(nsGkAtoms::vspace, 0);
   }
   void SetVspace(uint32_t aVspace, ErrorResult& aError)
   {
-    SetUnsignedIntAttr(nsGkAtoms::vspace, aVspace, aError);
+    SetUnsignedIntAttr(nsGkAtoms::vspace, aVspace, 0, aError);
   }
 
   // The XPCOM versions of the following getters work for Web IDL bindings as well
   void SetAlt(const nsAString& aAlt, ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::alt, aAlt, aError);
   }
   void SetSrc(const nsAString& aSrc, ErrorResult& aError)
--- a/dom/html/HTMLInputElement.h
+++ b/dom/html/HTMLInputElement.h
@@ -479,17 +479,17 @@ public:
   {
     SetHTMLAttr(nsGkAtoms::formtarget, aValue, aRv);
   }
 
   uint32_t Height();
 
   void SetHeight(uint32_t aValue, ErrorResult& aRv)
   {
-    SetUnsignedIntAttr(nsGkAtoms::height, aValue, aRv);
+    SetUnsignedIntAttr(nsGkAtoms::height, aValue, 0, aRv);
   }
 
   bool Indeterminate() const
   {
     return mIndeterminate;
   }
   // XPCOM SetIndeterminate() is OK
 
@@ -583,17 +583,17 @@ public:
 
   void SetSize(uint32_t aValue, ErrorResult& aRv)
   {
     if (aValue == 0) {
       aRv.Throw(NS_ERROR_DOM_INDEX_SIZE_ERR);
       return;
     }
 
-    SetUnsignedIntAttr(nsGkAtoms::size, aValue, aRv);
+    SetUnsignedIntAttr(nsGkAtoms::size, aValue, DEFAULT_COLS, aRv);
   }
 
   // XPCOM GetSrc() is OK
   void SetSrc(const nsAString& aValue, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::src, aValue, aRv);
   }
 
@@ -636,17 +636,17 @@ public:
   }
 
   void SetValueAsNumber(double aValue, ErrorResult& aRv);
 
   uint32_t Width();
 
   void SetWidth(uint32_t aValue, ErrorResult& aRv)
   {
-    SetUnsignedIntAttr(nsGkAtoms::width, aValue, aRv);
+    SetUnsignedIntAttr(nsGkAtoms::width, aValue, 0, aRv);
   }
 
   void StepUp(int32_t aN, ErrorResult& aRv)
   {
     aRv = ApplyStep(aN);
   }
 
   void StepDown(int32_t aN, ErrorResult& aRv)
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -1292,19 +1292,16 @@ nsresult HTMLMediaElement::LoadResource(
       // TODO: Handle failure: run "If the media data cannot be fetched at
       // all, due to network errors, causing the user agent to give up
       // trying to fetch the resource" section of resource fetch algorithm.
       decoder->Shutdown();
       return NS_ERROR_FAILURE;
     }
     RefPtr<MediaResource> resource =
       MediaSourceDecoder::CreateResource(mMediaSource->GetPrincipal());
-    if (IsAutoplayEnabled()) {
-      mJoinLatency.Start();
-    }
     return FinishDecoderSetup(decoder, resource, nullptr);
   }
 
   // determine what security checks need to be performed in AsyncOpen2().
   nsSecurityFlags securityFlags =
     ShouldCheckAllowOrigin() ? nsILoadInfo::SEC_REQUIRE_CORS_DATA_INHERITS :
                                nsILoadInfo::SEC_ALLOW_CROSS_ORIGIN_DATA_INHERITS;
 
@@ -2834,39 +2831,34 @@ HTMLMediaElement::ReportMSETelemetry()
               (ranges->End(index, ignore) - t) < errorMargin;
     stalled |= mDecoder && NextFrameStatus() == MediaDecoderOwner::NEXT_FRAME_UNAVAILABLE_BUFFERING &&
                mReadyState == HTMLMediaElement::HAVE_CURRENT_DATA;
     if (stalled) {
       state = STALLED;
     }
   }
 
+  Telemetry::Accumulate(Telemetry::VIDEO_UNLOAD_STATE, state);
+  LOG(LogLevel::Debug, ("%p VIDEO_UNLOAD_STATE = %d", this, state));
+
   if (HTMLVideoElement* vid = HTMLVideoElement::FromContentOrNull(this)) {
     RefPtr<VideoPlaybackQuality> quality = vid->GetVideoPlaybackQuality();
     uint64_t totalFrames = quality->TotalVideoFrames();
     uint64_t droppedFrames = quality->DroppedVideoFrames();
     if (totalFrames) {
       uint32_t percentage = 100 * droppedFrames / totalFrames;
       LOG(LogLevel::Debug,
           ("Reporting telemetry DROPPED_FRAMES_IN_VIDEO_PLAYBACK"));
       Telemetry::Accumulate(Telemetry::VIDEO_DROPPED_FRAMES_PROPORTION,
                             percentage);
     }
   }
 
-  Telemetry::Accumulate(Telemetry::VIDEO_MSE_UNLOAD_STATE, state);
-  LOG(LogLevel::Debug, ("%p VIDEO_MSE_UNLOAD_STATE = %d", this, state));
-
-  Telemetry::Accumulate(Telemetry::VIDEO_MSE_PLAY_TIME_MS, SECONDS_TO_MS(mPlayTime.Total()));
-  LOG(LogLevel::Debug, ("%p VIDEO_MSE_PLAY_TIME_MS = %f", this, mPlayTime.Total()));
-
-  double latency = mJoinLatency.Count() ? mJoinLatency.Total() / mJoinLatency.Count() : 0.0;
-  Telemetry::Accumulate(Telemetry::VIDEO_MSE_JOIN_LATENCY_MS, SECONDS_TO_MS(latency));
-  LOG(LogLevel::Debug, ("%p VIDEO_MSE_JOIN_LATENCY = %f (%d ms) count=%d\n",
-                     this, latency, SECONDS_TO_MS(latency), mJoinLatency.Count()));
+  Telemetry::Accumulate(Telemetry::VIDEO_PLAY_TIME_MS, SECONDS_TO_MS(mPlayTime.Total()));
+  LOG(LogLevel::Debug, ("%p VIDEO_PLAY_TIME_MS = %f", this, mPlayTime.Total()));
 }
 
 void HTMLMediaElement::UnbindFromTree(bool aDeep,
                                       bool aNullParent)
 {
   if (!mPaused && mNetworkState != nsIDOMHTMLMediaElement::NETWORK_EMPTY) {
     Pause();
   }
@@ -3362,16 +3354,20 @@ void HTMLMediaElement::UpdateSrcMediaStr
     // called and that will remove all listeners/outputs.
 
     mWatchManager.Unwatch(*mMediaStreamListener,
         &HTMLMediaElement::UpdateReadyStateInternal);
 
     mMediaStreamListener->Forget();
     mMediaStreamListener = nullptr;
   }
+
+  // If the input is a media stream, we don't check its data and always regard
+  // it as audible when it's playing.
+  SetAudibleState(shouldPlay);
 }
 
 void HTMLMediaElement::SetupSrcMediaStreamPlayback(DOMMediaStream* aStream)
 {
   NS_ASSERTION(!mSrcStream && !mMediaStreamListener && !mMediaStreamSizeListener,
                "Should have been ended already");
 
   mSrcStream = aStream;
@@ -4323,27 +4319,20 @@ nsresult HTMLMediaElement::DispatchAsync
   if (mEventDeliveryPaused) {
     mPendingEvents.AppendElement(aName);
     return NS_OK;
   }
 
   nsCOMPtr<nsIRunnable> event = new nsAsyncEventRunner(aName, this);
   NS_DispatchToMainThread(event);
 
-  // Only collect rebuffer and stall rate stats for MSE video.
-  if (!mMediaSource) {
-    return NS_OK;
-  }
-
   if ((aName.EqualsLiteral("play") || aName.EqualsLiteral("playing"))) {
     mPlayTime.Start();
-    mJoinLatency.Pause();
   } else if (aName.EqualsLiteral("waiting")) {
     mPlayTime.Pause();
-    Telemetry::Accumulate(Telemetry::VIDEO_MSE_BUFFERING_COUNT, 1);
   } else if (aName.EqualsLiteral("pause")) {
     mPlayTime.Pause();
   }
 
   return NS_OK;
 }
 
 nsresult HTMLMediaElement::DispatchPendingMediaEvents()
@@ -5056,18 +5045,25 @@ void
 HTMLMediaElement::NotifyAudioChannelAgent(bool aPlaying)
 {
   // This is needed to pass nsContentUtils::IsCallerChrome().
   // AudioChannel API should not called from content but it can happen that
   // this method has some content JS in its stack.
   AutoNoJSAPI nojsapi;
 
   if (aPlaying) {
+    // The reason we don't call NotifyStartedPlaying after the media element
+    // really becomes audible is because there is another case needs to block
+    // element as early as we can, we would hear sound leaking if we block it
+    // too late. In that case (block autoplay in non-visited-tab), we need to
+    // create a connection before decoding, because we don't want user hearing
+    // any sound.
     AudioPlaybackConfig config;
-    nsresult rv = mAudioChannelAgent->NotifyStartedPlaying(&config);
+    nsresult rv = mAudioChannelAgent->NotifyStartedPlaying(&config,
+                                                           mIsAudioTrackAudible);
     if (NS_WARN_IF(NS_FAILED(rv))) {
       return;
     }
 
     WindowVolumeChanged(config.mVolume, config.mMuted);
     WindowSuspendChanged(config.mSuspend);
   } else {
     mAudioChannelAgent->NotifyStoppedPlaying();
@@ -5609,18 +5605,26 @@ HTMLMediaElement::IsCurrentlyPlaying() c
       return false;
     }
     return true;
   }
   return false;
 }
 
 void
-HTMLMediaElement::NotifyAudibleStateChanged(bool aAudible)
+HTMLMediaElement::SetAudibleState(bool aAudible)
 {
   if (mIsAudioTrackAudible != aAudible) {
     mIsAudioTrackAudible = aAudible;
-    // To do ...
+    NotifyAudioPlaybackChanged();
+  }
+}
+
+void
+HTMLMediaElement::NotifyAudioPlaybackChanged()
+{
+  if (mAudioChannelAgent) {
+    mAudioChannelAgent->NotifyStartedAudible(mIsAudioTrackAudible);
   }
 }
 
 } // namespace dom
 } // namespace mozilla
--- a/dom/html/HTMLMediaElement.h
+++ b/dom/html/HTMLMediaElement.h
@@ -443,18 +443,22 @@ public:
   {
     return mNetworkState;
   }
 
   // Called by the media decoder object, on the main thread,
   // when the connection between Rtsp server and client gets lost.
   virtual void ResetConnectionState() final override;
 
-  // Called by media decoder when the audible state changed.
-  virtual void NotifyAudibleStateChanged(bool aAudible) final override;
+  // Called by media decoder when the audible state changed or when input is
+  // a media stream.
+  virtual void SetAudibleState(bool aAudible) final override;
+
+  // Notify agent when the MediaElement changes its audible state.
+  void NotifyAudioPlaybackChanged();
 
   // XPCOM GetPreload() is OK
   void SetPreload(const nsAString& aValue, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::preload, aValue, aRv);
   }
 
   already_AddRefed<TimeRanges> Buffered() const;
@@ -1593,22 +1597,19 @@ public:
       return mCount;
     }
   private:
     TimeStamp mStartTime;
     TimeDuration mSum;
     uint32_t mCount;
   };
 private:
-  // Total time an MSE video has spent playing
+  // Total time a video has spent playing.
   TimeDurationAccumulator mPlayTime;
 
-  // Time spent between video load and video playback.
-  TimeDurationAccumulator mJoinLatency;
-
   // Indicates if user has interacted with the element.
   // Used to block autoplay when disabled.
   bool mHasUserInteraction;
 
   // True if the first frame has been successfully loaded.
   bool mFirstFrameLoaded;
 
   // Media elements also have a default playback start position, which must
--- a/dom/html/HTMLObjectElement.cpp
+++ b/dom/html/HTMLObjectElement.cpp
@@ -448,17 +448,17 @@ HTMLObjectElement::SubmitNamesValues(nsF
   NS_ENSURE_SUCCESS(rv, rv);
 
   return aFormSubmission->AddNameValuePair(name, value);
 }
 
 NS_IMPL_STRING_ATTR(HTMLObjectElement, Align, align)
 NS_IMPL_STRING_ATTR(HTMLObjectElement, Archive, archive)
 NS_IMPL_STRING_ATTR(HTMLObjectElement, Border, border)
-NS_IMPL_URI_ATTR_WITH_BASE(HTMLObjectElement, Code, code, codebase)
+NS_IMPL_STRING_ATTR(HTMLObjectElement, Code, code)
 NS_IMPL_URI_ATTR(HTMLObjectElement, CodeBase, codebase)
 NS_IMPL_STRING_ATTR(HTMLObjectElement, CodeType, codetype)
 NS_IMPL_URI_ATTR_WITH_BASE(HTMLObjectElement, Data, data, codebase)
 NS_IMPL_BOOL_ATTR(HTMLObjectElement, Declare, declare)
 NS_IMPL_STRING_ATTR(HTMLObjectElement, Height, height)
 NS_IMPL_INT_ATTR(HTMLObjectElement, Hspace, hspace)
 NS_IMPL_STRING_ATTR(HTMLObjectElement, Name, name)
 NS_IMPL_STRING_ATTR(HTMLObjectElement, Standby, standby)
--- a/dom/html/HTMLObjectElement.h
+++ b/dom/html/HTMLObjectElement.h
@@ -168,17 +168,17 @@ public:
   void GetArchive(DOMString& aValue)
   {
     GetHTMLAttr(nsGkAtoms::archive, aValue);
   }
   void SetArchive(const nsAString& aValue, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::archive, aValue, aRv);
   }
-  // XPCOM GetCode is ok; note that it's a URI attribute with a weird base URI
+  // XPCOM GetCode is ok
   void SetCode(const nsAString& aValue, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::code, aValue, aRv);
   }
   bool Declare()
   {
     return GetBoolAttr(nsGkAtoms::declare);
   }
@@ -187,33 +187,33 @@ public:
     SetHTMLBoolAttr(nsGkAtoms::declare, aValue, aRv);
   }
   uint32_t Hspace()
   {
     return GetUnsignedIntAttr(nsGkAtoms::hspace, 0);
   }
   void SetHspace(uint32_t aValue, ErrorResult& aRv)
   {
-    SetUnsignedIntAttr(nsGkAtoms::hspace, aValue, aRv);
+    SetUnsignedIntAttr(nsGkAtoms::hspace, aValue, 0, aRv);
   }
   void GetStandby(DOMString& aValue)
   {
     GetHTMLAttr(nsGkAtoms::standby, aValue);
   }
   void SetStandby(const nsAString& aValue, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::standby, aValue, aRv);
   }
   uint32_t Vspace()
   {
     return GetUnsignedIntAttr(nsGkAtoms::vspace, 0);
   }
   void SetVspace(uint32_t aValue, ErrorResult& aRv)
   {
-    SetUnsignedIntAttr(nsGkAtoms::vspace, aValue, aRv);
+    SetUnsignedIntAttr(nsGkAtoms::vspace, aValue, 0, aRv);
   }
   // XPCOM GetCodebase is ok; note that it's a URI attribute
   void SetCodeBase(const nsAString& aValue, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::codebase, aValue, aRv);
   }
   void GetCodeType(DOMString& aValue)
   {
--- a/dom/html/HTMLPreElement.cpp
+++ b/dom/html/HTMLPreElement.cpp
@@ -32,17 +32,17 @@ NS_IMPL_INT_ATTR(HTMLPreElement, Width, 
 bool
 HTMLPreElement::ParseAttribute(int32_t aNamespaceID,
                                nsIAtom* aAttribute,
                                const nsAString& aValue,
                                nsAttrValue& aResult)
 {
   if (aNamespaceID == kNameSpaceID_None) {
     if (aAttribute == nsGkAtoms::width) {
-      return aResult.ParseIntWithBounds(aValue, 0);
+      return aResult.ParseIntValue(aValue);
     }
   }
 
   return nsGenericHTMLElement::ParseAttribute(aNamespaceID, aAttribute, aValue,
                                               aResult);
 }
 
 void
--- a/dom/html/HTMLSelectElement.h
+++ b/dom/html/HTMLSelectElement.h
@@ -205,17 +205,17 @@ public:
     SetHTMLBoolAttr(nsGkAtoms::required, aVal, aRv);
   }
   uint32_t Size() const
   {
     return GetUnsignedIntAttr(nsGkAtoms::size, 0);
   }
   void SetSize(uint32_t aSize, ErrorResult& aRv)
   {
-    SetUnsignedIntAttr(nsGkAtoms::size, aSize, aRv);
+    SetUnsignedIntAttr(nsGkAtoms::size, aSize, 0, aRv);
   }
 
   // Uses XPCOM GetType.
 
   HTMLOptionsCollection* Options() const
   {
     return mOptions;
   }
--- a/dom/html/HTMLSharedObjectElement.h
+++ b/dom/html/HTMLSharedObjectElement.h
@@ -132,17 +132,17 @@ public:
     SetHTMLAttr(nsGkAtoms::height, aValue, aRv);
   }
   uint32_t Hspace()
   {
     return GetUnsignedIntAttr(nsGkAtoms::hspace, 0);
   }
   void SetHspace(uint32_t aValue, ErrorResult& aRv)
   {
-    SetUnsignedIntAttr(nsGkAtoms::hspace, aValue, aRv);
+    SetUnsignedIntAttr(nsGkAtoms::hspace, aValue, 0, aRv);
   }
   void GetName(DOMString& aValue)
   {
     GetHTMLAttr(nsGkAtoms::name, aValue);
   }
   void SetName(const nsAString& aValue, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::name, aValue, aRv);
@@ -153,17 +153,17 @@ public:
     SetHTMLAttr(nsGkAtoms::object, aValue, aRv);
   }
   uint32_t Vspace()
   {
     return GetUnsignedIntAttr(nsGkAtoms::vspace, 0);
   }
   void SetVspace(uint32_t aValue, ErrorResult& aRv)
   {
-    SetUnsignedIntAttr(nsGkAtoms::vspace, aValue, aRv);
+    SetUnsignedIntAttr(nsGkAtoms::vspace, aValue, 0, aRv);
   }
   void GetWidth(DOMString& aValue)
   {
     GetHTMLAttr(nsGkAtoms::width, aValue);
   }
   void SetWidth(const nsAString& aValue, ErrorResult& aRv)
   {
     SetHTMLAttr(nsGkAtoms::width, aValue, aRv);
--- a/dom/html/HTMLTableCellElement.cpp
+++ b/dom/html/HTMLTableCellElement.cpp
@@ -364,16 +364,22 @@ HTMLTableCellElement::GetAlign(DOMString
 static const nsAttrValue::EnumTable kCellScopeTable[] = {
   { "row",      NS_STYLE_CELL_SCOPE_ROW },
   { "col",      NS_STYLE_CELL_SCOPE_COL },
   { "rowgroup", NS_STYLE_CELL_SCOPE_ROWGROUP },
   { "colgroup", NS_STYLE_CELL_SCOPE_COLGROUP },
   { 0 }
 };
 
+void
+HTMLTableCellElement::GetScope(DOMString& aScope)
+{
+  GetEnumAttr(nsGkAtoms::scope, nullptr, aScope);
+}
+
 bool
 HTMLTableCellElement::ParseAttribute(int32_t aNamespaceID,
                                      nsIAtom* aAttribute,
                                      const nsAString& aValue,
                                      nsAttrValue& aResult)
 {
   if (aNamespaceID == kNameSpaceID_None) {
     /* ignore these attributes, stored simply as strings
--- a/dom/html/HTMLTableCellElement.h
+++ b/dom/html/HTMLTableCellElement.h
@@ -61,20 +61,17 @@ public:
   void GetAbbr(DOMString& aAbbr)
   {
     GetHTMLAttr(nsGkAtoms::abbr, aAbbr);
   }
   void SetAbbr(const nsAString& aAbbr, ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::abbr, aAbbr, aError);
   }
-  void GetScope(DOMString& aScope)
-  {
-    GetHTMLAttr(nsGkAtoms::scope, aScope);
-  }
+  void GetScope(DOMString& aScope);
   void SetScope(const nsAString& aScope, ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::scope, aScope, aError);
   }
   void GetAlign(DOMString& aAlign);
   void SetAlign(const nsAString& aAlign, ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::align, aAlign, aError);
--- a/dom/html/HTMLTextAreaElement.h
+++ b/dom/html/HTMLTextAreaElement.h
@@ -174,17 +174,17 @@ public:
   {
     return GetIntAttr(nsGkAtoms::cols, DEFAULT_COLS);
   }
   void SetCols(uint32_t aCols, ErrorResult& aError)
   {
     if (aCols == 0) {
       aError.Throw(NS_ERROR_DOM_INDEX_SIZE_ERR);
     } else {
-      SetUnsignedIntAttr(nsGkAtoms::cols, aCols, aError);
+      SetUnsignedIntAttr(nsGkAtoms::cols, aCols, DEFAULT_COLS, aError);
     }
   }
   bool Disabled()
   {
     return GetBoolAttr(nsGkAtoms::disabled);
   }
   void SetDisabled(bool aDisabled, ErrorResult& aError)
   {
@@ -242,17 +242,17 @@ public:
   {
     return GetIntAttr(nsGkAtoms::rows, DEFAULT_ROWS_TEXTAREA);
   }
   void SetRows(uint32_t aRows, ErrorResult& aError)
   {
     if (aRows == 0) {
       aError.Throw(NS_ERROR_DOM_INDEX_SIZE_ERR);
     } else {
-      SetUnsignedIntAttr(nsGkAtoms::rows, aRows, aError);
+      SetUnsignedIntAttr(nsGkAtoms::rows, aRows, DEFAULT_ROWS_TEXTAREA, aError);
     }
   }
   // XPCOM GetWrap is fine
   void SetWrap(const nsAString& aWrap, ErrorResult& aError)
   {
     SetHTMLAttr(nsGkAtoms::wrap, aWrap, aError);
   }
   // XPCOM GetType is fine
--- a/dom/html/HTMLVideoElement.h
+++ b/dom/html/HTMLVideoElement.h
@@ -56,27 +56,27 @@ public:
 
   uint32_t Width() const
   {
     return GetIntAttr(nsGkAtoms::width, 0);
   }
 
   void SetWidth(uint32_t aValue, ErrorResult& aRv)
   {
-    SetHTMLIntAttr(nsGkAtoms::width, aValue, aRv);
+    SetUnsignedIntAttr(nsGkAtoms::width, aValue, 0, aRv);
   }
 
   uint32_t Height() const
   {
     return GetIntAttr(nsGkAtoms::height, 0);
   }
 
   void SetHeight(uint32_t aValue, ErrorResult& aRv)
   {
-    SetHTMLIntAttr(nsGkAtoms::height, aValue, aRv);
+    SetUnsignedIntAttr(nsGkAtoms::height, aValue, 0, aRv);
   }
 
   uint32_t VideoWidth() const
   {
     return mMediaInfo.HasVideo() ? mMediaInfo.mVideo.mDisplay.width : 0;
   }
 
   uint32_t VideoHeight() const
--- a/dom/html/nsGenericHTMLElement.h
+++ b/dom/html/nsGenericHTMLElement.h
@@ -1131,22 +1131,29 @@ protected:
 
   /**
    * Helper method for NS_IMPL_UINT_ATTR macro.
    * Sets value of attribute to specified unsigned integer. Only works for
    * attributes in null namespace.
    *
    * @param aAttr    name of attribute.
    * @param aValue   Integer value of attribute.
+   * @param aDefault Default value (in case value is out of range).  If the spec
+   *                 doesn't provide one, should be 1 if the value is limited to
+   *                 nonzero values, and 0 otherwise.
    */
-  void SetUnsignedIntAttr(nsIAtom* aName, uint32_t aValue,
+  void SetUnsignedIntAttr(nsIAtom* aName, uint32_t aValue, uint32_t aDefault,
                           mozilla::ErrorResult& aError)
   {
     nsAutoString value;
-    value.AppendInt(aValue);
+    if (aValue > INT32_MAX) {
+      value.AppendInt(aDefault);
+    } else {
+      value.AppendInt(aValue);
+    }
 
     SetHTMLAttr(aName, value, aError);
   }
 
   /**
    * Sets value of attribute to specified double. Only works for attributes
    * in null namespace.
    *
@@ -1550,17 +1557,17 @@ protected:
   {                                                                       \
     *aValue = GetUnsignedIntAttr(nsGkAtoms::_atom, _default);             \
     return NS_OK;                                                         \
   }                                                                       \
   NS_IMETHODIMP                                                           \
   _class::Set##_method(uint32_t aValue)                                   \
   {                                                                       \
     mozilla::ErrorResult rv;                                              \
-    SetUnsignedIntAttr(nsGkAtoms::_atom, aValue, rv);                     \
+    SetUnsignedIntAttr(nsGkAtoms::_atom, aValue, _default, rv);           \
     return rv.StealNSResult();                                            \
   }
 
 /**
  * A macro to implement the getter and setter for a given unsigned integer
  * valued content property. The method uses GetUnsignedIntAttr and
  * SetUnsignedIntAttr methods. This macro is similar to NS_IMPL_UINT_ATTR except
  * that it throws an exception if the set value is null.
@@ -1577,17 +1584,17 @@ protected:
   }                                                                       \
   NS_IMETHODIMP                                                           \
   _class::Set##_method(uint32_t aValue)                                   \
   {                                                                       \
     if (aValue == 0) {                                                    \
       return NS_ERROR_DOM_INDEX_SIZE_ERR;                                 \
     }                                                                     \
     mozilla::ErrorResult rv;                                              \
-    SetUnsignedIntAttr(nsGkAtoms::_atom, aValue, rv);                     \
+    SetUnsignedIntAttr(nsGkAtoms::_atom, aValue, _default, rv);           \
     return rv.StealNSResult();                                            \
   }
 
 /**
  * A macro to implement the getter and setter for a given content
  * property that needs to return a URI in string form.  The method
  * uses the generic GetAttr and SetAttr methods.  This macro is much
  * like the NS_IMPL_STRING_ATTR macro, except we make sure the URI is
--- a/dom/html/test/reflect.js
+++ b/dom/html/test/reflect.js
@@ -171,34 +171,31 @@ function reflectUnsignedInt(aParameters)
   }
 
   // -3000000000 is equivalent to 1294967296 when using the IDL attribute.
   element[attr] = -3000000000;
   is(element[attr], 1294967296, "." + attr + " should be equals to 1294967296");
   is(element.getAttribute(attr), "1294967296",
      "@" + attr + " should be equals to 1294967296");
 
-  // When setting the content atribute, it's a string so it will be unvalid.
+  // When setting the content attribute, it's a string so it will be invalid.
   element.setAttribute(attr, -3000000000);
   is(element.getAttribute(attr), "-3000000000",
      "@" + attr + " should be equals to " + -3000000000);
   is(element[attr], defaultValue,
      "." + attr + " should be equals to " + defaultValue);
 
-  var nonValidValues = [
-    /* invalid value, value in the unsigned int range */
-    [ -2147483648, 2147483648 ],
-    [ -1,          4294967295 ],
-    [ 3147483647,  3147483647 ],
-  ];
+  // When interpreted as unsigned 32-bit integers, all of these fall between
+  // 2^31 and 2^32 - 1, so per spec they return the default value.
+  var nonValidValues = [ -2147483648, -1, 3147483647];
 
-  for (var values of nonValidValues) {
-    element[attr] = values[0];
-    is(element.getAttribute(attr), String(values[1]),
-       "@" + attr + " should be equals to " + values[1]);
+  for (var value of nonValidValues) {
+    element[attr] = value;
+    is(element.getAttribute(attr), String(defaultValue),
+       "@" + attr + " should be equals to " + defaultValue);
     is(element[attr], defaultValue,
        "." + attr + " should be equals to " + defaultValue);
   }
 
   for (var values of nonValidValues) {
     element.setAttribute(attr, values[0]);
     is(element.getAttribute(attr), String(values[0]),
        "@" + attr + " should be equals to " + values[0]);
--- a/dom/html/test/test_img_attributes_reflection.html
+++ b/dom/html/test/test_img_attributes_reflection.html
@@ -84,18 +84,17 @@ reflectURL({
 })
 
 reflectString({
   element: document.createElement("img"),
   attribute: "border",
   extendedAttributes: { TreatNullAs: "EmptyString" },
 })
 
-// TODO: Bug 881000 - Consider reflecting lowsrc as a URL.
-reflectString({
+reflectURL({
   element: document.createElement("img"),
   attribute: "lowsrc",
 })
 
 ok("x" in document.createElement("img"), "img.x is present")
 ok("y" in document.createElement("img"), "img.y is present")
 
 </script>
--- a/dom/html/test/test_object_attributes_reflection.html
+++ b/dom/html/test/test_object_attributes_reflection.html
@@ -58,18 +58,18 @@ reflectString({
 });
 
 // .archive (String)
 reflectString({
   element: document.createElement("object"),
   attribute: "archive",
 });
 
-// .code (URL)
-reflectURL({
+// .code (String)
+reflectString({
   element: document.createElement("object"),
   attribute: "code",
 });
 
 // .declare (String)
 reflectBoolean({
   element: document.createElement("object"),
   attribute: "declare",
--- a/dom/indexedDB/ActorsParent.cpp
+++ b/dom/indexedDB/ActorsParent.cpp
@@ -3982,17 +3982,17 @@ UpgradeIndexDataValuesFunction::OnFuncti
     return rv;
   }
 
   UniqueFreePtr<uint8_t> newIdv;
   uint32_t newIdvLength;
   rv = MakeCompressedIndexDataValues(oldIdv, newIdv, &newIdvLength);
 
   std::pair<uint8_t*, int> data(newIdv.release(), newIdvLength);
-  
+
   nsCOMPtr<nsIVariant> result = new storage::AdoptedBlobVariant(data);
 
   result.forget(aResult);
   return NS_OK;
 }
 
 nsresult
 UpgradeSchemaFrom20_0To21_0(mozIStorageConnection* aConnection)
@@ -6986,23 +6986,32 @@ private:
 
   virtual bool
   RecvCreateObjectStore(const ObjectStoreMetadata& aMetadata) override;
 
   virtual bool
   RecvDeleteObjectStore(const int64_t& aObjectStoreId) override;
 
   virtual bool
+  RecvRenameObjectStore(const int64_t& aObjectStoreId,
+                        const nsString& aName) override;
+
+  virtual bool
   RecvCreateIndex(const int64_t& aObjectStoreId,
                   const IndexMetadata& aMetadata) override;
 
   virtual bool
   RecvDeleteIndex(const int64_t& aObjectStoreId,
                   const int64_t& aIndexId) override;
 
+  virtual bool
+  RecvRenameIndex(const int64_t& aObjectStoreId,
+                  const int64_t& aIndexId,
+                  const nsString& aName) override;
+
   virtual PBackgroundIDBRequestParent*
   AllocPBackgroundIDBRequestParent(const RequestParams& aParams) override;
 
   virtual bool
   RecvPBackgroundIDBRequestConstructor(PBackgroundIDBRequestParent* aActor,
                                        const RequestParams& aParams)
                                        override;
 
@@ -7742,16 +7751,40 @@ private:
 
   ~DeleteObjectStoreOp()
   { }
 
   virtual nsresult
   DoDatabaseWork(DatabaseConnection* aConnection) override;
 };
 
+class RenameObjectStoreOp final
+  : public VersionChangeTransactionOp
+{
+  friend class VersionChangeTransaction;
+
+  const RefPtr<FullObjectStoreMetadata> mMetadata;
+
+private:
+  // Only created by VersionChangeTransaction.
+  RenameObjectStoreOp(VersionChangeTransaction* aTransaction,
+                      FullObjectStoreMetadata* const aMetadata)
+    : VersionChangeTransactionOp(aTransaction)
+    , mMetadata(aMetadata)
+  {
+    MOZ_ASSERT(aMetadata->mCommonMetadata.id());
+  }
+
+  ~RenameObjectStoreOp()
+  { }
+
+  virtual nsresult
+  DoDatabaseWork(DatabaseConnection* aConnection) override;
+};
+
 class CreateIndexOp final
   : public VersionChangeTransactionOp
 {
   friend class VersionChangeTransaction;
 
   class ThreadLocalJSRuntime;
   class UpdateIndexDataValuesFunction;
 
@@ -7918,16 +7951,43 @@ private:
   RemoveReferencesToIndex(DatabaseConnection* aConnection,
                           const Key& aObjectDataKey,
                           nsTArray<IndexDataValue>& aIndexValues);
 
   virtual nsresult
   DoDatabaseWork(DatabaseConnection* aConnection) override;
 };
 
+class RenameIndexOp final
+  : public VersionChangeTransactionOp
+{
+  friend class VersionChangeTransaction;
+
+  const RefPtr<FullIndexMetadata> mMetadata;
+  const int64_t mObjectStoreId;
+
+private:
+  // Only created by VersionChangeTransaction.
+  RenameIndexOp(VersionChangeTransaction* aTransaction,
+                FullIndexMetadata* const aMetadata,
+                int64_t aObjectStoreId)
+    : VersionChangeTransactionOp(aTransaction)
+    , mMetadata(aMetadata)
+    , mObjectStoreId(aObjectStoreId)
+  {
+    MOZ_ASSERT(aMetadata->mCommonMetadata.id());
+  }
+
+  ~RenameIndexOp()
+  { }
+
+  virtual nsresult
+  DoDatabaseWork(DatabaseConnection* aConnection) override;
+};
+
 class NormalTransactionOp
   : public TransactionDatabaseOperationBase
   , public PBackgroundIDBRequestParent
 {
 #ifdef DEBUG
   bool mResponseSent;
 #endif
 
@@ -15558,16 +15618,64 @@ VersionChangeTransaction::RecvDeleteObje
   }
 
   op->DispatchToConnectionPool();
 
   return true;
 }
 
 bool
+VersionChangeTransaction::RecvRenameObjectStore(const int64_t& aObjectStoreId,
+                                                const nsString& aName)
+{
+  AssertIsOnBackgroundThread();
+
+  if (NS_WARN_IF(!aObjectStoreId)) {
+    ASSERT_UNLESS_FUZZING();
+    return false;
+  }
+
+  const RefPtr<FullDatabaseMetadata> dbMetadata = GetDatabase()->Metadata();
+  MOZ_ASSERT(dbMetadata);
+  MOZ_ASSERT(dbMetadata->mNextObjectStoreId > 0);
+
+  if (NS_WARN_IF(aObjectStoreId >= dbMetadata->mNextObjectStoreId)) {
+    ASSERT_UNLESS_FUZZING();
+    return false;
+  }
+
+  RefPtr<FullObjectStoreMetadata> foundMetadata =
+    GetMetadataForObjectStoreId(aObjectStoreId);
+
+  if (NS_WARN_IF(!foundMetadata)) {
+    ASSERT_UNLESS_FUZZING();
+    return false;
+  }
+
+  if (NS_WARN_IF(mCommitOrAbortReceived)) {
+    ASSERT_UNLESS_FUZZING();
+    return false;
+  }
+
+  foundMetadata->mCommonMetadata.name() = aName;
+
+  RefPtr<RenameObjectStoreOp> renameOp =
+    new RenameObjectStoreOp(this, foundMetadata);
+
+  if (NS_WARN_IF(!renameOp->Init(this))) {
+    renameOp->Cleanup();
+    return false;
+  }
+
+  renameOp->DispatchToConnectionPool();
+
+  return true;
+}
+
+bool
 VersionChangeTransaction::RecvCreateIndex(const int64_t& aObjectStoreId,
                                           const IndexMetadata& aMetadata)
 {
   AssertIsOnBackgroundThread();
 
   if (NS_WARN_IF(!aObjectStoreId)) {
     ASSERT_UNLESS_FUZZING();
     return false;
@@ -15712,16 +15820,84 @@ VersionChangeTransaction::RecvDeleteInde
     return false;
   }
 
   op->DispatchToConnectionPool();
 
   return true;
 }
 
+bool
+VersionChangeTransaction::RecvRenameIndex(const int64_t& aObjectStoreId,
+                                          const int64_t& aIndexId,
+                                          const nsString& aName)
+{
+  AssertIsOnBackgroundThread();
+
+  if (NS_WARN_IF(!aObjectStoreId)) {
+    ASSERT_UNLESS_FUZZING();
+    return false;
+  }
+
+  if (NS_WARN_IF(!aIndexId)) {
+    ASSERT_UNLESS_FUZZING();
+    return false;
+  }
+
+  const RefPtr<FullDatabaseMetadata> dbMetadata = GetDatabase()->Metadata();
+  MOZ_ASSERT(dbMetadata);
+  MOZ_ASSERT(dbMetadata->mNextObjectStoreId > 0);
+  MOZ_ASSERT(dbMetadata->mNextIndexId > 0);
+
+  if (NS_WARN_IF(aObjectStoreId >= dbMetadata->mNextObjectStoreId)) {
+    ASSERT_UNLESS_FUZZING();
+    return false;
+  }
+
+  if (NS_WARN_IF(aIndexId >= dbMetadata->mNextIndexId)) {
+    ASSERT_UNLESS_FUZZING();
+    return false;
+  }
+
+  RefPtr<FullObjectStoreMetadata> foundObjectStoreMetadata =
+    GetMetadataForObjectStoreId(aObjectStoreId);
+
+  if (NS_WARN_IF(!foundObjectStoreMetadata)) {
+    ASSERT_UNLESS_FUZZING();
+    return false;
+  }
+
+  RefPtr<FullIndexMetadata> foundIndexMetadata =
+    GetMetadataForIndexId(foundObjectStoreMetadata, aIndexId);
+
+  if (NS_WARN_IF(!foundIndexMetadata)) {
+    ASSERT_UNLESS_FUZZING();
+    return false;
+  }
+
+  if (NS_WARN_IF(mCommitOrAbortReceived)) {
+    ASSERT_UNLESS_FUZZING();
+    return false;
+  }
+
+  foundIndexMetadata->mCommonMetadata.name() = aName;
+
+  RefPtr<RenameIndexOp> renameOp =
+    new RenameIndexOp(this, foundIndexMetadata, aObjectStoreId);
+
+  if (NS_WARN_IF(!renameOp->Init(this))) {
+    renameOp->Cleanup();
+    return false;
+  }
+
+  renameOp->DispatchToConnectionPool();
+
+  return true;
+}
+
 PBackgroundIDBRequestParent*
 VersionChangeTransaction::AllocPBackgroundIDBRequestParent(
                                                    const RequestParams& aParams)
 {
   AssertIsOnBackgroundThread();
   MOZ_ASSERT(aParams.type() != RequestParams::T__None);
 
   return AllocRequest(aParams, IsSameProcessActor());
@@ -23479,16 +23655,101 @@ DeleteObjectStoreOp::DoDatabaseWork(Data
 
   if (mMetadata->mCommonMetadata.autoIncrement()) {
     Transaction()->ForgetModifiedAutoIncrementObjectStore(mMetadata);
   }
 
   return NS_OK;
 }
 
+nsresult
+RenameObjectStoreOp::DoDatabaseWork(DatabaseConnection* aConnection)
+{
+  MOZ_ASSERT(aConnection);
+  aConnection->AssertIsOnConnectionThread();
+
+  PROFILER_LABEL("IndexedDB",
+                 "RenameObjectStoreOp::DoDatabaseWork",
+                 js::ProfileEntry::Category::STORAGE);
+
+  if (NS_WARN_IF(IndexedDatabaseManager::InLowDiskSpaceMode())) {
+    return NS_ERROR_DOM_INDEXEDDB_QUOTA_ERR;
+  }
+
+#ifdef DEBUG
+  {
+    // Make sure that we're not renaming an object store with the same name as
+    // another that already exists. This should be impossible because we should
+    // have thrown an error long before now...
+    DatabaseConnection::CachedStatement stmt;
+    MOZ_ALWAYS_SUCCEEDS(
+      aConnection->GetCachedStatement(NS_LITERAL_CSTRING(
+        "SELECT name "
+          "FROM object_store "
+          "WHERE name = :name "
+          "AND id != :id;"),
+        &stmt));
+
+    MOZ_ALWAYS_SUCCEEDS(
+      stmt->BindStringByName(NS_LITERAL_CSTRING("name"),
+                             mMetadata->mCommonMetadata.name()));
+
+    MOZ_ALWAYS_SUCCEEDS(
+      stmt->BindInt64ByName(NS_LITERAL_CSTRING("id"),
+                            mMetadata->mCommonMetadata.id()));
+
+    bool hasResult;
+    MOZ_ALWAYS_SUCCEEDS(stmt->ExecuteStep(&hasResult));
+    MOZ_ASSERT(!hasResult);
+  }
+#endif
+
+  DatabaseConnection::AutoSavepoint autoSave;
+  nsresult rv = autoSave.Start(Transaction());
+  if (NS_WARN_IF(NS_FAILED(rv))) {
+    return rv;
+  }
+
+  DatabaseConnection::CachedStatement stmt;
+  rv = aConnection->GetCachedStatement(NS_LITERAL_CSTRING(
+    "UPDATE object_store "
+      "SET name = :name "
+      "WHERE id = :id;"),
+    &stmt);
+  if (NS_WARN_IF(NS_FAILED(rv))) {
+    return rv;
+  }
+
+  rv = stmt->BindStringByName(NS_LITERAL_CSTRING("name"),
+                              mMetadata->mCommonMetadata.name());
+
+  if (NS_WARN_IF(NS_FAILED(rv))) {
+    return rv;
+  }
+
+  rv = stmt->BindInt64ByName(NS_LITERAL_CSTRING("id"),
+                             mMetadata->mCommonMetadata.id());
+
+  if (NS_WARN_IF(NS_FAILED(rv))) {
+    return rv;
+  }
+
+  rv = stmt->Execute();
+  if (NS_WARN_IF(NS_FAILED(rv))) {
+    return rv;
+  }
+
+  rv = autoSave.Commit();
+  if (NS_WARN_IF(NS_FAILED(rv))) {
+    return rv;
+  }
+
+  return NS_OK;
+}
+
 CreateIndexOp::CreateIndexOp(VersionChangeTransaction* aTransaction,
                              const int64_t aObjectStoreId,
                              const IndexMetadata& aMetadata)
   : VersionChangeTransactionOp(aTransaction)
   , mMetadata(aMetadata)
   , mFileManager(aTransaction->GetDatabase()->GetFileManager())
   , mDatabaseId(aTransaction->DatabaseId())
   , mObjectStoreId(aObjectStoreId)
@@ -23787,17 +24048,17 @@ NormalJSRuntime::Init()
   MOZ_ASSERT(!IsOnBackgroundThread());
 
   mRuntime = JS_NewRuntime(kRuntimeHeapSize);
   if (NS_WARN_IF(!mRuntime)) {
     return false;
   }
 
   // Not setting this will cause JS_CHECK_RECURSION to report false positives.
-  JS_SetNativeStackQuota(mRuntime, 128 * sizeof(size_t) * 1024); 
+  JS_SetNativeStackQuota(mRuntime, 128 * sizeof(size_t) * 1024);
 
   mContext = JS_NewContext(mRuntime, 0);
   if (NS_WARN_IF(!mContext)) {
     return false;
   }
 
   JSAutoRequest ar(mContext);
 
@@ -24496,16 +24757,109 @@ DeleteIndexOp::DoDatabaseWork(DatabaseCo
   rv = autoSave.Commit();
   if (NS_WARN_IF(NS_FAILED(rv))) {
     return rv;
   }
 
   return NS_OK;
 }
 
+nsresult
+RenameIndexOp::DoDatabaseWork(DatabaseConnection* aConnection)
+{
+  MOZ_ASSERT(aConnection);
+  aConnection->AssertIsOnConnectionThread();
+
+  PROFILER_LABEL("IndexedDB",
+                 "RenameIndexOp::DoDatabaseWork",
+                 js::ProfileEntry::Category::STORAGE);
+
+  if (NS_WARN_IF(IndexedDatabaseManager::InLowDiskSpaceMode())) {
+    return NS_ERROR_DOM_INDEXEDDB_QUOTA_ERR;
+  }
+
+#ifdef DEBUG
+  {
+    // Make sure that we're not renaming an index with the same name as another
+    // that already exists. This should be impossible because we should have
+    // thrown an error long before now...
+    DatabaseConnection::CachedStatement stmt;
+    MOZ_ALWAYS_SUCCEEDS(
+      aConnection->GetCachedStatement(NS_LITERAL_CSTRING(
+        "SELECT name "
+          "FROM object_store_index "
+          "WHERE object_store_id = :object_store_id "
+           "AND name = :name "
+           "AND id != :id;"),
+        &stmt));
+
+    MOZ_ALWAYS_SUCCEEDS(
+      stmt->BindInt64ByName(NS_LITERAL_CSTRING("object_store_id"),
+                            mObjectStoreId));
+
+    MOZ_ALWAYS_SUCCEEDS(
+      stmt->BindStringByName(NS_LITERAL_CSTRING("name"),
+                             mMetadata->mCommonMetadata.name()));
+
+    MOZ_ALWAYS_SUCCEEDS(
+      stmt->BindInt64ByName(NS_LITERAL_CSTRING("id"),
+                            mMetadata->mCommonMetadata.id()));
+
+    bool hasResult;
+    MOZ_ALWAYS_SUCCEEDS(stmt->ExecuteStep(&hasResult));
+    MOZ_ASSERT(!hasResult);
+  }
+#else
+  Unused << mObjectStoreId;
+#endif
+
+  DatabaseConnection::AutoSavepoint autoSave;
+  nsresult rv = autoSave.Start(Transaction());
+  if (NS_WARN_IF(NS_FAILED(rv))) {
+    return rv;
+  }
+
+  DatabaseConnection::CachedStatement stmt;
+  rv = aConnection->GetCachedStatement(NS_LITERAL_CSTRING(
+    "UPDATE object_store_index "
+      "SET name = :name "
+      "WHERE id = :id;"),
+    &stmt);
+  if (NS_WARN_IF(NS_FAILED(rv))) {
+    return rv;
+  }
+
+  rv = stmt->BindStringByName(NS_LITERAL_CSTRING("name"),
+                              mMetadata->mCommonMetadata.name());
+
+  if (NS_WARN_IF(NS_FAILED(rv))) {
+    return rv;
+  }
+
+  rv = stmt->BindInt64ByName(NS_LITERAL_CSTRING("id"),
+                             mMetadata->mCommonMetadata.id());
+
+  if (NS_WARN_IF(NS_FAILED(rv))) {
+    return rv;
+  }
+
+  rv = stmt->Execute();
+  if (NS_WARN_IF(NS_FAILED(rv))) {
+    return rv;
+  }
+
+  rv = autoSave.Commit();
+  if (NS_WARN_IF(NS_FAILED(rv))) {
+    return rv;
+  }
+
+
+  return NS_OK;
+}
+
 // static
 nsresult
 NormalTransactionOp::ObjectStoreHasIndexes(NormalTransactionOp* aOp,
                                            DatabaseConnection* aConnection,
                                            const int64_t aObjectStoreId,
                                            const bool aMayHaveIndexes,
                                            bool* aHasIndexes)
 {
--- a/dom/indexedDB/IDBDatabase.cpp
+++ b/dom/indexedDB/IDBDatabase.cpp
@@ -1344,10 +1344,90 @@ Observer::Observe(nsISupports* aSubject,
 
     return NS_OK;
   }
 
   NS_WARNING("Unknown observer topic!");
   return NS_OK;
 }
 
+nsresult
+IDBDatabase::RenameObjectStore(int64_t aObjectStoreId, const nsAString& aName)
+{
+  MOZ_ASSERT(mSpec);
+
+  nsTArray<ObjectStoreSpec>& objectStores = mSpec->objectStores();
+
+  ObjectStoreSpec* foundObjectStoreSpec = nullptr;
+  // Find the matched object store spec and check if 'aName' is already used by
+  // another object store.
+  for (uint32_t objCount = objectStores.Length(), objIndex = 0;
+       objIndex < objCount;
+       objIndex++) {
+    const ObjectStoreSpec& objSpec = objectStores[objIndex];
+    if (objSpec.metadata().id() == aObjectStoreId) {
+      MOZ_ASSERT(!foundObjectStoreSpec);
+      foundObjectStoreSpec = &objectStores[objIndex];
+      continue;
+    }
+    if (aName == objSpec.metadata().name()) {
+      return NS_ERROR_DOM_INDEXEDDB_CONSTRAINT_ERR;
+    }
+  }
+
+  MOZ_ASSERT(foundObjectStoreSpec);
+
+  // Update the name of the matched object store.
+  foundObjectStoreSpec->metadata().name() = nsString(aName);
+
+  return NS_OK;
+}
+
+nsresult
+IDBDatabase::RenameIndex(int64_t aObjectStoreId,
+                         int64_t aIndexId,
+                         const nsAString& aName)
+{
+  MOZ_ASSERT(mSpec);
+
+  nsTArray<ObjectStoreSpec>& objectStores = mSpec->objectStores();
+
+  ObjectStoreSpec* foundObjectStoreSpec = nullptr;
+  // Find the matched index metadata and check if 'aName' is already used by
+  // another index.
+  for (uint32_t objCount = objectStores.Length(), objIndex = 0;
+       objIndex < objCount;
+       objIndex++) {
+    const ObjectStoreSpec& objSpec = objectStores[objIndex];
+    if (objSpec.metadata().id() == aObjectStoreId) {
+      foundObjectStoreSpec = &objectStores[objIndex];
+      break;
+    }
+  }
+
+  MOZ_ASSERT(foundObjectStoreSpec);
+
+  nsTArray<IndexMetadata>& indexes = foundObjectStoreSpec->indexes();
+  IndexMetadata* foundIndexMetadata = nullptr;
+  for (uint32_t idxCount = indexes.Length(), idxIndex = 0;
+       idxIndex < idxCount;
+       idxIndex++) {
+    const IndexMetadata& metadata = indexes[idxIndex];
+    if (metadata.id() == aIndexId) {
+      MOZ_ASSERT(!foundIndexMetadata);
+      foundIndexMetadata = &indexes[idxIndex];
+      continue;
+    }
+    if (aName == metadata.name()) {
+      return NS_ERROR_DOM_INDEXEDDB_CONSTRAINT_ERR;
+    }
+  }
+
+  MOZ_ASSERT(foundIndexMetadata);
+
+  // Update the name of the matched object store.
+  foundIndexMetadata->name() = nsString(aName);
+
+  return NS_OK;
+}
+
 } // namespace dom
 } // namespace mozilla
--- a/dom/indexedDB/IDBDatabase.h
+++ b/dom/indexedDB/IDBDatabase.h
@@ -51,16 +51,19 @@ class IDBDatabase final
 {
   typedef mozilla::dom::indexedDB::DatabaseSpec DatabaseSpec;
   typedef mozilla::dom::StorageType StorageType;
   typedef mozilla::dom::quota::PersistenceType PersistenceType;
 
   class Observer;
   friend class Observer;
 
+  friend class IDBObjectStore;
+  friend class IDBIndex;
+
   // The factory must be kept alive when IndexedDB is used in multiple
   // processes. If it dies then the entire actor tree will be destroyed with it
   // and the world will explode.
   RefPtr<IDBFactory> mFactory;
 
   nsAutoPtr<DatabaseSpec> mSpec;
 
   // Normally null except during a versionchange transaction.
@@ -322,14 +325,22 @@ private:
   void
   InvalidateMutableFiles();
 
   void
   LogWarning(const char* aMessageName,
              const nsAString& aFilename,
              uint32_t aLineNumber,
              uint32_t aColumnNumber);
+
+  // Only accessed by IDBObjectStore.
+  nsresult
+  RenameObjectStore(int64_t aObjectStoreId, const nsAString& aName);
+
+  // Only accessed by IDBIndex.
+  nsresult
+  RenameIndex(int64_t aObjectStoreId, int64_t aIndexId, const nsAString& aName);
 };
 
 } // namespace dom
 } // namespace mozilla
 
 #endif // mozilla_dom_idbdatabase_h__
--- a/dom/indexedDB/IDBIndex.cpp
+++ b/dom/indexedDB/IDBIndex.cpp
@@ -144,16 +144,73 @@ const nsString&
 IDBIndex::Name() const
 {
   AssertIsOnOwningThread();
   MOZ_ASSERT(mMetadata);
 
   return mMetadata->name();
 }
 
+void
+IDBIndex::SetName(const nsAString& aName, ErrorResult& aRv)
+{
+  AssertIsOnOwningThread();
+
+  IDBTransaction* transaction = mObjectStore->Transaction();
+
+  if (transaction->GetMode() != IDBTransaction::VERSION_CHANGE ||
+      mDeletedMetadata) {
+    aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
+    return;
+  }
+
+  if (!transaction->IsOpen()) {
+    aRv.Throw(NS_ERROR_DOM_INDEXEDDB_TRANSACTION_INACTIVE_ERR);
+    return;
+  }
+
+  if (aName == mMetadata->name()) {
+    return;
+  }
+
+  // Cache logging string of this index before renaming.
+  const LoggingString loggingOldIndex(this);
+
+  const int64_t indexId = Id();
+
+  nsresult rv =
+    transaction->Database()->RenameIndex(mObjectStore->Id(),
+                                         indexId,
+                                         aName);
+
+  if (NS_FAILED(rv)) {
+    aRv.Throw(rv);
+    return;
+  }
+
+  // Don't do this in the macro because we always need to increment the serial
+  // number to keep in sync with the parent.
+  const uint64_t requestSerialNumber = IDBRequest::NextSerialNumber();
+
+  IDB_LOG_MARK("IndexedDB %s: Child  Transaction[%lld] Request[%llu]: "
+                 "database(%s).transaction(%s).objectStore(%s).index(%s)."
+                 "rename(%s)",
+               "IndexedDB %s: C T[%lld] R[%llu]: IDBIndex.rename()",
+               IDB_LOG_ID_STRING(),
+               transaction->LoggingSerialNumber(),
+               requestSerialNumber,
+               IDB_LOG_STRINGIFY(transaction->Database()),
+               IDB_LOG_STRINGIFY(transaction),
+               IDB_LOG_STRINGIFY(mObjectStore),
+               loggingOldIndex.get(),
+               IDB_LOG_STRINGIFY(this));
+
+  transaction->RenameIndex(mObjectStore, indexId, aName);
+}
+
 bool
 IDBIndex::Unique() const
 {
   AssertIsOnOwningThread();
   MOZ_ASSERT(mMetadata);
 
   return mMetadata->unique();
 }
--- a/dom/indexedDB/IDBIndex.h
+++ b/dom/indexedDB/IDBIndex.h
@@ -102,16 +102,19 @@ public:
 
   void
   GetName(nsString& aName) const
   {
     aName = Name();
   }
 
   void
+  SetName(const nsAString& aName, ErrorResult& aRv);
+
+  void
   GetKeyPath(JSContext* aCx,
              JS::MutableHandle<JS::Value> aResult,
              ErrorResult& aRv);
 
   already_AddRefed<IDBRequest>
   OpenCursor(JSContext* aCx,
              JS::Handle<JS::Value> aRange,
              IDBCursorDirection aDirection,
--- a/dom/indexedDB/IDBObjectStore.cpp
+++ b/dom/indexedDB/IDBObjectStore.cpp
@@ -2260,16 +2260,69 @@ const nsString&
 IDBObjectStore::Name() const
 {
   AssertIsOnOwningThread();
   MOZ_ASSERT(mSpec);
 
   return mSpec->metadata().name();
 }
 
+void
+IDBObjectStore::SetName(const nsAString& aName, ErrorResult& aRv)
+{
+  AssertIsOnOwningThread();
+
+  if (mTransaction->GetMode() != IDBTransaction::VERSION_CHANGE ||
+      mDeletedSpec) {
+    aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
+    return;
+  }
+
+  IDBTransaction* transaction = IDBTransaction::GetCurrent();
+  if (!transaction || transaction != mTransaction) {
+    aRv.Throw(NS_ERROR_DOM_INDEXEDDB_TRANSACTION_INACTIVE_ERR);
+    return;
+  }
+
+  MOZ_ASSERT(transaction->IsOpen());
+
+  if (aName == mSpec->metadata().name()) {
+    return;
+  }
+
+  // Cache logging string of this object store before renaming.
+  const LoggingString loggingOldObjectStore(this);
+
+  nsresult rv =
+    transaction->Database()->RenameObjectStore(mSpec->metadata().id(),
+                                               aName);
+
+  if (NS_FAILED(rv)) {
+    aRv.Throw(rv);
+    return;
+  }
+
+  // Don't do this in the macro because we always need to increment the serial
+  // number to keep in sync with the parent.
+  const uint64_t requestSerialNumber = IDBRequest::NextSerialNumber();
+
+  IDB_LOG_MARK("IndexedDB %s: Child  Transaction[%lld] Request[%llu]: "
+                 "database(%s).transaction(%s).objectStore(%s).rename(%s)",
+               "IndexedDB %s: C T[%lld] R[%llu]: IDBObjectStore.rename()",
+               IDB_LOG_ID_STRING(),
+               mTransaction->LoggingSerialNumber(),
+               requestSerialNumber,
+               IDB_LOG_STRINGIFY(mTransaction->Database()),
+               IDB_LOG_STRINGIFY(mTransaction),
+               loggingOldObjectStore.get(),
+               IDB_LOG_STRINGIFY(this));
+
+  transaction->RenameObjectStore(mSpec->metadata().id(), aName);
+}
+
 bool
 IDBObjectStore::AutoIncrement() const
 {
   AssertIsOnOwningThread();
   MOZ_ASSERT(mSpec);
 
   return mSpec->metadata().autoIncrement();
 }
--- a/dom/indexedDB/IDBObjectStore.h
+++ b/dom/indexedDB/IDBObjectStore.h
@@ -147,16 +147,19 @@ public:
   GetName(nsString& aName) const
   {
     AssertIsOnOwningThread();
 
     aName = Name();
   }
 
   void
+  SetName(const nsAString& aName, ErrorResult& aRv);
+
+  void
   GetKeyPath(JSContext* aCx, JS::MutableHandle<JS::Value> aResult,
              ErrorResult& aRv);
 
   already_AddRefed<DOMStringList>
   IndexNames();
 
   IDBTransaction*
   Transaction() const
--- a/dom/indexedDB/IDBTransaction.cpp
+++ b/dom/indexedDB/IDBTransaction.cpp
@@ -562,16 +562,30 @@ IDBTransaction::DeleteObjectStore(int64_
 
       mObjectStores.RemoveElementAt(index);
       break;
     }
   }
 }
 
 void
+IDBTransaction::RenameObjectStore(int64_t aObjectStoreId,
+                                  const nsAString& aName)
+{
+  AssertIsOnOwningThread();
+  MOZ_ASSERT(aObjectStoreId);
+  MOZ_ASSERT(VERSION_CHANGE == mMode);
+  MOZ_ASSERT(mBackgroundActor.mVersionChangeBackgroundActor);
+  MOZ_ASSERT(IsOpen());
+
+  MOZ_ALWAYS_TRUE(mBackgroundActor.mVersionChangeBackgroundActor->
+                    SendRenameObjectStore(aObjectStoreId, nsString(aName)));
+}
+
+void
 IDBTransaction::CreateIndex(IDBObjectStore* aObjectStore,
                             const indexedDB::IndexMetadata& aMetadata)
 {
   AssertIsOnOwningThread();
   MOZ_ASSERT(aObjectStore);
   MOZ_ASSERT(aMetadata.id());
   MOZ_ASSERT(VERSION_CHANGE == mMode);
   MOZ_ASSERT(mBackgroundActor.mVersionChangeBackgroundActor);
@@ -592,16 +606,34 @@ IDBTransaction::DeleteIndex(IDBObjectSto
   MOZ_ASSERT(mBackgroundActor.mVersionChangeBackgroundActor);
   MOZ_ASSERT(IsOpen());
 
   MOZ_ALWAYS_TRUE(mBackgroundActor.mVersionChangeBackgroundActor->
                     SendDeleteIndex(aObjectStore->Id(), aIndexId));
 }
 
 void
+IDBTransaction::RenameIndex(IDBObjectStore* aObjectStore,
+                            int64_t aIndexId,
+                            const nsAString& aName)
+{
+  AssertIsOnOwningThread();
+  MOZ_ASSERT(aObjectStore);
+  MOZ_ASSERT(aIndexId);
+  MOZ_ASSERT(VERSION_CHANGE == mMode);
+  MOZ_ASSERT(mBackgroundActor.mVersionChangeBackgroundActor);
+  MOZ_ASSERT(IsOpen());
+
+  MOZ_ALWAYS_TRUE(mBackgroundActor.mVersionChangeBackgroundActor->
+                    SendRenameIndex(aObjectStore->Id(),
+                                    aIndexId,
+                                    nsString(aName)));
+}
+
+void
 IDBTransaction::AbortInternal(nsresult aAbortCode,
                               already_AddRefed<DOMError> aError)
 {
   AssertIsOnOwningThread();
   MOZ_ASSERT(NS_FAILED(aAbortCode));
   MOZ_ASSERT(!IsCommittingOrDone());
 
   RefPtr<DOMError> error = aError;
--- a/dom/indexedDB/IDBTransaction.h
+++ b/dom/indexedDB/IDBTransaction.h
@@ -241,22 +241,28 @@ public:
 
   already_AddRefed<IDBObjectStore>
   CreateObjectStore(const indexedDB::ObjectStoreSpec& aSpec);
 
   void
   DeleteObjectStore(int64_t aObjectStoreId);
 
   void
+  RenameObjectStore(int64_t aObjectStoreId, const nsAString& aName);
+
+  void
   CreateIndex(IDBObjectStore* aObjectStore, const indexedDB::IndexMetadata& aMetadata);
 
   void
   DeleteIndex(IDBObjectStore* aObjectStore, int64_t aIndexId);
 
   void
+  RenameIndex(IDBObjectStore* aObjectStore, int64_t aIndexId, const nsAString& aName);
+
+  void
   Abort(IDBRequest* aRequest);
 
   void
   Abort(nsresult aAbortCode);
 
   int64_t
   LoggingSerialNumber() const
   {
--- a/dom/indexedDB/PBackgroundIDBVersionChangeTransaction.ipdl
+++ b/dom/indexedDB/PBackgroundIDBVersionChangeTransaction.ipdl
@@ -25,21 +25,26 @@ protocol PBackgroundIDBVersionChangeTran
 parent:
   async DeleteMe();
 
   async Commit();
   async Abort(nsresult resultCode);
 
   async CreateObjectStore(ObjectStoreMetadata metadata);
   async DeleteObjectStore(int64_t objectStoreId);
+  async RenameObjectStore(int64_t objectStoreId,
+                          nsString name);
 
   async CreateIndex(int64_t objectStoreId,
                     IndexMetadata metadata);
   async DeleteIndex(int64_t objectStoreId,
                     int64_t indexId);
+  async RenameIndex(int64_t objectStoreId,
+                    int64_t indexId,
+                    nsString name);
 
   async PBackgroundIDBCursor(OpenCursorParams params);
 
   async PBackgroundIDBRequest(RequestParams params);
 
 child:
   async __delete__();
 
--- a/dom/indexedDB/test/mochitest.ini
+++ b/dom/indexedDB/test/mochitest.ini
@@ -77,17 +77,21 @@ support-files =
   unit/test_optionalArguments.js
   unit/test_overlapping_transactions.js
   unit/test_persistenceType.js
   unit/test_put_get_values.js
   unit/test_put_get_values_autoIncrement.js
   unit/test_readonly_transactions.js
   unit/test_readwriteflush_disabled.js
   unit/test_remove_index.js
+  unit/test_rename_index.js
+  unit/test_rename_index_errors.js
   unit/test_remove_objectStore.js
+  unit/test_rename_objectStore.js
+  unit/test_rename_objectStore_errors.js
   unit/test_request_readyState.js
   unit/test_setVersion.js
   unit/test_setVersion_abort.js
   unit/test_setVersion_events.js
   unit/test_setVersion_exclusion.js
   unit/test_success_events_after_abort.js
   unit/test_table_locks.js
   unit/test_table_rollback.js
@@ -312,18 +316,26 @@ skip-if = (buildapp == 'b2g' && toolkit 
 [test_put_get_values_autoIncrement.html]
 skip-if = (buildapp == 'b2g' && toolkit != 'gonk') # Bug 931116
 [test_readonly_transactions.html]
 skip-if = (buildapp == 'b2g' && toolkit != 'gonk') # Bug 931116
 [test_readwriteflush_disabled.html]
 skip-if = (buildapp == 'b2g' && toolkit != 'gonk') # Bug 931116
 [test_remove_index.html]
 skip-if = (buildapp == 'b2g' && toolkit != 'gonk') # Bug 931116
+[test_rename_index.html]
+skip-if = (buildapp == 'b2g' && toolkit != 'gonk') # Bug 931116
+[test_rename_index_errors.html]
+skip-if = (buildapp == 'b2g' && toolkit != 'gonk') # Bug 931116
 [test_remove_objectStore.html]
 skip-if = (buildapp == 'b2g' && toolkit != 'gonk') || (buildapp == 'mulet') # Bug 931116 # TC: Bug 1144079 - Re-enable Mulet mochitests and reftests taskcluster-specific disables.
+[test_rename_objectStore.html]
+skip-if = (buildapp == 'b2g' && toolkit != 'gonk') # Bug 931116
+[test_rename_objectStore_errors.html]
+skip-if = (buildapp == 'b2g' && toolkit != 'gonk') # Bug 931116
 [test_request_readyState.html]
 skip-if = (buildapp == 'b2g' && toolkit != 'gonk') # Bug 931116
 [test_sandbox.html]
 skip-if = (buildapp == 'b2g' && toolkit != 'gonk') # Bug 931116
 [test_setVersion.html]
 skip-if = (buildapp == 'b2g' && toolkit != 'gonk') # Bug 931116
 [test_setVersion_abort.html]
 skip-if = (buildapp == 'b2g' && toolkit != 'gonk') # Bug 931116
new file mode 100644
--- /dev/null
+++ b/dom/indexedDB/test/test_rename_index.html
@@ -0,0 +1,19 @@
+<!--
+  Any copyright is dedicated to the Public Domain.
+  http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+  <title>Indexed Database Property Test</title>
+
+  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+
+  <script type="text/javascript;version=1.7" src="unit/test_rename_index.js"></script>
+  <script type="text/javascript;version=1.7" src="helpers.js"></script>
+
+</head>
+
+<body onload="runTest();"></body>
+
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/indexedDB/test/test_rename_index_errors.html
@@ -0,0 +1,19 @@
+<!--
+  Any copyright is dedicated to the Public Domain.
+  http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+  <title>Indexed Database Property Test</title>
+
+  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+
+  <script type="text/javascript;version=1.7" src="unit/test_rename_index_errors.js"></script>
+  <script type="text/javascript;version=1.7" src="helpers.js"></script>
+
+</head>
+
+<body onload="runTest();"></body>
+
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/indexedDB/test/test_rename_objectStore.html
@@ -0,0 +1,19 @@
+<!--
+  Any copyright is dedicated to the Public Domain.
+  http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+  <title>Indexed Database Property Test</title>
+
+  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+
+  <script type="text/javascript;version=1.7" src="unit/test_rename_objectStore.js"></script>
+  <script type="text/javascript;version=1.7" src="helpers.js"></script>
+
+</head>
+
+<body onload="runTest();"></body>
+
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/indexedDB/test/test_rename_objectStore_errors.html
@@ -0,0 +1,19 @@
+<!--
+  Any copyright is dedicated to the Public Domain.
+  http://creativecommons.org/publicdomain/zero/1.0/
+-->
+<html>
+<head>
+  <title>Indexed Database Property Test</title>
+
+  <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+
+  <script type="text/javascript;version=1.7" src="unit/test_rename_objectStore_errors.js"></script>
+  <script type="text/javascript;version=1.7" src="helpers.js"></script>
+
+</head>
+
+<body onload="runTest();"></body>
+
+</html>
new file mode 100644
--- /dev/null
+++ b/dom/indexedDB/test/unit/test_rename_index.js
@@ -0,0 +1,193 @@
+/**
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var testGenerator = testSteps();
+
+function testSteps()
+{
+  const name = this.window ? window.location.pathname : "Splendid Test";
+  const storeName = "test store";
+  const indexName_ToBeDeleted = "test index to be deleted";
+  const indexName_v0 = "test index v0";
+  const indexName_v1 = "test index v1";
+  const indexName_v2 = "test index v2";
+  const indexName_v3 = indexName_ToBeDeleted;
+  const indexName_v4 = "test index v4";
+
+  info("Rename in v1.");
+  let request = indexedDB.open(name, 1);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = grabEventAndContinueHandler;
+  request.onsuccess = unexpectedSuccessHandler;
+  let event = yield undefined;
+
+  let db = event.target.result;
+  let txn = event.target.transaction;
+
+  is(db.objectStoreNames.length, 0, "Correct objectStoreNames list");
+
+  let objectStore = db.createObjectStore(storeName, { keyPath: "foo" });
+  is(db.objectStoreNames.length, 1, "Correct objectStoreNames list");
+  is(db.objectStoreNames.item(0), objectStore.name, "Correct object store name");
+
+  // create index to be deleted later in v3.
+  objectStore.createIndex(indexName_ToBeDeleted, "foo");
+  ok(objectStore.index(indexName_ToBeDeleted), "Index created.");
+
+  // create target index to be renamed.
+  let index = objectStore.createIndex(indexName_v0, "bar");
+  ok(objectStore.index(indexName_v0), "Index created.");
+  is(index.name, indexName_v0, "Correct index name");
+  index.name = indexName_v1;
+  is(index.name, indexName_v1, "Renamed index successfully");
+
+  txn.oncomplete = continueToNextStepSync;
+  yield undefined;
+  request.onsuccess = continueToNextStep;
+  yield undefined;
+  db.close();
+
+  info("Verify renaming done in v1 and run renaming in v2.");
+  request = indexedDB.open(name, 2);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = grabEventAndContinueHandler;
+  request.onsuccess = unexpectedSuccessHandler;
+  event = yield undefined;
+
+  db = event.target.result;
+  txn = event.target.transaction;
+
+  objectStore = txn.objectStore(storeName);
+
+  // indexName_v0 created in v1 shall not be available.
+  try {
+    index = objectStore.index(indexName_v0);
+    ok(false, "NotFoundError shall be thrown.");
+  } catch (e) {
+    ok(e instanceof DOMException, "got a database exception");
+    is(e.name, "NotFoundError", "correct error");
+  }
+
+  // rename to "v2".
+  index = objectStore.index(indexName_v1);
+  is(index.name, indexName_v1, "Correct index name")
+  index.name = indexName_v2;
+  is(index.name, indexName_v2, "Renamed index successfully");
+
+  txn.oncomplete = continueToNextStepSync;
+  yield undefined;
+  request.onsuccess = continueToNextStep;
+  yield undefined;
+  db.close();
+
+  info("Verify renaming done in v2.");
+  request = indexedDB.open(name, 2);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = errorHandler;
+  request.onsuccess = grabEventAndContinueHandler;
+  event = yield undefined;
+
+  db = event.target.result;
+  txn = db.transaction(storeName);
+
+  objectStore = txn.objectStore(storeName);
+  index = objectStore.index(indexName_v2);
+  is(index.name, indexName_v2, "Correct index name");
+
+  db.close();
+
+  info("Rename in v3.");
+  request = indexedDB.open(name, 3);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = grabEventAndContinueHandler;
+  request.onsuccess = unexpectedSuccessHandler;
+  event = yield undefined;
+
+  db = event.target.result;
+  txn = event.target.transaction;
+
+  objectStore = txn.objectStore(storeName);
+  ok(objectStore.index(indexName_ToBeDeleted), "index is valid.");
+  objectStore.deleteIndex(indexName_ToBeDeleted);
+  try {
+    objectStore.index(indexName_ToBeDeleted);
+    ok(false, "NotFoundError shall be thrown if the index name is deleted.");
+  } catch (e) {
+    ok(e instanceof DOMException, "got a database exception");
+    is(e.name, "NotFoundError", "correct error");
+  }
+
+  info("Rename with the name of the deleted index.");
+  index = objectStore.index(indexName_v2);
+  index.name = indexName_v3;
+  is(index.name, indexName_v3, "Renamed index successfully");
+
+  txn.oncomplete = continueToNextStepSync;
+  yield undefined;
+  request.onsuccess = continueToNextStep;
+  yield undefined;
+  db.close();
+
+  info("Verify renaming done in v3.");
+  request = indexedDB.open(name, 3);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = errorHandler;
+  request.onsuccess = grabEventAndContinueHandler;
+  event = yield undefined;
+
+  db = event.target.result;
+  txn = db.transaction(storeName);
+
+  objectStore = txn.objectStore(storeName);
+  index = objectStore.index(indexName_v3);
+  is(index.name, indexName_v3, "Correct index name");
+
+  db.close();
+
+  info("Abort the version change transaction while renaming index.");
+  request = indexedDB.open(name, 4);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = grabEventAndContinueHandler;
+  request.onsuccess = unexpectedSuccessHandler;
+  event = yield undefined;
+
+  db = event.target.result;
+  txn = event.target.transaction;
+
+  objectStore = txn.objectStore(storeName);
+  index = objectStore.index(indexName_v3);
+  index.name = indexName_v4;
+  is(index.name, indexName_v4, "Renamed successfully");
+  let putRequest = objectStore.put({ foo: "fooValue", bar: "barValue" });
+  putRequest.onsuccess = continueToNextStepSync;
+  yield undefined;
+
+  // Aborting the transaction.
+  request.onerror = expectedErrorHandler("AbortError");
+  txn.abort();
+  yield undefined;
+
+  // Verify if the name of the index handle is reverted.
+  is(index.name, indexName_v3, "The name is reverted after aborted.");
+
+  info("Verify if the objectstore name is unchanged.");
+  request = indexedDB.open(name, 3);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = errorHandler;
+  request.onsuccess = grabEventAndContinueHandler;
+  event = yield undefined;
+
+  db = event.target.result;
+  txn = db.transaction(storeName);
+
+  objectStore = txn.objectStore(storeName);
+  index = objectStore.index(indexName_v3);
+  is(index.name, indexName_v3, "Correct index name");
+
+  db.close();
+
+  finishTest();
+  yield undefined;
+}
new file mode 100644
--- /dev/null
+++ b/dom/indexedDB/test/unit/test_rename_index_errors.js
@@ -0,0 +1,129 @@
+/**
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var testGenerator = testSteps();
+
+function testSteps()
+{
+  const name = this.window ? window.location.pathname : "Splendid Test";
+  const storeName = "test store";
+  const indexName1 = "test index 1";
+  const indexName2 = "test index 2";
+
+  info("Setup test indexes.");
+  let request = indexedDB.open(name, 1);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = grabEventAndContinueHandler;
+  request.onsuccess = unexpectedSuccessHandler;
+  let event = yield undefined;
+
+  let db = event.target.result;
+  let txn = event.target.transaction;
+
+  is(db.objectStoreNames.length, 0, "Correct objectStoreNames list");
+
+  let objectStore = db.createObjectStore(storeName, { keyPath: "foo" });
+  is(db.objectStoreNames.length, 1, "Correct objectStoreNames list");
+  is(db.objectStoreNames.item(0), objectStore.name, "Correct name");
+
+  let index1 = objectStore.createIndex(indexName1, "bar");
+  is(objectStore.index(indexName1).name, index1.name, "Correct index name");
+  is(index1.name, indexName1, "Correct index name");
+  let index2 = objectStore.createIndex(indexName2, "baz");
+  is(objectStore.index(indexName2).name, index2.name, "Correct index name");
+  is(index2.name, indexName2, "Correct index name");
+
+  txn.oncomplete = continueToNextStepSync;
+  yield undefined;
+  request.onsuccess = continueToNextStep;
+  yield undefined;
+  db.close();
+
+  info("Verify IDB Errors in version 2.");
+  request = indexedDB.open(name, 2);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = grabEventAndContinueHandler;
+  request.onsuccess = unexpectedSuccessHandler;
+  event = yield undefined;
+
+  db = event.target.result;
+  txn = event.target.transaction;
+
+  objectStore = txn.objectStore(storeName);
+  index1 = objectStore.index(indexName1);
+  index2 = objectStore.index(indexName2);
+  is(index1.name, indexName1, "Correct index name");
+  is(index2.name, indexName2, "Correct index name");
+
+  // Rename with the name already adopted by the other index.
+  try {
+    index1.name = indexName2;
+    ok(false, "ConstraintError shall be thrown if the index name already exists.");
+  } catch (e) {
+    ok(e instanceof DOMException, "got a database exception");
+    is(e.name, "ConstraintError", "correct error");
+  }
+
+  // Rename with identical name.
+  try {
+    index1.name = indexName1;
+    ok(true, "It shall be fine to set the same name.");
+  } catch (e) {
+    ok(false, "Got a database exception: " + e.name);
+  }
+
+  objectStore.deleteIndex(indexName2);
+
+  // Rename after deleted.
+  try {
+    index2.name = indexName2;
+    ok(false, "InvalidStateError shall be thrown if deleted.");
+  } catch (e) {
+    ok(e instanceof DOMException, "got a database exception");
+    is(e.name, "InvalidStateError", "correct error");
+  }
+
+  txn.oncomplete = continueToNextStepSync;
+  yield undefined;
+  request.onsuccess = continueToNextStep;
+  yield undefined;
+  db.close();
+
+  // Rename when the transaction is inactive.
+  try {
+    index1.name = indexName1;
+    ok(false, "TransactionInactiveError shall be thrown if the transaction is inactive.");
+  } catch (e) {
+    ok(e instanceof DOMException, "got a database exception");
+    is(e.name, "TransactionInactiveError", "correct error");
+  }
+
+  info("Rename when the transaction is not an upgrade one.");
+  request = indexedDB.open(name, 2);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = errorHandler;
+  request.onsuccess = grabEventAndContinueHandler;
+  event = yield undefined;
+
+  db = event.target.result;
+  txn = db.transaction(storeName);
+  objectStore = txn.objectStore(storeName);
+  index1 = objectStore.index(indexName1);
+
+  try {
+    index1.name = indexName1;
+    ok(false, "InvalidStateError shall be thrown if it's not an upgrade transaction.");
+  } catch (e) {
+    ok(e instanceof DOMException, "got a database exception");
+    is(e.name, "InvalidStateError", "correct error");
+  }
+
+  txn.oncomplete = continueToNextStepSync;
+  yield undefined;
+  db.close();
+
+  finishTest();
+  yield undefined;
+}
new file mode 100644
--- /dev/null
+++ b/dom/indexedDB/test/unit/test_rename_objectStore.js
@@ -0,0 +1,171 @@
+/**
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var testGenerator = testSteps();
+
+function testSteps()
+{
+  const name = this.window ? window.location.pathname : "Splendid Test";
+  const storeName_ToBeDeleted = "test store to be deleted";
+  const storeName_v0 = "test store v0";
+  const storeName_v1 = "test store v1";
+  const storeName_v2 = "test store v2";
+  const storeName_v3 = storeName_ToBeDeleted;
+  const storeName_v4 = "test store v4";
+
+  info("Rename in v1.");
+  let request = indexedDB.open(name, 1);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = grabEventAndContinueHandler;
+  request.onsuccess = unexpectedSuccessHandler;
+  let event = yield undefined;
+
+  let db = event.target.result;
+  let txn = event.target.transaction;
+
+  is(db.objectStoreNames.length, 0, "Correct objectStoreNames list");
+
+  // create objectstore to be deleted later in v3.
+  db.createObjectStore(storeName_ToBeDeleted, { keyPath: "foo" });
+  is(db.objectStoreNames.length, 1, "Correct objectStoreNames list");
+  ok(db.objectStoreNames.contains(storeName_ToBeDeleted), "Correct name");
+
+  // create target objectstore to be renamed.
+  let objectStore = db.createObjectStore(storeName_v0, { keyPath: "bar" });
+  is(db.objectStoreNames.length, 2, "Correct objectStoreNames list");
+  ok(db.objectStoreNames.contains(objectStore.name), "Correct name");
+
+  objectStore.name = storeName_v1;
+  is(objectStore.name, storeName_v1, "Renamed successfully");
+
+  txn.oncomplete = continueToNextStepSync;
+  yield undefined;
+  request.onsuccess = continueToNextStep;
+  yield undefined;
+  db.close();
+
+  info("Verify renaming done in v1 and run renaming in v2.");
+  request = indexedDB.open(name, 2);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = grabEventAndContinueHandler;
+  request.onsuccess = unexpectedSuccessHandler;
+  event = yield undefined;
+
+  db = event.target.result;
+  txn = event.target.transaction;
+
+  is(db.objectStoreNames.length, 2, "Correct objectStoreNames list");
+  ok(db.objectStoreNames.contains(storeName_v1), "Correct name");
+  ok(db.objectStoreNames.contains(storeName_ToBeDeleted), "Correct name");
+
+  objectStore = txn.objectStore(storeName_v1);
+  objectStore.name = storeName_v2;
+  is(objectStore.name, storeName_v2, "Renamed successfully");
+
+  txn.oncomplete = continueToNextStepSync;
+  yield undefined;
+  request.onsuccess = continueToNextStep;
+  yield undefined;
+  db.close();
+
+  info("Verify renaming done in v2.");
+  request = indexedDB.open(name, 2);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = errorHandler;
+  request.onsuccess = grabEventAndContinueHandler;
+  event = yield undefined;
+
+  db = event.target.result;
+
+  is(db.objectStoreNames.length, 2, "Correct objectStoreNames list");
+  ok(db.objectStoreNames.contains(storeName_v2), "Correct name");
+  ok(db.objectStoreNames.contains(storeName_ToBeDeleted), "Correct name");
+
+  db.close();
+
+  info("Rename in v3.");
+  request = indexedDB.open(name, 3);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = grabEventAndContinueHandler;
+  request.onsuccess = unexpectedSuccessHandler;
+  event = yield undefined;
+
+  db = event.target.result;
+  txn = event.target.transaction;
+
+  is(db.objectStoreNames.length, 2, "Correct objectStoreNames list");
+  ok(db.objectStoreNames.contains(storeName_v2), "Correct name");
+  ok(db.objectStoreNames.contains(storeName_ToBeDeleted), "Correct name");
+  db.deleteObjectStore(storeName_ToBeDeleted);
+  is(db.objectStoreNames.length, 1, "Correct objectStoreNames list");
+  ok(db.objectStoreNames.contains(storeName_v2) &&
+     !db.objectStoreNames.contains(storeName_ToBeDeleted), "Deleted correctly");
+
+  objectStore = txn.objectStore(storeName_v2);
+  objectStore.name = storeName_v3;
+  is(objectStore.name, storeName_v3, "Renamed successfully");
+
+  txn.oncomplete = continueToNextStepSync;
+  yield undefined;
+  request.onsuccess = continueToNextStep;
+  yield undefined;
+  db.close();
+
+  info("Verify renaming done in v3.");
+  request = indexedDB.open(name, 3);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = errorHandler;
+  request.onsuccess = grabEventAndContinueHandler;
+  event = yield undefined;
+
+  db = event.target.result;
+
+  is(db.objectStoreNames.length, 1, "Correct objectStoreNames list");
+  ok(db.objectStoreNames.contains(storeName_v3), "Correct name");
+
+  db.close();
+
+  info("Abort the version change transaction while renaming objectstore.");
+  request = indexedDB.open(name, 4);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = grabEventAndContinueHandler;
+  request.onsuccess = unexpectedSuccessHandler;
+  event = yield undefined;
+
+  db = event.target.result;
+  txn = event.target.transaction;
+
+  objectStore = txn.objectStore(storeName_v3);
+  objectStore.name = storeName_v4;
+  is(objectStore.name, storeName_v4, "Renamed successfully");
+  let putRequest = objectStore.put({ bar: "barValue" });
+  putRequest.onsuccess = continueToNextStepSync;
+  yield undefined;
+
+  // Aborting the transaction.
+  request.onerror = expectedErrorHandler("AbortError");
+  txn.abort();
+  yield undefined;
+
+  // Verify if the name of the objectStore handle is reverted.
+  is(objectStore.name, storeName_v3, "The name is reverted after aborted.");
+
+  info("Verify if the objectstore name is unchanged.");
+  request = indexedDB.open(name, 3);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = errorHandler;
+  request.onsuccess = grabEventAndContinueHandler;
+  event = yield undefined;
+
+  db = event.target.result;
+
+  is(db.objectStoreNames.length, 1, "Correct objectStoreNames list");
+  ok(db.objectStoreNames.contains(storeName_v3), "Correct name");
+
+  db.close();
+
+  finishTest();
+  yield undefined;
+}
new file mode 100644
--- /dev/null
+++ b/dom/indexedDB/test/unit/test_rename_objectStore_errors.js
@@ -0,0 +1,127 @@
+/**
+ * Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
+var testGenerator = testSteps();
+
+function testSteps()
+{
+  const name = this.window ? window.location.pathname : "Splendid Test";
+  const storeName1 = "test store 1";
+  const storeName2 = "test store 2";
+
+  info("Setup test object stores.");
+  let request = indexedDB.open(name, 1);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = grabEventAndContinueHandler;
+  request.onsuccess = unexpectedSuccessHandler;
+  let event = yield undefined;
+
+  let db = event.target.result;
+  let txn = event.target.transaction;
+
+  is(db.objectStoreNames.length, 0, "Correct objectStoreNames list");
+
+  let objectStore1 = db.createObjectStore(storeName1, { keyPath: "foo" });
+  is(db.objectStoreNames.length, 1, "Correct objectStoreNames list");
+  is(db.objectStoreNames.item(0), objectStore1.name, "Correct name");
+  is(objectStore1.name, storeName1, "Correct name");
+
+  let objectStore2 = db.createObjectStore(storeName2, { keyPath: "bar" });
+  is(db.objectStoreNames.length, 2, "Correct objectStoreNames list");
+  is(db.objectStoreNames.item(1), objectStore2.name, "Correct name");
+  is(objectStore2.name, storeName2, "Correct name");
+
+  txn.oncomplete = continueToNextStepSync;
+  yield undefined;
+  request.onsuccess = continueToNextStep;
+  yield undefined;
+  db.close();
+
+  info("Verify IDB Errors in version 2.");
+  request = indexedDB.open(name, 2);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = grabEventAndContinueHandler;
+  request.onsuccess = continueToNextStep;
+  event = yield undefined;
+
+  db = event.target.result;
+  txn = event.target.transaction;
+
+  is(db.objectStoreNames.length, 2, "Correct objectStoreNames list");
+
+  objectStore1 = txn.objectStore(storeName1);
+  objectStore2 = txn.objectStore(storeName2);
+  is(objectStore1.name, storeName1, "Correct name");
+  is(objectStore2.name, storeName2, "Correct name");
+
+  // Rename with the name already adopted by the other object store.
+  try {
+    objectStore1.name = storeName2;
+    ok(false, "ConstraintError shall be thrown if the store name already exists.");
+  } catch (e) {
+    ok(e instanceof DOMException, "got a database exception");
+    is(e.name, "ConstraintError", "correct error");
+  }
+
+  // Rename with the identical name.
+  try {
+    objectStore1.name = storeName1;
+    ok(true, "It shall be fine to set the same name.");
+  } catch (e) {
+    ok(false, "Got a database exception: " + e.name);
+  }
+
+  db.deleteObjectStore(storeName2);
+
+  // Rename after deleted.
+  try {
+    objectStore2.name = storeName2;
+    ok(false, "InvalidStateError shall be thrown if deleted.");
+  } catch (e) {
+    ok(e instanceof DOMException, "got a database exception");
+    is(e.name, "InvalidStateError", "correct error");
+  }
+
+  txn.oncomplete = continueToNextStepSync;
+  yield undefined;
+  request.onsuccess = continueToNextStep;
+  yield undefined;
+  db.close();
+
+  info("Rename when the transaction is inactive.");
+  try {
+    objectStore1.name = storeName1;
+    ok(false, "TransactionInactiveError shall be thrown if the transaction is inactive.");
+  } catch (e) {
+    ok(e instanceof DOMException, "got a database exception");
+    is(e.name, "TransactionInactiveError", "correct error");
+  }
+
+  info("Rename when the transaction is not an upgrade one.");
+  request = indexedDB.open(name, 2);
+  request.onerror = errorHandler;
+  request.onupgradeneeded = errorHandler;
+  request.onsuccess = grabEventAndContinueHandler;
+  event = yield undefined;
+
+  db = event.target.result;
+  txn = db.transaction(storeName1);
+  objectStore1 = txn.objectStore(storeName1);
+
+  try {
+    objectStore1.name = storeName1;
+    ok(false, "InvalidStateError shall be thrown if it's not an upgrade transaction.");
+  } catch (e) {
+    ok(e instanceof DOMException, "got a database exception");
+    is(e.name, "InvalidStateError", "correct error");
+  }
+
+  txn.oncomplete = continueToNextStepSync;
+  yield undefined;
+  db.close();
+
+  finishTest();
+  yield undefined;
+}
--- a/dom/indexedDB/test/unit/xpcshell-shared.ini
+++ b/dom/indexedDB/test/unit/xpcshell-shared.ini
@@ -60,17 +60,21 @@ skip-if = toolkit == 'android' # bug 864
 [test_open_objectStore.js]
 [test_optionalArguments.js]
 [test_overlapping_transactions.js]
 [test_persistenceType.js]
 [test_put_get_values.js]
 [test_put_get_values_autoIncrement.js]
 [test_readonly_transactions.js]
 [test_remove_index.js]
+[test_rename_index.js]
+[test_rename_index_errors.js]
 [test_remove_objectStore.js]
+[test_rename_objectStore.js]
+[test_rename_objectStore_errors.js]
 [test_request_readyState.js]
 [test_sandbox.js]
 [test_setVersion.js]
 [test_setVersion_abort.js]
 [test_setVersion_events.js]
 [test_setVersion_exclusion.js]
 [test_success_events_after_abort.js]
 [test_table_locks.js]
--- a/dom/media/AudioChannelFormat.h
+++ b/dom/media/AudioChannelFormat.h
@@ -60,17 +60,17 @@ GetAudioChannelsSuperset(uint32_t aChann
 
 /**
  * DownMixMatrix represents a conversion matrix efficiently by exploiting the
  * fact that each input channel contributes to at most one output channel,
  * except possibly for the C input channel in layouts that have one. Also,
  * every input channel is multiplied by the same coefficient for every output
  * channel it contributes to.
  */
-const float SQRT_ONE_HALF = sqrt(0.5);
+const float SQRT_ONE_HALF = 0.7071067811865476f;
 
 struct DownMixMatrix {
   // Every input channel c is copied to output channel mInputDestination[c]
   // after multiplying by mInputCoefficient[c].
   uint8_t mInputDestination[CUSTOM_CHANNEL_LAYOUTS];
   // If not IGNORE, then the C channel is copied to this output channel after
   // multiplying by its coefficient.
   uint8_t mCExtraDestination;
--- a/dom/media/MediaDecoder.cpp
+++ b/dom/media/MediaDecoder.cpp
@@ -1896,17 +1896,17 @@ MediaDecoder::DumpDebugInfo()
     GetStateMachine()->DumpDebugInfo();
   }
 }
 
 void
 MediaDecoder::NotifyAudibleStateChanged()
 {
   MOZ_ASSERT(!mShuttingDown);
-  mOwner->NotifyAudibleStateChanged(mIsAudioDataAudible);
+  mOwner->SetAudibleState(mIsAudioDataAudible);
 }
 
 MediaMemoryTracker::MediaMemoryTracker()
 {
 }
 
 void
 MediaMemoryTracker::InitMemoryReporter()
--- a/dom/media/MediaDecoderOwner.h
+++ b/dom/media/MediaDecoderOwner.h
@@ -129,17 +129,17 @@ public:
   // ImageContainer containing the video data.
   virtual VideoFrameContainer* GetVideoFrameContainer() = 0;
 
   // Called by the media decoder object, on the main thread,
   // when the connection between Rtsp server and client gets lost.
   virtual void ResetConnectionState() = 0;
 
   // Called by media decoder when the audible state changed
-  virtual void NotifyAudibleStateChanged(bool aAudible) = 0;
+  virtual void SetAudibleState(bool aAudible) = 0;
 
 #ifdef MOZ_EME
   // Dispatches a "encrypted" event to the HTMLMediaElement, with the
   // provided init data. Actual dispatch may be delayed until HAVE_METADATA.
   // Main thread only.
   virtual void DispatchEncrypted(const nsTArray<uint8_t>& aInitData,
                                  const nsAString& aInitDataType) = 0;
 #endif // MOZ_EME
--- a/dom/media/MediaDecoderStateMachine.cpp
+++ b/dom/media/MediaDecoderStateMachine.cpp
@@ -117,21 +117,16 @@ static const int32_t LOW_VIDEO_THRESHOLD
 static const int AUDIO_DURATION_USECS = 40000;
 
 // If we increase our "low audio threshold" (see LOW_AUDIO_USECS above), we
 // use this as a factor in all our calculations. Increasing this will cause
 // us to be more likely to increase our low audio threshold, and to
 // increase it by more.
 static const int THRESHOLD_FACTOR = 2;
 
-// When the continuous silent data is over this threshold, means the a/v does
-// not produce any sound. This time is decided by UX suggestion, see
-// https://bugzilla.mozilla.org/show_bug.cgi?id=1235612#c18
-static const uint32_t SILENT_DATA_THRESHOLD_USECS = 10000000;
-
 namespace detail {
 
 // If we have less than this much undecoded data available, we'll consider
 // ourselves to be running low on undecoded data. We determine how much
 // undecoded data we have remaining using the reader's GetBuffered()
 // implementation.
 static const int64_t LOW_DATA_THRESHOLD_USECS = 5000000;
 
@@ -242,17 +237,16 @@ MediaDecoderStateMachine::MediaDecoderSt
   mDecodeThreadWaiting(false),
   mDecodingFirstFrame(true),
   mSentLoadedMetadataEvent(false),
   mSentFirstFrameLoadedEvent(false),
   mSentPlaybackEndedEvent(false),
   mOutputStreamManager(new OutputStreamManager()),
   mResource(aDecoder->GetResource()),
   mAudioOffloading(false),
-  mSilentDataDuration(0),
   mBuffered(mTaskQueue, TimeIntervals(),
             "MediaDecoderStateMachine::mBuffered (Mirror)"),
   mEstimatedDuration(mTaskQueue, NullableTimeUnit(),
                     "MediaDecoderStateMachine::mEstimatedDuration (Mirror)"),
   mExplicitDuration(mTaskQueue, Maybe<double>(),
                     "MediaDecoderStateMachine::mExplicitDuration (Mirror)"),
   mPlayState(mTaskQueue, MediaDecoder::PLAY_STATE_LOADING,
              "MediaDecoderStateMachine::mPlayState (Mirror)"),
@@ -628,46 +622,39 @@ MediaDecoderStateMachine::CheckIsAudible
 {
   MOZ_ASSERT(OnTaskQueue());
   MOZ_ASSERT(aSample->mType == MediaData::AUDIO_DATA);
 
   const AudioData* data = aSample->As<AudioData>();
   bool isAudible = data->IsAudible();
   if (isAudible && !mIsAudioDataAudible) {
     mIsAudioDataAudible = true;
-    mSilentDataDuration = 0;
-  } else if (isAudible && mIsAudioDataAudible) {
-    mSilentDataDuration += data->mDuration;
-    if (mSilentDataDuration > SILENT_DATA_THRESHOLD_USECS) {
-      mIsAudioDataAudible = false;
-      mSilentDataDuration = 0;
-    }
+  } else if (!isAudible && mIsAudioDataAudible) {
+    mIsAudioDataAudible = false;
   }
 }
 
 void
 MediaDecoderStateMachine::OnAudioPopped(const RefPtr<MediaData>& aSample)
 {
   MOZ_ASSERT(OnTaskQueue());
 
   mPlaybackOffset = std::max(mPlaybackOffset.Ref(), aSample->mOffset);
   UpdateNextFrameStatus();
   DispatchAudioDecodeTaskIfNeeded();
-  MaybeStartBuffering();
   CheckIsAudible(aSample);
 }
 
 void
 MediaDecoderStateMachine::OnVideoPopped(const RefPtr<MediaData>& aSample)
 {
   MOZ_ASSERT(OnTaskQueue());
   mPlaybackOffset = std::max(mPlaybackOffset.Ref(), aSample->mOffset);
   UpdateNextFrameStatus();
   DispatchVideoDecodeTaskIfNeeded();
-  MaybeStartBuffering();
 }
 
 void
 MediaDecoderStateMachine::OnNotDecoded(MediaData::Type aType,
                                        MediaDecoderReader::NotDecodedReason aReason)
 {
   MOZ_ASSERT(OnTaskQueue());
   MOZ_ASSERT(mState != DECODER_STATE_SEEKING);
@@ -2148,16 +2135,17 @@ nsresult MediaDecoderStateMachine::RunSt
 
       // Start playback if necessary so that the clock can be properly queried.
       MaybeStartPlayback();
 
       UpdatePlaybackPositionPeriodically();
       NS_ASSERTION(!IsPlaying() ||
                    IsStateMachineScheduled(),
                    "Must have timer scheduled");
+      MaybeStartBuffering();
       return NS_OK;
     }
 
     case DECODER_STATE_BUFFERING: {
       TimeStamp now = TimeStamp::Now();
       NS_ASSERTION(!mBufferingStart.IsNull(), "Must know buffering start time.");
 
       // With buffering heuristics we will remain in the buffering state if
@@ -2404,20 +2392,16 @@ void MediaDecoderStateMachine::StartBuff
     // We only move into BUFFERING state if we're actually decoding.
     // If we're currently doing something else, we don't need to buffer,
     // and more importantly, we shouldn't overwrite mState to interrupt
     // the current operation, as that could leave us in an inconsistent
     // state!
     return;
   }
 
-  // Update playback position again before entering BUFFERING so the currentTime
-  // of the media element is more accurate during buffering.
-  UpdatePlaybackPositionPeriodically();
-
   if (IsPlaying()) {
     StopPlayback();
   }
 
   TimeDuration decodeDuration = TimeStamp::Now() - mDecodeStartTime;
   // Go into quick buffering mode provided we've not just left buffering using
   // a "quick exit". This stops us flip-flopping between playing and buffering
   // when the download speed is similar to the decode speed.
--- a/dom/media/MediaDecoderStateMachine.h
+++ b/dom/media/MediaDecoderStateMachine.h
@@ -937,19 +937,16 @@ private:
 
   MediaEventProducer<MediaEventType> mOnPlaybackEvent;
   MediaEventProducer<MediaDecoderEventVisibility> mOnSeekingStart;
 
   // True if audio is offloading.
   // Playback will not start when audio is offloading.
   bool mAudioOffloading;
 
-  // Duration of the continuous silent data.
-  uint32_t mSilentDataDuration;
-
 #ifdef MOZ_EME
   void OnCDMProxyReady(RefPtr<CDMProxy> aProxy);
   void OnCDMProxyNotReady();
   RefPtr<CDMProxy> mCDMProxy;
   MozPromiseRequestHolder<MediaDecoder::CDMProxyPromise> mCDMProxyPromise;
 #endif
 
 private:
--- a/dom/media/MediaFormatReader.cpp
+++ b/dom/media/MediaFormatReader.cpp
@@ -65,16 +65,17 @@ MediaFormatReader::MediaFormatReader(Abs
   , mDemuxer(aDemuxer)
   , mDemuxerInitDone(false)
   , mLastReportedNumDecodedFrames(0)
   , mLayersBackendType(aLayersBackend)
   , mInitDone(false)
   , mIsEncrypted(false)
   , mTrackDemuxersMayBlock(false)
   , mDemuxOnly(false)
+  , mSeekScheduled(false)
   , mVideoFrameContainer(aVideoFrameContainer)
 {
   MOZ_ASSERT(aDemuxer);
   MOZ_COUNT_CTOR(MediaFormatReader);
 }
 
 MediaFormatReader::~MediaFormatReader()
 {
@@ -91,54 +92,54 @@ MediaFormatReader::Shutdown()
   }
 
   mDemuxerInitRequest.DisconnectIfExists();
   mMetadataPromise.RejectIfExists(ReadMetadataFailureReason::METADATA_ERROR, __func__);
   mSeekPromise.RejectIfExists(NS_ERROR_FAILURE, __func__);
   mSkipRequest.DisconnectIfExists();
 
   if (mAudio.mDecoder) {
-    Flush(TrackInfo::kAudioTrack);
+    Reset(TrackInfo::kAudioTrack);
     if (mAudio.HasPromise()) {
       mAudio.RejectPromise(CANCELED, __func__);
     }
     mAudio.mInitPromise.DisconnectIfExists();
     mAudio.ShutdownDecoder();
   }
   if (mAudio.mTrackDemuxer) {
     mAudio.ResetDemuxer();
     mAudio.mTrackDemuxer->BreakCycles();
     mAudio.mTrackDemuxer = nullptr;
   }
   if (mAudio.mTaskQueue) {
     mAudio.mTaskQueue->BeginShutdown();
     mAudio.mTaskQueue->AwaitShutdownAndIdle();
     mAudio.mTaskQueue = nullptr;
   }
-  MOZ_ASSERT(mAudio.mPromise.IsEmpty());
+  MOZ_ASSERT(!mAudio.HasPromise());
 
   if (mVideo.mDecoder) {
-    Flush(TrackInfo::kVideoTrack);
+    Reset(TrackInfo::kVideoTrack);
     if (mVideo.HasPromise()) {
       mVideo.RejectPromise(CANCELED, __func__);
     }
     mVideo.mInitPromise.DisconnectIfExists();
     mVideo.ShutdownDecoder();
   }
   if (mVideo.mTrackDemuxer) {
     mVideo.ResetDemuxer();
     mVideo.mTrackDemuxer->BreakCycles();
     mVideo.mTrackDemuxer = nullptr;
   }
   if (mVideo.mTaskQueue) {
     mVideo.mTaskQueue->BeginShutdown();
     mVideo.mTaskQueue->AwaitShutdownAndIdle();
     mVideo.mTaskQueue = nullptr;
   }
-  MOZ_ASSERT(mVideo.mPromise.IsEmpty());
+  MOZ_ASSERT(!mVideo.HasPromise());
 
   mDemuxer = nullptr;
 
   mPlatform = nullptr;
 
   return MediaDecoderReader::Shutdown();
 }
 
@@ -483,17 +484,20 @@ bool
 MediaFormatReader::ShouldSkip(bool aSkipToNextKeyframe, media::TimeUnit aTimeThreshold)
 {
   MOZ_ASSERT(HasVideo());
   media::TimeUnit nextKeyframe;
   nsresult rv = mVideo.mTrackDemuxer->GetNextRandomAccessPoint(&nextKeyframe);
   if (NS_FAILED(rv)) {
     return aSkipToNextKeyframe;
   }
-  return nextKeyframe < aTimeThreshold && nextKeyframe.ToMicroseconds() >= 0;
+  return (nextKeyframe < aTimeThreshold ||
+          (mVideo.mTimeThreshold &&
+           mVideo.mTimeThreshold.ref().mTime < aTimeThreshold)) &&
+         nextKeyframe.ToMicroseconds() >= 0;
 }
 
 RefPtr<MediaDecoderReader::MediaDataPromise>
 MediaFormatReader::RequestVideoData(bool aSkipToNextKeyframe,
                                     int64_t aTimeThreshold)
 {
   MOZ_ASSERT(OnTaskQueue());
   MOZ_DIAGNOSTIC_ASSERT(mSeekPromise.IsEmpty(), "No sample requests allowed while seeking");
@@ -519,33 +523,22 @@ MediaFormatReader::RequestVideoData(bool
     return MediaDataPromise::CreateAndReject(CANCELED, __func__);
   }
 
   media::TimeUnit timeThreshold{media::TimeUnit::FromMicroseconds(aTimeThreshold)};
   // Ensure we have no pending seek going as ShouldSkip could return out of date
   // information.
   if (!mVideo.HasInternalSeekPending() &&
       ShouldSkip(aSkipToNextKeyframe, timeThreshold)) {
-    // Cancel any pending demux request.
-    mVideo.mDemuxRequest.DisconnectIfExists();
-
-    // I think it's still possible for an output to have been sent from the decoder
-    // and is currently sitting in our event queue waiting to be processed. The following
-    // flush won't clear it, and when we return to the event loop it'll be added to our
-    // output queue and be used.
-    // This code will count that as dropped, which was the intent, but not quite true.
-    mDecoder->NotifyDecodedFrames(0, 0, SizeOfVideoQueueInFrames());
-
-    Flush(TrackInfo::kVideoTrack);
-    RefPtr<MediaDataPromise> p = mVideo.mPromise.Ensure(__func__);
+    RefPtr<MediaDataPromise> p = mVideo.EnsurePromise(__func__);
     SkipVideoDemuxToNextKeyFrame(timeThreshold);
     return p;
   }
 
-  RefPtr<MediaDataPromise> p = mVideo.mPromise.Ensure(__func__);
+  RefPtr<MediaDataPromise> p = mVideo.EnsurePromise(__func__);
   NotifyDecodingRequested(TrackInfo::kVideoTrack);
 
   return p;
 }
 
 void
 MediaFormatReader::OnDemuxFailed(TrackType aTrack, DemuxerFailureReason aFailure)
 {
@@ -621,17 +614,17 @@ MediaFormatReader::RequestAudioData()
     return MediaDataPromise::CreateAndReject(CANCELED, __func__);
   }
 
   if (mShutdown) {
     NS_WARNING("RequestAudioData on shutdown MediaFormatReader!");
     return MediaDataPromise::CreateAndReject(CANCELED, __func__);
   }
 
-  RefPtr<MediaDataPromise> p = mAudio.mPromise.Ensure(__func__);
+  RefPtr<MediaDataPromise> p = mAudio.EnsurePromise(__func__);
   NotifyDecodingRequested(TrackInfo::kAudioTrack);
 
   return p;
 }
 
 void
 MediaFormatReader::DoDemuxAudio()
 {
@@ -734,28 +727,27 @@ MediaFormatReader::NotifyDecodingRequest
   auto& decoder = GetDecoderData(aTrack);
   decoder.mDecodingRequested = true;
   ScheduleUpdate(aTrack);
 }
 
 bool
 MediaFormatReader::NeedInput(DecoderData& aDecoder)
 {
-  MOZ_ASSERT(OnTaskQueue());
   // We try to keep a few more compressed samples input than decoded samples
   // have been output, provided the state machine has requested we send it a
   // decoded sample. To account for H.264 streams which may require a longer
   // run of input than we input, decoders fire an "input exhausted" callback,
   // which overrides our "few more samples" threshold.
   return
     !aDecoder.mDraining &&
     !aDecoder.mError &&
     aDecoder.mDecodingRequested &&
     !aDecoder.mDemuxRequest.Exists() &&
-    !aDecoder.mSeekRequest.Exists() &&
+    !aDecoder.HasInternalSeekPending() &&
     aDecoder.mOutput.Length() <= aDecoder.mDecodeAhead &&
     (aDecoder.mInputExhausted || !aDecoder.mQueuedSamples.IsEmpty() ||
      aDecoder.mTimeThreshold.isSome() ||
      aDecoder.mNumSamplesInput - aDecoder.mNumSamplesOutput <= aDecoder.mDecodeAhead);
 }
 
 void
 MediaFormatReader::ScheduleUpdate(TrackType aTrack)
@@ -824,40 +816,42 @@ MediaFormatReader::UpdateReceivedNewData
     decoder.mTimeThreshold.ref().mWaiting = false;
   }
   decoder.mWaitingForData = false;
 
   if (decoder.mError) {
     return false;
   }
 
-  bool hasPendingSeek =
-    decoder.mTimeThreshold && !decoder.mTimeThreshold.ref().mHasSeeked;
-  if (hasPendingSeek || decoder.HasWaitingPromise()) {
-    if (hasPendingSeek) {
+  if (!mSeekPromise.IsEmpty()) {
+    MOZ_ASSERT(!decoder.HasPromise());
+    MOZ_DIAGNOSTIC_ASSERT(!mAudio.mTimeThreshold && !mVideo.mTimeThreshold,
+                          "InternalSeek must have been aborted when Seek was first called");
+    MOZ_DIAGNOSTIC_ASSERT(!mAudio.HasWaitingPromise() && !mVideo.HasWaitingPromise(),
+                          "Waiting promises must have been rejected when Seek was first called");
+    if (mVideo.mSeekRequest.Exists() || mAudio.mSeekRequest.Exists()) {
+      // Already waiting for a seek to complete. Nothing more to do.
+      return true;
+    }
+    LOG("Attempting Seek");
+    ScheduleSeek();
+    return true;
+  }
+  if (decoder.HasInternalSeekPending() || decoder.HasWaitingPromise()) {
+    if (decoder.HasInternalSeekPending()) {
       LOG("Attempting Internal Seek");
       InternalSeek(aTrack, decoder.mTimeThreshold.ref());
     }
     if (decoder.HasWaitingPromise()) {
       MOZ_ASSERT(!decoder.HasPromise());
       LOG("We have new data. Resolving WaitingPromise");
       decoder.mWaitingPromise.Resolve(decoder.mType, __func__);
     }
     return true;
   }
-  if (!mSeekPromise.IsEmpty()) {
-    MOZ_ASSERT(!decoder.HasPromise());
-    if (mVideo.mSeekRequest.Exists() || mAudio.mSeekRequest.Exists()) {
-      // Already waiting for a seek to complete. Nothing more to do.
-      return true;
-    }
-    LOG("Attempting Seek");
-    AttemptSeek();
-    return true;
-  }
   return false;
 }
 
 void
 MediaFormatReader::RequestDemuxSamples(TrackType aTrack)
 {
   MOZ_ASSERT(OnTaskQueue());
   auto& decoder = GetDecoderData(aTrack);
@@ -946,19 +940,19 @@ MediaFormatReader::HandleDemuxedSamples(
       }
 
       LOG("%s stream id has changed from:%d to:%d, recreating decoder.",
           TrackTypeToStr(aTrack), decoder.mLastStreamSourceID,
           info->GetID());
       decoder.mInfo = info;
       decoder.mLastStreamSourceID = info->GetID();
       decoder.mNextStreamSourceID.reset();
-      // Flush will clear our array of queued samples. So make a copy now.
+      // Reset will clear our array of queued samples. So make a copy now.
       nsTArray<RefPtr<MediaRawData>> samples{decoder.mQueuedSamples};
-      Flush(aTrack);
+      Reset(aTrack);
       decoder.ShutdownDecoder();
       if (sample->mKeyframe) {
         decoder.mQueuedSamples.AppendElements(Move(samples));
         NotifyDecodingRequested(aTrack);
       } else {
         InternalSeekTarget seekTarget =
           decoder.mTimeThreshold.refOr(InternalSeekTarget(TimeUnit::FromMicroseconds(sample->mTime), false));
         LOG("Stream change occurred on a non-keyframe. Seeking to:%lld",
@@ -1000,25 +994,27 @@ MediaFormatReader::HandleDemuxedSamples(
 void
 MediaFormatReader::InternalSeek(TrackType aTrack, const InternalSeekTarget& aTarget)
 {
   MOZ_ASSERT(OnTaskQueue());
   LOG("%s internal seek to %f",
       TrackTypeToStr(aTrack), aTarget.mTime.ToSeconds());
 
   auto& decoder = GetDecoderData(aTrack);
+  decoder.Flush();
+  decoder.ResetDemuxer();
   decoder.mTimeThreshold = Some(aTarget);
   RefPtr<MediaFormatReader> self = this;
-  decoder.ResetDemuxer();
   decoder.mSeekRequest.Begin(decoder.mTrackDemuxer->Seek(decoder.mTimeThreshold.ref().mTime)
              ->Then(OwnerThread(), __func__,
                     [self, aTrack] (media::TimeUnit aTime) {
                       auto& decoder = self->GetDecoderData(aTrack);
                       decoder.mSeekRequest.Complete();
-                      MOZ_ASSERT(decoder.mTimeThreshold);
+                      MOZ_ASSERT(decoder.mTimeThreshold,
+                                 "Seek promise must be disconnected when timethreshold is reset");
                       decoder.mTimeThreshold.ref().mHasSeeked = true;
                       self->NotifyDecodingRequested(aTrack);
                     },
                     [self, aTrack] (DemuxerFailureReason aResult) {
                       auto& decoder = self->GetDecoderData(aTrack);
                       decoder.mSeekRequest.Complete();
                       switch (aResult) {
                         case DemuxerFailureReason::WAITING_FOR_DATA:
@@ -1083,30 +1079,40 @@ MediaFormatReader::Update(TrackType aTra
     return;
   }
 
   if (UpdateReceivedNewData(aTrack)) {
     LOGV("Nothing more to do");
     return;
   }
 
+  if (decoder.mSeekRequest.Exists()) {
+    LOGV("Seeking hasn't completed, nothing more to do");
+    return;
+  }
+
+  MOZ_DIAGNOSTIC_ASSERT(!decoder.HasInternalSeekPending() ||
+                        (!decoder.mOutput.Length() &&