summaryrefslogtreecommitdiffstats
path: root/chromium/docs/website/site/chromium-os/chromiumos-design-docs/text-input/syncing-input-methods/index.md
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/docs/website/site/chromium-os/chromiumos-design-docs/text-input/syncing-input-methods/index.md')
-rw-r--r--chromium/docs/website/site/chromium-os/chromiumos-design-docs/text-input/syncing-input-methods/index.md102
1 files changed, 0 insertions, 102 deletions
diff --git a/chromium/docs/website/site/chromium-os/chromiumos-design-docs/text-input/syncing-input-methods/index.md b/chromium/docs/website/site/chromium-os/chromiumos-design-docs/text-input/syncing-input-methods/index.md
deleted file mode 100644
index aca8b455a78..00000000000
--- a/chromium/docs/website/site/chromium-os/chromiumos-design-docs/text-input/syncing-input-methods/index.md
+++ /dev/null
@@ -1,102 +0,0 @@
----
-breadcrumbs:
-- - /chromium-os
- - Chromium OS
-- - /chromium-os/chromiumos-design-docs
- - Design Documents
-- - /chromium-os/chromiumos-design-docs/text-input
- - Text Input
-page_name: syncing-input-methods
-title: Syncing Languages and Input Methods
----
-
-## Background
-
-In M41, Chromium OS [started syncing
-preferences](https://codereview.chromium.org/312023002) for languages, keyboard
-layouts, and extension IMEs. Because devices may have different physical
-keyboard layouts, as well as different available locales and input methods,
-changes on one device should not automatically propagate to another device.
-However, we still wanted to provide a convenient out-of-box experience for users
-who go beyond their device's default input method when they Powerwash their
-system or sign in to a new device.
-
-## Overview
-
-Instead of syncing input methods both ways, we send changes to input methods
-from the device to the sync server. This lets us "remember" the most recent
-settings without overwriting existing preferences on other machines. When a user
-signs in to a device for the first time, we combine the input method used to
-sign in with the information from the sync server, adding the user's saved input
-method preferences to the local preferences without overwriting any input
-methods already set up.
-
-For instance, a user should only have to manually add the Dvorak layout to a
-device once. Then, we automatically add this layout to new devices for this
-user, without affecting devices that have already been set up. If the layout
-isn't available on a device, it's simply not added. In the worst case, we may
-add an input method that is incompatible with the hardware keyboard, but the
-user would still retain any input methods that they enabled before the first
-sync.
-
-## Design
-
-### Preferences
-
-We kept the original unsyncable preferences, which describe the local settings:
-
-* **settings.language.preferred_languages:** enabled language IDs
- (e.g., "en-US,fr,ko")
-* **settings.language.preload_engines:** preloaded (active) component
- input method IDs (e.g., "pinyin,mozc")
-* **settings.language.enabled_extension_imes:** enabled extension IME
- IDs
-
-We added three syncable preferences:
-
-* **settings.language.preferred_languages_syncable**
-* **settings.language.preload_engines_syncable**
-* **settings.language.enabled_extension_imes_syncable**
-
-During the first sync, the values of these preferences are merged with the local
-preferences above. After that, these preferences are only used to keep track of
-the user's latest settings. They never affect the settings on a device that has
-already synced. In other words, they can be thought of as one-way, syncing from
-the device to the sync server -- except during the first sync.
-
-A fourth preference was added to indicate whether the initial merging should
-happen: **settings.language.merge_input_methods**. This is set to true during
-OOBE. After the first sync, this is always false. This ensures that devices set
-up before M41 won't have their input settings changed.
-
-### First Sync
-
-[chromeos::input_method::InputMethodSyncer](https://cs.chromium.org/chromium/src/chrome/browser/chromeos/input_method/input_method_syncer.h)
-was created to handle sync logic for input methods. After the first ever sync,
-MergeSyncedPrefs adds the IME settings from the syncable prefs to the local
-prefs using the following algorithm for each pref:
-
-1. Append unique tokens from the syncable pref to the local pref.
-2. Set the syncable pref equal to the merged list.\*
-3. Remove tokens corresponding to values not available on this system.
-4. Set the local pref equal to this validated list.
-
-MergeSyncedPrefs also sets merge_input_methods to false, ensuring that it won't
-be called again.
-
-Notice that this solution doesn't assume the first sync happens right after
-OOBE. For cases where users have set encryption passphrases, they could easily
-add languages and input methods before enabling sync, so we support arbitrary
-lists instead of single values during the merge.
-
-### Updates
-
-When a local input method pref changes, InputMethodSyncer updates the syncable
-prefs to correspond to the local pref values.\* We update all three prefs at the
-same time to ensure the settings are consistent -- since these will be the
-values used the next time the user completes OOBE, the languages should
-correspond to the input methods.
-
-\* For preload_engines_syncable (input method IDs), we transform the list to use
-legacy component IDs so the preference can sync between Chrome OS and Chromium
-OS. During first sync, we convert this back to locally valid component IDs. \ No newline at end of file