Closed Bug 202804 Opened 21 years ago Closed 9 years ago

Awkward User Experience if more than 1 observer calls nsIProfileChangeStatus::VetoChange

Categories

(Core Graveyard :: Profile: BackEnd, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED INCOMPLETE

People

(Reporter: ccarlen, Assigned: ccarlen)

Details

On a profile switch, the appshell service enumerates all open windows. If the document to be closed pops up a Save/Don't Save/Cancel dialog, and the user chooses "Cancel," the profile switch is stopped. Currently, this is only done by one observer. If we add another "profile-approve-change" observer (see bug 202629), we could end up having more than one observer put up a dialog which offered to cancel the operation. This is wrong - the 1st cancel should cancel the operation. The problem is that the profile mgr uses nsIObserverService::notifyObservers("profile-approve-change", ...). If one of the observers calls VetoChange(), the enumeration will still continue, and the next observer may put up another dialog. Here's the fix: Instead, the profile mgr should use nsIObserverService::enumerateObservers("profile-approve-change", ...). Then, if it's doing the enumeration, it could check for a veto after each observer and stop enumerating on the 1st veto.
QA Contact: agracebush → profile-manager-backend
This bug is filed in a bugzilla component related to pre-Firefox code which no longer exists. I believe it is no longer relevant and I am therefore closing it INCOMPLETE. If you believe that this bug is still valid and needs to be fixed, please reopen it and move it to the Toolkit:Startup and Profile System product/component.
No longer blocks: 1243899
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → INCOMPLETE
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.