Chromium Code Reviews| Index: chrome/browser/spellcheck_host.h |
| =================================================================== |
| --- chrome/browser/spellcheck_host.h (revision 0) |
| +++ chrome/browser/spellcheck_host.h (revision 0) |
| @@ -0,0 +1,102 @@ |
| +// Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#ifndef CHROME_BROWSER_SPELLCHECK_HOST_H_ |
| +#define CHROME_BROWSER_SPELLCHECK_HOST_H_ |
| + |
| +#include <string> |
| +#include <vector> |
| + |
| +#include "base/file_descriptor_posix.h" |
| +#include "base/file_path.h" |
| +#include "base/ref_counted.h" |
| +#include "chrome/browser/chrome_thread.h" |
| +#include "chrome/browser/net/url_fetcher.h" |
| + |
| +class SpellCheckHost : public base::RefCountedThreadSafe<SpellCheckHost, |
| + ChromeThread::DeleteOnFileThread>, |
| + public URLFetcher::Delegate { |
| + public: |
| + class Observer { |
| + public: |
| + virtual void SpellCheckHostInitialized() = 0; |
| + }; |
| + |
| + SpellCheckHost(Observer* observer, |
| + const std::string& language, |
| + URLRequestContextGetter* request_context_getter); |
| + |
| + // Clear |observer_|. Used to prevent calling back to a deleted object. |
| + void UnsetObserver(); |
| + |
| + // Add the given word to the custom words list and inform renderer of the |
| + // update. |
| + void AddWord(const std::string& word); |
| + |
| + const base::FileDescriptor& bdict_fd() const { return fd_; }; |
| + |
| + const std::vector<std::string>& custom_words() const { return custom_words_; } |
| + |
| + const std::string& last_added_word() const { return custom_words_.back(); } |
| + |
| + const std::string& language() const { return language_; } |
| + |
| + private: |
| + // These two classes can destruct us. |
| + friend class DeleteTask<SpellCheckHost>; |
|
jam
2009/11/06 01:51:53
nit: order
|
| + friend class ChromeThread; |
| + virtual ~SpellCheckHost(); |
| + |
| + // Load and parse the custom words dictionary and open the bdic file. |
| + // Executed on the file thread. |
| + void Initialize(); |
| + |
| + // Inform |observer_| that initialization has finished. |
| + void InformObserverOfInitialization(); |
| + |
| + // If |bdict_file_| is missing, we attempt to download it. |
| + void DownloadDictionary(); |
| + |
| + // Write a custom dictionary addition to disk. |
| + void WriteWordToCustomDictionary(const std::string& word); |
| + |
| + // URLFetcher::Delegate implementation. Called when we finish downloading the |
| + // spellcheck dictionary; saves the dictionary to disk. |
| + virtual void OnURLFetchComplete(const URLFetcher* source, |
| + const GURL& url, |
| + const URLRequestStatus& status, |
| + int response_code, |
| + const ResponseCookies& cookies, |
| + const std::string& data); |
| + |
| + // May be NULL. |
| + Observer* observer_; |
| + |
| + // The desired location of the dictionary file (whether or not it exists yet). |
| + FilePath bdict_file_; |
| + |
| + // The location of the custom words file. |
| + FilePath custom_dictionary_file_; |
| + |
| + // The language of the dictionary file. |
| + std::string language_; |
| + |
| + // On POSIX, the file descriptor for the dictionary file. |
| + base::FileDescriptor fd_; |
| + |
| + // In-memory cache of the custom words file. |
| + std::vector<std::string> custom_words_; |
| + |
| + // We don't want to attempt to download a missing dictionary file more than |
| + // once. |
| + bool tried_to_download_; |
| + |
| + // Used for downloading the dictionary file. |
| + URLRequestContextGetter* request_context_getter_; |
| + |
| + // Used for downloading the dictionary file. |
| + scoped_ptr<URLFetcher> fetcher_; |
| +}; |
| + |
| +#endif // CHROME_BROWSER_SPELLCHECK_HOST_H_ |
| Property changes on: chrome/browser/spellcheck_host.h |
| ___________________________________________________________________ |
| Added: svn:mergeinfo |
| Added: svn:eol-style |
| + LF |