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

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

Issue 13428008: [Spellcheck] Record the number of words in the custom dictionary when the custom dictionary is load… (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: responding to comments Created 7 years, 8 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
« no previous file with comments | « no previous file | chrome/browser/spellchecker/spellcheck_custom_dictionary_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
11 #include "base/md5.h" 11 #include "base/md5.h"
12 #include "base/strings/string_number_conversions.h" 12 #include "base/strings/string_number_conversions.h"
13 #include "base/strings/string_split.h" 13 #include "base/strings/string_split.h"
14 #include "chrome/browser/profiles/profile.h" 14 #include "chrome/browser/profiles/profile.h"
15 #include "chrome/browser/spellchecker/spellcheck_host_metrics.h"
15 #include "chrome/common/chrome_constants.h" 16 #include "chrome/common/chrome_constants.h"
16 #include "chrome/common/spellcheck_messages.h" 17 #include "chrome/common/spellcheck_messages.h"
17 #include "content/public/browser/browser_thread.h" 18 #include "content/public/browser/browser_thread.h"
18 #include "sync/api/sync_change.h" 19 #include "sync/api/sync_change.h"
19 #include "sync/api/sync_data.h" 20 #include "sync/api/sync_data.h"
20 #include "sync/api/sync_error_factory.h" 21 #include "sync/api/sync_error_factory.h"
21 #include "sync/protocol/sync.pb.h" 22 #include "sync/protocol/sync.pb.h"
22 23
23 using content::BrowserThread; 24 using content::BrowserThread;
24 using chrome::spellcheck_common::WordList; 25 using chrome::spellcheck_common::WordList;
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
402 } 403 }
403 404
404 // static 405 // static
405 WordList SpellcheckCustomDictionary::LoadDictionaryFile( 406 WordList SpellcheckCustomDictionary::LoadDictionaryFile(
406 const base::FilePath& path) { 407 const base::FilePath& path) {
407 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 408 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
408 WordList words; 409 WordList words;
409 LoadDictionaryFileReliably(words, path); 410 LoadDictionaryFileReliably(words, path);
410 if (!words.empty() && VALID_CHANGE != SanitizeWordsToAdd(WordList(), words)) 411 if (!words.empty() && VALID_CHANGE != SanitizeWordsToAdd(WordList(), words))
411 SaveDictionaryFileReliably(words, path); 412 SaveDictionaryFileReliably(words, path);
413 SpellCheckHostMetrics::RecordCustomWordCountStats(words.size());
412 return words; 414 return words;
413 } 415 }
414 416
415 // static 417 // static
416 void SpellcheckCustomDictionary::UpdateDictionaryFile( 418 void SpellcheckCustomDictionary::UpdateDictionaryFile(
417 const SpellcheckCustomDictionary::Change& dictionary_change, 419 const SpellcheckCustomDictionary::Change& dictionary_change,
418 const base::FilePath& path) { 420 const base::FilePath& path) {
419 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 421 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
420 if (dictionary_change.empty()) 422 if (dictionary_change.empty())
421 return; 423 return;
(...skipping 23 matching lines...) Expand all
445 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 447 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
446 std::sort(words_.begin(), words_.end()); 448 std::sort(words_.begin(), words_.end());
447 Change dictionary_change(custom_words); 449 Change dictionary_change(custom_words);
448 dictionary_change.Sanitize(GetWords()); 450 dictionary_change.Sanitize(GetWords());
449 Apply(dictionary_change); 451 Apply(dictionary_change);
450 Sync(dictionary_change); 452 Sync(dictionary_change);
451 is_loaded_ = true; 453 is_loaded_ = true;
452 FOR_EACH_OBSERVER(Observer, observers_, OnCustomDictionaryLoaded()); 454 FOR_EACH_OBSERVER(Observer, observers_, OnCustomDictionaryLoaded());
453 } 455 }
454 456
455 // TODO(rlp): record metrics on custom word size
456 void SpellcheckCustomDictionary::Apply( 457 void SpellcheckCustomDictionary::Apply(
457 const SpellcheckCustomDictionary::Change& dictionary_change) { 458 const SpellcheckCustomDictionary::Change& dictionary_change) {
458 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 459 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
459 if (!dictionary_change.to_add().empty()) { 460 if (!dictionary_change.to_add().empty()) {
460 words_.insert(words_.end(), 461 words_.insert(words_.end(),
461 dictionary_change.to_add().begin(), 462 dictionary_change.to_add().begin(),
462 dictionary_change.to_add().end()); 463 dictionary_change.to_add().end());
463 } 464 }
464 if (!dictionary_change.to_remove().empty()) { 465 if (!dictionary_change.to_remove().empty()) {
465 std::sort(words_.begin(), words_.end()); 466 std::sort(words_.begin(), words_.end());
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
545 546
546 void SpellcheckCustomDictionary::Notify( 547 void SpellcheckCustomDictionary::Notify(
547 const SpellcheckCustomDictionary::Change& dictionary_change) { 548 const SpellcheckCustomDictionary::Change& dictionary_change) {
548 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 549 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
549 if (!IsLoaded() || dictionary_change.empty()) 550 if (!IsLoaded() || dictionary_change.empty())
550 return; 551 return;
551 FOR_EACH_OBSERVER(Observer, 552 FOR_EACH_OBSERVER(Observer,
552 observers_, 553 observers_,
553 OnCustomDictionaryChanged(dictionary_change)); 554 OnCustomDictionaryChanged(dictionary_change));
554 } 555 }
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/spellchecker/spellcheck_custom_dictionary_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698