Closed Bug 1688813 Opened 5 years ago Closed 5 years ago

drawSnapshot doesn't handle fixed element properly

Categories

(Core :: Layout, defect)

defect

Tracking

()

RESOLVED FIXED
88 Branch
Tracking Status
firefox88 --- fixed

People

(Reporter: nchevobbe, Assigned: mattwoodrow)

References

Details

Attachments

(1 file)

Steps to reproduce

  1. Navigate to https://ffx-fixed-header-screenshot.glitch.me/ , this will scroll the page down a bit
  2. Take a fullpage screenshot from the screenshot tool in the url bar

Expected results

The fixed header is rendered at the very top of the screenshot

Actual results

The fixed header is rendered in the middle of the screenshot.


Note: the various devtools screenshot features worked around this issue by scrolling the window to the top before taking the screenshot and restoring it back after it's done (See Bug 961832).

Markus, do you know how this works and/or who is a good person to look into it?

Flags: needinfo?(mstange.moz)

Fullpage screenshots are an interesting scenario. In the past, you could synchronously scroll to the top, take the snapshot, and scroll back to the original position, without the intermediate state showing up on the screen. I'm not sure if drawSnapshot allows this. Matt, any ideas?

Flags: needinfo?(mstange.moz) → needinfo?(matt.woodrow)
Component: Graphics → Layout

I'm still trying to scroll to the top before calling the parent process and resetting the scroll position after it's done, but it's very noticeable, especially if the page is large (we transform the screenshot into a data url that is sent from the devtools server to the devtools client, which can take some time)

(In reply to Markus Stange [:mstange] from comment #2)

Fullpage screenshots are an interesting scenario. In the past, you could synchronously scroll to the top, take the snapshot, and scroll back to the original position, without the intermediate state showing up on the screen. I'm not sure if drawSnapshot allows this. Matt, any ideas?

I think we could just add a new PaintFrameFlags option which does this sync scroll for the duration of the sync paint (for the top-level doc) and then reverts it. drawSnapshot could then pass that along from the parent process.

We could also fold that behaviour into DocumentRelative/IgnoreViewportScrolling, though backwards compatibility might be problematic.

Does that sound reasonable?

Flags: needinfo?(matt.woodrow) → needinfo?(mstange.moz)

Sounds good to me!

Flags: needinfo?(mstange.moz)
Assignee: nobody → matt.woodrow
Status: NEW → ASSIGNED

Henrik, will this affect marionette's usage of drawSnapshot?

Flags: needinfo?(hskupin)

Matt, I filed something similar as bug 1604756 more than a year ago. Not sure how this is actually related, and if there is a workaround we did that could now be removed?

Flags: needinfo?(hskupin) → needinfo?(matt.woodrow)
Pushed by mwoodrow@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/56ce2feb53e7 Draw position:fixed elements relative to the top-left of the document when using drawSnapshot. r=emilio,mstange
Blocks: 1692970
Flags: needinfo?(matt.woodrow)

That's a really gnarly stack :(

That's a bit scary indeed.

It looks like nsChildView::Resize checks to see if the size changed, so if we're actual flushing it suggests that we had a real size change (or maybe we change twice and fix it again?).

If we're flushing after building the display list but before we paint using the display list, then that's possibly broken.

Markus, any idea how we might avoid this?

Flags: needinfo?(matt.woodrow) → needinfo?(mstange.moz)

Here's the stack, for future reference:

PROCESS-CRASH | browser/components/customizableui/test/browser_panelUINotifications_multiWindow.js | application crashed [@ mozilla::PresShell::DoFlushPendingNotifications(mozilla::ChangesToFlush)]
Mozilla crash reason: MOZ_DIAGNOSTIC_ASSERT(!mForbiddenToFlush) (This is bad!)
Crash dump filename: /var/folders/yc/gg8285715nj938l1vm_4k8tm000014/T/tmpyVK0tI.mozrunner/minidumps/1EF1B594-30AE-4A55-AAA8-1D2C4D6CFAE8.dmp
Operating system: Mac OS X
                  10.14.5 18F132
CPU: amd64
     family 6 model 69 stepping 1
     4 CPUs

GPU: UNKNOWN

Crash reason:  EXC_BAD_ACCESS / KERN_INVALID_ADDRESS
Crash address: 0x0
Process uptime: 127 seconds

Thread 0 (crashed)
 0  XUL!mozilla::PresShell::DoFlushPendingNotifications(mozilla::ChangesToFlush) [PresShell.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 4078 + 0x11]
    rax = 0x000000011b7bf732   rdx = 0x00000000000000ff
    rcx = 0x000000010d0703e0   rbx = 0x0000000131dc2000
    rsi = 0x0000000000000107   rdi = 0x000000016f480000
    rbp = 0x00007ffee2c13080   rsp = 0x00007ffee2c12f70
     r8 = 0x00000001644a63a0    r9 = 0x0000000000000000
    r10 = 0xb2992b91b3c29b56   r11 = 0x000000010d100c00
    r12 = 0x000000000000f000   r13 = 0x0000000000012c00
    r14 = 0x0000000000000107   r15 = 0x000000016f480000
    rip = 0x00000001171b0612
    Found by: given as instruction pointer in context
 1  XUL!mozilla::dom::Document::FlushPendingNotifications(mozilla::ChangesToFlush) [Document.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 10331 + 0x49]
    rbp = 0x00007ffee2c130d0   rsp = 0x00007ffee2c13090
    rip = 0x000000011560546f
    Found by: previous frame's frame pointer
 2  XUL!mozilla::PresShell::SimpleResizeReflow(int, int, mozilla::ResizeReflowOptions) [PresShell.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 2017 + 0xe]
    rbp = 0x00007ffee2c13130   rsp = 0x00007ffee2c130e0
    rip = 0x00000001171a82e7
    Found by: previous frame's frame pointer
 3  XUL!mozilla::PresShell::ResizeReflowIgnoreOverride(int, int, mozilla::ResizeReflowOptions) [PresShell.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 2050 + 0xe]
    rbp = 0x00007ffee2c131a0   rsp = 0x00007ffee2c13140
    rip = 0x000000011719aebc
    Found by: previous frame's frame pointer
 4  XUL!nsViewManager::SetWindowDimensions(int, int, bool) [nsViewManager.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 220 + 0x75]
    rbp = 0x00007ffee2c131e0   rsp = 0x00007ffee2c131b0
    rip = 0x0000000116f4d29e
    Found by: previous frame's frame pointer
 5  XUL!nsView::WindowResized(nsIWidget*, int, int) [nsView.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 947 + 0xd]
    rbp = 0x00007ffee2c13210   rsp = 0x00007ffee2c131f0
    rip = 0x0000000116f4d073
    Found by: previous frame's frame pointer
 6  XUL!nsChildView::Resize(double, double, double, double, bool) [nsChildView.mm:56ce2feb53e73e79781ef82933641d58df670860 : 799 + 0x24]
    rbp = 0x00007ffee2c13280   rsp = 0x00007ffee2c13220
    rip = 0x0000000116fafcc3
    Found by: previous frame's frame pointer
 7  XUL!nsDocumentViewer::SetBoundsWithFlags(mozilla::gfx::IntRectTyped<mozilla::gfx::UnknownUnits> const&, unsigned int) [nsDocumentViewer.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 1990 + 0x21]
    rbp = 0x00007ffee2c132c0   rsp = 0x00007ffee2c13290
    rip = 0x00000001171fb042
    Found by: previous frame's frame pointer
 8  XUL!nsDocShell::SetPositionAndSize(int, int, int, int, unsigned int) [nsDocShell.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 4726 + 0x12]
    rbp = 0x00007ffee2c132f0   rsp = 0x00007ffee2c132d0
    rip = 0x0000000117fe957e
    Found by: previous frame's frame pointer
 9  XUL!mozilla::AppWindow::WindowResized(nsIWidget*, int, int) [AppWindow.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 2755 + 0xc]
    rbp = 0x00007ffee2c13310   rsp = 0x00007ffee2c13300
    rip = 0x000000011803a343
    Found by: previous frame's frame pointer
10  XUL!mozilla::AppWindow::WidgetListenerDelegate::WindowResized(nsIWidget*, int, int) [AppWindow.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 3271 + 0x8]
    rbp = 0x00007ffee2c13330   rsp = 0x00007ffee2c13320
    rip = 0x000000011803b32c
    Found by: previous frame's frame pointer
11  XUL!nsCocoaWindow::ReportSizeEvent() [nsCocoaWindow.mm:56ce2feb53e73e79781ef82933641d58df670860 : 2129 + 0x14]
    rbp = 0x00007ffee2c13350   rsp = 0x00007ffee2c13340
    rip = 0x0000000116ffcda1
    Found by: previous frame's frame pointer
12  CoreFoundation + 0x9e596
    rbp = 0x00007ffee2c13360   rsp = 0x00007ffee2c13360
    rip = 0x00007fff2f801596
    Found by: previous frame's frame pointer
13  CoreFoundation + 0x9e510
    rbp = 0x00007ffee2c13380   rsp = 0x00007ffee2c13370
    rip = 0x00007fff2f801510
    Found by: previous frame's frame pointer
14  CoreFoundation + 0x9e47a
    rbp = 0x00007ffee2c133f0   rsp = 0x00007ffee2c13390
    rip = 0x00007fff2f80147a
    Found by: previous frame's frame pointer
15  CoreFoundation + 0xa6928
    rbp = 0x00007ffee2c13430   rsp = 0x00007ffee2c13400
    rip = 0x00007fff2f809928
    Found by: previous frame's frame pointer
16  CoreFoundation + 0xf384
    rbp = 0x00007ffee2c13b50   rsp = 0x00007ffee2c13440
    rip = 0x00007fff2f772384
    Found by: previous frame's frame pointer
17  CoreFoundation + 0xe737
    rbp = 0x00007ffee2c13dd0   rsp = 0x00007ffee2c13b60
    rip = 0x00007fff2f771737
    Found by: previous frame's frame pointer
18  Foundation!-[NSNotificationCenter postNotificationName:object:userInfo:] + 0x42
    rbp = 0x00007ffee2c13e00   rsp = 0x00007ffee2c13de0
    rip = 0x00007fff319f706b
    Found by: previous frame's frame pointer
19  AppKit!-[NSWindow _setFrameCommon:display:stashSize:] + 0xc12
    rbp = 0x00007ffee2c14090   rsp = 0x00007ffee2c13e10
    rip = 0x00007fff2cf01733
    Found by: previous frame's frame pointer
20  AppKit!-[NSWindow _setFrame:display:allowImplicitAnimation:stashSize:] + 0xc0
    rbp = 0x00007ffee2c140f0   rsp = 0x00007ffee2c140a0
    rip = 0x00007fff2cf00b0e
    Found by: previous frame's frame pointer
21  AppKit!-[NSWindow setFrame:display:] + 0x33
    rbp = 0x00007ffee2c14120   rsp = 0x00007ffee2c14100
    rip = 0x00007fff2cf00a47
    Found by: previous frame's frame pointer
22  AppKit!-[_NSFullScreenDetachedToolbarMenuBarCompanionController resizeContentWindow] + 0xd9
    rbp = 0x00007ffee2c141b0   rsp = 0x00007ffee2c14130
    rip = 0x00007fff2d41e3d5
    Found by: previous frame's frame pointer
23  AppKit!NSPerformVisuallyAtomicChange + 0x84
    rbp = 0x00007ffee2c141e0   rsp = 0x00007ffee2c141c0
    rip = 0x00007fff2ce5bb74
    Found by: previous frame's frame pointer
24  AppKit!-[_NSFullScreenDetachedToolbarMenuBarCompanionController layout] + 0x65
    rbp = 0x00007ffee2c14230   rsp = 0x00007ffee2c141f0
    rip = 0x00007fff2d41e4c5
    Found by: previous frame's frame pointer
25  AppKit!-[NSThemeFrame _updateTitlebarContainerViewFrameIfNecessary] + 0x1d2
    rbp = 0x00007ffee2c142f0   rsp = 0x00007ffee2c14240
    rip = 0x00007fff2cec5918
    Found by: previous frame's frame pointer
26  AppKit!-[NSThemeFrame _tileTitlebarAndRedisplay:] + 0x2b
    rbp = 0x00007ffee2c143d0   rsp = 0x00007ffee2c14300
    rip = 0x00007fff2cec542b
    Found by: previous frame's frame pointer
27  XUL!nsChildView::UpdateThemeGeometries(nsTArray<nsIWidget::ThemeGeometry> const&) [nsChildView.mm:56ce2feb53e73e79781ef82933641d58df670860 : 1647 + 0x131]
    rbp = 0x00007ffee2c144d0   rsp = 0x00007ffee2c143e0
    rip = 0x0000000116fb36f1
    Found by: previous frame's frame pointer
28  XUL!nsLayoutUtils::PaintFrame(gfxContext*, nsIFrame*, nsRegion const&, unsigned int, nsDisplayListBuilderMode, nsLayoutUtils::PaintFrameFlags) [nsLayoutUtils.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 3438 + 0x1e]
    rbp = 0x00007ffee2c165d0   rsp = 0x00007ffee2c144e0
    rip = 0x00000001172116d5
    Found by: previous frame's frame pointer
29  XUL!mozilla::PresShell::Paint(nsView*, nsRegion const&, mozilla::PaintFlags) [PresShell.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 6400 + 0x1d]
    rbp = 0x00007ffee2c16740   rsp = 0x00007ffee2c165e0
    rip = 0x00000001171b7a28
    Found by: previous frame's frame pointer
30  XUL!nsViewManager::ProcessPendingUpdatesPaint(nsIWidget*) [nsViewManager.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 459 + 0x2f]
    rbp = 0x00007ffee2c167b0   rsp = 0x00007ffee2c16750
    rip = 0x0000000116f4edfb
    Found by: previous frame's frame pointer
31  XUL!nsViewManager::ProcessPendingUpdatesForView(nsView*, bool) [nsViewManager.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 394 + 0xb]
    rbp = 0x00007ffee2c16810   rsp = 0x00007ffee2c167c0
    rip = 0x0000000116f4e9d8
    Found by: previous frame's frame pointer
32  XUL!nsViewManager::ProcessPendingUpdates() [nsViewManager.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 972 + 0x11]
    rbp = 0x00007ffee2c16830   rsp = 0x00007ffee2c16820
    rip = 0x0000000116f4fa91
    Found by: previous frame's frame pointer
33  XUL!nsViewManager::WillPaintWindow(nsIWidget*) [nsViewManager.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 625 + 0x8]
    rbp = 0x00007ffee2c16860   rsp = 0x00007ffee2c16840
    rip = 0x0000000116f4d42d
    Found by: previous frame's frame pointer
34  XUL!nsView::WillPaintWindow(nsIWidget*) [nsView.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 1048 + 0x8]
    rbp = 0x00007ffee2c16880   rsp = 0x00007ffee2c16870
    rip = 0x0000000116f4d36a
    Found by: previous frame's frame pointer
35  XUL!nsChildView::HandleMainThreadCATransaction() [nsChildView.mm:56ce2feb53e73e79781ef82933641d58df670860 : 1327 + 0x31]
    rbp = 0x00007ffee2c168e0   rsp = 0x00007ffee2c16890
    rip = 0x0000000116fb25c1
    Found by: previous frame's frame pointer
36  XUL!-[ChildView updateRootCALayer] [nsChildView.mm:56ce2feb53e73e79781ef82933641d58df670860 : 2462 + 0x9]
    rbp = 0x00007ffee2c16900   rsp = 0x00007ffee2c168f0
    rip = 0x0000000116fb8dcd
    Found by: previous frame's frame pointer
37  AppKit!_NSViewUpdateLayer + 0x2d
    rbp = 0x00007ffee2c16920   rsp = 0x00007ffee2c16910
    rip = 0x00007fff2cf2e301
    Found by: previous frame's frame pointer
38  AppKit!-[_NSViewBackingLayer display] + 0x1f9
    rbp = 0x00007ffee2c169e0   rsp = 0x00007ffee2c16930
    rip = 0x00007fff2cf2dd1d
    Found by: previous frame's frame pointer
39  QuartzCore!CA::Layer::display_if_needed(CA::Transaction*) + 0x273
    rbp = 0x00007ffee2c17b00   rsp = 0x00007ffee2c169f0
    rip = 0x00007fff3a21d055
    Found by: previous frame's frame pointer
40  QuartzCore!CA::Context::commit_transaction(CA::Transaction*) + 0x156
    rbp = 0x00007ffee2c17d80   rsp = 0x00007ffee2c17b10
    rip = 0x00007fff3a20b27a
    Found by: previous frame's frame pointer
41  QuartzCore!CA::Transaction::commit() + 0x24c
    rbp = 0x00007ffee2c17e20   rsp = 0x00007ffee2c17d90
    rip = 0x00007fff3a20a8c2
    Found by: previous frame's frame pointer
42  AppKit!__65+[CATransaction(NSCATransaction) NS_setFlushesWithDisplayRefresh]_block_invoke + 0x112
    rbp = 0x00007ffee2c17f50   rsp = 0x00007ffee2c17e30
    rip = 0x00007fff2cf24a4d
    Found by: previous frame's frame pointer
43  CoreFoundation + 0x98928
    rbp = 0x00007ffee2c17f60   rsp = 0x00007ffee2c17f60
    rip = 0x00007fff2f7fb928
    Found by: previous frame's frame pointer
44  CoreFoundation + 0x9885d
    rbp = 0x00007ffee2c18030   rsp = 0x00007ffee2c17f70
    rip = 0x00007fff2f7fb85d
    Found by: previous frame's frame pointer
45  CoreFoundation + 0x3af80
    rbp = 0x00007ffee2c18d40   rsp = 0x00007ffee2c18040
    rip = 0x00007fff2f79df80
    Found by: previous frame's frame pointer
46  CoreFoundation + 0x3a8be
    rbp = 0x00007ffee2c18dd0   rsp = 0x00007ffee2c18d50
    rip = 0x00007fff2f79d8be
    Found by: previous frame's frame pointer
47  HIToolbox!RunCurrentEventLoopInMode + 0x124
    rbp = 0x00007ffee2c18e20   rsp = 0x00007ffee2c18de0
    rip = 0x00007fff2ea8996b
    Found by: previous frame's frame pointer
48  HIToolbox!ReceiveNextEventCommon + 0x163
    rbp = 0x00007ffee2c18ea0   rsp = 0x00007ffee2c18e30
    rip = 0x00007fff2ea895ad
    Found by: previous frame's frame pointer
49  HIToolbox!_BlockUntilNextEventMatchingListInModeWithFilter + 0x40
    rbp = 0x00007ffee2c18ec0   rsp = 0x00007ffee2c18eb0
    rip = 0x00007fff2ea89436
    Found by: previous frame's frame pointer
50  AppKit!_DPSNextEvent + 0x3c5
    rbp = 0x00007ffee2c192d0   rsp = 0x00007ffee2c18ed0
    rip = 0x00007fff2ce23987
    Found by: previous frame's frame pointer
51  AppKit!-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 0x551
    rbp = 0x00007ffee2c19550   rsp = 0x00007ffee2c192e0
    rip = 0x00007fff2ce2271f
    Found by: previous frame's frame pointer
52  XUL!-[GeckoNSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] [nsAppShell.mm:56ce2feb53e73e79781ef82933641d58df670860 : 150 + 0x29]
    rbp = 0x00007ffee2c195b0   rsp = 0x00007ffee2c19560
    rip = 0x0000000116ff27ce
    Found by: previous frame's frame pointer
53  AppKit!-[NSApplication run] + 0x2bb
    rbp = 0x00007ffee2c19680   rsp = 0x00007ffee2c195c0
    rip = 0x00007fff2ce1c83c
    Found by: previous frame's frame pointer
54  XUL!nsAppShell::Run() [nsAppShell.mm:56ce2feb53e73e79781ef82933641d58df670860 : 708 + 0x1a]
    rbp = 0x00007ffee2c196b0   rsp = 0x00007ffee2c19690
    rip = 0x0000000116ff3656
    Found by: previous frame's frame pointer
55  XUL!nsAppStartup::Run() [nsAppStartup.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 271 + 0xa]
    rbp = 0x00007ffee2c196e0   rsp = 0x00007ffee2c196c0
    rip = 0x00000001182ecd3f
    Found by: previous frame's frame pointer
56  XUL!XREMain::XRE_mainRun() [nsAppRunner.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 5246 + 0xd]
    rbp = 0x00007ffee2c19870   rsp = 0x00007ffee2c196f0
    rip = 0x00000001183c392f
    Found by: previous frame's frame pointer
57  XUL!XREMain::XRE_main(int, char**, mozilla::BootstrapConfig const&) [nsAppRunner.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 5438 + 0x8]
    rbp = 0x00007ffee2c198f0   rsp = 0x00007ffee2c19880
    rip = 0x00000001183c4392
    Found by: previous frame's frame pointer
58  XUL!XRE_main(int, char**, mozilla::BootstrapConfig const&) [nsAppRunner.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 5501 + 0x10]
    rbp = 0x00007ffee2c19a40   rsp = 0x00007ffee2c19900
    rip = 0x00000001183c4748
    Found by: previous frame's frame pointer
59  firefox!main [nsBrowserApp.cpp:56ce2feb53e73e79781ef82933641d58df670860 : 344 + 0x292]
    rbp = 0x00007ffee2c19eb0   rsp = 0x00007ffee2c19a50
    rip = 0x000000010cfe675c
    Found by: previous frame's frame pointer
60  libdyld.dylib!start + 0x1
    rbp = 0x00007ffee2c19ec0   rsp = 0x00007ffee2c19ec0
    rip = 0x00007fff5b6c83d5
    Found by: previous frame's frame pointer

I can see multiple problems:

  • nsChildView::UpdateThemeGeometries is not supposed to trigger resizes.
  • I wasn't aware that -[NSWindow reflowTitlebarElements] can cause the content view to resize. I'm not sure how it does, to be honest - native fullscreen mode seems to be involved, but I'm not sure why it would want to resize the content.
  • We don't have a good entry point to run pre-paint resizing work from. Main thread paints are triggered from -[ChildView updateRootCALayer], but inside that function it's not a good idea to resize the same window.

As a workaround, we could remove the synchronous calls to -[NSWindow reflowTitlebarElements] and call the method from a delayed perform instead. This may mean that the window buttons sometimes shift with a slight delay, but they usually don't move anyways - they get one position when the window is opened, and then they stay there, unless the user checks the "Drag space" or "Titlebar" checkboxes in the toolbar customization dialog.

Flags: needinfo?(mstange.moz)
Depends on: 1693196

(In reply to Markus Stange [:mstange] from comment #14)

As a workaround, we could remove the synchronous calls to -[NSWindow reflowTitlebarElements] and call the method from a delayed perform instead.

I gave this a try but it made window opening flashy; the first paint of the window didn't have any window buttons, and then the buttons appeared 200ms or so later.

Matt, can you debug this a bit more and find out how it's resizing the content (which sizes before and after, and does it correct itself back), and how fullscreen is involved with this? And why it's not happening without your patch?

Flags: needinfo?(matt.woodrow)

The regression is because I added the PresShell::AutoAssertNoFlush guard, which catches an existing problem.

Marking as S3 to take it out of the triage list, as it's being worked on anyhow.

Severity: -- → S3

I can't seem to reproduce this at all locally :(

Filed bug 1694066 for the mac widget issue, will try to reland this fix without the new assert.

Flags: needinfo?(matt.woodrow)
See Also: → 1694066

Sounds good to me. Thanks for trying!

Pushed by mwoodrow@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/76986a46df5b Draw position:fixed elements relative to the top-left of the document when using drawSnapshot. r=emilio,mstange
Status: ASSIGNED → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → 88 Branch
Regressions: 1694272
Regressions: 1708403
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: