area.rs |
|
16432 |
error.rs |
|
4373 |
lib.rs |
This crate bridges the WebExtension storage area interfaces in Firefox
Desktop to the extension storage Rust component in Application Services.
## How are the WebExtension storage APIs implemented in Firefox?
There are three storage APIs available for WebExtensions:
`storage.local`, which is stored locally in an IndexedDB database and never
synced to other devices, `storage.sync`, which is stored in a local SQLite
database and synced to all devices signed in to the same Firefox Account,
and `storage.managed`, which is provisioned in a native manifest and
read-only.
* `storage.local` is implemented in `ExtensionStorageIDB.sys.mjs`.
* `storage.sync` is implemented in a Rust component, `webext_storage`. This
Rust component is vendored in m-c, and exposed to JavaScript via an XPCOM
API in `webext_storage_bridge` (this crate). Eventually, we'll change
`ExtensionStorageSync.sys.mjs` to call the XPCOM API instead of using the
old Kinto storage adapter.
* `storage.managed` is implemented directly in `parent/ext-storage.js`.
`webext_storage_bridge` implements the `mozIExtensionStorageArea`
(and, eventually, `mozIBridgedSyncEngine`) interface for `storage.sync`. The
implementation is in `area::StorageSyncArea`, and is backed by the
`webext_storage` component. |
2490 |
punt.rs |
|
12407 |
store.rs |
|
5618 |