Places is designed to be a robust back-end for Bookmarks, History and related components using the mozStorage wrapper for SQLite. It is intended to provide useful APIs for a more usable front-end, emphasizing simple search and categorization.
Generally, you'll want to look at the documentation on MDC instead of what is here. The documentation here is only internal API documentation that isn't generally exposed to add-on authors.
The primary objectives:
- Improve access to History and Bookmarks
- Make it easier for people to Bookmark pages
- Consolidating user data formats
- Providing a platform for using interesting per-URL metadata
- Improving the capabilities of Live Bookmarks
- Providing a solid architecture for bookmark sync and remote storage
- Extensible Bookmark Providers for customization
- Flexible Query System
- Clean Architecture for ease of code reuse and maintainability
Studies from the late 1990s show that while revisitations of pages previously seen counted for roughly 39% of all page navigations (see Google Scholar), Bookmarks and History usage was low (1-3%), despite the fact that roughly 20% of those revisitations were to pages seen > 10 URLs ago (and thus outside the usefulness range of the Back button or menu).
Autocomplete in the URL bar is a useful tool but fails to address some common desires when looking up visited pages. There is a gulf between the capabilities of that tool, the capabilities of the Bookmarks and History systems today, and the desired capabilities of those systems.
- Places:History Use Cases
- Bookmarks Use Cases (not specific to places)
Data storage is implemented via a collection of SQLite tables:
A detailed database schema complete with associations between the various tables within places.sqlite: https://wiki.mozilla.org/images/d/d5/Places.sqlite.schema3.pdf
- Browser front-end:
- Toolkit Services:
The MDC page has the most up-to-date information on how to use views to display information from places.
The Controller connects the Views to the Model. It is responsible for telling the UI what commands are available, enabled and executing them on the back end services.
See the MDC page for details on history querying.
The following are some example dynamic containers:
- Feed Container - ping and parse RSS/Atom feeds and fill containers with their posts
- File System Container - show folders and files from the local hard disk
- Bonjour Container - fill a container with available network resources discovered by Bonjour Zero-Configuration Networking.
- Address Book URLs Container - fill a container with URLs mentioned in the system address book
Migrating data from Netscape-bookmarks-file-1, Mork, etc, to the storage format.
- HTML Import/Export API
- JSON Import/Export API (XXX bug 384370)
Observer APIs for extensions and other components that want to listen to backend activity:
This documents are kept around for historical purposes only.