svn commit: r461026 - in head/www/waterfox: . files
Jan Beich
jbeich at FreeBSD.org
Mon Feb 5 23:48:01 UTC 2018
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 at 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 at 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 at 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 at 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 at 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>
++ at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 ***
More information about the svn-ports-all
mailing list