Observers¶
Historically, each successful operation is notified through the nsINavBookmarksObserver interface. To listen to such notifications you must register using nsINavBookmarksService addObserver and removeObserver methods. Note that bookmark addition or order changes won’t notify bookmark-moved for items that have their indexes changed. Similarly, lastModified changes not done explicitly (like changing another property) won’t fire an onItemChanged notification for the lastModified property.
However, right now we are in the process of implementing a Places Observers system to change the nsINavBookmarksObserver interface.
Generally - the Observer pattern follows a subscription model. A subscriber (commonly referred to as the observer) subscribes to an event or an action handled by a publisher (commonly referred to as the subject) is notified when the event or action occurs.
Each successful operation is noticed by observer for these events and passed to a subscriber.
PlacesObservers.webidl a Global Singleton which provides utilities to observe or notify all events. PlacesEvent.webidl states all types of possible events and describes their features. In our case, events are:
“page-visited”
-data: PlacesVisit
Fired whenever a page is visited
“bookmark-added”
-data: PlacesBookmarkAddition
Fired whenever a bookmark (or a bookmark folder/separator) is created.
“bookmark-removed”
-data: PlacesBookmarkRemoved
Fired whenever a bookmark (or a bookmark folder/separator) is removed.
“bookmark-moved”
-data: PlacesBookmarkMoved
Fired whenever a bookmark (or a bookmark folder/separator) is moved.
“bookmark-guid-changed”
-data: PlacesBookmarkGuid
Fired whenever a bookmark guid changes.
“bookmark-keyword-changed”
-data: PlacesBookmarkKeyword
Fired whenever a bookmark keyword changes.
“bookmark-tags-changed”
-data: PlacesBookmarkTags
Fired whenever tags of bookmark changes.
“bookmark-time-changed”
-data: PlacesBookmarkTime
Fired whenever dateAdded or lastModified of a bookmark is explicitly changed through the Bookmarks API. This notification doesn’t fire when a bookmark is created, or when a property of a bookmark (e.g. title) is changed, even if lastModified will be updated as a consequence of that change.
“bookmark-title-changed”
-data: PlacesBookmarkTitle
Fired whenever a bookmark title changes.
“bookmark-url-changed”
-data: PlacesBookmarkUrl
Fired whenever a bookmark url changes.
“favicon-changed”
-data: PlacesFavicon
Fired whenever a favicon changes.
“page-title-changed”
-data: PlacesVisitTitle
Fired whenever a page title changes.
“history-cleared”
-data: PlacesHistoryCleared
Fired whenever history is cleared.
“page-rank-changed”
-data: PlacesRanking
Fired whenever pages ranking is changed.
“page-removed”
-data: PlacesVisitRemoved
Fired whenever a page or its visits are removed. This may be invoked when a page is removed from the store because it has no more visits, nor bookmarks. It may also be invoked when all or some of the page visits are removed, but the page itself is not removed from the store, because it may be bookmarked.
“purge-caches”
-data: PlacesPurgeCaches
Fired whenever changes happened that could not be observed through other notifications, for example a database fixup. When received, observers, especially data views, should drop any caches and reload from scratch.