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

Side by Side Diff: chrome/browser/spellcheck_host.h

Issue 397017: reland 31875. Revert was:... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 #ifndef CHROME_BROWSER_SPELLCHECK_HOST_H_ 5 #ifndef CHROME_BROWSER_SPELLCHECK_HOST_H_
6 #define CHROME_BROWSER_SPELLCHECK_HOST_H_ 6 #define CHROME_BROWSER_SPELLCHECK_HOST_H_
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/file_descriptor_posix.h"
12 #include "base/file_path.h" 11 #include "base/file_path.h"
12 #include "base/platform_file.h"
13 #include "base/ref_counted.h" 13 #include "base/ref_counted.h"
14 #include "chrome/browser/chrome_thread.h" 14 #include "chrome/browser/chrome_thread.h"
15 #include "chrome/browser/net/url_fetcher.h" 15 #include "chrome/browser/net/url_fetcher.h"
16 #include "chrome/browser/net/url_request_context_getter.h" 16 #include "chrome/browser/net/url_request_context_getter.h"
17 17
18 class SpellCheckHost : public base::RefCountedThreadSafe<SpellCheckHost, 18 class SpellCheckHost : public base::RefCountedThreadSafe<SpellCheckHost,
19 ChromeThread::DeleteOnFileThread>, 19 ChromeThread::DeleteOnFileThread>,
20 public URLFetcher::Delegate { 20 public URLFetcher::Delegate {
21 public: 21 public:
22 class Observer { 22 class Observer {
23 public: 23 public:
24 virtual void SpellCheckHostInitialized() = 0; 24 virtual void SpellCheckHostInitialized() = 0;
25 }; 25 };
26 26
27 SpellCheckHost(Observer* observer, 27 SpellCheckHost(Observer* observer,
28 const std::string& language, 28 const std::string& language,
29 URLRequestContextGetter* request_context_getter); 29 URLRequestContextGetter* request_context_getter);
30 30
31 void Initialize(); 31 void Initialize();
32 32
33 // Clear |observer_|. Used to prevent calling back to a deleted object. 33 // Clear |observer_|. Used to prevent calling back to a deleted object.
34 void UnsetObserver(); 34 void UnsetObserver();
35 35
36 // Add the given word to the custom words list and inform renderer of the 36 // Add the given word to the custom words list and inform renderer of the
37 // update. 37 // update.
38 void AddWord(const std::string& word); 38 void AddWord(const std::string& word);
39 39
40 const base::FileDescriptor& bdict_fd() const { return fd_; }; 40 const base::PlatformFile& bdict_file() const { return file_; }
41 41
42 const std::vector<std::string>& custom_words() const { return custom_words_; } 42 const std::vector<std::string>& custom_words() const { return custom_words_; }
43 43
44 const std::string& last_added_word() const { return custom_words_.back(); } 44 const std::string& last_added_word() const { return custom_words_.back(); }
45 45
46 const std::string& language() const { return language_; } 46 const std::string& language() const { return language_; }
47 47
48 private: 48 private:
49 // These two classes can destruct us. 49 // These two classes can destruct us.
50 friend class ChromeThread; 50 friend class ChromeThread;
51 friend class DeleteTask<SpellCheckHost>; 51 friend class DeleteTask<SpellCheckHost>;
52 52
53 virtual ~SpellCheckHost(); 53 virtual ~SpellCheckHost();
54 54
55 // Figure out the location for the dictionary. This is only non-trivial for
56 // Windows:
57 // The default place whether the spellcheck dictionary can reside is
58 // chrome::DIR_APP_DICTIONARIES. However, for systemwide installations,
59 // this directory may not have permissions for download. In that case, the
60 // alternate directory for download is chrome::DIR_USER_DATA.
61 void InitializeDictionaryLocation();
62
55 // Load and parse the custom words dictionary and open the bdic file. 63 // Load and parse the custom words dictionary and open the bdic file.
56 // Executed on the file thread. 64 // Executed on the file thread.
57 void InitializeInternal(); 65 void InitializeInternal();
58 66
59 // Inform |observer_| that initialization has finished. 67 // Inform |observer_| that initialization has finished.
60 void InformObserverOfInitialization(); 68 void InformObserverOfInitialization();
61 69
62 // If |bdict_file_| is missing, we attempt to download it. 70 // If |bdict_file_| is missing, we attempt to download it.
63 void DownloadDictionary(); 71 void DownloadDictionary();
64 72
65 // Write a custom dictionary addition to disk. 73 // Write a custom dictionary addition to disk.
66 void WriteWordToCustomDictionary(const std::string& word); 74 void WriteWordToCustomDictionary(const std::string& word);
67 75
68 // URLFetcher::Delegate implementation. Called when we finish downloading the 76 // URLFetcher::Delegate implementation. Called when we finish downloading the
69 // spellcheck dictionary; saves the dictionary to disk. 77 // spellcheck dictionary; saves the dictionary to |data_|.
70 virtual void OnURLFetchComplete(const URLFetcher* source, 78 virtual void OnURLFetchComplete(const URLFetcher* source,
71 const GURL& url, 79 const GURL& url,
72 const URLRequestStatus& status, 80 const URLRequestStatus& status,
73 int response_code, 81 int response_code,
74 const ResponseCookies& cookies, 82 const ResponseCookies& cookies,
75 const std::string& data); 83 const std::string& data);
76 84
77 // May be NULL. 85 // May be NULL.
78 Observer* observer_; 86 Observer* observer_;
79 87
80 // The desired location of the dictionary file (whether or not it exists yet). 88 // The desired location of the dictionary file (whether or not t exists yet).
81 FilePath bdict_file_; 89 FilePath bdict_file_path_;
82 90
83 // The location of the custom words file. 91 // The location of the custom words file.
84 FilePath custom_dictionary_file_; 92 FilePath custom_dictionary_file_;
85 93
86 // The language of the dictionary file. 94 // The language of the dictionary file.
87 std::string language_; 95 std::string language_;
88 96
89 // On POSIX, the file descriptor for the dictionary file. 97 // The file descriptor/handle for the dictionary file.
90 base::FileDescriptor fd_; 98 base::PlatformFile file_;
91 99
92 // In-memory cache of the custom words file. 100 // In-memory cache of the custom words file.
93 std::vector<std::string> custom_words_; 101 std::vector<std::string> custom_words_;
94 102
95 // We don't want to attempt to download a missing dictionary file more than 103 // We don't want to attempt to download a missing dictionary file more than
96 // once. 104 // once.
97 bool tried_to_download_; 105 bool tried_to_download_;
98 106
99 // Used for downloading the dictionary file. 107 // Used for downloading the dictionary file.
100 scoped_refptr<URLRequestContextGetter> request_context_getter_; 108 scoped_refptr<URLRequestContextGetter> request_context_getter_;
101 109
102 // Used for downloading the dictionary file. 110 // Used for downloading the dictionary file.
103 scoped_ptr<URLFetcher> fetcher_; 111 scoped_ptr<URLFetcher> fetcher_;
104 }; 112 };
105 113
106 #endif // CHROME_BROWSER_SPELLCHECK_HOST_H_ 114 #endif // CHROME_BROWSER_SPELLCHECK_HOST_H_
OLDNEW
« no previous file with comments | « chrome/browser/renderer_host/browser_render_process_host.cc ('k') | chrome/browser/spellcheck_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698