From f8d21e08c1e4eb9f6e684a881506766c9a09ac22 Mon Sep 17 00:00:00 2001 From: Gijs Kruitbosch Date: Fri, 31 May 2019 13:55:56 +0000 Subject: [PATCH 01/47] Bug 1554744 - make button state in browser language dialog correct when there's no available languages, r=johannh Differential Revision: https://phabricator.services.mozilla.com/D33273 --HG-- extra : moz-landing-system : lando --- browser/components/preferences/browserLanguages.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/browser/components/preferences/browserLanguages.js b/browser/components/preferences/browserLanguages.js index f8bae44b52c9..4c39f55fdafd 100644 --- a/browser/components/preferences/browserLanguages.js +++ b/browser/components/preferences/browserLanguages.js @@ -78,9 +78,9 @@ class OrderedListBox { setButtonState() { let {upButton, downButton, removeButton} = this; let {selectedIndex, itemCount} = this.richlistbox; - upButton.disabled = selectedIndex == 0; + upButton.disabled = selectedIndex <= 0; downButton.disabled = selectedIndex == itemCount - 1; - removeButton.disabled = itemCount == 1 || !this.selectedItem.canRemove; + removeButton.disabled = itemCount <= 1 || !this.selectedItem.canRemove; } moveUp() { From 58702e4a1d255a5551b14655b5c1e3ba56202ee9 Mon Sep 17 00:00:00 2001 From: Ehsan Akhgari Date: Fri, 31 May 2019 12:08:02 +0000 Subject: [PATCH 02/47] Bug 1555715 - Remove WebSocketChannelParent::mIPCOpen; r=valentin It is no longer necesssary for individual actors to do this book-keeping manually. Differential Revision: https://phabricator.services.mozilla.com/D33159 --HG-- extra : moz-landing-system : lando --- .../websocket/WebSocketChannelParent.cpp | 19 ++++++++----------- .../websocket/WebSocketChannelParent.h | 1 - 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/netwerk/protocol/websocket/WebSocketChannelParent.cpp b/netwerk/protocol/websocket/WebSocketChannelParent.cpp index 89f2ea2a8323..bbcebcf19f82 100644 --- a/netwerk/protocol/websocket/WebSocketChannelParent.cpp +++ b/netwerk/protocol/websocket/WebSocketChannelParent.cpp @@ -27,7 +27,6 @@ WebSocketChannelParent::WebSocketChannelParent( PBOverrideStatus aOverrideStatus, uint32_t aSerial) : mAuthProvider(aAuthProvider), mLoadContext(aLoadContext), - mIPCOpen(true), mSerial(aSerial) { // Websocket channels can't have a private browsing override MOZ_ASSERT_IF(!aLoadContext, aOverrideStatus == kPBOverride_Unset); @@ -41,7 +40,7 @@ mozilla::ipc::IPCResult WebSocketChannelParent::RecvDeleteSelf() { mChannel = nullptr; mAuthProvider = nullptr; IProtocol* mgr = Manager(); - if (mIPCOpen && !Send__delete__(this)) { + if (CanRecv() && !Send__delete__(this)) { return IPC_FAIL_NO_REASON(mgr); } return IPC_OK(); @@ -202,8 +201,8 @@ WebSocketChannelParent::OnStart(nsISupports* aContext) { encrypted = channel->IsEncrypted(); httpChannelId = channel->HttpChannelId(); } - if (!mIPCOpen || !SendOnStart(protocol, extensions, effectiveURL, encrypted, - httpChannelId)) { + if (!CanRecv() || !SendOnStart(protocol, extensions, effectiveURL, encrypted, + httpChannelId)) { return NS_ERROR_FAILURE; } return NS_OK; @@ -212,7 +211,7 @@ WebSocketChannelParent::OnStart(nsISupports* aContext) { NS_IMETHODIMP WebSocketChannelParent::OnStop(nsISupports* aContext, nsresult aStatusCode) { LOG(("WebSocketChannelParent::OnStop() %p\n", this)); - if (!mIPCOpen || !SendOnStop(aStatusCode)) { + if (!CanRecv() || !SendOnStop(aStatusCode)) { return NS_ERROR_FAILURE; } return NS_OK; @@ -222,7 +221,7 @@ NS_IMETHODIMP WebSocketChannelParent::OnMessageAvailable(nsISupports* aContext, const nsACString& aMsg) { LOG(("WebSocketChannelParent::OnMessageAvailable() %p\n", this)); - if (!mIPCOpen || !SendOnMessageAvailable(nsCString(aMsg))) { + if (!CanRecv() || !SendOnMessageAvailable(nsCString(aMsg))) { return NS_ERROR_FAILURE; } return NS_OK; @@ -232,7 +231,7 @@ NS_IMETHODIMP WebSocketChannelParent::OnBinaryMessageAvailable(nsISupports* aContext, const nsACString& aMsg) { LOG(("WebSocketChannelParent::OnBinaryMessageAvailable() %p\n", this)); - if (!mIPCOpen || !SendOnBinaryMessageAvailable(nsCString(aMsg))) { + if (!CanRecv() || !SendOnBinaryMessageAvailable(nsCString(aMsg))) { return NS_ERROR_FAILURE; } return NS_OK; @@ -241,7 +240,7 @@ WebSocketChannelParent::OnBinaryMessageAvailable(nsISupports* aContext, NS_IMETHODIMP WebSocketChannelParent::OnAcknowledge(nsISupports* aContext, uint32_t aSize) { LOG(("WebSocketChannelParent::OnAcknowledge() %p\n", this)); - if (!mIPCOpen || !SendOnAcknowledge(aSize)) { + if (!CanRecv() || !SendOnAcknowledge(aSize)) { return NS_ERROR_FAILURE; } return NS_OK; @@ -251,7 +250,7 @@ NS_IMETHODIMP WebSocketChannelParent::OnServerClose(nsISupports* aContext, uint16_t code, const nsACString& reason) { LOG(("WebSocketChannelParent::OnServerClose() %p\n", this)); - if (!mIPCOpen || !SendOnServerClose(code, nsCString(reason))) { + if (!CanRecv() || !SendOnServerClose(code, nsCString(reason))) { return NS_ERROR_FAILURE; } return NS_OK; @@ -266,8 +265,6 @@ void WebSocketChannelParent::ActorDestroy(ActorDestroyReason why) { Unused << mChannel->Close(nsIWebSocketChannel::CLOSE_GOING_AWAY, NS_LITERAL_CSTRING("Child was killed")); } - - mIPCOpen = false; } //----------------------------------------------------------------------------- diff --git a/netwerk/protocol/websocket/WebSocketChannelParent.h b/netwerk/protocol/websocket/WebSocketChannelParent.h index 18f95c022e26..5baa4796ebf2 100644 --- a/netwerk/protocol/websocket/WebSocketChannelParent.h +++ b/netwerk/protocol/websocket/WebSocketChannelParent.h @@ -60,7 +60,6 @@ class WebSocketChannelParent : public PWebSocketParent, nsCOMPtr mAuthProvider; nsCOMPtr mChannel; nsCOMPtr mLoadContext; - bool mIPCOpen; uint32_t mSerial; }; From 62aa7c0ec32ed81735da0630db87182a9d8601a9 Mon Sep 17 00:00:00 2001 From: Ehsan Akhgari Date: Fri, 31 May 2019 06:14:14 +0000 Subject: [PATCH 03/47] Bug 1555846 - Block cookies from trackers with dynamic FPI; r=baku Differential Revision: https://phabricator.services.mozilla.com/D33227 --HG-- extra : moz-landing-system : lando --- netwerk/cookie/nsCookieService.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/netwerk/cookie/nsCookieService.cpp b/netwerk/cookie/nsCookieService.cpp index a2e6e0f56950..8dfff8c797a5 100644 --- a/netwerk/cookie/nsCookieService.cpp +++ b/netwerk/cookie/nsCookieService.cpp @@ -3958,7 +3958,14 @@ CookieStatus nsCookieService::CheckPrefs( // access to the first-party cookie jar. if (aIsForeign && aIsTrackingResource && !aFirstPartyStorageAccessGranted && aCookieSettings->GetRejectThirdPartyTrackers()) { - if (StoragePartitioningEnabled(aInputRejectedReason, aCookieSettings)) { + // Explicitly pass nsIWebProgressListener::STATE_COOKIES_BLOCKED_TRACKER + // here to ensure that we are testing the partitioning configuration only + // for the nsICookieService::BEHAVIOR_REJECT_TRACKER configuration. + // When partitioning for BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN, we + // don't want to give a free pass to tracker cookies here! + if (StoragePartitioningEnabled( + nsIWebProgressListener::STATE_COOKIES_BLOCKED_TRACKER, + aCookieSettings)) { MOZ_ASSERT(!aOriginAttrs.mFirstPartyDomain.IsEmpty(), "We must have a StoragePrincipal here!"); return STATUS_ACCEPTED; From a524e7ef1569597ff48b752a92032ffea52d3fe4 Mon Sep 17 00:00:00 2001 From: violet Date: Fri, 31 May 2019 13:17:46 +0000 Subject: [PATCH 04/47] Bug 1555758 - Fallback to GetComputedStyleNoFlush for BuildPath r=longsonr,emilio It turns out the `BuildPath()` method will still be exposed by DOM API via `getTotalLength()`. So we need to fallback to `GetComputedStyleNoFlush()` to handle display:none problem, and if the element doesn't even belong to a document, we further fallback to 0. `BuildPath()` being affected also means `GetStrokeWidth()`, etc. will also be indirectly exposed to DOM API in some obscure cases. Let's add a utility to handle the fallback. Differential Revision: https://phabricator.services.mozilla.com/D33247 --HG-- extra : moz-landing-system : lando --- dom/svg/SVGCircleElement.cpp | 5 +- dom/svg/SVGContentUtils.cpp | 153 +++++++++++++------------ dom/svg/SVGContentUtils.h | 4 +- dom/svg/SVGEllipseElement.cpp | 6 +- dom/svg/SVGGeometryElement.cpp | 21 ++-- dom/svg/SVGGeometryProperty.h | 42 ++++++- dom/svg/SVGImageElement.cpp | 6 +- dom/svg/SVGPathElement.cpp | 9 +- dom/svg/SVGRectElement.cpp | 14 +-- dom/svg/test/test_getTotalLength.xhtml | 7 ++ 10 files changed, 160 insertions(+), 107 deletions(-) diff --git a/dom/svg/SVGCircleElement.cpp b/dom/svg/SVGCircleElement.cpp index d8dc354b2bbd..6fc8d29c2e7c 100644 --- a/dom/svg/SVGCircleElement.cpp +++ b/dom/svg/SVGCircleElement.cpp @@ -127,9 +127,8 @@ bool SVGCircleElement::GetGeometryBounds( already_AddRefed SVGCircleElement::BuildPath(PathBuilder* aBuilder) { float x, y, r; - MOZ_ASSERT(GetPrimaryFrame()); - SVGGeometryProperty::ResolveAll(this, &x, &y, - &r); + SVGGeometryProperty::ResolveAllAllowFallback( + this, &x, &y, &r); if (r <= 0.0f) { return nullptr; diff --git a/dom/svg/SVGContentUtils.cpp b/dom/svg/SVGContentUtils.cpp index e55bad2f132e..695703f9ae18 100644 --- a/dom/svg/SVGContentUtils.cpp +++ b/dom/svg/SVGContentUtils.cpp @@ -29,6 +29,7 @@ #include "nsWhitespaceTokenizer.h" #include "SVGAnimationElement.h" #include "SVGAnimatedPreserveAspectRatio.h" +#include "SVGGeometryProperty.h" #include "nsContentUtils.h" #include "mozilla/gfx/2D.h" #include "mozilla/gfx/Types.h" @@ -255,93 +256,97 @@ static DashState GetStrokeDashData( void SVGContentUtils::GetStrokeOptions(AutoStrokeOptions* aStrokeOptions, SVGElement* aElement, - ComputedStyle* aComputedStyle, + const ComputedStyle* aComputedStyle, SVGContextPaint* aContextPaint, StrokeOptionFlags aFlags) { - ComputedStyle* computedStyle; + auto doCompute = [&](const ComputedStyle* computedStyle) { + const nsStyleSVG* styleSVG = computedStyle->StyleSVG(); + + bool checkedDashAndStrokeIsDashed = false; + if (aFlags != eIgnoreStrokeDashing) { + DashState dashState = + GetStrokeDashData(aStrokeOptions, aElement, styleSVG, aContextPaint); + + if (dashState == eNoStroke) { + // Hopefully this will shortcircuit any stroke operations: + aStrokeOptions->mLineWidth = 0; + return; + } + if (dashState == eContinuousStroke && aStrokeOptions->mDashPattern) { + // Prevent our caller from wasting time looking at a pattern without + // gaps: + aStrokeOptions->DiscardDashPattern(); + } + checkedDashAndStrokeIsDashed = (dashState == eDashedStroke); + } + + aStrokeOptions->mLineWidth = + GetStrokeWidth(aElement, computedStyle, aContextPaint); + + aStrokeOptions->mMiterLimit = Float(styleSVG->mStrokeMiterlimit); + + switch (styleSVG->mStrokeLinejoin) { + case NS_STYLE_STROKE_LINEJOIN_MITER: + aStrokeOptions->mLineJoin = JoinStyle::MITER_OR_BEVEL; + break; + case NS_STYLE_STROKE_LINEJOIN_ROUND: + aStrokeOptions->mLineJoin = JoinStyle::ROUND; + break; + case NS_STYLE_STROKE_LINEJOIN_BEVEL: + aStrokeOptions->mLineJoin = JoinStyle::BEVEL; + break; + } + + if (ShapeTypeHasNoCorners(aElement) && !checkedDashAndStrokeIsDashed) { + // Note: if aFlags == eIgnoreStrokeDashing then we may be returning the + // wrong linecap value here, since the actual linecap used on render in + // this case depends on whether the stroke is dashed or not. + aStrokeOptions->mLineCap = CapStyle::BUTT; + } else { + switch (styleSVG->mStrokeLinecap) { + case NS_STYLE_STROKE_LINECAP_BUTT: + aStrokeOptions->mLineCap = CapStyle::BUTT; + break; + case NS_STYLE_STROKE_LINECAP_ROUND: + aStrokeOptions->mLineCap = CapStyle::ROUND; + break; + case NS_STYLE_STROKE_LINECAP_SQUARE: + aStrokeOptions->mLineCap = CapStyle::SQUARE; + break; + } + } + }; + if (aComputedStyle) { - computedStyle = aComputedStyle; - } else if (auto* f = aElement->GetPrimaryFrame()) { - computedStyle = f->Style(); + doCompute(aComputedStyle); } else { - return; - } - - const nsStyleSVG* styleSVG = computedStyle->StyleSVG(); - - bool checkedDashAndStrokeIsDashed = false; - if (aFlags != eIgnoreStrokeDashing) { - DashState dashState = - GetStrokeDashData(aStrokeOptions, aElement, styleSVG, aContextPaint); - - if (dashState == eNoStroke) { - // Hopefully this will shortcircuit any stroke operations: - aStrokeOptions->mLineWidth = 0; - return; - } - if (dashState == eContinuousStroke && aStrokeOptions->mDashPattern) { - // Prevent our caller from wasting time looking at a pattern without gaps: - aStrokeOptions->DiscardDashPattern(); - } - checkedDashAndStrokeIsDashed = (dashState == eDashedStroke); - } - - aStrokeOptions->mLineWidth = - GetStrokeWidth(aElement, computedStyle, aContextPaint); - - aStrokeOptions->mMiterLimit = Float(styleSVG->mStrokeMiterlimit); - - switch (styleSVG->mStrokeLinejoin) { - case NS_STYLE_STROKE_LINEJOIN_MITER: - aStrokeOptions->mLineJoin = JoinStyle::MITER_OR_BEVEL; - break; - case NS_STYLE_STROKE_LINEJOIN_ROUND: - aStrokeOptions->mLineJoin = JoinStyle::ROUND; - break; - case NS_STYLE_STROKE_LINEJOIN_BEVEL: - aStrokeOptions->mLineJoin = JoinStyle::BEVEL; - break; - } - - if (ShapeTypeHasNoCorners(aElement) && !checkedDashAndStrokeIsDashed) { - // Note: if aFlags == eIgnoreStrokeDashing then we may be returning the - // wrong linecap value here, since the actual linecap used on render in this - // case depends on whether the stroke is dashed or not. - aStrokeOptions->mLineCap = CapStyle::BUTT; - } else { - switch (styleSVG->mStrokeLinecap) { - case NS_STYLE_STROKE_LINECAP_BUTT: - aStrokeOptions->mLineCap = CapStyle::BUTT; - break; - case NS_STYLE_STROKE_LINECAP_ROUND: - aStrokeOptions->mLineCap = CapStyle::ROUND; - break; - case NS_STYLE_STROKE_LINECAP_SQUARE: - aStrokeOptions->mLineCap = CapStyle::SQUARE; - break; - } + SVGGeometryProperty::DoForComputedStyle(aElement, doCompute); } } Float SVGContentUtils::GetStrokeWidth(SVGElement* aElement, - ComputedStyle* aComputedStyle, + const ComputedStyle* aComputedStyle, SVGContextPaint* aContextPaint) { - ComputedStyle* computedStyle; + Float res = 0.0; + + auto doCompute = [&](ComputedStyle const* computedStyle) { + const nsStyleSVG* styleSVG = computedStyle->StyleSVG(); + + if (aContextPaint && styleSVG->StrokeWidthFromObject()) { + res = aContextPaint->GetStrokeWidth(); + return; + } + + res = SVGContentUtils::CoordToFloat(aElement, styleSVG->mStrokeWidth); + }; + if (aComputedStyle) { - computedStyle = aComputedStyle; - } else if (auto* f = aElement->GetPrimaryFrame()) { - computedStyle = f->Style(); + doCompute(aComputedStyle); } else { - return 0.0f; + SVGGeometryProperty::DoForComputedStyle(aElement, doCompute); } - const nsStyleSVG* styleSVG = computedStyle->StyleSVG(); - - if (aContextPaint && styleSVG->StrokeWidthFromObject()) { - return aContextPaint->GetStrokeWidth(); - } - - return SVGContentUtils::CoordToFloat(aElement, styleSVG->mStrokeWidth); + return res; } float SVGContentUtils::GetFontSize(Element* aElement) { diff --git a/dom/svg/SVGContentUtils.h b/dom/svg/SVGContentUtils.h index 34873ec587df..fdf83fb9a1e7 100644 --- a/dom/svg/SVGContentUtils.h +++ b/dom/svg/SVGContentUtils.h @@ -151,7 +151,7 @@ class SVGContentUtils { */ static void GetStrokeOptions(AutoStrokeOptions* aStrokeOptions, dom::SVGElement* aElement, - ComputedStyle* aComputedStyle, + const ComputedStyle* aComputedStyle, mozilla::SVGContextPaint* aContextPaint, StrokeOptionFlags aFlags = eAllStrokeOptions); @@ -165,7 +165,7 @@ class SVGContentUtils { * "0", respectively. */ static Float GetStrokeWidth(dom::SVGElement* aElement, - ComputedStyle* aComputedStyle, + const ComputedStyle* aComputedStyle, mozilla::SVGContextPaint* aContextPaint); /* diff --git a/dom/svg/SVGEllipseElement.cpp b/dom/svg/SVGEllipseElement.cpp index e29b6b08606f..f392327fe6c2 100644 --- a/dom/svg/SVGEllipseElement.cpp +++ b/dom/svg/SVGEllipseElement.cpp @@ -139,9 +139,9 @@ bool SVGEllipseElement::GetGeometryBounds( already_AddRefed SVGEllipseElement::BuildPath(PathBuilder* aBuilder) { float x, y, rx, ry; - MOZ_ASSERT(GetPrimaryFrame()); - SVGGeometryProperty::ResolveAll( - this, &x, &y, &rx, &ry); + SVGGeometryProperty::ResolveAllAllowFallback(this, &x, &y, &rx, + &ry); if (rx <= 0.0f || ry <= 0.0f) { return nullptr; diff --git a/dom/svg/SVGGeometryElement.cpp b/dom/svg/SVGGeometryElement.cpp index 12a6562f685b..9d2c6930fc21 100644 --- a/dom/svg/SVGGeometryElement.cpp +++ b/dom/svg/SVGGeometryElement.cpp @@ -13,6 +13,7 @@ #include "SVGAnimatedLength.h" #include "SVGCircleElement.h" #include "SVGEllipseElement.h" +#include "SVGGeometryProperty.h" #include "SVGRectElement.h" #include "mozilla/dom/SVGLengthBinding.h" #include "mozilla/gfx/2D.h" @@ -133,15 +134,19 @@ FillRule SVGGeometryElement::GetFillRule() { FillRule fillRule = FillRule::FILL_WINDING; // Equivalent to StyleFillRule::Nonzero - if (auto* f = GetPrimaryFrame()) { - MOZ_ASSERT(f->StyleSVG()->mFillRule == StyleFillRule::Nonzero || - f->StyleSVG()->mFillRule == StyleFillRule::Evenodd); + bool res = SVGGeometryProperty::DoForComputedStyle( + this, [&](const ComputedStyle* s) { + const auto* styleSVG = s->StyleSVG(); - if (f->StyleSVG()->mFillRule == StyleFillRule::Evenodd) { - fillRule = FillRule::FILL_EVEN_ODD; - } - } else { - // ReportToConsole + MOZ_ASSERT(styleSVG->mFillRule == StyleFillRule::Nonzero || + styleSVG->mFillRule == StyleFillRule::Evenodd); + + if (styleSVG->mFillRule == StyleFillRule::Evenodd) { + fillRule = FillRule::FILL_EVEN_ODD; + } + }); + + if (!res) { NS_WARNING("Couldn't get ComputedStyle for content in GetFillRule"); } diff --git a/dom/svg/SVGGeometryProperty.h b/dom/svg/SVGGeometryProperty.h index 93c82f450806..6423ed05de7d 100644 --- a/dom/svg/SVGGeometryProperty.h +++ b/dom/svg/SVGGeometryProperty.h @@ -10,6 +10,7 @@ #include "mozilla/dom/SVGElement.h" #include "ComputedStyle.h" #include "SVGAnimatedLength.h" +#include "nsComputedDOMStyle.h" #include "nsGkAtoms.h" #include "nsIFrame.h" #include "nsSVGImageFrame.h" @@ -78,6 +79,7 @@ struct Ry { namespace details { template using AlwaysFloat = float; +using dummy = int[]; using CtxDirectionType = decltype(SVGContentUtils::X); @@ -187,6 +189,25 @@ float ResolveWith(const ComputedStyle& aStyle, const SVGElement* aElement) { typename Tag::ResolverType{}); } +template +bool DoForComputedStyle(SVGElement* aElement, Func aFunc) { + if (const nsIFrame* f = aElement->GetPrimaryFrame()) { + aFunc(f->Style()); + return true; + } + + if (RefPtr computedStyle = + nsComputedDOMStyle::GetComputedStyleNoFlush(aElement, nullptr)) { + aFunc(computedStyle.get()); + return true; + } + + return false; +} + +#define SVGGEOMETRYPROPERTY_EVAL_ALL(expr) \ + (void)details::dummy { 0, (static_cast(expr), 0)... } + // To add support for new properties, or to handle special cases for // existing properties, you can add a new tag in |Tags| and |ResolverTypes| // namespace, then implement the behavior in |details::ResolveImpl|. @@ -194,13 +215,30 @@ template bool ResolveAll(const SVGElement* aElement, details::AlwaysFloat*... aRes) { if (nsIFrame const* f = aElement->GetPrimaryFrame()) { - using dummy = int[]; - (void)dummy{0, (*aRes = ResolveWith(*f->Style(), aElement), 0)...}; + SVGGEOMETRYPROPERTY_EVAL_ALL(*aRes = + ResolveWith(*f->Style(), aElement)); return true; } return false; } +template +bool ResolveAllAllowFallback(SVGElement* aElement, + details::AlwaysFloat*... aRes) { + bool res = DoForComputedStyle(aElement, [&](auto const* style) { + SVGGEOMETRYPROPERTY_EVAL_ALL(*aRes = ResolveWith(*style, aElement)); + }); + + if (res) { + return true; + } + + SVGGEOMETRYPROPERTY_EVAL_ALL(*aRes = 0); + return false; +} + +#undef SVGGEOMETRYPROPERTY_EVAL_ALL + nsCSSUnit SpecifiedUnitTypeToCSSUnit(uint8_t aSpecifiedUnit); nsCSSPropertyID AttrEnumToCSSPropId(const SVGElement* aElement, uint8_t aAttrEnum); diff --git a/dom/svg/SVGImageElement.cpp b/dom/svg/SVGImageElement.cpp index 3bdde6a19194..fd2305e8b353 100644 --- a/dom/svg/SVGImageElement.cpp +++ b/dom/svg/SVGImageElement.cpp @@ -270,9 +270,9 @@ already_AddRefed SVGImageElement::BuildPath(PathBuilder* aBuilder) { // hit-testing against it. For that we just pretend to be a rectangle. float x, y, width, height; - MOZ_ASSERT(GetPrimaryFrame()); - SVGGeometryProperty::ResolveAll( - this, &x, &y, &width, &height); + SVGGeometryProperty::ResolveAllAllowFallback(this, &x, &y, + &width, &height); if (width <= 0 || height <= 0) { return nullptr; diff --git a/dom/svg/SVGPathElement.cpp b/dom/svg/SVGPathElement.cpp index 5ce0076eae1a..4919913e811c 100644 --- a/dom/svg/SVGPathElement.cpp +++ b/dom/svg/SVGPathElement.cpp @@ -10,6 +10,7 @@ #include "DOMSVGPathSeg.h" #include "DOMSVGPathSegList.h" +#include "SVGGeometryProperty.h" #include "gfx2DGlue.h" #include "gfxPlatform.h" #include "nsGkAtoms.h" @@ -260,17 +261,17 @@ already_AddRefed SVGPathElement::BuildPath(PathBuilder* aBuilder) { uint8_t strokeLineCap = NS_STYLE_STROKE_LINECAP_BUTT; Float strokeWidth = 0; - if (auto* f = GetPrimaryFrame()) { - const nsStyleSVG* style = f->StyleSVG(); + SVGGeometryProperty::DoForComputedStyle(this, [&](const ComputedStyle* s) { + const nsStyleSVG* style = s->StyleSVG(); // Note: the path that we return may be used for hit-testing, and SVG // exposes hit-testing of strokes that are not actually painted. For that // reason we do not check for eStyleSVGPaintType_None or check the stroke // opacity here. if (style->mStrokeLinecap != NS_STYLE_STROKE_LINECAP_BUTT) { strokeLineCap = style->mStrokeLinecap; - strokeWidth = SVGContentUtils::GetStrokeWidth(this, f->Style(), nullptr); + strokeWidth = SVGContentUtils::GetStrokeWidth(this, s, nullptr); } - } + }); return mD.GetAnimValue().BuildPath(aBuilder, strokeLineCap, strokeWidth); } diff --git a/dom/svg/SVGRectElement.cpp b/dom/svg/SVGRectElement.cpp index 37309e8d7aaa..da346c9c6785 100644 --- a/dom/svg/SVGRectElement.cpp +++ b/dom/svg/SVGRectElement.cpp @@ -170,10 +170,9 @@ bool SVGRectElement::GetGeometryBounds(Rect* aBounds, void SVGRectElement::GetAsSimplePath(SimplePath* aSimplePath) { float x, y, width, height, rx, ry; - MOZ_ASSERT(GetPrimaryFrame()); - SVGGeometryProperty::ResolveAll(this, &x, &y, &width, - &height, &rx, &ry); + SVGGeometryProperty::ResolveAllAllowFallback< + SVGT::X, SVGT::Y, SVGT::Width, SVGT::Height, SVGT::Rx, SVGT::Ry>( + this, &x, &y, &width, &height, &rx, &ry); if (width <= 0 || height <= 0) { aSimplePath->Reset(); @@ -194,10 +193,9 @@ void SVGRectElement::GetAsSimplePath(SimplePath* aSimplePath) { already_AddRefed SVGRectElement::BuildPath(PathBuilder* aBuilder) { float x, y, width, height, rx, ry; - MOZ_ASSERT(GetPrimaryFrame()); - SVGGeometryProperty::ResolveAll(this, &x, &y, &width, - &height, &rx, &ry); + SVGGeometryProperty::ResolveAllAllowFallback< + SVGT::X, SVGT::Y, SVGT::Width, SVGT::Height, SVGT::Rx, SVGT::Ry>( + this, &x, &y, &width, &height, &rx, &ry); if (width <= 0 || height <= 0) { return nullptr; diff --git a/dom/svg/test/test_getTotalLength.xhtml b/dom/svg/test/test_getTotalLength.xhtml index 15249dc0cb99..9cf390d5c369 100644 --- a/dom/svg/test/test_getTotalLength.xhtml +++ b/dom/svg/test/test_getTotalLength.xhtml @@ -16,6 +16,9 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1474284 + + +
@@ -30,6 +33,10 @@ function expectValue(id, expected) {
 
 function run() {
   expectValue("path1", 55.19);
+
+  let r1 = document.getElementById("r1");
+  is(r1.getTotalLength(), 200, "getTotalLength() should work for display:none element");
+
   SimpleTest.finish();
 }
 

From d8a8a02918f9bc0f37f7dcaf0a9f2f3e206fd3ba Mon Sep 17 00:00:00 2001
From: Nika Layzell 
Date: Fri, 31 May 2019 03:41:47 +0000
Subject: [PATCH 05/47] Bug 1555850 - Get rid of nsIWindowCreator2, r=bzbarsky

Differential Revision: https://phabricator.services.mozilla.com/D33232

--HG--
extra : moz-landing-system : lando
---
 toolkit/components/startup/nsAppStartup.cpp   | 34 ++--------
 toolkit/components/startup/nsAppStartup.h     |  5 +-
 toolkit/components/windowcreator/moz.build    |  1 -
 .../windowcreator/nsIWindowCreator.idl        | 26 ++++++--
 .../windowcreator/nsIWindowCreator2.idl       | 63 -------------------
 .../windowwatcher/nsWindowWatcher.cpp         | 34 ++++------
 6 files changed, 40 insertions(+), 123 deletions(-)
 delete mode 100644 toolkit/components/windowcreator/nsIWindowCreator2.idl

diff --git a/toolkit/components/startup/nsAppStartup.cpp b/toolkit/components/startup/nsAppStartup.cpp
index dd99bf43204e..5d65c3a0b9da 100644
--- a/toolkit/components/startup/nsAppStartup.cpp
+++ b/toolkit/components/startup/nsAppStartup.cpp
@@ -224,8 +224,8 @@ nsresult nsAppStartup::Init() {
 // nsAppStartup->nsISupports
 //
 
-NS_IMPL_ISUPPORTS(nsAppStartup, nsIAppStartup, nsIWindowCreator,
-                  nsIWindowCreator2, nsIObserver, nsISupportsWeakReference)
+NS_IMPL_ISUPPORTS(nsAppStartup, nsIAppStartup, nsIWindowCreator, nsIObserver,
+                  nsISupportsWeakReference)
 
 //
 // nsAppStartup->nsIAppStartup
@@ -585,34 +585,10 @@ nsAppStartup::GetInterrupted(bool* aInterrupted) {
 NS_IMETHODIMP
 nsAppStartup::CreateChromeWindow(nsIWebBrowserChrome* aParent,
                                  uint32_t aChromeFlags,
+                                 nsIRemoteTab* aOpeningTab,
+                                 mozIDOMWindowProxy* aOpener,
+                                 uint64_t aNextRemoteTabId, bool* aCancel,
                                  nsIWebBrowserChrome** _retval) {
-  bool cancel;
-  return CreateChromeWindow2(aParent, aChromeFlags, nullptr, nullptr, 0,
-                             &cancel, _retval);
-}
-
-//
-// nsAppStartup->nsIWindowCreator2
-//
-
-NS_IMETHODIMP
-nsAppStartup::SetScreenId(uint32_t aScreenId) {
-  nsCOMPtr appShell(
-      do_GetService(NS_APPSHELLSERVICE_CONTRACTID));
-  if (!appShell) {
-    return NS_ERROR_FAILURE;
-  }
-
-  return appShell->SetScreenId(aScreenId);
-}
-
-NS_IMETHODIMP
-nsAppStartup::CreateChromeWindow2(nsIWebBrowserChrome* aParent,
-                                  uint32_t aChromeFlags,
-                                  nsIRemoteTab* aOpeningTab,
-                                  mozIDOMWindowProxy* aOpener,
-                                  uint64_t aNextRemoteTabId, bool* aCancel,
-                                  nsIWebBrowserChrome** _retval) {
   NS_ENSURE_ARG_POINTER(aCancel);
   NS_ENSURE_ARG_POINTER(_retval);
   *aCancel = false;
diff --git a/toolkit/components/startup/nsAppStartup.h b/toolkit/components/startup/nsAppStartup.h
index 253ea48050a8..bb0f54d6d498 100644
--- a/toolkit/components/startup/nsAppStartup.h
+++ b/toolkit/components/startup/nsAppStartup.h
@@ -7,7 +7,7 @@
 #define nsAppStartup_h__
 
 #include "nsIAppStartup.h"
-#include "nsIWindowCreator2.h"
+#include "nsIWindowCreator.h"
 #include "nsIObserver.h"
 #include "nsWeakReference.h"
 
@@ -30,14 +30,13 @@
   }
 
 class nsAppStartup final : public nsIAppStartup,
-                           public nsIWindowCreator2,
+                           public nsIWindowCreator,
                            public nsIObserver,
                            public nsSupportsWeakReference {
  public:
   NS_DECL_THREADSAFE_ISUPPORTS
   NS_DECL_NSIAPPSTARTUP
   NS_DECL_NSIWINDOWCREATOR
-  NS_DECL_NSIWINDOWCREATOR2
   NS_DECL_NSIOBSERVER
 
   nsAppStartup();
diff --git a/toolkit/components/windowcreator/moz.build b/toolkit/components/windowcreator/moz.build
index af340657ac08..e392642011c9 100644
--- a/toolkit/components/windowcreator/moz.build
+++ b/toolkit/components/windowcreator/moz.build
@@ -14,7 +14,6 @@ if CONFIG['ENABLE_TESTS']:
 
 XPIDL_SOURCES += [
     'nsIWindowCreator.idl',
-    'nsIWindowCreator2.idl',
     'nsIWindowProvider.idl',
 ]
 
diff --git a/toolkit/components/windowcreator/nsIWindowCreator.idl b/toolkit/components/windowcreator/nsIWindowCreator.idl
index b38903fa164a..b2538a984837 100644
--- a/toolkit/components/windowcreator/nsIWindowCreator.idl
+++ b/toolkit/components/windowcreator/nsIWindowCreator.idl
@@ -9,27 +9,45 @@
  * new browser windows. The application, either Mozilla or an embedding app,
  * must provide an implementation of the Window Watcher component and
  * notify the WindowWatcher during application initialization.
+ *
  * @see nsIWindowWatcher
  */
 
 #include "nsISupports.idl"
 
+interface nsIRemoteTab;
+interface nsIURI;
 interface nsIWebBrowserChrome;
+interface mozIDOMWindowProxy;
 
 [scriptable, uuid(30465632-A777-44cc-90F9-8145475EF999)]
 interface nsIWindowCreator : nsISupports {
 
   /** Create a new window. Gecko will/may call this method, if made
       available to it, to create new windows.
-      @param parent parent window, if any. null if not. the newly created
+      @param parent Parent window, if any. Null if not. The newly created
                     window should be made a child/dependent window of
                     the parent, if any (and if the concept applies
                     to the underlying OS).
-      @param chromeFlags chrome features from nsIWebBrowserChrome
-      @return the new window
+      @param chromeFlags Chrome features from nsIWebBrowserChrome
+      @param aOpeningTab The RemoteTab that is trying to open this new chrome
+                         window. Can be nullptr.
+      @param aOpener The window which is trying to open this new chrome window.
+                     Can be nullptr
+      @param aNextRemoteTabId The integer ID of the next remote tab actor to use.
+                              0 means there is no next remote tab ID to use.
+      @param cancel Return |true| to reject window creation. If true the
+                    implementation has determined the window should not
+                    be created at all. The caller should not default
+                    to any possible backup scheme for creating the window.
+      @return the new window. Will be null if canceled or an error occurred.
   */
   nsIWebBrowserChrome createChromeWindow(in nsIWebBrowserChrome parent,
-                                         in uint32_t chromeFlags);
+                                         in uint32_t chromeFlags,
+                                         in nsIRemoteTab aOpeningTab,
+                                         in mozIDOMWindowProxy aOpener,
+                                         in unsigned long long aNextRemoteTabId,
+                                         out boolean cancel);
 };
 
 %{C++
diff --git a/toolkit/components/windowcreator/nsIWindowCreator2.idl b/toolkit/components/windowcreator/nsIWindowCreator2.idl
deleted file mode 100644
index 3b0e0a289468..000000000000
--- a/toolkit/components/windowcreator/nsIWindowCreator2.idl
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * 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/. */
-
-/**
- * nsIWindowCreator2 is an extension of nsIWindowCreator which allows
- * additional information about the context of the window creation to
- * be passed.
- *
- * @see nsIWindowCreator
- * @see nsIWindowWatcher
- *
- * @status
- */
-
-#include "nsIWindowCreator.idl"
-
-interface nsIRemoteTab;
-interface nsIURI;
-interface nsIWebBrowserChrome;
-interface mozIDOMWindowProxy;
-
-[scriptable, uuid(b6c44689-f97e-4f32-a723-29eeddfbdc53)]
-interface nsIWindowCreator2 : nsIWindowCreator {
-
-  /** Create a new window. Gecko will/may call this method, if made
-      available to it, to create new windows.
-      @param parent Parent window, if any. Null if not. The newly created
-                    window should be made a child/dependent window of
-                    the parent, if any (and if the concept applies
-                    to the underlying OS).
-      @param chromeFlags Chrome features from nsIWebBrowserChrome
-      @param aOpeningTab The RemoteTab that is trying to open this new chrome
-                         window. Can be nullptr.
-      @param aOpener The window which is trying to open this new chrome window.
-                     Can be nullptr
-      @param aNextRemoteTabId The integer ID of the next remote tab actor to use.
-                              0 means there is no next remote tab ID to use.
-      @param cancel Return |true| to reject window creation. If true the
-                    implementation has determined the window should not
-                    be created at all. The caller should not default
-                    to any possible backup scheme for creating the window.
-      @return the new window. Will be null if canceled or an error occurred.
-  */
-  nsIWebBrowserChrome createChromeWindow2(in nsIWebBrowserChrome parent,
-                                          in uint32_t chromeFlags,
-                                          in nsIRemoteTab aOpeningTab,
-                                          in mozIDOMWindowProxy aOpener,
-                                          in unsigned long long aNextRemoteTabId,
-                                          out boolean cancel);
-
-  /**
-   * B2G multi-screen support. When open another top-level window on b2g,
-   * a screen ID is needed for identifying which screen this window is
-   * opened to.
-   * @param aScreenId Differentiate screens of windows. It is platform-
-   *                  specific due to the hardware limitation for now.
-   */
-  [noscript]
-  void setScreenId(in uint32_t aScreenId);
-};
diff --git a/toolkit/components/windowwatcher/nsWindowWatcher.cpp b/toolkit/components/windowwatcher/nsWindowWatcher.cpp
index e748e25a10ed..aa2524fb9494 100644
--- a/toolkit/components/windowwatcher/nsWindowWatcher.cpp
+++ b/toolkit/components/windowwatcher/nsWindowWatcher.cpp
@@ -43,7 +43,6 @@
 #include "nsIWebBrowserChrome.h"
 #include "nsIWebNavigation.h"
 #include "nsIWindowCreator.h"
-#include "nsIWindowCreator2.h"
 #include "nsIXPConnect.h"
 #include "nsIXULRuntime.h"
 #include "nsPIDOMWindow.h"
@@ -404,14 +403,13 @@ nsresult nsWindowWatcher::CreateChromeWindow(
     uint32_t aChromeFlags, nsIRemoteTab* aOpeningBrowserParent,
     mozIDOMWindowProxy* aOpener, uint64_t aNextRemoteTabId,
     nsIWebBrowserChrome** aResult) {
-  nsCOMPtr windowCreator2(do_QueryInterface(mWindowCreator));
-  if (NS_WARN_IF(!windowCreator2)) {
+  if (NS_WARN_IF(!mWindowCreator)) {
     return NS_ERROR_UNEXPECTED;
   }
 
   bool cancel = false;
   nsCOMPtr newWindowChrome;
-  nsresult rv = windowCreator2->CreateChromeWindow2(
+  nsresult rv = mWindowCreator->CreateChromeWindow(
       aParentChrome, aChromeFlags, aOpeningBrowserParent, aOpener,
       aNextRemoteTabId, &cancel, getter_AddRefs(newWindowChrome));
 
@@ -508,8 +506,7 @@ nsWindowWatcher::OpenWindowWithRemoteTab(
     return NS_ERROR_UNEXPECTED;
   }
 
-  nsCOMPtr windowCreator2(do_QueryInterface(mWindowCreator));
-  if (NS_WARN_IF(!windowCreator2)) {
+  if (NS_WARN_IF(!mWindowCreator)) {
     return NS_ERROR_UNEXPECTED;
   }
 
@@ -865,24 +862,15 @@ nsresult nsWindowWatcher::OpenWindowInternal(
         parentTopInnerWindow->Suspend();
       }
 
-      /* If the window creator is an nsIWindowCreator2, we can give it
-         some hints. The only hint at this time is whether the opening window
-         is in a situation that's likely to mean this is an unrequested
-         popup window we're creating. However we're not completely honest:
-         we clear that indicator if the opener is chrome, so that the
-         downstream consumer can treat the indicator to mean simply
+      /* We can give the window creator some hints. The only hint at this time
+         is whether the opening window is in a situation that's likely to mean
+         this is an unrequested popup window we're creating. However we're not
+         completely honest: we clear that indicator if the opener is chrome, so
+         that the downstream consumer can treat the indicator to mean simply
          that the new window is subject to popup control. */
-      nsCOMPtr windowCreator2(
-          do_QueryInterface(mWindowCreator));
-      if (windowCreator2) {
-        mozIDOMWindowProxy* openerWindow = aForceNoOpener ? nullptr : aParent;
-        rv = CreateChromeWindow(features, parentChrome, chromeFlags, nullptr,
-                                openerWindow, 0, getter_AddRefs(newChrome));
-
-      } else {
-        rv = mWindowCreator->CreateChromeWindow(parentChrome, chromeFlags,
-                                                getter_AddRefs(newChrome));
-      }
+      mozIDOMWindowProxy* openerWindow = aForceNoOpener ? nullptr : aParent;
+      rv = CreateChromeWindow(features, parentChrome, chromeFlags, nullptr,
+                              openerWindow, 0, getter_AddRefs(newChrome));
 
       if (parentTopInnerWindow) {
         parentTopInnerWindow->Resume();

From 601750a268f813a32dfc0968ed7e66f55f6e4966 Mon Sep 17 00:00:00 2001
From: Ehsan Akhgari 
Date: Fri, 31 May 2019 12:08:00 +0000
Subject: [PATCH 06/47] Bug 1555876 - Use storage principal in
 IDBFactory::CreateForMainThreadJS(); r=baku

Differential Revision: https://phabricator.services.mozilla.com/D33243

--HG--
extra : moz-landing-system : lando
---
 dom/indexedDB/IDBFactory.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dom/indexedDB/IDBFactory.cpp b/dom/indexedDB/IDBFactory.cpp
index f3a0a84c1d6f..de3025ba84c8 100644
--- a/dom/indexedDB/IDBFactory.cpp
+++ b/dom/indexedDB/IDBFactory.cpp
@@ -167,7 +167,7 @@ nsresult IDBFactory::CreateForMainThreadJS(nsIGlobalObject* aGlobal,
   }
 
   nsAutoPtr principalInfo(new PrincipalInfo());
-  nsIPrincipal* principal = sop->GetPrincipal();
+  nsIPrincipal* principal = sop->GetEffectiveStoragePrincipal();
   MOZ_ASSERT(principal);
   bool isSystem;
   if (!AllowedForPrincipal(principal, &isSystem)) {

From a9e9f5ccdb0206358b022af181995aba65750db6 Mon Sep 17 00:00:00 2001
From: Ehsan Akhgari 
Date: Fri, 31 May 2019 01:37:26 +0000
Subject: [PATCH 07/47] Bug 1415270 - Part 1: Move nsHTMLDocument editing APIs
 to Document; r=farre,masayuki

Differential Revision: https://phabricator.services.mozilla.com/D32911

--HG--
extra : moz-landing-system : lando
---
 docshell/base/nsDocShellEditorData.cpp        |   12 +-
 docshell/base/nsDocShellEditorData.h          |    4 +-
 dom/base/Document.cpp                         | 1124 +++++++++++++++-
 dom/base/Document.h                           |  134 +-
 dom/base/nsFocusManager.cpp                   |    5 +-
 dom/html/nsGenericHTMLElement.cpp             |   18 +-
 dom/html/nsHTMLDocument.cpp                   | 1138 +----------------
 dom/html/nsHTMLDocument.h                     |   93 --
 dom/html/nsIHTMLDocument.h                    |   46 -
 dom/webidl/Document.webidl                    |   53 +-
 dom/webidl/HTMLDocument.webidl                |   41 -
 editor/composer/nsEditingSession.cpp          |   17 +-
 editor/libeditor/EditorBase.cpp               |    3 +-
 editor/libeditor/HTMLEditRules.cpp            |   16 +-
 layout/base/PresShell.h                       |    2 +-
 .../meta/html/dom/interfaces.https.html.ini   |   99 --
 .../actors/KeyPressEventModelCheckerChild.jsm |    8 +-
 17 files changed, 1331 insertions(+), 1482 deletions(-)

diff --git a/docshell/base/nsDocShellEditorData.cpp b/docshell/base/nsDocShellEditorData.cpp
index 12c22291d338..4bcd4cdb110d 100644
--- a/docshell/base/nsDocShellEditorData.cpp
+++ b/docshell/base/nsDocShellEditorData.cpp
@@ -16,7 +16,7 @@ using namespace mozilla;
 
 nsDocShellEditorData::nsDocShellEditorData(nsIDocShell* aOwningDocShell)
     : mDocShell(aOwningDocShell),
-      mDetachedEditingState(nsIHTMLDocument::eOff),
+      mDetachedEditingState(Document::EditingState::eOff),
       mMakeEditable(false),
       mIsDetached(false),
       mDetachedMakeEditable(false) {
@@ -111,10 +111,7 @@ nsresult nsDocShellEditorData::DetachFromWindow() {
   mMakeEditable = false;
 
   nsCOMPtr doc = domWindow->GetDoc();
-  nsCOMPtr htmlDoc = do_QueryInterface(doc);
-  if (htmlDoc) {
-    mDetachedEditingState = htmlDoc->GetEditingState();
-  }
+  mDetachedEditingState = doc->GetEditingState();
 
   mDocShell = nullptr;
 
@@ -133,10 +130,7 @@ nsresult nsDocShellEditorData::ReattachToWindow(nsIDocShell* aDocShell) {
   mMakeEditable = mDetachedMakeEditable;
 
   RefPtr doc = domWindow->GetDoc();
-  nsCOMPtr htmlDoc = do_QueryInterface(doc);
-  if (htmlDoc) {
-    htmlDoc->SetEditingState(mDetachedEditingState);
-  }
+  doc->SetEditingState(mDetachedEditingState);
 
   return NS_OK;
 }
diff --git a/docshell/base/nsDocShellEditorData.h b/docshell/base/nsDocShellEditorData.h
index c2779b0ff7f0..03a981e3a4e9 100644
--- a/docshell/base/nsDocShellEditorData.h
+++ b/docshell/base/nsDocShellEditorData.h
@@ -12,7 +12,7 @@
 
 #include "mozilla/HTMLEditor.h"
 #include "mozilla/RefPtr.h"
-#include "nsIHTMLDocument.h"
+#include "mozilla/dom/Document.h"
 
 class nsIDocShell;
 class nsEditingSession;
@@ -47,7 +47,7 @@ class nsDocShellEditorData {
 
   // Backup for the corresponding nsIHTMLDocument's  editing state while
   // the editor is detached.
-  nsIHTMLDocument::EditingState mDetachedEditingState;
+  mozilla::dom::Document::EditingState mDetachedEditingState;
 
   // Indicates whether to make an editor after a url load.
   bool mMakeEditable;
diff --git a/dom/base/Document.cpp b/dom/base/Document.cpp
index 49b9208d3bec..236c6777e9a5 100644
--- a/dom/base/Document.cpp
+++ b/dom/base/Document.cpp
@@ -20,6 +20,7 @@
 #include "mozilla/DebugOnly.h"
 #include "mozilla/EffectSet.h"
 #include "mozilla/EnumSet.h"
+#include "mozilla/HTMLEditor.h"
 #include "mozilla/IdentifierMapEntry.h"
 #include "mozilla/IntegerRange.h"
 #include "mozilla/MemoryReporting.h"
@@ -38,10 +39,16 @@
 #include "mozilla/Sprintf.h"
 
 #include "mozilla/Telemetry.h"
+#include "nsIInlineSpellChecker.h"
 #include "nsIInterfaceRequestor.h"
 #include "nsIInterfaceRequestorUtils.h"
 #include "nsILoadContext.h"
+#include "nsIEditor.h"
+#include "nsIEditorStyleSheets.h"
+#include "nsIPlaintextEditor.h"
 #include "nsITextControlFrame.h"
+#include "nsCommandManager.h"
+#include "nsCommandParams.h"
 #include "nsNumberControlFrame.h"
 #include "nsUnicharUtils.h"
 #include "nsContentList.h"
@@ -119,6 +126,7 @@
 #include "nsPresContext.h"
 #include "nsThreadUtils.h"
 #include "nsNodeInfoManager.h"
+#include "nsIEditingSession.h"
 #include "nsIFileChannel.h"
 #include "nsIMultiPartChannel.h"
 #include "nsIRefreshURI.h"
@@ -258,7 +266,6 @@
 #include "nsViewportInfo.h"
 #include "mozilla/StaticPtr.h"
 #include "nsITextControlElement.h"
-#include "nsIEditor.h"
 #include "nsIHttpChannelInternal.h"
 #include "nsISecurityConsoleMessage.h"
 #include "nsCharSeparatedTokenizer.h"
@@ -1260,11 +1267,15 @@ Document::Document(const char* aContentType)
       mDisableCookieAccess(false),
       mDisableDocWrite(false),
       mTooDeepWriteRecursion(false),
+      mPendingMaybeEditingStateChanged(false),
+      mHasBeenEditable(false),
       mPendingFullscreenRequests(0),
       mXMLDeclarationBits(0),
       mOnloadBlockCount(0),
       mAsyncOnloadBlockCount(0),
       mWriteLevel(0),
+      mContentEditableCount(0),
+      mEditingState(EditingState::eOff),
       mCompatMode(eCompatibility_FullStandards),
       mReadyState(ReadyState::READYSTATE_UNINITIALIZED),
       mAncestorIsLoading(false),
@@ -1840,6 +1851,7 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INTERNAL(Document)
   NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mFeaturePolicy)
   NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mSuppressedEventListener)
   NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mPrototypeDocument)
+  NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mMidasCommandManager)
 
   // Traverse all our nsCOMArrays.
   NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mPreloadingImages)
@@ -1936,6 +1948,7 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(Document)
   NS_IMPL_CYCLE_COLLECTION_UNLINK(mFeaturePolicy)
   NS_IMPL_CYCLE_COLLECTION_UNLINK(mSuppressedEventListener)
   NS_IMPL_CYCLE_COLLECTION_UNLINK(mPrototypeDocument)
+  NS_IMPL_CYCLE_COLLECTION_UNLINK(mMidasCommandManager)
 
   tmp->mParentDocument = nullptr;
 
@@ -3632,6 +3645,1067 @@ bool Document::HasFocus(ErrorResult& rv) const {
   return false;
 }
 
+void Document::GetDesignMode(nsAString& aDesignMode) {
+  if (HasFlag(NODE_IS_EDITABLE)) {
+    aDesignMode.AssignLiteral("on");
+  } else {
+    aDesignMode.AssignLiteral("off");
+  }
+}
+
+void Document::SetDesignMode(const nsAString& aDesignMode,
+                             nsIPrincipal& aSubjectPrincipal, ErrorResult& rv) {
+  SetDesignMode(aDesignMode, Some(&aSubjectPrincipal), rv);
+}
+
+void Document::SetDesignMode(const nsAString& aDesignMode,
+                             const Maybe& aSubjectPrincipal,
+                             ErrorResult& rv) {
+  if (aSubjectPrincipal.isSome() &&
+      !aSubjectPrincipal.value()->Subsumes(NodePrincipal())) {
+    rv.Throw(NS_ERROR_DOM_PROP_ACCESS_DENIED);
+    return;
+  }
+  bool editableMode = HasFlag(NODE_IS_EDITABLE);
+  if (aDesignMode.LowerCaseEqualsASCII(editableMode ? "off" : "on")) {
+    SetEditableFlag(!editableMode);
+
+    rv = EditingStateChanged();
+  }
+}
+
+nsCommandManager* Document::GetMidasCommandManager() {
+  // check if we have it cached
+  if (mMidasCommandManager) {
+    return mMidasCommandManager;
+  }
+
+  nsPIDOMWindowOuter* window = GetWindow();
+  if (!window) {
+    return nullptr;
+  }
+
+  nsIDocShell* docshell = window->GetDocShell();
+  if (!docshell) {
+    return nullptr;
+  }
+
+  mMidasCommandManager = docshell->GetCommandManager();
+  return mMidasCommandManager;
+}
+
+struct MidasCommand {
+  const char* incomingCommandString;
+  const char* internalCommandString;
+  const char* internalParamString;
+  bool useNewParam;
+  bool convertToBoolean;
+};
+
+static const struct MidasCommand gMidasCommandTable[] = {
+    // clang-format off
+  { "bold",          "cmd_bold",            "", true,  false },
+  { "italic",        "cmd_italic",          "", true,  false },
+  { "underline",     "cmd_underline",       "", true,  false },
+  { "strikethrough", "cmd_strikethrough",   "", true,  false },
+  { "subscript",     "cmd_subscript",       "", true,  false },
+  { "superscript",   "cmd_superscript",     "", true,  false },
+  { "cut",           "cmd_cut",             "", true,  false },
+  { "copy",          "cmd_copy",            "", true,  false },
+  { "paste",         "cmd_paste",           "", true,  false },
+  { "delete",        "cmd_deleteCharBackward", "", true,  false },
+  { "forwarddelete", "cmd_deleteCharForward", "", true,  false },
+  { "selectall",     "cmd_selectAll",       "", true,  false },
+  { "undo",          "cmd_undo",            "", true,  false },
+  { "redo",          "cmd_redo",            "", true,  false },
+  { "indent",        "cmd_indent",          "", true,  false },
+  { "outdent",       "cmd_outdent",         "", true,  false },
+  { "backcolor",     "cmd_highlight",       "", false, false },
+  { "forecolor",     "cmd_fontColor",       "", false, false },
+  { "hilitecolor",   "cmd_highlight",       "", false, false },
+  { "fontname",      "cmd_fontFace",        "", false, false },
+  { "fontsize",      "cmd_fontSize",        "", false, false },
+  { "increasefontsize", "cmd_increaseFont", "", false, false },
+  { "decreasefontsize", "cmd_decreaseFont", "", false, false },
+  { "inserthorizontalrule", "cmd_insertHR", "", true,  false },
+  { "createlink",    "cmd_insertLinkNoUI",  "", false, false },
+  { "insertimage",   "cmd_insertImageNoUI", "", false, false },
+  { "inserthtml",    "cmd_insertHTML",      "", false, false },
+  { "inserttext",    "cmd_insertText",      "", false, false },
+  { "gethtml",       "cmd_getContents",     "", false, false },
+  { "justifyleft",   "cmd_align",       "left", true,  false },
+  { "justifyright",  "cmd_align",      "right", true,  false },
+  { "justifycenter", "cmd_align",     "center", true,  false },
+  { "justifyfull",   "cmd_align",    "justify", true,  false },
+  { "removeformat",  "cmd_removeStyles",    "", true,  false },
+  { "unlink",        "cmd_removeLinks",     "", true,  false },
+  { "insertorderedlist",   "cmd_ol",        "", true,  false },
+  { "insertunorderedlist", "cmd_ul",        "", true,  false },
+  { "insertparagraph", "cmd_insertParagraph", "", true,  false },
+  { "insertlinebreak", "cmd_insertLineBreak", "", true,  false },
+  { "formatblock",   "cmd_paragraphState",  "", false, false },
+  { "heading",       "cmd_paragraphState",  "", false, false },
+  { "styleWithCSS",  "cmd_setDocumentUseCSS", "", false, true },
+  { "contentReadOnly", "cmd_setDocumentReadOnly", "", false, true },
+  { "insertBrOnReturn", "cmd_insertBrOnReturn", "", false, true },
+  { "defaultParagraphSeparator", "cmd_defaultParagraphSeparator", "", false, false },
+  { "enableObjectResizing", "cmd_enableObjectResizing", "", false, true },
+  { "enableInlineTableEditing", "cmd_enableInlineTableEditing", "", false, true },
+  { "enableAbsolutePositionEditing", "cmd_enableAbsolutePositionEditing", "", false, true },
+#if 0
+// no editor support to remove alignments right now
+  { "justifynone",   "cmd_align",           "", true,  false },
+
+// the following will need special review before being turned on
+  { "saveas",        "cmd_saveAs",          "", true,  false },
+  { "print",         "cmd_print",           "", true,  false },
+#endif
+  { nullptr, nullptr, nullptr, false, false }
+    // clang-format on
+};
+
+#define MidasCommandCount \
+  ((sizeof(gMidasCommandTable) / sizeof(struct MidasCommand)) - 1)
+
+static const char* const gBlocks[] = {
+    // clang-format off
+  "ADDRESS",
+  "BLOCKQUOTE",
+  "DD",
+  "DIV",
+  "DL",
+  "DT",
+  "H1",
+  "H2",
+  "H3",
+  "H4",
+  "H5",
+  "H6",
+  "P",
+  "PRE"
+    // clang-format on
+};
+
+static bool ConvertToMidasInternalCommandInner(
+    const nsAString& inCommandID, const nsAString& inParam,
+    nsACString& outCommandID, nsACString& outParam, bool& outIsBoolean,
+    bool& outBooleanValue, bool aIgnoreParams) {
+  NS_ConvertUTF16toUTF8 convertedCommandID(inCommandID);
+
+  // Hack to support old boolean commands that were backwards (see bug 301490).
+  bool invertBool = false;
+  if (convertedCommandID.LowerCaseEqualsLiteral("usecss")) {
+    convertedCommandID.AssignLiteral("styleWithCSS");
+    invertBool = true;
+  } else if (convertedCommandID.LowerCaseEqualsLiteral("readonly")) {
+    convertedCommandID.AssignLiteral("contentReadOnly");
+    invertBool = true;
+  }
+
+  size_t i;
+  bool found = false;
+  for (i = 0; i < MidasCommandCount; ++i) {
+    if (convertedCommandID.Equals(gMidasCommandTable[i].incomingCommandString,
+                                  nsCaseInsensitiveCStringComparator())) {
+      found = true;
+      break;
+    }
+  }
+
+  if (!found) {
+    // reset results if the command is not found in our table
+    outCommandID.SetLength(0);
+    outParam.SetLength(0);
+    outIsBoolean = false;
+    return false;
+  }
+
+  // set outCommandID (what we use internally)
+  outCommandID.Assign(gMidasCommandTable[i].internalCommandString);
+
+  // set outParam & outIsBoolean based on flags from the table
+  outIsBoolean = gMidasCommandTable[i].convertToBoolean;
+
+  if (aIgnoreParams) {
+    // No further work to do
+    return true;
+  }
+
+  if (gMidasCommandTable[i].useNewParam) {
+    // Just have to copy it, no checking
+    outParam.Assign(gMidasCommandTable[i].internalParamString);
+    return true;
+  }
+
+  // handle checking of param passed in
+  if (outIsBoolean) {
+    // If this is a boolean value and it's not explicitly false (e.g. no value)
+    // we default to "true". For old backwards commands we invert the check (see
+    // bug 301490).
+    if (invertBool) {
+      outBooleanValue = inParam.LowerCaseEqualsLiteral("false");
+    } else {
+      outBooleanValue = !inParam.LowerCaseEqualsLiteral("false");
+    }
+    outParam.Truncate();
+
+    return true;
+  }
+
+  // String parameter -- see if we need to convert it (necessary for
+  // cmd_paragraphState and cmd_fontSize)
+  if (outCommandID.EqualsLiteral("cmd_paragraphState")) {
+    const char16_t* start = inParam.BeginReading();
+    const char16_t* end = inParam.EndReading();
+    if (start != end && *start == '<' && *(end - 1) == '>') {
+      ++start;
+      --end;
+    }
+
+    NS_ConvertUTF16toUTF8 convertedParam(Substring(start, end));
+    size_t j;
+    for (j = 0; j < ArrayLength(gBlocks); ++j) {
+      if (convertedParam.Equals(gBlocks[j],
+                                nsCaseInsensitiveCStringComparator())) {
+        outParam.Assign(gBlocks[j]);
+        break;
+      }
+    }
+
+    if (j == ArrayLength(gBlocks)) {
+      outParam.Truncate();
+    }
+  } else if (outCommandID.EqualsLiteral("cmd_fontSize")) {
+    // Per editing spec as of April 23, 2012, we need to reject the value if
+    // it's not a valid floating-point number surrounded by optional whitespace.
+    // Otherwise, we parse it as a legacy font size.  For now, we just parse as
+    // a legacy font size regardless (matching WebKit) -- bug 747879.
+    outParam.Truncate();
+    int32_t size = nsContentUtils::ParseLegacyFontSize(inParam);
+    if (size) {
+      outParam.AppendInt(size);
+    }
+  } else {
+    CopyUTF16toUTF8(inParam, outParam);
+  }
+
+  return true;
+}
+
+static bool ConvertToMidasInternalCommand(const nsAString& inCommandID,
+                                          const nsAString& inParam,
+                                          nsACString& outCommandID,
+                                          nsACString& outParam,
+                                          bool& outIsBoolean,
+                                          bool& outBooleanValue) {
+  return ConvertToMidasInternalCommandInner(inCommandID, inParam, outCommandID,
+                                            outParam, outIsBoolean,
+                                            outBooleanValue, false);
+}
+
+static bool ConvertToMidasInternalCommand(const nsAString& inCommandID,
+                                          nsACString& outCommandID) {
+  nsAutoCString dummyCString;
+  nsAutoString dummyString;
+  bool dummyBool;
+  return ConvertToMidasInternalCommandInner(inCommandID, dummyString,
+                                            outCommandID, dummyCString,
+                                            dummyBool, dummyBool, true);
+}
+
+bool Document::ExecCommand(const nsAString& commandID, bool doShowUI,
+                           const nsAString& value,
+                           nsIPrincipal& aSubjectPrincipal, ErrorResult& rv) {
+  //  for optional parameters see dom/src/base/nsHistory.cpp: HistoryImpl::Go()
+  //  this might add some ugly JS dependencies?
+
+  nsAutoCString cmdToDispatch, paramStr;
+  bool isBool, boolVal;
+  if (!ConvertToMidasInternalCommand(commandID, value, cmdToDispatch, paramStr,
+                                     isBool, boolVal)) {
+    return false;
+  }
+
+  bool isCutCopy = (commandID.LowerCaseEqualsLiteral("cut") ||
+                    commandID.LowerCaseEqualsLiteral("copy"));
+  bool isPaste = commandID.LowerCaseEqualsLiteral("paste");
+
+  // if editing is not on, bail
+  if (!isCutCopy && !isPaste && !IsEditingOnAfterFlush()) {
+    return false;
+  }
+
+  // if they are requesting UI from us, let's fail since we have no UI
+  if (doShowUI) {
+    return false;
+  }
+
+  // special case for cut & copy
+  // cut & copy are allowed in non editable documents
+  if (isCutCopy) {
+    if (!nsContentUtils::IsCutCopyAllowed(&aSubjectPrincipal)) {
+      // We have rejected the event due to it not being performed in an
+      // input-driven context therefore, we report the error to the console.
+      nsContentUtils::ReportToConsole(nsIScriptError::warningFlag,
+                                      NS_LITERAL_CSTRING("DOM"), this,
+                                      nsContentUtils::eDOM_PROPERTIES,
+                                      "ExecCommandCutCopyDeniedNotInputDriven");
+      return false;
+    }
+
+    // For cut & copy commands, we need the behaviour from
+    // nsWindowRoot::GetControllers which is to look at the focused element, and
+    // defer to a focused textbox's controller The code past taken by other
+    // commands in ExecCommand always uses the window directly, rather than
+    // deferring to the textbox, which is desireable for most editor commands,
+    // but not 'cut' and 'copy' (as those should allow copying out of embedded
+    // editors). This behaviour is invoked if we call DoCommand directly on the
+    // docShell.
+    nsCOMPtr docShell(mDocumentContainer);
+    if (docShell) {
+      nsresult res = docShell->DoCommand(cmdToDispatch.get());
+      if (res == NS_SUCCESS_DOM_NO_OPERATION) {
+        return false;
+      }
+      return NS_SUCCEEDED(res);
+    }
+    return false;
+  }
+
+  if (commandID.LowerCaseEqualsLiteral("gethtml")) {
+    rv.Throw(NS_ERROR_FAILURE);
+    return false;
+  }
+
+  if (isPaste && !nsContentUtils::PrincipalHasPermission(
+                     &aSubjectPrincipal, nsGkAtoms::clipboardRead)) {
+    return false;
+  }
+
+  // get command manager and dispatch command to our window if it's acceptable
+  RefPtr commandManager = GetMidasCommandManager();
+  if (!commandManager) {
+    rv.Throw(NS_ERROR_FAILURE);
+    return false;
+  }
+
+  nsCOMPtr window = GetWindow();
+  if (!window) {
+    rv.Throw(NS_ERROR_FAILURE);
+    return false;
+  }
+
+  if ((cmdToDispatch.EqualsLiteral("cmd_fontSize") ||
+       cmdToDispatch.EqualsLiteral("cmd_insertImageNoUI") ||
+       cmdToDispatch.EqualsLiteral("cmd_insertLinkNoUI") ||
+       cmdToDispatch.EqualsLiteral("cmd_paragraphState")) &&
+      paramStr.IsEmpty()) {
+    // Invalid value, return false
+    return false;
+  }
+
+  if (cmdToDispatch.EqualsLiteral("cmd_defaultParagraphSeparator") &&
+      !paramStr.LowerCaseEqualsLiteral("div") &&
+      !paramStr.LowerCaseEqualsLiteral("p") &&
+      !paramStr.LowerCaseEqualsLiteral("br")) {
+    // Invalid value
+    return false;
+  }
+
+  // Return false for disabled commands (bug 760052)
+  if (!commandManager->IsCommandEnabled(cmdToDispatch, window)) {
+    return false;
+  }
+
+  if (!isBool && paramStr.IsEmpty()) {
+    rv = commandManager->DoCommand(cmdToDispatch.get(), nullptr, window);
+  } else {
+    // we have a command that requires a parameter, create params
+    RefPtr params = new nsCommandParams();
+    if (isBool) {
+      rv = params->SetBool("state_attribute", boolVal);
+    } else if (cmdToDispatch.EqualsLiteral("cmd_fontFace") ||
+               cmdToDispatch.EqualsLiteral("cmd_insertImageNoUI") ||
+               cmdToDispatch.EqualsLiteral("cmd_insertLinkNoUI")) {
+      rv = params->SetString("state_attribute", value);
+    } else if (cmdToDispatch.EqualsLiteral("cmd_insertHTML") ||
+               cmdToDispatch.EqualsLiteral("cmd_insertText")) {
+      rv = params->SetString("state_data", value);
+    } else {
+      rv = params->SetCString("state_attribute", paramStr);
+    }
+    if (rv.Failed()) {
+      return false;
+    }
+    rv = commandManager->DoCommand(cmdToDispatch.get(), params, window);
+  }
+
+  return !rv.Failed();
+}
+
+bool Document::QueryCommandEnabled(const nsAString& commandID,
+                                   nsIPrincipal& aSubjectPrincipal,
+                                   ErrorResult& rv) {
+  nsAutoCString cmdToDispatch;
+  if (!ConvertToMidasInternalCommand(commandID, cmdToDispatch)) {
+    return false;
+  }
+
+  // cut & copy are always allowed
+  bool isCutCopy = commandID.LowerCaseEqualsLiteral("cut") ||
+                   commandID.LowerCaseEqualsLiteral("copy");
+  if (isCutCopy) {
+    return nsContentUtils::IsCutCopyAllowed(&aSubjectPrincipal);
+  }
+
+  // Report false for restricted commands
+  bool restricted = commandID.LowerCaseEqualsLiteral("paste");
+  if (restricted && !nsContentUtils::IsSystemPrincipal(&aSubjectPrincipal)) {
+    return false;
+  }
+
+  // if editing is not on, bail
+  if (!IsEditingOnAfterFlush()) {
+    return false;
+  }
+
+  // get command manager and dispatch command to our window if it's acceptable
+  RefPtr commandManager = GetMidasCommandManager();
+  if (!commandManager) {
+    rv.Throw(NS_ERROR_FAILURE);
+    return false;
+  }
+
+  nsPIDOMWindowOuter* window = GetWindow();
+  if (!window) {
+    rv.Throw(NS_ERROR_FAILURE);
+    return false;
+  }
+
+  return commandManager->IsCommandEnabled(cmdToDispatch, window);
+}
+
+bool Document::QueryCommandIndeterm(const nsAString& commandID,
+                                    ErrorResult& rv) {
+  nsAutoCString cmdToDispatch;
+  if (!ConvertToMidasInternalCommand(commandID, cmdToDispatch)) {
+    return false;
+  }
+
+  // if editing is not on, bail
+  if (!IsEditingOnAfterFlush()) {
+    return false;
+  }
+
+  // get command manager and dispatch command to our window if it's acceptable
+  RefPtr commandManager = GetMidasCommandManager();
+  if (!commandManager) {
+    rv.Throw(NS_ERROR_FAILURE);
+    return false;
+  }
+
+  nsPIDOMWindowOuter* window = GetWindow();
+  if (!window) {
+    rv.Throw(NS_ERROR_FAILURE);
+    return false;
+  }
+
+  RefPtr params = new nsCommandParams();
+  rv = commandManager->GetCommandState(cmdToDispatch.get(), window, params);
+  if (rv.Failed()) {
+    return false;
+  }
+
+  // If command does not have a state_mixed value, this call fails and sets
+  // retval to false.  This is fine -- we want to return false in that case
+  // anyway (bug 738385), so we just don't throw regardless.
+  return params->GetBool("state_mixed");
+}
+
+bool Document::QueryCommandState(const nsAString& commandID, ErrorResult& rv) {
+  nsAutoCString cmdToDispatch, paramToCheck;
+  bool dummy, dummy2;
+  if (!ConvertToMidasInternalCommand(commandID, commandID, cmdToDispatch,
+                                     paramToCheck, dummy, dummy2)) {
+    return false;
+  }
+
+  // if editing is not on, bail
+  if (!IsEditingOnAfterFlush()) {
+    return false;
+  }
+
+  // get command manager and dispatch command to our window if it's acceptable
+  RefPtr commandManager = GetMidasCommandManager();
+  if (!commandManager) {
+    rv.Throw(NS_ERROR_FAILURE);
+    return false;
+  }
+
+  nsPIDOMWindowOuter* window = GetWindow();
+  if (!window) {
+    rv.Throw(NS_ERROR_FAILURE);
+    return false;
+  }
+
+  if (commandID.LowerCaseEqualsLiteral("usecss")) {
+    // Per spec, state is supported for styleWithCSS but not useCSS, so we just
+    // return false always.
+    return false;
+  }
+
+  RefPtr params = new nsCommandParams();
+  rv = commandManager->GetCommandState(cmdToDispatch.get(), window, params);
+  if (rv.Failed()) {
+    return false;
+  }
+
+  // handle alignment as a special case (possibly other commands too?)
+  // Alignment is special because the external api is individual
+  // commands but internally we use cmd_align with different
+  // parameters.  When getting the state of this command, we need to
+  // return the boolean for this particular alignment rather than the
+  // string of 'which alignment is this?'
+  if (cmdToDispatch.EqualsLiteral("cmd_align")) {
+    nsAutoCString actualAlignmentType;
+    rv = params->GetCString("state_attribute", actualAlignmentType);
+    return !rv.Failed() && !actualAlignmentType.IsEmpty() &&
+           paramToCheck == actualAlignmentType;
+  }
+
+  // If command does not have a state_all value, this call fails and sets
+  // retval to false.  This is fine -- we want to return false in that case
+  // anyway (bug 738385), so we just succeed and return false regardless.
+  return params->GetBool("state_all");
+}
+
+bool Document::QueryCommandSupported(const nsAString& commandID,
+                                     CallerType aCallerType) {
+  // Gecko technically supports all the clipboard commands including
+  // cut/copy/paste, but non-privileged content will be unable to call
+  // paste, and depending on the pref "dom.allow_cut_copy", cut and copy
+  // may also be disallowed to be called from non-privileged content.
+  // For that reason, we report the support status of corresponding
+  // command accordingly.
+  if (aCallerType != CallerType::System) {
+    if (commandID.LowerCaseEqualsLiteral("paste")) {
+      return false;
+    }
+    if (!StaticPrefs::dom_allow_cut_copy()) {
+      // XXXbz should we worry about correctly reporting "true" in the
+      // "restricted, but we're an addon with clipboardWrite permissions" case?
+      // See also nsContentUtils::IsCutCopyAllowed.
+      if (commandID.LowerCaseEqualsLiteral("cut") ||
+          commandID.LowerCaseEqualsLiteral("copy")) {
+        return false;
+      }
+    }
+  }
+
+  // commandID is supported if it can be converted to a Midas command
+  nsAutoCString cmdToDispatch;
+  return ConvertToMidasInternalCommand(commandID, cmdToDispatch);
+}
+
+void Document::QueryCommandValue(const nsAString& commandID, nsAString& aValue,
+                                 ErrorResult& rv) {
+  aValue.Truncate();
+
+  nsAutoCString cmdToDispatch, paramStr;
+  if (!ConvertToMidasInternalCommand(commandID, cmdToDispatch)) {
+    // Return empty string
+    return;
+  }
+
+  // if editing is not on, bail
+  if (!IsEditingOnAfterFlush()) {
+    return;
+  }
+
+  // get command manager and dispatch command to our window if it's acceptable
+  RefPtr commandManager = GetMidasCommandManager();
+  if (!commandManager) {
+    rv.Throw(NS_ERROR_FAILURE);
+    return;
+  }
+
+  nsCOMPtr window = GetWindow();
+  if (!window) {
+    rv.Throw(NS_ERROR_FAILURE);
+    return;
+  }
+
+  // this is a special command since we are calling DoCommand rather than
+  // GetCommandState like the other commands
+  RefPtr params = new nsCommandParams();
+  if (cmdToDispatch.EqualsLiteral("cmd_getContents")) {
+    rv = params->SetBool("selection_only", true);
+    if (rv.Failed()) {
+      return;
+    }
+    rv = params->SetCString("format", NS_LITERAL_CSTRING("text/html"));
+    if (rv.Failed()) {
+      return;
+    }
+    rv = commandManager->DoCommand(cmdToDispatch.get(), params, window);
+    if (rv.Failed()) {
+      return;
+    }
+    params->GetString("result", aValue);
+    return;
+  }
+
+  rv = params->SetCString("state_attribute", paramStr);
+  if (rv.Failed()) {
+    return;
+  }
+
+  rv = commandManager->GetCommandState(cmdToDispatch.get(), window, params);
+  if (rv.Failed()) {
+    return;
+  }
+
+  // If command does not have a state_attribute value, this call fails, and
+  // aValue will wind up being the empty string.  This is fine -- we want to
+  // return "" in that case anyway (bug 738385), so we just return NS_OK
+  // regardless.
+  nsAutoCString result;
+  params->GetCString("state_attribute", result);
+  CopyUTF8toUTF16(result, aValue);
+}
+
+bool Document::IsEditingOnAfterFlush() {
+  RefPtr doc = GetParentDocument();
+  if (doc) {
+    // Make sure frames are up to date, since that can affect whether
+    // we're editable.
+    doc->FlushPendingNotifications(FlushType::Frames);
+  }
+
+  return IsEditingOn();
+}
+
+void Document::MaybeEditingStateChanged() {
+  if (!mPendingMaybeEditingStateChanged && mMayStartLayout &&
+      mUpdateNestLevel == 0 && (mContentEditableCount > 0) != IsEditingOn()) {
+    if (nsContentUtils::IsSafeToRunScript()) {
+      EditingStateChanged();
+    } else if (!mInDestructor) {
+      nsContentUtils::AddScriptRunner(
+          NewRunnableMethod("Document::MaybeEditingStateChanged", this,
+                            &Document::MaybeEditingStateChanged));
+    }
+  }
+}
+
+static void NotifyEditableStateChange(nsINode* aNode, Document* aDocument) {
+  for (nsIContent* child = aNode->GetFirstChild(); child;
+       child = child->GetNextSibling()) {
+    if (child->IsElement()) {
+      child->AsElement()->UpdateState(true);
+    }
+    NotifyEditableStateChange(child, aDocument);
+  }
+}
+
+void Document::TearingDownEditor() {
+  if (IsEditingOn()) {
+    mEditingState = EditingState::eTearingDown;
+    RemoveContentEditableStyleSheets();
+  }
+}
+
+nsresult Document::TurnEditingOff() {
+  NS_ASSERTION(mEditingState != EditingState::eOff, "Editing is already off.");
+
+  nsPIDOMWindowOuter* window = GetWindow();
+  if (!window) {
+    return NS_ERROR_FAILURE;
+  }
+
+  nsIDocShell* docshell = window->GetDocShell();
+  if (!docshell) {
+    return NS_ERROR_FAILURE;
+  }
+
+  nsCOMPtr editSession;
+  nsresult rv = docshell->GetEditingSession(getter_AddRefs(editSession));
+  NS_ENSURE_SUCCESS(rv, rv);
+
+  // turn editing off
+  rv = editSession->TearDownEditorOnWindow(window);
+  NS_ENSURE_SUCCESS(rv, rv);
+
+  mEditingState = EditingState::eOff;
+
+  // Editor resets selection since it is being destroyed.  But if focus is
+  // still into editable control, we have to initialize selection again.
+  nsFocusManager* fm = nsFocusManager::GetFocusManager();
+  if (fm) {
+    Element* element = fm->GetFocusedElement();
+    nsCOMPtr txtCtrl = do_QueryInterface(element);
+    if (txtCtrl) {
+      RefPtr textEditor = txtCtrl->GetTextEditor();
+      if (textEditor) {
+        textEditor->ReinitializeSelection(*element);
+      }
+    }
+  }
+
+  return NS_OK;
+}
+
+static bool HasPresShell(nsPIDOMWindowOuter* aWindow) {
+  nsIDocShell* docShell = aWindow->GetDocShell();
+  if (!docShell) {
+    return false;
+  }
+  return docShell->GetPresShell() != nullptr;
+}
+
+nsresult Document::SetEditingState(EditingState aState) {
+  mEditingState = aState;
+  return NS_OK;
+}
+
+nsresult Document::EditingStateChanged() {
+  if (mRemovedFromDocShell) {
+    return NS_OK;
+  }
+
+  if (mEditingState == EditingState::eSettingUp ||
+      mEditingState == EditingState::eTearingDown) {
+    // XXX We shouldn't recurse
+    return NS_OK;
+  }
+
+  bool designMode = HasFlag(NODE_IS_EDITABLE);
+  EditingState newState =
+      designMode ? EditingState::eDesignMode
+                 : (mContentEditableCount > 0 ? EditingState::eContentEditable
+                                              : EditingState::eOff);
+  if (mEditingState == newState) {
+    // No changes in editing mode.
+    return NS_OK;
+  }
+
+  if (newState == EditingState::eOff) {
+    // Editing is being turned off.
+    nsAutoScriptBlocker scriptBlocker;
+    NotifyEditableStateChange(this, this);
+    return TurnEditingOff();
+  }
+
+  // Flush out style changes on our _parent_ document, if any, so that
+  // our check for a presshell won't get stale information.
+  if (mParentDocument) {
+    mParentDocument->FlushPendingNotifications(FlushType::Style);
+  }
+
+  // get editing session, make sure this is a strong reference so the
+  // window can't get deleted during the rest of this call.
+  nsCOMPtr window = GetWindow();
+  if (!window) {
+    return NS_ERROR_FAILURE;
+  }
+
+  nsIDocShell* docshell = window->GetDocShell();
+  if (!docshell) {
+    return NS_ERROR_FAILURE;
+  }
+
+  // FlushPendingNotifications might destroy our docshell.
+  bool isBeingDestroyed = false;
+  docshell->IsBeingDestroyed(&isBeingDestroyed);
+  if (isBeingDestroyed) {
+    return NS_ERROR_FAILURE;
+  }
+
+  nsCOMPtr editSession;
+  nsresult rv = docshell->GetEditingSession(getter_AddRefs(editSession));
+  NS_ENSURE_SUCCESS(rv, rv);
+
+  RefPtr htmlEditor = editSession->GetHTMLEditorForWindow(window);
+  if (htmlEditor) {
+    // We might already have an editor if it was set up for mail, let's see
+    // if this is actually the case.
+    uint32_t flags = 0;
+    htmlEditor->GetFlags(&flags);
+    if (flags & nsIPlaintextEditor::eEditorMailMask) {
+      // We already have a mail editor, then we should not attempt to create
+      // another one.
+      return NS_OK;
+    }
+  }
+
+  if (!HasPresShell(window)) {
+    // We should not make the window editable or setup its editor.
+    // It's probably style=display:none.
+    return NS_OK;
+  }
+
+  bool makeWindowEditable = mEditingState == EditingState::eOff;
+  bool updateState = false;
+  bool spellRecheckAll = false;
+  bool putOffToRemoveScriptBlockerUntilModifyingEditingState = false;
+  htmlEditor = nullptr;
+
+  {
+    EditingState oldState = mEditingState;
+    nsAutoEditingState push(this, EditingState::eSettingUp);
+
+    RefPtr presShell = GetPresShell();
+    NS_ENSURE_TRUE(presShell, NS_ERROR_FAILURE);
+
+    MOZ_ASSERT(mStyleSetFilled);
+
+    // Before making this window editable, we need to modify UA style sheet
+    // because new style may change whether focused element will be focusable
+    // or not.
+    AddContentEditableStyleSheetsToStyleSet(designMode);
+
+    // Should we update the editable state of all the nodes in the document? We
+    // need to do this when the designMode value changes, as that overrides
+    // specific states on the elements.
+    updateState = designMode || oldState == EditingState::eDesignMode;
+    if (designMode) {
+      // designMode is being turned on (overrides contentEditable).
+      spellRecheckAll = oldState == EditingState::eContentEditable;
+    }
+
+    // Adjust focused element with new style but blur event shouldn't be fired
+    // until mEditingState is modified with newState.
+    nsAutoScriptBlocker scriptBlocker;
+    if (designMode) {
+      nsCOMPtr focusedWindow;
+      nsIContent* focusedContent = nsFocusManager::GetFocusedDescendant(
+          window, nsFocusManager::eOnlyCurrentWindow,
+          getter_AddRefs(focusedWindow));
+      if (focusedContent) {
+        nsIFrame* focusedFrame = focusedContent->GetPrimaryFrame();
+        bool clearFocus = focusedFrame ? !focusedFrame->IsFocusable()
+                                       : !focusedContent->IsFocusable();
+        if (clearFocus) {
+          nsFocusManager* fm = nsFocusManager::GetFocusManager();
+          if (fm) {
+            fm->ClearFocus(window);
+            // If we need to dispatch blur event, we should put off after
+            // modifying mEditingState since blur event handler may change
+            // designMode state again.
+            putOffToRemoveScriptBlockerUntilModifyingEditingState = true;
+          }
+        }
+      }
+    }
+
+    if (makeWindowEditable) {
+      // Editing is being turned on (through designMode or contentEditable)
+      // Turn on editor.
+      // XXX This can cause flushing which can change the editing state, so make
+      //     sure to avoid recursing.
+      rv = editSession->MakeWindowEditable(window, "html", false, false, true);
+      NS_ENSURE_SUCCESS(rv, rv);
+    }
+
+    // XXX Need to call TearDownEditorOnWindow for all failures.
+    htmlEditor = docshell->GetHTMLEditor();
+    if (!htmlEditor) {
+      return NS_ERROR_FAILURE;
+    }
+
+    // If we're entering the design mode, put the selection at the beginning of
+    // the document for compatibility reasons.
+    if (designMode && oldState == EditingState::eOff) {
+      htmlEditor->BeginningOfDocument();
+    }
+
+    if (putOffToRemoveScriptBlockerUntilModifyingEditingState) {
+      nsContentUtils::AddScriptBlocker();
+    }
+  }
+
+  mEditingState = newState;
+  if (putOffToRemoveScriptBlockerUntilModifyingEditingState) {
+    nsContentUtils::RemoveScriptBlocker();
+    // If mEditingState is overwritten by another call and already disabled
+    // the editing, we shouldn't keep making window editable.
+    if (mEditingState == EditingState::eOff) {
+      return NS_OK;
+    }
+  }
+
+  if (makeWindowEditable) {
+    // Set the editor to not insert br's on return when in p
+    // elements by default.
+    // XXX Do we only want to do this for designMode?
+    // Note that it doesn't matter what CallerType we pass, because the callee
+    // doesn't use it for this command.  Play it safe and pass the more
+    // restricted one.
+    ErrorResult errorResult;
+    nsCOMPtr principal = NodePrincipal();
+    Unused << ExecCommand(NS_LITERAL_STRING("insertBrOnReturn"), false,
+                          NS_LITERAL_STRING("false"),
+                          // Principal doesn't matter here, because the
+                          // insertBrOnReturn command doesn't use it.   Still
+                          // it's too bad we can't easily grab a nullprincipal
+                          // from somewhere without allocating one..
+                          *principal, errorResult);
+
+    if (errorResult.Failed()) {
+      // Editor setup failed. Editing is not on after all.
+      // XXX Should we reset the editable flag on nodes?
+      editSession->TearDownEditorOnWindow(window);
+      mEditingState = EditingState::eOff;
+
+      return errorResult.StealNSResult();
+    }
+  }
+
+  if (updateState) {
+    nsAutoScriptBlocker scriptBlocker;
+    NotifyEditableStateChange(this, this);
+  }
+
+  // Resync the editor's spellcheck state.
+  if (spellRecheckAll) {
+    nsCOMPtr selectionController =
+        htmlEditor->GetSelectionController();
+    if (NS_WARN_IF(!selectionController)) {
+      return NS_ERROR_FAILURE;
+    }
+
+    RefPtr spellCheckSelection = selectionController->GetSelection(
+        nsISelectionController::SELECTION_SPELLCHECK);
+    if (spellCheckSelection) {
+      spellCheckSelection->RemoveAllRanges(IgnoreErrors());
+    }
+  }
+  htmlEditor->SyncRealTimeSpell();
+
+  MaybeDispatchCheckKeyPressEventModelEvent();
+
+  return NS_OK;
+}
+
+// Helper class, used below in ChangeContentEditableCount().
+class DeferredContentEditableCountChangeEvent : public Runnable {
+ public:
+  DeferredContentEditableCountChangeEvent(Document* aDoc, nsIContent* aElement)
+      : mozilla::Runnable("DeferredContentEditableCountChangeEvent"),
+        mDoc(aDoc),
+        mElement(aElement) {}
+
+  NS_IMETHOD Run() override {
+    if (mElement && mElement->OwnerDoc() == mDoc) {
+      mDoc->DeferredContentEditableCountChange(mElement);
+    }
+    return NS_OK;
+  }
+
+ private:
+  RefPtr mDoc;
+  nsCOMPtr mElement;
+};
+
+nsresult Document::ChangeContentEditableCount(nsIContent* aElement,
+                                              int32_t aChange) {
+  NS_ASSERTION(int32_t(mContentEditableCount) + aChange >= 0,
+               "Trying to decrement too much.");
+
+  mContentEditableCount += aChange;
+
+  nsContentUtils::AddScriptRunner(
+      new DeferredContentEditableCountChangeEvent(this, aElement));
+
+  return NS_OK;
+}
+
+void Document::DeferredContentEditableCountChange(nsIContent* aElement) {
+  if (mParser ||
+      (mUpdateNestLevel > 0 && (mContentEditableCount > 0) != IsEditingOn())) {
+    return;
+  }
+
+  EditingState oldState = mEditingState;
+
+  nsresult rv = EditingStateChanged();
+  NS_ENSURE_SUCCESS_VOID(rv);
+
+  if (oldState == mEditingState &&
+      mEditingState == EditingState::eContentEditable) {
+    // We just changed the contentEditable state of a node, we need to reset
+    // the spellchecking state of that node.
+    if (aElement) {
+      nsPIDOMWindowOuter* window = GetWindow();
+      if (!window) {
+        return;
+      }
+
+      nsIDocShell* docshell = window->GetDocShell();
+      if (!docshell) {
+        return;
+      }
+
+      RefPtr htmlEditor = docshell->GetHTMLEditor();
+      if (htmlEditor) {
+        RefPtr range = new nsRange(aElement);
+        IgnoredErrorResult res;
+        range->SelectNode(*aElement, res);
+        if (res.Failed()) {
+          // The node might be detached from the document at this point,
+          // which would cause this call to fail.  In this case, we can
+          // safely ignore the contenteditable count change.
+          return;
+        }
+
+        nsCOMPtr spellChecker;
+        rv = htmlEditor->GetInlineSpellChecker(false,
+                                               getter_AddRefs(spellChecker));
+        NS_ENSURE_SUCCESS_VOID(rv);
+
+        if (spellChecker) {
+          rv = spellChecker->SpellCheckRange(range);
+          NS_ENSURE_SUCCESS_VOID(rv);
+        }
+      }
+    }
+  }
+}
+
+void Document::MaybeDispatchCheckKeyPressEventModelEvent() {
+  // Currently, we need to check only when we're becoming editable for
+  // contenteditable.
+  if (mEditingState != EditingState::eContentEditable) {
+    return;
+  }
+
+  if (mHasBeenEditable) {
+    return;
+  }
+  mHasBeenEditable = true;
+
+  // Dispatch "CheckKeyPressEventModel" event.  That is handled only by
+  // KeyPressEventModelCheckerChild.  Then, it calls SetKeyPressEventModel()
+  // with proper keypress event for the active web app.
+  WidgetEvent checkEvent(true, eUnidentifiedEvent);
+  checkEvent.mSpecifiedEventType = nsGkAtoms::onCheckKeyPressEventModel;
+  checkEvent.mFlags.mCancelable = false;
+  checkEvent.mFlags.mBubbles = false;
+  checkEvent.mFlags.mOnlySystemGroupDispatch = true;
+  // Post the event rather than dispatching it synchronously because we need
+  // a call of SetKeyPressEventModel() before first key input.  Therefore, we
+  // can avoid paying unnecessary runtime cost for most web apps.
+  (new AsyncEventDispatcher(this, checkEvent))->PostDOMEvent();
+}
+
+void Document::SetKeyPressEventModel(uint16_t aKeyPressEventModel) {
+  PresShell* presShell = GetPresShell();
+  if (!presShell) {
+    return;
+  }
+  presShell->SetKeyPressEventModel(aKeyPressEventModel);
+}
+
 TimeStamp Document::LastFocusTime() const { return mLastFocusTime; }
 
 void Document::SetLastFocusTime(const TimeStamp& aFocusTime) {
@@ -5097,6 +6171,9 @@ void Document::BeginUpdate() {
 }
 
 void Document::EndUpdate() {
+  const bool reset = !mPendingMaybeEditingStateChanged;
+  mPendingMaybeEditingStateChanged = true;
+
   NS_DOCUMENT_NOTIFY_OBSERVERS(EndUpdate, (this));
 
   nsContentUtils::RemoveScriptBlocker();
@@ -5111,9 +6188,24 @@ void Document::EndUpdate() {
   if (mXULBroadcastManager) {
     mXULBroadcastManager->MaybeBroadcast();
   }
+
+  if (reset) {
+    mPendingMaybeEditingStateChanged = false;
+  }
+  MaybeEditingStateChanged();
 }
 
 void Document::BeginLoad() {
+  if (IsEditingOn()) {
+    // Reset() blows away all event listeners in the document, and our
+    // editor relies heavily on those. Midas is turned on, to make it
+    // work, re-initialize it to give it a chance to add its event
+    // listeners again.
+
+    TurnEditingOff();
+    EditingStateChanged();
+  }
+
   MOZ_ASSERT(!mDidCallBeginLoad);
   mDidCallBeginLoad = true;
 
@@ -5365,6 +6457,9 @@ static void AssertAboutPageHasCSP(Document* aDocument) {
 #endif
 
 void Document::EndLoad() {
+  bool turnOnEditing =
+      mParser && (HasFlag(NODE_IS_EDITABLE) || mContentEditableCount > 0);
+
 #if defined(DEBUG) && !defined(ANDROID)
   // only assert if nothing stopped the load on purpose
   // TODO: we probably also want to check XUL documents here too
@@ -5402,6 +6497,28 @@ void Document::EndLoad() {
   mDidCallBeginLoad = false;
 
   UnblockDOMContentLoaded();
+
+  if (turnOnEditing) {
+    EditingStateChanged();
+  }
+
+  if (!GetWindow()) {
+    // This is a document that's not in a window.  For example, this could be an
+    // XMLHttpRequest responseXML document, or a document created via DOMParser
+    // or DOMImplementation.  We don't reach this code normally for such
+    // documents (which is not obviously correct), but can reach it via
+    // document.open()/document.close().
+    //
+    // Such documents don't fire load events, but per spec should set their
+    // readyState to "complete" when parsing and all loading of subresources is
+    // done.  Parsing is done now, and documents not in a window don't load
+    // subresources, so just go ahead and mark ourselves as complete.
+    SetReadyStateInternal(Document::READYSTATE_COMPLETE,
+                          /* updateTimingInformation = */ false);
+
+    // Reset mSkipLoadEventAfterClose just in case.
+    mSkipLoadEventAfterClose = false;
+  }
 }
 
 void Document::UnblockDOMContentLoaded() {
@@ -6609,6 +7726,8 @@ void Document::SetMayStartLayout(bool aMayStartLayout) {
       MaybeResolveReadyForIdle();
     }
   }
+
+  MaybeEditingStateChanged();
 }
 
 nsresult Document::InitializeFrameLoader(nsFrameLoader* aLoader) {
@@ -8695,6 +9814,8 @@ void Document::Destroy() {
 }
 
 void Document::RemovedFromDocShell() {
+  mEditingState = EditingState::eOff;
+
   if (mRemovedFromDocShell) return;
 
   mRemovedFromDocShell = true;
@@ -12257,6 +13378,7 @@ void Document::DocAddSizeOfExcludingThis(nsWindowSizes& aWindowSizes) const {
 
   // Measurement of the following members may be added later if DMD finds it
   // is worthwhile:
+  // - mMidasCommandManager
   // - many!
 }
 
diff --git a/dom/base/Document.h b/dom/base/Document.h
index ab9007fd4bb0..a6db584513f4 100644
--- a/dom/base/Document.h
+++ b/dom/base/Document.h
@@ -1550,6 +1550,68 @@ class Document : public nsINode,
   // Sets the cache sizes for the current generation.
   void SetCachedSizes(nsTabSizes* aSizes);
 
+  /**
+   * Should be called when an element's editable changes as a result of
+   * changing its contentEditable attribute/property.
+   *
+   * @param aElement the element for which the contentEditable
+   *                 attribute/property was changed
+   * @param aChange +1 if the contentEditable attribute/property was changed to
+   *                true, -1 if it was changed to false
+   */
+  nsresult ChangeContentEditableCount(nsIContent* aElement, int32_t aChange);
+  void DeferredContentEditableCountChange(nsIContent* aElement);
+
+  enum class EditingState : int8_t {
+    eTearingDown = -2,
+    eSettingUp = -1,
+    eOff = 0,
+    eDesignMode,
+    eContentEditable
+  };
+
+  /**
+   * Returns the editing state of the document (not editable, contentEditable or
+   * designMode).
+   */
+  EditingState GetEditingState() const { return mEditingState; }
+
+  /**
+   * Returns whether the document is editable.
+   */
+  bool IsEditingOn() const {
+    return GetEditingState() == EditingState::eDesignMode ||
+           GetEditingState() == EditingState::eContentEditable;
+  }
+
+  class MOZ_STACK_CLASS nsAutoEditingState {
+   public:
+    nsAutoEditingState(Document* aDoc, EditingState aState)
+        : mDoc(aDoc), mSavedState(aDoc->mEditingState) {
+      aDoc->mEditingState = aState;
+    }
+    ~nsAutoEditingState() { mDoc->mEditingState = mSavedState; }
+
+   private:
+    RefPtr mDoc;
+    EditingState mSavedState;
+  };
+  friend class nsAutoEditingState;
+
+  /**
+   * Set the editing state of the document. Don't use this if you want
+   * to enable/disable editing, call EditingStateChanged() or
+   * SetDesignMode().
+   */
+  nsresult SetEditingState(EditingState aState);
+
+  /**
+   * Called when this Document's editor is destroyed.
+   */
+  void TearingDownEditor();
+
+  void SetKeyPressEventModel(uint16_t aKeyPressEventModel);
+
  protected:
   friend class nsUnblockOnloadEvent;
 
@@ -1609,6 +1671,32 @@ class Document : public nsINode,
    */
   void DisconnectNodeTree();
 
+  /**
+   * Like IsEditingOn(), but will flush as needed first.
+   */
+  bool IsEditingOnAfterFlush();
+
+  /**
+   * MaybeDispatchCheckKeyPressEventModelEvent() dispatches
+   * "CheckKeyPressEventModel" event to check whether we should dispatch
+   * keypress events in confluent model or split model.  This should be
+   * called only when mEditingState is changed to eDesignMode or
+   * eConentEditable at first time.
+   */
+  void MaybeDispatchCheckKeyPressEventModelEvent();
+
+  /* Midas implementation */
+  nsCommandManager* GetMidasCommandManager();
+
+  nsresult TurnEditingOff();
+
+  // MOZ_CAN_RUN_SCRIPT_BOUNDARY because this is called from all sorts
+  // of places, and I'm pretty sure the exact ExecCommand call it
+  // makes cannot actually run script.
+  MOZ_CAN_RUN_SCRIPT_BOUNDARY nsresult EditingStateChanged();
+
+  void MaybeEditingStateChanged();
+
  private:
   class SelectorCacheKey {
    public:
@@ -2040,10 +2128,10 @@ class Document : public nsINode,
   // content model or of style data, EndUpdate must be called afterward.
   // To make this easy and painless, use the mozAutoDocUpdate helper class.
   void BeginUpdate();
-  virtual void EndUpdate();
+  void EndUpdate();
   uint32_t UpdateNestingLevel() { return mUpdateNestLevel; }
 
-  virtual void BeginLoad();
+  void BeginLoad();
   virtual void EndLoad();
 
   enum ReadyState {
@@ -2344,7 +2432,7 @@ class Document : public nsINode,
    * be rendered in "zombie state" until the next document is ready.
    * The document should save form control state.
    */
-  virtual void RemovedFromDocShell();
+  void RemovedFromDocShell();
 
   /**
    * Get the layout history state that should be used to save and restore state
@@ -2539,7 +2627,7 @@ class Document : public nsINode,
 
   bool MayStartLayout() { return mMayStartLayout; }
 
-  virtual void SetMayStartLayout(bool aMayStartLayout);
+  void SetMayStartLayout(bool aMayStartLayout);
 
   already_AddRefed GetCachedEncoder();
 
@@ -2773,7 +2861,7 @@ class Document : public nsINode,
   /**
    * Test whether we should be firing a load event for this document after a
    * document.close().  This is public and on Document, instead of being private
-   * to nsHTMLDocument, because we need to go through the normal docloader logic
+   * to Document, because we need to go through the normal docloader logic
    * for the readystate change to READYSTATE_COMPLETE with the normal timing and
    * semantics of firing the load event; we just don't want to fire the load
    * event if this tests true.  So we need the docloader to be able to access
@@ -3333,6 +3421,27 @@ class Document : public nsINode,
   Nullable GetDefaultView() const;
   Element* GetActiveElement();
   bool HasFocus(ErrorResult& rv) const;
+  void GetDesignMode(nsAString& aDesignMode);
+  void SetDesignMode(const nsAString& aDesignMode,
+                     nsIPrincipal& aSubjectPrincipal, mozilla::ErrorResult& rv);
+  void SetDesignMode(const nsAString& aDesignMode,
+                     const mozilla::Maybe& aSubjectPrincipal,
+                     mozilla::ErrorResult& rv);
+  MOZ_CAN_RUN_SCRIPT
+  bool ExecCommand(const nsAString& aCommandID, bool aDoShowUI,
+                   const nsAString& aValue, nsIPrincipal& aSubjectPrincipal,
+                   mozilla::ErrorResult& rv);
+  bool QueryCommandEnabled(const nsAString& aCommandID,
+                           nsIPrincipal& aSubjectPrincipal,
+                           mozilla::ErrorResult& rv);
+  bool QueryCommandIndeterm(const nsAString& aCommandID,
+                            mozilla::ErrorResult& rv);
+  bool QueryCommandState(const nsAString& aCommandID, mozilla::ErrorResult& rv);
+  bool QueryCommandSupported(const nsAString& aCommandID,
+                             mozilla::dom::CallerType aCallerType);
+  MOZ_CAN_RUN_SCRIPT
+  void QueryCommandValue(const nsAString& aCommandID, nsAString& aValue,
+                         mozilla::ErrorResult& rv);
   nsIHTMLCollection* Applets();
   nsIHTMLCollection* Anchors();
   TimeStamp LastFocusTime() const;
@@ -4444,6 +4553,16 @@ class Document : public nsINode,
   // allowed?
   bool mTooDeepWriteRecursion : 1;
 
+  /**
+   * Temporary flag that is set in EndUpdate() to ignore
+   * MaybeEditingStateChanged() script runners from a nested scope.
+   */
+  bool mPendingMaybeEditingStateChanged : 1;
+
+  // mHasBeenEditable is set to true when mEditingState is firstly set to
+  // eDesignMode or eContentEditable.
+  bool mHasBeenEditable : 1;
+
   uint8_t mPendingFullscreenRequests;
 
   uint8_t mXMLDeclarationBits;
@@ -4460,6 +4579,9 @@ class Document : public nsINode,
   // finishes processing that script.
   uint32_t mWriteLevel;
 
+  uint32_t mContentEditableCount;
+  EditingState mEditingState;
+
   // Compatibility mode
   nsCompatibility mCompatMode;
 
@@ -4657,6 +4779,8 @@ class Document : public nsINode,
 
   RefPtr mDocGroup;
 
+  RefPtr mMidasCommandManager;
+
   // The set of all the tracking script URLs.  URLs are added to this set by
   // calling NoteScriptTrackingStatus().  Currently we assume that a URL not
   // existing in the set means the corresponding script isn't a tracking script.
diff --git a/dom/base/nsFocusManager.cpp b/dom/base/nsFocusManager.cpp
index 52379fc5a4a2..71ad7144218c 100644
--- a/dom/base/nsFocusManager.cpp
+++ b/dom/base/nsFocusManager.cpp
@@ -2241,10 +2241,11 @@ void nsFocusManager::UpdateCaret(bool aMoveCaretToFocus, bool aUpdateVisibility,
   focusedDocShell->GetEditable(&isEditable);
 
   if (isEditable) {
-    nsCOMPtr doc = do_QueryInterface(presShell->GetDocument());
+    Document* doc = presShell->GetDocument();
 
     bool isContentEditableDoc =
-        doc && doc->GetEditingState() == nsIHTMLDocument::eContentEditable;
+        doc &&
+        doc->GetEditingState() == Document::EditingState::eContentEditable;
 
     bool isFocusEditable = aContent && aContent->HasFlag(NODE_IS_EDITABLE);
     if (!isContentEditableDoc || isFocusEditable) return;
diff --git a/dom/html/nsGenericHTMLElement.cpp b/dom/html/nsGenericHTMLElement.cpp
index af3593eafcea..d803fe241ef9 100644
--- a/dom/html/nsGenericHTMLElement.cpp
+++ b/dom/html/nsGenericHTMLElement.cpp
@@ -434,10 +434,9 @@ nsresult nsGenericHTMLElement::BindToTree(Document* aDocument,
 
   if (HasFlag(NODE_IS_EDITABLE) && GetContentEditableValue() == eTrue &&
       IsInComposedDoc()) {
-    nsCOMPtr htmlDocument =
-        do_QueryInterface(GetComposedDoc());
-    if (htmlDocument) {
-      htmlDocument->ChangeContentEditableCount(this, +1);
+    Document* doc = GetComposedDoc();
+    if (doc) {
+      doc->ChangeContentEditableCount(this, +1);
     }
   }
 
@@ -460,10 +459,9 @@ void nsGenericHTMLElement::UnbindFromTree(bool aNullParent) {
   RemoveFromNameTable();
 
   if (GetContentEditableValue() == eTrue) {
-    nsCOMPtr htmlDocument =
-        do_QueryInterface(GetComposedDoc());
-    if (htmlDocument) {
-      htmlDocument->ChangeContentEditableCount(this, -1);
+    Document* doc = GetComposedDoc();
+    if (doc) {
+      doc->ChangeContentEditableCount(this, -1);
     }
   }
 
@@ -2459,9 +2457,7 @@ void nsGenericHTMLElement::ChangeEditableState(int32_t aChange) {
   }
 
   if (aChange != 0) {
-    if (nsCOMPtr htmlDocument = do_QueryInterface(document)) {
-      htmlDocument->ChangeContentEditableCount(this, aChange);
-    }
+    document->ChangeContentEditableCount(this, aChange);
   }
 
   if (document->HasFlag(NODE_IS_EDITABLE)) {
diff --git a/dom/html/nsHTMLDocument.cpp b/dom/html/nsHTMLDocument.cpp
index 64ada00782c1..ea8df551c317 100644
--- a/dom/html/nsHTMLDocument.cpp
+++ b/dom/html/nsHTMLDocument.cpp
@@ -80,14 +80,9 @@
 #include "mozilla/dom/FallbackEncoding.h"
 #include "mozilla/Encoding.h"
 #include "mozilla/EventListenerManager.h"
-#include "mozilla/HTMLEditor.h"
 #include "mozilla/IdentifierMapEntry.h"
 #include "mozilla/LoadInfo.h"
-#include "nsIEditingSession.h"
 #include "nsNodeInfoManager.h"
-#include "nsIPlaintextEditor.h"
-#include "nsIEditorStyleSheets.h"
-#include "nsIInlineSpellChecker.h"
 #include "nsRange.h"
 #include "mozAutoDocUpdate.h"
 #include "nsCCUncollectableMarker.h"
@@ -115,7 +110,6 @@
 #include "mozilla/StyleSheet.h"
 #include "mozilla/StyleSheetInlines.h"
 #include "mozilla/Unused.h"
-#include "nsCommandParams.h"
 
 using namespace mozilla;
 using namespace mozilla::dom;
@@ -126,21 +120,6 @@ using namespace mozilla::dom;
 
 static NS_DEFINE_CID(kCParserCID, NS_PARSER_CID);
 
-// this function will return false if the command is not recognized
-// inCommandID will be converted as necessary for internal operations
-// inParam will be converted as necessary for internal operations
-// outParam will be Empty if no parameter is needed or if returning a boolean
-// outIsBoolean will determine whether to send param as a boolean or string
-// outBooleanParam will not be set unless outIsBoolean
-static bool ConvertToMidasInternalCommand(const nsAString& inCommandID,
-                                          const nsAString& inParam,
-                                          nsACString& outCommandID,
-                                          nsACString& outParam, bool& isBoolean,
-                                          bool& boolValue);
-
-static bool ConvertToMidasInternalCommand(const nsAString& inCommandID,
-                                          nsACString& outCommandID);
-
 // ==================================================================
 // =
 // ==================================================================
@@ -171,10 +150,6 @@ nsHTMLDocument::nsHTMLDocument()
       mNumForms(0),
       mLoadFlags(0),
       mWarnedWidthHeight(false),
-      mContentEditableCount(0),
-      mEditingState(EditingState::eOff),
-      mPendingMaybeEditingStateChanged(false),
-      mHasBeenEditable(false),
       mIsPlainText(false) {
   mType = eHTML;
   mDefaultElementType = kNameSpaceID_XHTML;
@@ -183,8 +158,7 @@ nsHTMLDocument::nsHTMLDocument()
 
 nsHTMLDocument::~nsHTMLDocument() {}
 
-NS_IMPL_CYCLE_COLLECTION_INHERITED(nsHTMLDocument, Document, mAll,
-                                   mMidasCommandManager)
+NS_IMPL_CYCLE_COLLECTION_INHERITED(nsHTMLDocument, Document, mAll)
 
 NS_IMPL_ISUPPORTS_CYCLE_COLLECTION_INHERITED(nsHTMLDocument, Document,
                                              nsIHTMLDocument)
@@ -705,47 +679,6 @@ nsresult nsHTMLDocument::StartDocumentLoad(const char* aCommand,
   return rv;
 }
 
-void nsHTMLDocument::BeginLoad() {
-  if (IsEditingOn()) {
-    // Reset() blows away all event listeners in the document, and our
-    // editor relies heavily on those. Midas is turned on, to make it
-    // work, re-initialize it to give it a chance to add its event
-    // listeners again.
-
-    TurnEditingOff();
-    EditingStateChanged();
-  }
-  Document::BeginLoad();
-}
-
-void nsHTMLDocument::EndLoad() {
-  bool turnOnEditing =
-      mParser && (HasFlag(NODE_IS_EDITABLE) || mContentEditableCount > 0);
-  // Note: Document::EndLoad nulls out mParser.
-  Document::EndLoad();
-  if (turnOnEditing) {
-    EditingStateChanged();
-  }
-
-  if (!GetWindow()) {
-    // This is a document that's not in a window.  For example, this could be an
-    // XMLHttpRequest responseXML document, or a document created via DOMParser
-    // or DOMImplementation.  We don't reach this code normally for such
-    // documents (which is not obviously correct), but can reach it via
-    // document.open()/document.close().
-    //
-    // Such documents don't fire load events, but per spec should set their
-    // readyState to "complete" when parsing and all loading of subresources is
-    // done.  Parsing is done now, and documents not in a window don't load
-    // subresources, so just go ahead and mark ourselves as complete.
-    SetReadyStateInternal(Document::READYSTATE_COMPLETE,
-                          /* updateTimingInformation = */ false);
-
-    // Reset mSkipLoadEventAfterClose just in case.
-    mSkipLoadEventAfterClose = false;
-  }
-}
-
 bool nsHTMLDocument::UseWidthDeviceWidthFallbackViewport() const {
   if (mIsPlainText) {
     // Plain text documents are simple enough that font inflation doesn't offer
@@ -942,123 +875,6 @@ bool nsHTMLDocument::MatchFormControls(Element* aElement, int32_t aNamespaceID,
   return aElement->IsNodeOfType(nsIContent::eHTML_FORM_CONTROL);
 }
 
-void nsHTMLDocument::GetDesignMode(nsAString& aDesignMode) {
-  if (HasFlag(NODE_IS_EDITABLE)) {
-    aDesignMode.AssignLiteral("on");
-  } else {
-    aDesignMode.AssignLiteral("off");
-  }
-}
-
-void nsHTMLDocument::MaybeEditingStateChanged() {
-  if (!mPendingMaybeEditingStateChanged && mMayStartLayout &&
-      mUpdateNestLevel == 0 && (mContentEditableCount > 0) != IsEditingOn()) {
-    if (nsContentUtils::IsSafeToRunScript()) {
-      EditingStateChanged();
-    } else if (!mInDestructor) {
-      nsContentUtils::AddScriptRunner(
-          NewRunnableMethod("nsHTMLDocument::MaybeEditingStateChanged", this,
-                            &nsHTMLDocument::MaybeEditingStateChanged));
-    }
-  }
-}
-
-void nsHTMLDocument::EndUpdate() {
-  const bool reset = !mPendingMaybeEditingStateChanged;
-  mPendingMaybeEditingStateChanged = true;
-  Document::EndUpdate();
-  if (reset) {
-    mPendingMaybeEditingStateChanged = false;
-  }
-  MaybeEditingStateChanged();
-}
-
-void nsHTMLDocument::SetMayStartLayout(bool aMayStartLayout) {
-  Document::SetMayStartLayout(aMayStartLayout);
-
-  MaybeEditingStateChanged();
-}
-
-// Helper class, used below in ChangeContentEditableCount().
-class DeferredContentEditableCountChangeEvent : public Runnable {
- public:
-  DeferredContentEditableCountChangeEvent(nsHTMLDocument* aDoc,
-                                          nsIContent* aElement)
-      : mozilla::Runnable("DeferredContentEditableCountChangeEvent"),
-        mDoc(aDoc),
-        mElement(aElement) {}
-
-  NS_IMETHOD Run() override {
-    if (mElement && mElement->OwnerDoc() == mDoc) {
-      mDoc->DeferredContentEditableCountChange(mElement);
-    }
-    return NS_OK;
-  }
-
- private:
-  RefPtr mDoc;
-  nsCOMPtr mElement;
-};
-
-nsresult nsHTMLDocument::ChangeContentEditableCount(nsIContent* aElement,
-                                                    int32_t aChange) {
-  NS_ASSERTION(int32_t(mContentEditableCount) + aChange >= 0,
-               "Trying to decrement too much.");
-
-  mContentEditableCount += aChange;
-
-  nsContentUtils::AddScriptRunner(
-      new DeferredContentEditableCountChangeEvent(this, aElement));
-
-  return NS_OK;
-}
-
-void nsHTMLDocument::DeferredContentEditableCountChange(nsIContent* aElement) {
-  if (mParser ||
-      (mUpdateNestLevel > 0 && (mContentEditableCount > 0) != IsEditingOn())) {
-    return;
-  }
-
-  EditingState oldState = mEditingState;
-
-  nsresult rv = EditingStateChanged();
-  NS_ENSURE_SUCCESS_VOID(rv);
-
-  if (oldState == mEditingState && mEditingState == eContentEditable) {
-    // We just changed the contentEditable state of a node, we need to reset
-    // the spellchecking state of that node.
-    if (aElement) {
-      nsPIDOMWindowOuter* window = GetWindow();
-      if (!window) return;
-
-      nsIDocShell* docshell = window->GetDocShell();
-      if (!docshell) return;
-
-      RefPtr htmlEditor = docshell->GetHTMLEditor();
-      if (htmlEditor) {
-        RefPtr range = new nsRange(aElement);
-        IgnoredErrorResult res;
-        range->SelectNode(*aElement, res);
-        if (res.Failed()) {
-          // The node might be detached from the document at this point,
-          // which would cause this call to fail.  In this case, we can
-          // safely ignore the contenteditable count change.
-          return;
-        }
-
-        nsCOMPtr spellChecker;
-        rv = htmlEditor->GetInlineSpellChecker(false,
-                                               getter_AddRefs(spellChecker));
-        NS_ENSURE_SUCCESS_VOID(rv);
-
-        if (spellChecker) {
-          rv = spellChecker->SpellCheckRange(range);
-        }
-      }
-    }
-  }
-}
-
 HTMLAllCollection* nsHTMLDocument::All() {
   if (!mAll) {
     mAll = new HTMLAllCollection(this);
@@ -1066,941 +882,6 @@ HTMLAllCollection* nsHTMLDocument::All() {
   return mAll;
 }
 
-static void NotifyEditableStateChange(nsINode* aNode, Document* aDocument) {
-  for (nsIContent* child = aNode->GetFirstChild(); child;
-       child = child->GetNextSibling()) {
-    if (child->IsElement()) {
-      child->AsElement()->UpdateState(true);
-    }
-    NotifyEditableStateChange(child, aDocument);
-  }
-}
-
-void nsHTMLDocument::TearingDownEditor() {
-  if (IsEditingOn()) {
-    mEditingState = eTearingDown;
-    RemoveContentEditableStyleSheets();
-  }
-}
-
-nsresult nsHTMLDocument::TurnEditingOff() {
-  NS_ASSERTION(mEditingState != eOff, "Editing is already off.");
-
-  nsPIDOMWindowOuter* window = GetWindow();
-  if (!window) return NS_ERROR_FAILURE;
-
-  nsIDocShell* docshell = window->GetDocShell();
-  if (!docshell) return NS_ERROR_FAILURE;
-
-  nsCOMPtr editSession;
-  nsresult rv = docshell->GetEditingSession(getter_AddRefs(editSession));
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  // turn editing off
-  rv = editSession->TearDownEditorOnWindow(window);
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  mEditingState = eOff;
-
-  // Editor resets selection since it is being destroyed.  But if focus is
-  // still into editable control, we have to initialize selection again.
-  nsFocusManager* fm = nsFocusManager::GetFocusManager();
-  if (fm) {
-    Element* element = fm->GetFocusedElement();
-    nsCOMPtr txtCtrl = do_QueryInterface(element);
-    if (txtCtrl) {
-      RefPtr textEditor = txtCtrl->GetTextEditor();
-      if (textEditor) {
-        textEditor->ReinitializeSelection(*element);
-      }
-    }
-  }
-
-  return NS_OK;
-}
-
-static bool HasPresShell(nsPIDOMWindowOuter* aWindow) {
-  nsIDocShell* docShell = aWindow->GetDocShell();
-  if (!docShell) return false;
-  return docShell->GetPresShell() != nullptr;
-}
-
-nsresult nsHTMLDocument::SetEditingState(EditingState aState) {
-  mEditingState = aState;
-  return NS_OK;
-}
-
-nsresult nsHTMLDocument::EditingStateChanged() {
-  if (mRemovedFromDocShell) {
-    return NS_OK;
-  }
-
-  if (mEditingState == eSettingUp || mEditingState == eTearingDown) {
-    // XXX We shouldn't recurse
-    return NS_OK;
-  }
-
-  bool designMode = HasFlag(NODE_IS_EDITABLE);
-  EditingState newState =
-      designMode ? eDesignMode
-                 : (mContentEditableCount > 0 ? eContentEditable : eOff);
-  if (mEditingState == newState) {
-    // No changes in editing mode.
-    return NS_OK;
-  }
-
-  if (newState == eOff) {
-    // Editing is being turned off.
-    nsAutoScriptBlocker scriptBlocker;
-    NotifyEditableStateChange(this, this);
-    return TurnEditingOff();
-  }
-
-  // Flush out style changes on our _parent_ document, if any, so that
-  // our check for a presshell won't get stale information.
-  if (mParentDocument) {
-    mParentDocument->FlushPendingNotifications(FlushType::Style);
-  }
-
-  // get editing session, make sure this is a strong reference so the
-  // window can't get deleted during the rest of this call.
-  nsCOMPtr window = GetWindow();
-  if (!window) return NS_ERROR_FAILURE;
-
-  nsIDocShell* docshell = window->GetDocShell();
-  if (!docshell) return NS_ERROR_FAILURE;
-
-  // FlushPendingNotifications might destroy our docshell.
-  bool isBeingDestroyed = false;
-  docshell->IsBeingDestroyed(&isBeingDestroyed);
-  if (isBeingDestroyed) {
-    return NS_ERROR_FAILURE;
-  }
-
-  nsCOMPtr editSession;
-  nsresult rv = docshell->GetEditingSession(getter_AddRefs(editSession));
-  NS_ENSURE_SUCCESS(rv, rv);
-
-  RefPtr htmlEditor = editSession->GetHTMLEditorForWindow(window);
-  if (htmlEditor) {
-    // We might already have an editor if it was set up for mail, let's see
-    // if this is actually the case.
-    uint32_t flags = 0;
-    htmlEditor->GetFlags(&flags);
-    if (flags & nsIPlaintextEditor::eEditorMailMask) {
-      // We already have a mail editor, then we should not attempt to create
-      // another one.
-      return NS_OK;
-    }
-  }
-
-  if (!HasPresShell(window)) {
-    // We should not make the window editable or setup its editor.
-    // It's probably style=display:none.
-    return NS_OK;
-  }
-
-  bool makeWindowEditable = mEditingState == eOff;
-  bool updateState = false;
-  bool spellRecheckAll = false;
-  bool putOffToRemoveScriptBlockerUntilModifyingEditingState = false;
-  htmlEditor = nullptr;
-
-  {
-    EditingState oldState = mEditingState;
-    nsAutoEditingState push(this, eSettingUp);
-
-    RefPtr presShell = GetPresShell();
-    NS_ENSURE_TRUE(presShell, NS_ERROR_FAILURE);
-
-    MOZ_ASSERT(mStyleSetFilled);
-
-    // Before making this window editable, we need to modify UA style sheet
-    // because new style may change whether focused element will be focusable
-    // or not.
-    AddContentEditableStyleSheetsToStyleSet(designMode);
-
-    // Should we update the editable state of all the nodes in the document? We
-    // need to do this when the designMode value changes, as that overrides
-    // specific states on the elements.
-    updateState = designMode || oldState == eDesignMode;
-    if (designMode) {
-      // designMode is being turned on (overrides contentEditable).
-      spellRecheckAll = oldState == eContentEditable;
-    }
-
-    // Adjust focused element with new style but blur event shouldn't be fired
-    // until mEditingState is modified with newState.
-    nsAutoScriptBlocker scriptBlocker;
-    if (designMode) {
-      nsCOMPtr focusedWindow;
-      nsIContent* focusedContent = nsFocusManager::GetFocusedDescendant(
-          window, nsFocusManager::eOnlyCurrentWindow,
-          getter_AddRefs(focusedWindow));
-      if (focusedContent) {
-        nsIFrame* focusedFrame = focusedContent->GetPrimaryFrame();
-        bool clearFocus = focusedFrame ? !focusedFrame->IsFocusable()
-                                       : !focusedContent->IsFocusable();
-        if (clearFocus) {
-          nsFocusManager* fm = nsFocusManager::GetFocusManager();
-          if (fm) {
-            fm->ClearFocus(window);
-            // If we need to dispatch blur event, we should put off after
-            // modifying mEditingState since blur event handler may change
-            // designMode state again.
-            putOffToRemoveScriptBlockerUntilModifyingEditingState = true;
-          }
-        }
-      }
-    }
-
-    if (makeWindowEditable) {
-      // Editing is being turned on (through designMode or contentEditable)
-      // Turn on editor.
-      // XXX This can cause flushing which can change the editing state, so make
-      //     sure to avoid recursing.
-      rv = editSession->MakeWindowEditable(window, "html", false, false, true);
-      NS_ENSURE_SUCCESS(rv, rv);
-    }
-
-    // XXX Need to call TearDownEditorOnWindow for all failures.
-    htmlEditor = docshell->GetHTMLEditor();
-    if (!htmlEditor) {
-      return NS_ERROR_FAILURE;
-    }
-
-    // If we're entering the design mode, put the selection at the beginning of
-    // the document for compatibility reasons.
-    if (designMode && oldState == eOff) {
-      htmlEditor->BeginningOfDocument();
-    }
-
-    if (putOffToRemoveScriptBlockerUntilModifyingEditingState) {
-      nsContentUtils::AddScriptBlocker();
-    }
-  }
-
-  mEditingState = newState;
-  if (putOffToRemoveScriptBlockerUntilModifyingEditingState) {
-    nsContentUtils::RemoveScriptBlocker();
-    // If mEditingState is overwritten by another call and already disabled
-    // the editing, we shouldn't keep making window editable.
-    if (mEditingState == eOff) {
-      return NS_OK;
-    }
-  }
-
-  if (makeWindowEditable) {
-    // Set the editor to not insert br's on return when in p
-    // elements by default.
-    // XXX Do we only want to do this for designMode?
-    // Note that it doesn't matter what CallerType we pass, because the callee
-    // doesn't use it for this command.  Play it safe and pass the more
-    // restricted one.
-    ErrorResult errorResult;
-    nsCOMPtr principal = NodePrincipal();
-    Unused << ExecCommand(NS_LITERAL_STRING("insertBrOnReturn"), false,
-                          NS_LITERAL_STRING("false"),
-                          // Principal doesn't matter here, because the
-                          // insertBrOnReturn command doesn't use it.   Still
-                          // it's too bad we can't easily grab a nullprincipal
-                          // from somewhere without allocating one..
-                          *principal, errorResult);
-
-    if (errorResult.Failed()) {
-      // Editor setup failed. Editing is not on after all.
-      // XXX Should we reset the editable flag on nodes?
-      editSession->TearDownEditorOnWindow(window);
-      mEditingState = eOff;
-
-      return errorResult.StealNSResult();
-    }
-  }
-
-  if (updateState) {
-    nsAutoScriptBlocker scriptBlocker;
-    NotifyEditableStateChange(this, this);
-  }
-
-  // Resync the editor's spellcheck state.
-  if (spellRecheckAll) {
-    nsCOMPtr selectionController =
-        htmlEditor->GetSelectionController();
-    if (NS_WARN_IF(!selectionController)) {
-      return NS_ERROR_FAILURE;
-    }
-
-    RefPtr spellCheckSelection = selectionController->GetSelection(
-        nsISelectionController::SELECTION_SPELLCHECK);
-    if (spellCheckSelection) {
-      spellCheckSelection->RemoveAllRanges(IgnoreErrors());
-    }
-  }
-  htmlEditor->SyncRealTimeSpell();
-
-  MaybeDispatchCheckKeyPressEventModelEvent();
-
-  return NS_OK;
-}
-
-void nsHTMLDocument::MaybeDispatchCheckKeyPressEventModelEvent() {
-  // Currently, we need to check only when we're becoming editable for
-  // contenteditable.
-  if (mEditingState != eContentEditable) {
-    return;
-  }
-
-  if (mHasBeenEditable) {
-    return;
-  }
-  mHasBeenEditable = true;
-
-  // Dispatch "CheckKeyPressEventModel" event.  That is handled only by
-  // KeyPressEventModelCheckerChild.  Then, it calls SetKeyPressEventModel()
-  // with proper keypress event for the active web app.
-  WidgetEvent checkEvent(true, eUnidentifiedEvent);
-  checkEvent.mSpecifiedEventType = nsGkAtoms::onCheckKeyPressEventModel;
-  checkEvent.mFlags.mCancelable = false;
-  checkEvent.mFlags.mBubbles = false;
-  checkEvent.mFlags.mOnlySystemGroupDispatch = true;
-  // Post the event rather than dispatching it synchronously because we need
-  // a call of SetKeyPressEventModel() before first key input.  Therefore, we
-  // can avoid paying unnecessary runtime cost for most web apps.
-  (new AsyncEventDispatcher(this, checkEvent))->PostDOMEvent();
-}
-
-void nsHTMLDocument::SetKeyPressEventModel(uint16_t aKeyPressEventModel) {
-  PresShell* presShell = GetPresShell();
-  if (!presShell) {
-    return;
-  }
-  presShell->SetKeyPressEventModel(aKeyPressEventModel);
-}
-
-void nsHTMLDocument::SetDesignMode(const nsAString& aDesignMode,
-                                   nsIPrincipal& aSubjectPrincipal,
-                                   ErrorResult& rv) {
-  SetDesignMode(aDesignMode, Some(&aSubjectPrincipal), rv);
-}
-
-void nsHTMLDocument::SetDesignMode(
-    const nsAString& aDesignMode, const Maybe& aSubjectPrincipal,
-    ErrorResult& rv) {
-  if (aSubjectPrincipal.isSome() &&
-      !aSubjectPrincipal.value()->Subsumes(NodePrincipal())) {
-    rv.Throw(NS_ERROR_DOM_PROP_ACCESS_DENIED);
-    return;
-  }
-  bool editableMode = HasFlag(NODE_IS_EDITABLE);
-  if (aDesignMode.LowerCaseEqualsASCII(editableMode ? "off" : "on")) {
-    SetEditableFlag(!editableMode);
-
-    rv = EditingStateChanged();
-  }
-}
-
-nsCommandManager* nsHTMLDocument::GetMidasCommandManager() {
-  // check if we have it cached
-  if (mMidasCommandManager) {
-    return mMidasCommandManager;
-  }
-
-  nsPIDOMWindowOuter* window = GetWindow();
-  if (!window) {
-    return nullptr;
-  }
-
-  nsIDocShell* docshell = window->GetDocShell();
-  if (!docshell) {
-    return nullptr;
-  }
-
-  mMidasCommandManager = docshell->GetCommandManager();
-  return mMidasCommandManager;
-}
-
-struct MidasCommand {
-  const char* incomingCommandString;
-  const char* internalCommandString;
-  const char* internalParamString;
-  bool useNewParam;
-  bool convertToBoolean;
-};
-
-static const struct MidasCommand gMidasCommandTable[] = {
-    // clang-format off
-  { "bold",          "cmd_bold",            "", true,  false },
-  { "italic",        "cmd_italic",          "", true,  false },
-  { "underline",     "cmd_underline",       "", true,  false },
-  { "strikethrough", "cmd_strikethrough",   "", true,  false },
-  { "subscript",     "cmd_subscript",       "", true,  false },
-  { "superscript",   "cmd_superscript",     "", true,  false },
-  { "cut",           "cmd_cut",             "", true,  false },
-  { "copy",          "cmd_copy",            "", true,  false },
-  { "paste",         "cmd_paste",           "", true,  false },
-  { "delete",        "cmd_deleteCharBackward", "", true,  false },
-  { "forwarddelete", "cmd_deleteCharForward", "", true,  false },
-  { "selectall",     "cmd_selectAll",       "", true,  false },
-  { "undo",          "cmd_undo",            "", true,  false },
-  { "redo",          "cmd_redo",            "", true,  false },
-  { "indent",        "cmd_indent",          "", true,  false },
-  { "outdent",       "cmd_outdent",         "", true,  false },
-  { "backcolor",     "cmd_highlight",       "", false, false },
-  { "forecolor",     "cmd_fontColor",       "", false, false },
-  { "hilitecolor",   "cmd_highlight",       "", false, false },
-  { "fontname",      "cmd_fontFace",        "", false, false },
-  { "fontsize",      "cmd_fontSize",        "", false, false },
-  { "increasefontsize", "cmd_increaseFont", "", false, false },
-  { "decreasefontsize", "cmd_decreaseFont", "", false, false },
-  { "inserthorizontalrule", "cmd_insertHR", "", true,  false },
-  { "createlink",    "cmd_insertLinkNoUI",  "", false, false },
-  { "insertimage",   "cmd_insertImageNoUI", "", false, false },
-  { "inserthtml",    "cmd_insertHTML",      "", false, false },
-  { "inserttext",    "cmd_insertText",      "", false, false },
-  { "gethtml",       "cmd_getContents",     "", false, false },
-  { "justifyleft",   "cmd_align",       "left", true,  false },
-  { "justifyright",  "cmd_align",      "right", true,  false },
-  { "justifycenter", "cmd_align",     "center", true,  false },
-  { "justifyfull",   "cmd_align",    "justify", true,  false },
-  { "removeformat",  "cmd_removeStyles",    "", true,  false },
-  { "unlink",        "cmd_removeLinks",     "", true,  false },
-  { "insertorderedlist",   "cmd_ol",        "", true,  false },
-  { "insertunorderedlist", "cmd_ul",        "", true,  false },
-  { "insertparagraph", "cmd_insertParagraph", "", true,  false },
-  { "insertlinebreak", "cmd_insertLineBreak", "", true,  false },
-  { "formatblock",   "cmd_paragraphState",  "", false, false },
-  { "heading",       "cmd_paragraphState",  "", false, false },
-  { "styleWithCSS",  "cmd_setDocumentUseCSS", "", false, true },
-  { "contentReadOnly", "cmd_setDocumentReadOnly", "", false, true },
-  { "insertBrOnReturn", "cmd_insertBrOnReturn", "", false, true },
-  { "defaultParagraphSeparator", "cmd_defaultParagraphSeparator", "", false, false },
-  { "enableObjectResizing", "cmd_enableObjectResizing", "", false, true },
-  { "enableInlineTableEditing", "cmd_enableInlineTableEditing", "", false, true },
-  { "enableAbsolutePositionEditing", "cmd_enableAbsolutePositionEditing", "", false, true },
-#if 0
-// no editor support to remove alignments right now
-  { "justifynone",   "cmd_align",           "", true,  false },
-
-// the following will need special review before being turned on
-  { "saveas",        "cmd_saveAs",          "", true,  false },
-  { "print",         "cmd_print",           "", true,  false },
-#endif
-  { nullptr, nullptr, nullptr, false, false }
-    // clang-format on
-};
-
-#define MidasCommandCount \
-  ((sizeof(gMidasCommandTable) / sizeof(struct MidasCommand)) - 1)
-
-static const char* const gBlocks[] = {
-    // clang-format off
-  "ADDRESS",
-  "BLOCKQUOTE",
-  "DD",
-  "DIV",
-  "DL",
-  "DT",
-  "H1",
-  "H2",
-  "H3",
-  "H4",
-  "H5",
-  "H6",
-  "P",
-  "PRE"
-    // clang-format on
-};
-
-static bool ConvertToMidasInternalCommandInner(
-    const nsAString& inCommandID, const nsAString& inParam,
-    nsACString& outCommandID, nsACString& outParam, bool& outIsBoolean,
-    bool& outBooleanValue, bool aIgnoreParams) {
-  NS_ConvertUTF16toUTF8 convertedCommandID(inCommandID);
-
-  // Hack to support old boolean commands that were backwards (see bug 301490).
-  bool invertBool = false;
-  if (convertedCommandID.LowerCaseEqualsLiteral("usecss")) {
-    convertedCommandID.AssignLiteral("styleWithCSS");
-    invertBool = true;
-  } else if (convertedCommandID.LowerCaseEqualsLiteral("readonly")) {
-    convertedCommandID.AssignLiteral("contentReadOnly");
-    invertBool = true;
-  }
-
-  uint32_t i;
-  bool found = false;
-  for (i = 0; i < MidasCommandCount; ++i) {
-    if (convertedCommandID.Equals(gMidasCommandTable[i].incomingCommandString,
-                                  nsCaseInsensitiveCStringComparator())) {
-      found = true;
-      break;
-    }
-  }
-
-  if (!found) {
-    // reset results if the command is not found in our table
-    outCommandID.SetLength(0);
-    outParam.SetLength(0);
-    outIsBoolean = false;
-    return false;
-  }
-
-  // set outCommandID (what we use internally)
-  outCommandID.Assign(gMidasCommandTable[i].internalCommandString);
-
-  // set outParam & outIsBoolean based on flags from the table
-  outIsBoolean = gMidasCommandTable[i].convertToBoolean;
-
-  if (aIgnoreParams) {
-    // No further work to do
-    return true;
-  }
-
-  if (gMidasCommandTable[i].useNewParam) {
-    // Just have to copy it, no checking
-    outParam.Assign(gMidasCommandTable[i].internalParamString);
-    return true;
-  }
-
-  // handle checking of param passed in
-  if (outIsBoolean) {
-    // If this is a boolean value and it's not explicitly false (e.g. no value)
-    // we default to "true". For old backwards commands we invert the check (see
-    // bug 301490).
-    if (invertBool) {
-      outBooleanValue = inParam.LowerCaseEqualsLiteral("false");
-    } else {
-      outBooleanValue = !inParam.LowerCaseEqualsLiteral("false");
-    }
-    outParam.Truncate();
-
-    return true;
-  }
-
-  // String parameter -- see if we need to convert it (necessary for
-  // cmd_paragraphState and cmd_fontSize)
-  if (outCommandID.EqualsLiteral("cmd_paragraphState")) {
-    const char16_t* start = inParam.BeginReading();
-    const char16_t* end = inParam.EndReading();
-    if (start != end && *start == '<' && *(end - 1) == '>') {
-      ++start;
-      --end;
-    }
-
-    NS_ConvertUTF16toUTF8 convertedParam(Substring(start, end));
-    uint32_t j;
-    for (j = 0; j < ArrayLength(gBlocks); ++j) {
-      if (convertedParam.Equals(gBlocks[j],
-                                nsCaseInsensitiveCStringComparator())) {
-        outParam.Assign(gBlocks[j]);
-        break;
-      }
-    }
-
-    if (j == ArrayLength(gBlocks)) {
-      outParam.Truncate();
-    }
-  } else if (outCommandID.EqualsLiteral("cmd_fontSize")) {
-    // Per editing spec as of April 23, 2012, we need to reject the value if
-    // it's not a valid floating-point number surrounded by optional whitespace.
-    // Otherwise, we parse it as a legacy font size.  For now, we just parse as
-    // a legacy font size regardless (matching WebKit) -- bug 747879.
-    outParam.Truncate();
-    int32_t size = nsContentUtils::ParseLegacyFontSize(inParam);
-    if (size) {
-      outParam.AppendInt(size);
-    }
-  } else {
-    CopyUTF16toUTF8(inParam, outParam);
-  }
-
-  return true;
-}
-
-static bool ConvertToMidasInternalCommand(const nsAString& inCommandID,
-                                          const nsAString& inParam,
-                                          nsACString& outCommandID,
-                                          nsACString& outParam,
-                                          bool& outIsBoolean,
-                                          bool& outBooleanValue) {
-  return ConvertToMidasInternalCommandInner(inCommandID, inParam, outCommandID,
-                                            outParam, outIsBoolean,
-                                            outBooleanValue, false);
-}
-
-static bool ConvertToMidasInternalCommand(const nsAString& inCommandID,
-                                          nsACString& outCommandID) {
-  nsAutoCString dummyCString;
-  nsAutoString dummyString;
-  bool dummyBool;
-  return ConvertToMidasInternalCommandInner(inCommandID, dummyString,
-                                            outCommandID, dummyCString,
-                                            dummyBool, dummyBool, true);
-}
-
-bool nsHTMLDocument::ExecCommand(const nsAString& commandID, bool doShowUI,
-                                 const nsAString& value,
-                                 nsIPrincipal& aSubjectPrincipal,
-                                 ErrorResult& rv) {
-  //  for optional parameters see dom/src/base/nsHistory.cpp: HistoryImpl::Go()
-  //  this might add some ugly JS dependencies?
-
-  nsAutoCString cmdToDispatch, paramStr;
-  bool isBool, boolVal;
-  if (!ConvertToMidasInternalCommand(commandID, value, cmdToDispatch, paramStr,
-                                     isBool, boolVal)) {
-    return false;
-  }
-
-  bool isCutCopy = (commandID.LowerCaseEqualsLiteral("cut") ||
-                    commandID.LowerCaseEqualsLiteral("copy"));
-  bool isPaste = commandID.LowerCaseEqualsLiteral("paste");
-
-  // if editing is not on, bail
-  if (!isCutCopy && !isPaste && !IsEditingOnAfterFlush()) {
-    return false;
-  }
-
-  // if they are requesting UI from us, let's fail since we have no UI
-  if (doShowUI) {
-    return false;
-  }
-
-  // special case for cut & copy
-  // cut & copy are allowed in non editable documents
-  if (isCutCopy) {
-    if (!nsContentUtils::IsCutCopyAllowed(&aSubjectPrincipal)) {
-      // We have rejected the event due to it not being performed in an
-      // input-driven context therefore, we report the error to the console.
-      nsContentUtils::ReportToConsole(nsIScriptError::warningFlag,
-                                      NS_LITERAL_CSTRING("DOM"), this,
-                                      nsContentUtils::eDOM_PROPERTIES,
-                                      "ExecCommandCutCopyDeniedNotInputDriven");
-      return false;
-    }
-
-    // For cut & copy commands, we need the behaviour from
-    // nsWindowRoot::GetControllers which is to look at the focused element, and
-    // defer to a focused textbox's controller The code past taken by other
-    // commands in ExecCommand always uses the window directly, rather than
-    // deferring to the textbox, which is desireable for most editor commands,
-    // but not 'cut' and 'copy' (as those should allow copying out of embedded
-    // editors). This behaviour is invoked if we call DoCommand directly on the
-    // docShell.
-    nsCOMPtr docShell(mDocumentContainer);
-    if (docShell) {
-      nsresult res = docShell->DoCommand(cmdToDispatch.get());
-      if (res == NS_SUCCESS_DOM_NO_OPERATION) {
-        return false;
-      }
-      return NS_SUCCEEDED(res);
-    }
-    return false;
-  }
-
-  if (commandID.LowerCaseEqualsLiteral("gethtml")) {
-    rv.Throw(NS_ERROR_FAILURE);
-    return false;
-  }
-
-  if (isPaste && !nsContentUtils::PrincipalHasPermission(
-                     &aSubjectPrincipal, nsGkAtoms::clipboardRead)) {
-    return false;
-  }
-
-  // get command manager and dispatch command to our window if it's acceptable
-  RefPtr commandManager = GetMidasCommandManager();
-  if (!commandManager) {
-    rv.Throw(NS_ERROR_FAILURE);
-    return false;
-  }
-
-  nsCOMPtr window = GetWindow();
-  if (!window) {
-    rv.Throw(NS_ERROR_FAILURE);
-    return false;
-  }
-
-  if ((cmdToDispatch.EqualsLiteral("cmd_fontSize") ||
-       cmdToDispatch.EqualsLiteral("cmd_insertImageNoUI") ||
-       cmdToDispatch.EqualsLiteral("cmd_insertLinkNoUI") ||
-       cmdToDispatch.EqualsLiteral("cmd_paragraphState")) &&
-      paramStr.IsEmpty()) {
-    // Invalid value, return false
-    return false;
-  }
-
-  if (cmdToDispatch.EqualsLiteral("cmd_defaultParagraphSeparator") &&
-      !paramStr.LowerCaseEqualsLiteral("div") &&
-      !paramStr.LowerCaseEqualsLiteral("p") &&
-      !paramStr.LowerCaseEqualsLiteral("br")) {
-    // Invalid value
-    return false;
-  }
-
-  // Return false for disabled commands (bug 760052)
-  if (!commandManager->IsCommandEnabled(cmdToDispatch, window)) {
-    return false;
-  }
-
-  if (!isBool && paramStr.IsEmpty()) {
-    rv = commandManager->DoCommand(cmdToDispatch.get(), nullptr, window);
-  } else {
-    // we have a command that requires a parameter, create params
-    RefPtr params = new nsCommandParams();
-    if (isBool) {
-      rv = params->SetBool("state_attribute", boolVal);
-    } else if (cmdToDispatch.EqualsLiteral("cmd_fontFace") ||
-               cmdToDispatch.EqualsLiteral("cmd_insertImageNoUI") ||
-               cmdToDispatch.EqualsLiteral("cmd_insertLinkNoUI")) {
-      rv = params->SetString("state_attribute", value);
-    } else if (cmdToDispatch.EqualsLiteral("cmd_insertHTML") ||
-               cmdToDispatch.EqualsLiteral("cmd_insertText")) {
-      rv = params->SetString("state_data", value);
-    } else {
-      rv = params->SetCString("state_attribute", paramStr);
-    }
-    if (rv.Failed()) {
-      return false;
-    }
-    rv = commandManager->DoCommand(cmdToDispatch.get(), params, window);
-  }
-
-  return !rv.Failed();
-}
-
-bool nsHTMLDocument::QueryCommandEnabled(const nsAString& commandID,
-                                         nsIPrincipal& aSubjectPrincipal,
-                                         ErrorResult& rv) {
-  nsAutoCString cmdToDispatch;
-  if (!ConvertToMidasInternalCommand(commandID, cmdToDispatch)) {
-    return false;
-  }
-
-  // cut & copy are always allowed
-  bool isCutCopy = commandID.LowerCaseEqualsLiteral("cut") ||
-                   commandID.LowerCaseEqualsLiteral("copy");
-  if (isCutCopy) {
-    return nsContentUtils::IsCutCopyAllowed(&aSubjectPrincipal);
-  }
-
-  // Report false for restricted commands
-  bool restricted = commandID.LowerCaseEqualsLiteral("paste");
-  if (restricted && !nsContentUtils::IsSystemPrincipal(&aSubjectPrincipal)) {
-    return false;
-  }
-
-  // if editing is not on, bail
-  if (!IsEditingOnAfterFlush()) {
-    return false;
-  }
-
-  // get command manager and dispatch command to our window if it's acceptable
-  RefPtr commandManager = GetMidasCommandManager();
-  if (!commandManager) {
-    rv.Throw(NS_ERROR_FAILURE);
-    return false;
-  }
-
-  nsPIDOMWindowOuter* window = GetWindow();
-  if (!window) {
-    rv.Throw(NS_ERROR_FAILURE);
-    return false;
-  }
-
-  return commandManager->IsCommandEnabled(cmdToDispatch, window);
-}
-
-bool nsHTMLDocument::QueryCommandIndeterm(const nsAString& commandID,
-                                          ErrorResult& rv) {
-  nsAutoCString cmdToDispatch;
-  if (!ConvertToMidasInternalCommand(commandID, cmdToDispatch)) {
-    return false;
-  }
-
-  // if editing is not on, bail
-  if (!IsEditingOnAfterFlush()) {
-    return false;
-  }
-
-  // get command manager and dispatch command to our window if it's acceptable
-  RefPtr commandManager = GetMidasCommandManager();
-  if (!commandManager) {
-    rv.Throw(NS_ERROR_FAILURE);
-    return false;
-  }
-
-  nsPIDOMWindowOuter* window = GetWindow();
-  if (!window) {
-    rv.Throw(NS_ERROR_FAILURE);
-    return false;
-  }
-
-  RefPtr params = new nsCommandParams();
-  rv = commandManager->GetCommandState(cmdToDispatch.get(), window, params);
-  if (rv.Failed()) {
-    return false;
-  }
-
-  // If command does not have a state_mixed value, this call fails and sets
-  // retval to false.  This is fine -- we want to return false in that case
-  // anyway (bug 738385), so we just don't throw regardless.
-  return params->GetBool("state_mixed");
-}
-
-bool nsHTMLDocument::QueryCommandState(const nsAString& commandID,
-                                       ErrorResult& rv) {
-  nsAutoCString cmdToDispatch, paramToCheck;
-  bool dummy, dummy2;
-  if (!ConvertToMidasInternalCommand(commandID, commandID, cmdToDispatch,
-                                     paramToCheck, dummy, dummy2)) {
-    return false;
-  }
-
-  // if editing is not on, bail
-  if (!IsEditingOnAfterFlush()) {
-    return false;
-  }
-
-  // get command manager and dispatch command to our window if it's acceptable
-  RefPtr commandManager = GetMidasCommandManager();
-  if (!commandManager) {
-    rv.Throw(NS_ERROR_FAILURE);
-    return false;
-  }
-
-  nsPIDOMWindowOuter* window = GetWindow();
-  if (!window) {
-    rv.Throw(NS_ERROR_FAILURE);
-    return false;
-  }
-
-  if (commandID.LowerCaseEqualsLiteral("usecss")) {
-    // Per spec, state is supported for styleWithCSS but not useCSS, so we just
-    // return false always.
-    return false;
-  }
-
-  RefPtr params = new nsCommandParams();
-  rv = commandManager->GetCommandState(cmdToDispatch.get(), window, params);
-  if (rv.Failed()) {
-    return false;
-  }
-
-  // handle alignment as a special case (possibly other commands too?)
-  // Alignment is special because the external api is individual
-  // commands but internally we use cmd_align with different
-  // parameters.  When getting the state of this command, we need to
-  // return the boolean for this particular alignment rather than the
-  // string of 'which alignment is this?'
-  if (cmdToDispatch.EqualsLiteral("cmd_align")) {
-    nsAutoCString actualAlignmentType;
-    rv = params->GetCString("state_attribute", actualAlignmentType);
-    return !rv.Failed() && !actualAlignmentType.IsEmpty() &&
-           paramToCheck == actualAlignmentType;
-  }
-
-  // If command does not have a state_all value, this call fails and sets
-  // retval to false.  This is fine -- we want to return false in that case
-  // anyway (bug 738385), so we just succeed and return false regardless.
-  return params->GetBool("state_all");
-}
-
-bool nsHTMLDocument::QueryCommandSupported(const nsAString& commandID,
-                                           CallerType aCallerType) {
-  // Gecko technically supports all the clipboard commands including
-  // cut/copy/paste, but non-privileged content will be unable to call
-  // paste, and depending on the pref "dom.allow_cut_copy", cut and copy
-  // may also be disallowed to be called from non-privileged content.
-  // For that reason, we report the support status of corresponding
-  // command accordingly.
-  if (aCallerType != CallerType::System) {
-    if (commandID.LowerCaseEqualsLiteral("paste")) {
-      return false;
-    }
-    if (!StaticPrefs::dom_allow_cut_copy()) {
-      // XXXbz should we worry about correctly reporting "true" in the
-      // "restricted, but we're an addon with clipboardWrite permissions" case?
-      // See also nsContentUtils::IsCutCopyAllowed.
-      if (commandID.LowerCaseEqualsLiteral("cut") ||
-          commandID.LowerCaseEqualsLiteral("copy")) {
-        return false;
-      }
-    }
-  }
-
-  // commandID is supported if it can be converted to a Midas command
-  nsAutoCString cmdToDispatch;
-  return ConvertToMidasInternalCommand(commandID, cmdToDispatch);
-}
-
-void nsHTMLDocument::QueryCommandValue(const nsAString& commandID,
-                                       nsAString& aValue, ErrorResult& rv) {
-  aValue.Truncate();
-
-  nsAutoCString cmdToDispatch, paramStr;
-  if (!ConvertToMidasInternalCommand(commandID, cmdToDispatch)) {
-    // Return empty string
-    return;
-  }
-
-  // if editing is not on, bail
-  if (!IsEditingOnAfterFlush()) {
-    return;
-  }
-
-  // get command manager and dispatch command to our window if it's acceptable
-  RefPtr commandManager = GetMidasCommandManager();
-  if (!commandManager) {
-    rv.Throw(NS_ERROR_FAILURE);
-    return;
-  }
-
-  nsCOMPtr window = GetWindow();
-  if (!window) {
-    rv.Throw(NS_ERROR_FAILURE);
-    return;
-  }
-
-  // this is a special command since we are calling DoCommand rather than
-  // GetCommandState like the other commands
-  RefPtr params = new nsCommandParams();
-  if (cmdToDispatch.EqualsLiteral("cmd_getContents")) {
-    rv = params->SetBool("selection_only", true);
-    if (rv.Failed()) {
-      return;
-    }
-    rv = params->SetCString("format", NS_LITERAL_CSTRING("text/html"));
-    if (rv.Failed()) {
-      return;
-    }
-    rv = commandManager->DoCommand(cmdToDispatch.get(), params, window);
-    if (rv.Failed()) {
-      return;
-    }
-    params->GetString("result", aValue);
-    return;
-  }
-
-  rv = params->SetCString("state_attribute", paramStr);
-  if (rv.Failed()) {
-    return;
-  }
-
-  rv = commandManager->GetCommandState(cmdToDispatch.get(), window, params);
-  if (rv.Failed()) {
-    return;
-  }
-
-  // If command does not have a state_attribute value, this call fails, and
-  // aValue will wind up being the empty string.  This is fine -- we want to
-  // return "" in that case anyway (bug 738385), so we just return NS_OK
-  // regardless.
-  nsAutoCString result;
-  params->GetCString("state_attribute", result);
-  CopyUTF8toUTF16(result, aValue);
-}
-
 nsresult nsHTMLDocument::Clone(dom::NodeInfo* aNodeInfo,
                                nsINode** aResult) const {
   NS_ASSERTION(aNodeInfo->NodeInfoManager() == mNodeInfoManager,
@@ -2017,22 +898,6 @@ nsresult nsHTMLDocument::Clone(dom::NodeInfo* aNodeInfo,
   return NS_OK;
 }
 
-bool nsHTMLDocument::IsEditingOnAfterFlush() {
-  Document* doc = GetParentDocument();
-  if (doc) {
-    // Make sure frames are up to date, since that can affect whether
-    // we're editable.
-    doc->FlushPendingNotifications(FlushType::Frames);
-  }
-
-  return IsEditingOn();
-}
-
-void nsHTMLDocument::RemovedFromDocShell() {
-  mEditingState = eOff;
-  Document::RemovedFromDocShell();
-}
-
 /* virtual */
 void nsHTMLDocument::DocAddSizeOfExcludingThis(
     nsWindowSizes& aWindowSizes) const {
@@ -2042,7 +907,6 @@ void nsHTMLDocument::DocAddSizeOfExcludingThis(
   // worthwhile:
   // - mLinks
   // - mAnchors
-  // - mMidasCommandManager
 }
 
 bool nsHTMLDocument::WillIgnoreCharsetOverride() {
diff --git a/dom/html/nsHTMLDocument.h b/dom/html/nsHTMLDocument.h
index 7d0f30185e79..4654348b3066 100644
--- a/dom/html/nsHTMLDocument.h
+++ b/dom/html/nsHTMLDocument.h
@@ -66,9 +66,6 @@ class nsHTMLDocument : public mozilla::dom::Document, public nsIHTMLDocument {
                                      bool aReset = true,
                                      nsIContentSink* aSink = nullptr) override;
 
-  virtual void BeginLoad() override;
-  virtual void EndLoad() override;
-
  protected:
   virtual bool UseWidthDeviceWidthFallbackViewport() const override;
 
@@ -88,41 +85,13 @@ class nsHTMLDocument : public mozilla::dom::Document, public nsIHTMLDocument {
   virtual void AddedForm() override;
   virtual void RemovedForm() override;
   virtual int32_t GetNumFormsSynchronous() override;
-  virtual void TearingDownEditor() override;
   virtual void SetIsXHTML(bool aXHTML) override {
     mType = (aXHTML ? eXHTML : eHTML);
   }
 
-  nsresult ChangeContentEditableCount(nsIContent* aElement,
-                                      int32_t aChange) override;
-  void DeferredContentEditableCountChange(nsIContent* aElement);
-
-  virtual EditingState GetEditingState() override { return mEditingState; }
-
-  class nsAutoEditingState {
-   public:
-    nsAutoEditingState(nsHTMLDocument* aDoc, EditingState aState)
-        : mDoc(aDoc), mSavedState(aDoc->mEditingState) {
-      aDoc->mEditingState = aState;
-    }
-    ~nsAutoEditingState() { mDoc->mEditingState = mSavedState; }
-
-   private:
-    nsHTMLDocument* mDoc;
-    EditingState mSavedState;
-  };
-  friend class nsAutoEditingState;
-
-  void EndUpdate() override;
-
-  virtual void SetMayStartLayout(bool aMayStartLayout) override;
-
-  virtual nsresult SetEditingState(EditingState aState) override;
-
   virtual nsresult Clone(mozilla::dom::NodeInfo*,
                          nsINode** aResult) const override;
 
-  virtual void RemovedFromDocShell() override;
   using mozilla::dom::DocumentOrShadowRoot::GetElementById;
 
   virtual void DocAddSizeOfExcludingThis(
@@ -145,27 +114,6 @@ class nsHTMLDocument : public mozilla::dom::Document, public nsIHTMLDocument {
     }
   }
   void GetSupportedNames(nsTArray& aNames);
-  void GetDesignMode(nsAString& aDesignMode);
-  void SetDesignMode(const nsAString& aDesignMode,
-                     nsIPrincipal& aSubjectPrincipal, mozilla::ErrorResult& rv);
-  void SetDesignMode(const nsAString& aDesignMode,
-                     const mozilla::Maybe& aSubjectPrincipal,
-                     mozilla::ErrorResult& rv);
-  MOZ_CAN_RUN_SCRIPT
-  bool ExecCommand(const nsAString& aCommandID, bool aDoShowUI,
-                   const nsAString& aValue, nsIPrincipal& aSubjectPrincipal,
-                   mozilla::ErrorResult& rv);
-  bool QueryCommandEnabled(const nsAString& aCommandID,
-                           nsIPrincipal& aSubjectPrincipal,
-                           mozilla::ErrorResult& rv);
-  bool QueryCommandIndeterm(const nsAString& aCommandID,
-                            mozilla::ErrorResult& rv);
-  bool QueryCommandState(const nsAString& aCommandID, mozilla::ErrorResult& rv);
-  bool QueryCommandSupported(const nsAString& aCommandID,
-                             mozilla::dom::CallerType aCallerType);
-  MOZ_CAN_RUN_SCRIPT
-  void QueryCommandValue(const nsAString& aCommandID, nsAString& aValue,
-                         mozilla::ErrorResult& rv);
   void GetFgColor(nsAString& aFgColor);
   void SetFgColor(const nsAString& aFgColor);
   void GetLinkColor(nsAString& aLinkColor);
@@ -194,8 +142,6 @@ class nsHTMLDocument : public mozilla::dom::Document, public nsIHTMLDocument {
 
   void UserInteractionForTesting();
 
-  void SetKeyPressEventModel(uint16_t aKeyPressEventModel);
-
  protected:
   ~nsHTMLDocument();
 
@@ -205,11 +151,6 @@ class nsHTMLDocument : public mozilla::dom::Document, public nsIHTMLDocument {
 
   static void DocumentWriteTerminationFunc(nsISupports* aRef);
 
-  /**
-   * Like IsEditingOn(), but will flush as needed first.
-   */
-  bool IsEditingOnAfterFlush();
-
   // A helper class to keep nsContentList objects alive for a short period of
   // time. Note, when the final Release is called on an nsContentList object, it
   // removes itself from MutationObserver list.
@@ -256,45 +197,11 @@ class nsHTMLDocument : public mozilla::dom::Document, public nsIHTMLDocument {
   static void TryFallback(int32_t& aCharsetSource,
                           NotNull& aEncoding);
 
-  /**
-   * MaybeDispatchCheckKeyPressEventModelEvent() dispatches
-   * "CheckKeyPressEventModel" event to check whether we should dispatch
-   * keypress events in confluent model or split model.  This should be
-   * called only when mEditingState is changed to eDesignMode or
-   * eConentEditable at first time.
-   */
-  void MaybeDispatchCheckKeyPressEventModelEvent();
-
   // Load flags of the document's channel
   uint32_t mLoadFlags;
 
   bool mWarnedWidthHeight;
 
-  /* Midas implementation */
-  nsCommandManager* GetMidasCommandManager();
-
-  RefPtr mMidasCommandManager;
-
-  nsresult TurnEditingOff();
-  // MOZ_CAN_RUN_SCRIPT_BOUNDARY because this is called from all sorts
-  // of places, and I'm pretty sure the exact ExecCommand call it
-  // makes cannot actually run script.
-  MOZ_CAN_RUN_SCRIPT_BOUNDARY nsresult EditingStateChanged();
-  void MaybeEditingStateChanged();
-
-  uint32_t mContentEditableCount;
-  EditingState mEditingState;
-
-  /**
-   * Temporary flag that is set in EndUpdate() to ignore
-   * MaybeEditingStateChanged() script runners from a nested scope.
-   */
-  bool mPendingMaybeEditingStateChanged;
-
-  // mHasBeenEditable is set to true when mEditingState is firstly set to
-  // eDesignMode or eContentEditable.
-  bool mHasBeenEditable;
-
   /**
    * Set to true once we know that we are loading plain text content.
    */
diff --git a/dom/html/nsIHTMLDocument.h b/dom/html/nsIHTMLDocument.h
index c4d1866d11e6..e3cdb9408e4d 100644
--- a/dom/html/nsIHTMLDocument.h
+++ b/dom/html/nsIHTMLDocument.h
@@ -45,52 +45,6 @@ class nsIHTMLDocument : public nsISupports {
   // not the rest?
   virtual int32_t GetNumFormsSynchronous() = 0;
 
-  /**
-   * Should be called when an element's editable changes as a result of
-   * changing its contentEditable attribute/property.
-   *
-   * @param aElement the element for which the contentEditable
-   *                 attribute/property was changed
-   * @param aChange +1 if the contentEditable attribute/property was changed to
-   *                true, -1 if it was changed to false
-   */
-  virtual nsresult ChangeContentEditableCount(nsIContent* aElement,
-                                              int32_t aChange) = 0;
-
-  enum EditingState {
-    eTearingDown = -2,
-    eSettingUp = -1,
-    eOff = 0,
-    eDesignMode,
-    eContentEditable
-  };
-
-  /**
-   * Returns whether the document is editable.
-   */
-  bool IsEditingOn() {
-    return GetEditingState() == eDesignMode ||
-           GetEditingState() == eContentEditable;
-  }
-
-  /**
-   * Returns the editing state of the document (not editable, contentEditable or
-   * designMode).
-   */
-  virtual EditingState GetEditingState() = 0;
-
-  /**
-   * Set the editing state of the document. Don't use this if you want
-   * to enable/disable editing, call EditingStateChanged() or
-   * SetDesignMode().
-   */
-  virtual nsresult SetEditingState(EditingState aState) = 0;
-
-  /**
-   * Called when this nsIHTMLDocument's editor is destroyed.
-   */
-  virtual void TearingDownEditor() = 0;
-
   virtual void SetIsXHTML(bool aXHTML) = 0;
 };
 
diff --git a/dom/webidl/Document.webidl b/dom/webidl/Document.webidl
index 079967917f43..1b85b89c97af 100644
--- a/dom/webidl/Document.webidl
+++ b/dom/webidl/Document.webidl
@@ -160,15 +160,21 @@ partial interface Document {
   readonly attribute WindowProxy? defaultView;
   [Throws]
   boolean hasFocus();
-  //(HTML only)         attribute DOMString designMode;
-  //(HTML only)boolean execCommand(DOMString commandId);
-  //(HTML only)boolean execCommand(DOMString commandId, boolean showUI);
-  //(HTML only)boolean execCommand(DOMString commandId, boolean showUI, DOMString value);
-  //(HTML only)boolean queryCommandEnabled(DOMString commandId);
-  //(HTML only)boolean queryCommandIndeterm(DOMString commandId);
-  //(HTML only)boolean queryCommandState(DOMString commandId);
-  //(HTML only)boolean queryCommandSupported(DOMString commandId);
-  //(HTML only)DOMString queryCommandValue(DOMString commandId);
+  [CEReactions, SetterThrows, SetterNeedsSubjectPrincipal]
+           attribute DOMString designMode;
+  [CEReactions, Throws, NeedsSubjectPrincipal]
+  boolean execCommand(DOMString commandId, optional boolean showUI = false,
+                      optional DOMString value = "");
+  [Throws, NeedsSubjectPrincipal]
+  boolean queryCommandEnabled(DOMString commandId);
+  [Throws]
+  boolean queryCommandIndeterm(DOMString commandId);
+  [Throws]
+  boolean queryCommandState(DOMString commandId);
+  [NeedsCallerType]
+  boolean queryCommandSupported(DOMString commandId);
+  [Throws]
+  DOMString queryCommandValue(DOMString commandId);
   //(Not implemented)readonly attribute HTMLCollection commands;
 
   // special event handler IDL attributes that only apply to Document objects
@@ -608,3 +614,32 @@ partial interface Document {
   [ChromeOnly]
   void setRDMPaneOrientation(OrientationType type, float rotationAngle);
 };
+
+// Extension to give chrome JS the ability to specify a non-default keypress
+// event model.
+partial interface Document {
+  /**
+   * setKeyPressEventModel() is called when we need to check whether the web
+   * app requires specific keypress event model or not.
+   *
+   * @param aKeyPressEventModel  Proper keypress event model for the web app.
+   *   KEYPRESS_EVENT_MODEL_DEFAULT:
+   *     Use default keypress event model.  I.e., depending on
+   *     "dom.keyboardevent.keypress.set_keycode_and_charcode_to_same_value"
+   *     pref.
+   *   KEYPRESS_EVENT_MODEL_SPLIT:
+   *     Use split model.  I.e, if keypress event inputs a character,
+   *     keyCode should be 0.  Otherwise, charCode should be 0.
+   *   KEYPRESS_EVENT_MODEL_CONFLATED:
+   *     Use conflated model.  I.e., keyCode and charCode values of each
+   *     keypress event should be set to same value.
+   */
+  [ChromeOnly]
+  const unsigned short KEYPRESS_EVENT_MODEL_DEFAULT = 0;
+  [ChromeOnly]
+  const unsigned short KEYPRESS_EVENT_MODEL_SPLIT = 1;
+  [ChromeOnly]
+  const unsigned short KEYPRESS_EVENT_MODEL_CONFLATED = 2;
+  [ChromeOnly]
+  void setKeyPressEventModel(unsigned short aKeyPressEventModel);
+};
diff --git a/dom/webidl/HTMLDocument.webidl b/dom/webidl/HTMLDocument.webidl
index ee01cd2e413a..3020a1c0c1ca 100644
--- a/dom/webidl/HTMLDocument.webidl
+++ b/dom/webidl/HTMLDocument.webidl
@@ -10,22 +10,6 @@ interface HTMLDocument : Document {
   [Throws]
   getter object (DOMString name);
 
-  [CEReactions, SetterThrows, SetterNeedsSubjectPrincipal]
-           attribute DOMString designMode;
-  [CEReactions, Throws, NeedsSubjectPrincipal]
-  boolean execCommand(DOMString commandId, optional boolean showUI = false,
-                      optional DOMString value = "");
-  [Throws, NeedsSubjectPrincipal]
-  boolean queryCommandEnabled(DOMString commandId);
-  [Throws]
-  boolean queryCommandIndeterm(DOMString commandId);
-  [Throws]
-  boolean queryCommandState(DOMString commandId);
-  [NeedsCallerType]
-  boolean queryCommandSupported(DOMString commandId);
-  [Throws]
-  DOMString queryCommandValue(DOMString commandId);
-
   [CEReactions] attribute [TreatNullAs=EmptyString] DOMString fgColor;
   [CEReactions] attribute [TreatNullAs=EmptyString] DOMString linkColor;
   [CEReactions] attribute [TreatNullAs=EmptyString] DOMString vlinkColor;
@@ -61,29 +45,4 @@ partial interface HTMLDocument {
 
   [ChromeOnly]
   void userInteractionForTesting();
-
-  /**
-   * setKeyPressEventModel() is called when we need to check whether the web
-   * app requires specific keypress event model or not.
-   *
-   * @param aKeyPressEventModel  Proper keypress event model for the web app.
-   *   KEYPRESS_EVENT_MODEL_DEFAULT:
-   *     Use default keypress event model.  I.e., depending on
-   *     "dom.keyboardevent.keypress.set_keycode_and_charcode_to_same_value"
-   *     pref.
-   *   KEYPRESS_EVENT_MODEL_SPLIT:
-   *     Use split model.  I.e, if keypress event inputs a character,
-   *     keyCode should be 0.  Otherwise, charCode should be 0.
-   *   KEYPRESS_EVENT_MODEL_CONFLATED:
-   *     Use conflated model.  I.e., keyCode and charCode values of each
-   *     keypress event should be set to same value.
-   */
-  [ChromeOnly]
-  const unsigned short KEYPRESS_EVENT_MODEL_DEFAULT = 0;
-  [ChromeOnly]
-  const unsigned short KEYPRESS_EVENT_MODEL_SPLIT = 1;
-  [ChromeOnly]
-  const unsigned short KEYPRESS_EVENT_MODEL_CONFLATED = 2;
-  [ChromeOnly]
-  void setKeyPressEventModel(unsigned short aKeyPressEventModel);
 };
diff --git a/editor/composer/nsEditingSession.cpp b/editor/composer/nsEditingSession.cpp
index 44d2aecdd00e..066e2c5127d9 100644
--- a/editor/composer/nsEditingSession.cpp
+++ b/editor/composer/nsEditingSession.cpp
@@ -312,11 +312,8 @@ nsEditingSession::SetupEditorOnWindow(mozIDOMWindowProxy* aWindow) {
     doc->FlushPendingNotifications(mozilla::FlushType::Frames);
     if (mMakeWholeDocumentEditable) {
       doc->SetEditableFlag(true);
-      nsCOMPtr htmlDocument = do_QueryInterface(doc);
-      if (htmlDocument) {
-        // Enable usage of the execCommand API
-        htmlDocument->SetEditingState(nsIHTMLDocument::eDesignMode);
-      }
+      // Enable usage of the execCommand API
+      doc->SetEditingState(Document::EditingState::eDesignMode);
     }
   }
   bool needHTMLController = false;
@@ -504,8 +501,7 @@ nsEditingSession::TearDownEditorOnWindow(mozIDOMWindowProxy* aWindow) {
   auto* window = nsPIDOMWindowOuter::From(aWindow);
 
   RefPtr doc = window->GetDoc();
-  nsCOMPtr htmlDoc = do_QueryInterface(doc);
-  bool stopEditing = htmlDoc && htmlDoc->IsEditingOn();
+  bool stopEditing = doc && doc->IsEditingOn();
   if (stopEditing) {
     RemoveWebProgressListener(window);
   }
@@ -515,7 +511,7 @@ nsEditingSession::TearDownEditorOnWindow(mozIDOMWindowProxy* aWindow) {
 
   RefPtr htmlEditor = docShell->GetHTMLEditor();
   if (stopEditing) {
-    htmlDoc->TearingDownEditor();
+    doc->TearingDownEditor();
   }
 
   if (mComposerCommandsUpdater && htmlEditor) {
@@ -537,10 +533,7 @@ nsEditingSession::TearDownEditorOnWindow(mozIDOMWindowProxy* aWindow) {
 
     if (mMakeWholeDocumentEditable) {
       doc->SetEditableFlag(false);
-      nsCOMPtr htmlDocument = do_QueryInterface(doc);
-      if (htmlDocument) {
-        htmlDocument->SetEditingState(nsIHTMLDocument::eOff);
-      }
+      doc->SetEditingState(Document::EditingState::eOff);
     }
   }
 
diff --git a/editor/libeditor/EditorBase.cpp b/editor/libeditor/EditorBase.cpp
index 111b1908b084..38c8de17044f 100644
--- a/editor/libeditor/EditorBase.cpp
+++ b/editor/libeditor/EditorBase.cpp
@@ -448,8 +448,7 @@ bool EditorBase::GetDesiredSpellCheckState() {
     // Some of the page content might be editable and some not, if spellcheck=
     // is explicitly set anywhere, so if there's anything editable on the page,
     // return true and let the spellchecker figure it out.
-    nsCOMPtr doc =
-        do_QueryInterface(content->GetComposedDoc());
+    Document* doc = content->GetComposedDoc();
     return doc && doc->IsEditingOn();
   }
 
diff --git a/editor/libeditor/HTMLEditRules.cpp b/editor/libeditor/HTMLEditRules.cpp
index e1ce4b16d37d..5d282476cbe6 100644
--- a/editor/libeditor/HTMLEditRules.cpp
+++ b/editor/libeditor/HTMLEditRules.cpp
@@ -383,12 +383,12 @@ nsresult HTMLEditRules::BeforeEdit(EditSubAction aEditSubAction,
     }
 
     // Stabilize the document against contenteditable count changes
-    nsHTMLDocument* htmlDoc = HTMLEditorRef().GetHTMLDocument();
-    if (NS_WARN_IF(!htmlDoc)) {
+    Document* doc = HTMLEditorRef().GetDocument();
+    if (NS_WARN_IF(!doc)) {
       return NS_ERROR_FAILURE;
     }
-    if (htmlDoc->GetEditingState() == nsIHTMLDocument::eContentEditable) {
-      htmlDoc->ChangeContentEditableCount(nullptr, +1);
+    if (doc->GetEditingState() == Document::EditingState::eContentEditable) {
+      doc->ChangeContentEditableCount(nullptr, +1);
       mRestoreContentEditableCount = true;
     }
 
@@ -432,12 +432,12 @@ nsresult HTMLEditRules::AfterEdit(EditSubAction aEditSubAction,
 
     // Reset the contenteditable count to its previous value
     if (mRestoreContentEditableCount) {
-      nsHTMLDocument* htmlDoc = HTMLEditorRef().GetHTMLDocument();
-      if (NS_WARN_IF(!htmlDoc)) {
+      Document* doc = HTMLEditorRef().GetDocument();
+      if (NS_WARN_IF(!doc)) {
         return NS_ERROR_FAILURE;
       }
-      if (htmlDoc->GetEditingState() == nsIHTMLDocument::eContentEditable) {
-        htmlDoc->ChangeContentEditableCount(nullptr, -1);
+      if (doc->GetEditingState() == Document::EditingState::eContentEditable) {
+        doc->ChangeContentEditableCount(nullptr, -1);
       }
       mRestoreContentEditableCount = false;
     }
diff --git a/layout/base/PresShell.h b/layout/base/PresShell.h
index aba7d6a02b06..c83b3cc4d32a 100644
--- a/layout/base/PresShell.h
+++ b/layout/base/PresShell.h
@@ -1191,7 +1191,7 @@ class PresShell final : public nsStubDocumentObserver,
   void SetKeyPressEventModel(uint16_t aKeyPressEventModel) {
     mForceUseLegacyKeyCodeAndCharCodeValues |=
         aKeyPressEventModel ==
-        dom::HTMLDocument_Binding::KEYPRESS_EVENT_MODEL_SPLIT;
+        dom::Document_Binding::KEYPRESS_EVENT_MODEL_SPLIT;
   }
 
   bool AddRefreshObserver(nsARefreshObserver* aObserver, FlushType aFlushType);
diff --git a/testing/web-platform/meta/html/dom/interfaces.https.html.ini b/testing/web-platform/meta/html/dom/interfaces.https.html.ini
index 0caf74d4f695..4ecb145de7a8 100644
--- a/testing/web-platform/meta/html/dom/interfaces.https.html.ini
+++ b/testing/web-platform/meta/html/dom/interfaces.https.html.ini
@@ -1,26 +1,5 @@
 prefs: [dom.security.featurePolicy.enabled:true]
 [interfaces.https.html?include=(Document|Window)]
-  [Document interface: attribute designMode]
-    expected: FAIL
-
-  [Document interface: operation execCommand(DOMString, boolean, DOMString)]
-    expected: FAIL
-
-  [Document interface: operation queryCommandEnabled(DOMString)]
-    expected: FAIL
-
-  [Document interface: operation queryCommandIndeterm(DOMString)]
-    expected: FAIL
-
-  [Document interface: operation queryCommandState(DOMString)]
-    expected: FAIL
-
-  [Document interface: operation queryCommandSupported(DOMString)]
-    expected: FAIL
-
-  [Document interface: operation queryCommandValue(DOMString)]
-    expected: FAIL
-
   [Document interface: attribute fgColor]
     expected: FAIL
 
@@ -66,45 +45,6 @@ prefs: [dom.security.featurePolicy.enabled:true]
   [Document interface: iframe.contentDocument must inherit property "onsecuritypolicyviolation" with the proper type]
     expected: FAIL
 
-  [Document interface: new Document() must inherit property "designMode" with the proper type]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "execCommand(DOMString, boolean, DOMString)" with the proper type]
-    expected: FAIL
-
-  [Document interface: calling execCommand(DOMString, boolean, DOMString) on new Document() with too few arguments must throw TypeError]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "queryCommandEnabled(DOMString)" with the proper type]
-    expected: FAIL
-
-  [Document interface: calling queryCommandEnabled(DOMString) on new Document() with too few arguments must throw TypeError]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "queryCommandIndeterm(DOMString)" with the proper type]
-    expected: FAIL
-
-  [Document interface: calling queryCommandIndeterm(DOMString) on new Document() with too few arguments must throw TypeError]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "queryCommandState(DOMString)" with the proper type]
-    expected: FAIL
-
-  [Document interface: calling queryCommandState(DOMString) on new Document() with too few arguments must throw TypeError]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "queryCommandSupported(DOMString)" with the proper type]
-    expected: FAIL
-
-  [Document interface: calling queryCommandSupported(DOMString) on new Document() with too few arguments must throw TypeError]
-    expected: FAIL
-
-  [Document interface: new Document() must inherit property "queryCommandValue(DOMString)" with the proper type]
-    expected: FAIL
-
-  [Document interface: calling queryCommandValue(DOMString) on new Document() with too few arguments must throw TypeError]
-    expected: FAIL
-
   [Document interface: new Document() must inherit property "fgColor" with the proper type]
     expected: FAIL
 
@@ -138,45 +78,6 @@ prefs: [dom.security.featurePolicy.enabled:true]
   [Document interface: new Document() must inherit property "onsecuritypolicyviolation" with the proper type]
     expected: FAIL
 
-  [Document interface: document.implementation.createDocument(null, "", null) must inherit property "designMode" with the proper type]
-    expected: FAIL
-
-  [Document interface: document.implementation.createDocument(null, "", null) must inherit property "execCommand(DOMString, boolean, DOMString)" with the proper type]
-    expected: FAIL
-
-  [Document interface: calling execCommand(DOMString, boolean, DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError]
-    expected: FAIL
-
-  [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandEnabled(DOMString)" with the proper type]
-    expected: FAIL
-
-  [Document interface: calling queryCommandEnabled(DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError]
-    expected: FAIL
-
-  [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandIndeterm(DOMString)" with the proper type]
-    expected: FAIL
-
-  [Document interface: calling queryCommandIndeterm(DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError]
-    expected: FAIL
-
-  [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandState(DOMString)" with the proper type]
-    expected: FAIL
-
-  [Document interface: calling queryCommandState(DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError]
-    expected: FAIL
-
-  [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandSupported(DOMString)" with the proper type]
-    expected: FAIL
-
-  [Document interface: calling queryCommandSupported(DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError]
-    expected: FAIL
-
-  [Document interface: document.implementation.createDocument(null, "", null) must inherit property "queryCommandValue(DOMString)" with the proper type]
-    expected: FAIL
-
-  [Document interface: calling queryCommandValue(DOMString) on document.implementation.createDocument(null, "", null) with too few arguments must throw TypeError]
-    expected: FAIL
-
   [Document interface: document.implementation.createDocument(null, "", null) must inherit property "fgColor" with the proper type]
     expected: FAIL
 
diff --git a/toolkit/actors/KeyPressEventModelCheckerChild.jsm b/toolkit/actors/KeyPressEventModelCheckerChild.jsm
index cebf132214d9..8252b6f7206b 100644
--- a/toolkit/actors/KeyPressEventModelCheckerChild.jsm
+++ b/toolkit/actors/KeyPressEventModelCheckerChild.jsm
@@ -16,7 +16,7 @@ class KeyPressEventModelCheckerChild extends ActorChild {
   // Currently, the event is dispatched only when the document becomes editable
   // because of contenteditable.  If you need to add new editor which is in
   // designMode, you need to change MaybeDispatchCheckKeyPressEventModelEvent()
-  // of nsHTMLDocument.
+  // of Document.
   handleEvent(aEvent) {
     if (!AppConstants.DEBUG) {
       // Stop propagation in opt build to save the propagation cost.
@@ -25,13 +25,13 @@ class KeyPressEventModelCheckerChild extends ActorChild {
       aEvent.stopImmediatePropagation();
     }
 
-    // Currently, even if we set HTMLDocument.KEYPRESS_EVENT_MODEL_CONFLATED
+    // Currently, even if we set Document.KEYPRESS_EVENT_MODEL_CONFLATED
     // here, conflated model isn't used forcibly.  If you need it, you need
     // to change WidgetKeyboardEvent, dom::KeyboardEvent and PresShell.
-    let model = HTMLDocument.KEYPRESS_EVENT_MODEL_DEFAULT;
+    let model = Document.KEYPRESS_EVENT_MODEL_DEFAULT;
     if (this._isOldOfficeOnlineServer(aEvent.target) ||
         this._isOldConfluence(aEvent.target.ownerGlobal)) {
-      model = HTMLDocument.KEYPRESS_EVENT_MODEL_SPLIT;
+      model = Document.KEYPRESS_EVENT_MODEL_SPLIT;
     }
     aEvent.target.setKeyPressEventModel(model);
   }

From df65fc2dfcb6a5421e22ee7d5686b061b7a08e16 Mon Sep 17 00:00:00 2001
From: Ehsan Akhgari 
Date: Fri, 31 May 2019 01:38:58 +0000
Subject: [PATCH 08/47] Bug 1415270 - Part 2: Enable editing support for
 non-HTML documents as well; r=masayuki

Differential Revision: https://phabricator.services.mozilla.com/D32912

--HG--
extra : moz-landing-system : lando
---
 dom/base/Document.cpp                | 16 +++++++++++++---
 editor/composer/nsEditingSession.cpp |  9 ++++++++-
 2 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/dom/base/Document.cpp b/dom/base/Document.cpp
index 236c6777e9a5..204eb73b96c7 100644
--- a/dom/base/Document.cpp
+++ b/dom/base/Document.cpp
@@ -4311,7 +4311,9 @@ static void NotifyEditableStateChange(nsINode* aNode, Document* aDocument) {
 void Document::TearingDownEditor() {
   if (IsEditingOn()) {
     mEditingState = EditingState::eTearingDown;
-    RemoveContentEditableStyleSheets();
+    if (IsHTMLOrXHTML()) {
+      RemoveContentEditableStyleSheets();
+    }
   }
 }
 
@@ -4462,7 +4464,9 @@ nsresult Document::EditingStateChanged() {
     // Before making this window editable, we need to modify UA style sheet
     // because new style may change whether focused element will be focusable
     // or not.
-    AddContentEditableStyleSheetsToStyleSet(designMode);
+    if (IsHTMLOrXHTML()) {
+      AddContentEditableStyleSheetsToStyleSet(designMode);
+    }
 
     // Should we update the editable state of all the nodes in the document? We
     // need to do this when the designMode value changes, as that overrides
@@ -4510,7 +4514,13 @@ nsresult Document::EditingStateChanged() {
     // XXX Need to call TearDownEditorOnWindow for all failures.
     htmlEditor = docshell->GetHTMLEditor();
     if (!htmlEditor) {
-      return NS_ERROR_FAILURE;
+      // Return NS_OK even though we've failed to create an editor here.  This
+      // is so that the setter of designMode on non-HTML documents does not
+      // fail.
+      // This is OK to do because in nsEditingSession::SetupEditorOnWindow() we
+      // would detect that we can't support the mimetype if appropriate and
+      // would fall onto the eEditorErrorCantEditMimeType path.
+      return NS_OK;
     }
 
     // If we're entering the design mode, put the selection at the beginning of
diff --git a/editor/composer/nsEditingSession.cpp b/editor/composer/nsEditingSession.cpp
index 066e2c5127d9..4c2051561220 100644
--- a/editor/composer/nsEditingSession.cpp
+++ b/editor/composer/nsEditingSession.cpp
@@ -355,7 +355,14 @@ nsEditingSession::SetupEditorOnWindow(mozIDOMWindowProxy* aWindow) {
   if (mEditorStatus != eEditorCreationInProgress) {
     RefPtr updater = mComposerCommandsUpdater;
     updater->NotifyDocumentCreated();
-    return NS_ERROR_FAILURE;
+
+    // At this point we have made a final decision that we don't support
+    // editing the current document.  This is an internal failure state, but
+    // we return NS_OK to avoid throwing an exception from the designMode
+    // setter for web compatibility.  The document editing APIs will tell the
+    // developer if editing has been disabled because we're in a document type
+    // that doesn't support editing.
+    return NS_OK;
   }
 
   // Create editor and do other things

From 7a3585c49f439f6b30aaf1b99aa532a355c31aac Mon Sep 17 00:00:00 2001
From: Ehsan Akhgari 
Date: Thu, 30 May 2019 17:14:05 +0000
Subject: [PATCH 09/47] Bug 1415270 - Part 3: Prevent the editing APIs from
 being called on non-HTML documents; r=masayuki

This is similar to this Chromium change:
https://codereview.chromium.org/1155353002

The editing spec doesn't mention editing non-HTML documents, and historically
this is only a feature that WebKit has supported.  Supporting this feature
increases the attack surface of the browser without a clear benefit, so it
seems like a good idea to converge on this behaviour.

Differential Revision: https://phabricator.services.mozilla.com/D32913

--HG--
rename : testing/web-platform/tests/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/user-interaction-editing-designMode.html => testing/web-platform/tests/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/user-interaction-editing-designMode-xml.xml
extra : moz-landing-system : lando
---
 dom/base/Document.cpp                         | 38 ++++++++++++++++++-
 dom/base/Document.h                           |  3 +-
 dom/base/domerr.msg                           |  8 ++++
 dom/webidl/Document.webidl                    |  2 +-
 .../editing/other/non-html-document.html      | 24 ++++++++++++
 ...ser-interaction-editing-designMode-svg.svg | 34 +++++++++++++++++
 ...ser-interaction-editing-designMode-xml.xml | 32 ++++++++++++++++
 .../user-interaction-editing-designMode.html  |  6 +++
 xpcom/base/ErrorList.py                       |  8 ++++
 9 files changed, 152 insertions(+), 3 deletions(-)
 create mode 100644 testing/web-platform/tests/editing/other/non-html-document.html
 create mode 100644 testing/web-platform/tests/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/user-interaction-editing-designMode-svg.svg
 create mode 100644 testing/web-platform/tests/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/user-interaction-editing-designMode-xml.xml

diff --git a/dom/base/Document.cpp b/dom/base/Document.cpp
index 204eb73b96c7..6bc723a671d6 100644
--- a/dom/base/Document.cpp
+++ b/dom/base/Document.cpp
@@ -3916,6 +3916,12 @@ static bool ConvertToMidasInternalCommand(const nsAString& inCommandID,
 bool Document::ExecCommand(const nsAString& commandID, bool doShowUI,
                            const nsAString& value,
                            nsIPrincipal& aSubjectPrincipal, ErrorResult& rv) {
+  // Only allow on HTML documents.
+  if (!IsHTMLOrXHTML()) {
+    rv.Throw(NS_ERROR_DOM_INVALID_STATE_DOCUMENT_EXEC_COMMAND);
+    return false;
+  }
+
   //  for optional parameters see dom/src/base/nsHistory.cpp: HistoryImpl::Go()
   //  this might add some ugly JS dependencies?
 
@@ -4046,6 +4052,12 @@ bool Document::ExecCommand(const nsAString& commandID, bool doShowUI,
 bool Document::QueryCommandEnabled(const nsAString& commandID,
                                    nsIPrincipal& aSubjectPrincipal,
                                    ErrorResult& rv) {
+  // Only allow on HTML documents.
+  if (!IsHTMLOrXHTML()) {
+    rv.Throw(NS_ERROR_DOM_INVALID_STATE_DOCUMENT_QUERY_COMMAND_ENABLED);
+    return false;
+  }
+
   nsAutoCString cmdToDispatch;
   if (!ConvertToMidasInternalCommand(commandID, cmdToDispatch)) {
     return false;
@@ -4087,6 +4099,12 @@ bool Document::QueryCommandEnabled(const nsAString& commandID,
 
 bool Document::QueryCommandIndeterm(const nsAString& commandID,
                                     ErrorResult& rv) {
+  // Only allow on HTML documents.
+  if (!IsHTMLOrXHTML()) {
+    rv.Throw(NS_ERROR_DOM_INVALID_STATE_DOCUMENT_QUERY_COMMAND_INDETERM);
+    return false;
+  }
+
   nsAutoCString cmdToDispatch;
   if (!ConvertToMidasInternalCommand(commandID, cmdToDispatch)) {
     return false;
@@ -4123,6 +4141,12 @@ bool Document::QueryCommandIndeterm(const nsAString& commandID,
 }
 
 bool Document::QueryCommandState(const nsAString& commandID, ErrorResult& rv) {
+  // Only allow on HTML documents.
+  if (!IsHTMLOrXHTML()) {
+    rv.Throw(NS_ERROR_DOM_INVALID_STATE_DOCUMENT_QUERY_COMMAND_STATE);
+    return false;
+  }
+
   nsAutoCString cmdToDispatch, paramToCheck;
   bool dummy, dummy2;
   if (!ConvertToMidasInternalCommand(commandID, commandID, cmdToDispatch,
@@ -4180,7 +4204,13 @@ bool Document::QueryCommandState(const nsAString& commandID, ErrorResult& rv) {
 }
 
 bool Document::QueryCommandSupported(const nsAString& commandID,
-                                     CallerType aCallerType) {
+                                     CallerType aCallerType, ErrorResult& rv) {
+  // Only allow on HTML documents.
+  if (!IsHTMLOrXHTML()) {
+    rv.Throw(NS_ERROR_DOM_INVALID_STATE_DOCUMENT_QUERY_COMMAND_SUPPORTED);
+    return false;
+  }
+
   // Gecko technically supports all the clipboard commands including
   // cut/copy/paste, but non-privileged content will be unable to call
   // paste, and depending on the pref "dom.allow_cut_copy", cut and copy
@@ -4211,6 +4241,12 @@ void Document::QueryCommandValue(const nsAString& commandID, nsAString& aValue,
                                  ErrorResult& rv) {
   aValue.Truncate();
 
+  // Only allow on HTML documents.
+  if (!IsHTMLOrXHTML()) {
+    rv.Throw(NS_ERROR_DOM_INVALID_STATE_DOCUMENT_QUERY_COMMAND_VALUE);
+    return;
+  }
+
   nsAutoCString cmdToDispatch, paramStr;
   if (!ConvertToMidasInternalCommand(commandID, cmdToDispatch)) {
     // Return empty string
diff --git a/dom/base/Document.h b/dom/base/Document.h
index a6db584513f4..d0b6ebadeca9 100644
--- a/dom/base/Document.h
+++ b/dom/base/Document.h
@@ -3438,7 +3438,8 @@ class Document : public nsINode,
                             mozilla::ErrorResult& rv);
   bool QueryCommandState(const nsAString& aCommandID, mozilla::ErrorResult& rv);
   bool QueryCommandSupported(const nsAString& aCommandID,
-                             mozilla::dom::CallerType aCallerType);
+                             mozilla::dom::CallerType aCallerType,
+                             mozilla::ErrorResult& rv);
   MOZ_CAN_RUN_SCRIPT
   void QueryCommandValue(const nsAString& aCommandID, nsAString& aValue,
                          mozilla::ErrorResult& rv);
diff --git a/dom/base/domerr.msg b/dom/base/domerr.msg
index 078a1362efa4..5dc874bbb356 100644
--- a/dom/base/domerr.msg
+++ b/dom/base/domerr.msg
@@ -168,3 +168,11 @@ DOM4_MSG_DEF(InvalidAccessError, "synchronous XMLHttpRequests do not support tim
 DOM4_MSG_DEF(EncodingError, "Node bound to inactive document.", NS_ERROR_DOM_IMAGE_INACTIVE_DOCUMENT)
 DOM4_MSG_DEF(EncodingError, "Invalid image request.", NS_ERROR_DOM_IMAGE_INVALID_REQUEST)
 DOM4_MSG_DEF(EncodingError, "Invalid encoded image data.", NS_ERROR_DOM_IMAGE_BROKEN)
+
+/* Editing command errors. */
+DOM4_MSG_DEF(InvalidStateError, "execCommand is only supported on HTML documents.", NS_ERROR_DOM_INVALID_STATE_DOCUMENT_EXEC_COMMAND)
+DOM4_MSG_DEF(InvalidStateError, "queryCommandEnabled is only supported on HTML documents.", NS_ERROR_DOM_INVALID_STATE_DOCUMENT_QUERY_COMMAND_ENABLED)
+DOM4_MSG_DEF(InvalidStateError, "queryCommandIndeterm is only supported on HTML documents.", NS_ERROR_DOM_INVALID_STATE_DOCUMENT_QUERY_COMMAND_INDETERM)
+DOM4_MSG_DEF(InvalidStateError, "queryCommandState is only supported on HTML documents.", NS_ERROR_DOM_INVALID_STATE_DOCUMENT_QUERY_COMMAND_STATE)
+DOM4_MSG_DEF(InvalidStateError, "queryCommandSupported is only supported on HTML documents.", NS_ERROR_DOM_INVALID_STATE_DOCUMENT_QUERY_COMMAND_SUPPORTED)
+DOM4_MSG_DEF(InvalidStateError, "queryCommandValue is only supported on HTML documents.", NS_ERROR_DOM_INVALID_STATE_DOCUMENT_QUERY_COMMAND_VALUE)
diff --git a/dom/webidl/Document.webidl b/dom/webidl/Document.webidl
index 1b85b89c97af..2f811e33a6be 100644
--- a/dom/webidl/Document.webidl
+++ b/dom/webidl/Document.webidl
@@ -171,7 +171,7 @@ partial interface Document {
   boolean queryCommandIndeterm(DOMString commandId);
   [Throws]
   boolean queryCommandState(DOMString commandId);
-  [NeedsCallerType]
+  [Throws, NeedsCallerType]
   boolean queryCommandSupported(DOMString commandId);
   [Throws]
   DOMString queryCommandValue(DOMString commandId);
diff --git a/testing/web-platform/tests/editing/other/non-html-document.html b/testing/web-platform/tests/editing/other/non-html-document.html
new file mode 100644
index 000000000000..5c4786e2fc16
--- /dev/null
+++ b/testing/web-platform/tests/editing/other/non-html-document.html
@@ -0,0 +1,24 @@
+
+
+Non-HTML document tests
+
+
+
diff --git a/testing/web-platform/tests/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/user-interaction-editing-designMode-svg.svg b/testing/web-platform/tests/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/user-interaction-editing-designMode-svg.svg
new file mode 100644
index 000000000000..6fb8a0544813
--- /dev/null
+++ b/testing/web-platform/tests/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/user-interaction-editing-designMode-svg.svg
@@ -0,0 +1,34 @@
+
+
+ Editing: designMode attribute test
+ 
+  
+  
+  
+  
+  
+ + + + +
diff --git a/testing/web-platform/tests/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/user-interaction-editing-designMode-xml.xml b/testing/web-platform/tests/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/user-interaction-editing-designMode-xml.xml new file mode 100644 index 000000000000..ea02ecdfd39e --- /dev/null +++ b/testing/web-platform/tests/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/user-interaction-editing-designMode-xml.xml @@ -0,0 +1,32 @@ + + + + Editing: designMode attribute test + + + + +
+ + + + + diff --git a/testing/web-platform/tests/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/user-interaction-editing-designMode.html b/testing/web-platform/tests/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/user-interaction-editing-designMode.html index f73ea73260e3..79d2dc8ba0d0 100644 --- a/testing/web-platform/tests/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/user-interaction-editing-designMode.html +++ b/testing/web-platform/tests/html/editing/editing-0/making-entire-documents-editable-the-designmode-idl-attribute/user-interaction-editing-designMode.html @@ -12,14 +12,20 @@ diff --git a/xpcom/base/ErrorList.py b/xpcom/base/ErrorList.py index a11cc7f79fc3..ee7e8c5ca1ab 100755 --- a/xpcom/base/ErrorList.py +++ b/xpcom/base/ErrorList.py @@ -647,6 +647,14 @@ with modules["DOM"]: errors["NS_ERROR_DOM_IMAGE_INVALID_REQUEST"] = FAILURE(1028) errors["NS_ERROR_DOM_IMAGE_BROKEN"] = FAILURE(1029) + # Editing command errors. + errors["NS_ERROR_DOM_INVALID_STATE_DOCUMENT_EXEC_COMMAND"] = FAILURE(1030) + errors["NS_ERROR_DOM_INVALID_STATE_DOCUMENT_QUERY_COMMAND_ENABLED"] = FAILURE(1031) + errors["NS_ERROR_DOM_INVALID_STATE_DOCUMENT_QUERY_COMMAND_INDETERM"] = FAILURE(1032) + errors["NS_ERROR_DOM_INVALID_STATE_DOCUMENT_QUERY_COMMAND_STATE"] = FAILURE(1033) + errors["NS_ERROR_DOM_INVALID_STATE_DOCUMENT_QUERY_COMMAND_SUPPORTED"] = FAILURE(1034) + errors["NS_ERROR_DOM_INVALID_STATE_DOCUMENT_QUERY_COMMAND_VALUE"] = FAILURE(1035) + # May be used to indicate when e.g. setting a property value didn't # actually change the value, like for obj.foo = "bar"; obj.foo = "bar"; # the second assignment throws NS_SUCCESS_DOM_NO_OPERATION. From 5a3296d55ad483f99109e78e9933ae147e876d02 Mon Sep 17 00:00:00 2001 From: Dorel Luca Date: Fri, 31 May 2019 17:24:43 +0300 Subject: [PATCH 10/47] Backed out changeset 910f7703f9f3 (bug 1555846) for Build bustages. CLOSED TREE --- netwerk/cookie/nsCookieService.cpp | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/netwerk/cookie/nsCookieService.cpp b/netwerk/cookie/nsCookieService.cpp index 8dfff8c797a5..a2e6e0f56950 100644 --- a/netwerk/cookie/nsCookieService.cpp +++ b/netwerk/cookie/nsCookieService.cpp @@ -3958,14 +3958,7 @@ CookieStatus nsCookieService::CheckPrefs( // access to the first-party cookie jar. if (aIsForeign && aIsTrackingResource && !aFirstPartyStorageAccessGranted && aCookieSettings->GetRejectThirdPartyTrackers()) { - // Explicitly pass nsIWebProgressListener::STATE_COOKIES_BLOCKED_TRACKER - // here to ensure that we are testing the partitioning configuration only - // for the nsICookieService::BEHAVIOR_REJECT_TRACKER configuration. - // When partitioning for BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN, we - // don't want to give a free pass to tracker cookies here! - if (StoragePartitioningEnabled( - nsIWebProgressListener::STATE_COOKIES_BLOCKED_TRACKER, - aCookieSettings)) { + if (StoragePartitioningEnabled(aInputRejectedReason, aCookieSettings)) { MOZ_ASSERT(!aOriginAttrs.mFirstPartyDomain.IsEmpty(), "We must have a StoragePrincipal here!"); return STATUS_ACCEPTED; From e942ea78f1a58c44575d71c27da134a8f320a162 Mon Sep 17 00:00:00 2001 From: Kartikaya Gupta Date: Fri, 31 May 2019 14:43:55 +0000 Subject: [PATCH 11/47] Bug 1555956 - Disable double buffering on non-Nightly. r=jrmuizel Differential Revision: https://phabricator.services.mozilla.com/D33270 --HG-- extra : moz-landing-system : lando --- modules/libpref/init/all.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/libpref/init/all.js b/modules/libpref/init/all.js index 614c9739ed80..6ea3efcbefe0 100644 --- a/modules/libpref/init/all.js +++ b/modules/libpref/init/all.js @@ -5091,7 +5091,11 @@ pref("gfx.direct3d11.break-on-error", false); // Prefer flipping between two buffers over copying from our back buffer // to the OS. +#ifdef NIGHTLY_BUILD pref("gfx.direct3d11.use-double-buffering", true); +#else +pref("gfx.direct3d11.use-double-buffering", false); +#endif pref("layers.prefer-opengl", false); #endif From 19258bfbb4b00df8219eb6e8d1458398e09854b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emilio=20Cobos=20=C3=81lvarez?= Date: Fri, 31 May 2019 14:48:22 +0000 Subject: [PATCH 12/47] Bug 1554716 - Remove nsStyleColor moving the color property to nsStyleText. r=jfkthame I think this is a good change regardless of other discussion in bug 1552587. If we decide to move `mColor` to the top-level of the struct that can be done separately. Differential Revision: https://phabricator.services.mozilla.com/D32726 --HG-- extra : moz-landing-system : lando --- accessible/base/TextAttrs.cpp | 6 +-- .../windows/ia2/ia2AccessibleComponent.cpp | 2 +- .../shared/css/generated/properties-db.js | 2 +- dom/canvas/CanvasRenderingContext2D.cpp | 2 +- editor/libeditor/HTMLAbsPositionEditor.cpp | 2 +- layout/forms/nsComboboxControlFrame.cpp | 2 +- layout/generic/nsBulletFrame.cpp | 2 +- layout/generic/nsCanvasFrame.cpp | 4 +- layout/generic/nsImageFrame.cpp | 2 +- layout/painting/nsDisplayList.cpp | 2 +- layout/style/ComputedStyle.cpp | 1 - layout/style/StyleColor.cpp | 4 +- layout/style/nsCSSVisitedDependentPropList.h | 4 +- layout/style/nsStyleStruct.cpp | 41 ++++++------------- layout/style/nsStyleStruct.h | 17 +------- layout/style/nsStyleStructList.h | 1 - layout/svg/nsFilterInstance.cpp | 2 +- layout/xul/nsTextBoxFrame.cpp | 4 +- layout/xul/tree/nsTreeBodyFrame.cpp | 4 +- servo/components/style/matching.rs | 2 +- servo/components/style/properties/build.py | 1 - .../components/style/properties/gecko.mako.rs | 3 -- .../style/properties/longhands/color.mako.rs | 19 --------- .../longhands/inherited_text.mako.rs | 10 +++++ .../style/properties/properties.mako.rs | 2 +- .../style/values/specified/color.rs | 2 +- servo/ports/geckolib/tests/size_of.rs | 2 +- 27 files changed, 50 insertions(+), 95 deletions(-) delete mode 100644 servo/components/style/properties/longhands/color.mako.rs diff --git a/accessible/base/TextAttrs.cpp b/accessible/base/TextAttrs.cpp index 0c29132ee0dd..fe1a00cbe7a7 100644 --- a/accessible/base/TextAttrs.cpp +++ b/accessible/base/TextAttrs.cpp @@ -348,11 +348,11 @@ bool TextAttrsMgr::BGColorTextAttr::GetColor(nsIFrame* aFrame, TextAttrsMgr::ColorTextAttr::ColorTextAttr(nsIFrame* aRootFrame, nsIFrame* aFrame) : TTextAttr(!aFrame) { - mRootNativeValue = aRootFrame->StyleColor()->mColor.ToColor(); + mRootNativeValue = aRootFrame->StyleText()->mColor.ToColor(); mIsRootDefined = true; if (aFrame) { - mNativeValue = aFrame->StyleColor()->mColor.ToColor(); + mNativeValue = aFrame->StyleText()->mColor.ToColor(); mIsDefined = true; } } @@ -362,7 +362,7 @@ bool TextAttrsMgr::ColorTextAttr::GetValueFor(Accessible* aAccessible, nsIContent* elm = nsCoreUtils::GetDOMElementFor(aAccessible->GetContent()); if (elm) { if (nsIFrame* frame = elm->GetPrimaryFrame()) { - *aValue = frame->StyleColor()->mColor.ToColor(); + *aValue = frame->StyleText()->mColor.ToColor(); return true; } } diff --git a/accessible/windows/ia2/ia2AccessibleComponent.cpp b/accessible/windows/ia2/ia2AccessibleComponent.cpp index 2fe360be2289..9e6996cc12ac 100644 --- a/accessible/windows/ia2/ia2AccessibleComponent.cpp +++ b/accessible/windows/ia2/ia2AccessibleComponent.cpp @@ -79,7 +79,7 @@ ia2AccessibleComponent::get_foreground(IA2Color* aForeground) { if (acc->IsDefunct()) return CO_E_OBJNOTCONNECTED; nsIFrame* frame = acc->GetFrame(); - if (frame) *aForeground = frame->StyleColor()->mColor.ToColor(); + if (frame) *aForeground = frame->StyleText()->mColor.ToColor(); return S_OK; } diff --git a/devtools/shared/css/generated/properties-db.js b/devtools/shared/css/generated/properties-db.js index a0724b47d1cc..35915d3638a2 100644 --- a/devtools/shared/css/generated/properties-db.js +++ b/devtools/shared/css/generated/properties-db.js @@ -3117,7 +3117,6 @@ exports.CSS_PROPERTIES = { "shape-outside", "touch-action", "-webkit-line-clamp", - "color", "column-width", "column-count", "column-fill", @@ -3163,6 +3162,7 @@ exports.CSS_PROPERTIES = { "empty-cells", "caption-side", "border-spacing", + "color", "line-height", "text-transform", "hyphens", diff --git a/dom/canvas/CanvasRenderingContext2D.cpp b/dom/canvas/CanvasRenderingContext2D.cpp index 2d3f317c1f0b..7e1533e48e8b 100644 --- a/dom/canvas/CanvasRenderingContext2D.cpp +++ b/dom/canvas/CanvasRenderingContext2D.cpp @@ -1001,7 +1001,7 @@ bool CanvasRenderingContext2D::ParseColor(const nsAString& aString, RefPtr canvasStyle = nsComputedDOMStyle::GetComputedStyle(mCanvasElement, nullptr); if (canvasStyle) { - *aColor = canvasStyle->StyleColor()->mColor.ToColor(); + *aColor = canvasStyle->StyleText()->mColor.ToColor(); } // Beware that the presShell could be gone here. } diff --git a/editor/libeditor/HTMLAbsPositionEditor.cpp b/editor/libeditor/HTMLAbsPositionEditor.cpp index 04ae7b6419ca..4ca8c7148d38 100644 --- a/editor/libeditor/HTMLAbsPositionEditor.cpp +++ b/editor/libeditor/HTMLAbsPositionEditor.cpp @@ -629,7 +629,7 @@ nsresult HTMLEditor::GetTemporaryStyleForFocusedPositionedElement( const uint8_t kBlackBgTrigger = 0xd0; - const auto& color = style->StyleColor()->mColor; + const auto& color = style->StyleText()->mColor; if (color.red >= kBlackBgTrigger && color.green >= kBlackBgTrigger && color.blue >= kBlackBgTrigger) { aReturn.AssignLiteral("black"); diff --git a/layout/forms/nsComboboxControlFrame.cpp b/layout/forms/nsComboboxControlFrame.cpp index af846035ee86..162fe7b643bc 100644 --- a/layout/forms/nsComboboxControlFrame.cpp +++ b/layout/forms/nsComboboxControlFrame.cpp @@ -1494,7 +1494,7 @@ void nsComboboxControlFrame::PaintFocus(DrawTarget& aDrawTarget, nsPoint aPt) { StrokeOptions strokeOptions; nsLayoutUtils::InitDashPattern(strokeOptions, StyleBorderStyle::Dotted); - ColorPattern color(ToDeviceColor(StyleColor()->mColor)); + ColorPattern color(ToDeviceColor(StyleText()->mColor)); nscoord onePixel = nsPresContext::CSSPixelsToAppUnits(1); clipRect.width -= onePixel; clipRect.height -= onePixel; diff --git a/layout/generic/nsBulletFrame.cpp b/layout/generic/nsBulletFrame.cpp index f95490197cff..6197e7a2ceb1 100644 --- a/layout/generic/nsBulletFrame.cpp +++ b/layout/generic/nsBulletFrame.cpp @@ -688,7 +688,7 @@ Maybe nsBulletFrame::CreateBulletRenderer( } } - nscolor color = nsLayoutUtils::GetColor(this, &nsStyleColor::mColor); + nscolor color = nsLayoutUtils::GetColor(this, &nsStyleText::mColor); DrawTarget* drawTarget = aRenderingContext.GetDrawTarget(); int32_t appUnitsPerDevPixel = PresContext()->AppUnitsPerDevPixel(); diff --git a/layout/generic/nsCanvasFrame.cpp b/layout/generic/nsCanvasFrame.cpp index 1547274ba0c6..361d7e79a408 100644 --- a/layout/generic/nsCanvasFrame.cpp +++ b/layout/generic/nsCanvasFrame.cpp @@ -634,9 +634,9 @@ void nsCanvasFrame::PaintFocus(DrawTarget* aDrawTarget, nsPoint aPt) { // XXX use the root frame foreground color, but should we find BODY frame // for HTML documents? nsIFrame* root = mFrames.FirstChild(); - const nsStyleColor* color = root ? root->StyleColor() : StyleColor(); + const auto* text = root ? root->StyleText() : StyleText(); nsCSSRendering::PaintFocus(PresContext(), aDrawTarget, focusRect, - color->mColor.ToColor()); + text->mColor.ToColor()); } /* virtual */ diff --git a/layout/generic/nsImageFrame.cpp b/layout/generic/nsImageFrame.cpp index f0f0f6cf94b1..0cf8cbe268be 100644 --- a/layout/generic/nsImageFrame.cpp +++ b/layout/generic/nsImageFrame.cpp @@ -1181,7 +1181,7 @@ void nsImageFrame::DisplayAltText(nsPresContext* aPresContext, const nsString& aAltText, const nsRect& aRect) { // Set font and color - aRenderingContext.SetColor(Color::FromABGR(StyleColor()->mColor.ToColor())); + aRenderingContext.SetColor(Color::FromABGR(StyleText()->mColor.ToColor())); RefPtr fm = nsLayoutUtils::GetInflatedFontMetricsForFrame(this); diff --git a/layout/painting/nsDisplayList.cpp b/layout/painting/nsDisplayList.cpp index 44878041c0d6..e4d33540c6f7 100644 --- a/layout/painting/nsDisplayList.cpp +++ b/layout/painting/nsDisplayList.cpp @@ -478,7 +478,7 @@ static void SetAnimatable(nsCSSPropertyID aProperty, // We don't support color animation on the compositor yet so that we can // resolve currentColor at this moment. nscolor foreground = - aFrame->Style()->GetVisitedDependentColor(&nsStyleColor::mColor); + aFrame->Style()->GetVisitedDependentColor(&nsStyleText::mColor); aAnimatable = aAnimationValue.GetColor(foreground); break; } diff --git a/layout/style/ComputedStyle.cpp b/layout/style/ComputedStyle.cpp index 9b2cd8268858..20d493b687f5 100644 --- a/layout/style/ComputedStyle.cpp +++ b/layout/style/ComputedStyle.cpp @@ -129,7 +129,6 @@ nsChangeHint ComputedStyle::CalcStyleDifference(const ComputedStyle& aNewStyle, DO_STRUCT_DIFFERENCE(TextReset); DO_STRUCT_DIFFERENCE(Effects); DO_STRUCT_DIFFERENCE(Background); - DO_STRUCT_DIFFERENCE(Color); #undef DO_STRUCT_DIFFERENCE #undef DO_STRUCT_DIFFERENCE_WITH_ARGS diff --git a/layout/style/StyleColor.cpp b/layout/style/StyleColor.cpp index 8149f89d605e..0c1d588a7055 100644 --- a/layout/style/StyleColor.cpp +++ b/layout/style/StyleColor.cpp @@ -77,12 +77,12 @@ nscolor StyleColor::CalcColor(const StyleRGBA& aForegroundColor) const { template <> nscolor StyleColor::CalcColor(const ComputedStyle& aStyle) const { // Common case that is numeric color, which is pure background, we - // can skip resolving StyleColor(). + // can skip resolving StyleText(). // TODO(djg): Is this optimization worth it? if (IsNumeric()) { return AsNumeric().ToColor(); } - return CalcColor(aStyle.StyleColor()->mColor); + return CalcColor(aStyle.StyleText()->mColor); } template <> diff --git a/layout/style/nsCSSVisitedDependentPropList.h b/layout/style/nsCSSVisitedDependentPropList.h index 0b3ddffcb15b..e6a688369ca5 100644 --- a/layout/style/nsCSSVisitedDependentPropList.h +++ b/layout/style/nsCSSVisitedDependentPropList.h @@ -17,10 +17,9 @@ * before including this file. * * Note that, currently, there is a restriction that all fields in a - * style struct must have the same type. + * each entry must have the same type, otherwise you need two entries. */ -STYLE_STRUCT(Color, (mColor)) STYLE_STRUCT(Background, (mBackgroundColor)) STYLE_STRUCT(Border, (mBorderTopColor, mBorderRightColor, @@ -28,6 +27,7 @@ STYLE_STRUCT(Border, (mBorderTopColor, mBorderLeftColor)) STYLE_STRUCT(Outline, (mOutlineColor)) STYLE_STRUCT(Column, (mColumnRuleColor)) +STYLE_STRUCT(Text, (mColor)) STYLE_STRUCT(Text, (mTextEmphasisColor, mWebkitTextFillColor, mWebkitTextStrokeColor)) diff --git a/layout/style/nsStyleStruct.cpp b/layout/style/nsStyleStruct.cpp index eaed776e05be..55a591730387 100644 --- a/layout/style/nsStyleStruct.cpp +++ b/layout/style/nsStyleStruct.cpp @@ -1634,32 +1634,6 @@ nsChangeHint nsStyleTableBorder::CalcDifference( } } -// -------------------- -// nsStyleColor -// - -static StyleRGBA DefaultColor(const Document& aDocument) { - return StyleRGBA::FromColor( - PreferenceSheet::PrefsFor(aDocument).mDefaultColor); -} - -nsStyleColor::nsStyleColor(const Document& aDocument) - : mColor(DefaultColor(aDocument)) { - MOZ_COUNT_CTOR(nsStyleColor); -} - -nsStyleColor::nsStyleColor(const nsStyleColor& aSource) - : mColor(aSource.mColor) { - MOZ_COUNT_CTOR(nsStyleColor); -} - -nsChangeHint nsStyleColor::CalcDifference(const nsStyleColor& aNewData) const { - if (mColor == aNewData.mColor) { - return nsChangeHint(0); - } - return nsChangeHint_RepaintFrame; -} - // -------------------- // nsStyleGradient // @@ -3554,8 +3528,14 @@ nsChangeHint nsStyleTextReset::CalcDifference( // nsStyleText // +static StyleRGBA DefaultColor(const Document& aDocument) { + return StyleRGBA::FromColor( + PreferenceSheet::PrefsFor(aDocument).mDefaultColor); +} + nsStyleText::nsStyleText(const Document& aDocument) - : mTextTransform(StyleTextTransform::None()), + : mColor(DefaultColor(aDocument)), + mTextTransform(StyleTextTransform::None()), mTextAlign(NS_STYLE_TEXT_ALIGN_START), mTextAlignLast(NS_STYLE_TEXT_ALIGN_AUTO), mTextJustify(StyleTextJustify::Auto), @@ -3588,7 +3568,8 @@ nsStyleText::nsStyleText(const Document& aDocument) } nsStyleText::nsStyleText(const nsStyleText& aSource) - : mTextTransform(aSource.mTextTransform), + : mColor(aSource.mColor), + mTextTransform(aSource.mTextTransform), mTextAlign(aSource.mTextAlign), mTextAlignLast(aSource.mTextAlignLast), mTextJustify(aSource.mTextJustify), @@ -3680,6 +3661,10 @@ nsChangeHint nsStyleText::CalcDifference(const nsStyleText& aNewData) const { return hint; } + if (mColor != aNewData.mColor) { + hint |= nsChangeHint_RepaintFrame; + } + if (mTextEmphasisColor != aNewData.mTextEmphasisColor || mWebkitTextFillColor != aNewData.mWebkitTextFillColor || mWebkitTextStrokeColor != aNewData.mWebkitTextStrokeColor) { diff --git a/layout/style/nsStyleStruct.h b/layout/style/nsStyleStruct.h index 0a68b53f7bdf..4ec15a2fbfdb 100644 --- a/layout/style/nsStyleStruct.h +++ b/layout/style/nsStyleStruct.h @@ -437,22 +437,6 @@ struct nsStyleImage { mozilla::UniquePtr mCropRect; }; -struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleColor { - explicit nsStyleColor(const mozilla::dom::Document&); - nsStyleColor(const nsStyleColor& aOther); - ~nsStyleColor() { MOZ_COUNT_DTOR(nsStyleColor); } - void TriggerImageLoads(mozilla::dom::Document&, const nsStyleColor*) {} - const static bool kHasTriggerImageLoads = false; - - nsChangeHint CalcDifference(const nsStyleColor& aNewData) const; - - // Don't add ANY members to this struct! We can achieve caching in the rule - // tree (rather than the style tree) by letting color stay by itself! -dwh - // - // FIXME(emilio): Not sure having color in its own struct is worth it anymore. - mozilla::StyleRGBA mColor; -}; - struct nsStyleImageLayers { // Indices into kBackgroundLayerTable and kMaskLayerTable enum { @@ -1283,6 +1267,7 @@ struct MOZ_NEEDS_MEMMOVABLE_MEMBERS nsStyleText { nsChangeHint CalcDifference(const nsStyleText& aNewData) const; + mozilla::StyleRGBA mColor; mozilla::StyleTextTransform mTextTransform; uint8_t mTextAlign; // NS_STYLE_TEXT_ALIGN_* uint8_t mTextAlignLast; // NS_STYLE_TEXT_ALIGN_* diff --git a/layout/style/nsStyleStructList.h b/layout/style/nsStyleStructList.h index fe620488c037..348d3bf8f107 100644 --- a/layout/style/nsStyleStructList.h +++ b/layout/style/nsStyleStructList.h @@ -33,7 +33,6 @@ // STYLE_STRUCT rather than including the file twice. STYLE_STRUCT_INHERITED(Font) -STYLE_STRUCT_INHERITED(Color) STYLE_STRUCT_INHERITED(List) STYLE_STRUCT_INHERITED(Text) STYLE_STRUCT_INHERITED(Visibility) diff --git a/layout/svg/nsFilterInstance.cpp b/layout/svg/nsFilterInstance.cpp index 3d895bb2ed73..f99097bc5f46 100644 --- a/layout/svg/nsFilterInstance.cpp +++ b/layout/svg/nsFilterInstance.cpp @@ -600,7 +600,7 @@ nsresult nsFilterInstance::BuildPrimitivesForFilter( // If we don't have a frame, use opaque black for shadows with unspecified // shadow colors. nscolor shadowFallbackColor = - mTargetFrame ? mTargetFrame->StyleColor()->mColor.ToColor() + mTargetFrame ? mTargetFrame->StyleText()->mColor.ToColor() : NS_RGB(0, 0, 0); nsCSSFilterInstance cssFilterInstance( diff --git a/layout/xul/nsTextBoxFrame.cpp b/layout/xul/nsTextBoxFrame.cpp index 0a1a432148c4..eeada69442cf 100644 --- a/layout/xul/nsTextBoxFrame.cpp +++ b/layout/xul/nsTextBoxFrame.cpp @@ -284,7 +284,7 @@ void nsDisplayXULTextBox::Paint(nsDisplayListBuilder* aBuilder, nsRect drawRect = static_cast(mFrame)->mTextDrawRect + ToReferenceFrame(); nsLayoutUtils::PaintTextShadow(mFrame, aCtx, drawRect, GetPaintRect(), - mFrame->StyleColor()->mColor.ToColor(), + mFrame->StyleText()->mColor.ToColor(), PaintTextShadowCallback, (void*)this); PaintTextToContext(aCtx, nsPoint(0, 0), nullptr); @@ -489,7 +489,7 @@ void nsTextBoxFrame::DrawText(gfxContext& aRenderingContext, CalculateUnderline(refDrawTarget, *fontMet); - nscolor c = aOverrideColor ? *aOverrideColor : StyleColor()->mColor.ToColor(); + nscolor c = aOverrideColor ? *aOverrideColor : StyleText()->mColor.ToColor(); ColorPattern color(ToDeviceColor(c)); aRenderingContext.SetColor(Color::FromABGR(c)); diff --git a/layout/xul/tree/nsTreeBodyFrame.cpp b/layout/xul/tree/nsTreeBodyFrame.cpp index fee75ab92e7c..e98d824ecf00 100644 --- a/layout/xul/tree/nsTreeBodyFrame.cpp +++ b/layout/xul/tree/nsTreeBodyFrame.cpp @@ -3452,7 +3452,7 @@ ImgDrawResult nsTreeBodyFrame::PaintText( textRect.Deflate(bp); // Set our color. - ColorPattern color(ToDeviceColor(textContext->StyleColor()->mColor)); + ColorPattern color(ToDeviceColor(textContext->StyleText()->mColor)); // Draw decorations. StyleTextDecorationLine decorations = @@ -3490,7 +3490,7 @@ ImgDrawResult nsTreeBodyFrame::PaintText( } aRenderingContext.SetColor( - Color::FromABGR(textContext->StyleColor()->mColor.ToColor())); + Color::FromABGR(textContext->StyleText()->mColor.ToColor())); nsLayoutUtils::DrawString( this, *fontMet, &aRenderingContext, text.get(), text.Length(), textRect.TopLeft() + nsPoint(0, baseline), cellContext); diff --git a/servo/components/style/matching.rs b/servo/components/style/matching.rs index 583e41ad82ef..52d12037707c 100644 --- a/servo/components/style/matching.rs +++ b/servo/components/style/matching.rs @@ -718,7 +718,7 @@ pub trait MatchMethods: TElement { let device = context.shared.stylist.device(); // Needed for the "inherit from body" quirk. - let text_color = new_primary_style.get_color().clone_color(); + let text_color = new_primary_style.get_inherited_text().clone_color(); device.set_body_text_color(text_color); } } diff --git a/servo/components/style/properties/build.py b/servo/components/style/properties/build.py index 3cc2a60134ef..1967ed3238a4 100644 --- a/servo/components/style/properties/build.py +++ b/servo/components/style/properties/build.py @@ -25,7 +25,6 @@ STYLE_STRUCT_LIST = [ "background", "border", "box", - "color", "column", "counters", "effects", diff --git a/servo/components/style/properties/gecko.mako.rs b/servo/components/style/properties/gecko.mako.rs index e5595673cb71..9f56c42cc2bc 100644 --- a/servo/components/style/properties/gecko.mako.rs +++ b/servo/components/style/properties/gecko.mako.rs @@ -3355,9 +3355,6 @@ clip-path } -<%self:impl_trait style_struct_name="Color"> - - <%self:impl_trait style_struct_name="InheritedUI" skip_longhands="cursor"> pub fn set_cursor(&mut self, v: longhands::cursor::computed_value::T) { self.gecko.mCursor = v.keyword; diff --git a/servo/components/style/properties/longhands/color.mako.rs b/servo/components/style/properties/longhands/color.mako.rs deleted file mode 100644 index e2d4003a2f28..000000000000 --- a/servo/components/style/properties/longhands/color.mako.rs +++ /dev/null @@ -1,19 +0,0 @@ -/* 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 https://mozilla.org/MPL/2.0/. */ - -<%namespace name="helpers" file="/helpers.mako.rs" /> - -<% data.new_style_struct("Color", inherited=True) %> - -<% from data import to_rust_ident %> - -${helpers.predefined_type( - "color", - "ColorPropertyValue", - "::cssparser::RGBA::new(0, 0, 0, 255)", - animation_value_type="AnimatedRGBA", - flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", - ignored_when_colors_disabled="True", - spec="https://drafts.csswg.org/css-color/#color", -)} diff --git a/servo/components/style/properties/longhands/inherited_text.mako.rs b/servo/components/style/properties/longhands/inherited_text.mako.rs index e8f56cf2cded..58331efa6bdc 100644 --- a/servo/components/style/properties/longhands/inherited_text.mako.rs +++ b/servo/components/style/properties/longhands/inherited_text.mako.rs @@ -6,6 +6,16 @@ <% from data import Keyword %> <% data.new_style_struct("InheritedText", inherited=True, gecko_name="Text") %> +${helpers.predefined_type( + "color", + "ColorPropertyValue", + "::cssparser::RGBA::new(0, 0, 0, 255)", + animation_value_type="AnimatedRGBA", + flags="APPLIES_TO_FIRST_LETTER APPLIES_TO_FIRST_LINE APPLIES_TO_PLACEHOLDER", + ignored_when_colors_disabled="True", + spec="https://drafts.csswg.org/css-color/#color", +)} + ${helpers.predefined_type( "line-height", "LineHeight", diff --git a/servo/components/style/properties/properties.mako.rs b/servo/components/style/properties/properties.mako.rs index 520b4a32b51c..c2b390c89d95 100644 --- a/servo/components/style/properties/properties.mako.rs +++ b/servo/components/style/properties/properties.mako.rs @@ -2832,7 +2832,7 @@ impl ComputedValues { /// style.resolve_color(style.get_border().clone_border_top_color()); #[inline] pub fn resolve_color(&self, color: computed::Color) -> RGBA { - color.to_rgba(self.get_color().clone_color()) + color.to_rgba(self.get_inherited_text().clone_color()) } } diff --git a/servo/components/style/values/specified/color.rs b/servo/components/style/values/specified/color.rs index 5405fc6602f5..48918d5bb228 100644 --- a/servo/components/style/values/specified/color.rs +++ b/servo/components/style/values/specified/color.rs @@ -645,7 +645,7 @@ impl ToComputedValue for ColorPropertyValue { fn to_computed_value(&self, context: &Context) -> RGBA { self.0 .to_computed_value(context) - .to_rgba(context.builder.get_parent_color().clone_color()) + .to_rgba(context.builder.get_parent_inherited_text().clone_color()) } #[inline] diff --git a/servo/ports/geckolib/tests/size_of.rs b/servo/ports/geckolib/tests/size_of.rs index fa5243e4bf9f..33b8759d9608 100644 --- a/servo/ports/geckolib/tests/size_of.rs +++ b/servo/ports/geckolib/tests/size_of.rs @@ -33,7 +33,7 @@ size_of_test!(size_of_pseudo_class, selector_parser::NonTSPseudoClass, 16); size_of_test!(test_size_of_rule, style::stylist::Rule, 32); // Large pages generate tens of thousands of ComputedValues. -size_of_test!(test_size_of_cv, ComputedValues, 232); +size_of_test!(test_size_of_cv, ComputedValues, 224); size_of_test!(test_size_of_option_arc_cv, Option>, 8); size_of_test!(test_size_of_option_rule_node, Option, 8); From bddabe044f18d6161fe3c3543a1f964373dc59e0 Mon Sep 17 00:00:00 2001 From: "alexandru.ionescu" Date: Thu, 30 May 2019 23:49:18 +0000 Subject: [PATCH 13/47] Bug 1555330 - Add p2 aarch64 to youtube playback test. r=perftest-reviewers,sparky Differential Revision: https://phabricator.services.mozilla.com/D33006 --HG-- extra : moz-landing-system : lando --- taskcluster/ci/test/test-sets.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/taskcluster/ci/test/test-sets.yml b/taskcluster/ci/test/test-sets.yml index ef535dfda7ba..409507d84c4b 100644 --- a/taskcluster/ci/test/test-sets.yml +++ b/taskcluster/ci/test/test-sets.yml @@ -563,6 +563,7 @@ android-hw-arm7-raptor: android-hw-aarch64-raptor: - raptor-speedometer-geckoview - raptor-speedometer-refbrow + - raptor-youtube-playback-geckoview - raptor-tp6m-1-geckoview - raptor-tp6m-2-geckoview - raptor-tp6m-3-geckoview From 7f53677805f8a7bcf544448e776929728282cc55 Mon Sep 17 00:00:00 2001 From: Florin Strugariu Date: Fri, 31 May 2019 12:47:26 +0000 Subject: [PATCH 14/47] Bug 1508694 Turn off talos stylo sequential threads tp6 r=jmaher Differential Revision: https://phabricator.services.mozilla.com/D32977 --HG-- extra : moz-landing-system : lando --- taskcluster/ci/test/talos.yml | 34 --- taskcluster/ci/test/test-sets.yml | 2 - .../talos/linux64_config_taskcluster.py | 1 - .../mozharness/configs/talos/linux_config.py | 1 - .../mozharness/configs/talos/mac_config.py | 1 - .../configs/talos/windows_config.py | 11 +- .../talos/windows_taskcluster_config.py | 11 +- .../configs/talos/windows_vm_config.py | 11 +- .../mozharness/mozilla/testing/talos.py | 181 +--------------- testing/talos/mach_commands.py | 1 - testing/talos/talos.json | 34 --- testing/talos/talos/cmdline.py | 5 - testing/talos/talos/mitmproxy/__init__.py | 0 .../mitmproxy/alternate-server-replay.py | 186 ----------------- .../mitmproxy/mitmproxy-playback-set.manifest | 9 - .../mitmproxy-rel-bin-linux64.manifest | 9 - .../mitmproxy/mitmproxy-rel-bin-osx.manifest | 9 - testing/talos/talos/mitmproxy/mitmproxy.py | 197 ------------------ .../mitmproxy/mitmproxy_requirements.txt | 35 ---- .../talos/talos/mitmproxy/python3.manifest | 10 - .../talos/mitmproxy/python3_x64.manifest | 10 - testing/talos/talos/run_tests.py | 28 --- testing/talos/talos/test.py | 66 ------ testing/talos/talos/ttest.py | 5 - testing/talos/talos/unittests/test_config.py | 133 ------------ 25 files changed, 4 insertions(+), 986 deletions(-) delete mode 100644 testing/talos/talos/mitmproxy/__init__.py delete mode 100644 testing/talos/talos/mitmproxy/alternate-server-replay.py delete mode 100644 testing/talos/talos/mitmproxy/mitmproxy-playback-set.manifest delete mode 100644 testing/talos/talos/mitmproxy/mitmproxy-rel-bin-linux64.manifest delete mode 100644 testing/talos/talos/mitmproxy/mitmproxy-rel-bin-osx.manifest delete mode 100644 testing/talos/talos/mitmproxy/mitmproxy.py delete mode 100644 testing/talos/talos/mitmproxy/mitmproxy_requirements.txt delete mode 100644 testing/talos/talos/mitmproxy/python3.manifest delete mode 100644 testing/talos/talos/mitmproxy/python3_x64.manifest diff --git a/taskcluster/ci/test/talos.yml b/taskcluster/ci/test/talos.yml index 77ae91aa3a39..d4eb0240235b 100644 --- a/taskcluster/ci/test/talos.yml +++ b/taskcluster/ci/test/talos.yml @@ -373,40 +373,6 @@ talos-tp5o: extra-options: - --suite=tp5o -talos-tp6: - description: "Talos tp6" - try-name: tp6 - treeherder-symbol: T(tp6) - run-on-projects: - by-test-platform: - linux64-ccov/.*: ['try'] - windows10-64-ccov/.*: ['try'] - (?:windows10-64|windows7-32|linux64)(?:-qr)?/opt: ['mozilla-central', 'try'] - windows10-aarch64/opt: ['mozilla-central', 'try'] - macosx.*64(?:-shippable)?(?:-qr)?/opt: ['mozilla-central', 'try'] - default: ['trunk', 'try'] - max-run-time: 1200 - mozharness: - extra-options: - - --suite=tp6 - -talos-tp6-stylo-threads: - description: "Talos Stylo sequential tp6" - try-name: tp6-stylo-threads - treeherder-symbol: Tss(tp6) - max-run-time: 1200 - run-on-projects: - by-test-platform: - linux64-ccov/.*: ['try'] - windows10-64-ccov/.*: ['try'] - (?:windows10-64|windows7-32|linux64)(?:-qr)?/opt: ['mozilla-central', 'try'] - windows10-aarch64/opt: ['mozilla-central', 'try'] - macosx.*64(?:-shippable)?(?:-qr)?/opt: ['mozilla-central', 'try'] - default: ['mozilla-beta', 'trunk', 'try'] - mozharness: - extra-options: - - --suite=tp6-stylo-threads - talos-tabswitch: description: "Talos page scroll (tabswitch)" try-name: tabswitch diff --git a/taskcluster/ci/test/test-sets.yml b/taskcluster/ci/test/test-sets.yml index 409507d84c4b..ec6a4b654ff7 100644 --- a/taskcluster/ci/test/test-sets.yml +++ b/taskcluster/ci/test/test-sets.yml @@ -73,7 +73,6 @@ talos: - talos-tp5o - talos-perf-reftest - talos-perf-reftest-singletons - - talos-tp6-stylo-threads - talos-tabswitch # - talos-h1 Bug 1487031 - Disabled for not finding actionable regressions # - talos-h2 Bug 1487031 - Disabled for not finding actionable regressions @@ -379,7 +378,6 @@ macosx64-talos: - talos-tp5o - talos-perf-reftest - talos-perf-reftest-singletons - - talos-tp6-stylo-threads # - talos-tabswitch # Bug 1453007 times out # - talos-h1 # too long to unpack profile- Bug 1442893 diff --git a/testing/mozharness/configs/talos/linux64_config_taskcluster.py b/testing/mozharness/configs/talos/linux64_config_taskcluster.py index 12a93843faa7..e1f2a89e6db2 100644 --- a/testing/mozharness/configs/talos/linux64_config_taskcluster.py +++ b/testing/mozharness/configs/talos/linux64_config_taskcluster.py @@ -30,7 +30,6 @@ config = { "populate-webroot", "create-virtualenv", "install", - "setup-mitmproxy", "run-tests", ], "minidump_stackwalk_path": MINIDUMP_STACKWALK_PATH, diff --git a/testing/mozharness/configs/talos/linux_config.py b/testing/mozharness/configs/talos/linux_config.py index a1e3a331c284..9990f3e2cec4 100644 --- a/testing/mozharness/configs/talos/linux_config.py +++ b/testing/mozharness/configs/talos/linux_config.py @@ -20,7 +20,6 @@ config = { "populate-webroot", "create-virtualenv", "install", - "setup-mitmproxy", "run-tests", ], "minidump_stackwalk_path": MINIDUMP_STACKWALK_PATH, diff --git a/testing/mozharness/configs/talos/mac_config.py b/testing/mozharness/configs/talos/mac_config.py index dad27db532c6..74ba4f7e1de0 100644 --- a/testing/mozharness/configs/talos/mac_config.py +++ b/testing/mozharness/configs/talos/mac_config.py @@ -13,7 +13,6 @@ config = { "populate-webroot", "create-virtualenv", "install", - "setup-mitmproxy", "run-tests", ], "run_cmd_checks_enabled": True, diff --git a/testing/mozharness/configs/talos/windows_config.py b/testing/mozharness/configs/talos/windows_config.py index 21e36f570b3b..fbd11571c3e3 100644 --- a/testing/mozharness/configs/talos/windows_config.py +++ b/testing/mozharness/configs/talos/windows_config.py @@ -22,18 +22,9 @@ config = { "populate-webroot", "create-virtualenv", "install", - "setup-mitmproxy", "run-tests", ], "tooltool_cache": os.path.join('c:\\', 'build', 'tooltool_cache'), "minidump_stackwalk_path": "win32-minidump_stackwalk.exe", - "minidump_tooltool_manifest_path": "config/tooltool-manifests/win32/releng.manifest", - "python3_manifest": { - "win32": "python3.manifest", - "win64": "python3_x64.manifest", - }, - "env": { - # python3 requires C runtime, found in firefox installation; see bug 1361732 - "PATH": "%(PATH)s;c:\\slave\\test\\build\\application\\firefox;" - } + "minidump_tooltool_manifest_path": "config/tooltool-manifests/win32/releng.manifest" } diff --git a/testing/mozharness/configs/talos/windows_taskcluster_config.py b/testing/mozharness/configs/talos/windows_taskcluster_config.py index 128b775a8534..a5fb54c9db36 100644 --- a/testing/mozharness/configs/talos/windows_taskcluster_config.py +++ b/testing/mozharness/configs/talos/windows_taskcluster_config.py @@ -19,18 +19,9 @@ config = { "populate-webroot", "create-virtualenv", "install", - "setup-mitmproxy", "run-tests", ], "tooltool_cache": os.path.join('Y:\\', 'tooltool-cache'), "minidump_stackwalk_path": "win32-minidump_stackwalk.exe", - "minidump_tooltool_manifest_path": "config/tooltool-manifests/win32/releng.manifest", - "python3_manifest": { - "win32": "python3.manifest", - "win64": "python3_x64.manifest", - }, - "env": { - # python3 requires C runtime, found in firefox installation; see bug 1361732 - "PATH": "%(PATH)s;%(CD)s\\build\\application\\firefox;" - } + "minidump_tooltool_manifest_path": "config/tooltool-manifests/win32/releng.manifest" } diff --git a/testing/mozharness/configs/talos/windows_vm_config.py b/testing/mozharness/configs/talos/windows_vm_config.py index bdf007355cd2..b78270c4c73d 100644 --- a/testing/mozharness/configs/talos/windows_vm_config.py +++ b/testing/mozharness/configs/talos/windows_vm_config.py @@ -21,18 +21,9 @@ config = { "populate-webroot", "create-virtualenv", "install", - "setup-mitmproxy", "run-tests", ], "tooltool_cache": os.path.join('c:\\', 'build', 'tooltool_cache'), "minidump_stackwalk_path": "win32-minidump_stackwalk.exe", - "minidump_tooltool_manifest_path": "config/tooltool-manifests/win32/releng.manifest", - "python3_manifest": { - "win32": "python3.manifest", - "win64": "python3_x64.manifest", - }, - "env": { - # python3 requires C runtime, found in firefox installation; see bug 1361732 - "PATH": "%(PATH)s;c:\\slave\\test\\build\\application\\firefox;" - } + "minidump_tooltool_manifest_path": "config/tooltool-manifests/win32/releng.manifest" } diff --git a/testing/mozharness/mozharness/mozilla/testing/talos.py b/testing/mozharness/mozharness/mozilla/testing/talos.py index ab4c0b083adb..3678ef2426e3 100755 --- a/testing/mozharness/mozharness/mozilla/testing/talos.py +++ b/testing/mozharness/mozharness/mozilla/testing/talos.py @@ -179,7 +179,6 @@ class Talos(TestingMixin, MercurialScript, TooltoolMixin, 'populate-webroot', 'create-virtualenv', 'install', - 'setup-mitmproxy', 'run-tests', ]) kwargs.setdefault('default_actions', ['clobber', @@ -187,7 +186,6 @@ class Talos(TestingMixin, MercurialScript, TooltoolMixin, 'populate-webroot', 'create-virtualenv', 'install', - 'setup-mitmproxy', 'run-tests', ]) kwargs.setdefault('config', {}) @@ -209,14 +207,6 @@ class Talos(TestingMixin, MercurialScript, TooltoolMixin, self.gecko_profile_interval = self.config.get('gecko_profile_interval') self.pagesets_name = None self.benchmark_zip = None - # some platforms download a mitmproxy release binary - self.mitmproxy_rel_bin = None - # zip file found on tooltool that contains all of the mitmproxy recordings - self.mitmproxy_recording_set = None - # files inside the recording set - self.mitmproxy_recordings_file_list = self.config.get('mitmproxy', None) - # path to mitdump tool itself, in py3 venv - self.mitmdump = None # We accept some configuration options from the try commit message in the format # mozharness: @@ -275,19 +265,6 @@ class Talos(TestingMixin, MercurialScript, TooltoolMixin, self.benchmark_zip_manifest = 'jetstream-benchmark.manifest' return self.benchmark_zip - def query_mitmproxy_recordings_file_list(self): - """ When using mitmproxy we also need the name of the playback files that are included - inside the playback archive. - """ - if self.mitmproxy_recordings_file_list: - return self.mitmproxy_recordings_file_list - if self.query_talos_json_config() and self.suite is not None: - talos_opts = self.talos_json_config['suites'][self.suite].get('talos_options', None) - for index, val in enumerate(talos_opts): - if val == '--mitmproxy': - self.mitmproxy_recordings_file_list = talos_opts[index + 1] - return self.mitmproxy_recordings_file_list - def get_suite_from_test(self): """ Retrieve the talos suite name from a given talos test name.""" # running locally, single test name provided instead of suite; go through tests and @@ -338,18 +315,7 @@ class Talos(TestingMixin, MercurialScript, TooltoolMixin, kw_options['title'] = self.config['title'] if self.symbols_path: kw_options['symbolsPath'] = self.symbols_path - # if using mitmproxy, we've already created a py3 venv just - # for it; need to add the path to that env/mitdump tool - if self.mitmdump: - kw_options['mitmdumpPath'] = self.mitmdump - # also need to have recordings list; get again here from talos.json, in case talos was - # invoked via '-a' and therefore the --mitmproxy param wasn't used on command line - if not self.config.get('mitmproxy', None): - file_list = self.query_mitmproxy_recordings_file_list() - if file_list is not None: - kw_options['mitmproxy'] = file_list - else: - self.fatal("Talos requires list of mitmproxy playback files, use --mitmproxy") + kw_options.update(kw) # talos expects tests to be in the format (e.g.) 'ts:tp5:tsvg' tests = kw_options.get('activeTests') @@ -453,131 +419,6 @@ class Talos(TestingMixin, MercurialScript, TooltoolMixin, except Exception: self.critical("Error copying webkit benchmarks from %s to %s" % (src, dest)) - def setup_mitmproxy(self): - """Some talos tests require the use of mitmproxy to playback the pages, - set it up here. - """ - if not self.query_mitmproxy_recording_set(): - self.info("Skipping: mitmproxy is not required") - return - - os_name = self.platform_name() - - # on windows we need to install a pytyon 3 virtual env; on macosx and linux we - # use a mitmdump pre-built binary that doesn't need an external python 3 - if 'win' in os_name: - # setup python 3.x virtualenv - self.setup_py3_virtualenv() - - # install mitmproxy - self.install_mitmproxy() - - # download the recording set; will be overridden by the --no-download - if ('talos_extra_options' in self.config and - '--no-download' not in self.config['talos_extra_options']) or \ - 'talos_extra_options' not in self.config: - self.download_mitmproxy_recording_set() - else: - self.info("Not downloading mitmproxy recording set because no-download was specified") - - def setup_py3_virtualenv(self): - """Mitmproxy needs Python 3.x; set up a separate py 3.x env here""" - self.info("Setting up python 3.x virtualenv, required for mitmproxy") - # first download the py3 package - self.py3_path = self.fetch_python3() - # now create the py3 venv - self.py3_venv_configuration(python_path=self.py3_path, venv_path='py3venv') - self.py3_create_venv() - self.py3_install_modules(["cffi==1.10.0"]) - requirements = [os.path.join(self.talos_path, 'talos', - 'mitmproxy', 'mitmproxy_requirements.txt')] - self.py3_install_requirement_files(requirements) - # add py3 executables path to system path - sys.path.insert(1, self.py3_path_to_executables()) - - def install_mitmproxy(self): - """Install the mitmproxy tool into the Python 3.x env""" - self.info("Installing mitmproxy") - if 'win' in self.platform_name(): - self.py3_install_modules(modules=['mitmproxy']) - self.mitmdump = os.path.join(self.py3_path_to_executables(), 'mitmdump') - else: - # on macosx and linux64 we use a prebuilt mitmproxy release binary - mitmproxy_path = os.path.join(self.talos_path, 'talos', 'mitmproxy') - self.mitmdump = os.path.join(mitmproxy_path, 'mitmdump') - if not os.path.exists(self.mitmdump): - # download the mitmproxy release binary; will be overridden by the --no-download - if ('talos_extra_options' in self.config and - '--no-download' not in self.config['talos_extra_options']) or \ - 'talos_extra_options' not in self.config: - if 'osx' in self.platform_name(): - _platform = 'osx' - else: - _platform = 'linux64' - self.query_mitmproxy_rel_bin(_platform) - if self.mitmproxy_rel_bin is None: - self.fatal("Aborting: mitmproxy_release_bin_osx not found in talos.json") - self.download_mitmproxy_binary(_platform) - else: - self.info("Not downloading mitmproxy rel binary because no-download was " - "specified") - self.info('The mitmdump macosx binary is found at: %s' % self.mitmdump) - self.run_command([self.mitmdump, '--version'], env=self.query_env()) - - def query_mitmproxy_rel_bin(self, platform): - """Mitmproxy requires external playback archives to be downloaded and extracted""" - if self.mitmproxy_rel_bin: - return self.mitmproxy_rel_bin - if self.query_talos_json_config() and self.suite is not None: - config_key = "mitmproxy_release_bin_" + platform - self.mitmproxy_rel_bin = self.talos_json_config['suites'][self.suite].get(config_key, - False) - return self.mitmproxy_rel_bin - - def download_mitmproxy_binary(self, platform): - """Download the mitmproxy release binary from tooltool""" - self.info("Downloading the mitmproxy release binary using tooltool") - dest = os.path.join(self.talos_path, 'talos', 'mitmproxy') - _manifest = "mitmproxy-rel-bin-%s.manifest" % platform - manifest_file = os.path.join(self.talos_path, 'talos', 'mitmproxy', _manifest) - - if platform in ['osx', 'linux64']: - self.tooltool_fetch( - manifest_file, - output_dir=dest, - cache=self.config.get('tooltool_cache') - ) - - archive = os.path.join(dest, self.mitmproxy_rel_bin) - tar = self.query_exe('tar') - unzip_cmd = [tar, '-xvzf', archive, '-C', dest] - self.run_command(unzip_cmd, halt_on_failure=True) - - def query_mitmproxy_recording_set(self): - """Mitmproxy requires external playback archives to be downloaded and extracted""" - if self.mitmproxy_recording_set: - return self.mitmproxy_recording_set - if self.query_talos_json_config() and self.suite is not None: - self.mitmproxy_recording_set = ( - self.talos_json_config['suites'][self.suite].get('mitmproxy_recording_set', False)) - return self.mitmproxy_recording_set - - def download_mitmproxy_recording_set(self): - """Download the set of mitmproxy recording files that will be played back""" - self.info("Downloading the mitmproxy recording set using tooltool") - dest = os.path.join(self.talos_path, 'talos', 'mitmproxy') - manifest_file = os.path.join(self.talos_path, 'talos', - 'mitmproxy', 'mitmproxy-playback-set.manifest') - self.tooltool_fetch( - manifest_file, - output_dir=dest, - cache=self.config.get('tooltool_cache') - ) - archive = os.path.join(dest, self.mitmproxy_recording_set) - unzip = self.query_exe('unzip') - unzip_cmd = [unzip, '-q', '-o', archive, '-d', dest] - self.run_command(unzip_cmd, halt_on_failure=True) - # Action methods. {{{1 # clobber defined in BaseScript @@ -710,9 +551,6 @@ class Talos(TestingMixin, MercurialScript, TooltoolMixin, else: env['PYTHONPATH'] = self.talos_path - # mitmproxy needs path to mozharness when installing the cert - env['SCRIPTSPATH'] = scripts_path - if self.repo_path is not None: env['MOZ_DEVELOPER_REPO_DIR'] = self.repo_path if self.obj_path is not None: @@ -782,20 +620,3 @@ class Talos(TestingMixin, MercurialScript, TooltoolMixin, self.record_status(parser.worst_tbpl_status, level=parser.worst_log_level) - - def fetch_python3(self): - manifest_file = os.path.join( - self.talos_path, - 'talos', - 'mitmproxy', - self.config.get('python3_manifest')[self.platform_name()]) - output_dir = self.query_abs_dirs()['abs_work_dir'] - # Slowdown: The unzipped Python3 installation gets deleted every time - self.tooltool_fetch( - manifest_file, - output_dir=output_dir, - cache=self.config.get('tooltool_cache') - ) - python3_path = os.path.join(output_dir, 'python3.6', 'python') - self.run_command([python3_path, '--version'], env=self.query_env()) - return python3_path diff --git a/testing/talos/mach_commands.py b/testing/talos/mach_commands.py index 3220df4eb1ad..87f358ffcc33 100644 --- a/testing/talos/mach_commands.py +++ b/testing/talos/mach_commands.py @@ -51,7 +51,6 @@ class TalosRunner(MozbuildObject): default_actions = ['populate-webroot'] default_actions.extend([ 'create-virtualenv', - 'setup-mitmproxy', 'run-tests', ]) self.config = { diff --git a/testing/talos/talos.json b/testing/talos/talos.json index 96aa74cb2c9a..4843a5090986 100644 --- a/testing/talos/talos.json +++ b/testing/talos/talos.json @@ -68,42 +68,8 @@ "\"c:/Program Files (x86)/Windows Kits/10/Windows Performance Toolkit/xperf.exe\"" ] }, - "tp6": { - "tests": ["tp6_youtube", "tp6_amazon", "tp6_facebook"], - "mitmproxy_release_bin_osx": "mitmproxy-2.0.2-osx.tar.gz", - "mitmproxy_release_bin_linux64": "mitmproxy-2.0.2-linux.tar.gz", - "mitmproxy_recording_set": "mitmproxy-recording-set-win10.zip", - "talos_options": [ - "--mitmproxy", - "mitmproxy-recording-google.mp mitmproxy-recording-youtube.mp mitmproxy-recording-amazon.mp mitmproxy-recording-facebook.mp", - "--firstNonBlankPaint" - ] - }, - "tp6-stylo-threads": { - "tests": ["tp6_youtube", "tp6_amazon", "tp6_facebook"], - "mitmproxy_release_bin_osx": "mitmproxy-2.0.2-osx.tar.gz", - "mitmproxy_release_bin_linux64": "mitmproxy-2.0.2-linux.tar.gz", - "mitmproxy_recording_set": "mitmproxy-recording-set-win10.zip", - "talos_options": [ - "--stylo-threads=1", - "--mitmproxy", - "mitmproxy-recording-google.mp mitmproxy-recording-youtube.mp mitmproxy-recording-amazon.mp mitmproxy-recording-facebook.mp", - "--firstNonBlankPaint" - ] - }, "h1": { "tests": ["ts_paint_heavy"] - }, - "h2": { - "tests": ["tp6_google_heavy", "tp6_youtube_heavy", "tp6_amazon_heavy", "tp6_facebook_heavy"], - "mitmproxy_release_bin_osx": "mitmproxy-2.0.2-osx.tar.gz", - "mitmproxy_release_bin_linux64": "mitmproxy-2.0.2-linux.tar.gz", - "mitmproxy_recording_set": "mitmproxy-recording-set-win10.zip", - "talos_options": [ - "--mitmproxy", - "mitmproxy-recording-google.mp mitmproxy-recording-youtube.mp mitmproxy-recording-amazon.mp mitmproxy-recording-facebook.mp", - "--firstNonBlankPaint" - ] } } } diff --git a/testing/talos/talos/cmdline.py b/testing/talos/talos/cmdline.py index 89d8f07857ec..654bb8b9f60e 100644 --- a/testing/talos/talos/cmdline.py +++ b/testing/talos/talos/cmdline.py @@ -122,11 +122,6 @@ def create_parser(mach_interface=False): add_arg('--setpref', action='append', default=[], dest="extraPrefs", metavar="PREF=VALUE", help="defines an extra user preference") - add_arg('--mitmproxy', - help='Test uses mitmproxy to serve the pages, specify the ' - 'path and name of the mitmdump file to playback') - add_arg('--mitmdumpPath', - help="Path to mitmproxy's mitmdump playback tool") add_arg("--firstNonBlankPaint", action='store_true', dest="fnbpaint", help="Wait for firstNonBlankPaint event before recording the time") add_arg('--webServer', dest='webserver', diff --git a/testing/talos/talos/mitmproxy/__init__.py b/testing/talos/talos/mitmproxy/__init__.py deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/testing/talos/talos/mitmproxy/alternate-server-replay.py b/testing/talos/talos/mitmproxy/alternate-server-replay.py deleted file mode 100644 index 84160f03e72d..000000000000 --- a/testing/talos/talos/mitmproxy/alternate-server-replay.py +++ /dev/null @@ -1,186 +0,0 @@ -# This file was copied from mitmproxy/addons/serverplayback.py release tag 2.0.2 and modified by -# Benjamin Smedberg - -# Altered features: -# * --kill returns 404 rather than dropping the whole HTTP/2 connection on the floor -# * best-match response handling is used to improve success rates -from __future__ import absolute_import, print_function - -import hashlib -import sys -import urllib -from collections import defaultdict - -from mitmproxy import ctx -from mitmproxy import exceptions -from mitmproxy import http -from mitmproxy import io -from typing import Any # noqa -from typing import List # noqa - - -class ServerPlayback: - def __init__(self, replayfiles): - self.options = None - self.replayfiles = replayfiles - self.flowmap = {} - - def load(self, flows): - for i in flows: - if i.response: - l = self.flowmap.setdefault(self._hash(i.request), []) - l.append(i) - - def clear(self): - self.flowmap = {} - - def _parse(self, r): - """ - Return (path, queries, formdata, content) for a request. - """ - _, _, path, _, query, _ = urllib.parse.urlparse(r.url) - queriesArray = urllib.parse.parse_qsl(query, keep_blank_values=True) - queries = defaultdict(list) - for k, v in queriesArray: - queries[k].append(v) - - content = None - formdata = None - if r.raw_content != b'': - if r.multipart_form: - formdata = r.multipart_form - elif r.urlencoded_form: - formdata = r.urlencoded_form - else: - content = r.content - return (path, queries, formdata, content) - - def _hash(self, r): - """ - Calculates a loose hash of the flow request. - """ - path, queries, _, _ = self._parse(r) - - key = [str(r.port), str(r.scheme), str(r.method), str(path)] # type: List[Any] - if not self.options.server_replay_ignore_host: - key.append(r.host) - - if len(queries): - key.append("?") - - return hashlib.sha256( - repr(key).encode("utf8", "surrogateescape") - ).digest() - - def _match(self, request_a, request_b): - """ - Calculate a match score between two requests. - Match algorithm: - * identical query keys: 3 points - * matching query param present: 1 point - * matching query param value: 3 points - * identical form keys: 3 points - * matching form param present: 1 point - * matching form param value: 3 points - * matching body (no multipart or encoded form): 4 points - """ - match = 0 - - path_a, queries_a, form_a, content_a = self._parse(request_a) - path_b, queries_b, form_b, content_b = self._parse(request_b) - - keys_a = set(queries_a.keys()) - keys_b = set(queries_b.keys()) - if keys_a == keys_b: - match += 3 - - for key in keys_a: - values_a = set(queries_a[key]) - values_b = set(queries_b[key]) - if len(values_a) == len(values_b): - match += 1 - if values_a == values_b: - match += 3 - - if form_a and form_b: - keys_a = set(form_a.keys()) - keys_b = set(form_b.keys()) - if keys_a == keys_b: - match += 3 - - for key in keys_a: - values_a = set(form_a.get_all(key)) - values_b = set(form_b.get_all(key)) - if len(values_a) == len(values_b): - match += 1 - if values_a == values_b: - match += 3 - - elif content_a and (content_a == content_b): - match += 4 - - return match - - def next_flow(self, request): - """ - Returns the next flow object, or None if no matching flow was - found. - """ - hsh = self._hash(request) - flows = self.flowmap.get(hsh, None) - if flows is None: - return None - - # if it's an exact match, great! - if len(flows) == 1: - candidate = flows[0] - if (candidate.request.url == request.url and - candidate.request.raw_content == request.raw_content): - ctx.log.info("For request {} found exact replay match".format(request.url)) - return candidate - - # find the best match between the request and the available flow candidates - match = -1 - flow = None - ctx.log.debug("Candiate flows for request: {}".format(request.url)) - for candidate_flow in flows: - candidate_match = self._match(candidate_flow.request, request) - ctx.log.debug(" score={} url={}".format(candidate_match, candidate_flow.request.url)) - if candidate_match > match: - match = candidate_match - flow = candidate_flow - ctx.log.info("For request {} best match {} with score=={}".format(request.url, - flow.request.url, match)) - return candidate_flow - - def configure(self, options, updated): - self.options = options - self.clear() - try: - flows = io.read_flows_from_paths(self.replayfiles) - except exceptions.FlowReadException as e: - raise exceptions.OptionsError(str(e)) - self.load(flows) - - def request(self, f): - if self.flowmap: - rflow = self.next_flow(f.request) - if rflow: - response = rflow.response.copy() - response.is_replay = True - if self.options.refresh_server_playback: - response.refresh() - f.response = response - elif self.options.replay_kill_extra: - ctx.log.warn( - "server_playback: killed non-replay request {}".format( - f.request.url - ) - ) - f.response = http.HTTPResponse.make(404, b'', {'content-type': 'text/plain'}) - - -def start(): - files = sys.argv[1:] - print("Replaying from files: {}".format(files)) - return ServerPlayback(files) diff --git a/testing/talos/talos/mitmproxy/mitmproxy-playback-set.manifest b/testing/talos/talos/mitmproxy/mitmproxy-playback-set.manifest deleted file mode 100644 index dfa120b1d7ff..000000000000 --- a/testing/talos/talos/mitmproxy/mitmproxy-playback-set.manifest +++ /dev/null @@ -1,9 +0,0 @@ -[ - { - "filename": "mitmproxy-recording-set-win10.zip", - "size": 9189938, - "digest": "e904917ed6bf1cef7201284385dc603a283e8e22f992876f17edcf0f1f20db95b609f0d8c7f593b4a0a6c20957dcb6a4d502c562ed74fb6cf4bc255c2f691f32", - "algorithm": "sha512", - "unpack": false - } -] \ No newline at end of file diff --git a/testing/talos/talos/mitmproxy/mitmproxy-rel-bin-linux64.manifest b/testing/talos/talos/mitmproxy/mitmproxy-rel-bin-linux64.manifest deleted file mode 100644 index 7af3372cdb7e..000000000000 --- a/testing/talos/talos/mitmproxy/mitmproxy-rel-bin-linux64.manifest +++ /dev/null @@ -1,9 +0,0 @@ -[ - { - "filename": "mitmproxy-2.0.2-linux.tar.gz", - "size": 48997542, - "digest": "b032e04b8763206a19f80b78062efa59dc901ad32fd8d6cf2d20e22744711352da61e75d93a0d93d645179153534f72a154f73432837db415c9b0cd9d981f012", - "algorithm": "sha512", - "unpack": false - } -] diff --git a/testing/talos/talos/mitmproxy/mitmproxy-rel-bin-osx.manifest b/testing/talos/talos/mitmproxy/mitmproxy-rel-bin-osx.manifest deleted file mode 100644 index 285225cc8e54..000000000000 --- a/testing/talos/talos/mitmproxy/mitmproxy-rel-bin-osx.manifest +++ /dev/null @@ -1,9 +0,0 @@ -[ - { - "filename": "mitmproxy-2.0.2-osx.tar.gz", - "size": 32324573, - "digest": "06423c76e7e99fd9705eae3dc6e2423b1ffb8c42caa98fd010d59dc6ed1f0827376e238c48108106da558444b826e085a58aeb30cf9c79e9d0122a2cb17ae8e6", - "algorithm": "sha512", - "unpack": false - } -] diff --git a/testing/talos/talos/mitmproxy/mitmproxy.py b/testing/talos/talos/mitmproxy/mitmproxy.py deleted file mode 100644 index 577d37a3332a..000000000000 --- a/testing/talos/talos/mitmproxy/mitmproxy.py +++ /dev/null @@ -1,197 +0,0 @@ -'''This helps loading mitmproxy's cert and change proxy settings for Firefox.''' -# 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/. -from __future__ import absolute_import - -import os -import subprocess -import sys -import time - -import mozinfo -import psutil -from mozlog import get_proxy_logger - -here = os.path.dirname(os.path.realpath(__file__)) -LOG = get_proxy_logger() - -# path for mitmproxy certificate, generated auto after mitmdump is started -# on local machine it is 'HOME', however it is different on production machines -try: - DEFAULT_CERT_PATH = os.path.join(os.getenv('HOME'), - '.mitmproxy', 'mitmproxy-ca-cert.cer') -except Exception: - DEFAULT_CERT_PATH = os.path.join(os.getenv('HOMEDRIVE'), os.getenv('HOMEPATH'), - '.mitmproxy', 'mitmproxy-ca-cert.cer') - -# to install mitmproxy certificate into Firefox and turn on/off proxy -POLICIES_CONTENT_ON = '''{ - "policies": { - "Certificates": { - "Install": ["%(cert)s"] - }, - "Proxy": { - "Mode": "manual", - "HTTPProxy": "127.0.0.1:8080", - "SSLProxy": "127.0.0.1:8080", - "Passthrough": "", - "Locked": true - } - } -}''' - -POLICIES_CONTENT_OFF = '''{ - "policies": { - "Proxy": { - "Mode": "none", - "Locked": false - } - } -}''' - - -def install_mitmproxy_cert(mitmproxy_proc, browser_path): - """Install the CA certificate generated by mitmproxy, into Firefox - 1. Create a directory called distribution in the same directory as the Firefox executable - 2. Create a file called policies.json with: - { - "policies": { - "certificates": { - "Install": ["FULL_PATH_TO_CERT"] - } - } - } - """ - LOG.info("Installing mitmproxy CA certficate into Firefox") - # browser_path is the exe, we want the folder - policies_dir = os.path.dirname(browser_path) - # on macosx we need to remove the last folders 'MacOS' - # and the policies json needs to go in ../Content/Resources/ - if 'mac' in mozinfo.os: - policies_dir = os.path.join(policies_dir[:-6], "Resources") - # for all platforms the policies json goes in a 'distribution' dir - policies_dir = os.path.join(policies_dir, "distribution") - - cert_path = DEFAULT_CERT_PATH - # for windows only - if mozinfo.os == 'win': - cert_path = cert_path.replace('\\', '\\\\') - - if not os.path.exists(policies_dir): - LOG.info("creating folder: %s" % policies_dir) - os.makedirs(policies_dir) - else: - LOG.info("folder already exists: %s" % policies_dir) - - write_policies_json(policies_dir, - policies_content=POLICIES_CONTENT_ON % - {'cert': cert_path}) - - # cannot continue if failed to add CA cert to Firefox, need to check - if not is_mitmproxy_cert_installed(policies_dir): - LOG.error('Aborting: failed to install mitmproxy CA cert into Firefox') - stop_mitmproxy_playback(mitmproxy_proc) - sys.exit() - - -def write_policies_json(location, policies_content): - policies_file = os.path.join(location, "policies.json") - LOG.info("writing: %s" % policies_file) - - with open(policies_file, 'w') as fd: - fd.write(policies_content) - - -def read_policies_json(location): - policies_file = os.path.join(location, "policies.json") - LOG.info("reading: %s" % policies_file) - - with open(policies_file, 'r') as fd: - return fd.read() - - -def is_mitmproxy_cert_installed(policies_dir): - """Verify mitmxproy CA cert was added to Firefox""" - try: - # read autoconfig file, confirm mitmproxy cert is in there - contents = read_policies_json(policies_dir) - LOG.info("Firefox policies file contents:") - LOG.info(contents) - - cert_path = DEFAULT_CERT_PATH - # for windows only - if mozinfo.os == 'win': - cert_path = cert_path.replace('\\', '\\\\') - - if (POLICIES_CONTENT_ON % { - 'cert': cert_path}) in contents: - LOG.info("Verified mitmproxy CA certificate is installed in Firefox") - else: - return False - except Exception as e: - LOG.info("failed to read Firefox policies file, exeption: %s" % e) - return False - return True - - -def start_mitmproxy_playback(mitmdump_path, - mitmproxy_recording_path, - mitmproxy_recordings_list, - browser_path): - """Startup mitmproxy and replay the specified flow file""" - mitmproxy_recordings = [] - # recording names can be provided in comma-separated list; build py list including path - for recording in mitmproxy_recordings_list: - mitmproxy_recordings.append(os.path.join(mitmproxy_recording_path, recording)) - - # cmd line to start mitmproxy playback using custom playback script is as follows: - # /mitmdump -s "mitmdump-alternate-server-replay/alternate-server-replay.py - # recording-1.mp recording-2.mp..." - param = os.path.join(here, 'alternate-server-replay.py') - env = os.environ.copy() - - # this part is platform-specific - if mozinfo.os == 'win': - param2 = '""' + param.replace('\\', '\\\\\\') + ' ' + \ - ' '.join(mitmproxy_recordings).replace('\\', '\\\\\\') + '""' - sys.path.insert(1, mitmdump_path) - # mitmproxy needs some DLL's that are a part of Firefox itself, so add to path - env["PATH"] = os.path.dirname(browser_path) + ";" + env["PATH"] - else: - # mac and linux - param2 = param + ' ' + ' '.join(mitmproxy_recordings) - env["PATH"] = os.path.dirname(browser_path) - - command = [mitmdump_path, '-k', '-s', param2] - - LOG.info("Starting mitmproxy playback using env path: %s" % env["PATH"]) - LOG.info("Starting mitmproxy playback using command: %s" % ' '.join(command)) - # to turn off mitmproxy log output, use these params for Popen: - # Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env) - mitmproxy_proc = subprocess.Popen(command, env=env) - time.sleep(10) - data = mitmproxy_proc.poll() - if data is None: - LOG.info("Mitmproxy playback successfully started as pid %d" % mitmproxy_proc.pid) - return mitmproxy_proc - # cannot continue as we won't be able to playback the pages - LOG.error('Aborting: mitmproxy playback process failed to start, poll returned: %s' % data) - sys.exit() - - -def stop_mitmproxy_playback(mitmproxy_proc): - """Stop the mitproxy server playback""" - LOG.info("Stopping mitmproxy playback, killing process %d" % mitmproxy_proc.pid) - if mozinfo.os == 'win': - mitmproxy_proc.kill() - else: - mitmproxy_proc.terminate() - time.sleep(10) - if mitmproxy_proc.pid in psutil.pids(): - # I *think* we can still continue, as process will be automatically - # killed anyway when mozharness is done (?) if not, we won't be able - # to startup mitmxproy next time if it is already running - LOG.error("Failed to kill the mitmproxy playback process") - else: - LOG.info("Successfully killed the mitmproxy playback process") diff --git a/testing/talos/talos/mitmproxy/mitmproxy_requirements.txt b/testing/talos/talos/mitmproxy/mitmproxy_requirements.txt deleted file mode 100644 index 72ef97ab9b08..000000000000 --- a/testing/talos/talos/mitmproxy/mitmproxy_requirements.txt +++ /dev/null @@ -1,35 +0,0 @@ -argh==0.26.2 -asn1crypto==0.22.0 -blinker==1.4 -pycparser==2.17 -cffi==1.10.0 -brotlipy==0.6.0 -certifi==2017.4.17 -click==6.7 -construct==2.8.12 -cryptography==2.1.4 -cssutils==1.0.2 -EditorConfig==0.12.1 -h2==2.6.2 -hpack==3.0.0 -html2text==2016.9.19 -hyperframe==4.0.2 -idna==2.5 -jsbeautifier==1.6.12 -kaitaistruct==0.6 -mitmproxy==2.0.2 -packaging==16.8 -passlib==1.7.1 -pathtools==0.1.2 -pyasn1==0.2.3 -pyOpenSSL==16.2.0 -pyparsing==2.2.0 -pyperclip==1.5.27 -PyYAML==3.12 -requests==2.13.0 -ruamel.yaml==0.13.14 -six==1.10.0 -sortedcontainers==1.5.7 -tornado==4.4.3 -urwid==1.3.1 -watchdog==0.8.3 diff --git a/testing/talos/talos/mitmproxy/python3.manifest b/testing/talos/talos/mitmproxy/python3.manifest deleted file mode 100644 index fd992f9fdf33..000000000000 --- a/testing/talos/talos/mitmproxy/python3.manifest +++ /dev/null @@ -1,10 +0,0 @@ -[ - { - "size": 15380470, - "visibility": "public", - "digest": "cd78b88d95b69bef99d7192b71dd34118700f44db0a0069a13bfd4943b131e8d7fdac83859f8ac15d873d4b329eef69d8d75d0a6746d06fdcfc5d06da0c9784c", - "algorithm": "sha512", - "unpack": true, - "filename": "python3.6.zip" - } -] diff --git a/testing/talos/talos/mitmproxy/python3_x64.manifest b/testing/talos/talos/mitmproxy/python3_x64.manifest deleted file mode 100644 index 550585deedd1..000000000000 --- a/testing/talos/talos/mitmproxy/python3_x64.manifest +++ /dev/null @@ -1,10 +0,0 @@ -[ - { - "size": 16026760, - "visibility": "public", - "digest": "379428e3955671213a245ccd9ccf6f9d17d368db68c02da8baed7be629f2691127cd3e3f86807b25e2098d9840083fdc07946ab1bed0c14db4a5b628a47ed9ef", - "algorithm": "sha512", - "unpack": true, - "filename": "python3.6.amd64.zip" - } -] diff --git a/testing/talos/talos/run_tests.py b/testing/talos/talos/run_tests.py index 430458c923da..0fbe74668e94 100755 --- a/testing/talos/talos/run_tests.py +++ b/testing/talos/talos/run_tests.py @@ -20,7 +20,6 @@ import mozversion from talos import utils from mozlog import get_proxy_logger from talos.config import get_configs, ConfigurationError -from talos.mitmproxy import mitmproxy from talos.results import TalosResults from talos.ttest import TTest from talos.utils import TalosError, TalosRegression @@ -224,29 +223,6 @@ def run_tests(config, browser_config): if config['gecko_profile']: talos_results.add_extra_option('geckoProfile') - # some tests use mitmproxy to playback pages - mitmproxy_recordings_list = config.get('mitmproxy', False) - if mitmproxy_recordings_list is not False: - # needed so can tell talos ttest to allow external connections - browser_config['mitmproxy'] = True - - # start mitmproxy playback; this also generates the CA certificate - mitmdump_path = config.get('mitmdumpPath', False) - if mitmdump_path is False: - # cannot continue, need path for mitmdump playback tool - raise TalosError('Aborting: mitmdumpPath not provided on cmd line but is required') - - mitmproxy_recording_path = os.path.join(here, 'mitmproxy') - mitmproxy_proc = mitmproxy.start_mitmproxy_playback(mitmdump_path, - mitmproxy_recording_path, - mitmproxy_recordings_list.split(), - browser_config['browser_path']) - - # install the generated CA certificate into Firefox - # mitmproxy cert setup needs path to mozharness install; mozharness has set this - mitmproxy.install_mitmproxy_cert(mitmproxy_proc, - browser_config['browser_path']) - testname = None # run the tests @@ -321,10 +297,6 @@ def run_tests(config, browser_config): LOG.info("Completed test suite (%s)" % timer.elapsed()) - # if mitmproxy was used for page playback, stop it - if mitmproxy_recordings_list is not False: - mitmproxy.stop_mitmproxy_playback(mitmproxy_proc) - # output results if results_urls and not browser_config['no_upload_results']: talos_results.output(results_urls) diff --git a/testing/talos/talos/test.py b/testing/talos/talos/test.py index 989a75573f48..394ca2c783c7 100644 --- a/testing/talos/talos/test.py +++ b/testing/talos/talos/test.py @@ -896,72 +896,6 @@ class perf_reftest_singletons(PageloaderTest): alert_threshold = 5.0 -@register_test() -class tp6_google(QuantumPageloadTest): - """ - Quantum Pageload Test - Google - """ - tpmanifest = '${talos}/tests/quantum_pageload/quantum_pageload_google.manifest' - fnbpaint = False - tphero = True - - -@register_test() -class tp6_google_heavy(tp6_google): - """ - tp6_google test ran against a heavy-user profile - """ - profile = 'simple' - - -@register_test() -class tp6_youtube(QuantumPageloadTest): - """ - Quantum Pageload Test - YouTube - """ - tpmanifest = '${talos}/tests/quantum_pageload/quantum_pageload_youtube.manifest' - - -@register_test() -class tp6_youtube_heavy(tp6_youtube): - """ - tp6_youtube test ran against a heavy-user profile - """ - profile = 'simple' - - -@register_test() -class tp6_amazon(QuantumPageloadTest): - """ - Quantum Pageload Test - Amazon - """ - tpmanifest = '${talos}/tests/quantum_pageload/quantum_pageload_amazon.manifest' - - -@register_test() -class tp6_amazon_heavy(tp6_amazon): - """ - tp6_amazon test ran against a heavy-user profile - """ - profile = 'simple' - - -@register_test() -class tp6_facebook(QuantumPageloadTest): - """ - Quantum Pageload Test - Facebook - """ - tpmanifest = '${talos}/tests/quantum_pageload/quantum_pageload_facebook.manifest' - - -@register_test() -class tp6_facebook_heavy(tp6_facebook): - """ - tp6_facebook test ran against a heavy-user profile - """ - profile = 'simple' - - @register_test() class displaylist_mutate(PageloaderTest): """ diff --git a/testing/talos/talos/ttest.py b/testing/talos/talos/ttest.py index 87a867bdc4ca..f2044e78d071 100644 --- a/testing/talos/talos/ttest.py +++ b/testing/talos/talos/ttest.py @@ -129,11 +129,6 @@ class TTest(object): setup.env['JSGC_DISABLE_POISONING'] = '1' setup.env['MOZ_DISABLE_NONLOCAL_CONNECTIONS'] = '1' - # if using mitmproxy we must allow access to 'external' sites - if browser_config.get('mitmproxy', False): - LOG.info('Using mitmproxy so setting MOZ_DISABLE_NONLOCAL_CONNECTIONS to 0') - setup.env['MOZ_DISABLE_NONLOCAL_CONNECTIONS'] = '0' - # instantiate an object to hold test results test_results = results.TestResults( test_config, diff --git a/testing/talos/talos/unittests/test_config.py b/testing/talos/talos/unittests/test_config.py index add801ec1570..5bda711392f8 100644 --- a/testing/talos/talos/unittests/test_config.py +++ b/testing/talos/talos/unittests/test_config.py @@ -228,15 +228,6 @@ class Test_get_config(object): cls.argv_perf_reftest = '--activeTests perf_reftest -e /some/random/path'.split() cls.argv_perf_reftest_singletons = \ '--activeTests perf_reftest_singletons -e /some/random/path'.split() - cls.argv_tp6_google = '--activeTests tp6_google -e /some/random/path'.split() - cls.argv_tp6_google_heavy = '--activeTests tp6_google_heavy -e /some/random/path'.split() - cls.argv_tp6_youtube = '--activeTests tp6_youtube -e /some/random/path'.split() - cls.argv_tp6_youtube_heavy = '--activeTests tp6_youtube_heavy -e /some/random/path'.split() - cls.argv_tp6_amazon = '--activeTests tp6_amazon -e /some/random/path'.split() - cls.argv_tp6_amazon_heavy = '--activeTests tp6_amazon_heavy -e /some/random/path'.split() - cls.argv_tp6_facebook = '--activeTests tp6_facebook -e /some/random/path'.split() - cls.argv_tp6_facebook_heavy = \ - '--activeTests tp6_facebook_heavy -e /some/random/path'.split() @classmethod def teardown_class(cls): @@ -899,130 +890,6 @@ class Test_get_config(object): assert test_config['lower_is_better'] is True assert test_config['alert_threshold'] == 5.0 - def test_tp6_google_has_expected_attributes(self): - config = get_config(self.argv_tp6_google) - test_config = config['tests'][0] - - assert test_config['name'] == 'tp6_google' - assert test_config['tpcycles'] == 1 - assert test_config['tppagecycles'] == 25 - assert test_config['gecko_profile_interval'] == 1 - assert test_config['gecko_profile_entries'] == 2000000 - assert test_config['filters'] is not None - assert test_config['unit'] == 'ms' - assert test_config['lower_is_better'] is True - assert test_config['fnbpaint'] is False - assert test_config['tpmanifest'] != \ - '${talos}/tests/quantum_pageload/quantum_pageload_google.manifest' - - def test_tp6_google_heavy_has_expected_attributes(self): - config = get_config(self.argv_tp6_google_heavy) - test_config = config['tests'][0] - - assert test_config['name'] == 'tp6_google_heavy' - assert test_config['tpcycles'] == 1 - assert test_config['tppagecycles'] == 25 - assert test_config['gecko_profile_interval'] == 1 - assert test_config['gecko_profile_entries'] == 2000000 - assert test_config['filters'] is not None - assert test_config['unit'] == 'ms' - assert test_config['lower_is_better'] is True - assert test_config['fnbpaint'] is False - assert test_config['profile'] == 'simple' - - def test_tp6_youtube_has_expected_attributes(self): - config = get_config(self.argv_tp6_youtube) - test_config = config['tests'][0] - - assert test_config['name'] == 'tp6_youtube' - assert test_config['tpcycles'] == 1 - assert test_config['tppagecycles'] == 25 - assert test_config['gecko_profile_interval'] == 1 - assert test_config['gecko_profile_entries'] == 2000000 - assert test_config['filters'] is not None - assert test_config['unit'] == 'ms' - assert test_config['lower_is_better'] is True - assert test_config['fnbpaint'] is True - assert test_config['tpmanifest'] != \ - '${talos}/tests/quantum_pageload/quantum_pageload_youtube.manifest' - - def test_tp6_youtube_heavy_has_expected_attributes(self): - config = get_config(self.argv_tp6_youtube_heavy) - test_config = config['tests'][0] - - assert test_config['name'] == 'tp6_youtube_heavy' - assert test_config['tpcycles'] == 1 - assert test_config['tppagecycles'] == 25 - assert test_config['gecko_profile_interval'] == 1 - assert test_config['gecko_profile_entries'] == 2000000 - assert test_config['filters'] is not None - assert test_config['unit'] == 'ms' - assert test_config['lower_is_better'] is True - assert test_config['fnbpaint'] is True - assert test_config['profile'] == 'simple' - - def test_tp6_amazon_has_expected_attributes(self): - config = get_config(self.argv_tp6_amazon) - test_config = config['tests'][0] - - assert test_config['name'] == 'tp6_amazon' - assert test_config['tpcycles'] == 1 - assert test_config['tppagecycles'] == 25 - assert test_config['gecko_profile_interval'] == 1 - assert test_config['gecko_profile_entries'] == 2000000 - assert test_config['filters'] is not None - assert test_config['unit'] == 'ms' - assert test_config['lower_is_better'] is True - assert test_config['fnbpaint'] is True - assert test_config['tpmanifest'] != \ - '${talos}/tests/quantum_pageload/quantum_pageload_amazon.manifest' - - def test_tp6_amazon_heavy_has_expected_attributes(self): - config = get_config(self.argv_tp6_amazon_heavy) - test_config = config['tests'][0] - - assert test_config['name'] == 'tp6_amazon_heavy' - assert test_config['tpcycles'] == 1 - assert test_config['tppagecycles'] == 25 - assert test_config['gecko_profile_interval'] == 1 - assert test_config['gecko_profile_entries'] == 2000000 - assert test_config['filters'] is not None - assert test_config['unit'] == 'ms' - assert test_config['lower_is_better'] is True - assert test_config['fnbpaint'] is True - assert test_config['profile'] == 'simple' - - def test_tp6_facebook_has_expected_attributes(self): - config = get_config(self.argv_tp6_facebook) - test_config = config['tests'][0] - - assert test_config['name'] == 'tp6_facebook' - assert test_config['tpcycles'] == 1 - assert test_config['tppagecycles'] == 25 - assert test_config['gecko_profile_interval'] == 1 - assert test_config['gecko_profile_entries'] == 2000000 - assert test_config['filters'] is not None - assert test_config['unit'] == 'ms' - assert test_config['lower_is_better'] is True - assert test_config['fnbpaint'] is True - assert test_config['tpmanifest'] != \ - '${talos}/tests/quantum_pageload/quantum_pageload_facebook.manifest' - - def test_tp6_facebook_heavy_has_expected_attributes(self): - config = get_config(self.argv_tp6_facebook_heavy) - test_config = config['tests'][0] - - assert test_config['name'] == 'tp6_facebook_heavy' - assert test_config['tpcycles'] == 1 - assert test_config['tppagecycles'] == 25 - assert test_config['gecko_profile_interval'] == 1 - assert test_config['gecko_profile_entries'] == 2000000 - assert test_config['filters'] is not None - assert test_config['unit'] == 'ms' - assert test_config['lower_is_better'] is True - assert test_config['fnbpaint'] is True - assert test_config['profile'] == 'simple' - @mock.patch('talos.config.get_browser_config') @mock.patch('talos.config.get_config') From 6a23fc1690cf3fac51a82e17edf456dd337548af Mon Sep 17 00:00:00 2001 From: John Dai Date: Fri, 31 May 2019 14:32:47 +0000 Subject: [PATCH 15/47] Bug 1555301 - Fix JSWindowActor.webidl comments; r=nika Differential Revision: https://phabricator.services.mozilla.com/D33026 --HG-- extra : moz-landing-system : lando --- dom/chrome-webidl/ChromeUtils.webidl | 6 ++++ dom/chrome-webidl/JSWindowActor.webidl | 44 +++++++++++++++----------- 2 files changed, 32 insertions(+), 18 deletions(-) diff --git a/dom/chrome-webidl/ChromeUtils.webidl b/dom/chrome-webidl/ChromeUtils.webidl index 0b44dfe46179..9f25bd6e1d33 100644 --- a/dom/chrome-webidl/ChromeUtils.webidl +++ b/dom/chrome-webidl/ChromeUtils.webidl @@ -395,6 +395,12 @@ partial namespace ChromeUtils { [ChromeOnly] void resetLastExternalProtocolIframeAllowed(); + /** + * Register a new toplevel window global actor. This method may only be + * called in the parent process. |name| must be globally unique. + * + * See JSWindowActor.webidl for WindowActorOptions fields documentation. + */ [ChromeOnly, Throws] void registerWindowActor(DOMString aName, optional WindowActorOptions aOptions); diff --git a/dom/chrome-webidl/JSWindowActor.webidl b/dom/chrome-webidl/JSWindowActor.webidl index e680690d74dc..d6683a573cda 100644 --- a/dom/chrome-webidl/JSWindowActor.webidl +++ b/dom/chrome-webidl/JSWindowActor.webidl @@ -38,25 +38,31 @@ interface JSWindowActorChild { [Throws] readonly attribute nsIDocShell? docShell; - // NOTE: As this returns a window proxy, it may not be currently referencing - // the document associated with this JSWindowActor. Generally prefer using - // `document`. + /** + * NOTE: As this returns a window proxy, it may not be currently referencing + * the document associated with this JSWindowActor. Generally prefer using + * `document`. + */ [Throws] readonly attribute WindowProxy? contentWindow; }; JSWindowActorChild implements JSWindowActor; -// WebIDL callback interface version of the nsIObserver interface for use when -// calling the observe method on JSWindowActors. -// -// NOTE: This isn't marked as ChromeOnly, as it has no interface object, and -// thus cannot be conditionally exposed. +/** + * WebIDL callback interface version of the nsIObserver interface for use when + * calling the observe method on JSWindowActors. + * + * NOTE: This isn't marked as ChromeOnly, as it has no interface object, and + * thus cannot be conditionally exposed. + */ callback interface MozObserverCallback { void observe(nsISupports subject, ByteString topic, DOMString? data); }; -// WebIDL callback interface calling the `willDestroy` and `didDestroy` -// method on JSWindowActors. +/** + * WebIDL callback interface calling the `willDestroy` and `didDestroy` + * method on JSWindowActors. + */ [MOZ_CAN_RUN_SCRIPT_BOUNDARY] callback MozActorDestroyCallback = void(); @@ -65,7 +71,7 @@ dictionary MozActorDestroyCallbacks { [ChromeOnly] MozActorDestroyCallback didDestroy; }; -/* +/** * Used by ChromeUtils.registerWindowActor() to register JS window actor. */ dictionary WindowActorOptions { @@ -104,7 +110,7 @@ dictionary WindowActorOptions { }; dictionary WindowActorSidedOptions { - /** The module path which should be loaded for the actor on this side. */ + /** The JSM path which should be loaded for the actor on this side. */ ByteString moduleURI; }; @@ -112,18 +118,20 @@ dictionary WindowActorChildOptions : WindowActorSidedOptions { /** * Events which this actor wants to be listening to. When these events fire, * it will trigger actor creation, and then forward the event to the actor. + * + * NOTE: `once` option is not support due to we register listeners in a shared + * location. */ record events; /** - * Array of observer topics to listen to. A observer will be added for each + * An array of observer topics to listen to. An observer will be added for each * topic in the list. * - * Observers in the list much use the nsGlobalWindowInner object as their topic, - * and the events will only be dispatched to the corresponding window actor. If - * additional observer notifications are needed with different listening - * conditions, please file a bug in DOM requesting support for the subject - * required to be added to JS WindowActor objects. + * Observer notifications in the list use nsGlobalWindowInner object as their + * subject, and the events will only be dispatched to the corresponding window + * actor. If additional observer notification's subjects are needed, please + * file a bug for that. **/ sequence observers; }; \ No newline at end of file From fd337bafb4280c8a396e264266b10b8d29b59245 Mon Sep 17 00:00:00 2001 From: Gijs Kruitbosch Date: Fri, 31 May 2019 14:17:47 +0000 Subject: [PATCH 16/47] Bug 1196094 - disable _exit in child processes when generating profile information, r=froydnj Differential Revision: https://phabricator.services.mozilla.com/D33269 --HG-- extra : moz-landing-system : lando --- build/moz.configure/toolchain.configure | 3 +++ xpcom/base/nscore.h | 8 +++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/build/moz.configure/toolchain.configure b/build/moz.configure/toolchain.configure index 446ee0bdf89e..92721d6c1247 100755 --- a/build/moz.configure/toolchain.configure +++ b/build/moz.configure/toolchain.configure @@ -1469,6 +1469,9 @@ imply_option('MOZ_PGO', set_config('MOZ_PROFILE_GENERATE', depends_if('--enable-profile-generate')(lambda _: True)) +set_define('MOZ_PROFILE_GENERATE', + depends_if('--enable-profile-generate')(lambda _: True)) + js_option('--enable-profile-use', help='Use a generated profile during the build') diff --git a/xpcom/base/nscore.h b/xpcom/base/nscore.h index ee54d0e0070d..984e719c8193 100644 --- a/xpcom/base/nscore.h +++ b/xpcom/base/nscore.h @@ -166,9 +166,15 @@ /* If a program allocates memory for the lifetime of the app, it doesn't make * sense to touch memory pages and free that memory at shutdown, * unless we are running leak stats. + * + * Note that we're also setting this for code coverage and pgo profile + * generation, because both of those require atexit hooks, which won't fire + * if we're using _exit. Bug 1555974 covers improving this. + * */ #if defined(NS_BUILD_REFCNT_LOGGING) || defined(MOZ_VALGRIND) || \ - defined(MOZ_ASAN) || defined(MOZ_CODE_COVERAGE) + defined(MOZ_ASAN) || defined(MOZ_CODE_COVERAGE) || \ + defined(MOZ_PROFILE_GENERATE) # define NS_FREE_PERMANENT_DATA #endif From 871405553f5dd87b452de5ff35bf4411f602ccd8 Mon Sep 17 00:00:00 2001 From: Gijs Kruitbosch Date: Fri, 31 May 2019 14:18:05 +0000 Subject: [PATCH 17/47] Bug 1196094 - use e10s when doing PGO profiling, r=froydnj Differential Revision: https://phabricator.services.mozilla.com/D32329 --HG-- extra : moz-landing-system : lando --- build/pgo/profileserver.py | 19 +++++++++++++------ .../scripts/android_emulator_pgo.py | 6 ++++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/build/pgo/profileserver.py b/build/pgo/profileserver.py index eac68262ace8..aacec93a8be3 100755 --- a/build/pgo/profileserver.py +++ b/build/pgo/profileserver.py @@ -63,13 +63,18 @@ if __name__ == '__main__': for path in prefpaths: prefs.update(Preferences.read_prefs(path)) - interpolation = {"server": "%s:%d" % httpd.httpd.server_address, - "OOP": "false"} + interpolation = {"server": "%s:%d" % httpd.httpd.server_address} for k, v in prefs.items(): if isinstance(v, string_types): v = v.format(**interpolation) prefs[k] = Preferences.cast(v) + # Enforce e10s. This isn't in one of the user.js files because those + # are shared with android, which doesn't want this on. We can't + # interpolate because the formatting code only works for strings, + # and this is a bool pref. + prefs["browser.tabs.remote.autostart"] = True + profile = FirefoxProfile(profile=profilePath, preferences=prefs, addons=[os.path.join( @@ -80,10 +85,12 @@ if __name__ == '__main__': env = os.environ.copy() env["MOZ_CRASHREPORTER_NO_REPORT"] = "1" env["XPCOM_DEBUG_BREAK"] = "warn" - # TODO should use e10s and gather data from all processes (bug 1196094). - # Note that unittest-required/user.js sets the autostart pref, but it - # is ignored by the code in nsAppRunner. - env["MOZ_FORCE_DISABLE_E10S"] = "1" + # We disable sandboxing to make writing profiling data actually work + # Bug 1553850 considers fixing this. + env["MOZ_DISABLE_CONTENT_SANDBOX"] = "1" + + # Ensure different pids write to different files + env["LLVM_PROFILE_FILE"] = "default_%p_random_%m.profraw" # For VC12+, make sure we can find the right bitness of pgort1x0.dll if not substs.get('HAVE_64BIT_BUILD'): diff --git a/testing/mozharness/scripts/android_emulator_pgo.py b/testing/mozharness/scripts/android_emulator_pgo.py index efe619695200..fc85c8e394ed 100644 --- a/testing/mozharness/scripts/android_emulator_pgo.py +++ b/testing/mozharness/scripts/android_emulator_pgo.py @@ -195,6 +195,12 @@ class AndroidProfileRun(TestingMixin, BaseScript, MozbaseMixin, v = v.format(**interpolation) prefs[k] = Preferences.cast(v) + # Enforce 1proc. This isn't in one of the user.js files because those + # are shared with desktop, which wants e10s. We can't interpolate + # because the formatting code only works for strings, and this is a + # bool pref. + prefs["browser.tabs.remote.autostart"] = False + outputdir = self.config.get('output_directory', '/sdcard') jarlog = posixpath.join(outputdir, 'en-US.log') profdata = posixpath.join(outputdir, 'default.profraw') From d74c1d4a0fd950e34ca47100dc8a39b17da44fce Mon Sep 17 00:00:00 2001 From: Ehsan Akhgari Date: Fri, 31 May 2019 14:33:36 +0000 Subject: [PATCH 18/47] Bug 1555846 - Block cookies from trackers with dynamic FPI; r=baku Differential Revision: https://phabricator.services.mozilla.com/D33227 --HG-- extra : moz-landing-system : lando --- netwerk/cookie/nsCookieService.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/netwerk/cookie/nsCookieService.cpp b/netwerk/cookie/nsCookieService.cpp index a2e6e0f56950..173de07ea4ca 100644 --- a/netwerk/cookie/nsCookieService.cpp +++ b/netwerk/cookie/nsCookieService.cpp @@ -3912,8 +3912,6 @@ CookieStatus nsCookieService::CheckPrefs( MOZ_ASSERT(aRejectedReason); - uint32_t aInputRejectedReason = *aRejectedReason; - *aRejectedReason = 0; // don't let ftp sites get/set cookies (could be a security issue) @@ -3958,7 +3956,14 @@ CookieStatus nsCookieService::CheckPrefs( // access to the first-party cookie jar. if (aIsForeign && aIsTrackingResource && !aFirstPartyStorageAccessGranted && aCookieSettings->GetRejectThirdPartyTrackers()) { - if (StoragePartitioningEnabled(aInputRejectedReason, aCookieSettings)) { + // Explicitly pass nsIWebProgressListener::STATE_COOKIES_BLOCKED_TRACKER + // here to ensure that we are testing the partitioning configuration only + // for the nsICookieService::BEHAVIOR_REJECT_TRACKER configuration. + // When partitioning for BEHAVIOR_REJECT_TRACKER_AND_PARTITION_FOREIGN, we + // don't want to give a free pass to tracker cookies here! + if (StoragePartitioningEnabled( + nsIWebProgressListener::STATE_COOKIES_BLOCKED_TRACKER, + aCookieSettings)) { MOZ_ASSERT(!aOriginAttrs.mFirstPartyDomain.IsEmpty(), "We must have a StoragePrincipal here!"); return STATUS_ACCEPTED; From c2d8717df16826f14b0492f40c374dff803c5999 Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Thu, 30 May 2019 01:01:19 +0000 Subject: [PATCH 19/47] Bug 1555518 - Fixes original stack display for wasm files, and ref to original source. r=jlast - Fixes expandFrames() to ensure the thread property is set - Refactors getSourceLocationFromMouseEvent to use fromEditorLine - Replaces dwarf_to_json (for proper DWARF conversion) Differential Revision: https://phabricator.services.mozilla.com/D33092 --HG-- extra : moz-landing-system : lando --- .../src/utils/wasmRemap.js | 3 ++- .../wasm/dwarf_to_json.wasm | Bin 246168 -> 246995 bytes .../debugger/src/actions/pause/mapFrames.js | 4 ++-- .../client/debugger/src/utils/editor/index.js | 7 ++++--- .../source-map/assets/dwarf_to_json.wasm | Bin 246168 -> 246995 bytes 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/devtools/client/debugger/packages/devtools-source-map/src/utils/wasmRemap.js b/devtools/client/debugger/packages/devtools-source-map/src/utils/wasmRemap.js index 64873e498d7c..4fee7b630bce 100644 --- a/devtools/client/debugger/packages/devtools-source-map/src/utils/wasmRemap.js +++ b/devtools/client/debugger/packages/devtools-source-map/src/utils/wasmRemap.js @@ -56,7 +56,7 @@ class WasmRemap { column: 0, }; if (this._computeColumnSpans) { - generatedPosition.lastColumn = Infinity; + generatedPosition.lastColumn = 0; } return generatedPosition; } @@ -95,6 +95,7 @@ class WasmRemap { source, generatedLine: generatedColumn, generatedColumn: 0, + lastGeneratedColumn: 0, originalLine, originalColumn, name, diff --git a/devtools/client/debugger/packages/devtools-source-map/wasm/dwarf_to_json.wasm b/devtools/client/debugger/packages/devtools-source-map/wasm/dwarf_to_json.wasm index 7969999e1da2b077aae5266bf59f8e3e747c06b9..c58b18903553789dd07247bd70d598a0e5c2aeee 100755 GIT binary patch literal 246995 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

Y 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�!mohsY1o19!Xd4_wrWcVRJb+iN;Cv%>bO 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�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 J@az%j`ahz7y%GQb From 34c2e29c14059b3ee5cd705c7e2c75951a4cc540 Mon Sep 17 00:00:00 2001 From: Andrew Swan Date: Fri, 31 May 2019 07:01:03 +0000 Subject: [PATCH 20/47] Bug 1554437 Fix selectors on download-indicators-anchor r=sfoster,dao These selectors were using the direct child combinator which broke when toolbarbutton switched away from XBL. Differential Revision: https://phabricator.services.mozilla.com/D32919 --HG-- extra : moz-landing-system : lando --- browser/base/content/browser.css | 4 ++-- browser/themes/shared/downloads/indicator.inc.css | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/browser/base/content/browser.css b/browser/base/content/browser.css index 8dd343eea717..78ec2e801c32 100644 --- a/browser/base/content/browser.css +++ b/browser/base/content/browser.css @@ -1046,7 +1046,7 @@ browser[tabmodalPromptShowing] { and just show the icon. This is a hack to side-step very weird layout bugs that seem to be caused by the indicator stack interacting with the menu panel. */ #downloads-button[indicator]:not([cui-areatype="menu-panel"]) > .toolbarbutton-badge-stack > image.toolbarbutton-icon, -#downloads-button[indicator][cui-areatype="menu-panel"] > #downloads-indicator-anchor { +#downloads-button[indicator][cui-areatype="menu-panel"] > .toolbarbutton-badge-stack > #downloads-indicator-anchor { display: none; } @@ -1054,7 +1054,7 @@ toolbarpaletteitem[place="palette"] > #downloads-button[indicator] > .toolbarbut display: -moz-box; } -toolbarpaletteitem[place="palette"] > #downloads-button[indicator] > #downloads-indicator-anchor { +toolbarpaletteitem[place="palette"] > #downloads-button[indicator] > .toolbarbutton-badge-stack > #downloads-indicator-anchor { display: none; } diff --git a/browser/themes/shared/downloads/indicator.inc.css b/browser/themes/shared/downloads/indicator.inc.css index 1620d544a636..d5872b8d17ea 100644 --- a/browser/themes/shared/downloads/indicator.inc.css +++ b/browser/themes/shared/downloads/indicator.inc.css @@ -16,13 +16,13 @@ background: url("chrome://browser/skin/downloads/download-icons.svg#default-bar") center no-repeat; } -#downloads-button[attention="success"] > #downloads-indicator-anchor > #downloads-indicator-icon, -#downloads-button[attention="success"] > #downloads-indicator-anchor > #downloads-indicator-progress-outer { +#downloads-button[attention="success"] > .toolbarbutton-badge-stack > #downloads-indicator-anchor > #downloads-indicator-icon, +#downloads-button[attention="success"] > .toolbarbutton-badge-stack > #downloads-indicator-anchor > #downloads-indicator-progress-outer { -moz-context-properties: fill, fill-opacity; fill: var(--toolbarbutton-icon-fill-attention); fill-opacity: 1; } -#downloads-button[progress] > #downloads-indicator-anchor > #downloads-indicator-progress-outer { +#downloads-button[progress] > .toolbarbutton-badge-stack > #downloads-indicator-anchor > #downloads-indicator-progress-outer { background: url("chrome://browser/skin/downloads/download-icons.svg#progress-bar-bg") center no-repeat; } @@ -109,7 +109,7 @@ /*** Download notifications ***/ -#downloads-button[notification="start"] > #downloads-indicator-anchor > #downloads-indicator-icon { +#downloads-button[notification="start"] > .toolbarbutton-badge-stack > #downloads-indicator-anchor > #downloads-indicator-icon { animation-name: downloadsIndicatorStartDip; /* Upon changing the duration_delay below, please keep the delay time of setTimeout() identical in indicator.js for this animation. @@ -145,7 +145,7 @@ to { transform: scale(1); animation-timing-function: ease-in; } } -#downloads-button[notification="finish"] > #downloads-indicator-anchor > #downloads-indicator-icon { +#downloads-button[notification="finish"] > .toolbarbutton-badge-stack > #downloads-indicator-anchor > #downloads-indicator-icon { animation-name: downloadsIndicatorFinishPulse; animation-delay: 250ms; animation-duration: 300ms; From a14e007fbd2866f6057450d643c8bd40bfe1b916 Mon Sep 17 00:00:00 2001 From: Chris H-C Date: Fri, 31 May 2019 13:36:27 +0000 Subject: [PATCH 21/47] Bug 1555798 - Use a scalar name copy instead of a &BaseScalarInfo r=Dexter References to ScalarInfo objects are stable for all scalars registered at compile-time, but not for those registered at runtime. Differential Revision: https://phabricator.services.mozilla.com/D33274 --HG-- extra : moz-landing-system : lando --- .../telemetry/core/TelemetryScalar.cpp | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/toolkit/components/telemetry/core/TelemetryScalar.cpp b/toolkit/components/telemetry/core/TelemetryScalar.cpp index 35ef7cc02e9d..cd902ed43b9c 100644 --- a/toolkit/components/telemetry/core/TelemetryScalar.cpp +++ b/toolkit/components/telemetry/core/TelemetryScalar.cpp @@ -827,7 +827,7 @@ class KeyedScalar { typedef mozilla::Pair> KeyValuePair; explicit KeyedScalar(const BaseScalarInfo& info) - : mScalarInfo(info), mMaximumNumberOfKeys(kMaximumNumberOfKeys){}; + : mScalarName(info.name()), mMaximumNumberOfKeys(kMaximumNumberOfKeys){}; ~KeyedScalar() = default; // Set, Add and SetMaximum functions as described in the Telemetry IDL. @@ -865,8 +865,8 @@ class KeyedScalar { private: typedef nsClassHashtable ScalarKeysMapType; + const nsCString mScalarName; ScalarKeysMapType mScalarKeys; - const BaseScalarInfo& mScalarInfo; uint32_t mMaximumNumberOfKeys; ScalarResult GetScalarForKey(const StaticMutexAutoLock& locker, @@ -1012,6 +1012,10 @@ nsresult internal_GetKeyedScalarByEnum(const StaticMutexAutoLock& lock, ProcessID aProcessStorage, KeyedScalar** aRet); +// Forward declaration +nsresult internal_GetEnumByScalarName(const StaticMutexAutoLock& lock, + const nsACString& aName, ScalarKey* aId); + /** * Get the scalar for the referenced key. * If there's no such key, instantiate a new Scalar object with the @@ -1036,6 +1040,14 @@ ScalarResult KeyedScalar::GetScalarForKey(const StaticMutexAutoLock& locker, return ScalarResult::Ok; } + ScalarKey uniqueId; + nsresult rv = internal_GetEnumByScalarName(locker, mScalarName, &uniqueId); + if (NS_FAILED(rv)) { + return (rv == NS_ERROR_FAILURE) ? ScalarResult::NotInitialized + : ScalarResult::UnknownScalar; + } + + const BaseScalarInfo& info = internal_GetScalarInfo(locker, uniqueId); if (mScalarKeys.Count() >= mMaximumNumberOfKeys) { if (aKey.EqualsLiteral("telemetry.keyed_scalars_exceed_limit")) { return ScalarResult::TooManyKeys; @@ -1056,13 +1068,12 @@ ScalarResult KeyedScalar::GetScalarForKey(const StaticMutexAutoLock& locker, return ScalarResult::TooManyKeys; } - scalarExceed->AddValue(locker, NS_ConvertUTF8toUTF16(mScalarInfo.name()), - 1); + scalarExceed->AddValue(locker, NS_ConvertUTF8toUTF16(info.name()), 1); return ScalarResult::TooManyKeys; } - scalar = internal_ScalarAllocate(mScalarInfo); + scalar = internal_ScalarAllocate(info); if (!scalar) { return ScalarResult::InvalidType; } From a8603294b5f00ac96e207f3c8c9b1d114267d004 Mon Sep 17 00:00:00 2001 From: Chris H-C Date: Fri, 31 May 2019 15:01:23 +0000 Subject: [PATCH 22/47] Bug 1555798 - Test that registering and recording dynamic events and scalars together does not crash. r=Dexter Depends on D33274 Differential Revision: https://phabricator.services.mozilla.com/D33275 --HG-- extra : moz-landing-system : lando --- .../telemetry/tests/unit/test_bug1555798.js | 47 +++++++++++++++++++ .../telemetry/tests/unit/xpcshell.ini | 1 + 2 files changed, 48 insertions(+) create mode 100644 toolkit/components/telemetry/tests/unit/test_bug1555798.js diff --git a/toolkit/components/telemetry/tests/unit/test_bug1555798.js b/toolkit/components/telemetry/tests/unit/test_bug1555798.js new file mode 100644 index 000000000000..9dec05346569 --- /dev/null +++ b/toolkit/components/telemetry/tests/unit/test_bug1555798.js @@ -0,0 +1,47 @@ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ +*/ + +ChromeUtils.defineModuleGetter(this, "TelemetryTestUtils", + "resource://testing-common/TelemetryTestUtils.jsm"); + +add_task(async function test_bug1555798() { + /* + The idea behind this bug is that the registration of dynamic scalars causes + the position of the scalarinfo for telemetry.dynamic_events_count to move + which causes things to asplode. + + So to test this we'll be registering two dynamic events, recording to one of + the events (to ensure the Scalar for event1 is allocated from the unmoved + DynamicScalarInfo&), registering several dynamic scalars to cause the + nsTArray of DynamicScalarInfo to realloc, and then recording to the second + event to make the Event Summary Scalar for event2 try to allocate from where + the DynamicScalarInfo used to be. + */ + Telemetry.clearEvents(); + + const DYNAMIC_CATEGORY = "telemetry.test.dynamic.event"; + Telemetry.registerEvents(DYNAMIC_CATEGORY, { + "an_event": { + methods: ["a_method"], + objects: ["an_object", "another_object"], + record_on_release: true, + expired: false, + }, + }); + Telemetry.recordEvent(DYNAMIC_CATEGORY, "a_method", "an_object"); + + for (let i = 0; i < 100; ++i) { + Telemetry.registerScalars("telemetry.test.dynamic" + i, { + "scalar_name": { + kind: Ci.nsITelemetry.SCALAR_TYPE_COUNT, + record_on_release: true, + }, + }); + Telemetry.scalarAdd("telemetry.test.dynamic" + i + ".scalar_name", 1); + } + + Telemetry.recordEvent(DYNAMIC_CATEGORY, "a_method", "another_object"); + + TelemetryTestUtils.assertNumberOfEvents(2, {}, {process: "dynamic"}); +}); diff --git a/toolkit/components/telemetry/tests/unit/xpcshell.ini b/toolkit/components/telemetry/tests/unit/xpcshell.ini index dcdce89cc686..f59a31a52b15 100644 --- a/toolkit/components/telemetry/tests/unit/xpcshell.ini +++ b/toolkit/components/telemetry/tests/unit/xpcshell.ini @@ -103,3 +103,4 @@ skip-if = (os == "linux" && bits == 32) # lack of support on test runners (see b tags = coverage [test_CoveragePing.js] [test_PrioPing.js] +[test_bug1555798.js] From 071538b25c9a995b36c6de8c00553f94037a98bb Mon Sep 17 00:00:00 2001 From: Dorel Luca Date: Fri, 31 May 2019 18:14:42 +0300 Subject: [PATCH 23/47] Backed out changeset 17a2436c527e (bug 1555876) for Geckoview related to mozilla::dom::IDBFactory. CLOSED TREE --- dom/indexedDB/IDBFactory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dom/indexedDB/IDBFactory.cpp b/dom/indexedDB/IDBFactory.cpp index de3025ba84c8..f3a0a84c1d6f 100644 --- a/dom/indexedDB/IDBFactory.cpp +++ b/dom/indexedDB/IDBFactory.cpp @@ -167,7 +167,7 @@ nsresult IDBFactory::CreateForMainThreadJS(nsIGlobalObject* aGlobal, } nsAutoPtr principalInfo(new PrincipalInfo()); - nsIPrincipal* principal = sop->GetEffectiveStoragePrincipal(); + nsIPrincipal* principal = sop->GetPrincipal(); MOZ_ASSERT(principal); bool isSystem; if (!AllowedForPrincipal(principal, &isSystem)) { From 72973df6971b3920d69984c0ef5e3885f4de9fb2 Mon Sep 17 00:00:00 2001 From: Dorel Luca Date: Fri, 31 May 2019 18:17:11 +0300 Subject: [PATCH 24/47] Backed out changeset 95ffb38f6a64 (bug 1555518) for Debugger failure. CLOSED TREE --- .../src/utils/wasmRemap.js | 3 +-- .../wasm/dwarf_to_json.wasm | Bin 246995 -> 246168 bytes .../debugger/src/actions/pause/mapFrames.js | 4 ++-- .../client/debugger/src/utils/editor/index.js | 7 +++---- .../source-map/assets/dwarf_to_json.wasm | Bin 246995 -> 246168 bytes 5 files changed, 6 insertions(+), 8 deletions(-) diff --git a/devtools/client/debugger/packages/devtools-source-map/src/utils/wasmRemap.js b/devtools/client/debugger/packages/devtools-source-map/src/utils/wasmRemap.js index 4fee7b630bce..64873e498d7c 100644 --- a/devtools/client/debugger/packages/devtools-source-map/src/utils/wasmRemap.js +++ b/devtools/client/debugger/packages/devtools-source-map/src/utils/wasmRemap.js @@ -56,7 +56,7 @@ class WasmRemap { column: 0, }; if (this._computeColumnSpans) { - generatedPosition.lastColumn = 0; + generatedPosition.lastColumn = Infinity; } return generatedPosition; } @@ -95,7 +95,6 @@ class WasmRemap { source, generatedLine: generatedColumn, generatedColumn: 0, - lastGeneratedColumn: 0, originalLine, originalColumn, name, diff --git a/devtools/client/debugger/packages/devtools-source-map/wasm/dwarf_to_json.wasm b/devtools/client/debugger/packages/devtools-source-map/wasm/dwarf_to_json.wasm index c58b18903553789dd07247bd70d598a0e5c2aeee..7969999e1da2b077aae5266bf59f8e3e747c06b9 100755 GIT binary patch literal 246168 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

Y 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�!mohsY1o19!Xd4_wrWcVRJb+iN;Cv%>bO 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�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 J@az%j`ahz7y%GQb literal 246995 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 z { - if (!originalFrame.location) { + if (!originalFrame.location || !originalFrame.thread) { return; } @@ -145,10 +145,10 @@ async function expandFrames( const id = j == 0 ? frame.id : `${frame.id}-originalFrame${j}`; result.push({ id, + thread: originalFrame.thread, displayName: originalFrame.displayName, location: originalFrame.location, source: null, - thread: frame.thread, scope: frame.scope, this: frame.this, isOriginal: true, diff --git a/devtools/client/debugger/src/utils/editor/index.js b/devtools/client/debugger/src/utils/editor/index.js index 3cd20de7666e..86c2017cf303 100644 --- a/devtools/client/debugger/src/utils/editor/index.js +++ b/devtools/client/debugger/src/utils/editor/index.js @@ -224,12 +224,11 @@ export function getSourceLocationFromMouseEvent( left: e.clientX, top: e.clientY, }); - const sourceId = source.id; return { - sourceId, - line: fromEditorLine(sourceId, line), - column: isWasm(sourceId) ? 0 : ch + 1, + sourceId: source.id, + line: line + 1, + column: ch + 1, }; } diff --git a/devtools/client/shared/source-map/assets/dwarf_to_json.wasm b/devtools/client/shared/source-map/assets/dwarf_to_json.wasm index c58b18903553789dd07247bd70d598a0e5c2aeee..7969999e1da2b077aae5266bf59f8e3e747c06b9 100644 GIT binary patch literal 246168 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

Y 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�!mohsY1o19!Xd4_wrWcVRJb+iN;Cv%>bO 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�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 J@az%j`ahz7y%GQb literal 246995 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 z Date: Fri, 31 May 2019 16:07:09 +0000 Subject: [PATCH 25/47] Bug 1307227 - Copy over the Gecko Profiler Addon files; r=julienw This bug's first commit will be a non-working revision. These files are taken from: https://github.com/firefox-devtools/Gecko-Profiler-Addon/commit/68d5de9c9ff64096181bc1a45098d6c205172faa Differential Revision: https://phabricator.services.mozilla.com/D31547 --HG-- extra : moz-landing-system : lando --- .../performance-new/popup/background.jsm | 306 +++++++++++++ .../popup/icons/capture-profile-icon.svg | 11 + .../client/performance-new/popup/popup.css | 407 ++++++++++++++++++ .../client/performance-new/popup/popup.html | 178 ++++++++ .../client/performance-new/popup/popup.js | 385 +++++++++++++++++ 5 files changed, 1287 insertions(+) create mode 100644 devtools/client/performance-new/popup/background.jsm create mode 100644 devtools/client/performance-new/popup/icons/capture-profile-icon.svg create mode 100644 devtools/client/performance-new/popup/popup.css create mode 100644 devtools/client/performance-new/popup/popup.html create mode 100644 devtools/client/performance-new/popup/popup.js diff --git a/devtools/client/performance-new/popup/background.jsm b/devtools/client/performance-new/popup/background.jsm new file mode 100644 index 000000000000..cac412abb625 --- /dev/null +++ b/devtools/client/performance-new/popup/background.jsm @@ -0,0 +1,306 @@ +/* global browser */ + +const DEFAULT_VIEWER_URL = "https://profiler.firefox.com"; +const DEFAULT_WINDOW_LENGTH = 20; // 20sec + +const tabToConnectionMap = new Map(); + +var profilerState; +var profileViewerURL = DEFAULT_VIEWER_URL; +var isMigratedToNewUrl; + +function adjustState(newState) { + // Deep clone the object, since this can be called through popup.html, + // which can be unloaded thus leaving this object dead. + newState = JSON.parse(JSON.stringify(newState)); + Object.assign(window.profilerState, newState); + browser.storage.local.set({ profilerState: window.profilerState }); +} + +function makeProfileAvailableToTab(profile, port) { + port.postMessage({ type: "ProfilerConnectToPage", payload: profile }); + + port.onMessage.addListener(async message => { + if (message.type === "ProfilerGetSymbolTable") { + const { debugName, breakpadId } = message; + try { + const [ + addresses, + index, + buffer, + ] = await browser.geckoProfiler.getSymbols(debugName, breakpadId); + + port.postMessage({ + type: "ProfilerGetSymbolTableReply", + status: "success", + result: [addresses, index, buffer], + debugName, + breakpadId, + }); + } catch (e) { + port.postMessage({ + type: "ProfilerGetSymbolTableReply", + status: "error", + error: `${e}`, + debugName, + breakpadId, + }); + } + } + }); +} + +async function createAndWaitForTab(url) { + const tabPromise = browser.tabs.create({ + active: true, + url, + }); + + return tabPromise; +} + +function getProfilePreferablyAsArrayBuffer() { + // This is a compatibility wrapper for Firefox builds from before 1362800 + // landed. We can remove it once Nightly switches to 56. + if ("getProfileAsArrayBuffer" in browser.geckoProfiler) { + return browser.geckoProfiler.getProfileAsArrayBuffer(); + } + return browser.geckoProfiler.getProfile(); +} + +async function captureProfile() { + // Pause profiler before we collect the profile, so that we don't capture + // more samples while the parent process waits for subprocess profiles. + await browser.geckoProfiler.pause().catch(() => {}); + + const profilePromise = getProfilePreferablyAsArrayBuffer().catch( + e => { + console.error(e); + return {}; + } + ); + + const tabOpenPromise = createAndWaitForTab(profileViewerURL + "/from-addon"); + + try { + const [profile, tab] = await Promise.all([profilePromise, tabOpenPromise]); + + const connection = tabToConnectionMap.get(tab.id); + + if (connection) { + // If, for instance, it takes a long time to load the profile, + // then our onDOMContentLoaded handler and our runtime.onConnect handler + // have already connected to the page. All we need to do then is + // provide the profile. + makeProfileAvailableToTab(profile, connection.port); + } else { + // If our onDOMContentLoaded handler and our runtime.onConnect handler + // haven't connected to the page, set this so that they'll have a + // profile they can provide once they do. + tabToConnectionMap.set(tab.id, { profile }); + } + } catch (e) { + console.error(e); + // const { tab } = await tabOpenPromise; + // TODO data URL doesn't seem to be working. Permissions issue? + // await browser.tabs.update(tab.id, { url: `data:text/html,${encodeURIComponent(e.toString)}` }); + } + + try { + await browser.geckoProfiler.resume(); + } catch (e) { + console.error(e); + } +} + +/** + * Not all features are supported on every version of Firefox. Get the list of checked + * features, add a few defaults, and filter for what is actually supported. + */ +function getEnabledFeatures(features, threads) { + const enabledFeatures = Object.keys(features).filter(f => features[f]); + if (threads.length > 0) { + enabledFeatures.push("threads"); + } + const supportedFeatures = Object.values( + browser.geckoProfiler.ProfilerFeature + ); + return enabledFeatures.filter(feature => supportedFeatures.includes(feature)); +} + +async function startProfiler() { + const settings = window.profilerState; + const threads = settings.threads.split(","); + const options = { + bufferSize: settings.buffersize, + interval: settings.interval, + features: getEnabledFeatures(settings.features, threads), + threads, + }; + if ( + browser.geckoProfiler.supports && + browser.geckoProfiler.supports.WINDOWLENGTH + ) { + options.windowLength = + settings.windowLength !== settings.infiniteWindowLength + ? settings.windowLength + : 0; + } + await browser.geckoProfiler.start(options); +} + +async function stopProfiler() { + await browser.geckoProfiler.stop(); +} + +/* exported restartProfiler */ +async function restartProfiler() { + await stopProfiler(); + await startProfiler(); +} + +(async () => { + const storageResults = await browser.storage.local.get({ + profilerState: null, + profileViewerURL: DEFAULT_VIEWER_URL, + // This value is to check whether or not folks have been migrated from + // perf-html.io to profiler.firefox.com + isMigratedToNewUrl: false, + }); + + // Assign to global variables: + window.profilerState = storageResults.profilerState; + window.profileViewerURL = storageResults.profileViewerURL; + + if (!storageResults.isMigratedToNewUrl) { + if (window.profileViewerURL.startsWith("https://perf-html.io")) { + // This user needs to be migrated from perf-html.io to profiler.firefox.com. + // This is only done one time. + window.profileViewerURL = DEFAULT_VIEWER_URL; + } + // Store the fact that this migration check has been done, and optionally update + // the url if it was changed. + await browser.storage.local.set({ + isMigratedToNewUrl: true, + profileViewerURL: window.profileViewerURL, + }); + } + + if (!window.profilerState) { + window.profilerState = {}; + + const features = { + java: false, + js: true, + leaf: true, + mainthreadio: false, + memory: false, + privacy: false, + responsiveness: true, + screenshots: false, + seqstyle: false, + stackwalk: true, + tasktracer: false, + trackopts: false, + jstracer: false, + }; + + const platform = await browser.runtime.getPlatformInfo(); + switch (platform.os) { + case "mac": + // Screenshots are currently only working on mac. + features.screenshots = true; + break; + case "android": + // Java profiling is only meaningful on android. + features.java = true; + break; + } + + adjustState({ + isRunning: false, + settingsOpen: false, + buffersize: 10000000, // 90MB + windowLength: DEFAULT_WINDOW_LENGTH, + interval: 1, + features, + threads: "GeckoMain,Compositor", + }); + } else if (window.profilerState.windowLength === undefined) { + // We have `windowprofilerState` but no `windowLength`. + // That means we've upgraded the gecko profiler addon from an older version. + // Adding the default window legth in that case. + adjustState({ + windowLength: DEFAULT_WINDOW_LENGTH, + }); + } + + browser.geckoProfiler.onRunning.addListener(isRunning => { + adjustState({ isRunning }); + + // With "path: null" we'll get the default icon for the browser action, which + // is theme-aware. + // The on state does not need to be theme-aware because we want to highlight + // the icon in blue regardless of whether a dark or a light theme is in use. + browser.browserAction.setIcon({ + path: isRunning ? "icons/toolbar_on.png" : null, + }); + + browser.browserAction.setTitle({ + title: isRunning ? "Gecko Profiler (on)" : null, + }); + + for (const popup of browser.extension.getViews({ type: "popup" })) { + popup.renderState(window.profilerState); + } + }); + + browser.storage.onChanged.addListener(changes => { + if (changes.profileViewerURL) { + profileViewerURL = changes.profileViewerURL.newValue; + } + }); + + browser.commands.onCommand.addListener(command => { + if (command === "ToggleProfiler") { + if (window.profilerState.isRunning) { + stopProfiler(); + } else { + startProfiler(); + } + } else if (command === "CaptureProfile") { + if (window.profilerState.isRunning) { + captureProfile(); + } + } + }); + + browser.runtime.onConnect.addListener(port => { + const tabId = port.sender.tab.id; + const connection = tabToConnectionMap.get(tabId); + if (connection && connection.profile) { + makeProfileAvailableToTab(connection.profile, port); + } else { + tabToConnectionMap.set(tabId, { port }); + } + }); + + browser.tabs.onRemoved.addListener(tabId => { + tabToConnectionMap.delete(tabId); + }); + + browser.webNavigation.onDOMContentLoaded.addListener( + async ({ frameId, tabId, url }) => { + if (frameId !== 0) { + return; + } + if (url.startsWith(profileViewerURL)) { + browser.tabs.executeScript(tabId, { file: "content.js" }); + } else { + // As soon as we navigate away from the profile report, clean + // this up so we don't leak it. + tabToConnectionMap.delete(tabId); + } + } + ); +})(); diff --git a/devtools/client/performance-new/popup/icons/capture-profile-icon.svg b/devtools/client/performance-new/popup/icons/capture-profile-icon.svg new file mode 100644 index 000000000000..da8e942c019c --- /dev/null +++ b/devtools/client/performance-new/popup/icons/capture-profile-icon.svg @@ -0,0 +1,11 @@ + + + + + + diff --git a/devtools/client/performance-new/popup/popup.css b/devtools/client/performance-new/popup/popup.css new file mode 100644 index 000000000000..62f1f2e323fd --- /dev/null +++ b/devtools/client/performance-new/popup/popup.css @@ -0,0 +1,407 @@ +html { + background: rgb(250,250,250); + font: message-box; + -moz-user-select: none; + cursor: default; + overflow: auto; +} + +* { + flex-shrink: 0; +} + +body { + margin: 0; + /** + * We had to use `max-width` instead of `width` here because of a bug on Firefox + * that causes a horizontal scrollbar when there is a vertical scrollbar on Linux. + * This is not a problem on platforms that have a floating scrollbar that doesn't + * take additional space, but on platforms that we don't have floating scrollbar, + * it takes some space from the body element and causes horizontal scrollbar to appear. + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=1400279 + */ + max-width: 32em; +} + +.status-display { + margin: 0; + padding: 10px 4px; + position: relative; +} + +.status-display::before { + content: ''; + display: inline-block; + width: 17px; + height: 17px; + vertical-align: top; + margin: -2px 3px -20px; +} + +:root.status-stopped .status-display:not(.status-display-stopped) { display: none; } +:root.status-running .status-display:not(.status-display-running) { display: none; } + +.status-display-stopped { + background: hsl(210, 80%, 85%); +} + +.status-display-running { + background: hsl(90, 70%, 70%); +} + +.status-display-stopped::before { + background: hsl(210, 70%, 60%); +} + +.status-display-running::before { + background: hsl(90, 80%, 40%); + border-radius: 100%; +} + +.status-display-button { + position: absolute; + top: 7px; + right: 7px; + padding: 2.5px; + border: 0.5px solid transparent; + border-radius: 2px; +} + +.status-display-button:hover { + box-shadow: inset 0 0.5px hsla(0,0%,100%,0.3); + color: black; +} + +.status-display-button:hover:active { + box-shadow: inset 0 2px 5px rgba(0,0,0,0.15); +} + +.button-start { + border-color: hsl(210, 30%, 60%); + background: rgba(0,0,0,0.08); + color: hsl(210, 80%, 20%); +} + +.button-cancel { + border-color: hsl(90, 40%, 50%); + background: rgba(0,0,0,0.08); + color: hsl(90, 80%, 20%); +} + +.button-start:hover { + border-color: hsl(90, 40%, 50%); + background: linear-gradient(hsl(90, 70%, 68%), hsl(90, 70%, 58%)); + color: hsl(90, 80%, 20%); +} + +.button-cancel:hover { + background: linear-gradient(hsl(0, 95%, 68%), hsl(0, 95%, 58%)); + border-color: hsl(0, 90%, 30%); +} + +.button-start:hover:active { + background: linear-gradient(hsl(90, 70%, 50%), hsl(90, 70%, 45%)); +} + +.button-cancel:hover:active { + background: linear-gradient(hsl(0, 90%, 50%), hsl(0, 90%, 45%)); +} + +#button-capture { + margin: 6px 5px 5px; + height: auto; + text-align: left; + padding: 5px 2px; + padding-left: 32px; + border: 1px solid #DDD; + box-shadow: 0 1px rgba(0,0,0,0.3); + border-radius: 5px; + background: linear-gradient(#FAFAFA, #EEE); + display: block; + position: relative; +} + +:root.status-stopped #button-capture { + color: GrayText; +} + +:root.status-running #button-capture:hover { + background: linear-gradient(#EEE, #DDD); +} + +:root.status-running #button-capture:hover:active { + background: #CCC; + border-color: #BBB; +} + +#capture-label { + display: flex; + flex-flow: row nowrap; + margin-bottom: 4px; + font-size: 14px; +} + +#capture-label::before { + content: ''; + position: absolute; + width: 16px; + height: 16px; + background: url(icons/capture-profile-icon.svg); + top: 6px; + left: 10px; +} + +:root.status-stopped #capture-label::before { + opacity: 0.5; +} + +.keyboard-hint { + font-size: 1rem; + font-weight: normal; + flex: 1; + text-align: center; +} + +kbd { + font-size: 10px; + background-color: hsla(0,0%,100%,0.4); + border: 1px solid #CCC; + border-radius: 0.2em; + display: inline-block; + padding: 0.1em 0.35em; + box-shadow: 0 0.1em 0 #BBB; + margin: 0 0.15em; + font-family: inherit; +} + +#help-capture { + margin: 0; +} + +.info-density { + margin: 4px 12px; + display: grid; + grid-template-columns: 7em auto; + grid-template-rows: auto; +} + +.info-density > dt { + grid-column: 1; + padding: 2px 0; +} + +.info-density > dd { + grid-column: 2; + margin: 0; + padding: 5px 0 3px; +} + +.settings { + background: #FFFFFF; +} + +.settings:not(.open) > .settings-content, +.settings:not(.open) > .settings-apply-button-wrapper { + display: none; +} + +#settings-label { + margin: 0; + padding: 4px 10px; + font-size: 14px; + font-weight: bold; + background: #EEE; +} + +#settings-label:hover { + background: #DDD; +} + +#settings-label:hover:active { + background: #CCC; +} + +#settings-label::before { + content: ''; + display: inline-block; + border-left: 9px solid #BBB; + border-top: 5px solid transparent; + border-bottom: 5px solid transparent; + margin-right: 5px; +} + +.settings.open > #settings-label::before { + transform: rotate(90deg); +} + +.discrete-level { + display: flex; + height: 100%; + flex-flow: row nowrap; + justify-content: space-between; +} + +.discrete-level-notch { + flex: 1; + margin-right: 1px; + border: 1px solid rgba(0,0,0,0.2); + border-radius: 2px; +} + +.discrete-level-notch.normal.active { + border-color: hsl(90, 90%, 40%); + background-color: hsla(90, 90%, 40%, 0.5); +} + +.discrete-level-notch.warning.active { + border-color: hsl(45, 100%, 49%); + background-color: hsla(45, 100%, 49%, 0.5); +} + +.discrete-level-notch.critical.active { + border-color: hsl(0, 90%, 40%); + background-color: hsla(0, 90%, 40%, 0.5); +} + +.settings-content { + margin: 0; + padding: 0 10px 18px; + line-height: 22px; + display: grid; + grid-template-columns: 8em auto; + grid-template-rows: auto; +} + +.settings-setting-label { + margin: 0; + font-size: 100%; + font-weight: normal; +} + +.range-with-value { + display: flex; + flex-flow: row nowrap; +} + +body.no-windowlength .settings-setting-label.windowlength, +body.no-windowlength .range-with-value.windowlength { + display: none; +} + +.range-input { + margin: 0; + width: 0; + flex: 1; +} + +.range-value { + margin-left: 10px; + width: 4em; + white-space: nowrap; + flex-shrink: 0; +} + +.settings-textbox { + min-width: 0; +} + +.features-list { + margin: 0; + padding: 2px 0 0; + line-height: 20px; +} + +.features-list > li { + display: block; + margin: 0; + padding: 0; +} + +.settings-apply-button-wrapper { + padding: 4px 10px; + margin: 0; + text-align: right; + bottom: 0; + right: 0; + position: fixed; + width: 100%; + background: #eee; +} + +.perf-settings-row { + display: flex; + overflow: hidden; + line-height: 1.8; +} + +.perf-settings-row.focused { + background-color: #0074e8; + color: #ffffff; +} + +.perf-settings-text-input { + width: 100%; + padding: 4px; + box-sizing: border-box; +} + +.perf-settings-text-label { + flex: 1; +} + +.perf-settings-details-contents { + padding: 4px; + margin: 0 0 18px; + border: #ededf0 1px solid; + background-color: #f9f9fa; +} + +.perf-settings-details { + grid-column-start: 1; + grid-column-end: 3; +} + +.perf-settings-summary { + height: 30px; + cursor: default; + -moz-user-select: none; +} + +.perf-settings-thread-columns { + margin-bottom: 20px; + display: flex; + line-height: 2; +} + +.perf-settings-thread-column { + flex: 1; +} + +.perf-settings-checkbox-label { + display: block; +} + +.perf-settings-feature-label { + margin: 8px 0; + display: flex; + flex-wrap: wrap; +} + +.perf-settings-checkbox { + align-self: flex-start; +} + +.perf-settings-feature-title { + margin-left: 20px; + flex: 1 100%; + line-height: 1.6; +} + +.perf-settings-feature-name { + color: #0060df; + line-height: 1.6; +} + +.perf-settings-subtext { + font-weight: bold; +} diff --git a/devtools/client/performance-new/popup/popup.html b/devtools/client/performance-new/popup/popup.html new file mode 100644 index 000000000000..69400b8bc897 --- /dev/null +++ b/devtools/client/performance-new/popup/popup.html @@ -0,0 +1,178 @@ + + + + + + + +

+ The profiler is recording. + +

+ +

+ The profiler is stopped. + +

+ + + +
+
Overhead:
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ +
+

Settings

+
+

Interval:

+ + + 1 ms + +

Window length:

+ + + 20 sec + +

Buffer size:

+ + + 90 MB + +
+ Threads: +
+
+
+
+
+
+
+
+
+
+ Features: +
+ +
+
+
+
+
+ + + + diff --git a/devtools/client/performance-new/popup/popup.js b/devtools/client/performance-new/popup/popup.js new file mode 100644 index 000000000000..5e7cf91045d9 --- /dev/null +++ b/devtools/client/performance-new/popup/popup.js @@ -0,0 +1,385 @@ +/* global browser */ +const intervalScale = makeExponentialScale(0.01, 100); +const buffersizeScale = makeExponentialScale(10000, 100000000); +// Window Length accepts a numerical value between 1-N. We also need to put an +// infinite number at the end of the window length slider. Therefore, the max +// value pretends like it's infinite in the slider. +// The maximum value of window length is 300 seconds. For that reason, we are +// treating 400 as infinity. +const infiniteWindowLength = 400; +const windowLengthScale = makeExponentialScale(1, infiniteWindowLength); + +const PROFILE_ENTRY_SIZE = 9; // sizeof(double) + sizeof(char), http://searchfox.org/mozilla-central/rev/e8835f52eff29772a57dca7bcc86a9a312a23729/tools/profiler/core/ProfileEntry.h#73 + +const featurePrefix = "perf-settings-feature-checkbox-"; +const features = [ + "java", + "js", + "leaf", + "mainthreadio", + "memory", + "privacy", + "responsiveness", + "screenshots", + "seqstyle", + "stackwalk", + "tasktracer", + "jstracer", + "trackopts", +]; +const threadPrefix = "perf-settings-thread-checkbox-"; +// A map of element ID suffixes to their corresponding profile thread name, for +// creating ID -> name mappings, e.g.`$threadPrefix}dom-worker` - DOM Worker. +const threadMap = { + compositor: "Compositor", + "dns-resolver": "DNS Resolver", + "dom-worker": "DOM Worker", + "gecko-main": "GeckoMain", + "img-decoder": "ImgDecoder", + "paint-worker": "PaintWorker", + "render-backend": "RenderBackend", + renderer: "Renderer", + "socket-thread": "Socket Thread", + "stream-trans": "StreamTrans", + "style-thread": "StyleThread", +}; + +function renderState(state) { + const { isRunning, settingsOpen, interval, buffersize, windowLength } = state; + document.documentElement.classList.toggle("status-running", isRunning); + document.documentElement.classList.toggle("status-stopped", !isRunning); + document.querySelector(".settings").classList.toggle("open", settingsOpen); + document.querySelector(".interval-value").textContent = `${interval} ms`; + document.querySelector(".buffersize-value").textContent = prettyBytes( + buffersize * PROFILE_ENTRY_SIZE + ); + document.querySelector(".windowlength-value").textContent = windowLength === + infiniteWindowLength + ? `∞` + : `${windowLength} sec`; + const overhead = calculateOverhead(state); + const overheadDiscreteContainer = document.querySelector(".discrete-level"); + for (let i = 0; i < overheadDiscreteContainer.children.length; i++) { + const discreteLevelNotch = overheadDiscreteContainer.children[i]; + const isActive = + i <= + Math.round(overhead * (overheadDiscreteContainer.children.length - 1)); + discreteLevelNotch.classList.toggle("active", isActive); + discreteLevelNotch.classList.toggle("inactive", !isActive); + } + + renderControls(state); +} + +function renderControls(state) { + document.querySelector(".interval-range").value = + intervalScale.fromValueToFraction(state.interval) * 100; + document.querySelector(".buffersize-range").value = + buffersizeScale.fromValueToFraction(state.buffersize) * 100; + document.querySelector(".windowlength-range").value = + windowLengthScale.fromValueToFraction(state.windowLength) * 100; + + for (let name of features) { + document.getElementById(featurePrefix + name).value = state[name]; + } + + for (let name in threadMap) { + document.getElementById( + threadPrefix + name + ).checked = state.threads.includes(threadMap[name]); + } + + document.querySelector("#perf-settings-thread-text").value = state.threads; +} + +function clamp(val, min, max) { + return Math.max(min, Math.min(max, val)); +} + +function lerp(frac, rangeStart, rangeEnd) { + return (1 - frac) * rangeStart + frac * rangeEnd; +} + +function scaleRangeWithClamping( + val, + sourceRangeStart, + sourceRangeEnd, + destRangeStart, + destRangeEnd +) { + const frac = clamp( + (val - sourceRangeStart) / (sourceRangeEnd - sourceRangeStart), + 0, + 1 + ); + return lerp(frac, destRangeStart, destRangeEnd); +} + +function calculateOverhead(state) { + const overheadFromSampling = + scaleRangeWithClamping( + Math.log(state.interval), + Math.log(0.05), + Math.log(1), + 1, + 0 + ) + + scaleRangeWithClamping( + Math.log(state.interval), + Math.log(1), + Math.log(100), + 0.1, + 0 + ); + const overheadFromBuffersize = scaleRangeWithClamping( + Math.log(state.buffersize), + Math.log(10), + Math.log(1000000), + 0, + 0.1 + ); + const overheadFromStackwalk = state.stackwalk ? 0.05 : 0; + const overheadFromResponsiveness = state.responsiveness ? 0.05 : 0; + const overheadFromJavaScrpt = state.js ? 0.05 : 0; + const overheadFromSeqStyle = state.seqstyle ? 0.05 : 0; + const overheadFromTaskTracer = state.tasktracer ? 0.05 : 0; + const overheadFromJSTracer = state.jstracer ? 0.05 : 0; + return clamp( + overheadFromSampling + + overheadFromBuffersize + + overheadFromStackwalk + + overheadFromResponsiveness + + overheadFromJavaScrpt + + overheadFromSeqStyle + + overheadFromTaskTracer + + overheadFromJSTracer, + 0, + 1 + ); +} + +function getBackground() { + return browser.runtime.getBackgroundPage(); +} + +document.querySelector(".button-start").addEventListener("click", async () => { + const background = await getBackground(); + await background.startProfiler(); + background.adjustState({ isRunning: true }); + renderState(background.profilerState); +}); + +document.querySelector(".button-cancel").addEventListener("click", async () => { + const background = await getBackground(); + await background.stopProfiler(); + background.adjustState({ isRunning: false }); + renderState(background.profilerState); +}); + +document + .querySelector("#button-capture") + .addEventListener("click", async () => { + if (document.documentElement.classList.contains("status-running")) { + const background = await getBackground(); + await background.captureProfile(); + window.close(); + } + }); + +document + .querySelector("#settings-label") + .addEventListener("click", async () => { + const background = await getBackground(); + background.adjustState({ + settingsOpen: !background.profilerState.settingsOpen, + }); + renderState(background.profilerState); + }); + +document.querySelector(".interval-range").addEventListener("input", async e => { + const background = await getBackground(); + const frac = e.target.value / 100; + background.adjustState({ + interval: intervalScale.fromFractionToSingleDigitValue(frac), + }); + renderState(background.profilerState); +}); + +document + .querySelector(".buffersize-range") + .addEventListener("input", async e => { + const background = await getBackground(); + const frac = e.target.value / 100; + background.adjustState({ + buffersize: buffersizeScale.fromFractionToSingleDigitValue(frac), + }); + renderState(background.profilerState); + }); + +document + .querySelector(".windowlength-range") + .addEventListener("input", async e => { + const background = await getBackground(); + const frac = e.target.value / 100; + background.adjustState({ + windowLength: windowLengthScale.fromFractionToSingleDigitValue(frac), + }); + renderState(background.profilerState); + }); + +window.onload = async () => { + if ( + !browser.geckoProfiler.supports || + !browser.geckoProfiler.supports.WINDOWLENGTH + ) { + document.body.classList.add("no-windowlength"); + } + + // Letting the background script know how the infiniteWindowLength is represented. + const background = await getBackground(); + background.adjustState({ + infiniteWindowLength, + }); +}; + +/** + * This helper initializes and adds listeners to the features checkboxes that + * will adjust the profiler state when changed. + */ +async function setupFeatureCheckbox(name) { + const platform = await browser.runtime.getPlatformInfo(); + + // Java profiling is only meaningful on android. + if (name == "java") { + if (platform.os !== "android") { + document.querySelector("#java").style.display = "none"; + return; + } + } + + const checkbox = document.querySelector(`#${featurePrefix}${name}`); + const background = await getBackground(); + checkbox.checked = background.profilerState.features[name]; + + checkbox.addEventListener("change", async e => { + const features = Object.assign({}, background.profilerState.features); + features[name] = e.target.checked; + background.adjustState({ features }); + renderState(background.profilerState); + }); +} + +/** + * This helper initializes and adds listeners to the threads checkboxes that + * will adjust the profiler state when changed. + */ +async function setupThreadCheckbox(name) { + const checkbox = document.querySelector(`#${threadPrefix}${name}`); + const background = await getBackground(); + checkbox.checked = background.profilerState.threads.includes(threadMap[name]); + + checkbox.addEventListener("change", async e => { + let threads = background.profilerState.threads; + if (e.target.checked) { + threads += "," + e.target.value; + } else { + threads = threadTextToList(threads) + .filter(thread => thread !== e.target.value) + .join(","); + } + background.adjustState({ threads }); + renderState(background.profilerState); + }); +} + +/** + * Clean up the thread list string into a list of values. + * @param string threads, comma separated values. + * @return Array list of thread names + */ +function threadTextToList(threads) { + return ( + threads + // Split on commas + .split(",") + // Clean up any extraneous whitespace + .map(string => string.trim()) + // Filter out any blank strings + .filter(string => string) + ); +} + +for (const name of features) { + setupFeatureCheckbox(name); +} + +for (const name in threadMap) { + setupThreadCheckbox(name); +} + +document + .querySelector("#perf-settings-thread-text") + .addEventListener("change", async e => { + const background = await getBackground(); + background.adjustState({ threads: e.target.value }); + renderState(background.profilerState); + }); + +document + .querySelector(".settings-apply-button") + .addEventListener("click", async () => { + (await getBackground()).restartProfiler(); + }); + +function makeExponentialScale(rangeStart, rangeEnd) { + const startExp = Math.log(rangeStart); + const endExp = Math.log(rangeEnd); + const fromFractionToValue = frac => + Math.exp((1 - frac) * startExp + frac * endExp); + const fromValueToFraction = value => + (Math.log(value) - startExp) / (endExp - startExp); + const fromFractionToSingleDigitValue = frac => { + return +fromFractionToValue(frac).toPrecision(1); + }; + return { + fromFractionToValue, + fromValueToFraction, + fromFractionToSingleDigitValue, + }; +} + +const prettyBytes = (function(module) { + "use strict"; + const UNITS = ["B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]; + + module.exports = num => { + if (!Number.isFinite(num)) { + throw new TypeError( + `Expected a finite number, got ${typeof num}: ${num}` + ); + } + + const neg = num < 0; + + if (neg) { + num = -num; + } + + if (num < 1) { + return (neg ? "-" : "") + num + " B"; + } + + const exponent = Math.min( + Math.floor(Math.log(num) / Math.log(1000)), + UNITS.length - 1 + ); + const numStr = Number((num / Math.pow(1000, exponent)).toPrecision(3)); + const unit = UNITS[exponent]; + + return (neg ? "-" : "") + numStr + " " + unit; + }; + + return module; +})({}).exports; + +getBackground().then(background => renderState(background.profilerState)); From ac6c65f4d0afc63c9a24ccd9470f37a74c480083 Mon Sep 17 00:00:00 2001 From: Greg Tatum Date: Fri, 31 May 2019 15:53:46 +0000 Subject: [PATCH 26/47] Bug 1307227 - Update the profiler's popup code to work in Gecko; r=julienw This commit represents the changes needed to convert the existing Gecko Profiler Add-on code to work outside of the WebExtensions environment. A following commit will actually wire it into the rest of the browser. Differential Revision: https://phabricator.services.mozilla.com/D31627 --HG-- extra : moz-landing-system : lando --- devtools/client/jar.mn | 6 + devtools/client/performance-new/moz.build | 1 + .../client/performance-new/popup/README.md | 3 + .../performance-new/popup/background.jsm | 453 ++++++++---------- .../performance-new/popup/initializer.js | 32 ++ .../client/performance-new/popup/moz.build | 13 + .../client/performance-new/popup/popup.css | 9 +- .../client/performance-new/popup/popup.html | 5 +- .../client/performance-new/popup/popup.js | 297 ++++++------ 9 files changed, 414 insertions(+), 405 deletions(-) create mode 100644 devtools/client/performance-new/popup/README.md create mode 100644 devtools/client/performance-new/popup/initializer.js create mode 100644 devtools/client/performance-new/popup/moz.build diff --git a/devtools/client/jar.mn b/devtools/client/jar.mn index f67931ab177e..1db2cd50c845 100644 --- a/devtools/client/jar.mn +++ b/devtools/client/jar.mn @@ -29,6 +29,12 @@ devtools.jar: content/performance/index.xul (performance/index.xul) content/performance-new/index.xhtml (performance-new/index.xhtml) content/performance-new/frame-script.js (performance-new/frame-script.js) + content/performance-new/popup/background.jsm (performance-new/popup/background.jsm) + content/performance-new/popup/icons/capture-profile-icon.svg (performance-new/popup/icons/capture-profile-icon.svg) + content/performance-new/popup/initializer.js (performance-new/popup/initializer.js) + content/performance-new/popup/popup.css (performance-new/popup/popup.css) + content/performance-new/popup/popup.html (performance-new/popup/popup.html) + content/performance-new/popup/popup.js (performance-new/popup/popup.js) content/memory/index.xhtml (memory/index.xhtml) content/framework/toolbox-window.xul (framework/toolbox-window.xul) content/framework/toolbox-options.xhtml (framework/toolbox-options.xhtml) diff --git a/devtools/client/performance-new/moz.build b/devtools/client/performance-new/moz.build index f5d92aa796cc..610b8356d2ed 100644 --- a/devtools/client/performance-new/moz.build +++ b/devtools/client/performance-new/moz.build @@ -6,6 +6,7 @@ DIRS += [ 'components', 'store', + 'popup', ] DevToolsModules( diff --git a/devtools/client/performance-new/popup/README.md b/devtools/client/performance-new/popup/README.md new file mode 100644 index 000000000000..76a82d937c45 --- /dev/null +++ b/devtools/client/performance-new/popup/README.md @@ -0,0 +1,3 @@ +# Profiler Popup + +This directory controls the creation of a popup widget that can be used to record performance profiles. It is slightly different than the rest of the DevTools code, as it can be loaded independently of the rest of DevTools. The instrumentation from DevTools adds significant overhead to profiles, so this recording popup (and its shortcuts) enable a low-overhead profiling experience. This button can be enabled via the Tools -> Web Developer menu. diff --git a/devtools/client/performance-new/popup/background.jsm b/devtools/client/performance-new/popup/background.jsm index cac412abb625..65a7d2bb15f7 100644 --- a/devtools/client/performance-new/popup/background.jsm +++ b/devtools/client/performance-new/popup/background.jsm @@ -1,116 +1,108 @@ -/* global browser */ +/* 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/. */ +"use strict"; -const DEFAULT_VIEWER_URL = "https://profiler.firefox.com"; +/** + * This file contains all of the background logic for controlling the state and + * configuration of the profiler. It is in a JSM so that the logic can be shared + * with both the popup client, and the keyboard shortcuts. The shortcuts don't need + * access to any UI, and need to be loaded independent of the popup. + */ + +// The following are not lazily loaded as they are needed during initialization.f +const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm"); +const { AppConstants } = ChromeUtils.import("resource://gre/modules/AppConstants.jsm"); +const Loader = ChromeUtils.import("resource://devtools/shared/Loader.jsm"); + +const { loader } = Loader; + +// The following utilities are lazily loaded as they are not needed when controlling the +// global state of the profiler, and only are used during specific funcationality like +// symbolication or capturing a profile. +ChromeUtils.defineModuleGetter(this, "OS", "resource://gre/modules/osfile.jsm"); +ChromeUtils.defineModuleGetter(this, "ProfilerGetSymbols", + "resource://gre/modules/ProfilerGetSymbols.jsm"); +loader.lazyRequireGetter(this, "receiveProfile", + "devtools/client/performance-new/browser", true); + +// This pref contains the JSON serialization of the popup's profiler state with +// a string key based off of the debug name and breakpad id. +const PROFILER_STATE_PREF = "devtools.performance.popup"; const DEFAULT_WINDOW_LENGTH = 20; // 20sec -const tabToConnectionMap = new Map(); +// This Map caches the symbols from the shared libraries. +const symbolCache = new Map(); -var profilerState; -var profileViewerURL = DEFAULT_VIEWER_URL; -var isMigratedToNewUrl; +const primeSymbolStore = libs => { + for (const {path, debugName, debugPath, breakpadId} of libs) { + symbolCache.set(`${debugName}/${breakpadId}`, {path, debugPath}); + } +}; + +const state = intializeState(); function adjustState(newState) { // Deep clone the object, since this can be called through popup.html, // which can be unloaded thus leaving this object dead. newState = JSON.parse(JSON.stringify(newState)); - Object.assign(window.profilerState, newState); - browser.storage.local.set({ profilerState: window.profilerState }); -} + Object.assign(state, newState); -function makeProfileAvailableToTab(profile, port) { - port.postMessage({ type: "ProfilerConnectToPage", payload: profile }); - - port.onMessage.addListener(async message => { - if (message.type === "ProfilerGetSymbolTable") { - const { debugName, breakpadId } = message; - try { - const [ - addresses, - index, - buffer, - ] = await browser.geckoProfiler.getSymbols(debugName, breakpadId); - - port.postMessage({ - type: "ProfilerGetSymbolTableReply", - status: "success", - result: [addresses, index, buffer], - debugName, - breakpadId, - }); - } catch (e) { - port.postMessage({ - type: "ProfilerGetSymbolTableReply", - status: "error", - error: `${e}`, - debugName, - breakpadId, - }); - } - } - }); -} - -async function createAndWaitForTab(url) { - const tabPromise = browser.tabs.create({ - active: true, - url, - }); - - return tabPromise; -} - -function getProfilePreferablyAsArrayBuffer() { - // This is a compatibility wrapper for Firefox builds from before 1362800 - // landed. We can remove it once Nightly switches to 56. - if ("getProfileAsArrayBuffer" in browser.geckoProfiler) { - return browser.geckoProfiler.getProfileAsArrayBuffer(); + try { + Services.prefs.setStringPref(PROFILER_STATE_PREF, + JSON.stringify(state)); + } catch (error) { + console.error("Unable to save the profiler state for the popup."); + throw error; } - return browser.geckoProfiler.getProfile(); +} + +function getSymbols(debugName, breakpadId) { + if (symbolCache.size === 0) { + primeSymbolStore(Services.profiler.sharedLibraries); + } + + const cachedLibInfo = symbolCache.get(`${debugName}/${breakpadId}`); + if (!cachedLibInfo) { + throw new Error( + `The library ${debugName} ${breakpadId} is not in the ` + + "Services.profiler.sharedLibraries list, so the local path for it is not known " + + "and symbols for it can not be obtained. This usually happens if a content " + + "process uses a library that's not used in the parent process - " + + "Services.profiler.sharedLibraries only knows about libraries in the " + + "parent process."); + } + + const {path, debugPath} = cachedLibInfo; + if (!OS.Path.split(path).absolute) { + throw new Error( + "Services.profiler.sharedLibraries did not contain an absolute path for " + + `the library ${debugName} ${breakpadId}, so symbols for this library can not ` + + "be obtained."); + } + + return ProfilerGetSymbols.getSymbolTable(path, debugPath, breakpadId); } async function captureProfile() { + if (!state.isRunning) { + // The profiler is not active, ignore this shortcut. + return; + } // Pause profiler before we collect the profile, so that we don't capture // more samples while the parent process waits for subprocess profiles. - await browser.geckoProfiler.pause().catch(() => {}); + Services.profiler.PauseSampling(); - const profilePromise = getProfilePreferablyAsArrayBuffer().catch( + const profile = await Services.profiler.getProfileDataAsArrayBuffer().catch( e => { console.error(e); return {}; } ); - const tabOpenPromise = createAndWaitForTab(profileViewerURL + "/from-addon"); + receiveProfile(profile, getSymbols); - try { - const [profile, tab] = await Promise.all([profilePromise, tabOpenPromise]); - - const connection = tabToConnectionMap.get(tab.id); - - if (connection) { - // If, for instance, it takes a long time to load the profile, - // then our onDOMContentLoaded handler and our runtime.onConnect handler - // have already connected to the page. All we need to do then is - // provide the profile. - makeProfileAvailableToTab(profile, connection.port); - } else { - // If our onDOMContentLoaded handler and our runtime.onConnect handler - // haven't connected to the page, set this so that they'll have a - // profile they can provide once they do. - tabToConnectionMap.set(tab.id, { profile }); - } - } catch (e) { - console.error(e); - // const { tab } = await tabOpenPromise; - // TODO data URL doesn't seem to be working. Permissions issue? - // await browser.tabs.update(tab.id, { url: `data:text/html,${encodeURIComponent(e.toString)}` }); - } - - try { - await browser.geckoProfiler.resume(); - } catch (e) { - console.error(e); - } + Services.profiler.ResumeSampling(); } /** @@ -122,185 +114,152 @@ function getEnabledFeatures(features, threads) { if (threads.length > 0) { enabledFeatures.push("threads"); } - const supportedFeatures = Object.values( - browser.geckoProfiler.ProfilerFeature - ); + const supportedFeatures = Services.profiler.GetFeatures([]); return enabledFeatures.filter(feature => supportedFeatures.includes(feature)); } -async function startProfiler() { - const settings = window.profilerState; - const threads = settings.threads.split(","); - const options = { - bufferSize: settings.buffersize, - interval: settings.interval, - features: getEnabledFeatures(settings.features, threads), - threads, - }; - if ( - browser.geckoProfiler.supports && - browser.geckoProfiler.supports.WINDOWLENGTH - ) { - options.windowLength = - settings.windowLength !== settings.infiniteWindowLength - ? settings.windowLength - : 0; - } - await browser.geckoProfiler.start(options); +function startProfiler() { + const threads = state.threads.split(","); + const features = getEnabledFeatures(state.features, threads); + const windowLength = state.windowLength !== state.infiniteWindowLength + ? state.windowLength + : 0; + + const { buffersize, interval } = state; + + Services.profiler.StartProfiler(buffersize, interval, features, threads, windowLength); } async function stopProfiler() { - await browser.geckoProfiler.stop(); + Services.profiler.StopProfiler(); } -/* exported restartProfiler */ -async function restartProfiler() { - await stopProfiler(); - await startProfiler(); +function toggleProfiler() { + if (state.isRunning) { + stopProfiler(); + } else { + startProfiler(); + } } -(async () => { - const storageResults = await browser.storage.local.get({ - profilerState: null, - profileViewerURL: DEFAULT_VIEWER_URL, - // This value is to check whether or not folks have been migrated from - // perf-html.io to profiler.firefox.com - isMigratedToNewUrl: false, - }); +function restartProfiler() { + stopProfiler(); + startProfiler(); +} - // Assign to global variables: - window.profilerState = storageResults.profilerState; - window.profileViewerURL = storageResults.profileViewerURL; +// This running observer was adapted from the web extension. +const isRunningObserver = { + _observers: new Set(), - if (!storageResults.isMigratedToNewUrl) { - if (window.profileViewerURL.startsWith("https://perf-html.io")) { - // This user needs to be migrated from perf-html.io to profiler.firefox.com. - // This is only done one time. - window.profileViewerURL = DEFAULT_VIEWER_URL; - } - // Store the fact that this migration check has been done, and optionally update - // the url if it was changed. - await browser.storage.local.set({ - isMigratedToNewUrl: true, - profileViewerURL: window.profileViewerURL, - }); - } - - if (!window.profilerState) { - window.profilerState = {}; - - const features = { - java: false, - js: true, - leaf: true, - mainthreadio: false, - memory: false, - privacy: false, - responsiveness: true, - screenshots: false, - seqstyle: false, - stackwalk: true, - tasktracer: false, - trackopts: false, - jstracer: false, - }; - - const platform = await browser.runtime.getPlatformInfo(); - switch (platform.os) { - case "mac": - // Screenshots are currently only working on mac. - features.screenshots = true; - break; - case "android": - // Java profiling is only meaningful on android. - features.java = true; + observe(subject, topic, data) { + switch (topic) { + case "profiler-started": + case "profiler-stopped": + // Make the observer calls asynchronous. + const isRunningPromise = Promise.resolve(topic === "profiler-started"); + for (const observer of this._observers) { + isRunningPromise.then(observer); + } break; } + }, - adjustState({ - isRunning: false, - settingsOpen: false, - buffersize: 10000000, // 90MB - windowLength: DEFAULT_WINDOW_LENGTH, - interval: 1, - features, - threads: "GeckoMain,Compositor", - }); - } else if (window.profilerState.windowLength === undefined) { - // We have `windowprofilerState` but no `windowLength`. - // That means we've upgraded the gecko profiler addon from an older version. - // Adding the default window legth in that case. - adjustState({ - windowLength: DEFAULT_WINDOW_LENGTH, - }); + _startListening() { + Services.obs.addObserver(this, "profiler-started"); + Services.obs.addObserver(this, "profiler-stopped"); + }, + + _stopListening() { + Services.obs.removeObserver(this, "profiler-started"); + Services.obs.removeObserver(this, "profiler-stopped"); + }, + + addObserver(observer) { + if (this._observers.size === 0) { + this._startListening(); + } + + this._observers.add(observer); + // Notify the observers the current state asynchronously. + Promise.resolve(Services.profiler.IsActive()).then(observer); + }, + + removeObserver(observer) { + if (this._observers.delete(observer) && this._observers.size === 0) { + this._stopListening(); + } + }, +}; + +function getStoredStateOrNull() { + // Pull out the stored state from preferences, it is a raw string. + const storedStateString = Services.prefs.getStringPref(PROFILER_STATE_PREF, ""); + if (storedStateString === "") { + return null; } - browser.geckoProfiler.onRunning.addListener(isRunning => { - adjustState({ isRunning }); + try { + // Attempt to parse the results. + return JSON.parse(storedStateString); + } catch (error) { + console.error(`Could not parse the stored state for the profile in the ` + + `preferences ${PROFILER_STATE_PREF}`); + } + return null; +} - // With "path: null" we'll get the default icon for the browser action, which - // is theme-aware. - // The on state does not need to be theme-aware because we want to highlight - // the icon in blue regardless of whether a dark or a light theme is in use. - browser.browserAction.setIcon({ - path: isRunning ? "icons/toolbar_on.png" : null, - }); +function intializeState() { + const storedState = getStoredStateOrNull(); + if (storedState) { + return storedState; + } - browser.browserAction.setTitle({ - title: isRunning ? "Gecko Profiler (on)" : null, - }); + const features = { + java: false, + js: true, + leaf: true, + mainthreadio: false, + memory: false, + privacy: false, + responsiveness: true, + screenshots: false, + seqstyle: false, + stackwalk: true, + tasktracer: false, + trackopts: false, + jstracer: false, + }; - for (const popup of browser.extension.getViews({ type: "popup" })) { - popup.renderState(window.profilerState); - } - }); + if (AppConstants.platform === "android") { + // Java profiling is only meaningful on android. + features.java = true; + } - browser.storage.onChanged.addListener(changes => { - if (changes.profileViewerURL) { - profileViewerURL = changes.profileViewerURL.newValue; - } - }); + return { + isRunning: false, + settingsOpen: false, + buffersize: 10000000, // 90MB + windowLength: DEFAULT_WINDOW_LENGTH, + interval: 1, + features, + threads: "GeckoMain,Compositor", + }; +} - browser.commands.onCommand.addListener(command => { - if (command === "ToggleProfiler") { - if (window.profilerState.isRunning) { - stopProfiler(); - } else { - startProfiler(); - } - } else if (command === "CaptureProfile") { - if (window.profilerState.isRunning) { - captureProfile(); - } - } - }); +isRunningObserver.addObserver(isRunning => { + adjustState({ isRunning }); +}); - browser.runtime.onConnect.addListener(port => { - const tabId = port.sender.tab.id; - const connection = tabToConnectionMap.get(tabId); - if (connection && connection.profile) { - makeProfileAvailableToTab(connection.profile, port); - } else { - tabToConnectionMap.set(tabId, { port }); - } - }); +const platform = AppConstants.platform; - browser.tabs.onRemoved.addListener(tabId => { - tabToConnectionMap.delete(tabId); - }); - - browser.webNavigation.onDOMContentLoaded.addListener( - async ({ frameId, tabId, url }) => { - if (frameId !== 0) { - return; - } - if (url.startsWith(profileViewerURL)) { - browser.tabs.executeScript(tabId, { file: "content.js" }); - } else { - // As soon as we navigate away from the profile report, clean - // this up so we don't leak it. - tabToConnectionMap.delete(tabId); - } - } - ); -})(); +var EXPORTED_SYMBOLS = [ + "adjustState", + "captureProfile", + "state", + "startProfiler", + "stopProfiler", + "restartProfiler", + "toggleProfiler", + "isRunningObserver", + "platform", +]; diff --git a/devtools/client/performance-new/popup/initializer.js b/devtools/client/performance-new/popup/initializer.js new file mode 100644 index 000000000000..47c7ef7cbf67 --- /dev/null +++ b/devtools/client/performance-new/popup/initializer.js @@ -0,0 +1,32 @@ +/* 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/. */ + +"use strict"; + +/** + * Initialize the require function through a BrowserLoader. This loader ensures + * that the popup can use require and has access to the window object. + */ +const { BrowserLoader } = + ChromeUtils.import("resource://devtools/client/shared/browser-loader.js"); +const { require } = BrowserLoader({ + baseURI: "resource://devtools/client/performance-new/popup/", + window, +}); + +/** + * The background.jsm manages the profiler state, and can be loaded multiple time + * for various components. This pop-up needs a copy, and it is also used by the + * profiler shortcuts. In order to do this, the background code needs to live in a + * JSM module, that can be shared with the DevTools keyboard shortcut manager. + */ + +/** + * Require the popup code, and initialize it. + */ +const { initializePopup } = require("./popup"); + +document.addEventListener("DOMContentLoaded", () => { + initializePopup(); +}); diff --git a/devtools/client/performance-new/popup/moz.build b/devtools/client/performance-new/popup/moz.build new file mode 100644 index 000000000000..f218b14b302c --- /dev/null +++ b/devtools/client/performance-new/popup/moz.build @@ -0,0 +1,13 @@ +# vim: set filetype=python: +# 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/. + +DevToolsModules( + 'background.jsm', + 'initializer.js', + 'popup.js', +) + +with Files('**'): + BUG_COMPONENT = ('Core', 'Gecko Profiler') diff --git a/devtools/client/performance-new/popup/popup.css b/devtools/client/performance-new/popup/popup.css index 62f1f2e323fd..3084d53bd48e 100644 --- a/devtools/client/performance-new/popup/popup.css +++ b/devtools/client/performance-new/popup/popup.css @@ -1,3 +1,7 @@ +/* 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/. */ + html { background: rgb(250,250,250); font: message-box; @@ -283,11 +287,6 @@ kbd { flex-flow: row nowrap; } -body.no-windowlength .settings-setting-label.windowlength, -body.no-windowlength .range-with-value.windowlength { - display: none; -} - .range-input { margin: 0; width: 0; diff --git a/devtools/client/performance-new/popup/popup.html b/devtools/client/performance-new/popup/popup.html index 69400b8bc897..9fadaadba3fa 100644 --- a/devtools/client/performance-new/popup/popup.html +++ b/devtools/client/performance-new/popup/popup.html @@ -1,3 +1,6 @@ + @@ -173,6 +176,6 @@
- + diff --git a/devtools/client/performance-new/popup/popup.js b/devtools/client/performance-new/popup/popup.js index 5e7cf91045d9..b054fda76784 100644 --- a/devtools/client/performance-new/popup/popup.js +++ b/devtools/client/performance-new/popup/popup.js @@ -1,4 +1,11 @@ -/* global browser */ +/* 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/. */ + +"use strict"; +const background = + ChromeUtils.import("resource://devtools/client/performance-new/popup/background.jsm"); + const intervalScale = makeExponentialScale(0.01, 100); const buffersizeScale = makeExponentialScale(10000, 100000000); // Window Length accepts a numerical value between 1-N. We also need to put an @@ -44,6 +51,105 @@ const threadMap = { "style-thread": "StyleThread", }; +function initializePopup() { + const updateIsRunning = () => { + renderState(background.state); + }; + background.isRunningObserver.addObserver(updateIsRunning); + + window.addEventListener("unload", () => { + background.isRunningObserver.removeObserver(updateIsRunning); + }); + + for (const name of features) { + setupFeatureCheckbox(name); + } + + for (const name in threadMap) { + setupThreadCheckbox(name); + } + + document + .querySelector("#perf-settings-thread-text") + .addEventListener("change", async e => { + background.adjustState({ threads: e.target.value }); + renderState(background.state); + }); + + document + .querySelector(".settings-apply-button") + .addEventListener("click", async () => { + background.restartProfiler(); + }); + + document.querySelector(".button-start").addEventListener("click", async () => { + background.startProfiler(); + background.adjustState({ isRunning: true }); + renderState(background.state); + }); + + document.querySelector(".button-cancel").addEventListener("click", async () => { + background.stopProfiler(); + background.adjustState({ isRunning: false }); + renderState(background.state); + }); + + document + .querySelector("#button-capture") + .addEventListener("click", async () => { + if (document.documentElement.classList.contains("status-running")) { + await background.captureProfile(); + } + }); + + document + .querySelector("#settings-label") + .addEventListener("click", async () => { + const { settingsOpen } = background.state; + background.adjustState({ + settingsOpen: !settingsOpen, + }); + renderState(background.state); + }); + + document.querySelector(".interval-range").addEventListener("input", async e => { + const frac = e.target.value / 100; + background.adjustState({ + interval: intervalScale.fromFractionToSingleDigitValue(frac), + }); + renderState(background.state); + }); + + document + .querySelector(".buffersize-range") + .addEventListener("input", async e => { + const frac = e.target.value / 100; + background.adjustState({ + buffersize: buffersizeScale.fromFractionToSingleDigitValue(frac), + }); + renderState(background.state); + }); + + document + .querySelector(".windowlength-range") + .addEventListener("input", async e => { + const frac = e.target.value / 100; + background.adjustState({ + windowLength: windowLengthScale.fromFractionToSingleDigitValue(frac), + }); + renderState(background.state); + }); + + window.onload = () => { + // Letting the background script know how the infiniteWindowLength is represented. + background.adjustState({ + infiniteWindowLength, + }); + }; + + renderState(background.state); +} + function renderState(state) { const { isRunning, settingsOpen, interval, buffersize, windowLength } = state; document.documentElement.classList.toggle("status-running", isRunning); @@ -79,11 +185,11 @@ function renderControls(state) { document.querySelector(".windowlength-range").value = windowLengthScale.fromValueToFraction(state.windowLength) * 100; - for (let name of features) { + for (const name of features) { document.getElementById(featurePrefix + name).value = state[name]; } - for (let name in threadMap) { + for (const name in threadMap) { document.getElementById( threadPrefix + name ).checked = state.threads.includes(threadMap[name]); @@ -158,114 +264,27 @@ function calculateOverhead(state) { ); } -function getBackground() { - return browser.runtime.getBackgroundPage(); -} - -document.querySelector(".button-start").addEventListener("click", async () => { - const background = await getBackground(); - await background.startProfiler(); - background.adjustState({ isRunning: true }); - renderState(background.profilerState); -}); - -document.querySelector(".button-cancel").addEventListener("click", async () => { - const background = await getBackground(); - await background.stopProfiler(); - background.adjustState({ isRunning: false }); - renderState(background.profilerState); -}); - -document - .querySelector("#button-capture") - .addEventListener("click", async () => { - if (document.documentElement.classList.contains("status-running")) { - const background = await getBackground(); - await background.captureProfile(); - window.close(); - } - }); - -document - .querySelector("#settings-label") - .addEventListener("click", async () => { - const background = await getBackground(); - background.adjustState({ - settingsOpen: !background.profilerState.settingsOpen, - }); - renderState(background.profilerState); - }); - -document.querySelector(".interval-range").addEventListener("input", async e => { - const background = await getBackground(); - const frac = e.target.value / 100; - background.adjustState({ - interval: intervalScale.fromFractionToSingleDigitValue(frac), - }); - renderState(background.profilerState); -}); - -document - .querySelector(".buffersize-range") - .addEventListener("input", async e => { - const background = await getBackground(); - const frac = e.target.value / 100; - background.adjustState({ - buffersize: buffersizeScale.fromFractionToSingleDigitValue(frac), - }); - renderState(background.profilerState); - }); - -document - .querySelector(".windowlength-range") - .addEventListener("input", async e => { - const background = await getBackground(); - const frac = e.target.value / 100; - background.adjustState({ - windowLength: windowLengthScale.fromFractionToSingleDigitValue(frac), - }); - renderState(background.profilerState); - }); - -window.onload = async () => { - if ( - !browser.geckoProfiler.supports || - !browser.geckoProfiler.supports.WINDOWLENGTH - ) { - document.body.classList.add("no-windowlength"); - } - - // Letting the background script know how the infiniteWindowLength is represented. - const background = await getBackground(); - background.adjustState({ - infiniteWindowLength, - }); -}; - /** * This helper initializes and adds listeners to the features checkboxes that * will adjust the profiler state when changed. */ async function setupFeatureCheckbox(name) { - const platform = await browser.runtime.getPlatformInfo(); - // Java profiling is only meaningful on android. if (name == "java") { - if (platform.os !== "android") { + if (background.platform !== "android") { document.querySelector("#java").style.display = "none"; return; } } const checkbox = document.querySelector(`#${featurePrefix}${name}`); - const background = await getBackground(); - checkbox.checked = background.profilerState.features[name]; + checkbox.checked = background.state.features[name]; checkbox.addEventListener("change", async e => { - const features = Object.assign({}, background.profilerState.features); - features[name] = e.target.checked; - background.adjustState({ features }); - renderState(background.profilerState); + const newFeatures = Object.assign({}, background.state.features); + newFeatures[name] = e.target.checked; + background.adjustState({ features: newFeatures }); + renderState(background.state); }); } @@ -275,11 +294,10 @@ async function setupFeatureCheckbox(name) { */ async function setupThreadCheckbox(name) { const checkbox = document.querySelector(`#${threadPrefix}${name}`); - const background = await getBackground(); - checkbox.checked = background.profilerState.threads.includes(threadMap[name]); + checkbox.checked = background.state.threads.includes(threadMap[name]); checkbox.addEventListener("change", async e => { - let threads = background.profilerState.threads; + let threads = background.state.threads; if (e.target.checked) { threads += "," + e.target.value; } else { @@ -288,7 +306,7 @@ async function setupThreadCheckbox(name) { .join(","); } background.adjustState({ threads }); - renderState(background.profilerState); + renderState(background.state); }); } @@ -309,28 +327,6 @@ function threadTextToList(threads) { ); } -for (const name of features) { - setupFeatureCheckbox(name); -} - -for (const name in threadMap) { - setupThreadCheckbox(name); -} - -document - .querySelector("#perf-settings-thread-text") - .addEventListener("change", async e => { - const background = await getBackground(); - background.adjustState({ threads: e.target.value }); - renderState(background.profilerState); - }); - -document - .querySelector(".settings-apply-button") - .addEventListener("click", async () => { - (await getBackground()).restartProfiler(); - }); - function makeExponentialScale(rangeStart, rangeEnd) { const startExp = Math.log(rangeStart); const endExp = Math.log(rangeEnd); @@ -348,38 +344,35 @@ function makeExponentialScale(rangeStart, rangeEnd) { }; } -const prettyBytes = (function(module) { - "use strict"; - const UNITS = ["B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]; +const UNITS = ["B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"]; - module.exports = num => { - if (!Number.isFinite(num)) { - throw new TypeError( - `Expected a finite number, got ${typeof num}: ${num}` - ); - } - - const neg = num < 0; - - if (neg) { - num = -num; - } - - if (num < 1) { - return (neg ? "-" : "") + num + " B"; - } - - const exponent = Math.min( - Math.floor(Math.log(num) / Math.log(1000)), - UNITS.length - 1 +function prettyBytes(num) { + if (!Number.isFinite(num)) { + throw new TypeError( + `Expected a finite number, got ${typeof num}: ${num}` ); - const numStr = Number((num / Math.pow(1000, exponent)).toPrecision(3)); - const unit = UNITS[exponent]; + } - return (neg ? "-" : "") + numStr + " " + unit; - }; + const neg = num < 0; - return module; -})({}).exports; + if (neg) { + num = -num; + } -getBackground().then(background => renderState(background.profilerState)); + if (num < 1) { + return (neg ? "-" : "") + num + " B"; + } + + const exponent = Math.min( + Math.floor(Math.log(num) / Math.log(1000)), + UNITS.length - 1 + ); + const numStr = Number((num / Math.pow(1000, exponent)).toPrecision(3)); + const unit = UNITS[exponent]; + + return (neg ? "-" : "") + numStr + " " + unit; +} + +module.exports = { + initializePopup, +}; From ae0bdac16ceff123e09cccbfb4da6712cbfe731e Mon Sep 17 00:00:00 2001 From: Greg Tatum Date: Fri, 31 May 2019 15:54:03 +0000 Subject: [PATCH 27/47] Bug 1307227 - Ensure the provider is always initialized for calls to lazyRequireGetter; r=ochameau The performance profiler pop-up menu wants to be near DevTools, but work without the complete DevTools initialization. This patch ensure that any calls to lazyRequireGetter properly initialize the provider. Differential Revision: https://phabricator.services.mozilla.com/D31628 --HG-- extra : moz-landing-system : lando --- devtools/client/performance-new/popup/background.jsm | 4 +--- devtools/shared/Loader.jsm | 12 ++++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/devtools/client/performance-new/popup/background.jsm b/devtools/client/performance-new/popup/background.jsm index 65a7d2bb15f7..0c50c8164208 100644 --- a/devtools/client/performance-new/popup/background.jsm +++ b/devtools/client/performance-new/popup/background.jsm @@ -13,9 +13,7 @@ // The following are not lazily loaded as they are needed during initialization.f const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm"); const { AppConstants } = ChromeUtils.import("resource://gre/modules/AppConstants.jsm"); -const Loader = ChromeUtils.import("resource://devtools/shared/Loader.jsm"); - -const { loader } = Loader; +const { loader } = ChromeUtils.import("resource://devtools/shared/Loader.jsm"); // The following utilities are lazily loaded as they are not needed when controlling the // global state of the profiler, and only are used during specific funcationality like diff --git a/devtools/shared/Loader.jsm b/devtools/shared/Loader.jsm index d87adac28da0..25cf650943f6 100644 --- a/devtools/shared/Loader.jsm +++ b/devtools/shared/Loader.jsm @@ -129,6 +129,18 @@ DevToolsLoader.prototype = { return this.require.apply(this, arguments); }, + /** + * A dummy version of lazyRequireGetter, in case a provider hasn't been chosen yet when + * this is first called. This will then be replaced by the real version. + * @see setProvider + */ + lazyRequireGetter: function() { + if (!this._provider) { + this._loadProvider(); + } + return this.lazyRequireGetter.apply(this, arguments); + }, + /** * Return true if |id| refers to something requiring help from a * loader plugin. From eccc1fe1ef9b099723776e204189a8e8899527e7 Mon Sep 17 00:00:00 2001 From: Greg Tatum Date: Fri, 31 May 2019 15:54:18 +0000 Subject: [PATCH 28/47] Bug 1307227 - Integrate the profiler popup widget into the browser; r=jdescottes This commit takes the popup, and wires it up the button using the CustomizableUI interface. It is integrated with the DevTools initialization code. Differential Revision: https://phabricator.services.mozilla.com/D31629 --HG-- extra : moz-landing-system : lando --- .../customizableui/content/panelUI.inc.xul | 4 + .../customizableWidgets.properties | 3 + .../themes/shared/toolbarbutton-icons.inc.css | 8 + devtools/client/jar.mn | 2 - .../client/locales/en-US/menus.properties | 5 + devtools/client/menus.js | 8 + .../performance-new/popup/menu-button.jsm | 150 ++++++++++++++++ .../client/performance-new/popup/moz.build | 2 +- .../client/performance-new/popup/popup.js | 7 + .../themes/images/profiler-stopwatch.svg | 2 +- devtools/startup/DevToolsStartup.jsm | 166 ++++++++++++++++-- .../locales/en-US/key-shortcuts.properties | 8 + 12 files changed, 351 insertions(+), 14 deletions(-) create mode 100644 devtools/client/performance-new/popup/menu-button.jsm diff --git a/browser/components/customizableui/content/panelUI.inc.xul b/browser/components/customizableui/content/panelUI.inc.xul index 62c73ee363ad..7860d028150e 100644 --- a/browser/components/customizableui/content/panelUI.inc.xul +++ b/browser/components/customizableui/content/panelUI.inc.xul @@ -625,6 +625,10 @@ + +

Y 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�!mohsY1o19!Xd4_wrWcVRJb+iN;Cv%>bO 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�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 J@az%j`ahz7y%GQb diff --git a/devtools/client/debugger/src/actions/pause/mapFrames.js b/devtools/client/debugger/src/actions/pause/mapFrames.js index cd9b0124318f..65e42134bd18 100644 --- a/devtools/client/debugger/src/actions/pause/mapFrames.js +++ b/devtools/client/debugger/src/actions/pause/mapFrames.js @@ -136,7 +136,7 @@ async function expandFrames( }; originalFrames.forEach((originalFrame, j) => { - if (!originalFrame.location || !originalFrame.thread) { + if (!originalFrame.location) { return; } @@ -145,10 +145,10 @@ async function expandFrames( const id = j == 0 ? frame.id : `${frame.id}-originalFrame${j}`; result.push({ id, - thread: originalFrame.thread, displayName: originalFrame.displayName, location: originalFrame.location, source: null, + thread: frame.thread, scope: frame.scope, this: frame.this, isOriginal: true, diff --git a/devtools/client/debugger/src/utils/editor/index.js b/devtools/client/debugger/src/utils/editor/index.js index 86c2017cf303..3cd20de7666e 100644 --- a/devtools/client/debugger/src/utils/editor/index.js +++ b/devtools/client/debugger/src/utils/editor/index.js @@ -224,11 +224,12 @@ export function getSourceLocationFromMouseEvent( left: e.clientX, top: e.clientY, }); + const sourceId = source.id; return { - sourceId: source.id, - line: line + 1, - column: ch + 1, + sourceId, + line: fromEditorLine(sourceId, line), + column: isWasm(sourceId) ? 0 : ch + 1, }; } diff --git a/devtools/client/shared/source-map/assets/dwarf_to_json.wasm b/devtools/client/shared/source-map/assets/dwarf_to_json.wasm index 7969999e1da2b077aae5266bf59f8e3e747c06b9..c58b18903553789dd07247bd70d598a0e5c2aeee 100644 GIT binary patch literal 246995 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