[Wayland] Regression: in 94.0, password autocomplete menu is either empty or not displayed at all
Categories
(Core :: Widget: Gtk, defect)
Tracking
()
People
(Reporter: olivier, Unassigned)
References
(Blocks 2 open bugs)
Details
User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:94.0) Gecko/20100101 Firefox/94.0
Steps to reproduce:
This is using the firefox snap from the candidate channel (currently 94.0-2).
The problem cannot be observed with beta builds not packaged as a snap.
- browse to https://yari-demos.prod.mdn.mozit.cloud/en-US/docs/Web/HTML/Element/input/password/_sample_.A_simple_password_input.html
- Input a password in the only text field on the page
- Click the key icon at the left of the address bar
- Input a username and click "Save"
- Clear the password field on the page
- Click the password field
Actual results:
No autocomplete menu is displayed (or sometimes an empty menu that's only 4 or 5 pixels tall and the expected width is displayed, but it cannot be used to view saved passwords and/or interact with them).
Expected results:
A menu should be displayed with one entry for the saved username/password tuple, and a footer that reads "View Saved Logins".
Reporter | ||
Comment 1•4 years ago
|
||
Note that this was working reliably in the 93.0-1 snap (currently in the stable channel), and I can observe the regression as far back as the first 94.0 beta build (94.0b1-1). I ruled out a build dependency update between those two snaps.
Comment 2•4 years ago
|
||
The Bugbug bot thinks this bug should belong to the 'Toolkit::Password Manager' component, and is moving the bug to that component. Please revert this change in case you think the bot is wrong.
Reporter | ||
Comment 3•4 years ago
|
||
My tests were done on Ubuntu 21.10 (both my desktop and a VM). Interestingly, the issue isn't happening in an Ubuntu 20.04 VM in the default X11 session, but it does in a Wayland session. Same observation in an Ubuntu 21.10 VM. This seems to indicate that the regression is Wayland-specific.
Reporter | ||
Comment 4•4 years ago
|
||
Running the snap with -MOZ_LOG=WidgetPopup:5
, I'm getting these logs:
[Parent 26082: Main Thread]: D/WidgetPopup CaptureRollupEvents() [7f114455c000] 1
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::ApplySizeConstraints [7f114455c000] min size 249 4
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::ApplySizeConstraints [7f114455c000] max size 16384 16384
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::Resize [7f114455c000] 250.000000 4.000000
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::ResizeInt [7f114455c000] x:0 y:0 -> w:250 h:4 repaint 1 aMove 0
[Parent 26082: Main Thread]: D/WidgetPopup ConstrainSize: w:250 h;4
[Parent 26082: Main Thread]: D/WidgetPopup Need also to move, flushed: 1, bounds were insane: 0
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::NativeMoveResize [7f114455c000] 87,107 -> 250 x 4
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::NativeMoveResizeWaylandPopup [7f114455c000] 87,107 -> 250 x 4
[Parent 26082: Main Thread]: D/WidgetPopup set size [250, 4]
[Parent 26082: Main Thread]: D/WidgetPopup fits parent window size, just resize
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::DispatchResized() [7f114455c000] size [250, 4]
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::Show [7f114455c000] state 1
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::NativeShow show [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::AddWindowToPopupHierarchy [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup Topmost window: 7f1165039400 [nsWindow]
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::UpdateWaylandPopupHierarchy [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup Widget Popup Hierarchy:
[Parent 26082: Main Thread]: D/WidgetPopup panel Panel/Utility nsWindow [7f114455c000] Menu 0 Permanent 0 ContextMenu 0 Anchored 0 Visible 0
[Parent 26082: Main Thread]: D/WidgetPopup Layout Popup Hierarchy:
[Parent 26082: Main Thread]: D/WidgetPopup panel Panel/Utility nsWindow [7f114455c000] Menu 0 Permanent 0 ContextMenu 0 Anchored 0 Visible 0
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::WaylandPopupHideTooltips
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::CloseAllPopupsBeforeRemotePopup
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::WaylandPopupHierarchyHideByLayout
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::WaylandPopupHierarchyValidateByLayout
[Parent 26082: Main Thread]: D/WidgetPopup popup [7f114455c000] parent window [7f1165039400] matches layout 1
[Parent 26082: Main Thread]: D/WidgetPopup first changed popup [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::WaylandPopupHierarchyHideTemporary() [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup temporary hidding popup [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::HideWaylandPopupWindow: [7f114455c000] remove from list 0
[Parent 26082: Main Thread]: D/WidgetPopup gtk_widget_is_visible() = 0
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::WaylandPopupRemoveClosedPopups: [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::WaylandPopupHierarchyValidateByLayout
[Parent 26082: Main Thread]: D/WidgetPopup popup [7f114455c000] parent window [7f1165039400] matches layout 1
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::WaylandPopupHierarchyCalculatePositions()
[Parent 26082: Main Thread]: D/WidgetPopup popup [7f114455c000] set parent window [7f1165039400]
[Parent 26082: Main Thread]: D/WidgetPopup popup [7f114455c000] bounds [87, 107] -> [250 x 4]
[Parent 26082: Main Thread]: D/WidgetPopup popup [7f114455c000] layout [87, 107] -> [250 x 4]
[Parent 26082: Main Thread]: D/WidgetPopup popup [7f114455c000] has toplevel as parent
[Parent 26082: Main Thread]: D/WidgetPopup popup [7f114455c000] transformed popup coordinates from [87, 107] to [87, 107]
[Parent 26082: Main Thread]: D/WidgetPopup popup [7f114455c000] matches layout [1] anchored [0] first popup [1] use move-to-rect 1
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::WaylandPopupMove [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup original widget popup position [87, 107]
[Parent 26082: Main Thread]: D/WidgetPopup relative widget popup position [87, 107]
[Parent 26082: Main Thread]: D/WidgetPopup relative widget popup offset [0, 0]
[Parent 26082: Main Thread]: D/WidgetPopup layout popup anchor [87, 85] -> [211, 22]
[Parent 26082: Main Thread]: D/WidgetPopup final popup rect position [87, 85] -> [211 x 22]
[Parent 26082: Main Thread]: D/WidgetPopup parentRect gravity: 7 anchor gravity: 1
[Parent 26082: Main Thread]: D/WidgetPopup popup window cursor offset x: 0 y: 0
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::WaylandPopupRemoveNegativePosition() [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup coordinates are correct
[Parent 26082: Main Thread]: D/WidgetPopup move-to-rect call
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::WaylandPopupHierarchyShowTemporaryHidden()
[Parent 26082: Main Thread]: D/WidgetPopup Widget Popup Hierarchy:
[Parent 26082: Main Thread]: D/WidgetPopup panel Panel/Utility nsWindow [7f114455c000] Menu 0 Permanent 0 ContextMenu 0 Anchored 0 Visible 0
[Parent 26082: Main Thread]: D/WidgetPopup Layout Popup Hierarchy:
[Parent 26082: Main Thread]: D/WidgetPopup panel Panel/Utility nsWindow [7f114455c000] Menu 0 Permanent 0 ContextMenu 0 Anchored 0 Visible 0
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::ShowWaylandWindow: [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup active move-to-rect callback, show it as is
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::OnSizeAllocate [7f114455c000] 0,0 -> 250 x 4
[Parent 26082: Main Thread]: D/WidgetPopup Already the same size
[Parent 26082: Main Thread]: D/WidgetPopup configure event [7f114455c000] 0,0 -> 250 x 4 scale 1
[Parent 26082: Main Thread]: D/WidgetPopup GetScreenBounds [7f114455c000] 0,0 -> 250 x 4, unscaled 0,0 -> 250 x 4
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::OnWindowStateEvent [7f114455c000] for 7f114455a260 changed 0x1 new_window_state 0x80
[Parent 26082: Main Thread]: D/WidgetPopup early return because no interesting bits changed
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::OnWindowStateEvent [7f114455c000] for 7f114456dcd0 changed 0x1 new_window_state 0x80
[Parent 26082: Main Thread]: D/WidgetPopup quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::ApplySizeConstraints [7f114455c000] min size 249 4
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::ApplySizeConstraints [7f114455c000] max size 16384 16384
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::Resize [7f114455c000] 250.000000 88.000000
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::ResizeInt [7f114455c000] x:0 y:0 -> w:250 h:88 repaint 1 aMove 0
[Parent 26082: Main Thread]: D/WidgetPopup ConstrainSize: w:250 h;88
[Parent 26082: Main Thread]: D/WidgetPopup Need also to move, flushed: 1, bounds were insane: 0
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::NativeMoveResize [7f114455c000] 87,107 -> 250 x 88
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::NativeMoveResizeWaylandPopup [7f114455c000] 87,107 -> 250 x 88
[Parent 26082: Main Thread]: D/WidgetPopup set size [250, 88]
[Parent 26082: Main Thread]: D/WidgetPopup fits parent window size, just resize
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::DispatchResized() [7f114455c000] size [250, 88]
[Parent 26082: Main Thread]: D/WidgetPopup NativeMoveResizeCallback [7f114455c000] flipped_x 0 flipped_y 0
[Parent 26082: Main Thread]: D/WidgetPopup new position [87, 107] -> [250 x 4]
[Parent 26082: Main Thread]: D/WidgetPopup orig mBounds [87, 107] -> [250 x 88]
[Parent 26082: Main Thread]: D/WidgetPopup new mBounds [87, 107] -> [250 x 4]
[Parent 26082: Main Thread]: D/WidgetPopup needSizeUpdate
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::Resize [7f114455c000] 250.000000 4.000000
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::ResizeInt [7f114455c000] x:0 y:0 -> w:250 h:4 repaint 1 aMove 0
[Parent 26082: Main Thread]: D/WidgetPopup ConstrainSize: w:250 h;4
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::NativeResize [7f114455c000] 250 4
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::DispatchResized() [7f114455c000] size [250, 4]
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::DispatchResized() [7f114455c000] size [250, 4]
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::SetWindowMouseTransparent(0) [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup received expose event [7f114455c000] 7f114c578e60 0x0 (rects follow):
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::Create() Popup [7f1141ae4c00]
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::Create() popup [7f1141ae4c00] type Tooltip
[Parent 26082: Main Thread]: D/WidgetPopup set parent window [7f1165039400] browser
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::NativeMove [7f1141ae4c00] 0 0
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::NativeMoveResizeWaylandPopup [7f1141ae4c00] 0,0 -> 0 x 0
[Parent 26082: Main Thread]: D/WidgetPopup Bounds are not sane (width: 0 height: 0)
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::SetWindowMouseTransparent(0) [7f1141ae4c00]
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow [7f1141ae4c00] type 3
[Parent 26082: Main Thread]: D/WidgetPopup mShell 7f1144555660 mContainer 7f11432041d0 mGdkWindow 7f114b7fd120 XID 0x0
[Parent 26082: Main Thread]: D/WidgetPopup CaptureRollupEvents() [7f114455c000] 0
[Parent 26082: Main Thread]: D/WidgetPopup ReleaseGrabs
[Parent 26082: Main Thread]: D/WidgetPopup remove mContainer grab [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::Show [7f114455c000] state 0
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::NativeShow hide [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::WaylandPopupMarkAsClosed: [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::UpdateWaylandPopupHierarchy [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup Widget Popup Hierarchy:
[Parent 26082: Main Thread]: D/WidgetPopup panel Panel/Utility nsWindow [7f114455c000] Menu 0 Permanent 0 ContextMenu 0 Anchored 0 Visible 1
[Parent 26082: Main Thread]: D/WidgetPopup Layout Popup Hierarchy:
[Parent 26082: Main Thread]: D/WidgetPopup Empty
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::WaylandPopupHideTooltips
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::CloseAllPopupsBeforeRemotePopup
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::WaylandPopupHierarchyHideByLayout
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::WaylandPopupHierarchyValidateByLayout
[Parent 26082: Main Thread]: D/WidgetPopup first changed popup [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::WaylandPopupHierarchyHideTemporary() [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup temporary hidding popup [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::HideWaylandPopupWindow: [7f114455c000] remove from list 0
[Parent 26082: Main Thread]: D/WidgetPopup gtk_widget_is_visible() = 1
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::HideWaylandWindow: [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::WaylandPopupRemoveClosedPopups: [7f114455c000]
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::HideWaylandPopupWindow: [7f114455c000] remove from list 1
[Parent 26082: Main Thread]: D/WidgetPopup gtk_widget_is_visible() = 0
[Parent 26082: Main Thread]: D/WidgetPopup last popup was removed, quit.
[Parent 26082: Main Thread]: D/WidgetPopup Widget Popup Hierarchy:
[Parent 26082: Main Thread]: D/WidgetPopup Empty
[Parent 26082: Main Thread]: D/WidgetPopup Layout Popup Hierarchy:
[Parent 26082: Main Thread]: D/WidgetPopup Empty
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::OnWindowStateEvent [7f114455c000] for 7f114455a260 changed 0x1 new_window_state 0x81
[Parent 26082: Main Thread]: D/WidgetPopup early return because no interesting bits changed
[Parent 26082: Main Thread]: D/WidgetPopup nsWindow::OnWindowStateEvent [7f114455c000] for 7f114456dcd0 changed 0x1 new_window_state 0x81
[Parent 26082: Main Thread]: D/WidgetPopup quick return because IS_MOZ_CONTAINER(aWidget) is true
nsWindow::Resize [7f114455c000] 250.000000 4.000000
is consistent with what I'm seeing: a 250 pixels-wide and 4 pixels-tall popup.
Reporter | ||
Comment 5•4 years ago
|
||
And to confirm this is a wayland-specific regression, and not snap-specific, I can reproduce the problem with an upstream beta build when ran with MOZ_ENABLE_WAYLAND=1
.
Reporter | ||
Updated•4 years ago
|
Reporter | ||
Comment 6•4 years ago
|
||
Possibly a regression caused by bug 1737068 ?
Reporter | ||
Comment 7•4 years ago
|
||
Martin, can you provide insight on whether this regression might have been caused by your recent work on GdkWindow management?
Comment 8•4 years ago
|
||
(In reply to Olivier Tilloy from comment #7)
Martin, can you provide insight on whether this regression might have been caused by your recent work on GdkWindow management?
GdkWindow management is 95 only - I'm going to polish that in 95 time frame.
I think this is Bug 1733620 (I missed that regression but it was fortunately backed out for rc2 - build3 which is not ready yet).
Reporter | ||
Comment 9•4 years ago
|
||
Yes, it looks very much like bug 1733620. I'll test cherry-picking https://hg.mozilla.org/releases/mozilla-release/rev/21a4eaae720e in my snap builds to confirm.
Reporter | ||
Comment 10•4 years ago
|
||
And I can confirm that commit fixes the regression. Marking this bug a duplicate, thanks Martin!
Reporter | ||
Updated•4 years ago
|
Description
•