aboutsummaryrefslogtreecommitdiff
path: root/www
diff options
context:
space:
mode:
authorJan Beich <jbeich@FreeBSD.org>2018-03-20 00:51:05 +0000
committerJan Beich <jbeich@FreeBSD.org>2018-03-20 00:51:05 +0000
commitcce06c1c83adc96850163fb42efcfcd6f6ccc611 (patch)
tree2e1279a7c10cc8328fb6a3c7b3f9fbd0606da285 /www
parent577174df411ca2ee1908b5485b15303742fac4d1 (diff)
downloadports-cce06c1c83adc96850163fb42efcfcd6f6ccc611.tar.gz
ports-cce06c1c83adc96850163fb42efcfcd6f6ccc611.zip
MFH: r465044
www/waterfox: update to 56.0.4.72 Changes: https://github.com/MrAlex94/Waterfox/compare/79492ecca478...a9c77bbb9f25 Approved by: ports-secteam blanket
Notes
Notes: svn path=/branches/2018Q1/; revision=465047
Diffstat (limited to 'www')
-rw-r--r--www/waterfox/Makefile7
-rw-r--r--www/waterfox/distinfo6
-rw-r--r--www/waterfox/files/patch-bug1366357141
-rw-r--r--www/waterfox/files/patch-bug1404297260
-rw-r--r--www/waterfox/files/patch-bug1414768325
-rw-r--r--www/waterfox/files/patch-bug141652346
-rw-r--r--www/waterfox/files/patch-bug1419166144
-rw-r--r--www/waterfox/files/patch-bug142264380
-rw-r--r--www/waterfox/files/patch-bug142317343
-rw-r--r--www/waterfox/files/patch-bug142426166
-rw-r--r--www/waterfox/files/patch-bug1425257216
-rw-r--r--www/waterfox/files/patch-bug142600234
-rw-r--r--www/waterfox/files/patch-bug142894790
-rw-r--r--www/waterfox/files/patch-bug1429093135
-rw-r--r--www/waterfox/files/patch-bug143133634
-rw-r--r--www/waterfox/files/patch-bug143300552
-rw-r--r--www/waterfox/files/patch-bug143556627
-rw-r--r--www/waterfox/files/patch-bug144077548
-rw-r--r--www/waterfox/files/patch-bug1441006109
-rw-r--r--www/waterfox/files/patch-bug1446062177
-rw-r--r--www/waterfox/files/patch-typos30
-rw-r--r--www/waterfox/pkg-descr1
22 files changed, 36 insertions, 2035 deletions
diff --git a/www/waterfox/Makefile b/www/waterfox/Makefile
index 1ae510d87fac..9218fcdf979f 100644
--- a/www/waterfox/Makefile
+++ b/www/waterfox/Makefile
@@ -1,16 +1,15 @@
# $FreeBSD$
PORTNAME= waterfox
-DISTVERSION= 56.0.4-36
-DISTVERSIONSUFFIX= -g79492ecca478
-PORTREVISION= 3
+DISTVERSION= 56.0.4-72
+DISTVERSIONSUFFIX= -ga9c77bbb9f25
CATEGORIES= www ipv6
MAINTAINER= jbeich@FreeBSD.org
COMMENT= Distilled fork of Firefox
DEPRECATED= Temporary experiment
-EXPIRATION_DATE=2018-03-20
+EXPIRATION_DATE=2018-05-16
BUILD_DEPENDS= nspr>=4.16:devel/nspr \
nss>=3.32.1:security/nss \
diff --git a/www/waterfox/distinfo b/www/waterfox/distinfo
index 5ebef2dd2aa3..a8af16eb85d7 100644
--- a/www/waterfox/distinfo
+++ b/www/waterfox/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1520292096
-SHA256 (MrAlex94-Waterfox-56.0.4-36-g79492ecca478_GH0.tar.gz) = c2cf8dc823e9c66976fd4abaa6a308b605706f3b0b740474a65802fe587ea90e
-SIZE (MrAlex94-Waterfox-56.0.4-36-g79492ecca478_GH0.tar.gz) = 394042441
+TIMESTAMP = 1521489939
+SHA256 (MrAlex94-Waterfox-56.0.4-72-ga9c77bbb9f25_GH0.tar.gz) = 5f492fa42d46cb90c06ac7129a28afff7b979170f13461747deffd77faa03bb4
+SIZE (MrAlex94-Waterfox-56.0.4-72-ga9c77bbb9f25_GH0.tar.gz) = 394039973
diff --git a/www/waterfox/files/patch-bug1366357 b/www/waterfox/files/patch-bug1366357
deleted file mode 100644
index f625b568da32..000000000000
--- a/www/waterfox/files/patch-bug1366357
+++ /dev/null
@@ -1,141 +0,0 @@
-commit 15353262e8f3
-Author: Johann Hofmann <jhofmann@mozilla.com>
-Date: Tue Jun 13 12:10:39 2017 +0200
-
- Bug 1366357 - Use origin instead of documentURI for WebRTC permission requests. r=florian
-
- MozReview-Commit-ID: IkccA65Ma3a
-
- --HG--
- extra : rebase_source : 9c1f2c895949b1dae617b0c2a1039a5494cd8b2a
----
- .../test/popupNotifications/browser_displayURI.js | 79 ++++++++++++++++++----
- browser/modules/ContentWebRTC.jsm | 1 +
- browser/modules/webrtcUI.jsm | 8 ++-
- 3 files changed, 73 insertions(+), 15 deletions(-)
-
-diff --git browser/base/content/test/popupNotifications/browser_displayURI.js browser/base/content/test/popupNotifications/browser_displayURI.js
-index 10a8199dab54..df2bfb54fe25 100644
---- browser/base/content/test/popupNotifications/browser_displayURI.js
-+++ browser/base/content/test/popupNotifications/browser_displayURI.js
-@@ -1,19 +1,11 @@
- /*
-- * Make sure that the origin is shown for ContentPermissionPrompt
-- * consumers e.g. geolocation.
--*/
--
--add_task(async function test_displayURI() {
-- await BrowserTestUtils.withNewTab({
-- gBrowser,
-- url: "https://test1.example.com/",
-- }, async function(browser) {
-+ * Make sure that the correct origin is shown for permission prompts.
-+ */
-+
-+async function check(contentTask) {
-+ await BrowserTestUtils.withNewTab("https://test1.example.com/", async function(browser) {
- let popupShownPromise = waitForNotificationPanel();
-- await ContentTask.spawn(browser, null, async function() {
-- content.navigator.geolocation.getCurrentPosition(function(pos) {
-- // Do nothing
-- });
-- });
-+ await ContentTask.spawn(browser, null, contentTask);
- let panel = await popupShownPromise;
- let notification = panel.children[0];
- let body = document.getAnonymousElementByAttribute(notification,
-@@ -21,4 +13,63 @@ add_task(async function test_displayURI() {
- "popup-notification-body");
- ok(body.innerHTML.includes("example.com"), "Check that at least the eTLD+1 is present in the markup");
- });
-+
-+ let channel = NetUtil.newChannel({
-+ uri: getRootDirectory(gTestPath),
-+ loadUsingSystemPrincipal: true,
-+ });
-+ channel = channel.QueryInterface(Ci.nsIFileChannel);
-+
-+ return BrowserTestUtils.withNewTab(channel.file.path, async function(browser) {
-+ let popupShownPromise = waitForNotificationPanel();
-+ await ContentTask.spawn(browser, null, contentTask);
-+ let panel = await popupShownPromise;
-+ let notification = panel.children[0];
-+ let body = document.getAnonymousElementByAttribute(notification,
-+ "class",
-+ "popup-notification-body");
-+ if (notification.id == "geolocation-notification") {
-+ ok(body.innerHTML.includes("local file"), `file:// URIs should be displayed as local file.`);
-+ } else {
-+ ok(body.innerHTML.includes("Unknown origin"), "file:// URIs should be displayed as unknown origin.");
-+ }
-+ });
-+}
-+
-+add_task(async function setup() {
-+ await SpecialPowers.pushPrefEnv({set: [
-+ ["media.navigator.permission.fake", true],
-+ ["media.navigator.permission.force", true],
-+ ]});
- });
-+
-+add_task(async function test_displayURI_geo() {
-+ await check(async function() {
-+ content.navigator.geolocation.getCurrentPosition(() => {});
-+ });
-+});
-+
-+add_task(async function test_displayURI_camera() {
-+ await check(async function() {
-+ content.navigator.mediaDevices.getUserMedia({video: true, fake: true});
-+ });
-+});
-+
-+add_task(async function test_displayURI_geo_blob() {
-+ await check(async function() {
-+ let text = "<script>navigator.geolocation.getCurrentPosition(() => {})</script>";
-+ let blob = new Blob([text], {type: "text/html"});
-+ let url = content.URL.createObjectURL(blob);
-+ content.location.href = url;
-+ });
-+});
-+
-+add_task(async function test_displayURI_camera_blob() {
-+ await check(async function() {
-+ let text = "<script>navigator.mediaDevices.getUserMedia({video: true, fake: true})</script>";
-+ let blob = new Blob([text], {type: "text/html"});
-+ let url = content.URL.createObjectURL(blob);
-+ content.location.href = url;
-+ });
-+});
-+
-diff --git browser/modules/ContentWebRTC.jsm browser/modules/ContentWebRTC.jsm
-index f717f6abbc0a..1cbe0832cba1 100644
---- browser/modules/ContentWebRTC.jsm
-+++ browser/modules/ContentWebRTC.jsm
-@@ -216,6 +216,7 @@ function prompt(aContentWindow, aWindowID, aCallID, aConstraints, aDevices, aSec
- let request = {
- callID: aCallID,
- windowID: aWindowID,
-+ origin: aContentWindow.origin,
- documentURI: aContentWindow.document.documentURI,
- secure: aSecure,
- requestTypes,
-diff --git browser/modules/webrtcUI.jsm browser/modules/webrtcUI.jsm
-index 6bc97eb7305c..3efdf946352b 100644
---- browser/modules/webrtcUI.jsm
-+++ browser/modules/webrtcUI.jsm
-@@ -368,7 +368,13 @@ function prompt(aBrowser, aRequest) {
- aBrowser.dispatchEvent(new aBrowser.ownerGlobal
- .CustomEvent("PermissionStateChange"));
-
-- let uri = Services.io.newURI(aRequest.documentURI);
-+ let uri;
-+ try {
-+ // This fails for principals that serialize to "null", e.g. file URIs.
-+ uri = Services.io.newURI(aRequest.origin);
-+ } catch (e) {
-+ uri = Services.io.newURI(aRequest.documentURI);
-+ }
- let host = getHost(uri);
- let chromeDoc = aBrowser.ownerDocument;
- let stringBundle = chromeDoc.defaultView.gNavigatorBundle;
diff --git a/www/waterfox/files/patch-bug1404297 b/www/waterfox/files/patch-bug1404297
deleted file mode 100644
index 77c904f69fe1..000000000000
--- a/www/waterfox/files/patch-bug1404297
+++ /dev/null
@@ -1,260 +0,0 @@
-commit 586e13b2b708
-Author: Blake Kaplan <mrbkap@gmail.com>
-Date: Wed Jan 10 18:48:26 2018 -0500
-
- Bug 1404297 - Temporarily assert that we don't re-enter this function. r=bzbarsky
-
- MozReview-Commit-ID: FoQGVDWtwN1
-
- --HG--
- extra : rebase_source : c22cc3a022dc01923696940fc0b0aae708232db0
----
- dom/base/nsDocument.cpp | 8 ++------
- dom/base/nsIDocument.h | 2 --
- 2 files changed, 2 insertions(+), 8 deletions(-)
-
-diff --git dom/base/nsDocument.cpp dom/base/nsDocument.cpp
-index 1b98f94341c2..ad08c02d51dc 100644
---- dom/base/nsDocument.cpp
-+++ dom/base/nsDocument.cpp
-@@ -1496,9 +1496,7 @@ nsIDocument::nsIDocument()
- mType(eUnknown),
- mDefaultElementType(0),
- mAllowXULXBL(eTriUnset),
--#ifdef DEBUG
- mIsLinkUpdateRegistrationsForbidden(false),
--#endif
- mBidiOptions(IBMBIDI_DEFAULT_BIDI_OPTIONS),
- mSandboxFlags(0),
- mPartID(0),
-@@ -10117,7 +10115,7 @@ nsIDocument::EnumerateActivityObservers(ActivityObserverEnumerator aEnumerator,
- void
- nsIDocument::RegisterPendingLinkUpdate(Link* aLink)
- {
-- MOZ_ASSERT(!mIsLinkUpdateRegistrationsForbidden);
-+ MOZ_RELEASE_ASSERT(!mIsLinkUpdateRegistrationsForbidden);
-
- if (aLink->HasPendingLinkUpdate()) {
- return;
-@@ -10156,14 +10154,12 @@ nsIDocument::FlushPendingLinkUpdatesFromRunnable()
- void
- nsIDocument::FlushPendingLinkUpdates()
- {
-- MOZ_ASSERT(!mIsLinkUpdateRegistrationsForbidden);
-+ MOZ_RELEASE_ASSERT(!mIsLinkUpdateRegistrationsForbidden);
- if (!mHasLinksToUpdate)
- return;
-
--#ifdef DEBUG
- AutoRestore<bool> saved(mIsLinkUpdateRegistrationsForbidden);
- mIsLinkUpdateRegistrationsForbidden = true;
--#endif
- for (auto iter = mLinksToUpdate.Iter(); !iter.Done(); iter.Next()) {
- Link* link = iter.Get();
- Element* element = link->GetElement();
-diff --git dom/base/nsIDocument.h dom/base/nsIDocument.h
-index f0a3a32ede08..59deb3289f56 100644
---- dom/base/nsIDocument.h
-+++ dom/base/nsIDocument.h
-@@ -3621,13 +3621,11 @@ protected:
-
- Tri mAllowXULXBL;
-
--#ifdef DEBUG
- /**
- * This is true while FlushPendingLinkUpdates executes. Calls to
- * [Un]RegisterPendingLinkUpdate will assert when this is true.
- */
- bool mIsLinkUpdateRegistrationsForbidden;
--#endif
-
- // The document's script global object, the object from which the
- // document can get its script context and scope. This is the
-commit 75a57d01385d
-Author: Blake Kaplan <mrbkap@gmail.com>
-Date: Thu Mar 1 11:26:54 2018 -0800
-
- Bug 1404297 - Change the way we iterate over our links to update. r=smaug, a=RyanVM
-
- MozReview-Commit-ID: BTADrB9itjh
-
- --HG--
- extra : source : 3ce55799da20fcf99ceb7a209db65b2830f38630
- extra : histedit_source : 413764b6db689b36ed74b176c382cd3600f05a77
----
- dom/base/nsDocument.cpp | 36 +++++++++++++++++-------------------
- dom/base/nsIDocument.h | 23 ++++++++++-------------
- 2 files changed, 27 insertions(+), 32 deletions(-)
-
-diff --git dom/base/nsDocument.cpp dom/base/nsDocument.cpp
-index 3045f0f20ef2..336670b96c76 100644
---- dom/base/nsDocument.cpp
-+++ dom/base/nsDocument.cpp
-@@ -1450,8 +1450,8 @@ nsIDocument::nsIDocument()
- mHasHadScriptHandlingObject(false),
- mIsBeingUsedAsImage(false),
- mIsSyntheticDocument(false),
-- mHasLinksToUpdate(false),
- mHasLinksToUpdateRunnable(false),
-+ mFlushingPendingLinkUpdates(false),
- mMayHaveDOMMutationObservers(false),
- mMayHaveAnimationObservers(false),
- mHasMixedActiveContentLoaded(false),
-@@ -1496,7 +1496,6 @@ nsIDocument::nsIDocument()
- mType(eUnknown),
- mDefaultElementType(0),
- mAllowXULXBL(eTriUnset),
-- mIsLinkUpdateRegistrationsForbidden(false),
- mBidiOptions(IBMBIDI_DEFAULT_BIDI_OPTIONS),
- mSandboxFlags(0),
- mPartID(0),
-@@ -10017,15 +10016,13 @@ nsIDocument::EnumerateActivityObservers(ActivityObserverEnumerator aEnumerator,
- void
- nsIDocument::RegisterPendingLinkUpdate(Link* aLink)
- {
-- MOZ_RELEASE_ASSERT(!mIsLinkUpdateRegistrationsForbidden);
--
- if (aLink->HasPendingLinkUpdate()) {
- return;
- }
-
- aLink->SetHasPendingLinkUpdate();
-
-- if (!mHasLinksToUpdateRunnable) {
-+ if (!mHasLinksToUpdateRunnable && !mFlushingPendingLinkUpdates) {
- nsCOMPtr<nsIRunnable> event =
- NewRunnableMethod("nsIDocument::FlushPendingLinkUpdatesFromRunnable",
- this,
-@@ -10042,7 +10039,6 @@ nsIDocument::RegisterPendingLinkUpdate(Link* aLink)
- }
-
- mLinksToUpdate.InfallibleAppend(aLink);
-- mHasLinksToUpdate = true;
- }
-
- void
-@@ -10056,24 +10052,26 @@ nsIDocument::FlushPendingLinkUpdatesFromRunnable()
- void
- nsIDocument::FlushPendingLinkUpdates()
- {
-- MOZ_RELEASE_ASSERT(!mIsLinkUpdateRegistrationsForbidden);
-- if (!mHasLinksToUpdate)
-+ if (mFlushingPendingLinkUpdates) {
- return;
-+ }
-
-- AutoRestore<bool> saved(mIsLinkUpdateRegistrationsForbidden);
-- mIsLinkUpdateRegistrationsForbidden = true;
-- for (auto iter = mLinksToUpdate.Iter(); !iter.Done(); iter.Next()) {
-- Link* link = iter.Get();
-- Element* element = link->GetElement();
-- if (element->OwnerDoc() == this) {
-- link->ClearHasPendingLinkUpdate();
-- if (element->IsInComposedDoc()) {
-- element->UpdateLinkState(link->LinkState());
-+ auto restore = MakeScopeExit([&] { mFlushingPendingLinkUpdates = false; });
-+ mFlushingPendingLinkUpdates = true;
-+
-+ while (!mLinksToUpdate.IsEmpty()) {
-+ LinksToUpdateList links(Move(mLinksToUpdate));
-+ for (auto iter = links.Iter(); !iter.Done(); iter.Next()) {
-+ Link* link = iter.Get();
-+ Element* element = link->GetElement();
-+ if (element->OwnerDoc() == this) {
-+ link->ClearHasPendingLinkUpdate();
-+ if (element->IsInComposedDoc()) {
-+ element->UpdateLinkState(link->LinkState());
-+ }
- }
- }
- }
-- mLinksToUpdate.Clear();
-- mHasLinksToUpdate = false;
- }
-
- already_AddRefed<nsIDocument>
-diff --git dom/base/nsIDocument.h dom/base/nsIDocument.h
-index 42e7a07ebf2a..e1c2ea24339d 100644
---- dom/base/nsIDocument.h
-+++ dom/base/nsIDocument.h
-@@ -3353,10 +3353,13 @@ protected:
- // The array of all links that need their status resolved. Links must add themselves
- // to this set by calling RegisterPendingLinkUpdate when added to a document.
- static const size_t kSegmentSize = 128;
-- mozilla::SegmentedVector<nsCOMPtr<mozilla::dom::Link>,
-- kSegmentSize,
-- InfallibleAllocPolicy>
-- mLinksToUpdate;
-+
-+ typedef mozilla::SegmentedVector<nsCOMPtr<mozilla::dom::Link>,
-+ kSegmentSize,
-+ InfallibleAllocPolicy>
-+ LinksToUpdateList;
-+
-+ LinksToUpdateList mLinksToUpdate;
-
- // SMIL Animation Controller, lazily-initialized in GetAnimationController
- RefPtr<nsSMILAnimationController> mAnimationController;
-@@ -3448,12 +3451,12 @@ protected:
- // file, etc.
- bool mIsSyntheticDocument : 1;
-
-- // True if this document has links whose state needs updating
-- bool mHasLinksToUpdate : 1;
--
- // True is there is a pending runnable which will call FlushPendingLinkUpdates().
- bool mHasLinksToUpdateRunnable : 1;
-
-+ // True if we're flushing pending link updates.
-+ bool mFlushingPendingLinkUpdates : 1;
-+
- // True if a DOMMutationObserver is perhaps attached to a node in the document.
- bool mMayHaveDOMMutationObservers : 1;
-
-@@ -3605,12 +3608,6 @@ protected:
-
- Tri mAllowXULXBL;
-
-- /**
-- * This is true while FlushPendingLinkUpdates executes. Calls to
-- * [Un]RegisterPendingLinkUpdate will assert when this is true.
-- */
-- bool mIsLinkUpdateRegistrationsForbidden;
--
- // The document's script global object, the object from which the
- // document can get its script context and scope. This is the
- // *inner* window object.
-commit c22a2a29bde1
-Author: Blake Kaplan <mrbkap@gmail.com>
-Date: Thu Mar 1 11:26:54 2018 -0800
-
- Bug 1404297 - Add a move constructor to SegmentedVector. r=smaug, a=RyanVM
-
- Given that we have a SegmentedVector of nsCOMPtrs, it's probably worth
- avoiding copying it.
-
- MozReview-Commit-ID: GHyfVLrdnlQ
-
- --HG--
- extra : source : 1d53ede1a1d3c1afd847fb50f31aa9ab3e48cc21
- extra : histedit_source : 4f77aeff6b56fffc31af54a5d032588cc4f8c8c0
----
- mfbt/SegmentedVector.h | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git mfbt/SegmentedVector.h mfbt/SegmentedVector.h
-index d1aa9c886c72..923a467f5d68 100644
---- mfbt/SegmentedVector.h
-+++ mfbt/SegmentedVector.h
-@@ -139,6 +139,11 @@ public:
- aIdealSegmentSize - sizeof(Segment) < sizeof(T));
- }
-
-+ SegmentedVector(SegmentedVector&& aOther)
-+ : mSegments(mozilla::Move(aOther.mSegments))
-+ {
-+ }
-+
- ~SegmentedVector() { Clear(); }
-
- bool IsEmpty() const { return !mSegments.getFirst(); }
diff --git a/www/waterfox/files/patch-bug1414768 b/www/waterfox/files/patch-bug1414768
deleted file mode 100644
index a760d8ffaa51..000000000000
--- a/www/waterfox/files/patch-bug1414768
+++ /dev/null
@@ -1,325 +0,0 @@
-commit cb494b100bfb
-Author: Jason Orendorff <jorendorff@mozilla.com>
-Date: Tue Nov 7 16:59:00 2017 -0600
-
- Bug 1414768 - Handle same-compartment wrappers in TypedArray methods. r=bz
-
- CallTypedArrayMethodIfWrapped (and the CallNonGeneric machinery throughout
- the engine) unwraps the `this` argument, but the other arguments are only
- rewrapped for the target compartment.
-
- The pattern being used before this patch to get the length of a TypedArray
- or possible TypedArray wrapper is:
-
- callFunction(CallTypedArrayMethodIfWrapped, O, O, "TypedArrayLength")
-
- The first O is the `this` value and the second is an argument.
- If O is a cross-compartment wrapper, this works fine. The first O is unwrapped,
- revealing the actual TypedArray object; the second O is rewrapped for that
- TypedArray's compartment, producing the same TypedArray.
-
- However, if O is a same-compartment wrapper, this doesn't work. The first O
- is unwrapped, revealing the actual TypedArray object in the same compartment;
- rewrapping the other O does nothing to it, since it is already an object in the
- target compartment. Thus TypedArrayLength receives a `this` value that's an
- unwrapped TypedArray, but an argument that is still a wrapper.
-
- The fix is to have CallTypedArrayMethodIfWrapped targets only expect `this`
- to be an unwrapped TypedArray.
-
- --HG--
- extra : rebase_source : 468453beebc9e48dcbc63162f400069a11f413b9
----
- js/src/builtin/TypedArray.js | 73 ++++++++++------------
- .../jit-test/tests/proxy/testWrapWithProtoIter.js | 1 +
- .../tests/proxy/testWrapWithProtoTypedArray.js | 19 ++++++
- 3 files changed, 54 insertions(+), 39 deletions(-)
-
-diff --git js/src/builtin/TypedArray.js js/src/builtin/TypedArray.js
-index 0ee07634822d..8e29657f167e 100644
---- js/src/builtin/TypedArray.js
-+++ js/src/builtin/TypedArray.js
-@@ -33,6 +33,10 @@ function IsDetachedBuffer(buffer) {
- return (flags & JS_ARRAYBUFFER_DETACHED_FLAG) !== 0;
- }
-
-+function TypedArrayLengthMethod() {
-+ return TypedArrayLength(this);
-+}
-+
- function GetAttachedArrayBuffer(tarray) {
- var buffer = ViewedArrayBufferIfReified(tarray);
- if (IsDetachedBuffer(buffer))
-@@ -40,6 +44,10 @@ function GetAttachedArrayBuffer(tarray) {
- return buffer;
- }
-
-+function GetAttachedArrayBufferMethod() {
-+ return GetAttachedArrayBuffer(this);
-+}
-+
- // A function which ensures that the argument is either a typed array or a
- // cross-compartment wrapper for a typed array and that the typed array involved
- // has an attached array buffer. If one of those conditions doesn't hold (wrong
-@@ -52,10 +60,7 @@ function IsTypedArrayEnsuringArrayBuffer(arg) {
- return true;
- }
-
-- // This is a bit hacky but gets the job done: the first `arg` is used to
-- // test for a wrapped typed array, the second as an argument to
-- // GetAttachedArrayBuffer.
-- callFunction(CallTypedArrayMethodIfWrapped, arg, arg, "GetAttachedArrayBuffer");
-+ callFunction(CallTypedArrayMethodIfWrapped, arg, "GetAttachedArrayBufferMethod");
- return false;
- }
-
-@@ -96,8 +101,8 @@ function TypedArrayCreateWithLength(constructor, length) {
- if (isTypedArray) {
- len = TypedArrayLength(newTypedArray);
- } else {
-- len = callFunction(CallTypedArrayMethodIfWrapped, newTypedArray, newTypedArray,
-- "TypedArrayLength");
-+ len = callFunction(CallTypedArrayMethodIfWrapped, newTypedArray,
-+ "TypedArrayLengthMethod");
- }
-
- if (len < length)
-@@ -257,15 +262,14 @@ function TypedArrayEvery(callbackfn/*, thisArg*/) {
- // We want to make sure that we have an attached buffer, per spec prose.
- var isTypedArray = IsTypedArrayEnsuringArrayBuffer(O);
-
-- // If we got here, `this` is either a typed array or a cross-compartment
-- // wrapper for one.
-+ // If we got here, `this` is either a typed array or a wrapper for one.
-
- // Steps 3-5.
- var len;
- if (isTypedArray)
- len = TypedArrayLength(O);
- else
-- len = callFunction(CallTypedArrayMethodIfWrapped, O, O, "TypedArrayLength");
-+ len = callFunction(CallTypedArrayMethodIfWrapped, O, "TypedArrayLengthMethod");
-
- // Step 6.
- if (arguments.length === 0)
-@@ -361,15 +365,14 @@ function TypedArrayFilter(callbackfn/*, thisArg*/) {
- // We want to make sure that we have an attached buffer, per spec prose.
- var isTypedArray = IsTypedArrayEnsuringArrayBuffer(O);
-
-- // If we got here, `this` is either a typed array or a cross-compartment
-- // wrapper for one.
-+ // If we got here, `this` is either a typed array or a wrapper for one.
-
- // Step 3.
- var len;
- if (isTypedArray)
- len = TypedArrayLength(O);
- else
-- len = callFunction(CallTypedArrayMethodIfWrapped, O, O, "TypedArrayLength");
-+ len = callFunction(CallTypedArrayMethodIfWrapped, O, "TypedArrayLengthMethod");
-
- // Step 4.
- if (arguments.length === 0)
-@@ -423,15 +426,14 @@ function TypedArrayFind(predicate/*, thisArg*/) {
- // We want to make sure that we have an attached buffer, per spec prose.
- var isTypedArray = IsTypedArrayEnsuringArrayBuffer(O);
-
-- // If we got here, `this` is either a typed array or a cross-compartment
-- // wrapper for one.
-+ // If we got here, `this` is either a typed array or a wrapper for one.
-
- // Steps 3-5.
- var len;
- if (isTypedArray)
- len = TypedArrayLength(O);
- else
-- len = callFunction(CallTypedArrayMethodIfWrapped, O, O, "TypedArrayLength");
-+ len = callFunction(CallTypedArrayMethodIfWrapped, O, "TypedArrayLengthMethod");
-
- // Step 6.
- if (arguments.length === 0)
-@@ -465,15 +467,14 @@ function TypedArrayFindIndex(predicate/*, thisArg*/) {
- // We want to make sure that we have an attached buffer, per spec prose.
- var isTypedArray = IsTypedArrayEnsuringArrayBuffer(O);
-
-- // If we got here, `this` is either a typed array or a cross-compartment
-- // wrapper for one.
-+ // If we got here, `this` is either a typed array or a wrapper for one.
-
- // Steps 3-5.
- var len;
- if (isTypedArray)
- len = TypedArrayLength(O);
- else
-- len = callFunction(CallTypedArrayMethodIfWrapped, O, O, "TypedArrayLength");
-+ len = callFunction(CallTypedArrayMethodIfWrapped, O, "TypedArrayLengthMethod");
-
- // Step 6.
- if (arguments.length === 0)
-@@ -505,15 +506,14 @@ function TypedArrayForEach(callbackfn/*, thisArg*/) {
- // We want to make sure that we have an attached buffer, per spec prose.
- var isTypedArray = IsTypedArrayEnsuringArrayBuffer(O);
-
-- // If we got here, `this` is either a typed array or a cross-compartment
-- // wrapper for one.
-+ // If we got here, `this` is either a typed array or a wrapper for one.
-
- // Step 3-4.
- var len;
- if (isTypedArray)
- len = TypedArrayLength(O);
- else
-- len = callFunction(CallTypedArrayMethodIfWrapped, O, O, "TypedArrayLength");
-+ len = callFunction(CallTypedArrayMethodIfWrapped, O, "TypedArrayLengthMethod");
-
- // Step 5.
- if (arguments.length === 0)
-@@ -703,15 +703,14 @@ function TypedArrayMap(callbackfn/*, thisArg*/) {
- // We want to make sure that we have an attached buffer, per spec prose.
- var isTypedArray = IsTypedArrayEnsuringArrayBuffer(O);
-
-- // If we got here, `this` is either a typed array or a cross-compartment
-- // wrapper for one.
-+ // If we got here, `this` is either a typed array or a wrapper for one.
-
- // Step 3.
- var len;
- if (isTypedArray)
- len = TypedArrayLength(O);
- else
-- len = callFunction(CallTypedArrayMethodIfWrapped, O, O, "TypedArrayLength");
-+ len = callFunction(CallTypedArrayMethodIfWrapped, O, "TypedArrayLengthMethod");
-
- // Step 4.
- if (arguments.length === 0)
-@@ -747,15 +746,14 @@ function TypedArrayReduce(callbackfn/*, initialValue*/) {
- // We want to make sure that we have an attached buffer, per spec prose.
- var isTypedArray = IsTypedArrayEnsuringArrayBuffer(O);
-
-- // If we got here, `this` is either a typed array or a cross-compartment
-- // wrapper for one.
-+ // If we got here, `this` is either a typed array or a wrapper for one.
-
- // Steps 3-5.
- var len;
- if (isTypedArray)
- len = TypedArrayLength(O);
- else
-- len = callFunction(CallTypedArrayMethodIfWrapped, O, O, "TypedArrayLength");
-+ len = callFunction(CallTypedArrayMethodIfWrapped, O, "TypedArrayLengthMethod");
-
- // Step 6.
- if (arguments.length === 0)
-@@ -793,15 +791,14 @@ function TypedArrayReduceRight(callbackfn/*, initialValue*/) {
- // We want to make sure that we have an attached buffer, per spec prose.
- var isTypedArray = IsTypedArrayEnsuringArrayBuffer(O);
-
-- // If we got here, `this` is either a typed array or a cross-compartment
-- // wrapper for one.
-+ // If we got here, `this` is either a typed array or a wrapper for one.
-
- // Steps 3-5.
- var len;
- if (isTypedArray)
- len = TypedArrayLength(O);
- else
-- len = callFunction(CallTypedArrayMethodIfWrapped, O, O, "TypedArrayLength");
-+ len = callFunction(CallTypedArrayMethodIfWrapped, O, "TypedArrayLengthMethod");
-
- // Step 6.
- if (arguments.length === 0)
-@@ -1066,15 +1063,14 @@ function TypedArraySome(callbackfn/*, thisArg*/) {
- // We want to make sure that we have an attached buffer, per spec prose.
- var isTypedArray = IsTypedArrayEnsuringArrayBuffer(O);
-
-- // If we got here, `this` is either a typed array or a cross-compartment
-- // wrapper for one.
-+ // If we got here, `this` is either a typed array or a wrapper for one.
-
- // Steps 3-5.
- var len;
- if (isTypedArray)
- len = TypedArrayLength(O);
- else
-- len = callFunction(CallTypedArrayMethodIfWrapped, O, O, "TypedArrayLength");
-+ len = callFunction(CallTypedArrayMethodIfWrapped, O, "TypedArrayLengthMethod");
-
- // Step 6.
- if (arguments.length === 0)
-@@ -1176,7 +1172,7 @@ function TypedArraySort(comparefn) {
- if (isTypedArray) {
- buffer = GetAttachedArrayBuffer(obj);
- } else {
-- buffer = callFunction(CallTypedArrayMethodIfWrapped, obj, obj, "GetAttachedArrayBuffer");
-+ buffer = callFunction(CallTypedArrayMethodIfWrapped, obj, "GetAttachedArrayBufferMethod");
- }
-
- // Step 4.
-@@ -1184,7 +1180,7 @@ function TypedArraySort(comparefn) {
- if (isTypedArray) {
- len = TypedArrayLength(obj);
- } else {
-- len = callFunction(CallTypedArrayMethodIfWrapped, obj, obj, "TypedArrayLength");
-+ len = callFunction(CallTypedArrayMethodIfWrapped, obj, "TypedArrayLengthMethod");
- }
-
- // Arrays with less than two elements remain unchanged when sorted.
-@@ -1221,7 +1217,7 @@ function TypedArraySort(comparefn) {
- if (isTypedArray) {
- length = TypedArrayLength(obj);
- } else {
-- length = callFunction(CallTypedArrayMethodIfWrapped, obj, obj, "TypedArrayLength");
-+ length = callFunction(CallTypedArrayMethodIfWrapped, obj, "TypedArrayLengthMethod");
- }
-
- // It's faster for us to check the typed array's length than to check
-@@ -1253,15 +1249,14 @@ function TypedArrayToLocaleString(locales = undefined, options = undefined) {
- // We want to make sure that we have an attached buffer, per spec prose.
- var isTypedArray = IsTypedArrayEnsuringArrayBuffer(array);
-
-- // If we got here, `this` is either a typed array or a cross-compartment
-- // wrapper for one.
-+ // If we got here, `this` is either a typed array or a wrapper for one.
-
- // Step 2.
- var len;
- if (isTypedArray)
- len = TypedArrayLength(array);
- else
-- len = callFunction(CallTypedArrayMethodIfWrapped, array, array, "TypedArrayLength");
-+ len = callFunction(CallTypedArrayMethodIfWrapped, array, "TypedArrayLengthMethod");
-
- // Step 4.
- if (len === 0)
-diff --git js/src/jit-test/tests/proxy/testWrapWithProtoIter.js js/src/jit-test/tests/proxy/testWrapWithProtoIter.js
-new file mode 100644
-index 000000000000..c6854b206786
---- /dev/null
-+++ js/src/jit-test/tests/proxy/testWrapWithProtoIter.js
-@@ -0,0 +1 @@
-+[...wrapWithProto(new Int8Array(), new Int8Array())]
-diff --git js/src/jit-test/tests/proxy/testWrapWithProtoTypedArray.js js/src/jit-test/tests/proxy/testWrapWithProtoTypedArray.js
-new file mode 100644
-index 000000000000..1b805d30a119
---- /dev/null
-+++ js/src/jit-test/tests/proxy/testWrapWithProtoTypedArray.js
-@@ -0,0 +1,19 @@
-+let a = wrapWithProto(new Int8Array([1, 3, 5, 6, 9]), new Int8Array());
-+
-+assertEq([...a].toString(), "1,3,5,6,9");
-+assertEq(a.every(e => e < 100), true);
-+assertEq(a.filter(e => e % 2 == 1).toString(), "1,3,5,9");
-+assertEq(a.find(e => e > 3), 5);
-+assertEq(a.findIndex(e => e % 2 == 0), 3);
-+assertEq(a.map(e => e * 10).toString(), "10,30,50,60,90");
-+assertEq(a.reduce((a, b) => a + b, ""), "13569");
-+assertEq(a.reduceRight((acc, e) => "(" + e + acc + ")", ""), "(1(3(5(6(9)))))");
-+assertEq(a.some(e => e % 2 == 0), true);
-+
-+let s = "";
-+assertEq(a.forEach(e => s += e), undefined);
-+assertEq(s, "13569");
-+
-+a.sort((a, b) => b - a);
-+assertEq(a.toString(), "9,6,5,3,1");
-+
diff --git a/www/waterfox/files/patch-bug1416523 b/www/waterfox/files/patch-bug1416523
deleted file mode 100644
index 10f4e4268061..000000000000
--- a/www/waterfox/files/patch-bug1416523
+++ /dev/null
@@ -1,46 +0,0 @@
-commit aeff426f078d
-Author: Brian Hackett <bhackett1024@gmail.com>
-Date: Tue Feb 6 14:11:34 2018 -0500
-
- Bug 1416523 - Don't attach arguments stub if the IC isn't monitored. r=jandem a=abillings
-
- --HG--
- extra : rebase_source : d1797b87843df0aea266bd7d1e0c98e9809b1291
- extra : source : 5fc563433fcfc2a08400988c247ccb23e45129d4
----
- js/src/jit/CacheIR.cpp | 8 +++++++-
- 1 file changed, 7 insertions(+), 1 deletion(-)
-
-diff --git js/src/jit/CacheIR.cpp js/src/jit/CacheIR.cpp
-index 22c0111756d8..aeef8f84d233 100644
---- js/src/jit/CacheIR.cpp
-+++ js/src/jit/CacheIR.cpp
-@@ -286,7 +286,7 @@ GetPropIRGenerator::tryAttachIdempotentStub()
- return true;
-
- // Object lengths are supported only if int32 results are allowed.
-- if ((resultFlags_ & GetPropertyResultFlags::AllowInt32) && tryAttachObjectLength(obj, objId, id))
-+ if (tryAttachObjectLength(obj, objId, id))
- return true;
-
- // Also support native data properties on DOMProxy prototypes.
-@@ -1433,6 +1433,9 @@ GetPropIRGenerator::tryAttachObjectLength(HandleObject obj, ObjOperandId objId,
- if (!JSID_IS_ATOM(id, cx_->names().length))
- return false;
-
-+ if (!(resultFlags_ & GetPropertyResultFlags::AllowInt32))
-+ return false;
-+
- if (obj->is<ArrayObject>()) {
- // Make sure int32 is added to the TypeSet before we attach a stub, so
- // the stub can return int32 values without monitoring the result.
-@@ -1697,6 +1700,9 @@ GetPropIRGenerator::tryAttachArgumentsObjectArg(HandleObject obj, ObjOperandId o
- if (!obj->is<ArgumentsObject>() || obj->as<ArgumentsObject>().hasOverriddenElement())
- return false;
-
-+ if (!(resultFlags_ & GetPropertyResultFlags::Monitored))
-+ return false;
-+
- if (obj->is<MappedArgumentsObject>()) {
- writer.guardClass(objId, GuardClassKind::MappedArguments);
- } else {
diff --git a/www/waterfox/files/patch-bug1419166 b/www/waterfox/files/patch-bug1419166
deleted file mode 100644
index 9aabb207985c..000000000000
--- a/www/waterfox/files/patch-bug1419166
+++ /dev/null
@@ -1,144 +0,0 @@
-commit 2b3039c02109
-Author: Andrea Marchesini <amarchesini@mozilla.com>
-Date: Mon Nov 27 17:07:39 2017 +0100
-
- Bug 1419166 - Use nsIPrincipal to decide if a SharedWorker should be shared, r=bkelly
----
- dom/workers/RuntimeService.cpp | 80 +++++++++++++++++-------------------------
- dom/workers/RuntimeService.h | 2 +-
- 2 files changed, 33 insertions(+), 49 deletions(-)
-
-diff --git dom/workers/RuntimeService.cpp dom/workers/RuntimeService.cpp
-index 452f623aef2d..8e34fb398e10 100644
---- dom/workers/RuntimeService.cpp
-+++ dom/workers/RuntimeService.cpp
-@@ -253,26 +253,6 @@ GetWorkerPref(const nsACString& aPref,
- return result;
- }
-
--// This fn creates a key for a SharedWorker that contains the name, script
--// spec, and the serialized origin attributes:
--// "name|scriptSpec^key1=val1&key2=val2&key3=val3"
--void
--GenerateSharedWorkerKey(const nsACString& aScriptSpec,
-- const nsAString& aName,
-- const OriginAttributes& aAttrs,
-- nsCString& aKey)
--{
-- nsAutoCString suffix;
-- aAttrs.CreateSuffix(suffix);
--
-- aKey.Truncate();
-- aKey.SetCapacity(aName.Length() + aScriptSpec.Length() + suffix.Length() + 2);
-- aKey.Append(NS_ConvertUTF16toUTF8(aName));
-- aKey.Append('|');
-- aKey.Append(aScriptSpec);
-- aKey.Append(suffix);
--}
--
- void
- LoadContextOptions(const char* aPrefName, void* /* aClosure */)
- {
-@@ -1602,16 +1582,23 @@ RuntimeService::RegisterWorker(WorkerPrivate* aWorkerPrivate)
- }
-
- if (isSharedWorker) {
-- const nsString& sharedWorkerName(aWorkerPrivate->WorkerName());
-- nsAutoCString key;
-- GenerateSharedWorkerKey(sharedWorkerScriptSpec, sharedWorkerName,
-- aWorkerPrivate->GetOriginAttributes(), key);
-- MOZ_ASSERT(!domainInfo->mSharedWorkerInfos.Get(key));
-+#ifdef DEBUG
-+ for (const UniquePtr<SharedWorkerInfo>& data : domainInfo->mSharedWorkerInfos) {
-+ if (data->mScriptSpec == sharedWorkerScriptSpec &&
-+ data->mName == aWorkerPrivate->WorkerName() &&
-+ // We want to be sure that the window's principal subsumes the
-+ // SharedWorker's principal and vice versa.
-+ data->mWorkerPrivate->GetPrincipal()->Subsumes(aWorkerPrivate->GetPrincipal()) &&
-+ aWorkerPrivate->GetPrincipal()->Subsumes(data->mWorkerPrivate->GetPrincipal())) {
-+ MOZ_CRASH("We should not instantiate a new SharedWorker!");
-+ }
-+ }
-+#endif
-
-- SharedWorkerInfo* sharedWorkerInfo =
-+ UniquePtr<SharedWorkerInfo> sharedWorkerInfo(
- new SharedWorkerInfo(aWorkerPrivate, sharedWorkerScriptSpec,
-- sharedWorkerName);
-- domainInfo->mSharedWorkerInfos.Put(key, sharedWorkerInfo);
-+ aWorkerPrivate->WorkerName()));
-+ domainInfo->mSharedWorkerInfos.AppendElement(Move(sharedWorkerInfo));
- }
- }
-
-@@ -1671,18 +1658,11 @@ void
- RuntimeService::RemoveSharedWorker(WorkerDomainInfo* aDomainInfo,
- WorkerPrivate* aWorkerPrivate)
- {
-- for (auto iter = aDomainInfo->mSharedWorkerInfos.Iter();
-- !iter.Done();
-- iter.Next()) {
-- SharedWorkerInfo* data = iter.UserData();
-+ for (uint32_t i = 0; i < aDomainInfo->mSharedWorkerInfos.Length(); ++i) {
-+ const UniquePtr<SharedWorkerInfo>& data =
-+ aDomainInfo->mSharedWorkerInfos[i];
- if (data->mWorkerPrivate == aWorkerPrivate) {
--#ifdef DEBUG
-- nsAutoCString key;
-- GenerateSharedWorkerKey(data->mScriptSpec, data->mName,
-- aWorkerPrivate->GetOriginAttributes(), key);
-- MOZ_ASSERT(iter.Key() == key);
--#endif
-- iter.Remove();
-+ aDomainInfo->mSharedWorkerInfos.RemoveElementAt(i);
- break;
- }
- }
-@@ -2499,21 +2479,25 @@ RuntimeService::CreateSharedWorkerFromLoadInfo(JSContext* aCx,
- {
- MutexAutoLock lock(mMutex);
-
-- WorkerDomainInfo* domainInfo;
-- SharedWorkerInfo* sharedWorkerInfo;
--
- nsCString scriptSpec;
- nsresult rv = aLoadInfo->mResolvedScriptURI->GetSpec(scriptSpec);
- NS_ENSURE_SUCCESS(rv, rv);
-
- MOZ_ASSERT(aLoadInfo->mPrincipal);
-- nsAutoCString key;
-- GenerateSharedWorkerKey(scriptSpec, aName,
-- aLoadInfo->mPrincipal->OriginAttributesRef(), key);
-
-- if (mDomainMap.Get(aLoadInfo->mDomain, &domainInfo) &&
-- domainInfo->mSharedWorkerInfos.Get(key, &sharedWorkerInfo)) {
-- workerPrivate = sharedWorkerInfo->mWorkerPrivate;
-+ WorkerDomainInfo* domainInfo;
-+ if (mDomainMap.Get(aLoadInfo->mDomain, &domainInfo)) {
-+ for (const UniquePtr<SharedWorkerInfo>& data : domainInfo->mSharedWorkerInfos) {
-+ if (data->mScriptSpec == scriptSpec &&
-+ data->mName == aName &&
-+ // We want to be sure that the window's principal subsumes the
-+ // SharedWorker's principal and vice versa.
-+ aLoadInfo->mPrincipal->Subsumes(data->mWorkerPrivate->GetPrincipal()) &&
-+ data->mWorkerPrivate->GetPrincipal()->Subsumes(aLoadInfo->mPrincipal)) {
-+ workerPrivate = data->mWorkerPrivate;
-+ break;
-+ }
-+ }
- }
- }
-
-diff --git dom/workers/RuntimeService.h dom/workers/RuntimeService.h
-index f7334896cd4c..45c8642adc85 100644
---- dom/workers/RuntimeService.h
-+++ dom/workers/RuntimeService.h
-@@ -45,7 +45,7 @@ class RuntimeService final : public nsIObserver
- nsTArray<WorkerPrivate*> mActiveWorkers;
- nsTArray<WorkerPrivate*> mActiveServiceWorkers;
- nsTArray<WorkerPrivate*> mQueuedWorkers;
-- nsClassHashtable<nsCStringHashKey, SharedWorkerInfo> mSharedWorkerInfos;
-+ nsTArray<UniquePtr<SharedWorkerInfo>> mSharedWorkerInfos;
- uint32_t mChildWorkerCount;
-
- WorkerDomainInfo()
diff --git a/www/waterfox/files/patch-bug1422643 b/www/waterfox/files/patch-bug1422643
deleted file mode 100644
index 3976b7d75f57..000000000000
--- a/www/waterfox/files/patch-bug1422643
+++ /dev/null
@@ -1,80 +0,0 @@
-commit dd719e911e2c
-Author: Gijs Kruitbosch <gijskruitbosch@gmail.com>
-Date: Wed Dec 20 18:57:48 2017 +0000
-
- Bug 1422643 - deal with tabs in the protocol in js paste detection code, r=florian,valentin
-
- MozReview-Commit-ID: Ax5LGkIedkY
-
- --HG--
- extra : rebase_source : 85a9871a4de44652fe3bbfd455af389fe27d7714
- extra : source : 6ad5ec88a8982d83b8097fd76a2383aae94711c6
----
- browser/base/content/browser.js | 20 ++++++++++++--------
- .../browser_removeUnsafeProtocolsFromURLBarPaste.js | 15 +++++++++++++++
- 2 files changed, 27 insertions(+), 8 deletions(-)
-
-diff --git browser/base/content/browser.js browser/base/content/browser.js
-index e6e60cd202a0..5306800ebaca 100755
---- browser/base/content/browser.js
-+++ browser/base/content/browser.js
-@@ -6053,14 +6053,18 @@ function middleMousePaste(event) {
- function stripUnsafeProtocolOnPaste(pasteData) {
- // Don't allow pasting javascript URIs since we don't support
- // LOAD_FLAGS_DISALLOW_INHERIT_PRINCIPAL for those.
-- let changed = false;
-- let pasteDataNoJS = pasteData.replace(/\r?\n/g, "")
-- .replace(/^(?:\W*javascript:)+/i,
-- () => {
-- changed = true;
-- return "";
-- });
-- return changed ? pasteDataNoJS : pasteData;
-+ while (true) {
-+ let scheme = "";
-+ try {
-+ scheme = Services.io.extractScheme(pasteData);
-+ } catch (ex) { }
-+ if (scheme != "javascript") {
-+ break;
-+ }
-+
-+ pasteData = pasteData.substring(pasteData.indexOf(":") + 1);
-+ }
-+ return pasteData;
- }
-
- // handleDroppedLink has the following 2 overloads:
-diff --git browser/base/content/test/urlbar/browser_removeUnsafeProtocolsFromURLBarPaste.js browser/base/content/test/urlbar/browser_removeUnsafeProtocolsFromURLBarPaste.js
-index 27129297b0a3..70ecaa048626 100644
---- browser/base/content/test/urlbar/browser_removeUnsafeProtocolsFromURLBarPaste.js
-+++ browser/base/content/test/urlbar/browser_removeUnsafeProtocolsFromURLBarPaste.js
-@@ -9,6 +9,7 @@ var pairs = [
- ["javascript:document.domain", "document.domain"],
- [" \u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u0009javascript:document.domain", "document.domain"],
- ["java\nscript:foo", "foo"],
-+ ["java\tscript:foo", "foo"],
- ["http://\nexample.com", "http://example.com"],
- ["http://\nexample.com\n", "http://example.com"],
- ["data:text/html,<body>hi</body>", "data:text/html,<body>hi</body>"],
-@@ -20,6 +21,20 @@ var pairs = [
- ["data:data:text/html,javascript:alert('hi!')", "data:data:text/html,javascript:alert('hi!')"],
- ];
-
-+let supportsNullBytes = AppConstants.platform == "macosx";
-+// Note that \u000d (\r) is missing here; we test it separately because it
-+// makes the test sad on Windows.
-+let gobbledygook = "\u000a\u000b\u000c\u000e\u000f\u0010\u0011\u0012\u0013\u0014javascript:foo";
-+if (supportsNullBytes) {
-+ gobbledygook = "\u0000" + gobbledygook;
-+}
-+pairs.push([gobbledygook, "foo"]);
-+
-+let supportsReturnWithoutNewline = AppConstants.platform != "win";
-+if (supportsReturnWithoutNewline) {
-+ pairs.push(["java\rscript:foo", "foo"]);
-+}
-+
- var clipboardHelper = Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper);
-
- function paste(input, cb) {
diff --git a/www/waterfox/files/patch-bug1423173 b/www/waterfox/files/patch-bug1423173
deleted file mode 100644
index 1e7631cf4f66..000000000000
--- a/www/waterfox/files/patch-bug1423173
+++ /dev/null
@@ -1,43 +0,0 @@
-commit 46e3052bc347
-Author: Kannan Vijayan <kvijayan@mozilla.com>
-Date: Thu Jan 4 14:36:07 2018 -0500
-
- Bug 1423173 - Check for shadowing indexed properties when adding elements. r=jandem
----
- js/src/jit-test/tests/arrays/bug1423173.js | 13 +++++++++++++
- js/src/jit/CacheIR.cpp | 3 +++
- 2 files changed, 16 insertions(+)
-
-diff --git js/src/jit-test/tests/arrays/bug1423173.js js/src/jit-test/tests/arrays/bug1423173.js
-new file mode 100644
-index 000000000000..38e584ce3655
---- /dev/null
-+++ js/src/jit-test/tests/arrays/bug1423173.js
-@@ -0,0 +1,13 @@
-+// |jit-test| --baseline-eager
-+Array.prototype.push(1);
-+Object.freeze([].__proto__);
-+var x = [];
-+var c = 0;
-+for (var j = 0; j < 5; ++j) {
-+ try {
-+ x.push(function() {});
-+ } catch (e) {
-+ c++;
-+ }
-+}
-+assertEq(c, j);
-diff --git js/src/jit/CacheIR.cpp js/src/jit/CacheIR.cpp
-index 507788a7c182..fa5fc6bc6f91 100644
---- js/src/jit/CacheIR.cpp
-+++ js/src/jit/CacheIR.cpp
-@@ -3406,6 +3406,9 @@ CanAttachAddElement(JSObject* obj, bool isInit)
- if (!proto->isNative())
- return false;
-
-+ if (proto->as<NativeObject>().denseElementsAreFrozen())
-+ return false;
-+
- obj = proto;
- } while (true);
-
diff --git a/www/waterfox/files/patch-bug1424261 b/www/waterfox/files/patch-bug1424261
deleted file mode 100644
index f44fa4366c39..000000000000
--- a/www/waterfox/files/patch-bug1424261
+++ /dev/null
@@ -1,66 +0,0 @@
-commit 0d38343e3589
-Author: Gijs Kruitbosch <gijskruitbosch@gmail.com>
-Date: Tue Dec 12 10:53:10 2017 -0600
-
- Bug 1424261, r=bz
-
- --HG--
- extra : rebase_source : 2bead652bbfd4cd251b431e04e3002c38c1a7a7b
----
- caps/nsScriptSecurityManager.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git caps/nsScriptSecurityManager.cpp caps/nsScriptSecurityManager.cpp
-index 736eab415b8d..e557f4f1a0b7 100644
---- caps/nsScriptSecurityManager.cpp
-+++ caps/nsScriptSecurityManager.cpp
-@@ -840,7 +840,7 @@ nsScriptSecurityManager::CheckLoadURIFlags(nsIURI *aSourceURI,
-
- // Check for chrome target URI
- bool hasFlags = false;
-- rv = NS_URIChainHasFlags(aTargetBaseURI,
-+ rv = NS_URIChainHasFlags(aTargetURI,
- nsIProtocolHandler::URI_IS_UI_RESOURCE,
- &hasFlags);
- NS_ENSURE_SUCCESS(rv, rv);
-
-commit 3c59d5240166
-Author: Gijs Kruitbosch <gijskruitbosch@gmail.com>
-Date: Tue Dec 12 10:53:50 2017 -0600
-
- Bug 1424261, r=valentin
-
- --HG--
- extra : rebase_source : 9f4c9c619dbccc2575b2a9d3e4304a54d41acad5
----
- image/decoders/icon/nsIconURI.cpp | 10 +++++++++-
- 1 file changed, 9 insertions(+), 1 deletion(-)
-
-diff --git image/decoders/icon/nsIconURI.cpp image/decoders/icon/nsIconURI.cpp
-index 5958bd9d1436..5f096674bd35 100644
---- image/decoders/icon/nsIconURI.cpp
-+++ image/decoders/icon/nsIconURI.cpp
-@@ -218,7 +218,10 @@ nsMozIconURI::SetSpec(const nsACString& aSpec)
-
- nsAutoCString iconSpec(aSpec);
- if (!Substring(iconSpec, 0,
-- MOZICON_SCHEME_LEN).EqualsLiteral(MOZICON_SCHEME)) {
-+ MOZICON_SCHEME_LEN).EqualsLiteral(MOZICON_SCHEME) ||
-+ (!Substring(iconSpec, MOZICON_SCHEME_LEN, 7).EqualsLiteral("file://") &&
-+ // Checking for the leading '//' will match both the '//stock/' and '//.foo' cases:
-+ !Substring(iconSpec, MOZICON_SCHEME_LEN, 2).EqualsLiteral("//"))) {
- return NS_ERROR_MALFORMED_URI;
- }
-
-@@ -298,6 +301,11 @@ nsMozIconURI::SetSpec(const nsACString& aSpec)
- ioService->NewURI(iconPath, nullptr, nullptr, getter_AddRefs(uri));
- mIconURL = do_QueryInterface(uri);
- if (mIconURL) {
-+ // The inner URI should be a 'file:' one. If not, bail.
-+ bool isFile = false;
-+ if (!NS_SUCCEEDED(mIconURL->SchemeIs("file", &isFile)) || !isFile) {
-+ return NS_ERROR_MALFORMED_URI;
-+ }
- mFileName.Truncate();
- } else if (mFileName.IsEmpty()) {
- return NS_ERROR_MALFORMED_URI;
diff --git a/www/waterfox/files/patch-bug1425257 b/www/waterfox/files/patch-bug1425257
deleted file mode 100644
index b5db07d8d40f..000000000000
--- a/www/waterfox/files/patch-bug1425257
+++ /dev/null
@@ -1,216 +0,0 @@
-commit ad55ed8d63e9
-Author: Bas Schouten <bschouten@mozilla.com>
-Date: Tue Feb 6 03:08:04 2018 +0100
-
- Bug 1425257: Introduce a global lock to protect the dependency graph between DrawTargets. r=lsalzman a=RyanVM
-
- This patch takes the safest route for securing modifications to the dependency graph for D2D DrawTargets. It's possible a slightly optimal approach is possible, however lock contention should be rare and I believe this is the safest and most upliftable approach.
-
- MozReview-Commit-ID: HGfSdEp2U5N
-
- --HG--
- extra : source : e30390f2f53a505a1dc514dad36c181d75e4c83c
----
- gfx/2d/2D.h | 3 ++
- gfx/2d/DrawTargetD2D1.cpp | 118 +++++++++++++++++++++++++++++-----------------
- gfx/2d/DrawTargetD2D1.h | 2 +
- gfx/2d/Factory.cpp | 1 +
- 4 files changed, 81 insertions(+), 43 deletions(-)
-
-diff --git gfx/2d/2D.h gfx/2d/2D.h
-index 7e43d6e8f683..8612f5a7fb37 100644
---- gfx/2d/2D.h
-+++ gfx/2d/2D.h
-@@ -1755,6 +1755,9 @@ protected:
- // This guards access to the singleton devices above, as well as the
- // singleton devices in DrawTargetD2D1.
- static StaticMutex mDeviceLock;
-+ // This synchronizes access between different D2D drawtargets and their
-+ // implied dependency graph.
-+ static StaticMutex mDTDependencyLock;
-
- friend class DrawTargetD2D1;
- #endif
-diff --git gfx/2d/DrawTargetD2D1.cpp gfx/2d/DrawTargetD2D1.cpp
-index 67b6c21461ed..9f7afc64a48d 100644
---- gfx/2d/DrawTargetD2D1.cpp
-+++ gfx/2d/DrawTargetD2D1.cpp
-@@ -76,16 +76,21 @@ DrawTargetD2D1::~DrawTargetD2D1()
- mDC->EndDraw();
- }
-
-- // Targets depending on us can break that dependency, since we're obviously not going to
-- // be modified in the future.
-- for (auto iter = mDependentTargets.begin();
-- iter != mDependentTargets.end(); iter++) {
-- (*iter)->mDependingOnTargets.erase(this);
-- }
-- // Our dependencies on other targets no longer matter.
-- for (TargetSet::iterator iter = mDependingOnTargets.begin();
-- iter != mDependingOnTargets.end(); iter++) {
-- (*iter)->mDependentTargets.erase(this);
-+ {
-+ // Until this point in the destructor it -must- still be valid for FlushInternal
-+ // to be called on this.
-+ StaticMutexAutoLock lock(Factory::mDTDependencyLock);
-+ // Targets depending on us can break that dependency, since we're obviously not going to
-+ // be modified in the future.
-+ for (auto iter = mDependentTargets.begin();
-+ iter != mDependentTargets.end(); iter++) {
-+ (*iter)->mDependingOnTargets.erase(this);
-+ }
-+ // Our dependencies on other targets no longer matter.
-+ for (TargetSet::iterator iter = mDependingOnTargets.begin();
-+ iter != mDependingOnTargets.end(); iter++) {
-+ (*iter)->mDependentTargets.erase(this);
-+ }
- }
- }
-
-@@ -156,28 +161,7 @@ static const uint32_t kPushedLayersBeforePurge = 25;
- void
- DrawTargetD2D1::Flush()
- {
-- if (IsDeviceContextValid()) {
-- if ((mUsedCommandListsSincePurge >= kPushedLayersBeforePurge) &&
-- mPushedLayers.size() == 1) {
-- // It's important to pop all clips as otherwise layers can forget about
-- // their clip when doing an EndDraw. When we have layers pushed we cannot
-- // easily pop all underlying clips to delay the purge until we have no
-- // layers pushed.
-- PopAllClips();
-- mUsedCommandListsSincePurge = 0;
-- mDC->EndDraw();
-- mDC->BeginDraw();
-- } else {
-- mDC->Flush();
-- }
-- }
--
-- // We no longer depend on any target.
-- for (TargetSet::iterator iter = mDependingOnTargets.begin();
-- iter != mDependingOnTargets.end(); iter++) {
-- (*iter)->mDependentTargets.erase(this);
-- }
-- mDependingOnTargets.clear();
-+ FlushInternal();
- }
-
- void
-@@ -1271,6 +1255,41 @@ DrawTargetD2D1::CleanupD2D()
- }
- }
-
-+void
-+DrawTargetD2D1::FlushInternal(bool aHasDependencyMutex /* = false */)
-+{
-+ if (IsDeviceContextValid()) {
-+ if ((mUsedCommandListsSincePurge >= kPushedLayersBeforePurge) &&
-+ mPushedLayers.size() == 1) {
-+ // It's important to pop all clips as otherwise layers can forget about
-+ // their clip when doing an EndDraw. When we have layers pushed we cannot
-+ // easily pop all underlying clips to delay the purge until we have no
-+ // layers pushed.
-+ PopAllClips();
-+ mUsedCommandListsSincePurge = 0;
-+ mDC->EndDraw();
-+ mDC->BeginDraw();
-+ }
-+ else {
-+ mDC->Flush();
-+ }
-+ }
-+
-+ Maybe<StaticMutexAutoLock> lock;
-+
-+ if (!aHasDependencyMutex) {
-+ lock.emplace(Factory::mDTDependencyLock);
-+ }
-+
-+ Factory::mDTDependencyLock.AssertCurrentThreadOwns();
-+ // We no longer depend on any target.
-+ for (TargetSet::iterator iter = mDependingOnTargets.begin();
-+ iter != mDependingOnTargets.end(); iter++) {
-+ (*iter)->mDependentTargets.erase(this);
-+ }
-+ mDependingOnTargets.clear();
-+}
-+
- void
- DrawTargetD2D1::MarkChanged()
- {
-@@ -1285,15 +1304,19 @@ DrawTargetD2D1::MarkChanged()
- MOZ_ASSERT(!mSnapshot);
- }
- }
-- if (mDependentTargets.size()) {
-- // Copy mDependentTargets since the Flush()es below will modify it.
-- TargetSet tmpTargets = mDependentTargets;
-- for (TargetSet::iterator iter = tmpTargets.begin();
-- iter != tmpTargets.end(); iter++) {
-- (*iter)->Flush();
-+
-+ {
-+ StaticMutexAutoLock lock(Factory::mDTDependencyLock);
-+ if (mDependentTargets.size()) {
-+ // Copy mDependentTargets since the Flush()es below will modify it.
-+ TargetSet tmpTargets = mDependentTargets;
-+ for (TargetSet::iterator iter = tmpTargets.begin();
-+ iter != tmpTargets.end(); iter++) {
-+ (*iter)->FlushInternal(true);
-+ }
-+ // The Flush() should have broken all dependencies on this target.
-+ MOZ_ASSERT(!mDependentTargets.size());
- }
-- // The Flush() should have broken all dependencies on this target.
-- MOZ_ASSERT(!mDependentTargets.size());
- }
- }
-
-@@ -1464,9 +1487,18 @@ DrawTargetD2D1::FinalizeDrawing(CompositionOp aOp, const Pattern &aPattern)
- void
- DrawTargetD2D1::AddDependencyOnSource(SourceSurfaceD2D1* aSource)
- {
-- if (aSource->mDrawTarget && !mDependingOnTargets.count(aSource->mDrawTarget)) {
-- aSource->mDrawTarget->mDependentTargets.insert(this);
-- mDependingOnTargets.insert(aSource->mDrawTarget);
-+ Maybe<MutexAutoLock> snapshotLock;
-+ // We grab the SnapshotLock as well, this guaranteeds aSource->mDrawTarget
-+ // cannot be cleared in between the if statement and the dereference.
-+ if (aSource->mSnapshotLock) {
-+ snapshotLock.emplace(*aSource->mSnapshotLock);
-+ }
-+ {
-+ StaticMutexAutoLock lock(Factory::mDTDependencyLock);
-+ if (aSource->mDrawTarget && !mDependingOnTargets.count(aSource->mDrawTarget)) {
-+ aSource->mDrawTarget->mDependentTargets.insert(this);
-+ mDependingOnTargets.insert(aSource->mDrawTarget);
-+ }
- }
- }
-
-diff --git gfx/2d/DrawTargetD2D1.h gfx/2d/DrawTargetD2D1.h
-index 3199eb30294e..bb2f0e38de0f 100644
---- gfx/2d/DrawTargetD2D1.h
-+++ gfx/2d/DrawTargetD2D1.h
-@@ -173,6 +173,8 @@ public:
- private:
- friend class SourceSurfaceD2D1;
-
-+ void FlushInternal(bool aHasDependencyMutex = false);
-+
- typedef std::unordered_set<DrawTargetD2D1*> TargetSet;
-
- // This function will mark the surface as changing, and make sure any
-diff --git gfx/2d/Factory.cpp gfx/2d/Factory.cpp
-index e9f5a25e628b..377bae436064 100644
---- gfx/2d/Factory.cpp
-+++ gfx/2d/Factory.cpp
-@@ -222,6 +222,7 @@ StaticRefPtr<ID2D1Device> Factory::mD2D1Device;
- StaticRefPtr<IDWriteFactory> Factory::mDWriteFactory;
- bool Factory::mDWriteFactoryInitialized = false;
- StaticMutex Factory::mDeviceLock;
-+StaticMutex Factory::mDTDependencyLock;
- #endif
-
- DrawEventRecorder *Factory::mRecorder;
diff --git a/www/waterfox/files/patch-bug1426002 b/www/waterfox/files/patch-bug1426002
deleted file mode 100644
index 8c69ea3cb3be..000000000000
--- a/www/waterfox/files/patch-bug1426002
+++ /dev/null
@@ -1,34 +0,0 @@
-commit 7ee28da3b920
-Author: Boris Zbarsky <bzbarsky@mit.edu>
-Date: Thu Dec 21 15:08:49 2017 -0500
-
- Bug 1426002. Bail out of document.open if beforeunload tears things down. r=mystor
-
- MozReview-Commit-ID: GDozCq4Qbni
----
- dom/html/nsHTMLDocument.cpp | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git dom/html/nsHTMLDocument.cpp dom/html/nsHTMLDocument.cpp
-index 5ad609c0802b..ce974748034f 100644
---- dom/html/nsHTMLDocument.cpp
-+++ dom/html/nsHTMLDocument.cpp
-@@ -1598,6 +1598,18 @@ nsHTMLDocument::Open(JSContext* cx,
- nsCOMPtr<nsIDocument> ret = this;
- return ret.forget();
- }
-+
-+ // Now double-check that our invariants still hold.
-+ if (!mScriptGlobalObject) {
-+ nsCOMPtr<nsIDocument> ret = this;
-+ return ret.forget();
-+ }
-+
-+ nsPIDOMWindowOuter* outer = GetWindow();
-+ if (!outer || (GetInnerWindow() != outer->GetCurrentInnerWindow())) {
-+ nsCOMPtr<nsIDocument> ret = this;
-+ return ret.forget();
-+ }
- }
-
- nsCOMPtr<nsIWebNavigation> webnav(do_QueryInterface(shell));
diff --git a/www/waterfox/files/patch-bug1428947 b/www/waterfox/files/patch-bug1428947
deleted file mode 100644
index 9e3b652c50d9..000000000000
--- a/www/waterfox/files/patch-bug1428947
+++ /dev/null
@@ -1,90 +0,0 @@
-commit 1251c93456f6
-Author: Dan Glastonbury <dan.glastonbury@gmail.com>
-Date: Thu Feb 15 13:06:39 2018 +0200
-
- Bug 1428947 - Check plane width & stride constraints. r=mattwoodrow a=ritu
-
- MozReview-Commit-ID: HEcMG4JoEl3
-
- --HG--
- extra : amend_source : af70dc6dacdc867a39c40b0b1b8c05cea49c7586
----
- dom/media/MediaData.cpp | 2 +-
- gfx/layers/ImageContainer.cpp | 23 +++++++++++++----------
- 2 files changed, 14 insertions(+), 11 deletions(-)
-
-diff --git dom/media/MediaData.cpp dom/media/MediaData.cpp
-index 445475163687..9aa2d58e9ded 100644
---- dom/media/MediaData.cpp
-+++ dom/media/MediaData.cpp
-@@ -108,7 +108,8 @@ ValidatePlane(const VideoData::YCbCrBuffer::Plane& aPlane)
- return aPlane.mWidth <= PlanarYCbCrImage::MAX_DIMENSION
- && aPlane.mHeight <= PlanarYCbCrImage::MAX_DIMENSION
- && aPlane.mWidth * aPlane.mHeight < MAX_VIDEO_WIDTH * MAX_VIDEO_HEIGHT
-- && aPlane.mStride > 0;
-+ && aPlane.mStride > 0
-+ && aPlane.mWidth <= aPlane.mStride;
- }
-
- static bool ValidateBufferAndPicture(const VideoData::YCbCrBuffer& aBuffer,
-diff --git gfx/layers/ImageContainer.cpp gfx/layers/ImageContainer.cpp
-index f00d856754af..3e397def86f7 100644
---- gfx/layers/ImageContainer.cpp
-+++ gfx/layers/ImageContainer.cpp
-@@ -539,12 +539,15 @@ static void
- CopyPlane(uint8_t *aDst, const uint8_t *aSrc,
- const gfx::IntSize &aSize, int32_t aStride, int32_t aSkip)
- {
-+ int32_t height = aSize.height;
-+ int32_t width = aSize.width;
-+
-+ MOZ_RELEASE_ASSERT(width <= aStride);
-+
- if (!aSkip) {
- // Fast path: planar input.
-- memcpy(aDst, aSrc, aSize.height * aStride);
-+ memcpy(aDst, aSrc, height * aStride);
- } else {
-- int32_t height = aSize.height;
-- int32_t width = aSize.width;
- for (int y = 0; y < height; ++y) {
- const uint8_t *src = aSrc;
- uint8_t *dst = aDst;
-@@ -562,13 +565,11 @@ CopyPlane(uint8_t *aDst, const uint8_t *aSrc,
- bool
- RecyclingPlanarYCbCrImage::CopyData(const Data& aData)
- {
-- mData = aData;
--
- // update buffer size
- // Use uint32_t throughout to match AllocateBuffer's param and mBufferSize
- const auto checkedSize =
-- CheckedInt<uint32_t>(mData.mCbCrStride) * mData.mCbCrSize.height * 2 +
-- CheckedInt<uint32_t>(mData.mYStride) * mData.mYSize.height;
-+ CheckedInt<uint32_t>(aData.mCbCrStride) * aData.mCbCrSize.height * 2 +
-+ CheckedInt<uint32_t>(aData.mYStride) * aData.mYSize.height;
-
- if (!checkedSize.isValid())
- return false;
-@@ -583,16 +584,18 @@ RecyclingPlanarYCbCrImage::CopyData(const Data& aData)
- // update buffer size
- mBufferSize = size;
-
-+ mData = aData;
- mData.mYChannel = mBuffer.get();
- mData.mCbChannel = mData.mYChannel + mData.mYStride * mData.mYSize.height;
- mData.mCrChannel = mData.mCbChannel + mData.mCbCrStride * mData.mCbCrSize.height;
-+ mData.mYSkip = mData.mCbSkip = mData.mCrSkip = 0;
-
- CopyPlane(mData.mYChannel, aData.mYChannel,
-- mData.mYSize, mData.mYStride, mData.mYSkip);
-+ aData.mYSize, aData.mYStride, aData.mYSkip);
- CopyPlane(mData.mCbChannel, aData.mCbChannel,
-- mData.mCbCrSize, mData.mCbCrStride, mData.mCbSkip);
-+ aData.mCbCrSize, aData.mCbCrStride, aData.mCbSkip);
- CopyPlane(mData.mCrChannel, aData.mCrChannel,
-- mData.mCbCrSize, mData.mCbCrStride, mData.mCrSkip);
-+ aData.mCbCrSize, aData.mCbCrStride, aData.mCrSkip);
-
- mSize = aData.mPicSize;
- mOrigin = gfx::IntPoint(aData.mPicX, aData.mPicY);
diff --git a/www/waterfox/files/patch-bug1429093 b/www/waterfox/files/patch-bug1429093
deleted file mode 100644
index 5450a605b613..000000000000
--- a/www/waterfox/files/patch-bug1429093
+++ /dev/null
@@ -1,135 +0,0 @@
-commit 0476b46775d8
-Author: Tom Tung <shes050117@gmail.com>
-Date: Wed Jan 10 18:05:07 2018 +0800
-
- Bug 1429093 - Part 1: Only allow notification click to call allowWindowInteraction. r=bkelly, a=lizzard
-
- --HG--
- extra : source : 20b048f7a32fc9d76827c2f06be1d50afb8bbd00
----
- dom/workers/ServiceWorkerPrivate.cpp | 14 +++++++++-----
- 1 file changed, 9 insertions(+), 5 deletions(-)
-
-diff --git dom/workers/ServiceWorkerPrivate.cpp dom/workers/ServiceWorkerPrivate.cpp
-index 8b7cabf2a345..53b8cf30fa5c 100644
---- dom/workers/ServiceWorkerPrivate.cpp
-+++ dom/workers/ServiceWorkerPrivate.cpp
-@@ -1253,18 +1253,22 @@ public:
- }
-
- event->SetTrusted(true);
-- aWorkerPrivate->GlobalScope()->AllowWindowInteraction();
-- RefPtr<AllowWindowInteractionHandler> allowWindowInteraction =
-- new AllowWindowInteractionHandler(aWorkerPrivate);
-+
-+ RefPtr<AllowWindowInteractionHandler> allowWindowInteraction;
-+ if (mEventName.EqualsLiteral(NOTIFICATION_CLICK_EVENT_NAME)) {
-+ allowWindowInteraction =
-+ new AllowWindowInteractionHandler(aWorkerPrivate);
-+ }
-+
- nsresult rv = DispatchExtendableEventOnWorkerScope(aCx,
- aWorkerPrivate->GlobalScope(),
- event,
- allowWindowInteraction);
- // Don't reject when catching an exception
-- if (NS_FAILED(rv) && rv != NS_ERROR_XPC_JS_THREW_EXCEPTION) {
-+ if (NS_FAILED(rv) && rv != NS_ERROR_XPC_JS_THREW_EXCEPTION &&
-+ allowWindowInteraction) {
- allowWindowInteraction->FinishedWithResult(Rejected);
- }
-- aWorkerPrivate->GlobalScope()->ConsumeWindowInteraction();
-
- return true;
- }
-commit 13c168bfd520
-Author: Tom Tung <shes050117@gmail.com>
-Date: Wed Jan 17 11:31:31 2018 +0800
-
- Bug 1429093 - Part 2: A test to verify the close event is not allowed to window interaction. r=bkelly, a=lizzard
-
- --HG--
- extra : source : abd11ceb68ca7f0b04a4e4b3dc49090c523ad067
----
- .../test/serviceworkers/notificationclose.html | 2 +-
- .../test/serviceworkers/notificationclose.js | 31 ++++++++++++++--------
- .../serviceworkers/test_notificationclose.html | 6 +++--
- 3 files changed, 25 insertions(+), 14 deletions(-)
-
-diff --git dom/workers/test/serviceworkers/notificationclose.html dom/workers/test/serviceworkers/notificationclose.html
-index 10c8da453976..f18801122efb 100644
---- dom/workers/test/serviceworkers/notificationclose.html
-+++ dom/workers/test/serviceworkers/notificationclose.html
-@@ -27,7 +27,7 @@
- });
-
- navigator.serviceWorker.onmessage = function(msg) {
-- testWindow.callback(msg.data.result);
-+ testWindow.callback(msg.data);
- };
- </script>
-
-diff --git dom/workers/test/serviceworkers/notificationclose.js dom/workers/test/serviceworkers/notificationclose.js
-index d482180752e5..f04a0ad24430 100644
---- dom/workers/test/serviceworkers/notificationclose.js
-+++ dom/workers/test/serviceworkers/notificationclose.js
-@@ -2,18 +2,27 @@
- // http://creativecommons.org/publicdomain/zero/1.0/
- //
- onnotificationclose = function(e) {
-- self.clients.matchAll().then(function(clients) {
-- if (clients.length === 0) {
-- dump("********************* CLIENTS LIST EMPTY! Test will timeout! ***********************\n");
-- return;
-- }
-+ e.waitUntil(async function() {
-+ let windowOpened = true;
-+ await clients.openWindow("hello.html")
-+ .catch(err => {
-+ windowOpened = false;
-+ });
-
-- clients.forEach(function(client) {
-- client.postMessage({ result: e.notification.data &&
-- e.notification.data['complex'] &&
-- e.notification.data['complex'][0] == "jsval" &&
-- e.notification.data['complex'][1] == 5 });
-+ self.clients.matchAll().then(function(clients) {
-+ if (clients.length === 0) {
-+ dump("*** CLIENTS LIST EMPTY! Test will timeout! ***\n");
-+ return;
-+ }
-
-+ clients.forEach(function(client) {
-+ client.postMessage({ result: e.notification.data &&
-+ e.notification.data['complex'] &&
-+ e.notification.data['complex'][0] == "jsval" &&
-+ e.notification.data['complex'][1] == 5,
-+ windowOpened: windowOpened});
-+
-+ });
- });
-- });
-+ }());
- }
-diff --git dom/workers/test/serviceworkers/test_notificationclose.html dom/workers/test/serviceworkers/test_notificationclose.html
-index 032dd740bbff..f60482789ab5 100644
---- dom/workers/test/serviceworkers/test_notificationclose.html
-+++ dom/workers/test/serviceworkers/test_notificationclose.html
-@@ -24,11 +24,13 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1265841
- function testFrame(src) {
- var iframe = document.createElement("iframe");
- iframe.src = src;
-- window.callback = function(result) {
-+ window.callback = function(data) {
- window.callback = null;
- document.body.removeChild(iframe);
- iframe = null;
-- ok(result, "Got notificationclose event with correct data.");
-+ ok(data.result, "Got notificationclose event with correct data.");
-+ ok(!data.windowOpened,
-+ "Shouldn't allow to openWindow in notificationclose");
- MockServices.unregister();
- registration.unregister().then(function() {
- SimpleTest.finish();
-
diff --git a/www/waterfox/files/patch-bug1431336 b/www/waterfox/files/patch-bug1431336
deleted file mode 100644
index 8fe290a25eae..000000000000
--- a/www/waterfox/files/patch-bug1431336
+++ /dev/null
@@ -1,34 +0,0 @@
-commit d606d1200b5a
-Author: Makoto Kato <m_kato@ga2.so-net.ne.jp>
-Date: Mon Feb 19 13:12:29 2018 +0900
-
- Bug 1431336. r=smaug a=abillings
----
- dom/html/nsTextEditorState.cpp | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git dom/html/nsTextEditorState.cpp dom/html/nsTextEditorState.cpp
-index a8247d183732..1430d1005e2a 100644
---- dom/html/nsTextEditorState.cpp
-+++ dom/html/nsTextEditorState.cpp
-@@ -936,7 +936,8 @@ nsTextInputListener::NotifySelectionChanged(nsIDOMDocument* aDoc, nsISelection*
-
- mSelectionWasCollapsed = collapsed;
-
-- if (!weakFrame.IsAlive() || !nsContentUtils::IsFocusedContent(mFrame->GetContent()))
-+ if (!weakFrame.IsAlive() || !mFrame ||
-+ !nsContentUtils::IsFocusedContent(mFrame->GetContent()))
- return NS_OK;
-
- return UpdateTextInputCommands(NS_LITERAL_STRING("select"), aSel, aReason);
-@@ -1792,8 +1793,9 @@ nsTextEditorState::SetSelectionRange(uint32_t aStart, uint32_t aEnd,
- props.SetEnd(aEnd);
- props.SetDirection(aDirection);
- } else {
-+ WeakPtr<nsTextEditorState> self(this);
- aRv = mBoundFrame->SetSelectionRange(aStart, aEnd, aDirection);
-- if (aRv.Failed()) {
-+ if (aRv.Failed() || !self.get()) {
- return;
- }
- rv = mBoundFrame->ScrollSelectionIntoView();
diff --git a/www/waterfox/files/patch-bug1433005 b/www/waterfox/files/patch-bug1433005
deleted file mode 100644
index 4348481e46c0..000000000000
--- a/www/waterfox/files/patch-bug1433005
+++ /dev/null
@@ -1,52 +0,0 @@
-commit f2d8528c4e01
-Author: Dan Minor <dminor@mozilla.com>
-Date: Fri Jan 26 11:46:51 2018 -0500
-
- Bug 1433005 - Simplify codec pruning in NegotiateCodecs. r=bwc, a=lizzard
----
- media/webrtc/signaling/src/jsep/JsepTrack.cpp | 29 ++++++++++++++++-----------
- 1 file changed, 17 insertions(+), 12 deletions(-)
-
-diff --git media/webrtc/signaling/src/jsep/JsepTrack.cpp media/webrtc/signaling/src/jsep/JsepTrack.cpp
-index 2fab2501b854..b921df77f3a0 100644
---- media/webrtc/signaling/src/jsep/JsepTrack.cpp
-+++ media/webrtc/signaling/src/jsep/JsepTrack.cpp
-@@ -486,21 +486,26 @@ JsepTrack::NegotiateCodecs(
-
- // TODO(bug 814227): Remove this once we're ready to put multiple codecs in an
- // answer. For now, remove all but the first codec unless the red codec
-- // exists, and then we include the others per RFC 5109, section 14.2.
-- // Note: now allows keeping the telephone-event codec, if it appears, as the
-- // last codec in the list.
-+ // exists, in which case we include the others per RFC 5109, section 14.2.
- if (!codecs->empty() && !red) {
-- int newSize = dtmf ? 2 : 1;
-- for (size_t i = 1; i < codecs->size(); ++i) {
-- if (!dtmf || dtmf != (*codecs)[i]) {
-- delete (*codecs)[i];
-- (*codecs)[i] = nullptr;
-+ std::vector<JsepCodecDescription*> codecsToKeep;
-+
-+ bool foundPreferredCodec = false;
-+ for (auto codec: *codecs) {
-+ if (codec == dtmf) {
-+ codecsToKeep.push_back(codec);
-+ // TODO: keep ulpfec when we enable it in Bug 875922
-+ // } else if (codec == ulpfec) {
-+ // codecsToKeep.push_back(codec);
-+ } else if (!foundPreferredCodec) {
-+ codecsToKeep.insert(codecsToKeep.begin(), codec);
-+ foundPreferredCodec = true;
-+ } else {
-+ delete codec;
- }
- }
-- if (dtmf) {
-- (*codecs)[newSize-1] = dtmf;
-- }
-- codecs->resize(newSize);
-+
-+ *codecs = codecsToKeep;
- }
- }
-
diff --git a/www/waterfox/files/patch-bug1435566 b/www/waterfox/files/patch-bug1435566
deleted file mode 100644
index d1a1807e8e39..000000000000
--- a/www/waterfox/files/patch-bug1435566
+++ /dev/null
@@ -1,27 +0,0 @@
-commit 2d6648d9388d
-Author: Emilio Cobos Álvarez <emilio@crisal.io>
-Date: Thu Feb 15 11:21:55 2018 +0100
-
- Bug 1435566: Make sure to drop frames for manual NAC from display: contents nodes. r=bz a=RyanVM
-
- MozReview-Commit-ID: 9CQIueSPwCV
-
- --HG--
- extra : source : 3219cd61e87b4f3003079154c437efa87080a917
----
- layout/base/nsCSSFrameConstructor.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git layout/base/nsCSSFrameConstructor.cpp layout/base/nsCSSFrameConstructor.cpp
-index 4a45072cbca5..7b6be5f222e8 100644
---- layout/base/nsCSSFrameConstructor.cpp
-+++ layout/base/nsCSSFrameConstructor.cpp
-@@ -8533,7 +8533,7 @@ nsCSSFrameConstructor::ContentRemoved(nsIContent* aContainer,
- return true;
- }
-
-- FlattenedChildIterator iter(aChild);
-+ StyleChildrenIterator iter(aChild);
- for (nsIContent* c = iter.GetNextChild(); c; c = iter.GetNextChild()) {
- if (c->GetPrimaryFrame() || GetDisplayContentsStyleFor(c)) {
- LAYOUT_PHASE_TEMP_EXIT();
diff --git a/www/waterfox/files/patch-bug1440775 b/www/waterfox/files/patch-bug1440775
deleted file mode 100644
index 30db9ede56c0..000000000000
--- a/www/waterfox/files/patch-bug1440775
+++ /dev/null
@@ -1,48 +0,0 @@
-commit ee49d895ca4d
-Author: Ben Kelly <ben@wanderview.com>
-Date: Thu Mar 1 07:37:31 2018 -0800
-
- Bug 1440775 - Make fetch API force-cache and only-if-cached use VALIDATE_NEVER instead of LOAD_FROM_CACHE. r=mayhemer, a=lizzard
-
- --HG--
- extra : source : 60fb09de57ec145923da102f856399d3323f632b
- extra : amend_source : 8313874cbe86a98931cec9300705c413925ab86e
- extra : histedit_source : 460a462c383183c353eb1bebff0f349261908d6a
----
- netwerk/protocol/http/HttpBaseChannel.cpp | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
-diff --git netwerk/protocol/http/HttpBaseChannel.cpp netwerk/protocol/http/HttpBaseChannel.cpp
-index 8c984e6531e0..8b56edd01bde 100644
---- netwerk/protocol/http/HttpBaseChannel.cpp
-+++ netwerk/protocol/http/HttpBaseChannel.cpp
-@@ -2825,9 +2825,9 @@ HttpBaseChannel::GetFetchCacheMode(uint32_t* aFetchCacheMode)
- *aFetchCacheMode = nsIHttpChannelInternal::FETCH_CACHE_MODE_RELOAD;
- } else if (mLoadFlags & VALIDATE_ALWAYS) {
- *aFetchCacheMode = nsIHttpChannelInternal::FETCH_CACHE_MODE_NO_CACHE;
-- } else if (mLoadFlags & (LOAD_FROM_CACHE | nsICachingChannel::LOAD_ONLY_FROM_CACHE)) {
-+ } else if (mLoadFlags & (VALIDATE_NEVER | nsICachingChannel::LOAD_ONLY_FROM_CACHE)) {
- *aFetchCacheMode = nsIHttpChannelInternal::FETCH_CACHE_MODE_ONLY_IF_CACHED;
-- } else if (mLoadFlags & LOAD_FROM_CACHE) {
-+ } else if (mLoadFlags & VALIDATE_NEVER) {
- *aFetchCacheMode = nsIHttpChannelInternal::FETCH_CACHE_MODE_FORCE_CACHE;
- } else {
- *aFetchCacheMode = nsIHttpChannelInternal::FETCH_CACHE_MODE_DEFAULT;
-@@ -2863,7 +2863,7 @@ HttpBaseChannel::SetFetchCacheMode(uint32_t aFetchCacheMode)
- break;
- case nsIHttpChannelInternal::FETCH_CACHE_MODE_FORCE_CACHE:
- // force-cache means don't validate unless if the response would vary.
-- mLoadFlags |= LOAD_FROM_CACHE;
-+ mLoadFlags |= VALIDATE_NEVER;
- break;
- case nsIHttpChannelInternal::FETCH_CACHE_MODE_ONLY_IF_CACHED:
- // only-if-cached means only from cache, no network, no validation, generate
-@@ -2872,7 +2872,7 @@ HttpBaseChannel::SetFetchCacheMode(uint32_t aFetchCacheMode)
- // the user has things in their cache without any network traffic side
- // effects) are addressed in the Request constructor which enforces/requires
- // same-origin request mode.
-- mLoadFlags |= LOAD_FROM_CACHE | nsICachingChannel::LOAD_ONLY_FROM_CACHE;
-+ mLoadFlags |= VALIDATE_NEVER | nsICachingChannel::LOAD_ONLY_FROM_CACHE;
- break;
- }
-
diff --git a/www/waterfox/files/patch-bug1441006 b/www/waterfox/files/patch-bug1441006
deleted file mode 100644
index f7f20741e2b6..000000000000
--- a/www/waterfox/files/patch-bug1441006
+++ /dev/null
@@ -1,109 +0,0 @@
-commit 2b7e4dc17f0e
-Author: Jan de Mooij <jdemooij@mozilla.com>
-Date: Thu Mar 1 15:37:29 2018 +0100
-
- Bug 1441006 - Use unsigned type for SlotsEdge start/count. r=jonco, a=RyanVM
-
- --HG--
- extra : source : 1f4e74a5ace81acdcf8a973e841c62099f238251
- extra : histedit_source : 85b5a92599c8452a61da9c921546e73660c402a9
----
- js/src/gc/Marking.cpp | 19 +++++++++++--------
- js/src/gc/StoreBuffer.h | 20 +++++++++++---------
- js/src/jit/VMFunctions.cpp | 5 ++++-
- 3 files changed, 26 insertions(+), 18 deletions(-)
-
-diff --git js/src/gc/Marking.cpp js/src/gc/Marking.cpp
-index 1998b2a397c4..5089b1e6dde5 100644
---- js/src/gc/Marking.cpp
-+++ js/src/gc/Marking.cpp
-@@ -2762,18 +2762,21 @@ js::gc::StoreBuffer::SlotsEdge::trace(TenuringTracer& mover) const
- return;
-
- if (kind() == ElementKind) {
-- int32_t initLen = obj->getDenseInitializedLength();
-- int32_t numShifted = obj->getElementsHeader()->numShiftedElements();
-- int32_t clampedStart = Min(Max(0, start_ - numShifted), initLen);
-- int32_t clampedEnd = Min(Max(0, start_ + count_ - numShifted), initLen);
-- MOZ_ASSERT(clampedStart >= 0);
-+ uint32_t initLen = obj->getDenseInitializedLength();
-+ uint32_t numShifted = obj->getElementsHeader()->numShiftedElements();
-+ uint32_t clampedStart = start_;
-+ clampedStart = numShifted < clampedStart ? clampedStart - numShifted : 0;
-+ clampedStart = Min(clampedStart, initLen);
-+ uint32_t clampedEnd = start_ + count_;
-+ clampedEnd = numShifted < clampedEnd ? clampedEnd - numShifted : 0;
-+ clampedEnd = Min(clampedEnd, initLen);
- MOZ_ASSERT(clampedStart <= clampedEnd);
- mover.traceSlots(static_cast<HeapSlot*>(obj->getDenseElements() + clampedStart)
- ->unsafeUnbarrieredForTracing(), clampedEnd - clampedStart);
- } else {
-- int32_t start = Min(uint32_t(start_), obj->slotSpan());
-- int32_t end = Min(uint32_t(start_) + count_, obj->slotSpan());
-- MOZ_ASSERT(end >= start);
-+ uint32_t start = Min(start_, obj->slotSpan());
-+ uint32_t end = Min(start_ + count_, obj->slotSpan());
-+ MOZ_ASSERT(start <= end);
- mover.traceObjectSlots(obj, start, end - start);
- }
- }
-diff --git js/src/gc/StoreBuffer.h js/src/gc/StoreBuffer.h
-index cf54928a6315..f848836533ca 100644
---- js/src/gc/StoreBuffer.h
-+++ js/src/gc/StoreBuffer.h
-@@ -277,17 +277,17 @@ class StoreBuffer
- const static int ElementKind = 1;
-
- uintptr_t objectAndKind_; // NativeObject* | Kind
-- int32_t start_;
-- int32_t count_;
-+ uint32_t start_;
-+ uint32_t count_;
-
- SlotsEdge() : objectAndKind_(0), start_(0), count_(0) {}
-- SlotsEdge(NativeObject* object, int kind, int32_t start, int32_t count)
-+ SlotsEdge(NativeObject* object, int kind, uint32_t start, uint32_t count)
- : objectAndKind_(uintptr_t(object) | kind), start_(start), count_(count)
- {
- MOZ_ASSERT((uintptr_t(object) & 1) == 0);
- MOZ_ASSERT(kind <= 1);
-- MOZ_ASSERT(start >= 0);
- MOZ_ASSERT(count > 0);
-+ MOZ_ASSERT(start + count > start);
- }
-
- NativeObject* object() const { return reinterpret_cast<NativeObject*>(objectAndKind_ & ~1); }
-@@ -314,10 +314,12 @@ class StoreBuffer
- // is particularly useful for coalescing a series of increasing or
- // decreasing single index writes 0, 1, 2, ..., N into a SlotsEdge
- // range of elements [0, N].
-- auto end = start_ + count_ + 1;
-- auto start = start_ - 1;
-+ uint32_t end = start_ + count_ + 1;
-+ uint32_t start = start_ > 0 ? start_ - 1 : 0;
-+ MOZ_ASSERT(start < end);
-
-- auto otherEnd = other.start_ + other.count_;
-+ uint32_t otherEnd = other.start_ + other.count_;
-+ MOZ_ASSERT(other.start_ <= otherEnd);
- return (start <= other.start_ && other.start_ <= end) ||
- (start <= otherEnd && otherEnd <= end);
- }
-@@ -327,7 +329,7 @@ class StoreBuffer
- // overlap.
- void merge(const SlotsEdge& other) {
- MOZ_ASSERT(overlaps(other));
-- auto end = Max(start_ + count_, other.start_ + other.count_);
-+ uint32_t end = Max(start_ + count_, other.start_ + other.count_);
- start_ = Min(start_, other.start_);
- count_ = end - start_;
- }
-@@ -415,7 +417,7 @@ class StoreBuffer
- void unputValue(JS::Value* vp) { unput(bufferVal, ValueEdge(vp)); }
- void putCell(Cell** cellp) { put(bufferCell, CellPtrEdge(cellp)); }
- void unputCell(Cell** cellp) { unput(bufferCell, CellPtrEdge(cellp)); }
-- void putSlot(NativeObject* obj, int kind, int32_t start, int32_t count) {
-+ void putSlot(NativeObject* obj, int kind, uint32_t start, uint32_t count) {
- SlotsEdge edge(obj, kind, start, count);
- if (bufferSlot.last_.overlaps(edge))
- bufferSlot.last_.merge(edge);
diff --git a/www/waterfox/files/patch-bug1446062 b/www/waterfox/files/patch-bug1446062
deleted file mode 100644
index bffab33a0c99..000000000000
--- a/www/waterfox/files/patch-bug1446062
+++ /dev/null
@@ -1,177 +0,0 @@
-commit 028c6e8c32ea
-Author: Monty Montgomery <monty@xiph.org>
-Date: Thu Mar 15 18:12:05 2018 -0400
-
- Bug 1446062 - Vorbis fix. r=jmspeex, a=lizzard
-
- --HG--
- extra : source : 6b4e98424f0dcc024fcad48608ada351e4075e59
- extra : intermediate-source : 1dfbedb54c39abae38da9329f4a79571fee74661
----
- media/libvorbis/lib/vorbis_codebook.c | 48 ++++++++---------------------------
- 1 file changed, 10 insertions(+), 38 deletions(-)
-
-diff --git media/libvorbis/lib/vorbis_codebook.c media/libvorbis/lib/vorbis_codebook.c
-index 321a28faa0cc..78672e222d85 100644
---- media/libvorbis/lib/vorbis_codebook.c
-+++ media/libvorbis/lib/vorbis_codebook.c
-@@ -386,7 +386,7 @@ long vorbis_book_decodevs_add(codebook *book,float *a,oggpack_buffer *b,int n){
- t[i] = book->valuelist+entry[i]*book->dim;
- }
- for(i=0,o=0;i<book->dim;i++,o+=step)
-- for (j=0;j<step;j++)
-+ for (j=0;o+j<n && j<step;j++)
- a[o+j]+=t[j][i];
- }
- return(0);
-@@ -398,41 +398,12 @@ long vorbis_book_decodev_add(codebook *book,float *a,oggpack_buffer *b,int n){
- int i,j,entry;
- float *t;
-
-- if(book->dim>8){
-- for(i=0;i<n;){
-- entry = decode_packed_entry_number(book,b);
-- if(entry==-1)return(-1);
-- t = book->valuelist+entry*book->dim;
-- for (j=0;j<book->dim;)
-- a[i++]+=t[j++];
-- }
-- }else{
-- for(i=0;i<n;){
-- entry = decode_packed_entry_number(book,b);
-- if(entry==-1)return(-1);
-- t = book->valuelist+entry*book->dim;
-- j=0;
-- switch((int)book->dim){
-- case 8:
-- a[i++]+=t[j++];
-- case 7:
-- a[i++]+=t[j++];
-- case 6:
-- a[i++]+=t[j++];
-- case 5:
-- a[i++]+=t[j++];
-- case 4:
-- a[i++]+=t[j++];
-- case 3:
-- a[i++]+=t[j++];
-- case 2:
-- a[i++]+=t[j++];
-- case 1:
-- a[i++]+=t[j++];
-- case 0:
-- break;
-- }
-- }
-+ for(i=0;i<n;){
-+ entry = decode_packed_entry_number(book,b);
-+ if(entry==-1)return(-1);
-+ t = book->valuelist+entry*book->dim;
-+ for(j=0;i<n && j<book->dim;)
-+ a[i++]+=t[j++];
- }
- }
- return(0);
-@@ -470,12 +441,13 @@ long vorbis_book_decodevv_add(codebook *book,float **a,long offset,int ch,
- long i,j,entry;
- int chptr=0;
- if(book->used_entries>0){
-- for(i=offset/ch;i<(offset+n)/ch;){
-+ int m=(offset+n)/ch;
-+ for(i=offset/ch;i<m;){
- entry = decode_packed_entry_number(book,b);
- if(entry==-1)return(-1);
- {
- const float *t = book->valuelist+entry*book->dim;
-- for (j=0;j<book->dim;j++){
-+ for (j=0;i<m && j<book->dim;j++){
- a[chptr++][i]+=t[j];
- if(chptr==ch){
- chptr=0;
-
-commit fbddf2078fef
-Author: Thomas Daede <daede003@umn.edu>
-Date: Thu Mar 15 21:47:09 2018 -0700
-
- Bug 1446062: libtremor Vorbis fix. r=jmspeex a=dveditz
-
- --HG--
- extra : transplant_source : %D3%CE8%8D%D3%C0%D3%C7%BE%7D%F2m%5DM%E3%A0%E4%0CW%F3
----
- media/libtremor/lib/tremor_codebook.c | 18 +++++++++---------
- 1 file changed, 9 insertions(+), 9 deletions(-)
-
-diff --git media/libtremor/lib/tremor_codebook.c media/libtremor/lib/tremor_codebook.c
-index f8b798384134..1e1ae8a916b0 100644
---- media/libtremor/lib/tremor_codebook.c
-+++ media/libtremor/lib/tremor_codebook.c
-@@ -258,7 +258,7 @@ long vorbis_book_decodevs_add(codebook *book,ogg_int32_t *a,
- t[i] = book->valuelist+entry[i]*book->dim;
- }
- for(i=0,o=0;i<book->dim;i++,o+=step)
-- for (j=0;j<step;j++)
-+ for (j=0;o+j<n && j<step;j++)
- a[o+j]+=t[j][i]>>shift;
- }else{
- for (i = 0; i < step; i++) {
-@@ -267,7 +267,7 @@ long vorbis_book_decodevs_add(codebook *book,ogg_int32_t *a,
- t[i] = book->valuelist+entry[i]*book->dim;
- }
- for(i=0,o=0;i<book->dim;i++,o+=step)
-- for (j=0;j<step;j++)
-+ for (j=0;o+j<n && j<step;j++)
- a[o+j]+=t[j][i]<<-shift;
- }
- }
-@@ -287,7 +287,7 @@ long vorbis_book_decodev_add(codebook *book,ogg_int32_t *a,
- entry = decode_packed_entry_number(book,b);
- if(entry==-1)return(-1);
- t = book->valuelist+entry*book->dim;
-- for (j=0;j<book->dim;)
-+ for (j=0;i<n && j<book->dim;)
- a[i++]+=t[j++]>>shift;
- }
- }else{
-@@ -295,7 +295,7 @@ long vorbis_book_decodev_add(codebook *book,ogg_int32_t *a,
- entry = decode_packed_entry_number(book,b);
- if(entry==-1)return(-1);
- t = book->valuelist+entry*book->dim;
-- for (j=0;j<book->dim;)
-+ for (j=0;i<n && j<book->dim;)
- a[i++]+=t[j++]<<-shift;
- }
- }
-@@ -352,15 +352,15 @@ long vorbis_book_decodevv_add(codebook *book,ogg_int32_t **a,\
- long i,j,entry;
- int chptr=0;
- int shift=point-book->binarypoint;
--
-+ int m=offset+n;
- if(shift>=0){
-
-- for(i=offset;i<offset+n;){
-+ for(i=offset;i<m;){
- entry = decode_packed_entry_number(book,b);
- if(entry==-1)return(-1);
- {
- const ogg_int32_t *t = book->valuelist+entry*book->dim;
-- for (j=0;j<book->dim;j++){
-+ for (j=0;i<m && j<book->dim;j++){
- a[chptr++][i]+=t[j]>>shift;
- if(chptr==ch){
- chptr=0;
-@@ -371,12 +371,12 @@ long vorbis_book_decodevv_add(codebook *book,ogg_int32_t **a,\
- }
- }else{
-
-- for(i=offset;i<offset+n;){
-+ for(i=offset;i<m;){
- entry = decode_packed_entry_number(book,b);
- if(entry==-1)return(-1);
- {
- const ogg_int32_t *t = book->valuelist+entry*book->dim;
-- for (j=0;j<book->dim;j++){
-+ for (j=0;i<m && j<book->dim;j++){
- a[chptr++][i]+=t[j]<<-shift;
- if(chptr==ch){
- chptr=0;
diff --git a/www/waterfox/files/patch-typos b/www/waterfox/files/patch-typos
index e7f8099c6039..6863fd62d4e9 100644
--- a/www/waterfox/files/patch-typos
+++ b/www/waterfox/files/patch-typos
@@ -1,5 +1,15 @@
Mismerges found by comparing changes with Firefox 56
+--- browser/components/customizableui/CustomizeMode.jsm
++++ browser/components/customizableui/CustomizeMode.jsm
+@@ -735,7 +735,6 @@ CustomizeMode.prototype = {
+ // Put the tip contents in the popup.
+ let bundle = this.document.getElementById("bundle_browser");
+ const kLabelClass = "customization-tipPanel-link";
+- // eslint-disable-next-line no-unsanitized/property
+ messageNode.unsafeSetInnerHTML(bundle.getFormattedString("customizeTips.tip0", [
+ "<label class=\"customization-tipPanel-em\" value=\"" +
+ bundle.getString("customizeTips.tip0.hint") + "\"/>",
--- dom/base/nsNodeUtils.cpp.orig
+++ dom/base/nsNodeUtils.cpp
@@ -589,6 +589,7 @@ nsNodeUtils::CloneAndAdopt(nsINode *aNode, bool aClone, bool aDeep,
@@ -10,6 +20,26 @@ Mismerges found by comparing changes with Firefox 56
if (elem) {
elem->NodeInfoChanged(newDoc);
}
+--- dom/xslt/nsIDocumentTransformer.h
++++ dom/xslt/nsIDocumentTransformer.h
+@@ -7,6 +7,7 @@
+
+ #include "nsISupports.h"
+
++class nsIContent;
+ class nsIDocument;
+ class nsIDOMNode;
+ class nsIURI;
+--- gfx/2d/DrawTargetD2D1.cpp
++++ gfx/2d/DrawTargetD2D1.cpp
+@@ -1251,6 +1251,7 @@ DrawTargetD2D1::CleanupD2D()
+ }
+ }
+
++void
+ DrawTargetD2D1::FlushInternal(bool aHasDependencyMutex /* = false */)
+ {
+ if (IsDeviceContextValid()) {
--- security/nss/lib/softoken/softkver.h.orig
+++ security/nss/lib/softoken/softkver.h
@@ -26,6 +26,6 @@
diff --git a/www/waterfox/pkg-descr b/www/waterfox/pkg-descr
index 68aee319d69f..12f87eec88f3 100644
--- a/www/waterfox/pkg-descr
+++ b/www/waterfox/pkg-descr
@@ -20,6 +20,5 @@ Features:
o Removal of Sponsored Tiles on New Tab Page
o Addition of Duplicate Tab option (toggle with browser.tabs.duplicateTab)
o Locale selector in about:preferences > General
- o Cookie Prompt
WWW: https://www.waterfoxproject.org/