svn commit: r461852 - in head/www/waterfox: . files
Jan Beich
jbeich at FreeBSD.org
Thu Feb 15 00:59:57 UTC 2018
Author: jbeich
Date: Thu Feb 15 00:59:54 2018
New Revision: 461852
URL: https://svnweb.freebsd.org/changeset/ports/461852
Log:
www/waterfox: apply FF59 fixes
Added:
head/www/waterfox/files/patch-bug1324042 (contents, props changed)
head/www/waterfox/files/patch-bug1379148 (contents, props changed)
head/www/waterfox/files/patch-bug1397686 (contents, props changed)
head/www/waterfox/files/patch-bug1399091 (contents, props changed)
head/www/waterfox/files/patch-bug1399177 (contents, props changed)
head/www/waterfox/files/patch-bug1401256 (contents, props changed)
head/www/waterfox/files/patch-bug1401726 (contents, props changed)
head/www/waterfox/files/patch-bug1401878 (contents, props changed)
head/www/waterfox/files/patch-bug1416307 (contents, props changed)
head/www/waterfox/files/patch-bug1416529 (contents, props changed)
head/www/waterfox/files/patch-bug1419508 (contents, props changed)
head/www/waterfox/files/patch-bug1425257 (contents, props changed)
head/www/waterfox/files/patch-bug1435320 (contents, props changed)
head/www/waterfox/files/patch-bug1435530 (contents, props changed)
head/www/waterfox/files/patch-z-bug1436267 (contents, props changed)
Modified:
head/www/waterfox/Makefile (contents, props changed)
Modified: head/www/waterfox/Makefile
==============================================================================
--- head/www/waterfox/Makefile Thu Feb 15 00:59:35 2018 (r461851)
+++ head/www/waterfox/Makefile Thu Feb 15 00:59:54 2018 (r461852)
@@ -2,7 +2,7 @@
PORTNAME= waterfox
DISTVERSION= 56.0.4
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= www ipv6
MAINTAINER= jbeich at FreeBSD.org
Added: head/www/waterfox/files/patch-bug1324042
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1324042 Thu Feb 15 00:59:54 2018 (r461852)
@@ -0,0 +1,33 @@
+commit ac0f7d653b1e
+Author: Daniel Holbert <dholbert at cs.stanford.edu>
+Date: Sat Feb 10 08:46:49 2018 -0800
+
+ Bug 1324042: Fix trimmedOffsets arithmetic in GetRenderedText(). r=mats a=abillings
+
+ MozReview-Commit-ID: H4ngU8Juyln
+
+ --HG--
+ extra : source : fbf54020043bd09c162530907b2a1091a10f4f92
+---
+ layout/generic/nsTextFrame.cpp | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git layout/generic/nsTextFrame.cpp layout/generic/nsTextFrame.cpp
+index 42891e960eea..f8b49e4d07cf 100644
+--- layout/generic/nsTextFrame.cpp
++++ layout/generic/nsTextFrame.cpp
+@@ -10116,9 +10116,13 @@ nsTextFrame::GetRenderedText(uint32_t aStartOffset,
+ startOffset = aStartOffset;
+ endOffset = std::min<uint32_t>(INT32_MAX, aEndOffset);
+ }
++
++ // If startOffset and/or endOffset are inside of trimmedOffsets' range,
++ // then clamp the edges of trimmedOffsets accordingly.
++ int32_t origTrimmedOffsetsEnd = trimmedOffsets.GetEnd();
+ trimmedOffsets.mStart = std::max<uint32_t>(trimmedOffsets.mStart,
+ startOffset);
+- trimmedOffsets.mLength = std::min<uint32_t>(trimmedOffsets.GetEnd(),
++ trimmedOffsets.mLength = std::min<uint32_t>(origTrimmedOffsetsEnd,
+ endOffset) - trimmedOffsets.mStart;
+ if (trimmedOffsets.mLength <= 0) {
+ offsetInRenderedString = nextOffsetInRenderedString;
Added: head/www/waterfox/files/patch-bug1379148
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1379148 Thu Feb 15 00:59:54 2018 (r461852)
@@ -0,0 +1,366 @@
+commit 708a5eba5908
+Author: Kris Maglione <maglione.k at gmail.com>
+Date: Wed Sep 20 16:12:27 2017 -0700
+
+ Bug 1379148 - Part 1: Allow blocking only non-script-created parsers. r=hsivonen, a=sledru
+
+ MozReview-Commit-ID: 8cGxywiUzWj
+
+ --HG--
+ extra : source : bee57767629862c4b4bfa6258918551ed7d82998
+---
+ dom/base/nsDocument.cpp | 10 ++++++----
+ dom/base/nsIDocument.h | 1 +
+ dom/webidl/Document.webidl | 11 ++++++++++-
+ 3 files changed, 17 insertions(+), 5 deletions(-)
+
+diff --git dom/base/nsDocument.cpp dom/base/nsDocument.cpp
+index 086b386d35f0..d7d1428966f1 100644
+--- dom/base/nsDocument.cpp
++++ dom/base/nsDocument.cpp
+@@ -10919,11 +10919,12 @@ public:
+ NS_DECL_CYCLE_COLLECTING_ISUPPORTS
+ NS_DECL_CYCLE_COLLECTION_CLASS(UnblockParsingPromiseHandler)
+
+- explicit UnblockParsingPromiseHandler(nsIDocument* aDocument, Promise* aPromise)
++ explicit UnblockParsingPromiseHandler(nsIDocument* aDocument, Promise* aPromise,
++ const BlockParsingOptions& aOptions)
+ : mPromise(aPromise)
+ {
+ nsCOMPtr<nsIParser> parser = aDocument->CreatorParserOrNull();
+- if (parser) {
++ if (parser && (aOptions.mBlockScriptCreated || !parser->IsScriptCreated())) {
+ parser->BlockParser();
+ mParser = do_GetWeakReference(parser);
+ mDocument = aDocument;
+@@ -10986,14 +10987,15 @@ NS_IMPL_CYCLE_COLLECTING_ADDREF(UnblockParsingPromiseHandler)
+ NS_IMPL_CYCLE_COLLECTING_RELEASE(UnblockParsingPromiseHandler)
+
+ already_AddRefed<Promise>
+-nsIDocument::BlockParsing(Promise& aPromise, ErrorResult& aRv)
++nsIDocument::BlockParsing(Promise& aPromise, const BlockParsingOptions& aOptions, ErrorResult& aRv)
+ {
+ RefPtr<Promise> resultPromise = Promise::Create(aPromise.GetParentObject(), aRv);
+ if (aRv.Failed()) {
+ return nullptr;
+ }
+
+- RefPtr<PromiseNativeHandler> promiseHandler = new UnblockParsingPromiseHandler(this, resultPromise);
++ RefPtr<PromiseNativeHandler> promiseHandler = new UnblockParsingPromiseHandler(this, resultPromise,
++ aOptions);
+ aPromise.AppendNativeHandler(promiseHandler);
+
+ return resultPromise.forget();
+diff --git dom/base/nsIDocument.h dom/base/nsIDocument.h
+index 2f287ae2ccb7..512de896fddf 100644
+--- dom/base/nsIDocument.h
++++ dom/base/nsIDocument.h
+@@ -2952,6 +2952,7 @@ public:
+ void ObsoleteSheet(const nsAString& aSheetURI, mozilla::ErrorResult& rv);
+
+ already_AddRefed<mozilla::dom::Promise> BlockParsing(mozilla::dom::Promise& aPromise,
++ const mozilla::dom::BlockParsingOptions& aOptions,
+ mozilla::ErrorResult& aRv);
+
+ already_AddRefed<nsIURI> GetMozDocumentURIIfNotForErrorPages();
+diff --git dom/webidl/Document.webidl dom/webidl/Document.webidl
+index 8a629502a6ce..f83874fa7315 100644
+--- dom/webidl/Document.webidl
++++ dom/webidl/Document.webidl
+@@ -385,13 +385,22 @@ partial interface Document {
+
+ // Blocks the initial document parser until the given promise is settled.
+ [ChromeOnly, Throws]
+- Promise<any> blockParsing(Promise<any> promise);
++ Promise<any> blockParsing(Promise<any> promise,
++ optional BlockParsingOptions options);
+
+ // like documentURI, except that for error pages, it returns the URI we were
+ // trying to load when we hit an error, rather than the error page's own URI.
+ [ChromeOnly] readonly attribute URI? mozDocumentURIIfNotForErrorPages;
+ };
+
++dictionary BlockParsingOptions {
++ /**
++ * If true, blocks script-created parsers (created via document.open()) in
++ * addition to network-created parsers.
++ */
++ boolean blockScriptCreated = true;
++};
++
+ // Extension to give chrome JS the ability to determine when a document was
+ // created to satisfy an iframe with srcdoc attribute.
+ partial interface Document {
+
+commit 0947c7c07361
+Author: Kris Maglione <maglione.k at gmail.com>
+Date: Wed Sep 20 16:13:03 2017 -0700
+
+ Bug 1379148 - Part 2: Don't block script-created parsers when executing content scripts. r=mixedpuppy, a=sledru
+
+ MozReview-Commit-ID: GsqsaOVob4B
+
+ --HG--
+ extra : source : ba22a83959a06a457c8a22d0cd9521eaed220bac
+---
+ toolkit/components/extensions/ExtensionContent.jsm | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git toolkit/components/extensions/ExtensionContent.jsm toolkit/components/extensions/ExtensionContent.jsm
+index 3429ae14daff..c05a00e95398 100644
+--- toolkit/components/extensions/ExtensionContent.jsm
++++ toolkit/components/extensions/ExtensionContent.jsm
+@@ -324,7 +324,7 @@ class Script {
+ // until the scripts have been loaded.
+ let {document} = context.contentWindow;
+ if (this.runAt === "document_start" && document.readyState !== "complete") {
+- document.blockParsing(scriptsPromise);
++ document.blockParsing(scriptsPromise, {blockScriptCreated: false});
+ }
+
+ let scripts = await scriptsPromise;
+
+commit 5f856a2ba599
+Author: Kris Maglione <maglione.k at gmail.com>
+Date: Wed Sep 20 17:00:44 2017 -0700
+
+ Bug 1379148 - Part 3: Inject scripts synchronously if they're already available. r=mixedpuppy, a=sledru
+
+ MozReview-Commit-ID: J6vheuxsqJR
+
+ --HG--
+ extra : source : 14ab0648ea9194b7ad84ecf7a330c9bbdadfb303
+---
+ toolkit/components/extensions/ExtensionContent.jsm | 36 ++++++++++++++++------
+ toolkit/components/extensions/ExtensionUtils.jsm | 12 +++++---
+ 2 files changed, 34 insertions(+), 14 deletions(-)
+
+diff --git toolkit/components/extensions/ExtensionContent.jsm toolkit/components/extensions/ExtensionContent.jsm
+index c05a00e95398..9af6870a829b 100644
+--- toolkit/components/extensions/ExtensionContent.jsm
++++ toolkit/components/extensions/ExtensionContent.jsm
+@@ -137,8 +137,16 @@ class CacheMap extends DefaultMap {
+
+ class ScriptCache extends CacheMap {
+ constructor(options) {
+- super(SCRIPT_EXPIRY_TIMEOUT_MS,
+- url => ChromeUtils.compileScript(url, options));
++ super(SCRIPT_EXPIRY_TIMEOUT_MS);
++ this.options = options;
++ }
++
++ defaultConstructor(url) {
++ let promise = ChromeUtils.compileScript(url, this.options);
++ promise.then(script => {
++ promise.script = script;
++ });
++ return promise;
+ }
+ }
+
+@@ -317,17 +325,25 @@ class Script {
+ }
+ }
+
+- let scriptsPromise = Promise.all(this.compileScripts());
++ let scriptPromises = this.compileScripts();
++
++ let scripts = scriptPromises.map(promise => promise.script);
++ // If not all scripts are already available in the cache, block
++ // parsing and wait all promises to resolve.
++ if (!scripts.every(script => script)) {
++ let promise = Promise.all(scriptPromises);
++
++ // If we're supposed to inject at the start of the document load,
++ // and we haven't already missed that point, block further parsing
++ // until the scripts have been loaded.
++ let {document} = context.contentWindow;
++ if (this.runAt === "document_start" && document.readyState !== "complete") {
++ document.blockParsing(promise, {blockScriptCreated: false});
++ }
+
+- // If we're supposed to inject at the start of the document load,
+- // and we haven't already missed that point, block further parsing
+- // until the scripts have been loaded.
+- let {document} = context.contentWindow;
+- if (this.runAt === "document_start" && document.readyState !== "complete") {
+- document.blockParsing(scriptsPromise, {blockScriptCreated: false});
++ scripts = await promise;
+ }
+
+- let scripts = await scriptsPromise;
+ let result;
+
+ // The evaluations below may throw, in which case the promise will be
+diff --git toolkit/components/extensions/ExtensionUtils.jsm toolkit/components/extensions/ExtensionUtils.jsm
+index a3ed895de6df..4a5fcb19c58d 100644
+--- toolkit/components/extensions/ExtensionUtils.jsm
++++ toolkit/components/extensions/ExtensionUtils.jsm
+@@ -67,9 +67,11 @@ function instanceOf(value, type) {
+ * constructor if one is not present.
+ */
+ class DefaultWeakMap extends WeakMap {
+- constructor(defaultConstructor, init) {
++ constructor(defaultConstructor = undefined, init = undefined) {
+ super(init);
+- this.defaultConstructor = defaultConstructor;
++ if (defaultConstructor) {
++ this.defaultConstructor = defaultConstructor;
++ }
+ }
+
+ get(key) {
+@@ -83,9 +85,11 @@ class DefaultWeakMap extends WeakMap {
+ }
+
+ class DefaultMap extends Map {
+- constructor(defaultConstructor, init) {
++ constructor(defaultConstructor = undefined, init = undefined) {
+ super(init);
+- this.defaultConstructor = defaultConstructor;
++ if (defaultConstructor) {
++ this.defaultConstructor = defaultConstructor;
++ }
+ }
+
+ get(key) {
+
+commit 3ab96ab42d99
+Author: Kris Maglione <maglione.k at gmail.com>
+Date: Wed Sep 20 17:01:33 2017 -0700
+
+ Bug 1379148 - Part 4: Add tests for document.write() with document_start content script present. r=mixedpuppy, a=sledru
+
+ MozReview-Commit-ID: 5yxgpur1tvf
+
+ --HG--
+ extra : source : 14298b92236cfcfdd0b9dc43d8077e576f775b4d
+---
+ .../extensions/ExtensionXPCShellUtils.jsm | 5 +++
+ .../test/xpcshell/data/file_document_write.html | 35 ++++++++++++++++
+ .../test_ext_contentscript_scriptCreated.js | 49 ++++++++++++++++++++++
+ .../extensions/test/xpcshell/xpcshell-content.ini | 1 +
+ 4 files changed, 90 insertions(+)
+
+diff --git toolkit/components/extensions/ExtensionXPCShellUtils.jsm toolkit/components/extensions/ExtensionXPCShellUtils.jsm
+index d16003d79944..3420ce175d8a 100644
+--- toolkit/components/extensions/ExtensionXPCShellUtils.jsm
++++ toolkit/components/extensions/ExtensionXPCShellUtils.jsm
+@@ -59,6 +59,11 @@ function frameScript() {
+ Components.utils.import("resource://gre/modules/Services.jsm");
+
+ Services.obs.notifyObservers(this, "tab-content-frameloader-created");
++
++ // eslint-disable-next-line mozilla/balanced-listeners
++ addEventListener("MozHeapMinimize", () => {
++ Services.obs.notifyObservers(null, "memory-pressure", "heap-minimize");
++ }, true, true);
+ }
+
+ const FRAME_SCRIPT = `data:text/javascript,(${encodeURI(frameScript)}).call(this)`;
+diff --git toolkit/components/extensions/test/xpcshell/data/file_document_write.html toolkit/components/extensions/test/xpcshell/data/file_document_write.html
+new file mode 100644
+index 000000000000..fbae3d6d763a
+--- /dev/null
++++ toolkit/components/extensions/test/xpcshell/data/file_document_write.html
+@@ -0,0 +1,35 @@
++<!DOCTYPE HTML>
++<html>
++<head>
++<meta charset="utf-8">
++</head>
++<body>
++ <iframe id="iframe"></iframe>
++
++ <script type="text/javascript">
++ "use strict";
++ addEventListener("load", () => {
++ // Send a heap-minimize observer notification so our script cache is
++ // cleared, and our content script isn't available for synchronous
++ // insertion.
++ window.dispatchEvent(new CustomEvent("MozHeapMinimize"));
++
++ let iframe = document.getElementById("iframe");
++ let doc = iframe.contentDocument;
++ doc.open("text/html");
++ // We need to do two writes here. The first creates the document element,
++ // which normally triggers parser blocking. The second triggers the
++ // creation of the element we're about to query for, which would normally
++ // happen asynchronously if the parser were blocked.
++ doc.write("<div id=meh>");
++ doc.write("<div id=beer></div>");
++
++ let elem = doc.getElementById("beer");
++ top.postMessage(elem instanceof HTMLDivElement ? "ok" : "fail",
++ "*");
++
++ doc.close();
++ }, {once: true});
++ </script>
++</body>
++</html>
+diff --git toolkit/components/extensions/test/xpcshell/test_ext_contentscript_scriptCreated.js toolkit/components/extensions/test/xpcshell/test_ext_contentscript_scriptCreated.js
+new file mode 100644
+index 000000000000..00407b914015
+--- /dev/null
++++ toolkit/components/extensions/test/xpcshell/test_ext_contentscript_scriptCreated.js
+@@ -0,0 +1,49 @@
++"use strict";
++
++const server = createHttpServer();
++server.registerDirectory("/data/", do_get_file("data"));
++
++const BASE_URL = `http://localhost:${server.identity.primaryPort}/data`;
++
++// ExtensionContent.jsm needs to know when it's running from xpcshell,
++// to use the right timeout for content scripts executed at document_idle.
++ExtensionTestUtils.mockAppInfo();
++
++// Test that document_start content scripts don't block script-created
++// parsers.
++add_task(async function test_contentscript_scriptCreated() {
++ let extensionData = {
++ manifest: {
++ content_scripts: [{
++ "matches": ["http://*/*/file_document_write.html"],
++ "js": ["content_script.js"],
++ "run_at": "document_start",
++ "match_about_blank": true,
++ "all_frames": true,
++ }],
++ },
++
++ files: {
++ "content_script.js": function() {
++ if (window === top) {
++ addEventListener("message", msg => {
++ browser.test.assertEq("ok", msg.data, "document.write() succeeded");
++ browser.test.sendMessage("content-script-done");
++ }, {once: true});
++ }
++ },
++ },
++ };
++
++ let extension = ExtensionTestUtils.loadExtension(extensionData);
++
++ await extension.startup();
++
++ let contentPage = await ExtensionTestUtils.loadContentPage(`${BASE_URL}/file_document_write.html`);
++
++ await extension.awaitMessage("content-script-done");
++
++ await contentPage.close();
++
++ await extension.unload();
++});
+diff --git toolkit/components/extensions/test/xpcshell/xpcshell-content.ini toolkit/components/extensions/test/xpcshell/xpcshell-content.ini
+index e34ec0717691..65814ff5da97 100644
+--- toolkit/components/extensions/test/xpcshell/xpcshell-content.ini
++++ toolkit/components/extensions/test/xpcshell/xpcshell-content.ini
+@@ -2,4 +2,5 @@
+ skip-if = os == "android" || (os == "win" && debug)
+ [test_ext_i18n_css.js]
+ [test_ext_contentscript.js]
++[test_ext_contentscript_scriptCreated.js]
+ [test_ext_contentscript_xrays.js]
Added: head/www/waterfox/files/patch-bug1397686
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1397686 Thu Feb 15 00:59:54 2018 (r461852)
@@ -0,0 +1,69 @@
+commit 21d6d91c77f1
+Author: Dragana Damjanovic <dd.mozilla at gmail.com>
+Date: Fri Sep 22 09:09:57 2017 +0200
+
+ Bug 1397686 - The streams that cannot do 0RTT data need to be put in list and added to mReadyForWrite when 0RTT is done. r=hurley, a=sledru
+
+ --HG--
+ extra : source : 5cf7391a9825fda34241f6d7974940f8460804fd
+---
+ netwerk/protocol/http/Http2Session.cpp | 15 +++++++++++++++
+ netwerk/protocol/http/Http2Session.h | 3 +++
+ 2 files changed, 18 insertions(+)
+
+diff --git netwerk/protocol/http/Http2Session.cpp netwerk/protocol/http/Http2Session.cpp
+index 42dd829dc73d..c652189a0e16 100644
+--- netwerk/protocol/http/Http2Session.cpp
++++ netwerk/protocol/http/Http2Session.cpp
+@@ -2769,6 +2769,9 @@ Http2Session::ReadSegmentsAgain(nsAHttpSegmentReader *reader,
+ this, stream, stream->StreamID()));
+ FlushOutputQueue();
+ SetWriteCallbacks();
++ if (!mCannotDo0RTTStreams.Contains(stream)) {
++ mCannotDo0RTTStreams.AppendElement(stream);
++ }
+ // We can still send our preamble
+ *countRead = mOutputQueueUsed - mOutputQueueSent;
+ return *countRead ? NS_OK : NS_BASE_STREAM_WOULD_BLOCK;
+@@ -3393,15 +3396,27 @@ Http2Session::Finish0RTT(bool aRestart, bool aAlpnChanged)
+ // This is the easy case - early data failed, but we're speaking h2, so
+ // we just need to rewind to the beginning of the preamble and try again.
+ mOutputQueueSent = 0;
++
++ for (size_t i = 0; i < mCannotDo0RTTStreams.Length(); ++i) {
++ if (mCannotDo0RTTStreams[i] && VerifyStream(mCannotDo0RTTStreams[i])) {
++ TransactionHasDataToWrite(mCannotDo0RTTStreams[i]);
++ }
++ }
+ }
+ } else {
+ // 0RTT succeeded
++ for (size_t i = 0; i < mCannotDo0RTTStreams.Length(); ++i) {
++ if (mCannotDo0RTTStreams[i] && VerifyStream(mCannotDo0RTTStreams[i])) {
++ TransactionHasDataToWrite(mCannotDo0RTTStreams[i]);
++ }
++ }
+ // Make sure we look for any incoming data in repsonse to our early data.
+ Unused << ResumeRecv();
+ }
+
+ mAttemptingEarlyData = false;
+ m0RTTStreams.Clear();
++ mCannotDo0RTTStreams.Clear();
+ RealignOutputQueue();
+
+ return NS_OK;
+diff --git netwerk/protocol/http/Http2Session.h netwerk/protocol/http/Http2Session.h
+index 87c4e8b9fcb9..4fdc175ab166 100644
+--- netwerk/protocol/http/Http2Session.h
++++ netwerk/protocol/http/Http2Session.h
+@@ -529,6 +529,9 @@ private:
+ bool mAttemptingEarlyData;
+ // The ID(s) of the stream(s) that we are getting 0RTT data from.
+ nsTArray<WeakPtr<Http2Stream>> m0RTTStreams;
++ // The ID(s) of the stream(s) that are not able to send 0RTT data. We need to
++ // remember them put them into mReadyForWrite queue when 0RTT finishes.
++ nsTArray<WeakPtr<Http2Stream>> mCannotDo0RTTStreams;
+
+ bool RealJoinConnection(const nsACString &hostname, int32_t port, bool jk);
+ bool TestOriginFrame(const nsACString &name, int32_t port);
Added: head/www/waterfox/files/patch-bug1399091
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1399091 Thu Feb 15 00:59:54 2018 (r461852)
@@ -0,0 +1,36 @@
+commit 4d1c939529c1
+Author: Catalin Badea <catalin.badea392 at gmail.com>
+Date: Sun Sep 24 16:44:51 2017 -0400
+
+ Bug 1399091 - Avoid adding the same range to multiple selections. r=mats, a=sledru
+
+ --HG--
+ extra : source : c3b24ef4281035ee00e09b3386fcbf2d672775c4
+---
+ dom/base/nsRange.cpp | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git dom/base/nsRange.cpp dom/base/nsRange.cpp
+index 1e95ec629f55..8221450b828b 100644
+--- dom/base/nsRange.cpp
++++ dom/base/nsRange.cpp
+@@ -1048,12 +1048,19 @@ nsRange::SetSelection(mozilla::dom::Selection* aSelection)
+ if (mSelection == aSelection) {
+ return;
+ }
++
+ // At least one of aSelection and mSelection must be null
+ // aSelection will be null when we are removing from a selection
+ // and a range can't be in more than one selection at a time,
+ // thus mSelection must be null too.
+ MOZ_ASSERT(!aSelection || !mSelection);
+
++ // Extra step in case our parent failed to ensure the above
++ // invariant.
++ if (aSelection && mSelection) {
++ mSelection->RemoveRange(this);
++ }
++
+ mSelection = aSelection;
+ if (mSelection) {
+ nsINode* commonAncestor = GetCommonAncestor();
Added: head/www/waterfox/files/patch-bug1399177
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1399177 Thu Feb 15 00:59:54 2018 (r461852)
@@ -0,0 +1,47 @@
+commit 376eb2d39f54
+Author: Doug Thayer <dothayer at mozilla.com>
+Date: Wed Sep 20 15:58:25 2017 -0700
+
+ Bug 1399177 - Pull label out of description in update popups. r=Gijs, a=sledru
+
+ The margin rules for labels mean that if the See what's new link
+ starts its own line, the alignment looks off. We could override this,
+ but matching the styling for "Learn more" links, which get their own
+ line, seemed the better option.
+
+ MozReview-Commit-ID: 4WK9QtRMUQs
+
+ --HG--
+ extra : source : f81f645704e4cdfaeebeb21d53d5d749718c3959
+---
+ browser/components/customizableui/content/panelUI.inc.xul | 10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+diff --git browser/components/customizableui/content/panelUI.inc.xul browser/components/customizableui/content/panelUI.inc.xul
+index 86fc1fa5639f..e7c63f612dc6 100644
+--- browser/components/customizableui/content/panelUI.inc.xul
++++ browser/components/customizableui/content/panelUI.inc.xul
+@@ -421,9 +421,8 @@
+ buttonhighlight="true"
+ hidden="true">
+ <popupnotificationcontent id="update-available-notification-content" orient="vertical">
+- <description id="update-available-description">&updateAvailable.message;
+- <label id="update-available-whats-new" class="text-link" value="&updateAvailable.whatsnew.label;" />
+- </description>
++ <description id="update-available-description">&updateAvailable.message;</description>
++ <label id="update-available-whats-new" class="text-link" value="&updateAvailable.whatsnew.label;" />
+ </popupnotificationcontent>
+ </popupnotification>
+
+@@ -440,9 +439,8 @@
+ buttonhighlight="true"
+ hidden="true">
+ <popupnotificationcontent id="update-manual-notification-content" orient="vertical">
+- <description id="update-manual-description">&updateManual.message;
+- <label id="update-manual-whats-new" class="text-link" value="&updateManual.whatsnew.label;" />
+- </description>
++ <description id="update-manual-description">&updateManual.message;</description>
++ <label id="update-manual-whats-new" class="text-link" value="&updateManual.whatsnew.label;" />
+ </popupnotificationcontent>
+ </popupnotification>
+
Added: head/www/waterfox/files/patch-bug1401256
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1401256 Thu Feb 15 00:59:54 2018 (r461852)
@@ -0,0 +1,69 @@
+commit fea2908c1cef
+Author: J. Ryan Stinnett <jryans at gmail.com>
+Date: Thu Sep 21 16:43:37 2017 -0500
+
+ Bug 1401256 - servo: Update inherited prop state for animation (from jryans:stylo-anim-inherit-context). r=heycam, a=sledru
+
+ Source-Repo: https://github.com/servo/servo
+ Source-Revision: 83705a8fa8992a974b32acc6635c7dfeed1afa50
+
+ --HG--
+ extra : source : 443fe7c5dd42bb6207fb778f58f94354d19fac28
+---
+ .../components/style/properties/helpers/animated_properties.mako.rs | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git servo/components/style/properties/helpers/animated_properties.mako.rs servo/components/style/properties/helpers/animated_properties.mako.rs
+index ee3f601cdb91..5f98b7e5c0aa 100644
+--- servo/components/style/properties/helpers/animated_properties.mako.rs
++++ servo/components/style/properties/helpers/animated_properties.mako.rs
+@@ -576,6 +576,12 @@ impl AnimationValue {
+ % for prop in data.longhands:
+ % if prop.animatable:
+ PropertyDeclaration::${prop.camel_case}(ref val) => {
++ context.for_non_inherited_property =
++ % if prop.style_struct.inherited:
++ None;
++ % else:
++ Some(LonghandId::${prop.camel_case});
++ % endif
+ % if prop.ident in SYSTEM_FONT_LONGHANDS and product == "gecko":
+ if let Some(sf) = val.get_system() {
+ longhands::system_font::resolve_system_font(sf, context);
+
+commit 8a2e8131e3a9
+Author: J. Ryan Stinnett <jryans at gmail.com>
+Date: Wed Sep 20 13:11:40 2017 -0500
+
+ Bug 1401256 - Crashtest for animating lengths. r=heycam, a=sledru
+
+ MozReview-Commit-ID: HiVfx9cg4ZZ
+
+ --HG--
+ extra : source : 34d60bb9e16bfc33223e9616ad3b6d664cb6d93a
+---
+ layout/style/crashtests/1401256.html | 5 +++++
+ layout/style/crashtests/crashtests.list | 1 +
+ 2 files changed, 6 insertions(+)
+
+diff --git layout/style/crashtests/1401256.html layout/style/crashtests/1401256.html
+new file mode 100644
+index 000000000000..2a25dedc7e6c
+--- /dev/null
++++ layout/style/crashtests/1401256.html
+@@ -0,0 +1,5 @@
++<script>
++ let o1 = document.createElement('p');
++ document.documentElement.appendChild(o1);
++ o1.animate({'minWidth':['-moz-max-content']});
++</script>
+\ No newline at end of file
+diff --git layout/style/crashtests/crashtests.list layout/style/crashtests/crashtests.list
+index 9a1412863e6a..7466eb298a8f 100644
+--- layout/style/crashtests/crashtests.list
++++ layout/style/crashtests/crashtests.list
+@@ -202,3 +202,4 @@ load 1387481-1.html
+ load 1387499.html
+ load 1391577.html
+ load 1398581.html
++load 1401256.html
Added: head/www/waterfox/files/patch-bug1401726
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1401726 Thu Feb 15 00:59:54 2018 (r461852)
@@ -0,0 +1,60 @@
+commit ccbee985a281
+Author: John Dai <jdai at mozilla.com>
+Date: Thu Sep 21 16:32:18 2017 +0800
+
+ Bug 1401726 - Fix crash in nsLabelsNodeList::PopulateSelf. r=smaug, a=sledru
+
+ From 045228df087f7612bde09d2f715ec33f2aaf777c Mon Sep 17 00:00:00 2001
+---
+ dom/base/nsContentList.cpp | 4 +++-
+ dom/html/crashtests/1401726.html | 17 +++++++++++++++++
+ dom/html/crashtests/crashtests.list | 1 +
+ 3 files changed, 21 insertions(+), 1 deletion(-)
+
+diff --git dom/base/nsContentList.cpp dom/base/nsContentList.cpp
+index f943039e7fca..9b7bd6323aa8 100644
+--- dom/base/nsContentList.cpp
++++ dom/base/nsContentList.cpp
+@@ -1266,7 +1266,9 @@ nsLabelsNodeList::MaybeResetRoot(nsINode* aRootNode)
+ void
+ nsLabelsNodeList::PopulateSelf(uint32_t aNeededLength)
+ {
+- MOZ_ASSERT(mRootNode, "Must have root");
++ if (!mRootNode) {
++ return;
++ }
+
+ // Start searching at the root.
+ nsINode* cur = mRootNode;
+diff --git dom/html/crashtests/1401726.html dom/html/crashtests/1401726.html
+new file mode 100644
+index 000000000000..bf4b4918abd4
+--- /dev/null
++++ dom/html/crashtests/1401726.html
+@@ -0,0 +1,17 @@
++<!DOCTYPE HTML>
++<html>
++<head>
++<script>
++ try { o1 = document.createElement('button') } catch(e) { }
++ try { o2 = document.createElement('p') } catch(e) { }
++ try { o3 = o1.labels } catch(e) { }
++ try { o4 = document.createNSResolver(document.documentElement) } catch(e) { }
++ try { o5 = document.createRange(); } catch(e) { }
++ try { document.documentElement.appendChild(o1) } catch(e) { }
++ try { o5.selectNode(o4); } catch(e) { }
++ try { o5.surroundContents(o2) } catch(e) { }
++ try { o5.surroundContents(o2) } catch(e) { }
++ try { o1.labels.length } catch(e) { }
++</script>
++</head>
++</html>
+diff --git dom/html/crashtests/crashtests.list dom/html/crashtests/crashtests.list
+index a60cc9f99474..581ed10cefc8 100644
+--- dom/html/crashtests/crashtests.list
++++ dom/html/crashtests/crashtests.list
+@@ -83,3 +83,4 @@ load 1343886-2.xml
+ load 1343886-3.xml
+ asserts(0-3) load 1350972.html
+ load 1386905.html
++asserts(0-4) load 1401726.html
Added: head/www/waterfox/files/patch-bug1401878
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1401878 Thu Feb 15 00:59:54 2018 (r461852)
@@ -0,0 +1,70 @@
+commit 59e5b0881ec2
+Author: Andrea Marchesini <amarchesini at mozilla.com>
+Date: Thu Sep 21 21:32:00 2017 +0200
+
+ Bug 1401878 - Remove ServiceWorkers in SiteDataManager.jsm. r=bkelly, a=sledru
+
+ --HG--
+ extra : source : 04888373f12bd5d86ec3f4057c3a2f0b2240c963
+ extra : intermediate-source : e2b1cd9fd4a66fc932d8f74cfe2b38c55b9a7a1e
+---
+ browser/components/preferences/SiteDataManager.jsm | 26 ++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
+
+diff --git browser/components/preferences/SiteDataManager.jsm browser/components/preferences/SiteDataManager.jsm
+index d6dd5c78656a..8f2ac2a34188 100644
+--- browser/components/preferences/SiteDataManager.jsm
++++ browser/components/preferences/SiteDataManager.jsm
+@@ -9,6 +9,9 @@ XPCOMUtils.defineLazyModuleGetter(this, "OfflineAppCacheHelper",
+ "resource:///modules/offlineAppCache.jsm");
+ XPCOMUtils.defineLazyModuleGetter(this, "ContextualIdentityService",
+ "resource://gre/modules/ContextualIdentityService.jsm");
++XPCOMUtils.defineLazyServiceGetter(this, "serviceWorkerManager",
++ "@mozilla.org/serviceworkers/manager;1",
++ "nsIServiceWorkerManager");
+
+ this.EXPORTED_SYMBOLS = [
+ "SiteDataManager"
+@@ -216,6 +219,19 @@ this.SiteDataManager = {
+ }
+ },
+
++ _removeServiceWorkers(site) {
++ let serviceWorkers = serviceWorkerManager.getAllRegistrations();
++ for (let i = 0; i < serviceWorkers.length; i++) {
++ let sw = serviceWorkers.queryElementAt(i, Ci.nsIServiceWorkerRegistrationInfo);
++ for (let principal of site.principals) {
++ if (sw.principal.equals(principal)) {
++ serviceWorkerManager.removeAndPropagate(sw.principal.URI.host);
++ break;
++ }
++ }
++ }
++ },
++
+ remove(hosts) {
+ let promises = [];
+ let unknownHost = "";
+@@ -225,6 +241,7 @@ this.SiteDataManager = {
+ this._removePermission(site);
+ this._removeAppCache(site);
+ this._removeCookie(site);
++ this._removeServiceWorkers(site);
+ promises.push(this._removeQuotaUsage(site));
+ } else {
+ unknownHost = host;
+@@ -240,6 +257,14 @@ this.SiteDataManager = {
+ },
+
+ removeAll() {
++ // Iterate through the service workers and remove them.
++ let serviceWorkers = serviceWorkerManager.getAllRegistrations();
++ for (let i = 0; i < serviceWorkers.length; i++) {
++ let sw = serviceWorkers.queryElementAt(i, Ci.nsIServiceWorkerRegistrationInfo);
++ let host = sw.principal.URI.host;
++ serviceWorkerManager.removeAndPropagate(host);
++ }
++
+ let promises = [];
+ for (let site of this._sites.values()) {
+ this._removePermission(site);
Added: head/www/waterfox/files/patch-bug1416307
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1416307 Thu Feb 15 00:59:54 2018 (r461852)
@@ -0,0 +1,94 @@
+commit 1159955c684f
+Author: Samael Wang <freesamael at gmail.com>
+Date: Tue Feb 6 13:28:30 2018 -0500
+
+ Bug 1416307 - Set triggeringPrincipal to current document's principal, if aPrincipal is not given. r=bz a=ritu
+
+ MozReview-Commit-ID: 8lxKFeUlyzq
+
+ --HG--
+ extra : source : 9fcf48189000ab8ee16f236be57c9659c7243b42
+---
+ docshell/base/nsDocShell.cpp | 21 +++++++++++----------
+ docshell/base/nsIRefreshURI.idl | 15 ++++++---------
+ 2 files changed, 17 insertions(+), 19 deletions(-)
+
+diff --git docshell/base/nsDocShell.cpp docshell/base/nsDocShell.cpp
+index fa3707880772..84a9086a1a00 100644
+--- docshell/base/nsDocShell.cpp
++++ docshell/base/nsDocShell.cpp
+@@ -6396,9 +6396,17 @@ nsDocShell::ForceRefreshURI(nsIURI* aURI, nsIPrincipal* aPrincipal, int32_t aDel
+ */
+ loadInfo->SetReferrer(mCurrentURI);
+
+- /* Don't ever "guess" on which principal to use to avoid picking
+- * the current principal.
+- */
++ // Set the triggering pricipal to aPrincipal if available, or current
++ // document's principal otherwise.
++ nsCOMPtr<nsIPrincipal> principal = aPrincipal;
++ if (!principal) {
++ nsCOMPtr<nsIDocument> doc = GetDocument();
++ if (!doc) {
++ return NS_ERROR_FAILURE;
++ }
++ principal = doc->NodePrincipal();
++ }
++ loadInfo->SetTriggeringPrincipal(principal);
+ loadInfo->SetPrincipalIsExplicit(true);
+
+ /* Check if this META refresh causes a redirection
+@@ -6426,13 +6434,6 @@ nsDocShell::ForceRefreshURI(nsIURI* aURI, nsIPrincipal* aPrincipal, int32_t aDel
+ loadInfo->SetLoadType(nsIDocShellLoadInfo::loadRefresh);
+ }
+
+- // If the principal is null, the refresh will have a triggeringPrincipal
+- // derived from the referrer URI, or will be set to the system principal
+- // if there is no refererrer. See LoadURI()
+- if (aPrincipal) {
+- loadInfo->SetTriggeringPrincipal(aPrincipal);
+- }
+-
+ /*
+ * LoadURI(...) will cancel all refresh timers... This causes the
+ * Timer and its refreshData instance to be released...
+diff --git docshell/base/nsIRefreshURI.idl docshell/base/nsIRefreshURI.idl
+index 3e85e4c516c6..77d8fd660674 100644
+--- docshell/base/nsIRefreshURI.idl
++++ docshell/base/nsIRefreshURI.idl
+@@ -19,9 +19,8 @@ interface nsIRefreshURI : nsISupports {
+ *
+ * @param aUri The uri to refresh.
+ * @param aPrincipal The triggeringPrincipal for the refresh load
+- * May be null, in which case a principal will be built based on the
+- * referrer URI of the previous docshell load, or will use the system
+- * principal when there is no referrer.
++ * May be null, in which case the principal of current document will be
++ * applied.
+ * @param aMillis The number of milliseconds to wait.
+ * @param aRepeat Flag to indicate if the uri is to be
+ * repeatedly refreshed every aMillis milliseconds.
+@@ -36,9 +35,8 @@ interface nsIRefreshURI : nsISupports {
+ *
+ * @param aURI The URI to refresh.
+ * @param aPrincipal The triggeringPrincipal for the refresh load
+- * May be null, in which case a principal will be built based on the
+- * referrer URI of the previous docshell load, or will use the system
+- * principal when there is no referrer.
++ * May be null, in which case the principal of current document will be
++ * applied.
+ * @param aMillis The number of milliseconds by which this refresh would
+ * be delayed if it were not being forced.
+ * @param aMetaRefresh Flag to indicate if this is a meta refresh.
+@@ -68,9 +66,8 @@ interface nsIRefreshURI : nsISupports {
+ *
+ * @param aBaseURI base URI to resolve refresh uri with.
+ * @param aPrincipal The triggeringPrincipal for the refresh load
+- * May be null, in which case a principal will be built based on the
+- * referrer URI of the previous docshell load, or will use the system
+- * principal when there is no referrer.
++ * May be null, in which case the principal of current document will be
++ * applied.
+ * @param aHeader The meta refresh header string.
+ */
+ void setupRefreshURIFromHeader(in nsIURI aBaseURI,
Added: head/www/waterfox/files/patch-bug1416529
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1416529 Thu Feb 15 00:59:54 2018 (r461852)
@@ -0,0 +1,101 @@
+commit 4cfa1b84d80c
+Author: Nicholas Hurley <hurley at mozilla.com>
+Date: Fri Feb 2 11:03:08 2018 -0800
+
+ Bug 1416529 r=mcmanus a=ritu
+ MozReview-Commit-ID: CD1l5vLB4yy
+
+ --HG--
+ extra : amend_source : 44c6368af20b158091a90c627ea4f206871dfa9d
+---
+ netwerk/protocol/http/Http2Session.cpp | 18 +++++++++---------
+ netwerk/protocol/http/Http2Stream.cpp | 14 ++++++++++++++
+ netwerk/protocol/http/Http2Stream.h | 1 +
+ 3 files changed, 24 insertions(+), 9 deletions(-)
+
+diff --git netwerk/protocol/http/Http2Session.cpp netwerk/protocol/http/Http2Session.cpp
+index 9fd021065742..622c1657027a 100644
+--- netwerk/protocol/http/Http2Session.cpp
++++ netwerk/protocol/http/Http2Session.cpp
+@@ -1136,6 +1136,15 @@ Http2Session::CleanupStream(Http2Stream *aStream, nsresult aResult,
+ return;
+ }
+
++ Http2PushedStream *pushSource = aStream->PushSource();
++ if (pushSource) {
++ // aStream is a synthetic attached to an even push
++ MOZ_ASSERT(pushSource->GetConsumerStream() == aStream);
++ MOZ_ASSERT(!aStream->StreamID());
++ MOZ_ASSERT(!(pushSource->StreamID() & 0x1));
++ aStream->ClearPushSource();
++ }
++
+ if (aStream->DeferCleanup(aResult)) {
+ LOG3(("Http2Session::CleanupStream 0x%X deferred\n", aStream->StreamID()));
+ return;
+@@ -1146,15 +1155,6 @@ Http2Session::CleanupStream(Http2Stream *aStream, nsresult aResult,
+ return;
+ }
+
+- Http2PushedStream *pushSource = aStream->PushSource();
+- if (pushSource) {
+- // aStream is a synthetic attached to an even push
+- MOZ_ASSERT(pushSource->GetConsumerStream() == aStream);
+- MOZ_ASSERT(!aStream->StreamID());
+- MOZ_ASSERT(!(pushSource->StreamID() & 0x1));
+- pushSource->SetConsumerStream(nullptr);
+- }
+-
+ // don't reset a stream that has recevied a fin or rst
+ if (!aStream->RecvdFin() && !aStream->RecvdReset() && aStream->StreamID() &&
+ !(mInputFrameFinal && (aStream == mInputFrameDataStream))) { // !(recvdfin with mark pending)
+diff --git netwerk/protocol/http/Http2Stream.cpp netwerk/protocol/http/Http2Stream.cpp
+index d2f304b5ed7b..95674d018ab1 100644
+--- netwerk/protocol/http/Http2Stream.cpp
++++ netwerk/protocol/http/Http2Stream.cpp
+@@ -112,12 +112,22 @@ Http2Stream::Http2Stream(nsAHttpTransaction *httpTransaction,
+
+ Http2Stream::~Http2Stream()
+ {
++ ClearPushSource();
+ ClearTransactionsBlockedOnTunnel();
+ mStreamID = Http2Session::kDeadStreamID;
+
+ LOG3(("Http2Stream::~Http2Stream %p", this));
+ }
+
++void
++Http2Stream::ClearPushSource()
++{
++ if (mPushSource) {
++ mPushSource->SetConsumerStream(nullptr);
++ mPushSource = nullptr;
++ }
++}
++
+ // ReadSegments() is used to write data down the socket. Generally, HTTP
+ // request data is pulled from the approriate transaction and
+ // converted to HTTP/2 data. Sometimes control data like a window-update is
+@@ -1135,6 +1145,10 @@ Http2Stream::ConvertPushHeaders(Http2Decompressor *decompressor,
+ void
+ Http2Stream::Close(nsresult reason)
+ {
++ // In case we are connected to a push, make sure the push knows we are closed,
++ // so it doesn't try to give us any more DATA that comes on it after our close.
++ ClearPushSource();
++
+ mTransaction->Close(reason);
+ }
+
+diff --git netwerk/protocol/http/Http2Stream.h netwerk/protocol/http/Http2Stream.h
+index 3412eb56f809..29f98163c4ac 100644
+--- netwerk/protocol/http/Http2Stream.h
++++ netwerk/protocol/http/Http2Stream.h
+@@ -56,6 +56,7 @@ public:
+
+ uint32_t StreamID() { return mStreamID; }
+ Http2PushedStream *PushSource() { return mPushSource; }
++ void ClearPushSource();
+
+ stateType HTTPState() { return mState; }
+ void SetHTTPState(stateType val) { mState = val; }
Added: head/www/waterfox/files/patch-bug1419508
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/www/waterfox/files/patch-bug1419508 Thu Feb 15 00:59:54 2018 (r461852)
@@ -0,0 +1,29 @@
+commit 4d25545cc673
+Author: Gerald Squelart <gsquelart at mozilla.com>
+Date: Thu Jan 25 16:21:23 2018 +1100
+
+ Bug 1419508 - Return early from CreateMaskLayer if there is no visible data - r=mattwoodrow a=lizzard
+
+ MozReview-Commit-ID: 9jWGXA2eGvv
+
+ --HG--
+ extra : source : c5d8b1ed27228f4bcf45b2746f78dba3795d0868
+---
*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***
More information about the svn-ports-all
mailing list