| OLD | NEW |
| 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 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 89 // is invalid too, then clears |custom_words|. Must be called on the file | 89 // is invalid too, then clears |custom_words|. Must be called on the file |
| 90 // thread. | 90 // thread. |
| 91 void LoadDictionaryFileReliably(WordList& custom_words, | 91 void LoadDictionaryFileReliably(WordList& custom_words, |
| 92 const base::FilePath& path) { | 92 const base::FilePath& path) { |
| 93 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 93 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| 94 // Load the contents and verify the checksum. | 94 // Load the contents and verify the checksum. |
| 95 if (LoadFile(path, custom_words) == VALID_CHECKSUM) | 95 if (LoadFile(path, custom_words) == VALID_CHECKSUM) |
| 96 return; | 96 return; |
| 97 // Checksum is not valid. See if there's a backup. | 97 // Checksum is not valid. See if there's a backup. |
| 98 base::FilePath backup = path.AddExtension(BACKUP_EXTENSION); | 98 base::FilePath backup = path.AddExtension(BACKUP_EXTENSION); |
| 99 if (!file_util::PathExists(backup)) | 99 if (!base::PathExists(backup)) |
| 100 return; | 100 return; |
| 101 // Load the backup and verify its checksum. | 101 // Load the backup and verify its checksum. |
| 102 if (LoadFile(backup, custom_words) != VALID_CHECKSUM) | 102 if (LoadFile(backup, custom_words) != VALID_CHECKSUM) |
| 103 return; | 103 return; |
| 104 // Backup checksum is valid. Restore the backup. | 104 // Backup checksum is valid. Restore the backup. |
| 105 base::CopyFile(backup, path); | 105 base::CopyFile(backup, path); |
| 106 } | 106 } |
| 107 | 107 |
| 108 // Backs up the original dictionary, saves |custom_words| and its checksum into | 108 // Backs up the original dictionary, saves |custom_words| and its checksum into |
| 109 // the custom spellcheck dictionary at |path|. | 109 // the custom spellcheck dictionary at |path|. |
| (...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 542 | 542 |
| 543 void SpellcheckCustomDictionary::Notify( | 543 void SpellcheckCustomDictionary::Notify( |
| 544 const SpellcheckCustomDictionary::Change& dictionary_change) { | 544 const SpellcheckCustomDictionary::Change& dictionary_change) { |
| 545 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 545 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 546 if (!IsLoaded() || dictionary_change.empty()) | 546 if (!IsLoaded() || dictionary_change.empty()) |
| 547 return; | 547 return; |
| 548 FOR_EACH_OBSERVER(Observer, | 548 FOR_EACH_OBSERVER(Observer, |
| 549 observers_, | 549 observers_, |
| 550 OnCustomDictionaryChanged(dictionary_change)); | 550 OnCustomDictionaryChanged(dictionary_change)); |
| 551 } | 551 } |
| OLD | NEW |