OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "content/shell/renderer/test_runner/SpellCheckClient.h" | 5 #include "content/shell/renderer/test_runner/SpellCheckClient.h" |
6 | 6 |
7 #include "content/shell/renderer/test_runner/WebTestDelegate.h" | 7 #include "content/shell/renderer/test_runner/WebTestDelegate.h" |
8 #include "content/shell/renderer/test_runner/mock_grammar_check.h" | 8 #include "content/shell/renderer/test_runner/mock_grammar_check.h" |
9 #include "content/shell/renderer/test_runner/web_test_proxy.h" | 9 #include "content/shell/renderer/test_runner/web_test_proxy.h" |
10 #include "third_party/WebKit/public/web/WebTextCheckingCompletion.h" | 10 #include "third_party/WebKit/public/web/WebTextCheckingCompletion.h" |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 | 44 |
45 void SpellCheckClient::setDelegate(WebTestDelegate* delegate) | 45 void SpellCheckClient::setDelegate(WebTestDelegate* delegate) |
46 { | 46 { |
47 m_delegate = delegate; | 47 m_delegate = delegate; |
48 } | 48 } |
49 | 49 |
50 // blink::WebSpellCheckClient | 50 // blink::WebSpellCheckClient |
51 void SpellCheckClient::spellCheck(const WebString& text, int& misspelledOffset,
int& misspelledLength, WebVector<WebString>* optionalSuggestions) | 51 void SpellCheckClient::spellCheck(const WebString& text, int& misspelledOffset,
int& misspelledLength, WebVector<WebString>* optionalSuggestions) |
52 { | 52 { |
53 // Check the spelling of the given text. | 53 // Check the spelling of the given text. |
54 m_spellcheck.spellCheckWord(text, &misspelledOffset, &misspelledLength); | 54 m_spellcheck.SpellCheckWord(text, &misspelledOffset, &misspelledLength); |
55 } | 55 } |
56 | 56 |
57 void SpellCheckClient::checkTextOfParagraph(const WebString& text, WebTextChecki
ngTypeMask mask, WebVector<WebTextCheckingResult>* webResults) | 57 void SpellCheckClient::checkTextOfParagraph(const WebString& text, WebTextChecki
ngTypeMask mask, WebVector<WebTextCheckingResult>* webResults) |
58 { | 58 { |
59 std::vector<WebTextCheckingResult> results; | 59 std::vector<WebTextCheckingResult> results; |
60 if (mask & WebTextCheckingTypeSpelling) { | 60 if (mask & WebTextCheckingTypeSpelling) { |
61 size_t offset = 0; | 61 size_t offset = 0; |
62 base::string16 data = text; | 62 base::string16 data = text; |
63 while (offset < data.length()) { | 63 while (offset < data.length()) { |
64 int misspelledPosition = 0; | 64 int misspelledPosition = 0; |
65 int misspelledLength = 0; | 65 int misspelledLength = 0; |
66 m_spellcheck.spellCheckWord(data.substr(offset), &misspelledPosition
, &misspelledLength); | 66 m_spellcheck.SpellCheckWord( |
| 67 data.substr(offset), &misspelledPosition, &misspelledLength); |
67 if (!misspelledLength) | 68 if (!misspelledLength) |
68 break; | 69 break; |
69 WebTextCheckingResult result; | 70 WebTextCheckingResult result; |
70 result.decoration = WebTextDecorationTypeSpelling; | 71 result.decoration = WebTextDecorationTypeSpelling; |
71 result.location = offset + misspelledPosition; | 72 result.location = offset + misspelledPosition; |
72 result.length = misspelledLength; | 73 result.length = misspelledLength; |
73 results.push_back(result); | 74 results.push_back(result); |
74 offset += misspelledPosition + misspelledLength; | 75 offset += misspelledPosition + misspelledLength; |
75 } | 76 } |
76 } | 77 } |
(...skipping 12 matching lines...) Expand all Loading... |
89 if (completion) | 90 if (completion) |
90 completion->didCancelCheckingText(); | 91 completion->didCancelCheckingText(); |
91 return; | 92 return; |
92 } | 93 } |
93 | 94 |
94 if (m_lastRequestedTextCheckingCompletion) | 95 if (m_lastRequestedTextCheckingCompletion) |
95 m_lastRequestedTextCheckingCompletion->didCancelCheckingText(); | 96 m_lastRequestedTextCheckingCompletion->didCancelCheckingText(); |
96 | 97 |
97 m_lastRequestedTextCheckingCompletion = completion; | 98 m_lastRequestedTextCheckingCompletion = completion; |
98 m_lastRequestedTextCheckString = text; | 99 m_lastRequestedTextCheckString = text; |
99 if (m_spellcheck.hasInCache(text)) | 100 if (m_spellcheck.HasInCache(text)) |
100 finishLastTextCheck(); | 101 finishLastTextCheck(); |
101 else | 102 else |
102 m_delegate->postDelayedTask(new HostMethodTask(this, &SpellCheckClient::
finishLastTextCheck), 0); | 103 m_delegate->postDelayedTask(new HostMethodTask(this, &SpellCheckClient::
finishLastTextCheck), 0); |
103 } | 104 } |
104 | 105 |
105 void SpellCheckClient::finishLastTextCheck() | 106 void SpellCheckClient::finishLastTextCheck() |
106 { | 107 { |
107 if (!m_lastRequestedTextCheckingCompletion) | 108 if (!m_lastRequestedTextCheckingCompletion) |
108 return; | 109 return; |
109 std::vector<WebTextCheckingResult> results; | 110 std::vector<WebTextCheckingResult> results; |
110 int offset = 0; | 111 int offset = 0; |
111 base::string16 text = m_lastRequestedTextCheckString; | 112 base::string16 text = m_lastRequestedTextCheckString; |
112 if (!m_spellcheck.isMultiWordMisspelling(WebString(text), &results)) { | 113 if (!m_spellcheck.IsMultiWordMisspelling(WebString(text), &results)) { |
113 while (text.length()) { | 114 while (text.length()) { |
114 int misspelledPosition = 0; | 115 int misspelledPosition = 0; |
115 int misspelledLength = 0; | 116 int misspelledLength = 0; |
116 m_spellcheck.spellCheckWord(WebString(text), &misspelledPosition, &m
isspelledLength); | 117 m_spellcheck.SpellCheckWord( |
| 118 WebString(text), &misspelledPosition, &misspelledLength); |
117 if (!misspelledLength) | 119 if (!misspelledLength) |
118 break; | 120 break; |
119 WebVector<WebString> suggestions; | 121 WebVector<WebString> suggestions; |
120 m_spellcheck.fillSuggestionList(WebString(text.substr(misspelledPosi
tion, misspelledLength)), &suggestions); | 122 m_spellcheck.FillSuggestionList( |
| 123 WebString(text.substr(misspelledPosition, misspelledLength)), |
| 124 &suggestions); |
121 results.push_back(WebTextCheckingResult(WebTextDecorationTypeSpellin
g, offset + misspelledPosition, misspelledLength, suggestions.isEmpty() ? WebStr
ing() : suggestions[0])); | 125 results.push_back(WebTextCheckingResult(WebTextDecorationTypeSpellin
g, offset + misspelledPosition, misspelledLength, suggestions.isEmpty() ? WebStr
ing() : suggestions[0])); |
122 text = text.substr(misspelledPosition + misspelledLength); | 126 text = text.substr(misspelledPosition + misspelledLength); |
123 offset += misspelledPosition + misspelledLength; | 127 offset += misspelledPosition + misspelledLength; |
124 } | 128 } |
125 MockGrammarCheck::CheckGrammarOfString(m_lastRequestedTextCheckString, &
results); | 129 MockGrammarCheck::CheckGrammarOfString(m_lastRequestedTextCheckString, &
results); |
126 } | 130 } |
127 m_lastRequestedTextCheckingCompletion->didFinishCheckingText(results); | 131 m_lastRequestedTextCheckingCompletion->didFinishCheckingText(results); |
128 m_lastRequestedTextCheckingCompletion = 0; | 132 m_lastRequestedTextCheckingCompletion = 0; |
129 | 133 |
130 m_webTestProxy->PostSpellCheckEvent(WebString("finishLastTextCheck")); | 134 m_webTestProxy->PostSpellCheckEvent(WebString("finishLastTextCheck")); |
131 } | 135 } |
132 | 136 |
133 WebString SpellCheckClient::autoCorrectWord(const WebString&) | 137 WebString SpellCheckClient::autoCorrectWord(const WebString&) |
134 { | 138 { |
135 // Returns an empty string as Mac WebKit ('WebKitSupport/WebEditorClient.mm'
) | 139 // Returns an empty string as Mac WebKit ('WebKitSupport/WebEditorClient.mm'
) |
136 // does. (If this function returns a non-empty string, WebKit replaces the | 140 // does. (If this function returns a non-empty string, WebKit replaces the |
137 // given misspelled string with the result one. This process executes some | 141 // given misspelled string with the result one. This process executes some |
138 // editor commands and causes layout-test failures.) | 142 // editor commands and causes layout-test failures.) |
139 return WebString(); | 143 return WebString(); |
140 } | 144 } |
141 | 145 |
142 } // namespace content | 146 } // namespace content |
OLD | NEW |