Bug 1261484. Use only one kind of anonymous box for the block wrappers we create for a block-inside-inline split. r=dbaron draft
authorBoris Zbarsky <bzbarsky@mit.edu>
Mon, 27 Mar 2017 22:27:48 -0400
changeset 552151 101ba3e67e368a54a03e894d45e47a84c354c355
parent 552146 5182b2c4b963ed87d038c7d9a4021463917076cd
child 621733 a84aca16f9ff70eafa406b767b67f429d431ce23
push id51256
push userbzbarsky@mozilla.com
push dateTue, 28 Mar 2017 02:28:05 +0000
reviewersdbaron
bugs1261484
milestone55.0a1
Bug 1261484. Use only one kind of anonymous box for the block wrappers we create for a block-inside-inline split. r=dbaron MozReview-Commit-ID: iJJdv5VL06
layout/base/nsCSSFrameConstructor.cpp
layout/base/nsLayoutUtils.cpp
layout/generic/nsFrame.cpp
layout/generic/nsInlineFrame.cpp
layout/style/nsCSSAnonBoxList.h
layout/style/res/ua.css
servo/components/style/gecko/generated/gecko_pseudo_element_helper.rs
servo/components/style/gecko_string_cache/atom_macro.rs
--- a/layout/base/nsCSSFrameConstructor.cpp
+++ b/layout/base/nsCSSFrameConstructor.cpp
@@ -12251,20 +12251,18 @@ nsCSSFrameConstructor::CreateIBSiblings(
 
   // Resolve the right style context for our anonymous blocks.
   // The distinction in styles is needed because of CSS 2.1, section
   // 9.2.1.1, which says:
   //   When such an inline box is affected by relative positioning, any
   //   resulting translation also affects the block-level box contained
   //   in the inline box.
   RefPtr<nsStyleContext> blockSC = mPresShell->StyleSet()->
-      ResolveInheritingAnonymousBoxStyle(aIsPositioned ?
-                                           nsCSSAnonBoxes::mozAnonymousPositionedBlock :
-                                           nsCSSAnonBoxes::mozAnonymousBlock,
-                                         styleContext);
+    ResolveInheritingAnonymousBoxStyle(nsCSSAnonBoxes::mozBlockInsideInlineWrapper,
+                                       styleContext);
 
   nsContainerFrame* lastNewInline =
     static_cast<nsContainerFrame*>(aInitialInline->FirstContinuation());
   do {
     // On entry to this loop aChildItems is not empty and the first frame in it
     // is block-level.
     NS_PRECONDITION(aChildItems.NotEmpty(), "Should have child items");
     NS_PRECONDITION(!aChildItems.FirstChild()->IsInlineOutside(),
--- a/layout/base/nsLayoutUtils.cpp
+++ b/layout/base/nsLayoutUtils.cpp
@@ -3946,18 +3946,17 @@ AddBoxesForFrame(nsIFrame* aFrame,
   if (pseudoType == nsCSSAnonBoxes::tableWrapper) {
     AddBoxesForFrame(aFrame->PrincipalChildList().FirstChild(), aCallback);
     if (aCallback->mIncludeCaptionBoxForTable) {
       nsIFrame* kid = aFrame->GetChildList(nsIFrame::kCaptionList).FirstChild();
       if (kid) {
         AddBoxesForFrame(kid, aCallback);
       }
     }
-  } else if (pseudoType == nsCSSAnonBoxes::mozAnonymousBlock ||
-             pseudoType == nsCSSAnonBoxes::mozAnonymousPositionedBlock ||
+  } else if (pseudoType == nsCSSAnonBoxes::mozBlockInsideInlineWrapper ||
              pseudoType == nsCSSAnonBoxes::mozMathMLAnonymousBlock ||
              pseudoType == nsCSSAnonBoxes::mozXULAnonymousBlock) {
     for (nsIFrame* kid : aFrame->PrincipalChildList()) {
       AddBoxesForFrame(kid, aCallback);
     }
   } else {
     aCallback->AddBox(aFrame);
   }
@@ -3985,18 +3984,17 @@ nsLayoutUtils::GetFirstNonAnonymousFrame
       }
       nsIFrame* kid = aFrame->GetChildList(nsIFrame::kCaptionList).FirstChild();
       if (kid) {
         f = GetFirstNonAnonymousFrame(kid);
         if (f) {
           return f;
         }
       }
-    } else if (pseudoType == nsCSSAnonBoxes::mozAnonymousBlock ||
-               pseudoType == nsCSSAnonBoxes::mozAnonymousPositionedBlock ||
+    } else if (pseudoType == nsCSSAnonBoxes::mozBlockInsideInlineWrapper ||
                pseudoType == nsCSSAnonBoxes::mozMathMLAnonymousBlock ||
                pseudoType == nsCSSAnonBoxes::mozXULAnonymousBlock) {
       for (nsIFrame* kid : aFrame->PrincipalChildList()) {
         nsIFrame* f = GetFirstNonAnonymousFrame(kid);
         if (f) {
           return f;
         }
       }
--- a/layout/generic/nsFrame.cpp
+++ b/layout/generic/nsFrame.cpp
@@ -6905,18 +6905,17 @@ nsFrame::IsFrameTreeTooDeep(const Reflow
   mState &= ~NS_FRAME_TOO_DEEP_IN_FRAME_TREE;
   return false;
 }
 
 bool
 nsIFrame::IsBlockWrapper() const
 {
   nsIAtom *pseudoType = StyleContext()->GetPseudo();
-  return (pseudoType == nsCSSAnonBoxes::mozAnonymousBlock ||
-          pseudoType == nsCSSAnonBoxes::mozAnonymousPositionedBlock ||
+  return (pseudoType == nsCSSAnonBoxes::mozBlockInsideInlineWrapper ||
           pseudoType == nsCSSAnonBoxes::buttonContent ||
           pseudoType == nsCSSAnonBoxes::cellContent);
 }
 
 static nsIFrame*
 GetNearestBlockContainer(nsIFrame* frame)
 {
   // The block wrappers we use to wrap blocks inside inlines aren't
@@ -8812,27 +8811,25 @@ static void
 ComputeAndIncludeOutlineArea(nsIFrame* aFrame, nsOverflowAreas& aOverflowAreas,
                              const nsSize& aNewSize)
 {
   const nsStyleOutline* outline = aFrame->StyleOutline();
   if (!outline->ShouldPaintOutline()) {
     return;
   }
 
-  // When the outline property is set on :-moz-anonymous-block or
-  // :-moz-anonymous-positioned-block pseudo-elements, it inherited
-  // that outline from the inline that was broken because it
-  // contained a block.  In that case, we don't want a really wide
-  // outline if the block inside the inline is narrow, so union the
-  // actual contents of the anonymous blocks.
+  // When the outline property is set on a :-moz-block-inside-inline-wrapper
+  // pseudo-element, it inherited that outline from the inline that was broken
+  // because it contained a block.  In that case, we don't want a really wide
+  // outline if the block inside the inline is narrow, so union the actual
+  // contents of the anonymous blocks.
   nsIFrame *frameForArea = aFrame;
   do {
     nsIAtom *pseudoType = frameForArea->StyleContext()->GetPseudo();
-    if (pseudoType != nsCSSAnonBoxes::mozAnonymousBlock &&
-        pseudoType != nsCSSAnonBoxes::mozAnonymousPositionedBlock)
+    if (pseudoType != nsCSSAnonBoxes::mozBlockInsideInlineWrapper)
       break;
     // If we're done, we really want it and all its later siblings.
     frameForArea = frameForArea->PrincipalChildList().FirstChild();
     NS_ASSERTION(frameForArea, "anonymous block with no children?");
   } while (frameForArea);
 
   // Find the union of the border boxes of all descendants, or in
   // the block-in-inline case, all descendants we care about.
@@ -9172,18 +9169,17 @@ nsFrame::ConsiderChildOverflow(nsOverflo
 static nsIFrame*
 GetIBSplitSiblingForAnonymousBlock(const nsIFrame* aFrame)
 {
   NS_PRECONDITION(aFrame, "Must have a non-null frame!");
   NS_ASSERTION(aFrame->GetStateBits() & NS_FRAME_PART_OF_IBSPLIT,
                "GetIBSplitSibling should only be called on ib-split frames");
 
   nsIAtom* type = aFrame->StyleContext()->GetPseudo();
-  if (type != nsCSSAnonBoxes::mozAnonymousBlock &&
-      type != nsCSSAnonBoxes::mozAnonymousPositionedBlock) {
+  if (type != nsCSSAnonBoxes::mozBlockInsideInlineWrapper) {
     // it's not an anonymous block
     return nullptr;
   }
 
   // Find the first continuation of the frame.  (Ugh.  This ends up
   // being O(N^2) when it is called O(N) times.)
   aFrame = aFrame->FirstContinuation();
 
@@ -9274,18 +9270,17 @@ nsFrame::CorrectStyleParentFrame(nsIFram
     if (nsCSSAnonBoxes::IsNonInheritingAnonBox(aChildPseudo)) {
       return nullptr;
     }
 
     // Other anon boxes are parented to their actual parent already, except
     // for non-elements.  Those should not be treated as an anon box.
     if (!nsCSSAnonBoxes::IsNonElement(aChildPseudo) &&
         nsCSSAnonBoxes::IsAnonBox(aChildPseudo)) {
-      NS_ASSERTION(aChildPseudo != nsCSSAnonBoxes::mozAnonymousBlock &&
-                   aChildPseudo != nsCSSAnonBoxes::mozAnonymousPositionedBlock,
+      NS_ASSERTION(aChildPseudo != nsCSSAnonBoxes::mozBlockInsideInlineWrapper,
                    "Should have dealt with kids that have "
                    "NS_FRAME_PART_OF_IBSPLIT elsewhere");
       return aProspectiveParent;
     }
   }
 
   // Otherwise, walk up out of all anon boxes.  For placeholder frames, walk out
   // of all pseudo-elements as well.  Otherwise ReparentStyleContext could cause
--- a/layout/generic/nsInlineFrame.cpp
+++ b/layout/generic/nsInlineFrame.cpp
@@ -1044,35 +1044,36 @@ nsInlineFrame::DoUpdateStyleOfOwnedAnonB
   // Get the FramePropertyTable up front, since we are likely to need it
   // multiple times.  The other option would be to just call
   // nsIFrame::Properties() every time we need to do a lookup, but that does
   // more pointer-chasing.
   FramePropertyTable* propTable = presContext->PropertyTable();
   nsIFrame* blockFrame = propTable->Get(this, nsIFrame::IBSplitSibling());
   MOZ_ASSERT(blockFrame, "Why did we have an IB split?");
 
-  nsIAtom* pseudo = blockFrame->StyleContext()->GetPseudo();
-  MOZ_ASSERT(pseudo == nsCSSAnonBoxes::mozAnonymousBlock ||
-             pseudo == nsCSSAnonBoxes::mozAnonymousPositionedBlock,
-             "Unexpected kind of style context");
-
   // The anonymous block's style inherits from ours, and we already have our new
   // style context.
   RefPtr<nsStyleContext> newContext =
-    aStyleSet.ResolveInheritingAnonymousBoxStyle(pseudo, StyleContext());
+    aStyleSet.ResolveInheritingAnonymousBoxStyle(
+      nsCSSAnonBoxes::mozBlockInsideInlineWrapper, StyleContext());
 
   // We're guaranteed that newContext only differs from the old style context on
   // the block in things they might inherit from us.  And changehint processing
   // guarantees walking the continuation and ib-sibling chains, so our existing
   // changehint beign in aChangeList is good enough.  So we don't need to touch
   // aChangeList at all here.
 
   while (blockFrame) {
     MOZ_ASSERT(!blockFrame->GetPrevContinuation(),
                "Must be first continuation");
+
+    MOZ_ASSERT(blockFrame->StyleContext()->GetPseudo() ==
+               nsCSSAnonBoxes::mozBlockInsideInlineWrapper,
+               "Unexpected kind of style context");
+
     // We _could_ just walk along using GetNextContinuationWithSameStyle here,
     // but it would involve going back to the first continuation every so often,
     // which is a bit silly when we can just keep track of our first
     // continuations.
     for (nsIFrame* cont = blockFrame; cont; cont = cont->GetNextContinuation()) {
       cont->SetStyleContext(newContext);
     }
 
--- a/layout/style/nsCSSAnonBoxList.h
+++ b/layout/style/nsCSSAnonBoxList.h
@@ -37,18 +37,17 @@
 CSS_ANON_BOX(mozText, ":-moz-text")
 // placeholder frames for out of flows.  Note that :-moz-placeholder is used for
 // the pseudo-element that represents the placeholder text in <input
 // placeholder="foo">, so we need a different string here.
 CSS_NON_INHERITING_ANON_BOX(oofPlaceholder, ":-moz-oof-placeholder")
 // nsFirstLetterFrames for content outside the ::first-letter.
 CSS_ANON_BOX(firstLetterContinuation, ":-moz-first-letter-continuation")
 
-CSS_ANON_BOX(mozAnonymousBlock, ":-moz-anonymous-block")
-CSS_ANON_BOX(mozAnonymousPositionedBlock, ":-moz-anonymous-positioned-block")
+CSS_ANON_BOX(mozBlockInsideInlineWrapper, ":-moz-block-inside-inline-wrapper")
 CSS_ANON_BOX(mozMathMLAnonymousBlock, ":-moz-mathml-anonymous-block")
 CSS_ANON_BOX(mozXULAnonymousBlock, ":-moz-xul-anonymous-block")
 
 // Framesets
 CSS_NON_INHERITING_ANON_BOX(horizontalFramesetBorder, ":-moz-hframeset-border")
 CSS_NON_INHERITING_ANON_BOX(verticalFramesetBorder, ":-moz-vframeset-border")
 
 CSS_ANON_BOX(mozLineFrame, ":-moz-line-frame")
--- a/layout/style/res/ua.css
+++ b/layout/style/res/ua.css
@@ -127,35 +127,47 @@
 
 *|*:any-link:-moz-focusring {
   /* Don't specify the outline-color, we should always use initial value. */
   outline: 1px dotted;
 }
 
 /* Miscellaneous */
 
-*|*::-moz-anonymous-block, *|*::-moz-cell-content {
+*|*::-moz-cell-content {
   display: block !important;
   position: static !important;
   unicode-bidi: inherit;
   text-overflow: inherit;
   overflow-clip-box: inherit;
 }
 
-*|*::-moz-anonymous-block, *|*::-moz-anonymous-positioned-block {
+*|*::-moz-block-inside-inline-wrapper {
+  display: block !important;
   /* we currently inherit from the inline that is split */
+  position: inherit; /* static or relative or sticky */
   outline: inherit;
   outline-offset: inherit;
   clip-path: inherit;
   filter: inherit;
   mask: inherit;
   opacity: inherit;
   text-decoration: inherit;
   -moz-box-ordinal-group: inherit !important;
   overflow-clip-box: inherit;
+  unicode-bidi: inherit;
+  text-overflow: inherit;
+  /* The properties below here don't apply if our position is static,
+     and we do want them to have an effect it it's not, so it's fine
+     to always inherit them. */
+  top: inherit;
+  left: inherit;
+  bottom: inherit;
+  right: inherit;
+  z-index: inherit;
 }
 
 *|*::-moz-xul-anonymous-block {
   display: block ! important;
   position: static ! important;
   float: none ! important;
   -moz-box-ordinal-group: inherit !important;
   text-overflow: inherit;
@@ -263,30 +275,16 @@
   display: block !important;
   margin: auto;
 }
 
 *|*::-moz-pagebreak {
   display: block !important;
 }
 
-*|*::-moz-anonymous-positioned-block {
-  display: block !important;
-  position: inherit; /* relative or sticky */
-  top: inherit;
-  left: inherit;
-  bottom: inherit;
-  right: inherit;
-  z-index: inherit;
-  clip: inherit;
-  opacity: inherit;
-  unicode-bidi: inherit;
-  text-overflow: inherit;
-}
-
 /* Printing */
 
 @media print {
 
   * {
     cursor: default !important;
   }
 
--- a/servo/components/style/gecko/generated/gecko_pseudo_element_helper.rs
+++ b/servo/components/style/gecko/generated/gecko_pseudo_element_helper.rs
@@ -104,21 +104,18 @@
                     atom!(":-moz-text"),
                     true);
     pseudo_element!(":-moz-oof-placeholder",
                     atom!(":-moz-oof-placeholder"),
                     true);
     pseudo_element!(":-moz-first-letter-continuation",
                     atom!(":-moz-first-letter-continuation"),
                     true);
-    pseudo_element!(":-moz-anonymous-block",
-                    atom!(":-moz-anonymous-block"),
-                    true);
-    pseudo_element!(":-moz-anonymous-positioned-block",
-                    atom!(":-moz-anonymous-positioned-block"),
+    pseudo_element!(":-moz-block-inside-inline-wrapper",
+                    atom!(":-moz-block-inside-inline-wrapper"),
                     true);
     pseudo_element!(":-moz-mathml-anonymous-block",
                     atom!(":-moz-mathml-anonymous-block"),
                     true);
     pseudo_element!(":-moz-xul-anonymous-block",
                     atom!(":-moz-xul-anonymous-block"),
                     true);
     pseudo_element!(":-moz-hframeset-border",
--- a/servo/components/style/gecko_string_cache/atom_macro.rs
+++ b/servo/components/style/gecko_string_cache/atom_macro.rs
@@ -1763,18 +1763,22 @@ cfg_if! {
             #[link_name = "_ZN9nsGkAtoms18onreadystatechangeE"]
             pub static nsGkAtoms_onreadystatechange: *mut nsIAtom;
             #[link_name = "_ZN9nsGkAtoms10onreceivedE"]
             pub static nsGkAtoms_onreceived: *mut nsIAtom;
             #[link_name = "_ZN9nsGkAtoms12onremoteheldE"]
             pub static nsGkAtoms_onremoteheld: *mut nsIAtom;
             #[link_name = "_ZN9nsGkAtoms15onremoteresumedE"]
             pub static nsGkAtoms_onremoteresumed: *mut nsIAtom;
+            #[link_name = "_ZN9nsGkAtoms17onrequestprogressE"]
+            pub static nsGkAtoms_onrequestprogress: *mut nsIAtom;
             #[link_name = "_ZN9nsGkAtoms26onresourcetimingbufferfullE"]
             pub static nsGkAtoms_onresourcetimingbufferfull: *mut nsIAtom;
+            #[link_name = "_ZN9nsGkAtoms18onresponseprogressE"]
+            pub static nsGkAtoms_onresponseprogress: *mut nsIAtom;
             #[link_name = "_ZN9nsGkAtoms12onretrievingE"]
             pub static nsGkAtoms_onretrieving: *mut nsIAtom;
             #[link_name = "_ZN9nsGkAtoms9onRequestE"]
             pub static nsGkAtoms_onRequest: *mut nsIAtom;
             #[link_name = "_ZN9nsGkAtoms24onrequestmediaplaystatusE"]
             pub static nsGkAtoms_onrequestmediaplaystatus: *mut nsIAtom;
             #[link_name = "_ZN9nsGkAtoms7onresetE"]
             pub static nsGkAtoms_onreset: *mut nsIAtom;
@@ -4829,20 +4833,18 @@ cfg_if! {
             #[link_name = "_ZN19nsCSSPseudoElements14mozColorSwatchE"]
             pub static nsCSSPseudoElements_mozColorSwatch: *mut nsICSSPseudoElement;
             #[link_name = "_ZN14nsCSSAnonBoxes7mozTextE"]
             pub static nsCSSAnonBoxes_mozText: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes14oofPlaceholderE"]
             pub static nsCSSAnonBoxes_oofPlaceholder: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes23firstLetterContinuationE"]
             pub static nsCSSAnonBoxes_firstLetterContinuation: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "_ZN14nsCSSAnonBoxes17mozAnonymousBlockE"]
-            pub static nsCSSAnonBoxes_mozAnonymousBlock: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "_ZN14nsCSSAnonBoxes27mozAnonymousPositionedBlockE"]
-            pub static nsCSSAnonBoxes_mozAnonymousPositionedBlock: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "_ZN14nsCSSAnonBoxes27mozBlockInsideInlineWrapperE"]
+            pub static nsCSSAnonBoxes_mozBlockInsideInlineWrapper: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes23mozMathMLAnonymousBlockE"]
             pub static nsCSSAnonBoxes_mozMathMLAnonymousBlock: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes20mozXULAnonymousBlockE"]
             pub static nsCSSAnonBoxes_mozXULAnonymousBlock: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes24horizontalFramesetBorderE"]
             pub static nsCSSAnonBoxes_horizontalFramesetBorder: *mut nsICSSAnonBoxPseudo;
             #[link_name = "_ZN14nsCSSAnonBoxes22verticalFramesetBorderE"]
             pub static nsCSSAnonBoxes_verticalFramesetBorder: *mut nsICSSAnonBoxPseudo;
@@ -6692,18 +6694,22 @@ cfg_if! {
             #[link_name = "?onreadystatechange@nsGkAtoms@@2PEAVnsIAtom@@EA"]
             pub static nsGkAtoms_onreadystatechange: *mut nsIAtom;
             #[link_name = "?onreceived@nsGkAtoms@@2PEAVnsIAtom@@EA"]
             pub static nsGkAtoms_onreceived: *mut nsIAtom;
             #[link_name = "?onremoteheld@nsGkAtoms@@2PEAVnsIAtom@@EA"]
             pub static nsGkAtoms_onremoteheld: *mut nsIAtom;
             #[link_name = "?onremoteresumed@nsGkAtoms@@2PEAVnsIAtom@@EA"]
             pub static nsGkAtoms_onremoteresumed: *mut nsIAtom;
+            #[link_name = "?onrequestprogress@nsGkAtoms@@2PEAVnsIAtom@@EA"]
+            pub static nsGkAtoms_onrequestprogress: *mut nsIAtom;
             #[link_name = "?onresourcetimingbufferfull@nsGkAtoms@@2PEAVnsIAtom@@EA"]
             pub static nsGkAtoms_onresourcetimingbufferfull: *mut nsIAtom;
+            #[link_name = "?onresponseprogress@nsGkAtoms@@2PEAVnsIAtom@@EA"]
+            pub static nsGkAtoms_onresponseprogress: *mut nsIAtom;
             #[link_name = "?onretrieving@nsGkAtoms@@2PEAVnsIAtom@@EA"]
             pub static nsGkAtoms_onretrieving: *mut nsIAtom;
             #[link_name = "?onRequest@nsGkAtoms@@2PEAVnsIAtom@@EA"]
             pub static nsGkAtoms_onRequest: *mut nsIAtom;
             #[link_name = "?onrequestmediaplaystatus@nsGkAtoms@@2PEAVnsIAtom@@EA"]
             pub static nsGkAtoms_onrequestmediaplaystatus: *mut nsIAtom;
             #[link_name = "?onreset@nsGkAtoms@@2PEAVnsIAtom@@EA"]
             pub static nsGkAtoms_onreset: *mut nsIAtom;
@@ -9758,20 +9764,18 @@ cfg_if! {
             #[link_name = "?mozColorSwatch@nsCSSPseudoElements@@2PEAVnsICSSPseudoElement@@EA"]
             pub static nsCSSPseudoElements_mozColorSwatch: *mut nsICSSPseudoElement;
             #[link_name = "?mozText@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_mozText: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?oofPlaceholder@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_oofPlaceholder: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?firstLetterContinuation@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_firstLetterContinuation: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "?mozAnonymousBlock@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
-            pub static nsCSSAnonBoxes_mozAnonymousBlock: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "?mozAnonymousPositionedBlock@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
-            pub static nsCSSAnonBoxes_mozAnonymousPositionedBlock: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "?mozBlockInsideInlineWrapper@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
+            pub static nsCSSAnonBoxes_mozBlockInsideInlineWrapper: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?mozMathMLAnonymousBlock@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_mozMathMLAnonymousBlock: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?mozXULAnonymousBlock@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_mozXULAnonymousBlock: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?horizontalFramesetBorder@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_horizontalFramesetBorder: *mut nsICSSAnonBoxPseudo;
             #[link_name = "?verticalFramesetBorder@nsCSSAnonBoxes@@2PEAVnsICSSAnonBoxPseudo@@EA"]
             pub static nsCSSAnonBoxes_verticalFramesetBorder: *mut nsICSSAnonBoxPseudo;
@@ -11621,18 +11625,22 @@ cfg_if! {
             #[link_name = "\x01?onreadystatechange@nsGkAtoms@@2PAVnsIAtom@@A"]
             pub static nsGkAtoms_onreadystatechange: *mut nsIAtom;
             #[link_name = "\x01?onreceived@nsGkAtoms@@2PAVnsIAtom@@A"]
             pub static nsGkAtoms_onreceived: *mut nsIAtom;
             #[link_name = "\x01?onremoteheld@nsGkAtoms@@2PAVnsIAtom@@A"]
             pub static nsGkAtoms_onremoteheld: *mut nsIAtom;
             #[link_name = "\x01?onremoteresumed@nsGkAtoms@@2PAVnsIAtom@@A"]
             pub static nsGkAtoms_onremoteresumed: *mut nsIAtom;
+            #[link_name = "\x01?onrequestprogress@nsGkAtoms@@2PAVnsIAtom@@A"]
+            pub static nsGkAtoms_onrequestprogress: *mut nsIAtom;
             #[link_name = "\x01?onresourcetimingbufferfull@nsGkAtoms@@2PAVnsIAtom@@A"]
             pub static nsGkAtoms_onresourcetimingbufferfull: *mut nsIAtom;
+            #[link_name = "\x01?onresponseprogress@nsGkAtoms@@2PAVnsIAtom@@A"]
+            pub static nsGkAtoms_onresponseprogress: *mut nsIAtom;
             #[link_name = "\x01?onretrieving@nsGkAtoms@@2PAVnsIAtom@@A"]
             pub static nsGkAtoms_onretrieving: *mut nsIAtom;
             #[link_name = "\x01?onRequest@nsGkAtoms@@2PAVnsIAtom@@A"]
             pub static nsGkAtoms_onRequest: *mut nsIAtom;
             #[link_name = "\x01?onrequestmediaplaystatus@nsGkAtoms@@2PAVnsIAtom@@A"]
             pub static nsGkAtoms_onrequestmediaplaystatus: *mut nsIAtom;
             #[link_name = "\x01?onreset@nsGkAtoms@@2PAVnsIAtom@@A"]
             pub static nsGkAtoms_onreset: *mut nsIAtom;
@@ -14687,20 +14695,18 @@ cfg_if! {
             #[link_name = "\x01?mozColorSwatch@nsCSSPseudoElements@@2PAVnsICSSPseudoElement@@A"]
             pub static nsCSSPseudoElements_mozColorSwatch: *mut nsICSSPseudoElement;
             #[link_name = "\x01?mozText@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_mozText: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?oofPlaceholder@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_oofPlaceholder: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?firstLetterContinuation@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_firstLetterContinuation: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "\x01?mozAnonymousBlock@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
-            pub static nsCSSAnonBoxes_mozAnonymousBlock: *mut nsICSSAnonBoxPseudo;
-            #[link_name = "\x01?mozAnonymousPositionedBlock@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
-            pub static nsCSSAnonBoxes_mozAnonymousPositionedBlock: *mut nsICSSAnonBoxPseudo;
+            #[link_name = "\x01?mozBlockInsideInlineWrapper@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
+            pub static nsCSSAnonBoxes_mozBlockInsideInlineWrapper: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?mozMathMLAnonymousBlock@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_mozMathMLAnonymousBlock: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?mozXULAnonymousBlock@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_mozXULAnonymousBlock: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?horizontalFramesetBorder@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_horizontalFramesetBorder: *mut nsICSSAnonBoxPseudo;
             #[link_name = "\x01?verticalFramesetBorder@nsCSSAnonBoxes@@2PAVnsICSSAnonBoxPseudo@@A"]
             pub static nsCSSAnonBoxes_verticalFramesetBorder: *mut nsICSSAnonBoxPseudo;
@@ -16553,18 +16559,22 @@ macro_rules! atom {
 ("onreadystatechange") =>
   { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_onreadystatechange as *mut _) } };
 ("onreceived") =>
   { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_onreceived as *mut _) } };
 ("onremoteheld") =>
   { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_onremoteheld as *mut _) } };
 ("onremoteresumed") =>
   { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_onremoteresumed as *mut _) } };
+("onrequestprogress") =>
+  { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_onrequestprogress as *mut _) } };
 ("onresourcetimingbufferfull") =>
   { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_onresourcetimingbufferfull as *mut _) } };
+("onresponseprogress") =>
+  { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_onresponseprogress as *mut _) } };
 ("onretrieving") =>
   { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_onretrieving as *mut _) } };
 ("onRequest") =>
   { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_onRequest as *mut _) } };
 ("onrequestmediaplaystatus") =>
   { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_onrequestmediaplaystatus as *mut _) } };
 ("onreset") =>
   { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsGkAtoms_onreset as *mut _) } };
@@ -19619,20 +19629,18 @@ macro_rules! atom {
 (":-moz-color-swatch") =>
   { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSPseudoElements_mozColorSwatch as *mut _) } };
 (":-moz-text") =>
   { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_mozText as *mut _) } };
 (":-moz-oof-placeholder") =>
   { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_oofPlaceholder as *mut _) } };
 (":-moz-first-letter-continuation") =>
   { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_firstLetterContinuation as *mut _) } };
-(":-moz-anonymous-block") =>
-  { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_mozAnonymousBlock as *mut _) } };
-(":-moz-anonymous-positioned-block") =>
-  { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_mozAnonymousPositionedBlock as *mut _) } };
+(":-moz-block-inside-inline-wrapper") =>
+  { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_mozBlockInsideInlineWrapper as *mut _) } };
 (":-moz-mathml-anonymous-block") =>
   { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_mozMathMLAnonymousBlock as *mut _) } };
 (":-moz-xul-anonymous-block") =>
   { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_mozXULAnonymousBlock as *mut _) } };
 (":-moz-hframeset-border") =>
   { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_horizontalFramesetBorder as *mut _) } };
 (":-moz-vframeset-border") =>
   { unsafe { $crate::string_cache::atom_macro::atom_from_static($crate::string_cache::atom_macro::nsCSSAnonBoxes_verticalFramesetBorder as *mut _) } };