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_PROVIDER_H_ | 5 #ifndef COMPONENTS_SPELLCHECK_RENDERER_SPELLCHECK_PROVIDER_H_ |
6 #define COMPONENTS_SPELLCHECK_RENDERER_SPELLCHECK_PROVIDER_H_ | 6 #define COMPONENTS_SPELLCHECK_RENDERER_SPELLCHECK_PROVIDER_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
11 #include <vector> | 11 #include <vector> |
12 | 12 |
13 #include "base/id_map.h" | 13 #include "base/id_map.h" |
14 #include "base/macros.h" | 14 #include "base/macros.h" |
15 #include "components/spellcheck/spellcheck_build_features.h" | 15 #include "components/spellcheck/spellcheck_build_features.h" |
16 #include "content/public/renderer/render_view_observer.h" | 16 #include "content/public/renderer/render_view_observer.h" |
17 #include "content/public/renderer/render_view_observer_tracker.h" | 17 #include "content/public/renderer/render_view_observer_tracker.h" |
18 #include "third_party/WebKit/public/web/WebSpellCheckClient.h" | 18 #include "third_party/WebKit/public/web/WebSpellCheckClient.h" |
| 19 #include "third_party/WebKit/public/web/WebTextCheckClient.h" |
19 | 20 |
20 class RenderView; | 21 class RenderView; |
21 class SpellCheck; | 22 class SpellCheck; |
22 struct SpellCheckResult; | 23 struct SpellCheckResult; |
23 | 24 |
24 namespace blink { | 25 namespace blink { |
25 class WebString; | |
26 class WebTextCheckingCompletion; | 26 class WebTextCheckingCompletion; |
27 struct WebTextCheckingResult; | 27 struct WebTextCheckingResult; |
28 } | 28 } |
29 | 29 |
30 // This class deals with invoking browser-side spellcheck mechanism | 30 // This class deals with invoking browser-side spellcheck mechanism |
31 // which is done asynchronously. | 31 // which is done asynchronously. |
| 32 // TODO(xiaochengh): Split this class to implement WebSpellCheckClient and |
| 33 // WebTextCheckClient separately. |
32 class SpellCheckProvider | 34 class SpellCheckProvider |
33 : public content::RenderViewObserver, | 35 : public content::RenderViewObserver, |
34 public content::RenderViewObserverTracker<SpellCheckProvider>, | 36 public content::RenderViewObserverTracker<SpellCheckProvider>, |
35 public blink::WebSpellCheckClient { | 37 public blink::WebSpellCheckClient, |
| 38 public blink::WebTextCheckClient { |
36 public: | 39 public: |
37 using WebTextCheckCompletions = IDMap<blink::WebTextCheckingCompletion*>; | 40 using WebTextCheckCompletions = IDMap<blink::WebTextCheckingCompletion*>; |
38 | 41 |
39 SpellCheckProvider(content::RenderView* render_view, | 42 SpellCheckProvider(content::RenderView* render_view, |
40 SpellCheck* spellcheck); | 43 SpellCheck* spellcheck); |
41 ~SpellCheckProvider() override; | 44 ~SpellCheckProvider() override; |
42 | 45 |
43 // Requests async spell and grammar checker to the platform text | 46 // Requests async spell and grammar checker to the platform text |
44 // checker, which is available on the browser process. The function does not | 47 // checker, which is available on the browser process. The function does not |
45 // have special handling for partial words, as Blink guarantees that no | 48 // have special handling for partial words, as Blink guarantees that no |
(...skipping 21 matching lines...) Expand all Loading... |
67 | 70 |
68 // Tries to satisfy a spell check request from the cache in |last_request_|. | 71 // Tries to satisfy a spell check request from the cache in |last_request_|. |
69 // Returns true (and cancels/finishes the completion) if it can, false | 72 // Returns true (and cancels/finishes the completion) if it can, false |
70 // if the provider should forward the query on. | 73 // if the provider should forward the query on. |
71 bool SatisfyRequestFromCache(const base::string16& text, | 74 bool SatisfyRequestFromCache(const base::string16& text, |
72 blink::WebTextCheckingCompletion* completion); | 75 blink::WebTextCheckingCompletion* completion); |
73 | 76 |
74 // RenderViewObserver implementation. | 77 // RenderViewObserver implementation. |
75 void OnDestruct() override; | 78 void OnDestruct() override; |
76 | 79 |
77 // blink::WebSpellCheckClient implementation. | 80 // blink::WebTextCheckClient implementation. |
78 void checkSpelling( | 81 void checkSpelling( |
79 const blink::WebString& text, | 82 const blink::WebString& text, |
80 int& offset, | 83 int& offset, |
81 int& length, | 84 int& length, |
82 blink::WebVector<blink::WebString>* optional_suggestions) override; | 85 blink::WebVector<blink::WebString>* optional_suggestions) override; |
83 | |
84 void requestCheckingOfText( | 86 void requestCheckingOfText( |
85 const blink::WebString& text, | 87 const blink::WebString& text, |
86 blink::WebTextCheckingCompletion* completion) override; | 88 blink::WebTextCheckingCompletion* completion) override; |
| 89 void cancelAllPendingRequests() override; |
87 | 90 |
88 void cancelAllPendingRequests() override; | 91 // blink::WebSpellCheckClient implementation. |
89 void showSpellingUI(bool show) override; | 92 void showSpellingUI(bool show) override; |
90 bool isShowingSpellingUI() override; | 93 bool isShowingSpellingUI() override; |
91 void updateSpellingUIWithMisspelledWord( | 94 void updateSpellingUIWithMisspelledWord( |
92 const blink::WebString& word) override; | 95 const blink::WebString& word) override; |
93 | 96 |
94 #if !BUILDFLAG(USE_BROWSER_SPELLCHECKER) | 97 #if !BUILDFLAG(USE_BROWSER_SPELLCHECKER) |
95 void OnRespondSpellingService( | 98 void OnRespondSpellingService( |
96 int identifier, | 99 int identifier, |
97 bool succeeded, | 100 bool succeeded, |
98 const base::string16& text, | 101 const base::string16& text, |
(...skipping 24 matching lines...) Expand all Loading... |
123 // True if the browser is showing the spelling panel for us. | 126 // True if the browser is showing the spelling panel for us. |
124 bool spelling_panel_visible_; | 127 bool spelling_panel_visible_; |
125 | 128 |
126 // Weak pointer to shared (per RenderView) spellcheck data. | 129 // Weak pointer to shared (per RenderView) spellcheck data. |
127 SpellCheck* spellcheck_; | 130 SpellCheck* spellcheck_; |
128 | 131 |
129 DISALLOW_COPY_AND_ASSIGN(SpellCheckProvider); | 132 DISALLOW_COPY_AND_ASSIGN(SpellCheckProvider); |
130 }; | 133 }; |
131 | 134 |
132 #endif // COMPONENTS_SPELLCHECK_RENDERER_SPELLCHECK_PROVIDER_H_ | 135 #endif // COMPONENTS_SPELLCHECK_RENDERER_SPELLCHECK_PROVIDER_H_ |
OLD | NEW |