| Index: chrome/browser/chromeos/input_method/input_method_syncer.cc
|
| diff --git a/chrome/browser/chromeos/input_method/input_method_syncer.cc b/chrome/browser/chromeos/input_method/input_method_syncer.cc
|
| index 12ce3b71f65bad29e104c166644ea1d2df1b03d5..b1b99fbf9efbb0f95d84654609d0d795c686df7e 100644
|
| --- a/chrome/browser/chromeos/input_method/input_method_syncer.cc
|
| +++ b/chrome/browser/chromeos/input_method/input_method_syncer.cc
|
| @@ -9,6 +9,7 @@
|
| #include <vector>
|
|
|
| #include "base/bind.h"
|
| +#include "base/strings/string_piece.h"
|
| #include "base/strings/string_split.h"
|
| #include "base/strings/string_util.h"
|
| #include "base/task_runner.h"
|
| @@ -95,12 +96,12 @@ std::string CheckAndResolveLocales(const std::string& languages) {
|
| }
|
|
|
| // Appends tokens from |src| that are not in |dest| to |dest|.
|
| -void MergeLists(std::vector<std::string>* dest,
|
| - const std::vector<std::string>& src) {
|
| +void MergeLists(std::vector<base::StringPiece>* dest,
|
| + const std::vector<base::StringPiece>& src) {
|
| // Keep track of already-added tokens.
|
| - std::set<std::string> unique_tokens(dest->begin(), dest->end());
|
| + std::set<base::StringPiece> unique_tokens(dest->begin(), dest->end());
|
|
|
| - for (const std::string& token : src) {
|
| + for (auto token : src) {
|
| // Skip token if it's already in |dest|.
|
| if (binary_search(unique_tokens.begin(), unique_tokens.end(), token))
|
| continue;
|
| @@ -178,44 +179,45 @@ void InputMethodSyncer::MergeSyncedPrefs() {
|
| prefs_->SetBoolean(prefs::kLanguageShouldMergeInputMethods, false);
|
| merging_ = true;
|
|
|
| - std::string preferred_languages_syncable =
|
| - preferred_languages_syncable_.GetValue();
|
| - std::string preload_engines_syncable =
|
| - preload_engines_syncable_.GetValue();
|
| - std::string enabled_extension_imes_syncable =
|
| - enabled_extension_imes_syncable_.GetValue();
|
| -
|
| - std::vector<std::string> synced_tokens;
|
| - std::vector<std::string> new_tokens;
|
| + std::vector<base::StringPiece> synced_tokens;
|
| + std::vector<base::StringPiece> new_tokens;
|
|
|
| // First, set the syncable prefs to the union of the local and synced prefs.
|
| + std::string preferred_languages_syncable =
|
| + preferred_languages_syncable_.GetValue();
|
| synced_tokens =
|
| - base::SplitString(preferred_languages_syncable_.GetValue(), ",",
|
| - base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
|
| - new_tokens = base::SplitString(preferred_languages_.GetValue(), ",",
|
| - base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
|
| + base::SplitStringPiece(preferred_languages_syncable, ",",
|
| + base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
|
| + std::string preferred_languages = preferred_languages_.GetValue();
|
| + new_tokens = base::SplitStringPiece(
|
| + preferred_languages, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
|
|
|
| // Append the synced values to the current values.
|
| MergeLists(&new_tokens, synced_tokens);
|
| preferred_languages_syncable_.SetValue(base::JoinString(new_tokens, ","));
|
|
|
| + std::string enabled_extension_imes_syncable =
|
| + enabled_extension_imes_syncable_.GetValue();
|
| synced_tokens =
|
| - base::SplitString(enabled_extension_imes_syncable_.GetValue(), ",",
|
| - base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
|
| - new_tokens = base::SplitString(enabled_extension_imes_.GetValue(), ",",
|
| - base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
|
| + base::SplitStringPiece(enabled_extension_imes_syncable, ",",
|
| + base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
|
| + std::string enabled_extension_imes = enabled_extension_imes_.GetValue();
|
| + new_tokens = base::SplitStringPiece(
|
| + enabled_extension_imes, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
|
|
|
| MergeLists(&new_tokens, synced_tokens);
|
| enabled_extension_imes_syncable_.SetValue(base::JoinString(new_tokens, ","));
|
|
|
| // Revert preload engines to legacy component IDs.
|
| - new_tokens = base::SplitString(preload_engines_.GetValue(), ",",
|
| - base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
|
| + std::string preload_engines = preload_engines_.GetValue();
|
| + new_tokens = base::SplitStringPiece(
|
| + preload_engines, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
|
| std::transform(new_tokens.begin(), new_tokens.end(), new_tokens.begin(),
|
| extension_ime_util::GetComponentIDByInputMethodID);
|
| + std::string preload_engines_syncable = preload_engines_syncable_.GetValue();
|
| synced_tokens =
|
| - base::SplitString(preload_engines_syncable_.GetValue(), ",",
|
| - base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
|
| + base::SplitStringPiece(preload_engines_syncable, ",",
|
| + base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
|
|
|
| MergeLists(&new_tokens, synced_tokens);
|
| preload_engines_syncable_.SetValue(base::JoinString(new_tokens, ","));
|
|
|