Index: head/www/waterfox/Makefile =================================================================== --- head/www/waterfox/Makefile (revision 465043) +++ head/www/waterfox/Makefile (revision 465044) @@ -1,75 +1,74 @@ # $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 \ icu>=59.1,1:devel/icu \ libevent>=2.1.8:devel/libevent \ harfbuzz>=1.4.7:print/harfbuzz \ graphite2>=1.3.10:graphics/graphite2 \ png>=1.6.31:graphics/png \ libvorbis>=1.3.5,3:audio/libvorbis \ libvpx>=1.5.0:multimedia/libvpx \ sqlite3>=3.19.3:databases/sqlite3 \ ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3@${PY_FLAVOR} \ v4l_compat>0:multimedia/v4l_compat \ autoconf-2.13:devel/autoconf213 \ yasm:devel/yasm \ zip:archivers/zip # soundtouch>=1.9.0:audio/soundtouch \ LIB_DEPENDS= libv4l2.so:multimedia/libv4l USE_GITHUB= yes GH_ACCOUNT= MrAlex94 GH_PROJECT= Waterfox USE_GECKO= gecko MOZ_PKGCONFIG_FILES= # empty USE_MOZILLA= -soundtouch MOZILLA_NAME= Waterfox USE_GL= gl WATERFOX_ICON= ${MOZILLA}.png WATERFOX_ICON_SRC= ${PREFIX}/lib/${MOZILLA}/browser/chrome/icons/default/default256.png WATERFOX_DESKTOP= ${MOZSRC}/taskcluster/docker/firefox-snap/firefox.desktop MOZ_OPTIONS= --enable-application=browser \ --with-app-name=${MOZILLA} \ --with-app-basename=${MOZILLA_NAME} \ --with-distribution-id=org.${MOZILLA}project OPTIONS_DEFAULT= BUNDLED_CAIRO .include "${.CURDIR}/../../www/firefox/Makefile.options" post-patch: @${REINPLACE_CMD} -e 's/%u/%U/' -e '/X-MultipleArgs/d' \ -e 's/firefox/${MOZILLA}/' \ -e 's/Firefox/${MOZILLA_NAME}/' \ ${WATERFOX_DESKTOP} @${REINPLACE_CMD} -e 's|%%LOCALBASE%%|${LOCALBASE}|g' \ ${WRKSRC}/browser/app/nsBrowserApp.cpp pre-configure: (cd ${WRKSRC} && ${LOCALBASE}/bin/autoconf-2.13) (cd ${WRKSRC}/js/src/ && ${LOCALBASE}/bin/autoconf-2.13) post-install: ${INSTALL_DATA} ${WATERFOX_DESKTOP} \ ${STAGEDIR}${PREFIX}/share/applications/${MOZILLA}.desktop ${MKDIR} ${STAGEDIR}${PREFIX}/share/pixmaps ${LN} -sf ${WATERFOX_ICON_SRC} ${STAGEDIR}${PREFIX}/share/pixmaps/${WATERFOX_ICON} .include Index: head/www/waterfox/distinfo =================================================================== --- head/www/waterfox/distinfo (revision 465043) +++ head/www/waterfox/distinfo (revision 465044) @@ -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 Index: head/www/waterfox/files/patch-bug1422643 =================================================================== --- head/www/waterfox/files/patch-bug1422643 (revision 465043) +++ head/www/waterfox/files/patch-bug1422643 (nonexistent) @@ -1,80 +0,0 @@ -commit dd719e911e2c -Author: Gijs Kruitbosch -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,hi", "data:text/html,hi"], -@@ -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) { Property changes on: head/www/waterfox/files/patch-bug1422643 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/waterfox/files/patch-bug1425257 =================================================================== --- head/www/waterfox/files/patch-bug1425257 (revision 465043) +++ head/www/waterfox/files/patch-bug1425257 (nonexistent) @@ -1,216 +0,0 @@ -commit ad55ed8d63e9 -Author: Bas Schouten -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 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 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 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 Factory::mD2D1Device; - StaticRefPtr Factory::mDWriteFactory; - bool Factory::mDWriteFactoryInitialized = false; - StaticMutex Factory::mDeviceLock; -+StaticMutex Factory::mDTDependencyLock; - #endif - - DrawEventRecorder *Factory::mRecorder; Property changes on: head/www/waterfox/files/patch-bug1425257 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/waterfox/files/patch-bug1419166 =================================================================== --- head/www/waterfox/files/patch-bug1419166 (revision 465043) +++ head/www/waterfox/files/patch-bug1419166 (nonexistent) @@ -1,144 +0,0 @@ -commit 2b3039c02109 -Author: Andrea Marchesini -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& 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( - 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& 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& 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 mActiveWorkers; - nsTArray mActiveServiceWorkers; - nsTArray mQueuedWorkers; -- nsClassHashtable mSharedWorkerInfos; -+ nsTArray> mSharedWorkerInfos; - uint32_t mChildWorkerCount; - - WorkerDomainInfo() Property changes on: head/www/waterfox/files/patch-bug1419166 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/waterfox/files/patch-bug1429093 =================================================================== --- head/www/waterfox/files/patch-bug1429093 (revision 465043) +++ head/www/waterfox/files/patch-bug1429093 (nonexistent) @@ -1,135 +0,0 @@ -commit 0476b46775d8 -Author: Tom Tung -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 allowWindowInteraction = -- new AllowWindowInteractionHandler(aWorkerPrivate); -+ -+ RefPtr 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 -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); - }; - - -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(); - Property changes on: head/www/waterfox/files/patch-bug1429093 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/waterfox/files/patch-bug1441006 =================================================================== --- head/www/waterfox/files/patch-bug1441006 (revision 465043) +++ head/www/waterfox/files/patch-bug1441006 (nonexistent) @@ -1,109 +0,0 @@ -commit 2b7e4dc17f0e -Author: Jan de Mooij -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(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(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); Property changes on: head/www/waterfox/files/patch-bug1441006 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/waterfox/files/patch-bug1416523 =================================================================== --- head/www/waterfox/files/patch-bug1416523 (revision 465043) +++ head/www/waterfox/files/patch-bug1416523 (nonexistent) @@ -1,46 +0,0 @@ -commit aeff426f078d -Author: Brian Hackett -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()) { - // 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() || obj->as().hasOverriddenElement()) - return false; - -+ if (!(resultFlags_ & GetPropertyResultFlags::Monitored)) -+ return false; -+ - if (obj->is()) { - writer.guardClass(objId, GuardClassKind::MappedArguments); - } else { Property changes on: head/www/waterfox/files/patch-bug1416523 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/waterfox/files/patch-bug1366357 =================================================================== --- head/www/waterfox/files/patch-bug1366357 (revision 465043) +++ head/www/waterfox/files/patch-bug1366357 (nonexistent) @@ -1,141 +0,0 @@ -commit 15353262e8f3 -Author: Johann Hofmann -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 = ""; -+ 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 = ""; -+ 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; Property changes on: head/www/waterfox/files/patch-bug1366357 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/waterfox/files/patch-bug1446062 =================================================================== --- head/www/waterfox/files/patch-bug1446062 (revision 465043) +++ head/www/waterfox/files/patch-bug1446062 (nonexistent) @@ -1,177 +0,0 @@ -commit 028c6e8c32ea -Author: Monty Montgomery -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;idim;i++,o+=step) -- for (j=0;jdim>8){ -- for(i=0;ivaluelist+entry*book->dim; -- for (j=0;jdim;) -- a[i++]+=t[j++]; -- } -- }else{ -- for(i=0;ivaluelist+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;ivaluelist+entry*book->dim; -+ for(j=0;idim;) -+ 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;ivaluelist+entry*book->dim; -- for (j=0;jdim;j++){ -+ for (j=0;idim;j++){ - a[chptr++][i]+=t[j]; - if(chptr==ch){ - chptr=0; - -commit fbddf2078fef -Author: Thomas Daede -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;idim;i++,o+=step) -- for (j=0;j>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;idim;i++,o+=step) -- for (j=0;jvaluelist+entry*book->dim; -- for (j=0;jdim;) -+ for (j=0;idim;) - 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;jdim;) -+ for (j=0;idim;) - 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;ivaluelist+entry*book->dim; -- for (j=0;jdim;j++){ -+ for (j=0;idim;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;ivaluelist+entry*book->dim; -- for (j=0;jdim;j++){ -+ for (j=0;idim;j++){ - a[chptr++][i]+=t[j]<<-shift; - if(chptr==ch){ - chptr=0; Property changes on: head/www/waterfox/files/patch-bug1446062 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/waterfox/files/patch-bug1431336 =================================================================== --- head/www/waterfox/files/patch-bug1431336 (revision 465043) +++ head/www/waterfox/files/patch-bug1431336 (nonexistent) @@ -1,34 +0,0 @@ -commit d606d1200b5a -Author: Makoto Kato -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 self(this); - aRv = mBoundFrame->SetSelectionRange(aStart, aEnd, aDirection); -- if (aRv.Failed()) { -+ if (aRv.Failed() || !self.get()) { - return; - } - rv = mBoundFrame->ScrollSelectionIntoView(); Property changes on: head/www/waterfox/files/patch-bug1431336 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/waterfox/files/patch-bug1440775 =================================================================== --- head/www/waterfox/files/patch-bug1440775 (revision 465043) +++ head/www/waterfox/files/patch-bug1440775 (nonexistent) @@ -1,48 +0,0 @@ -commit ee49d895ca4d -Author: Ben Kelly -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; - } - Property changes on: head/www/waterfox/files/patch-bug1440775 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/waterfox/files/patch-bug1423173 =================================================================== --- head/www/waterfox/files/patch-bug1423173 (revision 465043) +++ head/www/waterfox/files/patch-bug1423173 (nonexistent) @@ -1,43 +0,0 @@ -commit 46e3052bc347 -Author: Kannan Vijayan -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().denseElementsAreFrozen()) -+ return false; -+ - obj = proto; - } while (true); - Property changes on: head/www/waterfox/files/patch-bug1423173 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/waterfox/files/patch-bug1424261 =================================================================== --- head/www/waterfox/files/patch-bug1424261 (revision 465043) +++ head/www/waterfox/files/patch-bug1424261 (nonexistent) @@ -1,66 +0,0 @@ -commit 0d38343e3589 -Author: Gijs Kruitbosch -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 -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; Property changes on: head/www/waterfox/files/patch-bug1424261 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/waterfox/files/patch-bug1414768 =================================================================== --- head/www/waterfox/files/patch-bug1414768 (revision 465043) +++ head/www/waterfox/files/patch-bug1414768 (nonexistent) @@ -1,325 +0,0 @@ -commit cb494b100bfb -Author: Jason Orendorff -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"); -+ Property changes on: head/www/waterfox/files/patch-bug1414768 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/waterfox/files/patch-bug1435566 =================================================================== --- head/www/waterfox/files/patch-bug1435566 (revision 465043) +++ head/www/waterfox/files/patch-bug1435566 (nonexistent) @@ -1,27 +0,0 @@ -commit 2d6648d9388d -Author: Emilio Cobos Álvarez -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(); Property changes on: head/www/waterfox/files/patch-bug1435566 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/waterfox/files/patch-bug1404297 =================================================================== --- head/www/waterfox/files/patch-bug1404297 (revision 465043) +++ head/www/waterfox/files/patch-bug1404297 (nonexistent) @@ -1,260 +0,0 @@ -commit 586e13b2b708 -Author: Blake Kaplan -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 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 -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 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 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 -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, -- kSegmentSize, -- InfallibleAllocPolicy> -- mLinksToUpdate; -+ -+ typedef mozilla::SegmentedVector, -+ kSegmentSize, -+ InfallibleAllocPolicy> -+ LinksToUpdateList; -+ -+ LinksToUpdateList mLinksToUpdate; - - // SMIL Animation Controller, lazily-initialized in GetAnimationController - RefPtr 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 -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(); } Property changes on: head/www/waterfox/files/patch-bug1404297 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/waterfox/files/patch-bug1428947 =================================================================== --- head/www/waterfox/files/patch-bug1428947 (revision 465043) +++ head/www/waterfox/files/patch-bug1428947 (nonexistent) @@ -1,90 +0,0 @@ -commit 1251c93456f6 -Author: Dan Glastonbury -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(mData.mCbCrStride) * mData.mCbCrSize.height * 2 + -- CheckedInt(mData.mYStride) * mData.mYSize.height; -+ CheckedInt(aData.mCbCrStride) * aData.mCbCrSize.height * 2 + -+ CheckedInt(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); Property changes on: head/www/waterfox/files/patch-bug1428947 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/waterfox/files/patch-bug1433005 =================================================================== --- head/www/waterfox/files/patch-bug1433005 (revision 465043) +++ head/www/waterfox/files/patch-bug1433005 (nonexistent) @@ -1,52 +0,0 @@ -commit f2d8528c4e01 -Author: Dan Minor -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 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; - } - } - Property changes on: head/www/waterfox/files/patch-bug1433005 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/waterfox/files/patch-bug1426002 =================================================================== --- head/www/waterfox/files/patch-bug1426002 (revision 465043) +++ head/www/waterfox/files/patch-bug1426002 (nonexistent) @@ -1,34 +0,0 @@ -commit 7ee28da3b920 -Author: Boris Zbarsky -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 ret = this; - return ret.forget(); - } -+ -+ // Now double-check that our invariants still hold. -+ if (!mScriptGlobalObject) { -+ nsCOMPtr ret = this; -+ return ret.forget(); -+ } -+ -+ nsPIDOMWindowOuter* outer = GetWindow(); -+ if (!outer || (GetInnerWindow() != outer->GetCurrentInnerWindow())) { -+ nsCOMPtr ret = this; -+ return ret.forget(); -+ } - } - - nsCOMPtr webnav(do_QueryInterface(shell)); Property changes on: head/www/waterfox/files/patch-bug1426002 ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/www/waterfox/files/patch-typos =================================================================== --- head/www/waterfox/files/patch-typos (revision 465043) +++ head/www/waterfox/files/patch-typos (revision 465044) @@ -1,22 +1,52 @@ 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", [ + "