canmove, Confirmed users
409
edits
m (add specs) |
(documenting possible record choices) |
||
| Line 20: | Line 20: | ||
|Feature overview=Add-ons are synchronized between sync clients. | |Feature overview=Add-ons are synchronized between sync clients. | ||
|Feature users and use cases=User installs an add-on on one browser. When a sync occurs, the add-on is automagically installed on other sync clients. | |Feature users and use cases=User installs an add-on on one browser. When a sync occurs, the add-on is automagically installed on other sync clients. | ||
|Feature functional spec=Add-ons are only synchronized between | |Feature functional spec=Let's assume the following feature set: | ||
* Add-ons are only synchronized between clients of the same application ID (e.g. Firefox desktop, mobile, or Thunderbird). The reason is compatibility. Most add-ons simply don't work across multiple application types. | |||
* Given the above, we still need to support syncing add-ons installed on multiple application types. | |||
This leads to some interesting choices with regards to the add-on data record. We have the following approaches for record modeling: | |||
# Per add-on records | |||
# Per { add-on, application type } pair | |||
# Per client records | |||
Per per add-on records would likely resemble the following: | |||
ADDON_GUID = { | |||
clients: { | |||
A: { | |||
install_state: "INSTALLED", | |||
enabled: true, | |||
type: "desktop", | |||
}, | |||
B: { | |||
install_state: "UNINSTALLED", | |||
type: "mobile" | |||
} | |||
} | |||
} | |||
For per add-on/application type, we would have: | |||
ADDON_GUID-DESKTOP = { | |||
addons: { | |||
A: { | |||
install_state: "INSTALLED", | |||
enabled: true | |||
}, | |||
B: { | |||
install_state: "UNINSTALLED", | |||
type: "mobile" | |||
} | |||
}, | |||
other_prefs: undefined | |||
} | |||
And for per-client records, we would have: | |||
CLIENT_ID = { | |||
app_type: "desktop", | |||
addons: { | |||
ADDON1: { | |||
install_state: "installed", | |||
enabled: true, | |||
}, | |||
ADDON2: { | |||
install_state: "uninstalled", | |||
}, | |||
ADDON3: { | |||
install_state: "installed", | |||
enabled: false | |||
} | |||
}, | |||
other_prefs: undefined | |||
} | |||
}} | }} | ||
{{FeatureInfo | {{FeatureInfo | ||