Use logical coordinates in nsVideoFrame::Reflow()
Categories
(Core :: Layout: Images, Video, and HTML Frames, task)
Tracking
()
Tracking | Status | |
---|---|---|
firefox120 | --- | fixed |
People
(Reporter: TYLin, Assigned: TYLin)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
Also, in nsVideoFrame::Reflow()
, convert the caller of nsContainerFrame::ReflowChild
and nsContainerFrame::FinishReflowChild
to logical version.
Assignee | ||
Comment 1•9 months ago
|
||
This patch doesn't change user-perceivable behavior.
Note: before this patch, when reflowing poster frame, kidReflowInput
was
initialized with cbSize
of value (0,0), which is bogus since Size
in
aMetrics
has not been set yet. Removing the bogus code uncovers the following
assertions
ASSERTION: Our containing block must not have unconstrained inline-size!
in a 944909-1.html, which has bogus large sizes.
Pushed by aethanyc@gmail.com: https://hg.mozilla.org/integration/autoland/rev/5c3542fc6cc8 Simplify nsVideoFrame::Reflow() and switch it to logical coordinates. r=emilio
Comment 3•9 months ago
|
||
Backed out for causing failures on 944909-1.html
- backout: https://hg.mozilla.org/integration/autoland/rev/802ad06c882b554b3db08a741c337b5dc3d3dded
- push: https://treeherder.mozilla.org/jobs?repo=autoland&group_state=expanded&revision=5c3542fc6cc8561fa4f77ef28b10c402b770851d&selectedTaskRun=f5ET2l6_Slq9jqTsk0FMAQ.0
- failure log: https://treeherder.mozilla.org/logviewer?job_id=430394581&repo=autoland&lineNumber=140591
[task 2023-09-26T19:27:48.016Z] 19:27:48 INFO - [Child 3521, Main Thread] ###!!! ASSERTION: Our containing block must not have unconstrained inline-size!: 'aCBSize.ISize(aWM) != NS_UNCONSTRAINEDSIZE', file /builds/worker/checkouts/gecko/layout/generic/nsContainerFrame.cpp:2408
[task 2023-09-26T19:27:48.017Z] 19:27:48 INFO - #01: NS_DebugBreak [xpcom/base/nsDebugImpl.cpp:0]
[task 2023-09-26T19:27:48.017Z] 19:27:48 INFO - #02: nsContainerFrame::ComputeSizeWithIntrinsicDimensions(gfxContext*, mozilla::WritingMode, mozilla::IntrinsicSize const&, mozilla::AspectRatio const&, mozilla::LogicalSize const&, mozilla::LogicalSize const&, mozilla::LogicalSize const&, mozilla::StyleSizeOverrides const&, mozilla::EnumSet<mozilla::ComputeSizeFlag, unsigned char>) [layout/generic/nsContainerFrame.cpp:2291]
[task 2023-09-26T19:27:48.018Z] 19:27:48 INFO - #03: nsImageFrame::ComputeSize(gfxContext*, mozilla::WritingMode, mozilla::LogicalSize const&, int, mozilla::LogicalSize const&, mozilla::LogicalSize const&, mozilla::StyleSizeOverrides const&, mozilla::EnumSet<mozilla::ComputeSizeFlag, unsigned char>) [layout/generic/nsImageFrame.cpp:0]
[task 2023-09-26T19:27:48.019Z] 19:27:48 INFO - #04: mozilla::ReflowInput::InitConstraints(nsPresContext*, mozilla::Maybe<mozilla::LogicalSize> const&, mozilla::Maybe<mozilla::LogicalMargin> const&, mozilla::Maybe<mozilla::LogicalMargin> const&, mozilla::LayoutFrameType) [layout/generic/ReflowInput.cpp:2403]
[task 2023-09-26T19:27:48.019Z] 19:27:48 INFO - #05: mozilla::ReflowInput::Init(nsPresContext*, mozilla::Maybe<mozilla::LogicalSize> const&, mozilla::Maybe<mozilla::LogicalMargin> const&, mozilla::Maybe<mozilla::LogicalMargin> const&) [layout/generic/ReflowInput.cpp:379]
[task 2023-09-26T19:27:48.020Z] 19:27:48 INFO - #06: mozilla::ReflowInput::ReflowInput(nsPresContext*, mozilla::ReflowInput const&, nsIFrame*, mozilla::LogicalSize const&, mozilla::Maybe<mozilla::LogicalSize> const&, mozilla::EnumSet<mozilla::ReflowInput::InitFlag, unsigned char>, mozilla::StyleSizeOverrides const&, mozilla::EnumSet<mozilla::ComputeSizeFlag, unsigned char>) [layout/generic/ReflowInput.cpp:0]
[task 2023-09-26T19:27:48.021Z] 19:27:48 INFO - #07: nsVideoFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) [layout/generic/nsVideoFrame.cpp:246]
[task 2023-09-26T19:27:48.022Z] 19:27:48 INFO - #08: nsContainerFrame::ReflowChild(nsIFrame*, nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, mozilla::WritingMode const&, mozilla::LogicalPoint const&, nsSize const&, nsIFrame::ReflowChildFlags, nsReflowStatus&, nsOverflowContinuationTracker*) [layout/generic/nsContainerFrame.cpp:0]
[task 2023-09-26T19:27:48.022Z] 19:27:48 INFO - #09: nsFlexContainerFrame::ReflowFlexItem(nsFlexContainerFrame::FlexboxAxisTracker const&, mozilla::ReflowInput const&, nsFlexContainerFrame::FlexItem const&, mozilla::LogicalPoint const&, mozilla::LogicalSize const&, nsSize const&) [layout/generic/nsFlexContainerFrame.cpp:5984]
[task 2023-09-26T19:27:48.023Z] 19:27:48 INFO - #10: nsFlexContainerFrame::ReflowChildren(mozilla::ReflowInput const&, nsSize const&, mozilla::LogicalSize const&, mozilla::LogicalMargin const&, nsFlexContainerFrame::FlexboxAxisTracker const&, nsFlexContainerFrame::FlexLayoutResult&, nsFlexContainerFrame::PerFragmentFlexData&) [layout/generic/nsFlexContainerFrame.cpp:5563]
[task 2023-09-26T19:27:48.023Z] 19:27:48 INFO - #11: nsFlexContainerFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) [layout/generic/nsFlexContainerFrame.cpp:4658]
[task 2023-09-26T19:27:48.024Z] 19:27:48 INFO - #12: nsBlockReflowContext::ReflowBlock(mozilla::LogicalRect const&, bool, nsCollapsingMargin&, int, nsLineBox*, mozilla::ReflowInput&, nsReflowStatus&, mozilla::BlockReflowState&) [layout/generic/nsBlockReflowContext.cpp:291]
[task 2023-09-26T19:27:48.025Z] 19:27:48 INFO - #13: nsBlockFrame::ReflowBlockFrame(mozilla::BlockReflowState&, nsLineList_iterator, bool*) [layout/generic/nsBlockFrame.cpp:0]
[task 2023-09-26T19:27:48.025Z] 19:27:48 INFO - #14: nsBlockFrame::ReflowLine(mozilla::BlockReflowState&, nsLineList_iterator, bool*) [layout/generic/nsBlockFrame.cpp:3460]
[task 2023-09-26T19:27:48.026Z] 19:27:48 INFO - #15: nsBlockFrame::ReflowDirtyLines(mozilla::BlockReflowState&) [layout/generic/nsBlockFrame.cpp:0]
[task 2023-09-26T19:27:48.027Z] 19:27:48 INFO - #16: nsBlockFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) [layout/generic/nsBlockFrame.cpp:1517]
[task 2023-09-26T19:27:48.028Z] 19:27:48 INFO - #17: nsBlockReflowContext::ReflowBlock(mozilla::LogicalRect const&, bool, nsCollapsingMargin&, int, nsLineBox*, mozilla::ReflowInput&, nsReflowStatus&, mozilla::BlockReflowState&) [layout/generic/nsBlockReflowContext.cpp:291]
[task 2023-09-26T19:27:48.028Z] 19:27:48 INFO - #18: nsBlockFrame::ReflowBlockFrame(mozilla::BlockReflowState&, nsLineList_iterator, bool*) [layout/generic/nsBlockFrame.cpp:0]
[task 2023-09-26T19:27:48.029Z] 19:27:48 INFO - #19: nsBlockFrame::ReflowLine(mozilla::BlockReflowState&, nsLineList_iterator, bool*) [layout/generic/nsBlockFrame.cpp:3460]
[task 2023-09-26T19:27:48.030Z] 19:27:48 INFO - #20: nsBlockFrame::ReflowDirtyLines(mozilla::BlockReflowState&) [layout/generic/nsBlockFrame.cpp:0]
[task 2023-09-26T19:27:48.030Z] 19:27:48 INFO - #21: nsBlockFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) [layout/generic/nsBlockFrame.cpp:1517]
[task 2023-09-26T19:27:48.031Z] 19:27:48 INFO - #22: nsContainerFrame::ReflowChild(nsIFrame*, nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, mozilla::WritingMode const&, mozilla::LogicalPoint const&, nsSize const&, nsIFrame::ReflowChildFlags, nsReflowStatus&, nsOverflowContinuationTracker*) [layout/generic/nsContainerFrame.cpp:0]
[task 2023-09-26T19:27:48.032Z] 19:27:48 INFO - #23: nsCanvasFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) [layout/generic/nsCanvasFrame.cpp:760]
[task 2023-09-26T19:27:48.033Z] 19:27:48 INFO - #24: nsContainerFrame::ReflowChild(nsIFrame*, nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, mozilla::WritingMode const&, mozilla::LogicalPoint const&, nsSize const&, nsIFrame::ReflowChildFlags, nsReflowStatus&, nsOverflowContinuationTracker*) [layout/generic/nsContainerFrame.cpp:0]
[task 2023-09-26T19:27:48.033Z] 19:27:48 INFO - #25: nsHTMLScrollFrame::ReflowScrolledFrame(mozilla::ScrollReflowInput&, bool, bool, mozilla::ReflowOutput*) [layout/generic/nsGfxScrollFrame.cpp:939]
[task 2023-09-26T19:27:48.034Z] 19:27:48 INFO - #26: nsHTMLScrollFrame::ReflowContents(mozilla::ScrollReflowInput&, mozilla::ReflowOutput const&) [layout/generic/nsGfxScrollFrame.cpp:1108]
[task 2023-09-26T19:27:48.035Z] 19:27:48 INFO - #27: nsHTMLScrollFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) [layout/generic/nsGfxScrollFrame.cpp:1512]
[task 2023-09-26T19:27:48.035Z] 19:27:48 INFO - #28: nsContainerFrame::ReflowChild(nsIFrame*, nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, int, int, nsIFrame::ReflowChildFlags, nsReflowStatus&, nsOverflowContinuationTracker*) [layout/generic/nsContainerFrame.cpp:0]
[task 2023-09-26T19:27:48.036Z] 19:27:48 INFO - #29: mozilla::ViewportFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) [layout/generic/ViewportFrame.cpp:386]
[task 2023-09-26T19:27:48.037Z] 19:27:48 INFO - #30: mozilla::PresShell::DoReflow(nsIFrame*, bool, mozilla::OverflowChangedTracker*) [layout/base/PresShell.cpp:9687]
[task 2023-09-26T19:27:48.037Z] 19:27:48 INFO - #31: mozilla::PresShell::ProcessReflowCommands(bool) [layout/base/PresShell.cpp:9859]
[task 2023-09-26T19:27:48.038Z] 19:27:48 INFO - #32: mozilla::PresShell::DoFlushPendingNotifications(mozilla::ChangesToFlush) [layout/base/PresShell.cpp:4362]
[task 2023-09-26T19:27:48.038Z] 19:27:48 INFO - #33: mozilla::dom::Document::FlushPendingNotifications(mozilla::ChangesToFlush) [dom/base/Document.cpp:10915]
[task 2023-09-26T19:27:48.039Z] 19:27:48 INFO - #34: nsDocLoader::DocLoaderIsEmpty(bool, mozilla::Maybe<nsresult> const&) [uriloader/base/nsDocLoader.cpp:741]
[task 2023-09-26T19:27:48.040Z] 19:27:48 INFO - #35: nsDocLoader::OnStopRequest(nsIRequest*, nsresult) [uriloader/base/nsDocLoader.cpp:679]
[task 2023-09-26T19:27:48.040Z] 19:27:48 INFO - #36: nsDocShell::OnStopRequest(nsIRequest*, nsresult) [docshell/base/nsDocShell.cpp:0]
[task 2023-09-26T19:27:48.041Z] 19:27:48 INFO - #37: mozilla::net::nsLoadGroup::NotifyRemovalObservers(nsIRequest*, nsresult) [netwerk/base/nsLoadGroup.cpp:631]
[task 2023-09-26T19:27:48.041Z] 19:27:48 INFO - #38: mozilla::net::nsLoadGroup::RemoveRequest(nsIRequest*, nsISupports*, nsresult) [netwerk/base/nsLoadGroup.cpp:0]
[task 2023-09-26T19:27:48.042Z] 19:27:48 INFO - #39: mozilla::dom::Document::DoUnblockOnload() [dom/base/Document.cpp:11700]
[task 2023-09-26T19:27:48.042Z] 19:27:48 INFO - #40: mozilla::dom::Document::DispatchContentLoadedEvents() [dom/base/Document.cpp:8152]
[task 2023-09-26T19:27:48.043Z] 19:27:48 INFO - #41: mozilla::detail::RunnableMethodImpl<mozilla::dom::Document*, void (mozilla::dom::Document::*)(), true, (mozilla::RunnableKind)0, >::Run() [xpcom/threads/nsThreadUtils.h:1213]
[task 2023-09-26T19:27:48.043Z] 19:27:48 INFO - #42: mozilla::RunnableTask::Run() [xpcom/threads/TaskController.cpp:560]
[task 2023-09-26T19:27:48.044Z] 19:27:48 INFO - #43: mozilla::TaskController::DoExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex&> const&) [xpcom/threads/TaskController.cpp:0]
[task 2023-09-26T19:27:48.045Z] 19:27:48 INFO - #44: mozilla::TaskController::ExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex&> const&) [xpcom/threads/TaskController.cpp:0]
[task 2023-09-26T19:27:48.045Z] 19:27:48 INFO - #45: mozilla::TaskController::ProcessPendingMTTask(bool) [xpcom/threads/TaskController.cpp:495]
[task 2023-09-26T19:27:48.045Z] 19:27:48 INFO - #46: mozilla::detail::RunnableFunction<mozilla::TaskController::TaskController()::$_0>::Run() [xpcom/threads/nsThreadUtils.h:549]
[task 2023-09-26T19:27:48.046Z] 19:27:48 INFO - #47: nsThread::ProcessNextEvent(bool, bool*) [xpcom/threads/nsThread.cpp:1203]
[task 2023-09-26T19:27:48.046Z] 19:27:48 INFO - #48: NS_ProcessNextEvent(nsIThread*, bool) [xpcom/threads/nsThreadUtils.cpp:480]
[task 2023-09-26T19:27:48.047Z] 19:27:48 INFO - #49: mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) [ipc/glue/MessagePump.cpp:85]
[task 2023-09-26T19:27:48.047Z] 19:27:48 INFO - #50: MessageLoop::Run() [ipc/chromium/src/base/message_loop.cc:346]
[task 2023-09-26T19:27:48.048Z] 19:27:48 INFO - #51: nsBaseAppShell::Run() [widget/nsBaseAppShell.cpp:150]
[task 2023-09-26T19:27:48.049Z] 19:27:48 INFO - #52: nsAppShell::Run() [widget/cocoa/nsAppShell.mm:870]
[task 2023-09-26T19:27:48.049Z] 19:27:48 INFO - #53: XRE_RunAppShell() [toolkit/xre/nsEmbedFunctions.cpp:721]
[task 2023-09-26T19:27:48.050Z] 19:27:48 INFO - #54: mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate*) [ipc/glue/MessagePump.cpp:235]
[task 2023-09-26T19:27:48.050Z] 19:27:48 INFO - #55: MessageLoop::Run() [ipc/chromium/src/base/message_loop.cc:346]
[task 2023-09-26T19:27:48.051Z] 19:27:48 INFO - #56: XRE_InitChildProcess(int, char**, XREChildData const*) [toolkit/xre/nsEmbedFunctions.cpp:0]
[task 2023-09-26T19:27:48.052Z] 19:27:48 INFO - #57: main [ipc/app/MozillaRuntimeMain.cpp:90]
[task 2023-09-26T19:27:48.071Z] 19:27:48 INFO - REFTEST TEST-PASS | layout/generic/crashtests/944909-1.html | (LOAD ONLY)
[task 2023-09-26T19:27:48.071Z] 19:27:48 INFO - REFTEST TEST-END | layout/generic/crashtests/944909-1.html
[task 2023-09-26T19:27:48.084Z] 19:27:48 INFO - REFTEST TEST-UNEXPECTED-FAIL | layout/generic/crashtests/944909-1.html | assertion count 3 is more than expected 2 assertions
Assignee | ||
Comment 4•9 months ago
|
||
It is expected that 944909-1.html
can trigger assertions after applying my patch. However, the assertion count on macOS is 3 rather than 2. It's strange that my try run didn't show this https://treeherder.mozilla.org/jobs?repo=try&revision=0672b5ca0e7e8c61dd3aaf6553f3cd7dbeb26396&selectedTaskRun=XguBx3rQSwmwAafnALj5QQ.0
Pushed by aethanyc@gmail.com: https://hg.mozilla.org/integration/autoland/rev/56b301fd8155 Simplify nsVideoFrame::Reflow() and switch it to logical coordinates. r=emilio
Comment 6•9 months ago
|
||
bugherder |
Description
•