User:Anaaktgeboren/SearchEngineSync: Difference between revisions

Jump to navigation Jump to search
Line 66: Line 66:
* currently full of holes
* currently full of holes
=== Spec ===
=== Spec ===
* proposed data model
* proposed data model for a plugin record
<div style="background-color: #F0F0F0"><pre>
<div style="background-color: #F0F0F0"><pre>
{
{
Line 95: Line 95:




* The OpenSearch plugins, ordering of search engines, keywords for search engines (both custom & default), and hidden flags (default engines only afaik) will be sync'ed across platforms (between mobile & desktop, though the mobile client will be written later)
* The OpenSearch plugins, ordering of search engines, keywords for search engines (both custom & default), and hidden flags (default engines only afaik) will be sync'ed across platforms (though the mobile client(s) will be written later)
** default engine OpenSearch objects will not be sync'ed, as these are hardcoded and already present on the machines. However their entries in the search db will synced as this contains the user generated ordering & keywords.
** parts of default engines will be synced (such as ordering & keywords)
** on the fence about whether to sync Sherlock objects in 1.0, or iterate on that later if anyone screams
** on the fence about whether to sync extension shipped plugins, especially given Asa's concern about hijacking & the avg funny business, though searchservice will consider an extension shipped plugin as a default in _isDefault()
** the currently selected engine will not be synced, as that is a local setting and probably does not make sense to sync
** the currently selected engine will not be synced, as that is a local setting and probably does not make sense to sync
** read-only engines cannot be serialized, and therefore probably should not be sync'ed (I believe this is just the default ones)
** read-only engines cannot be serialized, and therefore probably should not be sync'ed (I believe this is just the default ones)
* When a user changes or removes a keyword or custom engine, the removal will be synced
* When a user changes or removes a keyword or custom engine, the removal will be synced
* When a user removes a default engine, the removal will be synced (but note that the browser does not actually remove those, they are just hidden)
* When a user removes a default engine, the removal will be synced (but note that the browser does not actually remove those, it just hides it)
* The results of "Restore Defaults" will be synced (restores all deleted defaults, wipes db to default single entry (ketwords, ordering). This will not be treated as a special operation by sync
* The results of "Restore Defaults" will be synced (restores all deleted defaults, wipes db to default single entry (ketwords, ordering). This will not be treated as a special operation by sync
* Until the browser implements detecting hijacked searches, this engine will be preffed off by default for existing and new users
* Until the browser implements detecting hijacked searches, this engine will be preffed off by default for existing and new users
* Reconciliation: Merge by Default
* Reconciliation: Merge by Default
** When users choose model from settings, overrides this default?
** When users choose model from settings, overrides this default?
* The custom search plugins will be synced as json
** what if the default ordering is different on two clients?
* Data Model
** each client will provide one record containing
** CustomSearch array containing the json blobs of all custom search engines
** areHidden array containing names of all the default engines that are currently hidden
** SearchRows array containing all the rows of search db [engineid, name, value]
*** note that value may be an intger or a string and that engineid is not unique. there may be several columns with hte same engineid


=== Implementation schedule ===
=== Implementation schedule ===
Confirmed users
385

edits

Navigation menu