diff --git a/application/palemoon/components/downloads/DownloadsViewUI.jsm b/application/palemoon/components/downloads/DownloadsViewUI.jsm index 7aa054d6a3..0220e566f3 100644 --- a/application/palemoon/components/downloads/DownloadsViewUI.jsm +++ b/application/palemoon/components/downloads/DownloadsViewUI.jsm @@ -80,20 +80,16 @@ this.DownloadsViewUI.DownloadElementShell.prototype = { get extendedDisplayName() { let s = DownloadsCommon.strings; - let [displayHost, fullHost] = DownloadUtils.getURIHost(this.download.source.url); + let displayHost = DownloadUtils.getURIHost(this.download.source.url); return s.statusSeparator(this.displayName, displayHost); }, get extendedDisplayNameTip() { let s = DownloadsCommon.strings; + let fullHost = DownloadUtils.getURIHost(this.download.source.url); let referrer = this.download.source.referrer; if (referrer) { - let [displayHost, fullHost] = DownloadUtils.getURIHost(this.download.source.url) + - ' (' + - DownloadUtils.getURIHost(referrer) + - ')'; - } else { - let [displayHost, fullHost] = DownloadUtils.getURIHost(this.download.source.url); + fullHost += ' (' + DownloadUtils.getURIHost(referrer) + ')'; } return s.statusSeparator(this.displayName, fullHost); }, diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index 9379ea45a6..031ddb9043 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -93,15 +93,20 @@ With rare exception, it is advisable to use the following style for commit messa This would directly apply to anyone making a pull request. +Single commits are where issues can be reasonably resolved in a single commit. - Single Commit: `Issue #xxx - Cited issue title or appropriate direct description of changes` - *`Issue #1083 - Deprecate FUEL extension helper javascript library`* -- Multi-Part Commits: `Issue #xxx - Part Number: Appropriate direct description of changes` + +Multi-part commits would be used for complex issues. However, an exception exists for multi-part commits where the issue is anticipated or ends up being long term such as "Stop using unified compilation of sources". In these instances the multi-part form is not required. +- Multi-Part Form: `Issue #xxx - Part Number: Appropriate direct description of changes` - *`Issue #492 - Part 1: Remove files`* - *`Issue #492 - Part 2: Build system, Installer/Packaging`* - *`Issue #492 - Part 3: nsUpdateService.js, updater.cpp, nsUpdateDriver.cpp`* - *`Issue #492 - Part 4: Remove superfluous brackets in nsUpdateService.js and updater.cpp`* -An exception exists for multi-part commits where the issue is anticipated or ends up being long term such as "Stop using unified compilation of sources". In these instances the multi-part form is not required. +Occasionally a resolved (and shipped) issue requires further changes to fix bugs. However, If follow-ups are complex enough to be multi-part it should be considered a new issue. +- Follow-up Form: *`Issue #xxx - Follow-up: Appropriate direct description of changes`* + - *`Issue #1643 - Follow-up: Make sure things aren't changed while iterating.`* ### Commits with no issue diff --git a/dom/base/ResizeObserverController.cpp b/dom/base/ResizeObserverController.cpp index 7a6e6ba449..acc401a5e2 100644 --- a/dom/base/ResizeObserverController.cpp +++ b/dom/base/ResizeObserverController.cpp @@ -58,6 +58,12 @@ ResizeObserverNotificationHelper::Register() void ResizeObserverNotificationHelper::Unregister() { + if (!mOwner) { + // We've outlived our owner, so there's nothing registered anymore. + mRegistered = false; + return; + } + if (!mRegistered) { return; } @@ -112,6 +118,10 @@ ResizeObserverController::Notify() return; } + // Hold a strong reference to the document, because otherwise calling + // all active observers on it might yank it out from under us. + RefPtr document(mDocument); + uint32_t shallowestTargetDepth = 0; GatherAllActiveObservations(shallowestTargetDepth); @@ -146,7 +156,7 @@ ResizeObserverController::Notify() nsEventStatus status = nsEventStatus_eIgnore; nsCOMPtr window = - mDocument->GetWindow()->GetCurrentInnerWindow(); + document->GetWindow()->GetCurrentInnerWindow(); if (window) { nsCOMPtr sgo = do_QueryInterface(window); @@ -178,7 +188,11 @@ ResizeObserverController::BroadcastAllActiveObservations() { uint32_t shallowestTargetDepth = UINT32_MAX; - for (auto observer : mResizeObservers) { + // Use a copy of the observers as this invokes the callbacks of the observers + // which could register/unregister observers at will. + nsTArray> tempObservers(mResizeObservers); + + for (auto observer : tempObservers) { uint32_t targetDepth = observer->BroadcastActiveObservations(); diff --git a/ipc/testshell/XPCShellEnvironment.cpp b/ipc/testshell/XPCShellEnvironment.cpp index 1553a8d52b..c97be68a52 100644 --- a/ipc/testshell/XPCShellEnvironment.cpp +++ b/ipc/testshell/XPCShellEnvironment.cpp @@ -1,3 +1,4 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ diff --git a/layout/inspector/inDOMUtils.cpp b/layout/inspector/inDOMUtils.cpp index a28b35ef8f..800201ce21 100644 --- a/layout/inspector/inDOMUtils.cpp +++ b/layout/inspector/inDOMUtils.cpp @@ -842,7 +842,7 @@ PropertySupportsVariant(nsCSSPropertyID aPropertyID, uint32_t aVariant) case eCSSProperty_grid_row_end: case eCSSProperty_font_weight: case eCSSProperty_initial_letter: - supported = VARIANT_NUMBER | VARIANT_OPACITY; + supported = VARIANT_NUMBER; break; default: diff --git a/layout/style/nsCSSParser.cpp b/layout/style/nsCSSParser.cpp index 09684a57ab..078cbaecdf 100644 --- a/layout/style/nsCSSParser.cpp +++ b/layout/style/nsCSSParser.cpp @@ -1299,7 +1299,7 @@ protected: } bool ParseNonNegativeNumber(nsCSSValue& aValue) { - return ParseSingleTokenNonNegativeVariant(aValue, VARIANT_NUMBER | VARIANT_OPACITY, nullptr); + return ParseSingleTokenNonNegativeVariant(aValue, VARIANT_NUMBER, nullptr); } // Helpers for some common ParseSingleTokenOneOrLargerVariant calls. @@ -1309,7 +1309,7 @@ protected: } bool ParseOneOrLargerNumber(nsCSSValue& aValue) { - return ParseSingleTokenOneOrLargerVariant(aValue, VARIANT_NUMBER | VARIANT_OPACITY, nullptr); + return ParseSingleTokenOneOrLargerVariant(aValue, VARIANT_NUMBER, nullptr); } // http://dev.w3.org/csswg/css-values/#custom-idents @@ -8485,7 +8485,7 @@ CSSParserImpl::ParseImageRect(nsCSSValue& aImage) break; } - static const int32_t VARIANT_SIDE = VARIANT_NUMBER | VARIANT_PERCENT | VARIANT_OPACITY; + static const int32_t VARIANT_SIDE = VARIANT_NUMBER | VARIANT_PERCENT; if (!ParseSingleTokenNonNegativeVariant(top, VARIANT_SIDE, nullptr) || !ExpectSymbol(',', true) || !ParseSingleTokenNonNegativeVariant(right, VARIANT_SIDE, nullptr) || @@ -10894,7 +10894,7 @@ CSSParserImpl::ParseWebkitGradientColorStop(nsCSSValueGradient* aGradient) if (mToken.mIdent.LowerCaseEqualsLiteral("color-stop")) { // Parse stop location, followed by comma. if (!ParseSingleTokenVariant(stop->mLocation, - VARIANT_NUMBER | VARIANT_PERCENT | VARIANT_OPACITY, + VARIANT_NUMBER | VARIANT_PERCENT, nullptr) || !ExpectSymbol(',', true)) { SkipUntil(')'); // Skip to end of color-stop(...) expression. @@ -16057,7 +16057,7 @@ static bool GetFunctionParseInformation(nsCSSKeyword aToken, {VARIANT_LBCALC, VARIANT_LBCALC, VARIANT_LBCALC}, {VARIANT_ANGLE_OR_ZERO}, {VARIANT_ANGLE_OR_ZERO, VARIANT_ANGLE_OR_ZERO}, - {VARIANT_NUMBER|VARIANT_OPACITY}, + {VARIANT_NUMBER}, {VARIANT_LENGTH|VARIANT_NONNEGATIVE_DIMENSION}, {VARIANT_LB|VARIANT_NONNEGATIVE_DIMENSION}, {VARIANT_NUMBER, VARIANT_NUMBER}, @@ -17639,7 +17639,7 @@ CSSParserImpl::ParseScrollSnapPoints(nsCSSValue& aValue, nsCSSPropertyID aPropID nsCSSKeywords::LookupKeyword(mToken.mIdent) == eCSSKeyword_repeat) { nsCSSValue lengthValue; if (ParseNonNegativeVariant(lengthValue, - VARIANT_LENGTH | VARIANT_PERCENT | VARIANT_OPACITY | VARIANT_CALC, + VARIANT_LENGTH | VARIANT_PERCENT | VARIANT_CALC, nullptr) != CSSParseResult::Ok) { REPORT_UNEXPECTED(PEExpectedNonnegativeNP); SkipUntil(')');