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

Side by Side Diff: chrome/renderer/translate_helper.cc

Issue 12209114: Translate: introduce unittest for TranslateHelper (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: add a missing file Created 7 years, 10 months 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) 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 #include "chrome/renderer/translate_helper.h" 5 #include "chrome/renderer/translate_helper.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/compiler_specific.h" 8 #include "base/compiler_specific.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 } 135 }
136 136
137 void TranslateHelper::CancelPendingTranslation() { 137 void TranslateHelper::CancelPendingTranslation() {
138 weak_method_factory_.InvalidateWeakPtrs(); 138 weak_method_factory_.InvalidateWeakPtrs();
139 translation_pending_ = false; 139 translation_pending_ = false;
140 page_id_ = -1; 140 page_id_ = -1;
141 source_lang_.clear(); 141 source_lang_.clear();
142 target_lang_.clear(); 142 target_lang_.clear();
143 } 143 }
144 144
145 // static
Takashi Toyoshima 2013/02/12 06:26:53 Just replace this function to proper position.
146 bool TranslateHelper::IsPageTranslatable(WebDocument* document) {
147 std::vector<WebElement> meta_elements;
148 webkit_glue::GetMetaElementsWithAttribute(document,
149 ASCIIToUTF16("name"),
150 ASCIIToUTF16("google"),
151 &meta_elements);
152 std::vector<WebElement>::const_iterator iter;
153 for (iter = meta_elements.begin(); iter != meta_elements.end(); ++iter) {
154 WebString attribute = iter->getAttribute("value");
155 if (attribute.isNull()) // We support both 'value' and 'content'.
156 attribute = iter->getAttribute("content");
157 if (attribute.isNull())
158 continue;
159 if (LowerCaseEqualsASCII(attribute, "notranslate"))
160 return false;
161 }
162 return true;
163 }
164
165 #if defined(ENABLE_LANGUAGE_DETECTION) 145 #if defined(ENABLE_LANGUAGE_DETECTION)
166 // static 146 // static
167 std::string TranslateHelper::DetermineTextLanguage(const string16& text) { 147 std::string TranslateHelper::DetermineTextLanguage(const string16& text) {
168 std::string language = chrome::kUnknownLanguageCode; 148 std::string language = chrome::kUnknownLanguageCode;
169 int num_languages = 0; 149 int num_languages = 0;
170 int text_bytes = 0; 150 int text_bytes = 0;
171 bool is_reliable = false; 151 bool is_reliable = false;
172 Language cld_language = 152 Language cld_language =
173 DetectLanguageOfUnicodeText(NULL, text.c_str(), true, &is_reliable, 153 DetectLanguageOfUnicodeText(NULL, text.c_str(), true, &is_reliable,
174 &num_languages, NULL, &text_bytes); 154 &num_languages, NULL, &text_bytes);
(...skipping 12 matching lines...) Expand all
187 } 167 }
188 VLOG(9) << "Detected lang_id: " << language << ", from Text:\n" << text 168 VLOG(9) << "Detected lang_id: " << language << ", from Text:\n" << text
189 << "\n*************************************\n"; 169 << "\n*************************************\n";
190 return language; 170 return language;
191 } 171 }
192 #endif // defined(ENABLE_LANGUAGE_DETECTION) 172 #endif // defined(ENABLE_LANGUAGE_DETECTION)
193 173
194 //////////////////////////////////////////////////////////////////////////////// 174 ////////////////////////////////////////////////////////////////////////////////
195 // TranslateHelper, protected: 175 // TranslateHelper, protected:
196 // 176 //
197 // static
198 void TranslateHelper::ConvertLanguageCodeSynonym(std::string* code) {
199 // Apply liner search here because number of items in the list is just four.
200 for (size_t i = 0; i < arraysize(kLanguageCodeSynonyms); ++i) {
201 if (code->compare(kLanguageCodeSynonyms[i].from) == 0) {
202 *code = std::string(kLanguageCodeSynonyms[i].to);
203 break;
204 }
205 }
206 }
207
208 bool TranslateHelper::IsTranslateLibAvailable() { 177 bool TranslateHelper::IsTranslateLibAvailable() {
209 bool lib_available = false; 178 bool lib_available = false;
210 if (!ExecuteScriptAndGetBoolResult( 179 if (!ExecuteScriptAndGetBoolResult(
211 "typeof cr != 'undefined' && typeof cr.googleTranslate != 'undefined' && " 180 "typeof cr != 'undefined' && typeof cr.googleTranslate != 'undefined' && "
212 "typeof cr.googleTranslate.translate == 'function'", &lib_available)) { 181 "typeof cr.googleTranslate.translate == 'function'", &lib_available)) {
213 NOTREACHED(); 182 NOTREACHED();
214 return false; 183 return false;
215 } 184 }
216 return lib_available; 185 return lib_available;
217 } 186 }
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 return lang; 234 return lang;
266 } 235 }
267 236
268 bool TranslateHelper::DontDelayTasks() { 237 bool TranslateHelper::DontDelayTasks() {
269 return false; 238 return false;
270 } 239 }
271 240
272 //////////////////////////////////////////////////////////////////////////////// 241 ////////////////////////////////////////////////////////////////////////////////
273 // TranslateHelper, private: 242 // TranslateHelper, private:
274 // 243 //
244 // static
245 void TranslateHelper::ConvertLanguageCodeSynonym(std::string* code) {
246 // Apply liner search here because number of items in the list is just four.
247 for (size_t i = 0; i < arraysize(kLanguageCodeSynonyms); ++i) {
248 if (code->compare(kLanguageCodeSynonyms[i].from) == 0) {
249 *code = std::string(kLanguageCodeSynonyms[i].to);
250 break;
251 }
252 }
253 }
254
255 // static
256 bool TranslateHelper::IsPageTranslatable(WebDocument* document) {
257 std::vector<WebElement> meta_elements;
258 webkit_glue::GetMetaElementsWithAttribute(document,
259 ASCIIToUTF16("name"),
260 ASCIIToUTF16("google"),
261 &meta_elements);
262 std::vector<WebElement>::const_iterator iter;
263 for (iter = meta_elements.begin(); iter != meta_elements.end(); ++iter) {
264 WebString attribute = iter->getAttribute("value");
265 if (attribute.isNull()) // We support both 'value' and 'content'.
266 attribute = iter->getAttribute("content");
267 if (attribute.isNull())
268 continue;
269 if (LowerCaseEqualsASCII(attribute, "notranslate"))
270 return false;
271 }
272 return true;
273 }
274
275 bool TranslateHelper::OnMessageReceived(const IPC::Message& message) { 275 bool TranslateHelper::OnMessageReceived(const IPC::Message& message) {
276 bool handled = true; 276 bool handled = true;
277 IPC_BEGIN_MESSAGE_MAP(TranslateHelper, message) 277 IPC_BEGIN_MESSAGE_MAP(TranslateHelper, message)
278 IPC_MESSAGE_HANDLER(ChromeViewMsg_TranslatePage, OnTranslatePage) 278 IPC_MESSAGE_HANDLER(ChromeViewMsg_TranslatePage, OnTranslatePage)
279 IPC_MESSAGE_HANDLER(ChromeViewMsg_RevertTranslation, OnRevertTranslation) 279 IPC_MESSAGE_HANDLER(ChromeViewMsg_RevertTranslation, OnRevertTranslation)
280 IPC_MESSAGE_UNHANDLED(handled = false) 280 IPC_MESSAGE_UNHANDLED(handled = false)
281 IPC_END_MESSAGE_MAP() 281 IPC_END_MESSAGE_MAP()
282 return handled; 282 return handled;
283 } 283 }
284 284
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
479 WebView* web_view = render_view()->GetWebView(); 479 WebView* web_view = render_view()->GetWebView();
480 if (!web_view) { 480 if (!web_view) {
481 // When the WebView is going away, the render view should have called 481 // When the WebView is going away, the render view should have called
482 // CancelPendingTranslation() which should have stopped any pending work, so 482 // CancelPendingTranslation() which should have stopped any pending work, so
483 // that case should not happen. 483 // that case should not happen.
484 NOTREACHED(); 484 NOTREACHED();
485 return NULL; 485 return NULL;
486 } 486 }
487 return web_view->mainFrame(); 487 return web_view->mainFrame();
488 } 488 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698