| 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 #ifndef COMPONENTS_SPELLCHECK_RENDERER_SPELLCHECK_H_ | 5 #ifndef COMPONENTS_SPELLCHECK_RENDERER_SPELLCHECK_H_ |
| 6 #define COMPONENTS_SPELLCHECK_RENDERER_SPELLCHECK_H_ | 6 #define COMPONENTS_SPELLCHECK_RENDERER_SPELLCHECK_H_ |
| 7 | 7 |
| 8 #include <memory> | 8 #include <memory> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <string> | 10 #include <string> |
| 11 #include <vector> | 11 #include <vector> |
| 12 | 12 |
| 13 #include "base/files/file.h" | 13 #include "base/files/file.h" |
| 14 #include "base/gtest_prod_util.h" | 14 #include "base/gtest_prod_util.h" |
| 15 #include "base/macros.h" | 15 #include "base/macros.h" |
| 16 #include "base/memory/weak_ptr.h" | 16 #include "base/memory/weak_ptr.h" |
| 17 #include "base/strings/string16.h" | 17 #include "base/strings/string16.h" |
| 18 #include "components/spellcheck/common/spellcheck.mojom.h" |
| 18 #include "components/spellcheck/renderer/custom_dictionary_engine.h" | 19 #include "components/spellcheck/renderer/custom_dictionary_engine.h" |
| 19 #include "components/spellcheck/spellcheck_build_features.h" | 20 #include "components/spellcheck/spellcheck_build_features.h" |
| 20 #include "content/public/renderer/render_thread_observer.h" | 21 #include "content/public/renderer/render_thread_observer.h" |
| 22 #include "mojo/public/cpp/bindings/binding_set.h" |
| 21 | 23 |
| 22 struct SpellCheckBDictLanguage; | |
| 23 class SpellcheckLanguage; | 24 class SpellcheckLanguage; |
| 24 struct SpellCheckResult; | 25 struct SpellCheckResult; |
| 25 | 26 |
| 26 namespace blink { | 27 namespace blink { |
| 27 class WebTextCheckingCompletion; | 28 class WebTextCheckingCompletion; |
| 28 struct WebTextCheckingResult; | 29 struct WebTextCheckingResult; |
| 29 template <typename T> class WebVector; | 30 template <typename T> class WebVector; |
| 30 } | 31 } |
| 31 | 32 |
| 32 namespace IPC { | 33 namespace service_manager { |
| 33 class Message; | 34 struct BindSourceInfo; |
| 34 } | 35 } |
| 35 | 36 |
| 36 // TODO(morrita): Needs reorg with SpellCheckProvider. | 37 // TODO(morrita): Needs reorg with SpellCheckProvider. |
| 37 // See http://crbug.com/73699. | 38 // See http://crbug.com/73699. |
| 38 // Shared spellchecking logic/data for a RenderProcess. All RenderViews use | 39 // Shared spellchecking logic/data for a RenderProcess. All RenderViews use |
| 39 // this object to perform spellchecking tasks. | 40 // this object to perform spellchecking tasks. |
| 40 class SpellCheck : public content::RenderThreadObserver, | 41 class SpellCheck : public content::RenderThreadObserver, |
| 41 public base::SupportsWeakPtr<SpellCheck> { | 42 public base::SupportsWeakPtr<SpellCheck>, |
| 43 public spellcheck::mojom::SpellChecker { |
| 42 public: | 44 public: |
| 43 // TODO(groby): I wonder if this can be private, non-mac only. | 45 // TODO(groby): I wonder if this can be private, non-mac only. |
| 44 class SpellcheckRequest; | 46 class SpellcheckRequest; |
| 45 enum ResultFilter { | 47 enum ResultFilter { |
| 46 DO_NOT_MODIFY = 1, // Do not modify results. | 48 DO_NOT_MODIFY = 1, // Do not modify results. |
| 47 USE_NATIVE_CHECKER, // Use native checker to double-check. | 49 USE_NATIVE_CHECKER, // Use native checker to double-check. |
| 48 }; | 50 }; |
| 49 | 51 |
| 50 SpellCheck(); | 52 SpellCheck(); |
| 51 ~SpellCheck() override; | 53 ~SpellCheck() override; |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 RequestSpellCheckMultipleTimesWithoutInitialization); | 116 RequestSpellCheckMultipleTimesWithoutInitialization); |
| 115 | 117 |
| 116 // Evenly fill |optional_suggestions| with a maximum of |kMaxSuggestions| | 118 // Evenly fill |optional_suggestions| with a maximum of |kMaxSuggestions| |
| 117 // suggestions from |suggestions_list|. suggestions_list[i][j] is the j-th | 119 // suggestions from |suggestions_list|. suggestions_list[i][j] is the j-th |
| 118 // suggestion from the i-th language's suggestions. |optional_suggestions| | 120 // suggestion from the i-th language's suggestions. |optional_suggestions| |
| 119 // cannot be null. | 121 // cannot be null. |
| 120 static void FillSuggestions( | 122 static void FillSuggestions( |
| 121 const std::vector<std::vector<base::string16>>& suggestions_list, | 123 const std::vector<std::vector<base::string16>>& suggestions_list, |
| 122 std::vector<base::string16>* optional_suggestions); | 124 std::vector<base::string16>* optional_suggestions); |
| 123 | 125 |
| 124 // RenderThreadObserver implementation: | 126 // Binds requests for the SpellChecker interface. |
| 125 bool OnControlMessageReceived(const IPC::Message& message) override; | 127 void SpellCheckerRequest(const service_manager::BindSourceInfo& source_info, |
| 128 spellcheck::mojom::SpellCheckerRequest request); |
| 126 | 129 |
| 127 // Message handlers. | 130 // spellcheck::mojom::SpellChecker: |
| 128 void OnInit(const std::vector<SpellCheckBDictLanguage>& bdict_languages, | 131 void Initialize( |
| 129 const std::set<std::string>& custom_words); | 132 std::vector<spellcheck::mojom::SpellCheckBDictLanguagePtr> dictionaries, |
| 130 void OnCustomDictionaryChanged(const std::set<std::string>& words_added, | 133 const std::vector<std::string>& custom_words, |
| 131 const std::set<std::string>& words_removed); | 134 bool enable) override; |
| 132 void OnEnableSpellCheck(bool enable); | 135 void CustomDictionaryChanged( |
| 136 const std::vector<std::string>& words_added, |
| 137 const std::vector<std::string>& words_removed) override; |
| 133 | 138 |
| 134 #if !BUILDFLAG(USE_BROWSER_SPELLCHECKER) | 139 #if !BUILDFLAG(USE_BROWSER_SPELLCHECKER) |
| 135 // Posts delayed spellcheck task and clear it if any. | 140 // Posts delayed spellcheck task and clear it if any. |
| 136 // Takes ownership of |request|. | 141 // Takes ownership of |request|. |
| 137 void PostDelayedSpellCheckTask(SpellcheckRequest* request); | 142 void PostDelayedSpellCheckTask(SpellcheckRequest* request); |
| 138 | 143 |
| 139 // Performs spell checking from the request queue. | 144 // Performs spell checking from the request queue. |
| 140 void PerformSpellCheck(SpellcheckRequest* request); | 145 void PerformSpellCheck(SpellcheckRequest* request); |
| 141 | 146 |
| 142 // The parameters of a pending background-spellchecking request. When WebKit | 147 // The parameters of a pending background-spellchecking request. When WebKit |
| 143 // sends a background-spellchecking request before initializing hunspell, | 148 // sends a background-spellchecking request before initializing hunspell, |
| 144 // we save its parameters and start spellchecking after we finish initializing | 149 // we save its parameters and start spellchecking after we finish initializing |
| 145 // hunspell. (When WebKit sends two or more requests, we cancel the previous | 150 // hunspell. (When WebKit sends two or more requests, we cancel the previous |
| 146 // requests so we do not have to use vectors.) | 151 // requests so we do not have to use vectors.) |
| 147 std::unique_ptr<SpellcheckRequest> pending_request_param_; | 152 std::unique_ptr<SpellcheckRequest> pending_request_param_; |
| 148 #endif | 153 #endif |
| 149 | 154 |
| 155 // Bindings for SpellChecker clients. |
| 156 mojo::BindingSet<spellcheck::mojom::SpellChecker> spellchecker_bindings_; |
| 157 |
| 150 // A vector of objects used to actually check spelling, one for each enabled | 158 // A vector of objects used to actually check spelling, one for each enabled |
| 151 // language. | 159 // language. |
| 152 std::vector<std::unique_ptr<SpellcheckLanguage>> languages_; | 160 std::vector<std::unique_ptr<SpellcheckLanguage>> languages_; |
| 153 | 161 |
| 154 // Custom dictionary spelling engine. | 162 // Custom dictionary spelling engine. |
| 155 CustomDictionaryEngine custom_dictionary_; | 163 CustomDictionaryEngine custom_dictionary_; |
| 156 | 164 |
| 157 // Remember state for spellchecking. | 165 // Remember state for spellchecking. |
| 158 bool spellcheck_enabled_; | 166 bool spellcheck_enabled_; |
| 159 | 167 |
| 160 DISALLOW_COPY_AND_ASSIGN(SpellCheck); | 168 DISALLOW_COPY_AND_ASSIGN(SpellCheck); |
| 161 }; | 169 }; |
| 162 | 170 |
| 163 #endif // COMPONENTS_SPELLCHECK_RENDERER_SPELLCHECK_H_ | 171 #endif // COMPONENTS_SPELLCHECK_RENDERER_SPELLCHECK_H_ |
| OLD | NEW |