Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(495)

Side by Side Diff: chrome/browser/spellchecker/spellcheck_custom_dictionary.cc

Issue 22460011: [CleanUp] Use base::STLSetDifference in place of std::set_difference (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add missing head file. Created 7 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/spellchecker/spellcheck_custom_dictionary.h" 5 #include "chrome/browser/spellchecker/spellcheck_custom_dictionary.h"
6 6
7 #include <functional> 7 #include <functional>
8 8
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/files/important_file_writer.h" 10 #include "base/files/important_file_writer.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 base::CopyFile(path, path.AddExtension(BACKUP_EXTENSION)); 122 base::CopyFile(path, path.AddExtension(BACKUP_EXTENSION));
123 base::ImportantFileWriter::WriteFileAtomically(path, content.str()); 123 base::ImportantFileWriter::WriteFileAtomically(path, content.str());
124 } 124 }
125 125
126 // Removes duplicate and invalid words from |to_add| word list and sorts it. 126 // Removes duplicate and invalid words from |to_add| word list and sorts it.
127 // Looks for duplicates in both |to_add| and |existing| word lists. Returns a 127 // Looks for duplicates in both |to_add| and |existing| word lists. Returns a
128 // bitmap of |ChangeSanitationResult| values. 128 // bitmap of |ChangeSanitationResult| values.
129 int SanitizeWordsToAdd(const WordSet& existing, WordList& to_add) { 129 int SanitizeWordsToAdd(const WordSet& existing, WordList& to_add) {
130 // Do not add duplicate words. 130 // Do not add duplicate words.
131 std::sort(to_add.begin(), to_add.end()); 131 std::sort(to_add.begin(), to_add.end());
132 WordList new_words; 132 WordList new_words = base::STLSetDifference<WordList>(to_add, existing);
133 std::set_difference(to_add.begin(),
134 to_add.end(),
135 existing.begin(),
136 existing.end(),
137 std::back_inserter(new_words));
138 new_words.erase(std::unique(new_words.begin(), new_words.end()), 133 new_words.erase(std::unique(new_words.begin(), new_words.end()),
139 new_words.end()); 134 new_words.end());
140 int result = VALID_CHANGE; 135 int result = VALID_CHANGE;
141 if (to_add.size() != new_words.size()) 136 if (to_add.size() != new_words.size())
142 result |= DETECTED_DUPLICATE_WORDS; 137 result |= DETECTED_DUPLICATE_WORDS;
143 // Do not add invalid words. 138 // Do not add invalid words.
144 size_t size = new_words.size(); 139 size_t size = new_words.size();
145 new_words.erase(std::remove_if(new_words.begin(), 140 new_words.erase(std::remove_if(new_words.begin(),
146 new_words.end(), 141 new_words.end(),
147 IsInvalidWord), 142 IsInvalidWord),
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 316
322 // Add remote words locally. 317 // Add remote words locally.
323 Change to_change_locally(to_add_locally); 318 Change to_change_locally(to_add_locally);
324 to_change_locally.Sanitize(GetWords()); 319 to_change_locally.Sanitize(GetWords());
325 Apply(to_change_locally); 320 Apply(to_change_locally);
326 Notify(to_change_locally); 321 Notify(to_change_locally);
327 Save(to_change_locally); 322 Save(to_change_locally);
328 323
329 // Add as many as possible local words remotely. 324 // Add as many as possible local words remotely.
330 std::sort(to_add_locally.begin(), to_add_locally.end()); 325 std::sort(to_add_locally.begin(), to_add_locally.end());
331 WordList to_add_remotely; 326 WordList to_add_remotely = base::STLSetDifference<WordList>(words_,
332 std::set_difference(words_.begin(), 327 to_add_locally);
333 words_.end(),
334 to_add_locally.begin(),
335 to_add_locally.end(),
336 std::back_inserter(to_add_remotely));
337 328
338 // Send local changes to the sync server. 329 // Send local changes to the sync server.
339 Change to_change_remotely(to_add_remotely); 330 Change to_change_remotely(to_add_remotely);
340 syncer::SyncMergeResult result(type); 331 syncer::SyncMergeResult result(type);
341 result.set_error(Sync(to_change_remotely)); 332 result.set_error(Sync(to_change_remotely));
342 return result; 333 return result;
343 } 334 }
344 335
345 void SpellcheckCustomDictionary::StopSyncing(syncer::ModelType type) { 336 void SpellcheckCustomDictionary::StopSyncing(syncer::ModelType type) {
346 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 337 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
424 WordList custom_words; 415 WordList custom_words;
425 LoadDictionaryFileReliably(custom_words, path); 416 LoadDictionaryFileReliably(custom_words, path);
426 417
427 // Add words. 418 // Add words.
428 custom_words.insert(custom_words.end(), 419 custom_words.insert(custom_words.end(),
429 dictionary_change.to_add().begin(), 420 dictionary_change.to_add().begin(),
430 dictionary_change.to_add().end()); 421 dictionary_change.to_add().end());
431 422
432 // Remove words. 423 // Remove words.
433 std::sort(custom_words.begin(), custom_words.end()); 424 std::sort(custom_words.begin(), custom_words.end());
434 WordList remaining; 425 WordList remaining =
435 std::set_difference(custom_words.begin(), 426 base::STLSetDifference<WordList>(custom_words,
436 custom_words.end(), 427 dictionary_change.to_remove());
437 dictionary_change.to_remove().begin(),
438 dictionary_change.to_remove().end(),
439 std::back_inserter(remaining));
440 std::swap(custom_words, remaining); 428 std::swap(custom_words, remaining);
441 429
442 SaveDictionaryFileReliably(custom_words, path); 430 SaveDictionaryFileReliably(custom_words, path);
443 } 431 }
444 432
445 void SpellcheckCustomDictionary::OnLoaded(WordList custom_words) { 433 void SpellcheckCustomDictionary::OnLoaded(WordList custom_words) {
446 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 434 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
447 Change dictionary_change(custom_words); 435 Change dictionary_change(custom_words);
448 dictionary_change.Sanitize(GetWords()); 436 dictionary_change.Sanitize(GetWords());
449 Apply(dictionary_change); 437 Apply(dictionary_change);
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
542 530
543 void SpellcheckCustomDictionary::Notify( 531 void SpellcheckCustomDictionary::Notify(
544 const SpellcheckCustomDictionary::Change& dictionary_change) { 532 const SpellcheckCustomDictionary::Change& dictionary_change) {
545 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 533 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
546 if (!IsLoaded() || dictionary_change.empty()) 534 if (!IsLoaded() || dictionary_change.empty())
547 return; 535 return;
548 FOR_EACH_OBSERVER(Observer, 536 FOR_EACH_OBSERVER(Observer,
549 observers_, 537 observers_,
550 OnCustomDictionaryChanged(dictionary_change)); 538 OnCustomDictionaryChanged(dictionary_change));
551 } 539 }
OLDNEW
« no previous file with comments | « chrome/browser/spellchecker/feedback_sender.cc ('k') | chrome/browser/ui/gtk/tabs/tab_strip_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698