Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 5 Feb 2018 23:47:58 +0000 (UTC)
From:      Jan Beich <jbeich@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r461026 - in head/www/waterfox: . files
Message-ID:  <201802052347.w15Nlw9r060040@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jbeich
Date: Mon Feb  5 23:47:58 2018
New Revision: 461026
URL: https://svnweb.freebsd.org/changeset/ports/461026

Log:
  www/waterfox: apply more FF57 fixes

Added:
  head/www/waterfox/files/patch-bug1356854   (contents, props changed)
  head/www/waterfox/files/patch-bug1357523   (contents, props changed)
  head/www/waterfox/files/patch-bug1373371   (contents, props changed)
  head/www/waterfox/files/patch-bug1385013   (contents, props changed)
  head/www/waterfox/files/patch-bug1387079   (contents, props changed)
  head/www/waterfox/files/patch-bug1393627   (contents, props changed)
  head/www/waterfox/files/patch-bug1397989   (contents, props changed)
  head/www/waterfox/files/patch-bug1398806   (contents, props changed)
  head/www/waterfox/files/patch-bug1400674   (contents, props changed)
  head/www/waterfox/files/patch-bug1401522   (contents, props changed)
  head/www/waterfox/files/patch-bug1401876   (contents, props changed)
  head/www/waterfox/files/patch-bug1402871   (contents, props changed)
  head/www/waterfox/files/patch-bug1403349   (contents, props changed)
  head/www/waterfox/files/patch-bug1403466   (contents, props changed)
  head/www/waterfox/files/patch-bug1404568   (contents, props changed)
  head/www/waterfox/files/patch-bug1404651   (contents, props changed)
  head/www/waterfox/files/patch-bug1405199   (contents, props changed)
  head/www/waterfox/files/patch-bug1405655   (contents, props changed)
  head/www/waterfox/files/patch-bug1405761   (contents, props changed)
  head/www/waterfox/files/patch-bug1405878   (contents, props changed)
  head/www/waterfox/files/patch-bug1406222   (contents, props changed)
  head/www/waterfox/files/patch-bug1406229   (contents, props changed)
  head/www/waterfox/files/patch-bug1406254   (contents, props changed)
  head/www/waterfox/files/patch-bug1406396   (contents, props changed)
  head/www/waterfox/files/patch-bug1406474   (contents, props changed)
  head/www/waterfox/files/patch-bug1406859   (contents, props changed)
  head/www/waterfox/files/patch-bug1407092   (contents, props changed)
  head/www/waterfox/files/patch-bug1407243   (contents, props changed)
  head/www/waterfox/files/patch-bug1407245   (contents, props changed)
  head/www/waterfox/files/patch-bug1407414   (contents, props changed)
  head/www/waterfox/files/patch-bug1407680   (contents, props changed)
  head/www/waterfox/files/patch-bug1407936   (contents, props changed)
  head/www/waterfox/files/patch-bug1408397   (contents, props changed)
  head/www/waterfox/files/patch-bug1408672   (contents, props changed)
  head/www/waterfox/files/patch-bug1409101   (contents, props changed)
  head/www/waterfox/files/patch-bug1409277   (contents, props changed)
  head/www/waterfox/files/patch-bug1409496   (contents, props changed)
  head/www/waterfox/files/patch-bug1409649   (contents, props changed)
  head/www/waterfox/files/patch-bug1410146   (contents, props changed)
  head/www/waterfox/files/patch-bug1410420   (contents, props changed)
  head/www/waterfox/files/patch-bug1410457   (contents, props changed)
  head/www/waterfox/files/patch-bug1410634   (contents, props changed)
  head/www/waterfox/files/patch-bug1410808   (contents, props changed)
  head/www/waterfox/files/patch-bug1412011   (contents, props changed)
  head/www/waterfox/files/patch-bug1412741   (contents, props changed)
  head/www/waterfox/files/patch-bug1414292   (contents, props changed)
  head/www/waterfox/files/patch-bug1418152   (contents, props changed)
  head/www/waterfox/files/patch-bug1434580   (contents, props changed)
  head/www/waterfox/files/patch-bug895096   (contents, props changed)
Modified:
  head/www/waterfox/Makefile   (contents, props changed)

Modified: head/www/waterfox/Makefile
==============================================================================
--- head/www/waterfox/Makefile	Mon Feb  5 23:43:48 2018	(r461025)
+++ head/www/waterfox/Makefile	Mon Feb  5 23:47:58 2018	(r461026)
@@ -2,6 +2,7 @@
 
 PORTNAME=	waterfox
 DISTVERSION=	56.0.4
+PORTREVISION=	1
 CATEGORIES=	www ipv6
 
 MAINTAINER=	jbeich@FreeBSD.org

Added: head/www/waterfox/files/patch-bug1356854
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1356854	Mon Feb  5 23:47:58 2018	(r461026)
@@ -0,0 +1,28 @@
+commit 6435e5f65538
+Author: Thomas Nguyen <tnguyen@mozilla.com>
+Date:   Thu Sep 21 16:39:36 2017 +0800
+
+    Bug 1356854 - Check mFD is not null before PR_Write. r=mcmanus, a=ritu
+    
+    MozReview-Commit-ID: INoTUvPpPrs
+    
+    --HG--
+    extra : source : 638f326530b719ce386bb5d1701fed4ae4604690
+---
+ netwerk/base/nsFileStreams.cpp | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git netwerk/base/nsFileStreams.cpp netwerk/base/nsFileStreams.cpp
+index ac259c1c7e94..6be501456656 100644
+--- netwerk/base/nsFileStreams.cpp
++++ netwerk/base/nsFileStreams.cpp
+@@ -378,6 +378,9 @@ nsFileStreamBase::DoPendingOpen()
+ 
+     case eOpened:
+         MOZ_ASSERT(mFD);
++        if (NS_WARN_IF(!mFD)) {
++          return NS_ERROR_FAILURE;
++        }
+         return NS_OK;
+ 
+     case eClosed:

Added: head/www/waterfox/files/patch-bug1357523
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1357523	Mon Feb  5 23:47:58 2018	(r461026)
@@ -0,0 +1,96 @@
+commit ad103dfd3abe
+Author: Prathiksha <prathikshaprasadsuman@gmail.com>
+Date:   Fri Sep 15 22:08:12 2017 +0530
+
+    Bug 1357523 - Make about:home and about:newtab search box search for the value in the search textbox when we use non-default search engines. r=nhnt11, a=ritu
+    
+    MozReview-Commit-ID: CdgqghkmXau
+    
+    --HG--
+    extra : source : e029590936c56ac269d68610ab389ab25887b6e1
+---
+ browser/base/content/contentSearchUI.js            |  2 ++
+ .../test/general/browser_contentSearchUI.js        | 30 +++++-----------------
+ 2 files changed, 9 insertions(+), 23 deletions(-)
+
+diff --git browser/base/content/contentSearchUI.js browser/base/content/contentSearchUI.js
+index bacb985fb6ee..ffada60c3571 100644
+--- browser/base/content/contentSearchUI.js
++++ browser/base/content/contentSearchUI.js
+@@ -478,6 +478,8 @@ ContentSearchUIController.prototype = {
+   _onMousemove(event) {
+     let idx = this._indexOfTableItem(event.target);
+     if (idx >= this.numSuggestions) {
++      // Deselect any search suggestion that has been selected.
++      this.selectedIndex = -1;
+       this.selectedButtonIndex = idx - this.numSuggestions;
+       return;
+     }
+diff --git browser/base/content/test/general/browser_contentSearchUI.js browser/base/content/test/general/browser_contentSearchUI.js
+index 51538b29e27f..85b65d40bf0b 100644
+--- browser/base/content/test/general/browser_contentSearchUI.js
++++ browser/base/content/test/general/browser_contentSearchUI.js
+@@ -300,13 +300,13 @@ add_task(async function mouse() {
+   checkState(state, "x", ["xfoo", "xbar"], 1);
+ 
+   state = await msg("mousemove", 2);
+-  checkState(state, "x", ["xfoo", "xbar"], 1, 0);
++  checkState(state, "x", ["xfoo", "xbar"], 2, 0);
+ 
+   state = await msg("mousemove", 3);
+-  checkState(state, "x", ["xfoo", "xbar"], 1, 1);
++  checkState(state, "x", ["xfoo", "xbar"], 3, 1);
+ 
+   state = await msg("mousemove", -1);
+-  checkState(state, "x", ["xfoo", "xbar"], 1);
++  checkState(state, "x", ["xfoo", "xbar"], -1);
+ 
+   await msg("reset");
+   await setUp();
+@@ -318,10 +318,10 @@ add_task(async function mouse() {
+   checkState(state, "x", ["xfoo", "xbar"], 0);
+ 
+   state = await msg("mousemove", 2);
+-  checkState(state, "x", ["xfoo", "xbar"], 0, 0);
++  checkState(state, "x", ["xfoo", "xbar"], 2, 0);
+ 
+   state = await msg("mousemove", -1);
+-  checkState(state, "x", ["xfoo", "xbar"], 0);
++  checkState(state, "x", ["xfoo", "xbar"], -1);
+ 
+   await msg("reset");
+ });
+@@ -510,24 +510,7 @@ add_task(async function search() {
+   await setUp();
+ 
+   // Test selecting a suggestion, then clicking a one-off without deselecting the
+-  // suggestion.
+-  await msg("key", { key: "x", waitForSuggestions: true });
+-  p = msg("waitForSearch");
+-  await msg("mousemove", 1);
+-  await msg("mousemove", 3);
+-  await msg("click", { eltIdx: 3, modifiers });
+-  mesg = await p;
+-  eventData.searchString = "xfoo"
+-  eventData.selection = {
+-    index: 1,
+-    kind: "mouse",
+-  };
+-  SimpleTest.isDeeply(eventData, mesg, "Search event data");
+-
+-  await promiseTab();
+-  await setUp();
+-
+-  // Same as above, but with the keyboard.
++  // suggestion, using the keyboard.
+   delete modifiers.button;
+   await msg("key", { key: "x", waitForSuggestions: true });
+   p = msg("waitForSearch");
+@@ -536,6 +519,7 @@ add_task(async function search() {
+   await msg("key", "VK_TAB");
+   await msg("key", { key: "VK_RETURN", modifiers });
+   mesg = await p;
++  eventData.searchString = "xfoo";
+   eventData.selection = {
+     index: 1,
+     kind: "key",

Added: head/www/waterfox/files/patch-bug1373371
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1373371	Mon Feb  5 23:47:58 2018	(r461026)
@@ -0,0 +1,44 @@
+commit 94b1df91cc7f
+Author: Eric Rahm <erahm@mozilla.com>
+Date:   Mon Jun 19 17:09:54 2017 -0700
+
+    Bug 1373371 - Properly convert index in RemoveElementsAt. r=froydnj, a=ritu
+    
+    MozReview-Commit-ID: 2CRrUmOxA9B
+    
+    --HG--
+    extra : source : 337103b85c025be555c107c7710ebe25d2feb6ed
+---
+ xpcom/ds/nsTArray.h | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+diff --git xpcom/ds/nsTArray.h xpcom/ds/nsTArray.h
+index 4e9b57126bfb..e0244846aca3 100644
+--- xpcom/ds/nsTArray.h
++++ xpcom/ds/nsTArray.h
+@@ -13,6 +13,7 @@
+ #include "mozilla/Assertions.h"
+ #include "mozilla/Attributes.h"
+ #include "mozilla/BinarySearch.h"
++#include "mozilla/CheckedInt.h"
+ #include "mozilla/fallible.h"
+ #include "mozilla/MathAlgorithms.h"
+ #include "mozilla/MemoryReporting.h"
+@@ -2053,9 +2054,14 @@ void
+ nsTArray_Impl<E, Alloc>::RemoveElementsAt(index_type aStart, size_type aCount)
+ {
+   MOZ_ASSERT(aCount == 0 || aStart < Length(), "Invalid aStart index");
+-  MOZ_ASSERT(aStart + aCount <= Length(), "Invalid length");
+-  // Check that the previous assert didn't overflow
+-  MOZ_ASSERT(aStart <= aStart + aCount, "Start index plus length overflows");
++
++  mozilla::CheckedInt<index_type> rangeEnd = aStart;
++  rangeEnd += aCount;
++
++  if (MOZ_UNLIKELY(!rangeEnd.isValid() || rangeEnd.value() > Length())) {
++    InvalidArrayIndex_CRASH(aStart, Length());
++  }
++
+   DestructRange(aStart, aCount);
+   this->template ShiftData<InfallibleAlloc>(aStart, aCount, 0,
+                                             sizeof(elem_type),

Added: head/www/waterfox/files/patch-bug1385013
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1385013	Mon Feb  5 23:47:58 2018	(r461026)
@@ -0,0 +1,92 @@
+commit 09e1ad759b21
+Author: Hiroyuki Ikezoe <hikezoe@mozilla.com>
+Date:   Wed Oct 18 10:43:22 2017 +0900
+
+    Bug 1385013 - Check all vertexes for the target frame are outside of the parent frame if the target frame is empty. r=birtles, a=ritu
+    
+    We create empty rectangle (zero-height or zero-width) frame for element which
+    has no content inside it, e.g.  '<p></p>'.  And nsRect.Intersects returns false
+    if either of the rectangles are empty, so if we check
+    !transformedRect.Intersects(scrollableRect) and transformedRect is empty, we
+    will end up returning true from IsFrameScrolledOutOfView even though the point
+    represented by the empty transformedRect might be inside the
+    scrollableRect.
+    
+    The reftest causes timeout without this fix since the animation never updates
+    after the initial paint.
+    
+    MozReview-Commit-ID: FymFJfjxyGc
+    
+    --HG--
+    extra : source : 69e2ab081d3d71ef131f0ce878ee7830ae881d08
+---
+ layout/generic/nsFrame.cpp                         | 11 +++++++++-
+ .../animation-on-empty-height-frame.html           | 25 ++++++++++++++++++++++
+ layout/reftests/css-animations/reftest.list        |  1 +
+ 3 files changed, 36 insertions(+), 1 deletion(-)
+
+diff --git layout/generic/nsFrame.cpp layout/generic/nsFrame.cpp
+index dbfd61b7e142..991ccbceeb65 100644
+--- layout/generic/nsFrame.cpp
++++ layout/generic/nsFrame.cpp
+@@ -10555,7 +10555,16 @@ IsFrameScrolledOutOfView(nsIFrame *aFrame)
+                                                 scrollableParent);
+ 
+   nsRect scrollableRect = scrollableParent->GetVisualOverflowRect();
+-  if (!transformedRect.Intersects(scrollableRect)) {
++  if (transformedRect.IsEmpty()) {
++    // If the transformed rect is empty it represents a line or a point that we
++    // should check is outside the the scrollable rect.
++    if (transformedRect.x > scrollableRect.XMost() ||
++        transformedRect.y > scrollableRect.YMost() ||
++        scrollableRect.x > transformedRect.XMost() ||
++        scrollableRect.y > transformedRect.YMost()) {
++      return true;
++    }
++  } else if (!transformedRect.Intersects(scrollableRect)) {
+     return true;
+   }
+ 
+diff --git layout/reftests/css-animations/animation-on-empty-height-frame.html layout/reftests/css-animations/animation-on-empty-height-frame.html
+new file mode 100644
+index 000000000000..eb3f58127b16
+--- /dev/null
++++ layout/reftests/css-animations/animation-on-empty-height-frame.html
+@@ -0,0 +1,25 @@
++<!DOCTYPE html>
++<html class="reftest-wait reftest-no-flush">
++<style>
++@keyframes anim {
++  from { background-color: white; }
++  to { background-color: red; }
++}
++</style>
++<body>
++</body>
++<script>
++window.addEventListener('load', () => {
++  const body = document.querySelector('body');
++  body.style.animation = 'anim 100s step-end reverse';
++  body.addEventListener('animationstart', () => {
++    // This MozAfterPaint event corresponds to the white background paint.
++    // (The animation will initially paint the background red since it is playing
++    // a step-end animation in reverse.)
++    window.addEventListener('MozAfterPaint', () => {
++      document.documentElement.classList.remove('reftest-wait');
++    }, {once: true});
++  });
++});
++</script>
++</html>
+diff --git layout/reftests/css-animations/reftest.list layout/reftests/css-animations/reftest.list
+index 61e3e9ea6101..ed615645f707 100644
+--- layout/reftests/css-animations/reftest.list
++++ layout/reftests/css-animations/reftest.list
+@@ -4,6 +4,7 @@ skip-if(stylo) fails == print-no-animations.html print-no-animations-ref.html #
+ skip-if(stylo) fails != print-no-animations.html print-no-animations-notref.html # reftest harness doesn't actually make pres context non-dynamic for reftest-paged tests. Bug 1374154 for stylo
+ == animate-opacity.html animate-opacity-ref.html
+ == animate-preserves3d.html animate-preserves3d-ref.html
++== animation-on-empty-height-frame.html about:blank
+ == in-visibility-hidden-animation.html in-visibility-hidden-animation-ref.html
+ == in-visibility-hidden-animation-pseudo-element.html in-visibility-hidden-animation-pseudo-element-ref.html
+ == partially-out-of-view-animation.html partially-out-of-view-animation-ref.html

Added: head/www/waterfox/files/patch-bug1387079
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1387079	Mon Feb  5 23:47:58 2018	(r461026)
@@ -0,0 +1,42 @@
+commit 8845b3243fcd
+Author: Lee Salzman <lsalzman@mozilla.com>
+Date:   Tue Oct 10 15:49:13 2017 -0400
+
+    Bug 1387079 - Only use SkRasterPipeline when SkJumper is accelerated. r=jrmuizel, a=ritu
+    
+    MozReview-Commit-ID: 13dd2Ap4sob
+    
+    --HG--
+    extra : source : 32227656b09dfb5d7c5412c799c7081dbc49346c
+---
+ gfx/skia/skia/src/core/SkBlitter.cpp                                  | 2 ++
+ .../mozilla/mozilla-central-reftests/masking/mask-mode-d.html.ini     | 4 +++-
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git gfx/skia/skia/src/core/SkBlitter.cpp gfx/skia/skia/src/core/SkBlitter.cpp
+index 0e8bd2db2249..3a824bb724f7 100644
+--- gfx/skia/skia/src/core/SkBlitter.cpp
++++ gfx/skia/skia/src/core/SkBlitter.cpp
+@@ -847,9 +847,11 @@ SkBlitter* SkBlitter::Choose(const SkPixmap& device,
+         return alloc->make<SkA8_Coverage_Blitter>(device, *paint);
+     }
+ 
++#if (!defined(SK_JUMPER_USE_ASSEMBLY) || SK_JUMPER_USE_ASSEMBLY) && (defined(__aarch64__) || defined(__arm__) || defined(__x86_64__) || defined(_M_X64))
+     if (SkBlitter* blitter = SkCreateRasterPipelineBlitter(device, *paint, matrix, alloc)) {
+         return blitter;
+     }
++#endif
+ 
+     if (nullptr == shader) {
+         if (mode != SkBlendMode::kSrcOver) {
+diff --git testing/web-platform/meta/css/vendor-imports/mozilla/mozilla-central-reftests/masking/mask-mode-d.html.ini testing/web-platform/meta/css/vendor-imports/mozilla/mozilla-central-reftests/masking/mask-mode-d.html.ini
+index c1246ddb4127..a02e049c3684 100644
+--- testing/web-platform/meta/css/vendor-imports/mozilla/mozilla-central-reftests/masking/mask-mode-d.html.ini
++++ testing/web-platform/meta/css/vendor-imports/mozilla/mozilla-central-reftests/masking/mask-mode-d.html.ini
+@@ -1,3 +1,5 @@
+ [mask-mode-d.html]
+   type: reftest
+-  expected: FAIL
++  expected:
++    if (processor == "x86") and (bits == 32): PASS
++    FAIL

Added: head/www/waterfox/files/patch-bug1393627
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1393627	Mon Feb  5 23:47:58 2018	(r461026)
@@ -0,0 +1,30 @@
+commit 7f3f4f7f6ad3
+Author: Francois Marier <francois@mozilla.com>
+Date:   Fri Nov 3 11:44:43 2017 -0700
+
+    Bug 1393627 - Expose the full tracking protection UI preferences. r=mossop, a=ritu
+    
+    MozReview-Commit-ID: KyDBuHyDPLP
+    
+    --HG--
+    extra : source : 516690579442aecc1bea191e905f019acfad5b48
+---
+ browser/app/profile/firefox.js | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git browser/app/profile/firefox.js browser/app/profile/firefox.js
+index 137462dc857e..9e08a0f166f9 100644
+--- browser/app/profile/firefox.js
++++ browser/app/profile/firefox.js
+@@ -1511,11 +1511,7 @@ pref("browser.ping-centre.production.endpoint", "https://tiles.services.mozilla.
+ // Enable GMP support in the addon manager.
+ pref("media.gmp-provider.enabled", true);
+ 
+-#ifdef NIGHTLY_BUILD
+ pref("privacy.trackingprotection.ui.enabled", true);
+-#else
+-pref("privacy.trackingprotection.ui.enabled", false);
+-#endif
+ pref("privacy.trackingprotection.introCount", 0);
+ pref("privacy.trackingprotection.introURL", "https://www.mozilla.org/%LOCALE%/firefox/%VERSION%/tracking-protection/start/");
+ 

Added: head/www/waterfox/files/patch-bug1397989
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1397989	Mon Feb  5 23:47:58 2018	(r461026)
@@ -0,0 +1,42 @@
+commit f7c4ef799832
+Author: Mike de Boer <mdeboer@mozilla.com>
+Date:   Tue Oct 10 19:14:01 2017 +0200
+
+    Bug 1397989 - Make sure to only set non-empty values as the content-type of a document in the remote browser binding. r=mconley, a=ritu
+    
+    What happens is the following:
+     - browser-child.js sends a statechange up to RemoteWebProgress.jsm that contains
+       a `documentContentType` value of `null`, along with `requestURI` and `originalRequestURI`
+       _after_ other state changes that did send a valid content-type.
+     - The content-type is used by the WebProgressListener in browser.js to toggle the
+       disabled state of the 'isImage' broadcaster.
+     - The 'isImage' broadcaster is used by the 'cmd_find' and 'cmd_findAgain' commands to
+       determine whether they should be enabled. In this case: not.
+    The fix here is to _not_ set the documentContentType in the browser binding when
+    it's `null`.
+    
+    MozReview-Commit-ID: IELoCrnOH0j
+    
+    --HG--
+    extra : source : 4c86b1f93b8482ea3097a4edb51bb8c0e8dc67fc
+---
+ toolkit/modules/RemoteWebProgress.jsm | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git toolkit/modules/RemoteWebProgress.jsm toolkit/modules/RemoteWebProgress.jsm
+index 04eb37d580f5..05e3dabda941 100644
+--- toolkit/modules/RemoteWebProgress.jsm
++++ toolkit/modules/RemoteWebProgress.jsm
+@@ -222,7 +222,11 @@ RemoteWebProgressManager.prototype = {
+ 
+     if (isTopLevel) {
+       this._browser._contentWindow = objects.contentWindow;
+-      this._browser._documentContentType = json.documentContentType;
++      // Setting a content-type back to `null` is quite nonsensical for the
++      // frontend, especially since we're not expecting it.
++      if (json.documentContentType !== null) {
++        this._browser._documentContentType = json.documentContentType;
++      }
+       if (typeof json.inLoadURI != "undefined") {
+         this._browser.inLoadURI = json.inLoadURI;
+       }

Added: head/www/waterfox/files/patch-bug1398806
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1398806	Mon Feb  5 23:47:58 2018	(r461026)
@@ -0,0 +1,438 @@
+commit 95d5501cd96b
+Author: Robert Longson <longsonr@gmail.com>
+Date:   Tue Oct 10 07:58:34 2017 +0100
+
+    Bug 1398806 - GetCtx and GetNearestViewport should return the nearest svg or symbol element which is now an SVGViewportElement rather than only returning the nearest svg element because a symbol establishes a viewport too. r=dholbert, a=ritu
+    
+    --HG--
+    extra : source : 813d4e250712d296eb4b11b0b89e10ed6a94e3d4
+---
+ dom/svg/SVGContentUtils.cpp                   | 12 ++++++----
+ dom/svg/SVGContentUtils.h                     |  5 ++--
+ dom/svg/SVGLength.cpp                         |  2 +-
+ dom/svg/SVGMarkerElement.cpp                  |  2 +-
+ dom/svg/SVGMarkerElement.h                    |  4 ++--
+ dom/svg/SVGSVGElement.h                       |  9 -------
+ dom/svg/SVGViewportElement.h                  |  9 +++++++
+ dom/svg/nsSVGElement.cpp                      | 34 +++++++++++++--------------
+ dom/svg/nsSVGElement.h                        |  3 ++-
+ layout/base/nsLayoutUtils.cpp                 |  4 ++--
+ layout/reftests/svg/reftest.list              |  1 +
+ layout/reftests/svg/viewBox-and-symbol-01.svg | 14 +++++++++++
+ layout/svg/nsCSSClipPathInstance.cpp          |  1 -
+ layout/svg/nsSVGImageFrame.cpp                |  1 -
+ layout/svg/nsSVGImageFrame.h                  |  1 -
+ layout/svg/nsSVGMarkerFrame.cpp               |  4 ++--
+ layout/svg/nsSVGMarkerFrame.h                 |  4 ++--
+ layout/svg/nsSVGPatternFrame.cpp              |  2 +-
+ layout/svg/nsSVGUtils.cpp                     |  6 ++---
+ 19 files changed, 68 insertions(+), 50 deletions(-)
+
+diff --git dom/svg/SVGContentUtils.cpp dom/svg/SVGContentUtils.cpp
+index 0f744ffd8dd1..a6bf6245e95e 100644
+--- dom/svg/SVGContentUtils.cpp
++++ dom/svg/SVGContentUtils.cpp
+@@ -374,8 +374,8 @@ SVGContentUtils::EstablishesViewport(nsIContent *aContent)
+                                                   nsGkAtoms::symbol);
+ }
+ 
+-nsSVGElement*
+-SVGContentUtils::GetNearestViewportElement(nsIContent *aContent)
++SVGViewportElement*
++SVGContentUtils::GetNearestViewportElement(const nsIContent *aContent)
+ {
+   nsIContent *element = aContent->GetFlattenedTreeParent();
+ 
+@@ -384,7 +384,11 @@ SVGContentUtils::GetNearestViewportElement(nsIContent *aContent)
+       if (element->IsSVGElement(nsGkAtoms::foreignObject)) {
+         return nullptr;
+       }
+-      return static_cast<nsSVGElement*>(element);
++      MOZ_ASSERT(element->IsAnyOfSVGElements(nsGkAtoms::svg,
++                                             nsGkAtoms::symbol),
++                 "upcoming static_cast is only valid for "
++                 "SVGViewportElement subclasses");
++      return static_cast<SVGViewportElement*>(element);
+     }
+     element = element->GetFlattenedTreeParent();
+   }
+@@ -828,7 +832,7 @@ SVGContentUtils::CoordToFloat(nsSVGElement *aContent,
+     return nsPresContext::AppUnitsToFloatCSSPixels(aCoord.GetCoordValue());
+ 
+   case eStyleUnit_Percent: {
+-    SVGSVGElement* ctx = aContent->GetCtx();
++    SVGViewportElement* ctx = aContent->GetCtx();
+     return ctx ? aCoord.GetPercentValue() * ctx->GetLength(SVGContentUtils::XY) : 0.0f;
+   }
+   default:
+diff --git dom/svg/SVGContentUtils.h dom/svg/SVGContentUtils.h
+index 36c74f47d75a..8ec309daf6f8 100644
+--- dom/svg/SVGContentUtils.h
++++ dom/svg/SVGContentUtils.h
+@@ -32,6 +32,7 @@ class SVGPreserveAspectRatio;
+ namespace dom {
+ class Element;
+ class SVGSVGElement;
++class SVGViewportElement;
+ } // namespace dom
+ 
+ } // namespace mozilla
+@@ -238,8 +239,8 @@ public:
+    */
+   static bool EstablishesViewport(nsIContent *aContent);
+ 
+-  static nsSVGElement*
+-  GetNearestViewportElement(nsIContent *aContent);
++  static mozilla::dom::SVGViewportElement*
++  GetNearestViewportElement(const nsIContent *aContent);
+ 
+   /* enum for specifying coordinate direction for ObjectSpace/UserSpace */
+   enum ctxDirection { X, Y, XY };
+diff --git dom/svg/SVGLength.cpp dom/svg/SVGLength.cpp
+index 6c13e2e8d1a0..cecbbc8f5b40 100644
+--- dom/svg/SVGLength.cpp
++++ dom/svg/SVGLength.cpp
+@@ -177,7 +177,7 @@ SVGLength::GetUserUnitsPerUnit(const nsSVGElement *aElement, uint8_t aAxis) cons
+ SVGLength::GetUserUnitsPerPercent(const nsSVGElement *aElement, uint8_t aAxis)
+ {
+   if (aElement) {
+-    dom::SVGSVGElement *viewportElement = aElement->GetCtx();
++    dom::SVGViewportElement *viewportElement = aElement->GetCtx();
+     if (viewportElement) {
+       return std::max(viewportElement->GetLength(aAxis) / 100.0f, 0.0f);
+     }
+diff --git dom/svg/SVGMarkerElement.cpp dom/svg/SVGMarkerElement.cpp
+index 9b0b2fcfab1e..c4cf29ae274f 100644
+--- dom/svg/SVGMarkerElement.cpp
++++ dom/svg/SVGMarkerElement.cpp
+@@ -250,7 +250,7 @@ SVGMarkerElement::UnsetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ // nsSVGElement methods
+ 
+ void
+-SVGMarkerElement::SetParentCoordCtxProvider(SVGSVGElement *aContext)
++SVGMarkerElement::SetParentCoordCtxProvider(SVGViewportElement *aContext)
+ {
+   mCoordCtx = aContext;
+   mViewBoxToViewportTransform = nullptr;
+diff --git dom/svg/SVGMarkerElement.h dom/svg/SVGMarkerElement.h
+index 5d32de840b7a..ae08885c646e 100644
+--- dom/svg/SVGMarkerElement.h
++++ dom/svg/SVGMarkerElement.h
+@@ -153,7 +153,7 @@ protected:
+                                 const nsAString& aValue,
+                                 nsAttrValue& aResult) override;
+ 
+-  void SetParentCoordCtxProvider(SVGSVGElement *aContext);
++  void SetParentCoordCtxProvider(SVGViewportElement *aContext);
+ 
+   virtual LengthAttributesInfo GetLengthInfo() override;
+   virtual AngleAttributesInfo GetAngleInfo() override;
+@@ -180,7 +180,7 @@ protected:
+   // derived properties (from 'orient') handled separately
+   nsSVGOrientType                        mOrientType;
+ 
+-  SVGSVGElement                         *mCoordCtx;
++  SVGViewportElement*                    mCoordCtx;
+   nsAutoPtr<gfx::Matrix>                 mViewBoxToViewportTransform;
+ };
+ 
+diff --git dom/svg/SVGSVGElement.h dom/svg/SVGSVGElement.h
+index fc3d7f3b55c5..431d70da2bef 100644
+--- dom/svg/SVGSVGElement.h
++++ dom/svg/SVGSVGElement.h
+@@ -182,15 +182,6 @@ public:
+   // SVG-as-an-image documents.)
+   virtual void FlushImageTransformInvalidation();
+ 
+-  svgFloatSize GetViewportSize() const {
+-    return svgFloatSize(mViewportWidth, mViewportHeight);
+-  }
+-
+-  void SetViewportSize(const svgFloatSize& aSize) {
+-    mViewportWidth  = aSize.width;
+-    mViewportHeight = aSize.height;
+-  }
+-
+ private:
+   // SVGViewportElement methods:
+ 
+diff --git dom/svg/SVGViewportElement.h dom/svg/SVGViewportElement.h
+index fbc866e6a8d2..202797785131 100644
+--- dom/svg/SVGViewportElement.h
++++ dom/svg/SVGViewportElement.h
+@@ -127,6 +127,15 @@ public:
+ 
+   gfx::Matrix GetViewBoxTransform() const;
+ 
++  svgFloatSize GetViewportSize() const {
++    return svgFloatSize(mViewportWidth, mViewportHeight);
++  }
++
++  void SetViewportSize(const svgFloatSize& aSize) {
++    mViewportWidth  = aSize.width;
++    mViewportHeight = aSize.height;
++  }
++
+   // WebIDL
+   already_AddRefed<SVGAnimatedRect> ViewBox();
+   already_AddRefed<DOMSVGAnimatedPreserveAspectRatio> PreserveAspectRatio();
+diff --git dom/svg/nsSVGElement.cpp dom/svg/nsSVGElement.cpp
+index 8757150c5925..a8aaa2fb5274 100644
+--- dom/svg/nsSVGElement.cpp
++++ dom/svg/nsSVGElement.cpp
+@@ -1107,7 +1107,20 @@ nsSVGElement::GetOwnerSVGElement(nsIDOMSVGElement * *aOwnerSVGElement)
+ SVGSVGElement*
+ nsSVGElement::GetOwnerSVGElement()
+ {
+-  return GetCtx(); // this may return nullptr
++  nsIContent* ancestor = GetFlattenedTreeParent();
++
++  while (ancestor && ancestor->IsSVGElement()) {
++    if (ancestor->IsSVGElement(nsGkAtoms::foreignObject)) {
++      return nullptr;
++    }
++    if (ancestor->IsSVGElement(nsGkAtoms::svg)) {
++      return static_cast<SVGSVGElement*>(ancestor);
++    }
++    ancestor = ancestor->GetFlattenedTreeParent();
++  }
++
++  // we don't have an ancestor <svg> element...
++  return nullptr;
+ }
+ 
+ NS_IMETHODIMP
+@@ -1543,23 +1556,10 @@ nsIAtom* nsSVGElement::GetEventNameForAttr(nsIAtom* aAttr)
+   return aAttr;
+ }
+ 
+-SVGSVGElement *
++SVGViewportElement *
+ nsSVGElement::GetCtx() const
+ {
+-  nsIContent* ancestor = GetFlattenedTreeParent();
+-
+-  while (ancestor && ancestor->IsSVGElement()) {
+-    if (ancestor->IsSVGElement(nsGkAtoms::foreignObject)) {
+-      return nullptr;
+-    }
+-    if (ancestor->IsSVGElement(nsGkAtoms::svg)) {
+-      return static_cast<SVGSVGElement*>(ancestor);
+-    }
+-    ancestor = ancestor->GetFlattenedTreeParent();
+-  }
+-
+-  // we don't have an ancestor <svg> element...
+-  return nullptr;
++  return SVGContentUtils::GetNearestViewportElement(this);
+ }
+ 
+ /* virtual */ gfxMatrix
+@@ -1658,7 +1658,7 @@ nsSVGElement::GetAnimatedLengthValues(float *aFirst, ...)
+   NS_ASSERTION(info.mLengthCount > 0,
+                "GetAnimatedLengthValues on element with no length attribs");
+ 
+-  SVGSVGElement *ctx = nullptr;
++  SVGViewportElement *ctx = nullptr;
+ 
+   float *f = aFirst;
+   uint32_t i = 0;
+diff --git dom/svg/nsSVGElement.h dom/svg/nsSVGElement.h
+index 28c46188d4e4..955a327561d3 100644
+--- dom/svg/nsSVGElement.h
++++ dom/svg/nsSVGElement.h
+@@ -44,6 +44,7 @@ class DeclarationBlock;
+ 
+ namespace dom {
+ class SVGSVGElement;
++class SVGViewportElement;
+ 
+ static const unsigned short SVG_UNIT_TYPE_UNKNOWN           = 0;
+ static const unsigned short SVG_UNIT_TYPE_USERSPACEONUSE    = 1;
+@@ -145,7 +146,7 @@ public:
+   // Gets the element that establishes the rectangular viewport against which
+   // we should resolve percentage lengths (our "coordinate context"). Returns
+   // nullptr for outer <svg> or SVG without an <svg> parent (invalid SVG).
+-  mozilla::dom::SVGSVGElement* GetCtx() const;
++  mozilla::dom::SVGViewportElement* GetCtx() const;
+ 
+   /**
+    * Returns aMatrix pre-multiplied by (explicit or implicit) transforms that
+diff --git layout/base/nsLayoutUtils.cpp layout/base/nsLayoutUtils.cpp
+index f5ca2719e333..7f3f5354befc 100644
+--- layout/base/nsLayoutUtils.cpp
++++ layout/base/nsLayoutUtils.cpp
+@@ -120,7 +120,7 @@
+ #include "mozilla/StyleSetHandle.h"
+ #include "mozilla/StyleSetHandleInlines.h"
+ #include "RegionBuilder.h"
+-#include "SVGSVGElement.h"
++#include "SVGViewportElement.h"
+ #include "DisplayItemClip.h"
+ #include "mozilla/layers/WebRenderLayerManager.h"
+ #include "prenv.h"
+@@ -9479,7 +9479,7 @@ ComputeSVGReferenceRect(nsIFrame* aFrame,
+     case StyleGeometryBox::ViewBox: {
+       nsIContent* content = aFrame->GetContent();
+       nsSVGElement* element = static_cast<nsSVGElement*>(content);
+-      SVGSVGElement* svgElement = element->GetCtx();
++      SVGViewportElement* svgElement = element->GetCtx();
+       MOZ_ASSERT(svgElement);
+ 
+       if (svgElement && svgElement->HasViewBoxRect()) {
+diff --git layout/reftests/svg/reftest.list layout/reftests/svg/reftest.list
+index 2d3981f0b65e..0b96144724bb 100644
+--- layout/reftests/svg/reftest.list
++++ layout/reftests/svg/reftest.list
+@@ -532,6 +532,7 @@ fuzzy-if(skiaContent,1,100) == tspan-xy-anchor-end-01.svg tspan-xy-anchor-end-re
+ == viewBox-and-pattern-02.svg pass.svg
+ == viewBox-and-pattern-03.svg pass.svg
+ == viewBox-and-pattern-04.svg pass.svg
++== viewBox-and-symbol-01.svg pass.svg
+ == viewBox-invalid-01.svg pass.svg
+ == viewBox-invalid-02.svg pass.svg
+ == viewBox-valid-01.svg pass.svg
+diff --git layout/reftests/svg/viewBox-and-symbol-01.svg layout/reftests/svg/viewBox-and-symbol-01.svg
+new file mode 100644
+index 000000000000..5c8ebf7bc3ea
+--- /dev/null
++++ layout/reftests/svg/viewBox-and-symbol-01.svg
+@@ -0,0 +1,14 @@
++<svg xmlns="http://www.w3.org/2000/svg">;
++  <defs>
++    <symbol id="mySymbol" viewBox="0 0 20 20">
++      <rect fill="lime" x="50%" height="20px" width="3%"/>
++    </symbol>
++  </defs>
++  <rect width="100%" height="100%" fill="lime"/>
++  <svg viewBox="0 0 20 20">
++    <rect fill="red" x="50%" height="20px" width="2%"/>
++  </svg>
++  <svg>
++    <use href="#mySymbol"/>
++  </svg>
++</svg>
+diff --git layout/svg/nsCSSClipPathInstance.cpp layout/svg/nsCSSClipPathInstance.cpp
+index 09d3530c4ef0..0c25f7a21bb8 100644
+--- layout/svg/nsCSSClipPathInstance.cpp
++++ layout/svg/nsCSSClipPathInstance.cpp
+@@ -9,7 +9,6 @@
+ #include "gfx2DGlue.h"
+ #include "gfxContext.h"
+ #include "gfxPlatform.h"
+-#include "mozilla/dom/SVGSVGElement.h"
+ #include "mozilla/gfx/2D.h"
+ #include "mozilla/gfx/PathHelpers.h"
+ #include "mozilla/ShapeUtils.h"
+diff --git layout/svg/nsSVGImageFrame.cpp layout/svg/nsSVGImageFrame.cpp
+index 074415854667..21834954721d 100644
+--- layout/svg/nsSVGImageFrame.cpp
++++ layout/svg/nsSVGImageFrame.cpp
+@@ -16,7 +16,6 @@
+ #include "nsLayoutUtils.h"
+ #include "imgINotificationObserver.h"
+ #include "nsSVGEffects.h"
+-#include "mozilla/dom/SVGSVGElement.h"
+ #include "nsSVGUtils.h"
+ #include "SVGContentUtils.h"
+ #include "SVGGeometryFrame.h"
+diff --git layout/svg/nsSVGImageFrame.h layout/svg/nsSVGImageFrame.h
+index b2c90fd6402d..fe0ac33ac02a 100644
+--- layout/svg/nsSVGImageFrame.h
++++ layout/svg/nsSVGImageFrame.h
+@@ -17,7 +17,6 @@
+ #include "nsLayoutUtils.h"
+ #include "imgINotificationObserver.h"
+ #include "nsSVGEffects.h"
+-#include "mozilla/dom/SVGSVGElement.h"
+ #include "nsSVGUtils.h"
+ #include "SVGContentUtils.h"
+ #include "SVGGeometryFrame.h"
+diff --git layout/svg/nsSVGMarkerFrame.cpp layout/svg/nsSVGMarkerFrame.cpp
+index dbeb02ea5b2d..365a0aa70a26 100644
+--- layout/svg/nsSVGMarkerFrame.cpp
++++ layout/svg/nsSVGMarkerFrame.cpp
+@@ -194,7 +194,7 @@ nsSVGMarkerFrame::GetMarkBBoxContribution(const Matrix& aToBBoxUserspace,
+ }
+ 
+ void
+-nsSVGMarkerFrame::SetParentCoordCtxProvider(SVGSVGElement *aContext)
++nsSVGMarkerFrame::SetParentCoordCtxProvider(SVGViewportElement *aContext)
+ {
+   SVGMarkerElement *marker = static_cast<SVGMarkerElement*>(mContent);
+   marker->SetParentCoordCtxProvider(aContext);
+@@ -219,7 +219,7 @@ nsSVGMarkerFrame::AutoMarkerReferencer::AutoMarkerReferencer(
+   mFrame->mInUse = true;
+   mFrame->mMarkedFrame = aMarkedFrame;
+ 
+-  SVGSVGElement *ctx =
++  SVGViewportElement *ctx =
+     static_cast<nsSVGElement*>(aMarkedFrame->GetContent())->GetCtx();
+   mFrame->SetParentCoordCtxProvider(ctx);
+ }
+diff --git layout/svg/nsSVGMarkerFrame.h layout/svg/nsSVGMarkerFrame.h
+index 95415e6dcc21..03099eab9324 100644
+--- layout/svg/nsSVGMarkerFrame.h
++++ layout/svg/nsSVGMarkerFrame.h
+@@ -20,7 +20,7 @@ class gfxContext;
+ namespace mozilla {
+ class SVGGeometryFrame;
+ namespace dom {
+-class SVGSVGElement;
++class SVGViewportElement;
+ } // namespace dom
+ } // namespace mozilla
+ 
+@@ -119,7 +119,7 @@ private:
+   };
+ 
+   // nsSVGMarkerFrame methods:
+-  void SetParentCoordCtxProvider(mozilla::dom::SVGSVGElement *aContext);
++  void SetParentCoordCtxProvider(mozilla::dom::SVGViewportElement *aContext);
+ 
+   // recursion prevention flag
+   bool mInUse;
+diff --git layout/svg/nsSVGPatternFrame.cpp layout/svg/nsSVGPatternFrame.cpp
+index 488ac2f5c783..5078fb1b5a31 100644
+--- layout/svg/nsSVGPatternFrame.cpp
++++ layout/svg/nsSVGPatternFrame.cpp
+@@ -660,7 +660,7 @@ nsSVGPatternFrame::ConstructCTM(const nsSVGViewBox& aViewBox,
+                                 const Matrix &callerCTM,
+                                 nsIFrame *aTarget)
+ {
+-  SVGSVGElement *ctx = nullptr;
++  SVGViewportElement *ctx = nullptr;
+   nsIContent* targetContent = aTarget->GetContent();
+   gfxFloat scaleX, scaleY;
+ 
+diff --git layout/svg/nsSVGUtils.cpp layout/svg/nsSVGUtils.cpp
+index d53a3ede0be7..f21c23491285 100644
+--- layout/svg/nsSVGUtils.cpp
++++ layout/svg/nsSVGUtils.cpp
+@@ -49,7 +49,7 @@
+ #include "SVGGeometryElement.h"
+ #include "SVGGeometryFrame.h"
+ #include "nsSVGPaintServerFrame.h"
+-#include "mozilla/dom/SVGSVGElement.h"
++#include "mozilla/dom/SVGViewportElement.h"
+ #include "nsTextFrame.h"
+ #include "SVGContentUtils.h"
+ #include "SVGTextFrame.h"
+@@ -290,7 +290,7 @@ nsSVGUtils::GetContextSize(const nsIFrame* aFrame)
+   MOZ_ASSERT(aFrame->GetContent()->IsSVGElement(), "bad cast");
+   const nsSVGElement* element = static_cast<nsSVGElement*>(aFrame->GetContent());
+ 
+-  SVGSVGElement* ctx = element->GetCtx();
++  SVGViewportElement* ctx = element->GetCtx();
+   if (ctx) {
+     size.width = ctx->GetLength(SVGContentUtils::X);
+     size.height = ctx->GetLength(SVGContentUtils::Y);
+@@ -323,7 +323,7 @@ nsSVGUtils::ObjectSpace(const gfxRect &aRect, const nsSVGLength2 *aLength)
+     // Multiply first to avoid precision errors:
+     return axis * aLength->GetAnimValInSpecifiedUnits() / 100;
+   }
+-  return aLength->GetAnimValue(static_cast<SVGSVGElement*>(nullptr)) * axis;
++  return aLength->GetAnimValue(static_cast<SVGViewportElement*>(nullptr)) * axis;
+ }
+ 
+ float

Added: head/www/waterfox/files/patch-bug1400674
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1400674	Mon Feb  5 23:47:58 2018	(r461026)
@@ -0,0 +1,70 @@
+commit c08bea16ab67 (HEAD)
+Author: JW Wang <jwwang@mozilla.com>
+Date:   Fri Oct 13 17:24:24 2017 +0800
+
+    Bug 1400674 - Fix the algorithm of filling audio gaps with silence. r=jya, a=ritu
+    
+    MozReview-Commit-ID: Hjsboq6PdlN
+    
+    --HG--
+    extra : source : aecaa85bb1d9d8b7d2cbd9ab84eb6dbc0ed9eee8
+---
+ dom/media/mediasink/AudioSink.cpp | 37 +++++++++++++++----------------------
+ 1 file changed, 15 insertions(+), 22 deletions(-)
+
+diff --git dom/media/mediasink/AudioSink.cpp dom/media/mediasink/AudioSink.cpp
+index 0dbb53a3387a..81be7ac0bd89 100644
+--- dom/media/mediasink/AudioSink.cpp
++++ dom/media/mediasink/AudioSink.cpp
+@@ -426,28 +426,21 @@ AudioSink::NotifyAudioNeeded()
+       missingFrames = std::min<int64_t>(INT32_MAX, missingFrames.value());
+       mFramesParsed += missingFrames.value();
+ 
+-      // We need to calculate how many frames are missing at the output rate.
+-      missingFrames =
+-        SaferMultDiv(missingFrames.value(), mOutputRate, data->mRate);
+-      if (!missingFrames.isValid()) {
+-        NS_WARNING("Int overflow in AudioSink");
+-        mErrored = true;
+-        return;
+-      }
+-
+-      // We need to insert silence, first use drained frames if any.
+-      missingFrames -= DrainConverter(missingFrames.value());
+-      // Insert silence if still needed.
+-      if (missingFrames.value()) {
+-        AlignedAudioBuffer silenceData(missingFrames.value() * mOutputChannels);
+-        if (!silenceData) {
+-          NS_WARNING("OOM in AudioSink");
+-          mErrored = true;
+-          return;
+-        }
+-        RefPtr<AudioData> silence = CreateAudioFromBuffer(Move(silenceData), data);
+-        PushProcessedAudio(silence);
++      RefPtr<AudioData> silenceData;
++      AlignedAudioBuffer silenceBuffer(missingFrames.value() * data->mChannels);
++       if (!silenceBuffer) {
++         NS_WARNING("OOM in AudioSink");
++         mErrored = true;
++         return;
++       }
++      if (mConverter->InputConfig() != mConverter->OutputConfig()) {
++        AlignedAudioBuffer convertedData =
++          mConverter->Process(AudioSampleBuffer(Move(silenceBuffer))).Forget();
++        silenceData = CreateAudioFromBuffer(Move(convertedData), data);
++      } else {
++        silenceData = CreateAudioFromBuffer(Move(silenceBuffer), data);
+       }
++      PushProcessedAudio(silenceData);
+     }
+ 
+     mLastEndTime = data->GetEndTime();
+@@ -488,7 +481,7 @@ AudioSink::PushProcessedAudio(AudioData* aData)
+ 
+ already_AddRefed<AudioData>
+ AudioSink::CreateAudioFromBuffer(AlignedAudioBuffer&& aBuffer,
+-                                            AudioData* aReference)
++                                 AudioData* aReference)
+ {
+   uint32_t frames = aBuffer.Length() / mOutputChannels;
+   if (!frames) {

Added: head/www/waterfox/files/patch-bug1401522
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1401522	Mon Feb  5 23:47:58 2018	(r461026)
@@ -0,0 +1,34 @@
+commit e9d4b51968e0
+Author: Samael Wang <freesamael@gmail.com>
+Date:   Thu Sep 28 11:16:53 2017 +0800
+
+    Bug 1401522 - Don't apply statusCode sent from parent if mCanceled or mStatus has been modified in the child. r=mayhemer, a=ritu
+    
+    When a WyciwygChannel is canceled, but WyciwygChannelParent::RecvCancel happens
+    after WyciwygChannelParent::SendOnStartRequest, it would send statusCode=NS_OK
+    to WyciwygChannelChild::OnStartRequest. So we should not apply the statusCode
+    if mCanceled, just like how HttpChannelChild handles it.
+    
+    MozReview-Commit-ID: 5H3PUrlArIA
+    
+    --HG--
+    extra : source : 8ebfa90c4ebca44ac1c3829ef54de74d3b004dfc
+---
+ netwerk/protocol/wyciwyg/WyciwygChannelChild.cpp | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git netwerk/protocol/wyciwyg/WyciwygChannelChild.cpp netwerk/protocol/wyciwyg/WyciwygChannelChild.cpp
+index d14b6f925e37..85d3ebf24439 100644
+--- netwerk/protocol/wyciwyg/WyciwygChannelChild.cpp
++++ netwerk/protocol/wyciwyg/WyciwygChannelChild.cpp
+@@ -191,7 +191,9 @@ WyciwygChannelChild::OnStartRequest(const nsresult& statusCode,
+ 
+   mState = WCC_ONSTART;
+ 
+-  mStatus = statusCode;
++  if (!mCanceled && NS_SUCCEEDED(mStatus)) {
++    mStatus = statusCode;
++  }
+   mContentLength = contentLength;
+   mCharsetSource = source;
+   mCharset = charset;

Added: head/www/waterfox/files/patch-bug1401876
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1401876	Mon Feb  5 23:47:58 2018	(r461026)
@@ -0,0 +1,48 @@
+commit 09ba71b3a5e9
+Author: Scott Wu <scottcwwu@gmail.com>
+Date:   Thu Sep 21 15:37:25 2017 +0800
+
+    Bug 1401876 - Part 1: Close datetime picker on popuphidden. r=mconley, a=ritu
+    
+    MozReview-Commit-ID: FUqbtAftQxh
+    
+    --HG--
+    extra : source : e238860e4943cd1bb4c2c5f7175a36d494f0e91b
+---
+ toolkit/content/tests/browser/head.js     | 1 +
+ toolkit/content/widgets/datetimepopup.xml | 2 +-
+ toolkit/modules/DateTimePickerHelper.jsm  | 1 +
+ 3 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git toolkit/content/widgets/datetimepopup.xml toolkit/content/widgets/datetimepopup.xml
+index 7e4e5bcfe4e8..7397e1d310d4 100644
+--- toolkit/content/widgets/datetimepopup.xml
++++ toolkit/content/widgets/datetimepopup.xml
+@@ -75,7 +75,6 @@
+           this.dateTimePopupFrame.removeEventListener("load", this, true);
+           this.dateTimePopupFrame.contentDocument.removeEventListener("message", this);
+           this.dateTimePopupFrame.setAttribute("src", "");
+-          this.hidePopup();
+           this.hidden = true;
+         ]]></body>
+       </method>
+@@ -320,6 +319,7 @@
+               break;
+             }
+             case "ClosePopup": {
++              this.hidePopup();
+               this.closePicker();
+               break;
+             }
+diff --git toolkit/modules/DateTimePickerHelper.jsm toolkit/modules/DateTimePickerHelper.jsm
+index ced4e401815b..38e89bd0d160 100644
+--- toolkit/modules/DateTimePickerHelper.jsm
++++ toolkit/modules/DateTimePickerHelper.jsm
+@@ -90,6 +90,7 @@ this.DateTimePickerHelper = {

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201802052347.w15Nlw9r060040>