Closed Bug 1645549 Opened 4 years ago Closed 4 years ago

Assertion failure: !itemIter.AtEnd() (Why can't we find FlexItem for our child frame?), at src/layout/generic/nsFlexContainerFrame.cpp:3983

Categories

(Core :: Layout: Flexbox, defect)

defect

Tracking

()

RESOLVED FIXED
mozilla80
Tracking Status
firefox-esr68 --- unaffected
firefox-esr78 --- wontfix
firefox77 --- wontfix
firefox78 --- wontfix
firefox79 --- wontfix
firefox80 --- fixed

People

(Reporter: tsmith, Assigned: TYLin)

References

(Blocks 1 open bug)

Details

(Keywords: assertion, testcase)

Attachments

(3 files)

Attached file testcase.html

Assertion failure: !itemIter.AtEnd() (Why can't we find FlexItem for our child frame?), at /builds/worker/checkouts/gecko/layout/generic/nsFlexContainerFrame.cpp:3983

0|0|libxul.so|nsFlexContainerFrame::GenerateFlexLines(nsFlexContainerFrame::SharedFlexData const&, nsTArray<nsFlexContainerFrame::FlexLine>&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsFlexContainerFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|3982|0x29
0|1|libxul.so|nsFlexContainerFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsFlexContainerFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|4392|0xb
0|2|libxul.so|nsBlockReflowContext::ReflowBlock(mozilla::LogicalRect const&, bool, nsCollapsingMargin&, int, bool, nsLineBox*, mozilla::ReflowInput&, nsReflowStatus&, mozilla::BlockReflowInput&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockReflowContext.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|293|0x1e
0|3|libxul.so|nsBlockFrame::ReflowBlockFrame(mozilla::BlockReflowInput&, nsLineList_iterator, bool*)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|3768|0x43
0|4|libxul.so|nsBlockFrame::ReflowLine(mozilla::BlockReflowInput&, nsLineList_iterator, bool*)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|3121|0x16
0|5|libxul.so|nsBlockFrame::ReflowDirtyLines(mozilla::BlockReflowInput&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|2660|0x24
0|6|libxul.so|nsBlockFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|1374|0xb
0|7|libxul.so|nsContainerFrame::ReflowChild(nsIFrame*, nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, mozilla::WritingMode const&, mozilla::LogicalPoint const&, nsSize const&, nsIFrame::ReflowChildFlags, nsReflowStatus&, nsOverflowContinuationTracker*)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsContainerFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|1074|0x1a
0|8|libxul.so|nsColumnSetFrame::ReflowChildren(mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&, nsColumnSetFrame::ReflowConfig const&, bool)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsColumnSetFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|702|0x3b
0|9|libxul.so|nsColumnSetFrame::ReflowColumns(mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&, nsColumnSetFrame::ReflowConfig&, bool)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsColumnSetFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|412|0x5
0|10|libxul.so|nsColumnSetFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsColumnSetFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|1213|0x38
0|11|libxul.so|nsBlockReflowContext::ReflowBlock(mozilla::LogicalRect const&, bool, nsCollapsingMargin&, int, bool, nsLineBox*, mozilla::ReflowInput&, nsReflowStatus&, mozilla::BlockReflowInput&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockReflowContext.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|293|0x1e
0|12|libxul.so|nsBlockFrame::ReflowBlockFrame(mozilla::BlockReflowInput&, nsLineList_iterator, bool*)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|3768|0x43
0|13|libxul.so|nsBlockFrame::ReflowLine(mozilla::BlockReflowInput&, nsLineList_iterator, bool*)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|3121|0x16
0|14|libxul.so|nsBlockFrame::ReflowDirtyLines(mozilla::BlockReflowInput&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|2660|0x24
0|15|libxul.so|nsBlockFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|1374|0xb
0|16|libxul.so|nsBlockReflowContext::ReflowBlock(mozilla::LogicalRect const&, bool, nsCollapsingMargin&, int, bool, nsLineBox*, mozilla::ReflowInput&, nsReflowStatus&, mozilla::BlockReflowInput&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockReflowContext.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|293|0x1e
0|17|libxul.so|nsBlockFrame::ReflowBlockFrame(mozilla::BlockReflowInput&, nsLineList_iterator, bool*)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|3768|0x43
0|18|libxul.so|nsBlockFrame::ReflowLine(mozilla::BlockReflowInput&, nsLineList_iterator, bool*)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|3121|0x16
0|19|libxul.so|nsBlockFrame::ReflowDirtyLines(mozilla::BlockReflowInput&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|2660|0x24
0|20|libxul.so|nsBlockFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|1374|0xb
0|21|libxul.so|nsContainerFrame::ReflowChild(nsIFrame*, nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, mozilla::WritingMode const&, mozilla::LogicalPoint const&, nsSize const&, nsIFrame::ReflowChildFlags, nsReflowStatus&, nsOverflowContinuationTracker*)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsContainerFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|1074|0x1a
0|22|libxul.so|nsColumnSetFrame::ReflowChildren(mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&, nsColumnSetFrame::ReflowConfig const&, bool)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsColumnSetFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|702|0x3b
0|23|libxul.so|nsColumnSetFrame::ReflowColumns(mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&, nsColumnSetFrame::ReflowConfig&, bool)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsColumnSetFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|412|0x5
0|24|libxul.so|nsColumnSetFrame::FindBestBalanceBSize(mozilla::ReflowInput const&, nsPresContext*, nsColumnSetFrame::ReflowConfig&, nsColumnSetFrame::ColumnBalanceData, mozilla::ReflowOutput&, bool, nsReflowStatus&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsColumnSetFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|1095|0x22
0|25|libxul.so|nsColumnSetFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsColumnSetFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|1220|0x3b
0|26|libxul.so|nsBlockReflowContext::ReflowBlock(mozilla::LogicalRect const&, bool, nsCollapsingMargin&, int, bool, nsLineBox*, mozilla::ReflowInput&, nsReflowStatus&, mozilla::BlockReflowInput&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockReflowContext.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|293|0x1e
0|27|libxul.so|nsBlockFrame::ReflowBlockFrame(mozilla::BlockReflowInput&, nsLineList_iterator, bool*)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|3768|0x43
0|28|libxul.so|nsBlockFrame::ReflowLine(mozilla::BlockReflowInput&, nsLineList_iterator, bool*)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|3121|0x16
0|29|libxul.so|nsBlockFrame::ReflowDirtyLines(mozilla::BlockReflowInput&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|2660|0x24
0|30|libxul.so|nsBlockFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsBlockFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|1374|0xb
0|31|libxul.so|nsContainerFrame::ReflowChild(nsIFrame*, nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, mozilla::WritingMode const&, mozilla::LogicalPoint const&, nsSize const&, nsIFrame::ReflowChildFlags, nsReflowStatus&, nsOverflowContinuationTracker*)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsContainerFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|1074|0x1a
0|32|libxul.so|nsCanvasFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsCanvasFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|750|0x22
0|33|libxul.so|nsContainerFrame::ReflowChild(nsIFrame*, nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, mozilla::WritingMode const&, mozilla::LogicalPoint const&, nsSize const&, nsIFrame::ReflowChildFlags, nsReflowStatus&, nsOverflowContinuationTracker*)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsContainerFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|1074|0x1a
0|34|libxul.so|nsHTMLScrollFrame::ReflowScrolledFrame(mozilla::ScrollReflowInput*, bool, bool, mozilla::ReflowOutput*)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsGfxScrollFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|661|0x3a
0|35|libxul.so|nsHTMLScrollFrame::ReflowContents(mozilla::ScrollReflowInput*, mozilla::ReflowOutput const&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsGfxScrollFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|775|0x15
0|36|libxul.so|nsHTMLScrollFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsGfxScrollFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|1161|0x15
0|37|libxul.so|nsContainerFrame::ReflowChild(nsIFrame*, nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, int, int, nsIFrame::ReflowChildFlags, nsReflowStatus&, nsOverflowContinuationTracker*)|hg:hg.mozilla.org/mozilla-central:layout/generic/nsContainerFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|1114|0x18
0|38|libxul.so|mozilla::ViewportFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&)|hg:hg.mozilla.org/mozilla-central:layout/generic/ViewportFrame.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|296|0x2b
0|39|libxul.so|mozilla::PresShell::DoReflow(nsIFrame*, bool, mozilla::OverflowChangedTracker*)|hg:hg.mozilla.org/mozilla-central:layout/base/PresShell.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|9555|0x1c
0|40|libxul.so|mozilla::PresShell::ProcessReflowCommands(bool)|hg:hg.mozilla.org/mozilla-central:layout/base/PresShell.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|9728|0x12
0|41|libxul.so|mozilla::PresShell::DoFlushPendingNotifications(mozilla::ChangesToFlush)|hg:hg.mozilla.org/mozilla-central:layout/base/PresShell.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|4209|0x12
0|42|libxul.so|nsRefreshDriver::Tick(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp)|hg:hg.mozilla.org/mozilla-central:layout/base/PresShell.h:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|1435|0xb
0|43|libxul.so|mozilla::RefreshDriverTimer::TickRefreshDrivers(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp, nsTArray<RefPtr<nsRefreshDriver> >&)|hg:hg.mozilla.org/mozilla-central:layout/base/nsRefreshDriver.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|373|0xb
0|44|libxul.so|mozilla::RefreshDriverTimer::Tick(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp)|hg:hg.mozilla.org/mozilla-central:layout/base/nsRefreshDriver.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|367|0x12
0|45|libxul.so|mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::TickRefreshDriver(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp)|hg:hg.mozilla.org/mozilla-central:layout/base/nsRefreshDriver.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|745|0x17
0|46|libxul.so|mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::NotifyVsync(mozilla::VsyncEvent const&)|hg:hg.mozilla.org/mozilla-central:layout/base/nsRefreshDriver.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|644|0xf
0|47|libxul.so|mozilla::layout::VsyncChild::RecvNotify(mozilla::VsyncEvent const&)|hg:hg.mozilla.org/mozilla-central:layout/ipc/VsyncChild.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|55|0x13
0|48|libxul.so|mozilla::layout::PVsyncChild::OnMessageReceived(IPC::Message const&)|s3:gecko-generated-sources:27495909b8eb16a2f6224f9af7a0c052f58ac4a1f37ddd12d240b8b6a62795d131a51db23214bbde8ed61a33c6a97d727ae972f588d3f35141a1a66f3aadceeb/ipc/ipdl/PVsyncChild.cpp:|187|0x8
0|49|libxul.so|mozilla::ipc::PBackgroundChild::OnMessageReceived(IPC::Message const&)|s3:gecko-generated-sources:75695bbbf1ec93aad4718f03c359901f1be9ae34cba79945a5c42f3e8a2da054cc4ed1a56d373be9953080b82b366a6cd792a7b5323cd7f0d62bfa3c3b040098/ipc/ipdl/PBackgroundChild.cpp:|6083|0x24
0|50|libxul.so|mozilla::ipc::MessageChannel::DispatchAsyncMessage(mozilla::ipc::ActorLifecycleProxy*, IPC::Message const&)|hg:hg.mozilla.org/mozilla-central:ipc/glue/MessageChannel.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|2190|0x1c
0|51|libxul.so|mozilla::ipc::MessageChannel::DispatchMessage(IPC::Message&&)|hg:hg.mozilla.org/mozilla-central:ipc/glue/MessageChannel.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|2114|0x12
0|52|libxul.so|mozilla::ipc::MessageChannel::RunMessage(mozilla::ipc::MessageChannel::MessageTask&)|hg:hg.mozilla.org/mozilla-central:ipc/glue/MessageChannel.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|1962|0xb
0|53|libxul.so|mozilla::ipc::MessageChannel::MessageTask::Run()|hg:hg.mozilla.org/mozilla-central:ipc/glue/MessageChannel.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|1993|0x12
0|54|libxul.so|nsThread::ProcessNextEvent(bool, bool*)|hg:hg.mozilla.org/mozilla-central:xpcom/threads/nsThread.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|1211|0x11
0|55|libxul.so|NS_ProcessNextEvent(nsIThread*, bool)|hg:hg.mozilla.org/mozilla-central:xpcom/threads/nsThreadUtils.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|501|0xc
0|56|libxul.so|mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*)|hg:hg.mozilla.org/mozilla-central:ipc/glue/MessagePump.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|109|0x14
0|57|libxul.so|MessageLoop::RunInternal()|hg:hg.mozilla.org/mozilla-central:ipc/chromium/src/base/message_loop.cc:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|315|0x17
0|58|libxul.so|MessageLoop::Run()|hg:hg.mozilla.org/mozilla-central:ipc/chromium/src/base/message_loop.cc:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|290|0x8
0|59|libxul.so|nsBaseAppShell::Run()|hg:hg.mozilla.org/mozilla-central:widget/nsBaseAppShell.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|137|0xd
0|60|libxul.so|XRE_RunAppShell()|hg:hg.mozilla.org/mozilla-central:toolkit/xre/nsEmbedFunctions.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|913|0xe
0|61|libxul.so|mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate*)|hg:hg.mozilla.org/mozilla-central:ipc/glue/MessagePump.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|237|0x5
0|62|libxul.so|MessageLoop::RunInternal()|hg:hg.mozilla.org/mozilla-central:ipc/chromium/src/base/message_loop.cc:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|315|0x17
0|63|libxul.so|MessageLoop::Run()|hg:hg.mozilla.org/mozilla-central:ipc/chromium/src/base/message_loop.cc:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|290|0x8
0|64|libxul.so|XRE_InitChildProcess(int, char**, XREChildData const*)|hg:hg.mozilla.org/mozilla-central:toolkit/xre/nsEmbedFunctions.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|744|0x5
0|65|firefox-bin|content_process_main(mozilla::Bootstrap*, int, char**)|hg:hg.mozilla.org/mozilla-central:ipc/contentproc/plugin-container.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|56|0x11
0|66|firefox-bin|main|hg:hg.mozilla.org/mozilla-central:browser/app/nsBrowserApp.cpp:9c1b2859111c0b84b8a1112dd3b36bd5910376e1|303|0x20
Flags: in-testsuite?

A Pernosco session is available here: https://pernos.co/debug/65gVIUc7Jnvc1SCQgGqpog/index.html

I'll take a look next week.

Severity: -- → S3
Flags: needinfo?(aethanyc)

The root cause is: when sorting frames by DOM order in MergeSortedFrameLists (which is used by many helpers like PushIncompleteChildren, NormalizeChildLists, etc.), we call GetContent directly on the the frame. However, if the frame is an anonymous flex item, its content is the flex container, which yields a wrong result that the anonymous flex item is placed in the front of the frame list.

https://searchfox.org/mozilla-central/rev/a87a1c3b543475276e6d57a7a80cb02f3e42b6ed/layout/generic/nsContainerFrame.cpp#2070-2071

Assignee: nobody → aethanyc
Status: NEW → ASSIGNED
Flags: needinfo?(aethanyc)

An anonymous flex item has the same content as the flex container. If we
don't find the item's actual content, when sorting its frame in DOM
order, it will be placed to the front of the list.

Depends on D81000

Attachment #9159125 - Attachment description: Bug 1645549 Part 2 - Find the first non-anonymous-box descendant when sorting frame list. → Bug 1645549 Part 2 - Find the first non-anonymous-box's content node when sorting frame list.
Attachment #9159125 - Attachment description: Bug 1645549 Part 2 - Find the first non-anonymous-box's content node when sorting frame list. → Bug 1645549 Part 2 - Find the first non-anonymous-box descendant when sorting frame list.
Attachment #9159125 - Attachment description: Bug 1645549 Part 2 - Find the first non-anonymous-box descendant when sorting frame list. → Bug 1645549 Part 2 - Find the first non-anonymous-box's content node when sorting frame list.
Blocks: 1648577
Pushed by aethanyc@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/f250ca90d499
Part 1 - Move GetFirstNonAnonBoxDescendant() to nsContainerFrame. r=dholbert
https://hg.mozilla.org/integration/autoland/rev/e32e59c330e6
Part 2 - Find the first non-anonymous-box's content node when sorting frame list. r=dholbert
Status: ASSIGNED → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla80
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: