Closing issue for add-on pop-up notification

VERIFIED FIXED in Firefox 53

Status

()

defect
P1
normal
VERIFIED FIXED
3 years ago
2 years ago

People

(Reporter: vasilica.mihasca, Assigned: johannh)

Tracking

53 Branch
Firefox 53
Points:
---

Firefox Tracking Flags

(firefox50 unaffected, firefox51 unaffected, firefox52 unaffected, firefox53 verified, firefox54 verified)

Details

(Whiteboard: [fxprivacy])

Attachments

(1 attachment)

[Affected versions]:
Firefox 53.0a1 (2017-01-11)

[Affected platforms]:
Windows 10 64-bit
Mac OS X 10.12.1

[Steps to reproduce]:
1.Launch Firefox with clean profile.
2.Navigate to https://addons.mozilla.org
3.Choose an add-on and click on “+ Add to Firefox” green button. 
4.Continue the installation process by clicking on “Install” button from doorhanger.
5.While the confirmation pop-up is still displayed, choose another add-on and click on “+ Add to Firefox” green button.
6.Close the second doorhanger by clicking on “X” button.

[Expected Results]:
The second add-on doorhanger is successfully closed.

[Actual Results]:
- The first pop-up is closed and the second one remains displayed.
- See screencast: http://www.screencast.com/t/Jh34tAif
Whiteboard: [fxprivacy] [triage]
P1, but we can most likely uplift a fix.
Priority: -- → P1
Whiteboard: [fxprivacy] [triage] → [fxprivacy]
So I've been looking into this. This is an interesting combination of different states. The [x] is not actually (explicitly) closing the first open popup. This is just how one perceives it. The issue has two components:

- The first open popup in that screencast happens to be a popup with the removeOnDismissal property set to true.
- The second popup is a persistent popup with an [x] button.

These latter type of popups are supposed to lose their persistent status and become dismissed once the [x] was clicked. The implementation looks like this[0]. This is where things are starting to go wrong. We can see that the _dismiss method only considers the firstChild of the panel, even though the [x] could have been clicked on a different popupnotification. As a result, the second notification does not lose its persistent status and will remain shown. The firstChild, on the other hand, gets dismissed (that just seems to be how the [x] works, all non-persistent popups get hidden). But since it has removeOnDismissal, it automatically removes itself when hidden. And so it seems that the [x] only removes the first popup when in fact it tries to hide both.

My suggested solution is to correctly apply the persistent = false and keep the remaining behavior as it is. This basically leads to both popups being correctly hidden and the restart popup being removed. Looking at bug 1315236 comment 19, we will soon remove the removeOnDismissal property from the restart popups anyway.

[0] http://searchfox.org/mozilla-central/rev/c477aa8bd99278962998adba1c5e4b15a02c42c7/toolkit/modules/PopupNotifications.jsm#632
Assignee: nobody → jhofmann
Status: NEW → ASSIGNED
Comment on attachment 8827474 [details]
Bug 1330609 - Hide the correct persistent popup notification on close.

https://reviewboard.mozilla.org/r/105146/#review106620

Thanks!
Attachment #8827474 - Flags: review?(past) → review+
https://hg.mozilla.org/mozilla-central/rev/8a3833a05e17
Status: ASSIGNED → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 53
Build ID: 20170213030206
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0

Verified as fixed on on Windows 10 x 64, Mac OS X 10.11 and Ubuntu 16.04 x64 on Firefox Nightly 54.0a1, Firefox Nightly 53.0a1 and Aurora 53.0a2.
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.