addons.sys.mjs |
This file defines the add-on sync functionality.
There are currently a number of known limitations:
- We only sync XPI extensions and themes available from addons.mozilla.org.
We hope to expand support for other add-ons eventually.
- We only attempt syncing of add-ons between applications of the same type.
This means add-ons will not synchronize between Firefox desktop and
Firefox mobile, for example. This is because of significant add-on
incompatibility between application types.
Add-on records exist for each known {add-on, app-id} pair in the Sync client
set. Each record has a randomly chosen GUID. The records then contain
basic metadata about the add-on.
We currently synchronize:
- Installations
- Uninstallations
- User enabling and disabling
Synchronization is influenced by the following preferences:
- services.sync.addons.ignoreUserEnabledChanges
- services.sync.addons.trustedSourceHostnames
and also influenced by whether addons have repository caching enabled and
whether they allow installation of addons from insecure options (both of
which are themselves influenced by the "extensions." pref branch)
See the documentation in all.js for the behavior of these prefs.
|
25411 |
bookmarks.sys.mjs |
|
29423 |
clients.sys.mjs |
How does the clients engine work?
- We use 2 files - commands.json and commands-syncing.json.
- At sync upload time, we attempt a rename of commands.json to
commands-syncing.json, and ignore errors (helps for crash during sync!).
- We load commands-syncing.json and stash the contents in
_currentlySyncingCommands which lives for the duration of the upload process.
- We use _currentlySyncingCommands to build the outgoing records
- Immediately after successful upload, we delete commands-syncing.json from
disk (and clear _currentlySyncingCommands). We reconcile our local records
with what we just wrote in the server, and add failed IDs commands
back in commands.json
- Any time we need to "save" a command for future syncs, we load
commands.json, update it, and write it back out.
|
37106 |
extension-storage.sys.mjs |
|
9557 |
forms.sys.mjs |
|
7381 |
history.sys.mjs |
|
20996 |
passwords.sys.mjs |
|
14735 |
prefs.sys.mjs |
|
16531 |
tabs.sys.mjs |
|
21060 |