Closed Bug 753878 Opened 12 years ago Closed 12 years ago

Add UI component for selecting which engines to sync

Categories

(Firefox for Android Graveyard :: Android Sync, defect, P1)

ARM
Android
defect

Tracking

(Not tracked)

RESOLVED FIXED
mozilla19

People

(Reporter: liuche, Assigned: liuche)

Details

(Keywords: uiwanted)

Attachments

(2 files, 2 obsolete files)

Currently, sync on Android syncs all the engines (history, form history, bookmarks, passwords, tabs). A UI component for selecting which engines are synced should be present, probably in Settings > Accounts > [your Sync Account].
Strictly speaking, we sync everything that desktop has elected to sync, not "everything". But yeah.
Priority: P2 → P1
Assignee: nobody → nalexander
Status: NEW → ASSIGNED
Summary: Add UI component for selecting which engines to sync. → Add UI component for selecting which engines to sync
Assignee: nalexander → liuche
STR:

1. Settings > Accounts > [Sync Account]
2. New "Syncing Options" option should be available in the Preferences. Click to bring up engine selection dialog.
3. If initial sync is in progress, all the engines should be selected. (Ideally, selecting engines during the initial sync shouldn't be possible, but that will be a follow-up)
4. Check/uncheck engines. "Ok" will pop up text confirming that preferences have been saved. Cancel will simply close the dialog.
5. Force a sync on Android, then sync on other paired device. The engines Android supports should match in selection state, and desktop-only engines should not change.

Vice versa should also sync engines, and repeated back-and-forth syncing should sync as expected. (Checking syncIDs involves adding the engine on Android and syncing, and then verifying that correct engine sync behavior happens when removing the engine on Android.)
Attached image Screenshot: Settings screen for Sync. (obsolete) —
For l10n: In the "Syncing Options" menu item, we list a few sync engines that the user can select for syncing.

At the moment, they are localized as the engine names (e.g., "Bookmarks") delineated by commas and terminated in an ellipsis.

Specifically:
<!ENTITY sync.configure.engines.summary 'Select what to sync:'>
<!ENTITY sync.configure.engines.title.bookmarks 'Bookmarks'>
...
<!ENTITY sync.configure.engines.summary.label '&sync.configure.engines.summary; &sync.configure.engines.title.bookmarks;, &sync.configure.engines.title.passwords;, &sync.configure.engines.title.history;, &sync.configure.engines.title.tabs;…'>

Does this form of displaying a list lend itself to localization for all languages, or is there a better way it should be done?
Comment on attachment 661380 [details]
Screenshot: Settings screen for Sync.

I'm tempted to say that we don't need the list here. The words are going to be long and winding and line breaking in many locales, too.

I'd ask for further input from UX, but not sure how to do that in services.
(In reply to Axel Hecht [:Pike] from comment #6)
> Comment on attachment 661380 [details]
> Screenshot: Settings screen for Sync.
> 
> I'm tempted to say that we don't need the list here. The words are going to
> be long and winding and line breaking in many locales, too.

This sounds good to me, too.  Then we only need to translate the words in the chooser list.
> I'm tempted to say that we don't need the list here.

I concur, but with additional input!

Firstly, I'd prefer simple phrasing like

   What to sync
   Choose which browser data to sync with other devices

(This would also avoid the unpleasant capitalization.)


But note:

"Before Ice Cream Sandwich, we often displayed secondary text below a label to further describe it or provide instructions. Starting in Ice Cream Sandwich, we're using secondary text for status."

That is, we should *not* provide additional advice, and if we use a phrase like "What to sync", rather than "Syncing Options", we almost certainly don't need it.

Instead, we should *programmatically* compose a sentence-case summary of enabled engines:

  What to sync
  Nothing enabled

  What to sync
  Bookmarks, history, open tabs, add-ons


I suggest we land this without any secondary text, and with the primary text as "What to sync", and file a follow-up for doing programmatic status text.

Note that all of our sub-settings should avoid Title Case (see style guide) so let's stick to that here and fix "Pair a Device" in another bug.


References:

* Android writing style guide: <http://developer.android.com/design/style/writing.html>
* Settings-specific writing style guide: <http://developer.android.com/design/patterns/settings.html#writing>

Please read those; they contain wonderful advice that this patch violates, such as "don't end a label with a word like 'setting' or 'settings'. It's already implied."



> I'd ask for further input from UX, but not sure how to do that in services.

uxwanted keyword and CC random folks from the UX team :D
Attachment #661380 - Attachment is obsolete: true
Attachment #661381 - Attachment is obsolete: true
Updated strings in screenshots - UX feedback if something else is desired.
Keywords: uiwanted
Target Milestone: --- → mozilla19
Updated STR:

1. Settings > Accounts > [Sync Account]
2. New "What to Sync" option should be available in the Preferences. Click to bring up engine selection dialog.
3. If the first sync is in progress, all the engines should be selected.
4. Check/uncheck engines. Clicking "Ok" will pop up text confirming that selections have been saved. Cancel will simply close the dialog.
5. If there is network connectivity, a sync will start.

Please verify that engines are synced correctly between devices, including repeated back-and-forth syncing.

Timing:
In the case of multiple clients uploading new engine preferences at the same time, we will make a best effort to resolve them. If a client finds that the server has been updated more recently than when it made its own selections, the client will discard its local changes and accept the server changes.

In other words, if two offline clients both make engine selection changes, the first to sync changes to the server wins.

STR:
1. Take device 1 offline. Make engine selections and click "Ok" to save them.
2. On another device connected to the same sync account, make engine selection changes and sync them to the server.
3. Take device 1 back online. Verify that since this device displays the engines that were synced to the server in step 2, not the engines locally selected.

Note: This STR assumes system times are in sync; however, we do not yet account for clock skew between devices (Bug 721887).
https://hg.mozilla.org/mozilla-central/rev/298753178aea
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Product: Mozilla Services → Android Background Services
Product: Android Background Services → Firefox for Android
Product: Firefox for Android → Firefox for Android Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: