From owner-svn-ports-head@freebsd.org Tue Apr 17 00:43:38 2018 Return-Path: Delivered-To: svn-ports-head@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id CAAFCF8B447; Tue, 17 Apr 2018 00:43:37 +0000 (UTC) (envelope-from jbeich@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 76F9073D67; Tue, 17 Apr 2018 00:43:37 +0000 (UTC) (envelope-from jbeich@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 556F124C48; Tue, 17 Apr 2018 00:43:37 +0000 (UTC) (envelope-from jbeich@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3H0hbCG056847; Tue, 17 Apr 2018 00:43:37 GMT (envelope-from jbeich@FreeBSD.org) Received: (from jbeich@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3H0hacO056839; Tue, 17 Apr 2018 00:43:36 GMT (envelope-from jbeich@FreeBSD.org) Message-Id: <201804170043.w3H0hacO056839@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: jbeich set sender to jbeich@FreeBSD.org using -f From: Jan Beich Date: Tue, 17 Apr 2018 00:43:36 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r467545 - in head/www/waterfox: . files X-SVN-Group: ports-head X-SVN-Commit-Author: jbeich X-SVN-Commit-Paths: in head/www/waterfox: . files X-SVN-Commit-Revision: 467545 X-SVN-Commit-Repository: ports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 17 Apr 2018 00:43:38 -0000 Author: jbeich Date: Tue Apr 17 00:43:36 2018 New Revision: 467545 URL: https://svnweb.freebsd.org/changeset/ports/467545 Log: www/waterfox: apply some FF60 fixes Added: head/www/waterfox/files/patch-bug1393367 (contents, props changed) head/www/waterfox/files/patch-bug1448863 (contents, props changed) head/www/waterfox/files/patch-bug1452202 (contents, props changed) head/www/waterfox/files/patch-bug1452417 (contents, props changed) head/www/waterfox/files/patch-bug1453339 (contents, props changed) head/www/waterfox/files/patch-bug1453555 (contents, props changed) head/www/waterfox/files/patch-bug1453740 (contents, props changed) Modified: head/www/waterfox/Makefile (contents, props changed) Modified: head/www/waterfox/Makefile ============================================================================== --- head/www/waterfox/Makefile Tue Apr 17 00:12:24 2018 (r467544) +++ head/www/waterfox/Makefile Tue Apr 17 00:43:36 2018 (r467545) @@ -2,7 +2,7 @@ PORTNAME= waterfox DISTVERSION= 56.1.0 -PORTREVISION= 10 +PORTREVISION= 11 CATEGORIES= www ipv6 MAINTAINER= jbeich@FreeBSD.org Added: head/www/waterfox/files/patch-bug1393367 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/www/waterfox/files/patch-bug1393367 Tue Apr 17 00:43:36 2018 (r467545) @@ -0,0 +1,25 @@ +commit 4536ef50d724 +Author: Miko Mynttinen +Date: Thu Apr 12 14:18:03 2018 +0200 + + Bug 1393367 - Change MOZ_ASSERT to MOZ_RELEASE_ASSERT. r=mstange, r=fbraun, a=RyanVM + + --HG-- + extra : source : 1908cd8ed88dd4f77a99dff39c193d7d3f435195 +--- + gfx/2d/FilterNodeSoftware.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git gfx/2d/FilterNodeSoftware.cpp gfx/2d/FilterNodeSoftware.cpp +index 1d55425073b0..f1174f550d41 100644 +--- gfx/2d/FilterNodeSoftware.cpp ++++ gfx/2d/FilterNodeSoftware.cpp +@@ -2798,7 +2798,7 @@ FilterNodeArithmeticCombineSoftware::SetAttribute(uint32_t aIndex, + uint32_t aSize) + { + MOZ_ASSERT(aIndex == ATT_ARITHMETIC_COMBINE_COEFFICIENTS); +- MOZ_ASSERT(aSize == 4); ++ MOZ_RELEASE_ASSERT(aSize == 4); + + mK1 = aFloat[0]; + mK2 = aFloat[1]; Added: head/www/waterfox/files/patch-bug1448863 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/www/waterfox/files/patch-bug1448863 Tue Apr 17 00:43:36 2018 (r467545) @@ -0,0 +1,214 @@ +commit 7fd98bb22f4c +Author: Byron Campen [:bwc] +Date: Mon Mar 26 10:19:31 2018 -0500 + + Bug 1448863 - Stop sync dispatching in Decode. r=jesup, a=RyanVM + + MozReview-Commit-ID: 3EK0zAsFpHz + + --HG-- + extra : source : 549f0b8075d587eca29a6a72b1b62caf84d4b4fc +--- + .../src/media-conduit/WebrtcGmpVideoCodec.cpp | 122 ++++++++++----------- + .../src/media-conduit/WebrtcGmpVideoCodec.h | 7 +- + media/webrtc/webrtc.mozbuild | 4 + + 3 files changed, 65 insertions(+), 68 deletions(-) + +diff --git media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.cpp media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.cpp +index 6cd4a1e1e200..81fd5f099454 100644 +--- media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.cpp ++++ media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.cpp +@@ -770,14 +770,8 @@ WebrtcGmpVideoDecoder::GmpInitDone(GMPVideoDecoderProxy* aGMP, + nsTArray> temp; + temp.SwapElements(mQueuedFrames); + for (auto& queued : temp) { +- int rv = Decode_g(queued->mImage, +- queued->mMissingFrames, +- nullptr, +- nullptr, +- queued->mRenderTimeMs); +- if (rv) { +- return rv; +- } ++ Decode_g(RefPtr(this), ++ nsAutoPtr(queued.release())); + } + } + +@@ -805,61 +799,58 @@ WebrtcGmpVideoDecoder::Decode(const webrtc::EncodedImage& aInputImage, + const webrtc::CodecSpecificInfo* aCodecSpecificInfo, + int64_t aRenderTimeMs) + { +- int32_t ret; + MOZ_ASSERT(mGMPThread); + MOZ_ASSERT(!NS_IsMainThread()); +- // Would be really nice to avoid this sync dispatch, but it would require a +- // copy of the frame, since it doesn't appear to actually have a refcount. +- // Passing 'this' is safe since this is synchronous. +- mozilla::SyncRunnable::DispatchToThread(mGMPThread, +- WrapRunnableRet(&ret, this, +- &WebrtcGmpVideoDecoder::Decode_g, +- aInputImage, +- aMissingFrames, +- aFragmentation, +- aCodecSpecificInfo, +- aRenderTimeMs)); ++ if (!aInputImage._length) { ++ return WEBRTC_VIDEO_CODEC_ERROR; ++ } ++ ++ nsAutoPtr decodeData(new GMPDecodeData(aInputImage, ++ aMissingFrames, ++ aRenderTimeMs)); ++ ++ mGMPThread->Dispatch(WrapRunnableNM(&WebrtcGmpVideoDecoder::Decode_g, ++ RefPtr(this), ++ decodeData), ++ NS_DISPATCH_NORMAL); + +- return ret; ++ return WEBRTC_VIDEO_CODEC_OK; + } + +-int32_t +-WebrtcGmpVideoDecoder::Decode_g(const webrtc::EncodedImage& aInputImage, +- bool aMissingFrames, +- const webrtc::RTPFragmentationHeader* aFragmentation, +- const webrtc::CodecSpecificInfo* aCodecSpecificInfo, +- int64_t aRenderTimeMs) +-{ +- if (!mGMP) { +- if (mInitting) { ++/* static */ ++// Using nsAutoPtr because WrapRunnable doesn't support move semantics ++void ++WebrtcGmpVideoDecoder::Decode_g(const RefPtr& aThis, ++ nsAutoPtr aDecodeData) ++{ ++ if (!aThis->mGMP) { ++ if (aThis->mInitting) { + // InitDone hasn't been called yet (race) +- GMPDecodeData *data = new GMPDecodeData(aInputImage, +- aMissingFrames, +- aRenderTimeMs); +- mQueuedFrames.AppendElement(data); +- return WEBRTC_VIDEO_CODEC_OK; ++ aThis->mQueuedFrames.AppendElement(aDecodeData.forget()); ++ return; + } + // destroyed via Terminate(), failed to init, or just not initted yet + LOGD(("GMP Decode: not initted yet")); +- return WEBRTC_VIDEO_CODEC_ERROR; ++ return; + } +- MOZ_ASSERT(mQueuedFrames.IsEmpty()); +- MOZ_ASSERT(mHost); + +- if (!aInputImage._length) { +- return WEBRTC_VIDEO_CODEC_ERROR; +- } ++ MOZ_ASSERT(aThis->mQueuedFrames.IsEmpty()); ++ MOZ_ASSERT(aThis->mHost); + + GMPVideoFrame* ftmp = nullptr; +- GMPErr err = mHost->CreateFrame(kGMPEncodedVideoFrame, &ftmp); ++ GMPErr err = aThis->mHost->CreateFrame(kGMPEncodedVideoFrame, &ftmp); + if (err != GMPNoErr) { +- return WEBRTC_VIDEO_CODEC_ERROR; ++ LOG(LogLevel::Error, ("%s: CreateFrame failed (%u)!", ++ __PRETTY_FUNCTION__, static_cast(err))); ++ return; + } + + GMPUniquePtr frame(static_cast(ftmp)); +- err = frame->CreateEmptyFrame(aInputImage._length); ++ err = frame->CreateEmptyFrame(aDecodeData->mImage._length); + if (err != GMPNoErr) { +- return WEBRTC_VIDEO_CODEC_ERROR; ++ LOG(LogLevel::Error, ("%s: CreateEmptyFrame failed (%u)!", ++ __PRETTY_FUNCTION__, static_cast(err))); ++ return; + } + + // XXX At this point, we only will get mode1 data (a single length and a buffer) +@@ -867,18 +858,20 @@ WebrtcGmpVideoDecoder::Decode_g(const webrtc::EncodedImage& aInputImage, + *(reinterpret_cast(frame->Buffer())) = frame->Size(); + + // XXX It'd be wonderful not to have to memcpy the encoded data! +- memcpy(frame->Buffer()+4, aInputImage._buffer+4, frame->Size()-4); ++ memcpy(frame->Buffer()+4, aDecodeData->mImage._buffer+4, frame->Size()-4); + +- frame->SetEncodedWidth(aInputImage._encodedWidth); +- frame->SetEncodedHeight(aInputImage._encodedHeight); +- frame->SetTimeStamp((aInputImage._timeStamp * 1000ll)/90); // rounds down +- frame->SetCompleteFrame(aInputImage._completeFrame); ++ frame->SetEncodedWidth(aDecodeData->mImage._encodedWidth); ++ frame->SetEncodedHeight(aDecodeData->mImage._encodedHeight); ++ frame->SetTimeStamp((aDecodeData->mImage._timeStamp * 1000ll)/90); // rounds down ++ frame->SetCompleteFrame(aDecodeData->mImage._completeFrame); + frame->SetBufferType(GMP_BufferLength32); + + GMPVideoFrameType ft; +- int32_t ret = WebrtcFrameTypeToGmpFrameType(aInputImage._frameType, &ft); ++ int32_t ret = WebrtcFrameTypeToGmpFrameType(aDecodeData->mImage._frameType, &ft); + if (ret != WEBRTC_VIDEO_CODEC_OK) { +- return ret; ++ LOG(LogLevel::Error, ("%s: WebrtcFrameTypeToGmpFrameType failed (%u)!", ++ __PRETTY_FUNCTION__, static_cast(ret))); ++ return; + } + + // Bug XXXXXX: Set codecSpecific info +@@ -889,20 +882,23 @@ WebrtcGmpVideoDecoder::Decode_g(const webrtc::EncodedImage& aInputImage, + nsTArray codecSpecificInfo; + codecSpecificInfo.AppendElements((uint8_t*)&info, sizeof(GMPCodecSpecificInfo)); + +- LOGD(("GMP Decode: %" PRIu64 ", len %zu%s", frame->TimeStamp(), aInputImage._length, +- ft == kGMPKeyFrame ? ", KeyFrame" : "")); +- nsresult rv = mGMP->Decode(Move(frame), +- aMissingFrames, +- codecSpecificInfo, +- aRenderTimeMs); ++ LOGD(("GMP Decode: %" PRIu64 ", len %zu%s", frame->TimeStamp(), ++ aDecodeData->mImage._length, ft == kGMPKeyFrame ? ", KeyFrame" : "")); ++ ++ nsresult rv = aThis->mGMP->Decode(Move(frame), ++ aDecodeData->mMissingFrames, ++ codecSpecificInfo, ++ aDecodeData->mRenderTimeMs); + if (NS_FAILED(rv)) { +- return WEBRTC_VIDEO_CODEC_ERROR; ++ LOG(LogLevel::Error, ("%s: Decode failed (rv=%u)!", ++ __PRETTY_FUNCTION__, static_cast(rv))); + } +- if(mDecoderStatus != GMPNoErr){ +- mDecoderStatus = GMPNoErr; +- return WEBRTC_VIDEO_CODEC_ERROR; ++ ++ if(aThis->mDecoderStatus != GMPNoErr){ ++ aThis->mDecoderStatus = GMPNoErr; ++ LOG(LogLevel::Error, ("%s: Decoder status is bad (%u)!", ++ __PRETTY_FUNCTION__, static_cast(aThis->mDecoderStatus))); + } +- return WEBRTC_VIDEO_CODEC_OK; + } + + int32_t +diff --git media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.h media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.h +index 0f125d0b311a..92b5a270267e 100644 +--- media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.h ++++ media/webrtc/signaling/src/media-conduit/WebrtcGmpVideoCodec.h +@@ -469,11 +469,8 @@ private: + RefPtr mInitDone; + }; + +- virtual int32_t Decode_g(const webrtc::EncodedImage& aInputImage, +- bool aMissingFrames, +- const webrtc::RTPFragmentationHeader* aFragmentation, +- const webrtc::CodecSpecificInfo* aCodecSpecificInfo, +- int64_t aRenderTimeMs); ++ static void Decode_g(const RefPtr& aThis, ++ nsAutoPtr aDecodeData); + + nsCOMPtr mMPS; + nsCOMPtr mGMPThread; Added: head/www/waterfox/files/patch-bug1452202 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/www/waterfox/files/patch-bug1452202 Tue Apr 17 00:43:36 2018 (r467545) @@ -0,0 +1,39 @@ +commit aad12e2cf1e8 +Author: Eric Rahm +Date: Mon Apr 9 11:01:59 2018 -0700 + + Bug 1452202 - Clean up PLDHashTable move operator. r=froydnj, a=RyanVM + + --HG-- + extra : source : 9036c64b7a66ffe93e717ca97642a4400e396d9c +--- + xpcom/ds/PLDHashTable.cpp | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +diff --git xpcom/ds/PLDHashTable.cpp xpcom/ds/PLDHashTable.cpp +index 9f4954c158f7..6cdf285e367e 100644 +--- xpcom/ds/PLDHashTable.cpp ++++ xpcom/ds/PLDHashTable.cpp +@@ -224,17 +224,17 @@ PLDHashTable::operator=(PLDHashTable&& aOther) + return *this; + } + +- // Destruct |this|. +- this->~PLDHashTable(); +- +- // |mOps| and |mEntrySize| are const so we can't assign them. Instead, we +- // require that they are equal. The justification for this is that they're ++ // |mOps| and |mEntrySize| are required to stay the same, they're + // conceptually part of the type -- indeed, if PLDHashTable was a templated + // type like nsTHashtable, they *would* be part of the type -- so it only + // makes sense to assign in cases where they match. + MOZ_RELEASE_ASSERT(mOps == aOther.mOps); + MOZ_RELEASE_ASSERT(mEntrySize == aOther.mEntrySize); + ++ // Reconstruct |this|. ++ this->~PLDHashTable(); ++ new (KnownNotNull, this) PLDHashTable(aOther.mOps, aOther.mEntrySize, 0); ++ + // Move non-const pieces over. + mHashShift = Move(aOther.mHashShift); + mEntryCount = Move(aOther.mEntryCount); Added: head/www/waterfox/files/patch-bug1452417 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/www/waterfox/files/patch-bug1452417 Tue Apr 17 00:43:36 2018 (r467545) @@ -0,0 +1,30 @@ +commit 0cd6747277f1 +Author: Valentin Gosu +Date: Tue Apr 10 22:07:47 2018 +0200 + + Bug 1452417 - Hold a ref to mRequest in PACResolver::Notify. r=bagder, a=abillings + + MozReview-Commit-ID: 1QeFlAiTCNt + + --HG-- + extra : source : f7fb95c9979452fe25e42873f54cf56a80a0a0d8 +--- + netwerk/base/ProxyAutoConfig.cpp | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git netwerk/base/ProxyAutoConfig.cpp netwerk/base/ProxyAutoConfig.cpp +index 2c965f8e8f4d..d562f321bb45 100644 +--- netwerk/base/ProxyAutoConfig.cpp ++++ netwerk/base/ProxyAutoConfig.cpp +@@ -307,8 +307,9 @@ public: + // nsITimerCallback + NS_IMETHOD Notify(nsITimer *timer) override + { +- if (mRequest) +- mRequest->Cancel(NS_ERROR_NET_TIMEOUT); ++ nsCOMPtr request(mRequest); ++ if (request) ++ request->Cancel(NS_ERROR_NET_TIMEOUT); + mTimer = nullptr; + return NS_OK; + } Added: head/www/waterfox/files/patch-bug1453339 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/www/waterfox/files/patch-bug1453339 Tue Apr 17 00:43:36 2018 (r467545) @@ -0,0 +1,172 @@ +commit b1ce2aee618c +Author: Boris Zbarsky +Date: Fri Apr 13 19:31:42 2018 -0400 + + Bug 1453339 - Make it harder to mess up Promise::All. r=peterv, a=abillings + + MozReview-Commit-ID: UO4wssYHj7 + + --HG-- + extra : source : 438494d2d17bec92e4f4e38661a85b60680ab087 +--- + dom/base/nsFrameLoader.cpp | 4 +--- + dom/cache/Cache.cpp | 2 +- + dom/promise/Promise.cpp | 27 +++++++++++++++------------ + dom/promise/Promise.h | 19 +++++++++++-------- + layout/style/FontFaceSet.cpp | 12 +----------- + 5 files changed, 29 insertions(+), 35 deletions(-) + +diff --git dom/base/nsFrameLoader.cpp dom/base/nsFrameLoader.cpp +index 705779d87b80..f2730dac80b3 100644 +--- dom/base/nsFrameLoader.cpp ++++ dom/base/nsFrameLoader.cpp +@@ -409,8 +409,6 @@ nsFrameLoader::FireWillChangeProcessEvent() + return nullptr; + } + JSContext* cx = jsapi.cx(); +- GlobalObject global(cx, mOwnerContent->GetOwnerGlobal()->GetGlobalJSObject()); +- MOZ_ASSERT(!global.Failed()); + + // Set our mBrowserChangingProcessBlockers property to refer to the blockers + // list. We will synchronously dispatch a DOM event to collect this list of +@@ -433,7 +431,7 @@ nsFrameLoader::FireWillChangeProcessEvent() + mBrowserChangingProcessBlockers = nullptr; + + ErrorResult rv; +- RefPtr allPromise = Promise::All(global, blockers, rv); ++ RefPtr allPromise = Promise::All(cx, blockers, rv); + return allPromise.forget(); + } + +diff --git dom/cache/Cache.cpp dom/cache/Cache.cpp +index 06df0f2a7cb9..3fb8b6c36040 100644 +--- dom/cache/Cache.cpp ++++ dom/cache/Cache.cpp +@@ -630,7 +630,7 @@ Cache::AddAll(const GlobalObject& aGlobal, + new FetchHandler(mActor->GetWorkerHolder(), this, + Move(aRequestList), promise); + +- RefPtr fetchPromise = Promise::All(aGlobal, fetchList, aRv); ++ RefPtr fetchPromise = Promise::All(aGlobal.Context(), fetchList, aRv); + if (NS_WARN_IF(aRv.Failed())) { + return nullptr; + } +diff --git dom/promise/Promise.cpp dom/promise/Promise.cpp +index d259d6cedfcb..88f026b26976 100644 +--- dom/promise/Promise.cpp ++++ dom/promise/Promise.cpp +@@ -134,37 +134,40 @@ Promise::Reject(nsIGlobalObject* aGlobal, JSContext* aCx, + + // static + already_AddRefed +-Promise::All(const GlobalObject& aGlobal, ++Promise::All(JSContext* aCx, + const nsTArray>& aPromiseList, ErrorResult& aRv) + { +- nsCOMPtr global; +- global = do_QueryInterface(aGlobal.GetAsSupports()); +- if (!global) { ++ JS::Rooted globalObj(aCx, JS::CurrentGlobalOrNull(aCx)); ++ if (!globalObj) { + aRv.Throw(NS_ERROR_UNEXPECTED); + return nullptr; + } + +- JSContext* cx = aGlobal.Context(); ++ nsCOMPtr global = xpc::NativeGlobal(globalObj); ++ if (!global) { ++ aRv.Throw(NS_ERROR_UNEXPECTED); ++ return nullptr; ++ } + +- JS::AutoObjectVector promises(cx); ++ JS::AutoObjectVector promises(aCx); + if (!promises.reserve(aPromiseList.Length())) { +- aRv.NoteJSContextException(cx); ++ aRv.NoteJSContextException(aCx); + return nullptr; + } + + for (auto& promise : aPromiseList) { +- JS::Rooted promiseObj(cx, promise->PromiseObj()); ++ JS::Rooted promiseObj(aCx, promise->PromiseObj()); + // Just in case, make sure these are all in the context compartment. +- if (!JS_WrapObject(cx, &promiseObj)) { +- aRv.NoteJSContextException(cx); ++ if (!JS_WrapObject(aCx, &promiseObj)) { ++ aRv.NoteJSContextException(aCx); + return nullptr; + } + promises.infallibleAppend(promiseObj); + } + +- JS::Rooted result(cx, JS::GetWaitForAllPromise(cx, promises)); ++ JS::Rooted result(aCx, JS::GetWaitForAllPromise(aCx, promises)); + if (!result) { +- aRv.NoteJSContextException(cx); ++ aRv.NoteJSContextException(aCx); + return nullptr; + } + +diff --git dom/promise/Promise.h dom/promise/Promise.h +index 447a2a195152..2c13d0146c40 100644 +--- dom/promise/Promise.h ++++ dom/promise/Promise.h +@@ -111,23 +111,26 @@ public: + return mGlobal; + } + +- // Do the equivalent of Promise.resolve in the current compartment of aCx. +- // Errorrs are reported on the ErrorResult; if aRv comes back !Failed(), this +- // function MUST return a non-null value. ++ // Do the equivalent of Promise.resolve in the compartment of aGlobal. The ++ // compartment of aCx is ignored. Errors are reported on the ErrorResult; if ++ // aRv comes back !Failed(), this function MUST return a non-null value. + static already_AddRefed + Resolve(nsIGlobalObject* aGlobal, JSContext* aCx, + JS::Handle aValue, ErrorResult& aRv); + +- // Do the equivalent of Promise.reject in the current compartment of aCx. +- // Errorrs are reported on the ErrorResult; if aRv comes back !Failed(), this +- // function MUST return a non-null value. ++ // Do the equivalent of Promise.reject in the compartment of aGlobal. The ++ // compartment of aCx is ignored. Errors are reported on the ErrorResult; if ++ // aRv comes back !Failed(), this function MUST return a non-null value. + static already_AddRefed + Reject(nsIGlobalObject* aGlobal, JSContext* aCx, + JS::Handle aValue, ErrorResult& aRv); + ++ // Do the equivalent of Promise.all in the current compartment of aCx. Errors ++ // are reported on the ErrorResult; if aRv comes back !Failed(), this function ++ // MUST return a non-null value. + static already_AddRefed +- All(const GlobalObject& aGlobal, +- const nsTArray>& aPromiseList, ErrorResult& aRv); ++ All(JSContext* aCx, const nsTArray>& aPromiseList, ++ ErrorResult& aRv); + + void + Then(JSContext* aCx, +diff --git layout/style/FontFaceSet.cpp layout/style/FontFaceSet.cpp +index 280bf30d96aa..f9038c8c4b14 100644 +--- layout/style/FontFaceSet.cpp ++++ layout/style/FontFaceSet.cpp +@@ -401,17 +401,7 @@ FontFaceSet::Load(JSContext* aCx, + } + } + +- nsIGlobalObject* globalObject = GetParentObject(); +- if (!globalObject) { +- aRv.Throw(NS_ERROR_FAILURE); +- return nullptr; +- } +- +- JS::Rooted jsGlobal(aCx, globalObject->GetGlobalJSObject()); +- GlobalObject global(aCx, jsGlobal); +- +- RefPtr result = Promise::All(global, promises, aRv); +- return result.forget(); ++ return Promise::All(aCx, promises, aRv); + } + + bool Added: head/www/waterfox/files/patch-bug1453555 ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/www/waterfox/files/patch-bug1453555 Tue Apr 17 00:43:36 2018 (r467545) @@ -0,0 +1,34 @@ +commit 5b6c49ed5c8d +Author: James Teh +Date: Thu Apr 12 16:32:19 2018 +1000 + + Bug 1453555: Fix accessibility group info for