OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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_host_impl.h" | 5 #include "chrome/browser/spellchecker/spellcheck_host_impl.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 // We download from the ui thread because we need to know that | 232 // We download from the ui thread because we need to know that |
233 // |request_context_getter_| is still valid before initiating the download. | 233 // |request_context_getter_| is still valid before initiating the download. |
234 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 234 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
235 NewRunnableMethod(this, &SpellCheckHostImpl::DownloadDictionary)); | 235 NewRunnableMethod(this, &SpellCheckHostImpl::DownloadDictionary)); |
236 return; | 236 return; |
237 } | 237 } |
238 | 238 |
239 request_context_getter_ = NULL; | 239 request_context_getter_ = NULL; |
240 | 240 |
241 scoped_ptr<CustomWordList> custom_words(new CustomWordList()); | 241 scoped_ptr<CustomWordList> custom_words(new CustomWordList()); |
242 if (file_ != base::kInvalidPlatformFileValue) { | 242 if (file_ != base::kInvalidPlatformFileValue) |
243 // Load custom dictionary. | 243 LoadCustomDictionary(custom_words.get()); |
244 std::string contents; | |
245 file_util::ReadFileToString(custom_dictionary_file_, &contents); | |
246 CustomWordList list_of_words; | |
247 base::SplitString(contents, '\n', &list_of_words); | |
248 for (size_t i = 0; i < list_of_words.size(); ++i) | |
249 custom_words->push_back(list_of_words[i]); | |
250 } | |
251 | 244 |
252 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 245 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
253 NewRunnableMethod( | 246 NewRunnableMethod( |
254 this, | 247 this, |
255 &SpellCheckHostImpl::InformProfileOfInitializationWithCustomWords, | 248 &SpellCheckHostImpl::InformProfileOfInitializationWithCustomWords, |
256 custom_words.release())); | 249 custom_words.release())); |
257 } | 250 } |
258 | 251 |
259 void SpellCheckHostImpl::InitializeOnFileThread() { | 252 void SpellCheckHostImpl::InitializeOnFileThread() { |
260 DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 253 DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 } | 296 } |
304 GURL url = GURL(std::string(kDownloadServerUrl) + | 297 GURL url = GURL(std::string(kDownloadServerUrl) + |
305 StringToLowerASCII(bdict_file)); | 298 StringToLowerASCII(bdict_file)); |
306 fetcher_.reset(new URLFetcher(url, URLFetcher::GET, this)); | 299 fetcher_.reset(new URLFetcher(url, URLFetcher::GET, this)); |
307 fetcher_->set_request_context(request_context_getter_); | 300 fetcher_->set_request_context(request_context_getter_); |
308 tried_to_download_ = true; | 301 tried_to_download_ = true; |
309 fetcher_->Start(); | 302 fetcher_->Start(); |
310 request_context_getter_ = NULL; | 303 request_context_getter_ = NULL; |
311 } | 304 } |
312 | 305 |
| 306 void SpellCheckHostImpl::LoadCustomDictionary(CustomWordList* custom_words) { |
| 307 if (!custom_words) |
| 308 return; |
| 309 |
| 310 // Load custom dictionary for profile. |
| 311 if (profile_) |
| 312 profile_->LoadCustomDictionary(custom_words); |
| 313 |
| 314 // Load custom dictionary. |
| 315 std::string contents; |
| 316 file_util::ReadFileToString(custom_dictionary_file_, &contents); |
| 317 if (contents.empty()) |
| 318 return; |
| 319 |
| 320 CustomWordList list_of_words; |
| 321 base::SplitString(contents, '\n', &list_of_words); |
| 322 for (size_t i = 0; i < list_of_words.size(); ++i) { |
| 323 if (list_of_words[i] != "") |
| 324 custom_words->push_back(list_of_words[i]); |
| 325 } |
| 326 } |
| 327 |
313 void SpellCheckHostImpl::WriteWordToCustomDictionary(const std::string& word) { | 328 void SpellCheckHostImpl::WriteWordToCustomDictionary(const std::string& word) { |
314 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 329 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
315 | 330 |
316 // Stored in UTF-8. | 331 if (profile_) |
317 std::string word_to_add(word + "\n"); | 332 profile_->WriteWordToCustomDictionary(word); |
318 FILE* f = file_util::OpenFile(custom_dictionary_file_, "a+"); | |
319 if (f) | |
320 fputs(word_to_add.c_str(), f); | |
321 file_util::CloseFile(f); | |
322 } | 333 } |
323 | 334 |
324 void SpellCheckHostImpl::OnURLFetchComplete(const URLFetcher* source) { | 335 void SpellCheckHostImpl::OnURLFetchComplete(const URLFetcher* source) { |
325 DCHECK(source); | 336 DCHECK(source); |
326 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 337 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
327 scoped_ptr<URLFetcher> fetcher_destructor(fetcher_.release()); | 338 scoped_ptr<URLFetcher> fetcher_destructor(fetcher_.release()); |
328 | 339 |
329 if ((source->response_code() / 100) != 2) { | 340 if ((source->response_code() / 100) != 2) { |
330 // Initialize will not try to download the file a second time. | 341 // Initialize will not try to download the file a second time. |
331 LOG(ERROR) << "Failure to download dictionary."; | 342 LOG(ERROR) << "Failure to download dictionary."; |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
431 return file_; | 442 return file_; |
432 } | 443 } |
433 | 444 |
434 const std::string& SpellCheckHostImpl::GetLanguage() const { | 445 const std::string& SpellCheckHostImpl::GetLanguage() const { |
435 return language_; | 446 return language_; |
436 } | 447 } |
437 | 448 |
438 bool SpellCheckHostImpl::IsUsingPlatformChecker() const { | 449 bool SpellCheckHostImpl::IsUsingPlatformChecker() const { |
439 return use_platform_spellchecker_; | 450 return use_platform_spellchecker_; |
440 } | 451 } |
OLD | NEW |