Closed Bug 68200 Opened 24 years ago Closed 23 years ago

nsIObserverService needs cleanup.

Categories

(Core :: XPCOM, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla1.0

People

(Reporter: jud, Assigned: dougt)

Details

per API review meeting.
- rename to nsINotifierService
- nsIEnumerator needs to be turned into nsISimpleEnumerator
- first char in method names need to be lower case
- the key should be an atom rather than a string.
Blocks: 68201
Blocks: 68204
there was some discussion in another bug (I'll try to find it) about the
ownership model - right now, the observer service is smart enough to hold a weak
reference when the object supports weak refs, and to hold a strong ref when it
doesn't support it... the problem is that you may want to support weak
references for one object, but want the observer service to hold a strong
reference... 

see bug 66950 for some relevant discussion.

I'm imagining something like adding a boolean parameter to addObserver() which
specifies if you want a strong or weak reference.
No longer blocks: 68204
Blocks: 68204
nom. 0.9
Blocks: 64833
Keywords: mozilla0.9
Status: NEW → ASSIGNED
OS: Windows 2000 → All
Hardware: PC → All
Target Milestone: --- → mozilla0.9
No longer blocks: 64833
No longer blocks: 68201, 68204
Target Milestone: mozilla0.9 → mozilla1.0
From bug 94349:

nsIObserverService doesn't handle element removal
during iteration. What happens is this:

1) nsAutoConfig also observes the "profile-after-change" topic (news to me) and
it is the first thing to register for that topic - before mfcEmbed.
2) When nsAutoConfig observes this change for the first time, it removes itself
as an  observer by calling nsIObserverService::RemoveObserver().
3) This causes the iteration to skip the next observer (mfcEmbed)

It needs to be possible for an observer to call RemoveObserver() from it's
Observe() method. If not, it at least needs to be documented in the API.
the nsIObserver and nsIObserverService has been froze.  This address items 2,3
of the intial bug.  (1) was not done and imo doesn't need to be. (4), the topic
was changed to c strings.

Scott, this bug could be marked fix.  

The bug conrad points out is 94636
dougt, you did the work, you should get the FIXED :)
 reassigning to you and marking fixed..
Assignee: scc → dougt
Status: ASSIGNED → NEW
dougt fixed this.
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.