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

Side by Side Diff: chrome/browser/translate/translate_manager_render_view_host_unittest.cc

Issue 378253002: Fix translate namespace (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing android build errors Created 6 years, 5 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <algorithm> 5 #include <algorithm>
6 #include <set> 6 #include <set>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 bool page_translatable) { 97 bool page_translatable) {
98 if (rvh()->GetMainFrame()->GetLastCommittedURL() == url) 98 if (rvh()->GetMainFrame()->GetLastCommittedURL() == url)
99 Reload(); 99 Reload();
100 else 100 else
101 NavigateAndCommit(url); 101 NavigateAndCommit(url);
102 SimulateOnTranslateLanguageDetermined(lang, page_translatable); 102 SimulateOnTranslateLanguageDetermined(lang, page_translatable);
103 } 103 }
104 104
105 void SimulateOnTranslateLanguageDetermined(const std::string& lang, 105 void SimulateOnTranslateLanguageDetermined(const std::string& lang,
106 bool page_translatable) { 106 bool page_translatable) {
107 LanguageDetectionDetails details; 107 translate::LanguageDetectionDetails details;
108 details.adopted_language = lang; 108 details.adopted_language = lang;
109 content::RenderViewHostTester::TestOnMessageReceived( 109 content::RenderViewHostTester::TestOnMessageReceived(
110 rvh(), 110 rvh(),
111 ChromeViewHostMsg_TranslateLanguageDetermined( 111 ChromeViewHostMsg_TranslateLanguageDetermined(
112 0, details, page_translatable)); 112 0, details, page_translatable));
113 } 113 }
114 114
115 void SimulateOnPageTranslated(int routing_id, 115 void SimulateOnPageTranslated(int routing_id,
116 const std::string& source_lang, 116 const std::string& source_lang,
117 const std::string& target_lang, 117 const std::string& target_lang,
118 TranslateErrors::Type error) { 118 translate::TranslateErrors::Type error) {
119 content::RenderViewHostTester::TestOnMessageReceived( 119 content::RenderViewHostTester::TestOnMessageReceived(
120 rvh(), 120 rvh(),
121 ChromeViewHostMsg_PageTranslated( 121 ChromeViewHostMsg_PageTranslated(
122 routing_id, source_lang, target_lang, error)); 122 routing_id, source_lang, target_lang, error));
123 } 123 }
124 124
125 void SimulateOnPageTranslated(const std::string& source_lang, 125 void SimulateOnPageTranslated(const std::string& source_lang,
126 const std::string& target_lang) { 126 const std::string& target_lang) {
127 SimulateOnPageTranslated( 127 SimulateOnPageTranslated(
128 0, source_lang, target_lang, TranslateErrors::NONE); 128 0, source_lang, target_lang, translate::TranslateErrors::NONE);
129 } 129 }
130 130
131 bool GetTranslateMessage(std::string* original_lang, 131 bool GetTranslateMessage(std::string* original_lang,
132 std::string* target_lang) { 132 std::string* target_lang) {
133 const IPC::Message* message = process()->sink().GetFirstMessageMatching( 133 const IPC::Message* message = process()->sink().GetFirstMessageMatching(
134 ChromeViewMsg_TranslatePage::ID); 134 ChromeViewMsg_TranslatePage::ID);
135 if (!message) 135 if (!message)
136 return false; 136 return false;
137 Tuple4<int, std::string, std::string, std::string> translate_param; 137 Tuple4<int, std::string, std::string, std::string> translate_param;
138 ChromeViewMsg_TranslatePage::Read(message, &translate_param); 138 ChromeViewMsg_TranslatePage::Read(message, &translate_param);
139 // Ignore translate_param.a which is the page seq no. 139 // Ignore translate_param.a which is the page seq no.
140 // Ignore translate_param.b which is the script injected in the page. 140 // Ignore translate_param.b which is the script injected in the page.
141 if (original_lang) 141 if (original_lang)
142 *original_lang = translate_param.c; 142 *original_lang = translate_param.c;
143 if (target_lang) 143 if (target_lang)
144 *target_lang = translate_param.d; 144 *target_lang = translate_param.d;
145 return true; 145 return true;
146 } 146 }
147 147
148 InfoBarService* infobar_service() { 148 InfoBarService* infobar_service() {
149 return InfoBarService::FromWebContents(web_contents()); 149 return InfoBarService::FromWebContents(web_contents());
150 } 150 }
151 151
152 // Returns the translate infobar if there is 1 infobar and it is a translate 152 // Returns the translate infobar if there is 1 infobar and it is a translate
153 // infobar. 153 // infobar.
154 TranslateInfoBarDelegate* GetTranslateInfoBar() { 154 translate::TranslateInfoBarDelegate* GetTranslateInfoBar() {
155 return (infobar_service()->infobar_count() == 1) ? 155 return (infobar_service()->infobar_count() == 1) ?
156 infobar_service()->infobar_at(0)->delegate()-> 156 infobar_service()->infobar_at(0)->delegate()->
157 AsTranslateInfoBarDelegate() : 157 AsTranslateInfoBarDelegate() :
158 NULL; 158 NULL;
159 } 159 }
160 160
161 // If there is 1 infobar and it is a translate infobar, closes it and returns 161 // If there is 1 infobar and it is a translate infobar, closes it and returns
162 // true. Returns false otherwise. 162 // true. Returns false otherwise.
163 bool CloseTranslateInfoBar() { 163 bool CloseTranslateInfoBar() {
164 infobars::InfoBarDelegate* infobar = GetTranslateInfoBar(); 164 infobars::InfoBarDelegate* infobar = GetTranslateInfoBar();
165 if (!infobar) 165 if (!infobar)
166 return false; 166 return false;
167 infobar->InfoBarDismissed(); // Simulates closing the infobar. 167 infobar->InfoBarDismissed(); // Simulates closing the infobar.
168 infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0)); 168 infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0));
169 return true; 169 return true;
170 } 170 }
171 171
172 // Checks whether |infobar| has been removed and clears the removed infobar 172 // Checks whether |infobar| has been removed and clears the removed infobar
173 // list. 173 // list.
174 bool CheckInfoBarRemovedAndReset(infobars::InfoBarDelegate* delegate) { 174 bool CheckInfoBarRemovedAndReset(infobars::InfoBarDelegate* delegate) {
175 bool found = removed_infobars_.count(delegate) != 0; 175 bool found = removed_infobars_.count(delegate) != 0;
176 removed_infobars_.clear(); 176 removed_infobars_.clear();
177 return found; 177 return found;
178 } 178 }
179 179
180 void ExpireTranslateScriptImmediately() { 180 void ExpireTranslateScriptImmediately() {
181 TranslateDownloadManager::GetInstance()->SetTranslateScriptExpirationDelay( 181 translate::TranslateDownloadManager::GetInstance()
182 0); 182 ->SetTranslateScriptExpirationDelay(0);
183 } 183 }
184 184
185 // If there is 1 infobar and it is a translate infobar, deny translation and 185 // If there is 1 infobar and it is a translate infobar, deny translation and
186 // returns true. Returns false otherwise. 186 // returns true. Returns false otherwise.
187 bool DenyTranslation() { 187 bool DenyTranslation() {
188 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 188 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
189 if (!infobar) 189 if (!infobar)
190 return false; 190 return false;
191 infobar->TranslationDeclined(); 191 infobar->TranslationDeclined();
192 infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0)); 192 infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0));
193 return true; 193 return true;
194 } 194 }
195 195
196 void ReloadAndWait(bool successful_reload) { 196 void ReloadAndWait(bool successful_reload) {
197 NavEntryCommittedObserver nav_observer(web_contents()); 197 NavEntryCommittedObserver nav_observer(web_contents());
198 if (successful_reload) 198 if (successful_reload)
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 243
244 MOCK_METHOD1(OnPreferenceChanged, void(const std::string&)); 244 MOCK_METHOD1(OnPreferenceChanged, void(const std::string&));
245 245
246 protected: 246 protected:
247 virtual void SetUp() { 247 virtual void SetUp() {
248 TranslateService::InitializeForTesting(); 248 TranslateService::InitializeForTesting();
249 249
250 // Clears the translate script so it is fetched everytime and sets the 250 // Clears the translate script so it is fetched everytime and sets the
251 // expiration delay to a large value by default (in case it was zeroed in a 251 // expiration delay to a large value by default (in case it was zeroed in a
252 // previous test). 252 // previous test).
253 TranslateDownloadManager* download_manager = 253 translate::TranslateDownloadManager* download_manager =
254 TranslateDownloadManager::GetInstance(); 254 translate::TranslateDownloadManager::GetInstance();
255 download_manager->ClearTranslateScriptForTesting(); 255 download_manager->ClearTranslateScriptForTesting();
256 download_manager->SetTranslateScriptExpirationDelay(60 * 60 * 1000); 256 download_manager->SetTranslateScriptExpirationDelay(60 * 60 * 1000);
257 257
258 ChromeRenderViewHostTestHarness::SetUp(); 258 ChromeRenderViewHostTestHarness::SetUp();
259 InfoBarService::CreateForWebContents(web_contents()); 259 InfoBarService::CreateForWebContents(web_contents());
260 ChromeTranslateClient::CreateForWebContents(web_contents()); 260 ChromeTranslateClient::CreateForWebContents(web_contents());
261 ChromeTranslateClient::FromWebContents(web_contents()) 261 ChromeTranslateClient::FromWebContents(web_contents())
262 ->set_translate_max_reload_attempts(0); 262 ->set_translate_max_reload_attempts(0);
263 263
264 notification_registrar_.Add( 264 notification_registrar_.Add(
265 this, 265 this,
266 chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, 266 chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED,
267 content::Source<InfoBarService>(infobar_service())); 267 content::Source<InfoBarService>(infobar_service()));
268 } 268 }
269 269
270 virtual void TearDown() { 270 virtual void TearDown() {
271 process()->sink().ClearMessages(); 271 process()->sink().ClearMessages();
272 272
273 notification_registrar_.Remove( 273 notification_registrar_.Remove(
274 this, 274 this,
275 chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, 275 chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED,
276 content::Source<InfoBarService>(infobar_service())); 276 content::Source<InfoBarService>(infobar_service()));
277 277
278 ChromeRenderViewHostTestHarness::TearDown(); 278 ChromeRenderViewHostTestHarness::TearDown();
279 TranslateService::ShutdownForTesting(); 279 TranslateService::ShutdownForTesting();
280 } 280 }
281 281
282 void SetApplicationLocale(const std::string& locale) { 282 void SetApplicationLocale(const std::string& locale) {
283 g_browser_process->SetApplicationLocale(locale); 283 g_browser_process->SetApplicationLocale(locale);
284 TranslateDownloadManager::GetInstance()->set_application_locale( 284 translate::TranslateDownloadManager::GetInstance()->set_application_locale(
285 g_browser_process->GetApplicationLocale()); 285 g_browser_process->GetApplicationLocale());
286 } 286 }
287 287
288 void SimulateTranslateScriptURLFetch(bool success) { 288 void SimulateTranslateScriptURLFetch(bool success) {
289 net::TestURLFetcher* fetcher = 289 net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(
290 url_fetcher_factory_.GetFetcherByID(TranslateScript::kFetcherId); 290 translate::TranslateScript::kFetcherId);
291 ASSERT_TRUE(fetcher); 291 ASSERT_TRUE(fetcher);
292 net::URLRequestStatus status; 292 net::URLRequestStatus status;
293 status.set_status(success ? net::URLRequestStatus::SUCCESS 293 status.set_status(success ? net::URLRequestStatus::SUCCESS
294 : net::URLRequestStatus::FAILED); 294 : net::URLRequestStatus::FAILED);
295 fetcher->set_url(fetcher->GetOriginalURL()); 295 fetcher->set_url(fetcher->GetOriginalURL());
296 fetcher->set_status(status); 296 fetcher->set_status(status);
297 fetcher->set_response_code(success ? 200 : 500); 297 fetcher->set_response_code(success ? 200 : 500);
298 fetcher->delegate()->OnURLFetchComplete(fetcher); 298 fetcher->delegate()->OnURLFetchComplete(fetcher);
299 } 299 }
300 300
301 void SimulateSupportedLanguagesURLFetch( 301 void SimulateSupportedLanguagesURLFetch(
302 bool success, 302 bool success,
303 const std::vector<std::string>& languages, 303 const std::vector<std::string>& languages,
304 bool use_alpha_languages, 304 bool use_alpha_languages,
305 const std::vector<std::string>& alpha_languages) { 305 const std::vector<std::string>& alpha_languages) {
306 net::URLRequestStatus status; 306 net::URLRequestStatus status;
307 status.set_status(success ? net::URLRequestStatus::SUCCESS 307 status.set_status(success ? net::URLRequestStatus::SUCCESS
308 : net::URLRequestStatus::FAILED); 308 : net::URLRequestStatus::FAILED);
309 309
310 std::string data; 310 std::string data;
311 if (success) { 311 if (success) {
312 data = 312 data = base::StringPrintf(
313 base::StringPrintf("%s{\"sl\": {\"bla\": \"bla\"}, \"%s\": {", 313 "%s{\"sl\": {\"bla\": \"bla\"}, \"%s\": {",
314 TranslateLanguageList::kLanguageListCallbackName, 314 translate::TranslateLanguageList::kLanguageListCallbackName,
315 TranslateLanguageList::kTargetLanguagesKey); 315 translate::TranslateLanguageList::kTargetLanguagesKey);
316 const char* comma = ""; 316 const char* comma = "";
317 for (size_t i = 0; i < languages.size(); ++i) { 317 for (size_t i = 0; i < languages.size(); ++i) {
318 data += base::StringPrintf( 318 data += base::StringPrintf(
319 "%s\"%s\": \"UnusedFullName\"", comma, languages[i].c_str()); 319 "%s\"%s\": \"UnusedFullName\"", comma, languages[i].c_str());
320 if (i == 0) 320 if (i == 0)
321 comma = ","; 321 comma = ",";
322 } 322 }
323 323
324 if (use_alpha_languages) { 324 if (use_alpha_languages) {
325 data += base::StringPrintf("},\"%s\": {", 325 data += base::StringPrintf(
326 TranslateLanguageList::kAlphaLanguagesKey); 326 "},\"%s\": {",
327 translate::TranslateLanguageList::kAlphaLanguagesKey);
327 comma = ""; 328 comma = "";
328 for (size_t i = 0; i < alpha_languages.size(); ++i) { 329 for (size_t i = 0; i < alpha_languages.size(); ++i) {
329 data += base::StringPrintf( 330 data += base::StringPrintf(
330 "%s\"%s\": 1", comma, alpha_languages[i].c_str()); 331 "%s\"%s\": 1", comma, alpha_languages[i].c_str());
331 if (i == 0) 332 if (i == 0)
332 comma = ","; 333 comma = ",";
333 } 334 }
334 } 335 }
335 336
336 data += "}})"; 337 data += "}})";
337 } 338 }
338 net::TestURLFetcher* fetcher = 339 net::TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(
339 url_fetcher_factory_.GetFetcherByID(TranslateLanguageList::kFetcherId); 340 translate::TranslateLanguageList::kFetcherId);
340 ASSERT_TRUE(fetcher != NULL); 341 ASSERT_TRUE(fetcher != NULL);
341 fetcher->set_url(fetcher->GetOriginalURL()); 342 fetcher->set_url(fetcher->GetOriginalURL());
342 fetcher->set_status(status); 343 fetcher->set_status(status);
343 fetcher->set_response_code(success ? 200 : 500); 344 fetcher->set_response_code(success ? 200 : 500);
344 fetcher->SetResponseString(data); 345 fetcher->SetResponseString(data);
345 fetcher->delegate()->OnURLFetchComplete(fetcher); 346 fetcher->delegate()->OnURLFetchComplete(fetcher);
346 } 347 }
347 348
348 void SetPrefObserverExpectation(const char* path) { 349 void SetPrefObserverExpectation(const char* path) {
349 EXPECT_CALL(*this, OnPreferenceChanged(std::string(path))); 350 EXPECT_CALL(*this, OnPreferenceChanged(std::string(path)));
350 } 351 }
351 352
352 PrefChangeRegistrar::NamedChangeCallback pref_callback_; 353 PrefChangeRegistrar::NamedChangeCallback pref_callback_;
353 354
354 private: 355 private:
355 content::NotificationRegistrar notification_registrar_; 356 content::NotificationRegistrar notification_registrar_;
356 net::TestURLFetcherFactory url_fetcher_factory_; 357 net::TestURLFetcherFactory url_fetcher_factory_;
357 358
358 // The infobars that have been removed. 359 // The infobars that have been removed.
359 // WARNING: the pointers point to deleted objects, use only for comparison. 360 // WARNING: the pointers point to deleted objects, use only for comparison.
360 std::set<infobars::InfoBarDelegate*> removed_infobars_; 361 std::set<infobars::InfoBarDelegate*> removed_infobars_;
361 362
362 DISALLOW_COPY_AND_ASSIGN(TranslateManagerRenderViewHostTest); 363 DISALLOW_COPY_AND_ASSIGN(TranslateManagerRenderViewHostTest);
363 }; 364 };
364 365
365 class MockTranslateBubbleFactory : public TranslateBubbleFactory { 366 class MockTranslateBubbleFactory : public TranslateBubbleFactory {
366 public: 367 public:
367 MockTranslateBubbleFactory() {} 368 MockTranslateBubbleFactory() {}
368 369
369 virtual void ShowImplementation(BrowserWindow* window, 370 virtual void ShowImplementation(
370 content::WebContents* web_contents, 371 BrowserWindow* window,
371 translate::TranslateStep step, 372 content::WebContents* web_contents,
372 TranslateErrors::Type error_type) OVERRIDE { 373 translate::TranslateStep step,
374 translate::TranslateErrors::Type error_type) OVERRIDE {
373 if (model_) { 375 if (model_) {
374 model_->SetViewState( 376 model_->SetViewState(
375 TranslateBubbleModelImpl::TranslateStepToViewState(step)); 377 TranslateBubbleModelImpl::TranslateStepToViewState(step));
376 return; 378 return;
377 } 379 }
378 380
379 ChromeTranslateClient* chrome_translate_client = 381 ChromeTranslateClient* chrome_translate_client =
380 ChromeTranslateClient::FromWebContents(web_contents); 382 ChromeTranslateClient::FromWebContents(web_contents);
381 std::string source_language = 383 std::string source_language =
382 chrome_translate_client->GetLanguageState().original_language(); 384 chrome_translate_client->GetLanguageState().original_language();
383 std::string target_language = TranslateDownloadManager::GetLanguageCode( 385 std::string target_language =
384 g_browser_process->GetApplicationLocale()); 386 translate::TranslateDownloadManager::GetLanguageCode(
387 g_browser_process->GetApplicationLocale());
385 388
386 scoped_ptr<TranslateUIDelegate> ui_delegate(new TranslateUIDelegate( 389 scoped_ptr<translate::TranslateUIDelegate> ui_delegate(
387 chrome_translate_client->GetTranslateManager()->GetWeakPtr(), 390 new translate::TranslateUIDelegate(
388 source_language, 391 chrome_translate_client->GetTranslateManager()->GetWeakPtr(),
389 target_language)); 392 source_language,
393 target_language));
390 model_.reset(new TranslateBubbleModelImpl(step, ui_delegate.Pass())); 394 model_.reset(new TranslateBubbleModelImpl(step, ui_delegate.Pass()));
391 } 395 }
392 396
393 TranslateBubbleModel* model() { return model_.get(); } 397 TranslateBubbleModel* model() { return model_.get(); }
394 398
395 private: 399 private:
396 scoped_ptr<TranslateBubbleModel> model_; 400 scoped_ptr<TranslateBubbleModel> model_;
397 401
398 DISALLOW_COPY_AND_ASSIGN(MockTranslateBubbleFactory); 402 DISALLOW_COPY_AND_ASSIGN(MockTranslateBubbleFactory);
399 }; 403 };
400 404
401 405
402 TEST_F(TranslateManagerRenderViewHostTest, NormalTranslate) { 406 TEST_F(TranslateManagerRenderViewHostTest, NormalTranslate) {
403 // See BubbleNormalTranslate for corresponding bubble UX testing. 407 // See BubbleNormalTranslate for corresponding bubble UX testing.
404 if (TranslateService::IsTranslateBubbleEnabled()) 408 if (TranslateService::IsTranslateBubbleEnabled())
405 return; 409 return;
406 410
407 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 411 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
408 412
409 // We should have an infobar. 413 // We should have an infobar.
410 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 414 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
411 ASSERT_TRUE(infobar != NULL); 415 ASSERT_TRUE(infobar != NULL);
412 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, 416 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE,
413 infobar->translate_step()); 417 infobar->translate_step());
414 418
415 // Simulate clicking translate. 419 // Simulate clicking translate.
416 process()->sink().ClearMessages(); 420 process()->sink().ClearMessages();
417 infobar->Translate(); 421 infobar->Translate();
418 422
419 // The "Translating..." infobar should be showing. 423 // The "Translating..." infobar should be showing.
420 infobar = GetTranslateInfoBar(); 424 infobar = GetTranslateInfoBar();
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 } 487 }
484 488
485 TEST_F(TranslateManagerRenderViewHostTest, TranslateScriptNotAvailable) { 489 TEST_F(TranslateManagerRenderViewHostTest, TranslateScriptNotAvailable) {
486 // See BubbleTranslateScriptNotAvailable for corresponding bubble UX testing. 490 // See BubbleTranslateScriptNotAvailable for corresponding bubble UX testing.
487 if (TranslateService::IsTranslateBubbleEnabled()) 491 if (TranslateService::IsTranslateBubbleEnabled())
488 return; 492 return;
489 493
490 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 494 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
491 495
492 // We should have an infobar. 496 // We should have an infobar.
493 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 497 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
494 ASSERT_TRUE(infobar != NULL); 498 ASSERT_TRUE(infobar != NULL);
495 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, 499 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE,
496 infobar->translate_step()); 500 infobar->translate_step());
497 501
498 // Simulate clicking translate. 502 // Simulate clicking translate.
499 process()->sink().ClearMessages(); 503 process()->sink().ClearMessages();
500 infobar->Translate(); 504 infobar->Translate();
501 SimulateTranslateScriptURLFetch(false); 505 SimulateTranslateScriptURLFetch(false);
502 506
503 // We should not have sent any message to translate to the renderer. 507 // We should not have sent any message to translate to the renderer.
(...skipping 21 matching lines...) Expand all
525 ASSERT_TRUE(GetTranslateInfoBar() == NULL); 529 ASSERT_TRUE(GetTranslateInfoBar() == NULL);
526 530
527 // Translate the page anyway throught the context menu. 531 // Translate the page anyway throught the context menu.
528 scoped_ptr<TestRenderViewContextMenu> menu(CreateContextMenu()); 532 scoped_ptr<TestRenderViewContextMenu> menu(CreateContextMenu());
529 menu->Init(); 533 menu->Init();
530 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); 534 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0);
531 535
532 // To test that bug #49018 if fixed, make sure we deal correctly with errors. 536 // To test that bug #49018 if fixed, make sure we deal correctly with errors.
533 // Simulate a failure to fetch the translate script. 537 // Simulate a failure to fetch the translate script.
534 SimulateTranslateScriptURLFetch(false); 538 SimulateTranslateScriptURLFetch(false);
535 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 539 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
536 ASSERT_TRUE(infobar != NULL); 540 ASSERT_TRUE(infobar != NULL);
537 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR, 541 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR,
538 infobar->translate_step()); 542 infobar->translate_step());
539 EXPECT_TRUE(infobar->is_error()); 543 EXPECT_TRUE(infobar->is_error());
540 infobar->MessageInfoBarButtonPressed(); 544 infobar->MessageInfoBarButtonPressed();
541 SimulateTranslateScriptURLFetch(true); // This time succeed. 545 SimulateTranslateScriptURLFetch(true); // This time succeed.
542 546
543 // Simulate the render notifying the translation has been done, the server 547 // Simulate the render notifying the translation has been done, the server
544 // having detected the page was in a known and supported language. 548 // having detected the page was in a known and supported language.
545 SimulateOnPageTranslated("fr", "en"); 549 SimulateOnPageTranslated("fr", "en");
546 550
547 // The after translate infobar should be showing. 551 // The after translate infobar should be showing.
548 infobar = GetTranslateInfoBar(); 552 infobar = GetTranslateInfoBar();
549 ASSERT_TRUE(infobar != NULL); 553 ASSERT_TRUE(infobar != NULL);
550 EXPECT_EQ(translate::TRANSLATE_STEP_AFTER_TRANSLATE, 554 EXPECT_EQ(translate::TRANSLATE_STEP_AFTER_TRANSLATE,
551 infobar->translate_step()); 555 infobar->translate_step());
552 EXPECT_EQ("fr", infobar->original_language_code()); 556 EXPECT_EQ("fr", infobar->original_language_code());
553 EXPECT_EQ("en", infobar->target_language_code()); 557 EXPECT_EQ("en", infobar->target_language_code());
554 558
555 // Let's run the same steps but this time the server detects the page is 559 // Let's run the same steps but this time the server detects the page is
556 // already in English. 560 // already in English.
557 SimulateNavigation(GURL("http://www.google.com"), "und", true); 561 SimulateNavigation(GURL("http://www.google.com"), "und", true);
558 menu.reset(CreateContextMenu()); 562 menu.reset(CreateContextMenu());
559 menu->Init(); 563 menu->Init();
560 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); 564 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0);
561 SimulateOnPageTranslated(1, "en", "en", TranslateErrors::IDENTICAL_LANGUAGES); 565 SimulateOnPageTranslated(
566 1, "en", "en", translate::TranslateErrors::IDENTICAL_LANGUAGES);
562 infobar = GetTranslateInfoBar(); 567 infobar = GetTranslateInfoBar();
563 ASSERT_TRUE(infobar != NULL); 568 ASSERT_TRUE(infobar != NULL);
564 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR, 569 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR,
565 infobar->translate_step()); 570 infobar->translate_step());
566 EXPECT_EQ(TranslateErrors::IDENTICAL_LANGUAGES, infobar->error_type()); 571 EXPECT_EQ(translate::TranslateErrors::IDENTICAL_LANGUAGES,
572 infobar->error_type());
567 573
568 // Let's run the same steps again but this time the server fails to detect the 574 // Let's run the same steps again but this time the server fails to detect the
569 // page's language (it returns an empty string). 575 // page's language (it returns an empty string).
570 SimulateNavigation(GURL("http://www.google.com"), "und", true); 576 SimulateNavigation(GURL("http://www.google.com"), "und", true);
571 menu.reset(CreateContextMenu()); 577 menu.reset(CreateContextMenu());
572 menu->Init(); 578 menu->Init();
573 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); 579 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0);
574 SimulateOnPageTranslated( 580 SimulateOnPageTranslated(
575 2, std::string(), "en", TranslateErrors::UNKNOWN_LANGUAGE); 581 2, std::string(), "en", translate::TranslateErrors::UNKNOWN_LANGUAGE);
576 infobar = GetTranslateInfoBar(); 582 infobar = GetTranslateInfoBar();
577 ASSERT_TRUE(infobar != NULL); 583 ASSERT_TRUE(infobar != NULL);
578 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR, 584 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATE_ERROR,
579 infobar->translate_step()); 585 infobar->translate_step());
580 EXPECT_EQ(TranslateErrors::UNKNOWN_LANGUAGE, infobar->error_type()); 586 EXPECT_EQ(translate::TranslateErrors::UNKNOWN_LANGUAGE,
587 infobar->error_type());
581 } 588 }
582 589
583 // Tests that we show/don't show an info-bar for the languages. 590 // Tests that we show/don't show an info-bar for the languages.
584 TEST_F(TranslateManagerRenderViewHostTest, TestLanguages) { 591 TEST_F(TranslateManagerRenderViewHostTest, TestLanguages) {
585 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 592 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235
586 if (TranslateService::IsTranslateBubbleEnabled()) 593 if (TranslateService::IsTranslateBubbleEnabled())
587 return; 594 return;
588 595
589 std::vector<std::string> languages; 596 std::vector<std::string> languages;
590 languages.push_back("en"); 597 languages.push_back("en");
591 languages.push_back("ja"); 598 languages.push_back("ja");
592 languages.push_back("fr"); 599 languages.push_back("fr");
593 languages.push_back("ht"); 600 languages.push_back("ht");
594 languages.push_back("xx"); 601 languages.push_back("xx");
595 languages.push_back("zh"); 602 languages.push_back("zh");
596 languages.push_back("zh-CN"); 603 languages.push_back("zh-CN");
597 languages.push_back("und"); 604 languages.push_back("und");
598 605
599 GURL url("http://www.google.com"); 606 GURL url("http://www.google.com");
600 for (size_t i = 0; i < languages.size(); ++i) { 607 for (size_t i = 0; i < languages.size(); ++i) {
601 std::string lang = languages[i]; 608 std::string lang = languages[i];
602 SCOPED_TRACE(::testing::Message() << "Iteration " << i 609 SCOPED_TRACE(::testing::Message() << "Iteration " << i
603 << " language=" << lang); 610 << " language=" << lang);
604 611
605 // We should not have a translate infobar. 612 // We should not have a translate infobar.
606 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 613 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
607 ASSERT_TRUE(infobar == NULL); 614 ASSERT_TRUE(infobar == NULL);
608 615
609 SimulateNavigation(url, lang, true); 616 SimulateNavigation(url, lang, true);
610 617
611 // Verify we have/don't have an info-bar as expected. 618 // Verify we have/don't have an info-bar as expected.
612 infobar = GetTranslateInfoBar(); 619 infobar = GetTranslateInfoBar();
613 bool expected = 620 bool expected =
614 TranslateDownloadManager::IsSupportedLanguage(lang) && lang != "en"; 621 translate::TranslateDownloadManager::IsSupportedLanguage(lang) &&
622 lang != "en";
615 EXPECT_EQ(expected, infobar != NULL); 623 EXPECT_EQ(expected, infobar != NULL);
616 624
617 if (infobar != NULL) 625 if (infobar != NULL)
618 EXPECT_TRUE(CloseTranslateInfoBar()); 626 EXPECT_TRUE(CloseTranslateInfoBar());
619 } 627 }
620 } 628 }
621 629
622 // A list of languages to fake being returned by the translate server. 630 // A list of languages to fake being returned by the translate server.
623 // Use only langauges for which Chrome's copy of ICU has 631 // Use only langauges for which Chrome's copy of ICU has
624 // display names in English locale. To save space, Chrome's copy of ICU 632 // display names in English locale. To save space, Chrome's copy of ICU
625 // does not have the display name for a language unless it's in the 633 // does not have the display name for a language unless it's in the
626 // Accept-Language list. 634 // Accept-Language list.
627 static const char* server_language_list[] = 635 static const char* server_language_list[] =
628 {"ach", "ak", "af", "en-CA", "zh", "yi", "fr-FR", "tl", "iw", "in", "xx"}; 636 {"ach", "ak", "af", "en-CA", "zh", "yi", "fr-FR", "tl", "iw", "in", "xx"};
629 static const char* alpha_language_list[] = {"ach", "yi"}; 637 static const char* alpha_language_list[] = {"ach", "yi"};
630 638
631 // Test the fetching of languages from the translate server 639 // Test the fetching of languages from the translate server
632 TEST_F(TranslateManagerRenderViewHostTest, FetchLanguagesFromTranslateServer) { 640 TEST_F(TranslateManagerRenderViewHostTest, FetchLanguagesFromTranslateServer) {
633 std::vector<std::string> server_languages; 641 std::vector<std::string> server_languages;
634 for (size_t i = 0; i < arraysize(server_language_list); ++i) 642 for (size_t i = 0; i < arraysize(server_language_list); ++i)
635 server_languages.push_back(server_language_list[i]); 643 server_languages.push_back(server_language_list[i]);
636 644
637 std::vector<std::string> alpha_languages; 645 std::vector<std::string> alpha_languages;
638 for (size_t i = 0; i < arraysize(alpha_language_list); ++i) 646 for (size_t i = 0; i < arraysize(alpha_language_list); ++i)
639 alpha_languages.push_back(alpha_language_list[i]); 647 alpha_languages.push_back(alpha_language_list[i]);
640 648
641 // First, get the default languages list. Note that calling 649 // First, get the default languages list. Note that calling
642 // GetSupportedLanguages() invokes RequestLanguageList() internally. 650 // GetSupportedLanguages() invokes RequestLanguageList() internally.
643 std::vector<std::string> default_supported_languages; 651 std::vector<std::string> default_supported_languages;
644 TranslateDownloadManager::GetSupportedLanguages(&default_supported_languages); 652 translate::TranslateDownloadManager::GetSupportedLanguages(
653 &default_supported_languages);
645 // To make sure we got the defaults and don't confuse them with the mocks. 654 // To make sure we got the defaults and don't confuse them with the mocks.
646 ASSERT_NE(default_supported_languages.size(), server_languages.size()); 655 ASSERT_NE(default_supported_languages.size(), server_languages.size());
647 656
648 // Check that we still get the defaults until the URLFetch has completed. 657 // Check that we still get the defaults until the URLFetch has completed.
649 std::vector<std::string> current_supported_languages; 658 std::vector<std::string> current_supported_languages;
650 TranslateDownloadManager::GetSupportedLanguages(&current_supported_languages); 659 translate::TranslateDownloadManager::GetSupportedLanguages(
660 &current_supported_languages);
651 EXPECT_EQ(default_supported_languages, current_supported_languages); 661 EXPECT_EQ(default_supported_languages, current_supported_languages);
652 662
653 // Also check that it didn't change if we failed the URL fetch. 663 // Also check that it didn't change if we failed the URL fetch.
654 SimulateSupportedLanguagesURLFetch( 664 SimulateSupportedLanguagesURLFetch(
655 false, std::vector<std::string>(), true, std::vector<std::string>()); 665 false, std::vector<std::string>(), true, std::vector<std::string>());
656 current_supported_languages.clear(); 666 current_supported_languages.clear();
657 TranslateDownloadManager::GetSupportedLanguages(&current_supported_languages); 667 translate::TranslateDownloadManager::GetSupportedLanguages(
668 &current_supported_languages);
658 EXPECT_EQ(default_supported_languages, current_supported_languages); 669 EXPECT_EQ(default_supported_languages, current_supported_languages);
659 670
660 // Now check that we got the appropriate set of languages from the server. 671 // Now check that we got the appropriate set of languages from the server.
661 SimulateSupportedLanguagesURLFetch( 672 SimulateSupportedLanguagesURLFetch(
662 true, server_languages, true, alpha_languages); 673 true, server_languages, true, alpha_languages);
663 current_supported_languages.clear(); 674 current_supported_languages.clear();
664 TranslateDownloadManager::GetSupportedLanguages(&current_supported_languages); 675 translate::TranslateDownloadManager::GetSupportedLanguages(
676 &current_supported_languages);
665 // "xx" can't be displayed in the Translate infobar, so this is eliminated. 677 // "xx" can't be displayed in the Translate infobar, so this is eliminated.
666 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); 678 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size());
667 // Not sure we need to guarantee the order of languages, so we find them. 679 // Not sure we need to guarantee the order of languages, so we find them.
668 for (size_t i = 0; i < server_languages.size(); ++i) { 680 for (size_t i = 0; i < server_languages.size(); ++i) {
669 const std::string& lang = server_languages[i]; 681 const std::string& lang = server_languages[i];
670 if (lang == "xx") 682 if (lang == "xx")
671 continue; 683 continue;
672 EXPECT_NE(current_supported_languages.end(), 684 EXPECT_NE(current_supported_languages.end(),
673 std::find(current_supported_languages.begin(), 685 std::find(current_supported_languages.begin(),
674 current_supported_languages.end(), 686 current_supported_languages.end(),
675 lang)) << "lang=" << lang; 687 lang)) << "lang=" << lang;
676 bool is_alpha = 688 bool is_alpha =
677 std::find(alpha_languages.begin(), alpha_languages.end(), lang) != 689 std::find(alpha_languages.begin(), alpha_languages.end(), lang) !=
678 alpha_languages.end(); 690 alpha_languages.end();
679 EXPECT_EQ(TranslateDownloadManager::IsAlphaLanguage(lang), 691 EXPECT_EQ(translate::TranslateDownloadManager::IsAlphaLanguage(lang),
680 is_alpha) << "lang=" << lang; 692 is_alpha)
693 << "lang=" << lang;
681 } 694 }
682 } 695 }
683 696
684 // Test the fetching of languages from the translate server without 'al' 697 // Test the fetching of languages from the translate server without 'al'
685 // parameter. 698 // parameter.
686 TEST_F(TranslateManagerRenderViewHostTest, 699 TEST_F(TranslateManagerRenderViewHostTest,
687 FetchLanguagesFromTranslateServerWithoutAlpha) { 700 FetchLanguagesFromTranslateServerWithoutAlpha) {
688 std::vector<std::string> server_languages; 701 std::vector<std::string> server_languages;
689 for (size_t i = 0; i < arraysize(server_language_list); ++i) 702 for (size_t i = 0; i < arraysize(server_language_list); ++i)
690 server_languages.push_back(server_language_list[i]); 703 server_languages.push_back(server_language_list[i]);
691 704
692 std::vector<std::string> alpha_languages; 705 std::vector<std::string> alpha_languages;
693 for (size_t i = 0; i < arraysize(alpha_language_list); ++i) 706 for (size_t i = 0; i < arraysize(alpha_language_list); ++i)
694 alpha_languages.push_back(alpha_language_list[i]); 707 alpha_languages.push_back(alpha_language_list[i]);
695 708
696 // call GetSupportedLanguages to call RequestLanguageList internally. 709 // call GetSupportedLanguages to call RequestLanguageList internally.
697 std::vector<std::string> default_supported_languages; 710 std::vector<std::string> default_supported_languages;
698 TranslateDownloadManager::GetSupportedLanguages(&default_supported_languages); 711 translate::TranslateDownloadManager::GetSupportedLanguages(
712 &default_supported_languages);
699 713
700 SimulateSupportedLanguagesURLFetch( 714 SimulateSupportedLanguagesURLFetch(
701 true, server_languages, false, alpha_languages); 715 true, server_languages, false, alpha_languages);
702 716
703 std::vector<std::string> current_supported_languages; 717 std::vector<std::string> current_supported_languages;
704 TranslateDownloadManager::GetSupportedLanguages(&current_supported_languages); 718 translate::TranslateDownloadManager::GetSupportedLanguages(
719 &current_supported_languages);
705 720
706 // "xx" can't be displayed in the Translate infobar, so this is eliminated. 721 // "xx" can't be displayed in the Translate infobar, so this is eliminated.
707 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size()); 722 EXPECT_EQ(server_languages.size() - 1, current_supported_languages.size());
708 723
709 for (size_t i = 0; i < server_languages.size(); ++i) { 724 for (size_t i = 0; i < server_languages.size(); ++i) {
710 const std::string& lang = server_languages[i]; 725 const std::string& lang = server_languages[i];
711 if (lang == "xx") 726 if (lang == "xx")
712 continue; 727 continue;
713 EXPECT_NE(current_supported_languages.end(), 728 EXPECT_NE(current_supported_languages.end(),
714 std::find(current_supported_languages.begin(), 729 std::find(current_supported_languages.begin(),
715 current_supported_languages.end(), 730 current_supported_languages.end(),
716 lang)) << "lang=" << lang; 731 lang)) << "lang=" << lang;
717 EXPECT_FALSE(TranslateDownloadManager::IsAlphaLanguage(lang)) << 732 EXPECT_FALSE(translate::TranslateDownloadManager::IsAlphaLanguage(lang))
718 "lang=" << lang; 733 << "lang=" << lang;
719 } 734 }
720 } 735 }
721 736
722 // Tests auto-translate on page. 737 // Tests auto-translate on page.
723 TEST_F(TranslateManagerRenderViewHostTest, AutoTranslateOnNavigate) { 738 TEST_F(TranslateManagerRenderViewHostTest, AutoTranslateOnNavigate) {
724 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 739 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235
725 if (TranslateService::IsTranslateBubbleEnabled()) 740 if (TranslateService::IsTranslateBubbleEnabled())
726 return; 741 return;
727 742
728 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 743 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
729 744
730 // Simulate the user translating. 745 // Simulate the user translating.
731 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 746 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
732 ASSERT_TRUE(infobar != NULL); 747 ASSERT_TRUE(infobar != NULL);
733 infobar->Translate(); 748 infobar->Translate();
734 // Simulate the translate script being retrieved. 749 // Simulate the translate script being retrieved.
735 SimulateTranslateScriptURLFetch(true); 750 SimulateTranslateScriptURLFetch(true);
736 SimulateOnPageTranslated("fr", "en"); 751 SimulateOnPageTranslated("fr", "en");
737 752
738 // Now navigate to a new page in the same language. 753 // Now navigate to a new page in the same language.
739 process()->sink().ClearMessages(); 754 process()->sink().ClearMessages();
740 SimulateNavigation(GURL("http://news.google.fr"), "fr", true); 755 SimulateNavigation(GURL("http://news.google.fr"), "fr", true);
741 756
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
913 // return when navigating in page. 928 // return when navigating in page.
914 TEST_F(TranslateManagerRenderViewHostTest, 929 TEST_F(TranslateManagerRenderViewHostTest,
915 TranslateCloseInfoBarInPageNavigation) { 930 TranslateCloseInfoBarInPageNavigation) {
916 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 931 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235
917 if (TranslateService::IsTranslateBubbleEnabled()) 932 if (TranslateService::IsTranslateBubbleEnabled())
918 return; 933 return;
919 934
920 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 935 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
921 936
922 // Simulate the user translating. 937 // Simulate the user translating.
923 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 938 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
924 ASSERT_TRUE(infobar != NULL); 939 ASSERT_TRUE(infobar != NULL);
925 infobar->Translate(); 940 infobar->Translate();
926 // Simulate the translate script being retrieved. 941 // Simulate the translate script being retrieved.
927 SimulateTranslateScriptURLFetch(true); 942 SimulateTranslateScriptURLFetch(true);
928 SimulateOnPageTranslated("fr", "en"); 943 SimulateOnPageTranslated("fr", "en");
929 944
930 EXPECT_TRUE(CloseTranslateInfoBar()); 945 EXPECT_TRUE(CloseTranslateInfoBar());
931 946
932 // Navigate in page, no infobar should be shown. 947 // Navigate in page, no infobar should be shown.
933 SimulateNavigation(GURL("http://www.google.fr/#ref1"), "fr", true); 948 SimulateNavigation(GURL("http://www.google.fr/#ref1"), "fr", true);
(...skipping 10 matching lines...) Expand all
944 // Tests that the after translate the infobar still shows when navigating 959 // Tests that the after translate the infobar still shows when navigating
945 // in-page. 960 // in-page.
946 TEST_F(TranslateManagerRenderViewHostTest, TranslateInPageNavigation) { 961 TEST_F(TranslateManagerRenderViewHostTest, TranslateInPageNavigation) {
947 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 962 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235
948 if (TranslateService::IsTranslateBubbleEnabled()) 963 if (TranslateService::IsTranslateBubbleEnabled())
949 return; 964 return;
950 965
951 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 966 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
952 967
953 // Simulate the user translating. 968 // Simulate the user translating.
954 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 969 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
955 ASSERT_TRUE(infobar != NULL); 970 ASSERT_TRUE(infobar != NULL);
956 infobar->Translate(); 971 infobar->Translate();
957 SimulateTranslateScriptURLFetch(true); 972 SimulateTranslateScriptURLFetch(true);
958 SimulateOnPageTranslated("fr", "en"); 973 SimulateOnPageTranslated("fr", "en");
959 // The after translate infobar is showing. 974 // The after translate infobar is showing.
960 infobar = GetTranslateInfoBar(); 975 infobar = GetTranslateInfoBar();
961 ASSERT_TRUE(infobar != NULL); 976 ASSERT_TRUE(infobar != NULL);
962 977
963 // Navigate out of page, a new infobar should show. 978 // Navigate out of page, a new infobar should show.
964 // See note in TranslateCloseInfoBarInPageNavigation test on why it is 979 // See note in TranslateCloseInfoBarInPageNavigation test on why it is
(...skipping 21 matching lines...) Expand all
986 1001
987 // Tests that we deal correctly with unsupported languages returned by the 1002 // Tests that we deal correctly with unsupported languages returned by the
988 // server. 1003 // server.
989 // The translation server might return a language we don't support. 1004 // The translation server might return a language we don't support.
990 TEST_F(TranslateManagerRenderViewHostTest, ServerReportsUnsupportedLanguage) { 1005 TEST_F(TranslateManagerRenderViewHostTest, ServerReportsUnsupportedLanguage) {
991 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 1006 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235
992 if (TranslateService::IsTranslateBubbleEnabled()) 1007 if (TranslateService::IsTranslateBubbleEnabled())
993 return; 1008 return;
994 1009
995 SimulateNavigation(GURL("http://mail.google.fr"), "fr", true); 1010 SimulateNavigation(GURL("http://mail.google.fr"), "fr", true);
996 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 1011 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
997 ASSERT_TRUE(infobar != NULL); 1012 ASSERT_TRUE(infobar != NULL);
998 process()->sink().ClearMessages(); 1013 process()->sink().ClearMessages();
999 infobar->Translate(); 1014 infobar->Translate();
1000 SimulateTranslateScriptURLFetch(true); 1015 SimulateTranslateScriptURLFetch(true);
1001 // Simulate the render notifying the translation has been done, but it 1016 // Simulate the render notifying the translation has been done, but it
1002 // reports a language we don't support. 1017 // reports a language we don't support.
1003 SimulateOnPageTranslated("qbz", "en"); 1018 SimulateOnPageTranslated("qbz", "en");
1004 1019
1005 // An error infobar should be showing to report that we don't support this 1020 // An error infobar should be showing to report that we don't support this
1006 // language. 1021 // language.
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
1096 1111
1097 // Make sure the pref allows translate. 1112 // Make sure the pref allows translate.
1098 Profile* profile = 1113 Profile* profile =
1099 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); 1114 Profile::FromBrowserContext(web_contents()->GetBrowserContext());
1100 PrefService* prefs = profile->GetPrefs(); 1115 PrefService* prefs = profile->GetPrefs();
1101 prefs->SetBoolean(prefs::kEnableTranslate, true); 1116 prefs->SetBoolean(prefs::kEnableTranslate, true);
1102 1117
1103 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 1118 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
1104 1119
1105 // An infobar should be shown. 1120 // An infobar should be shown.
1106 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 1121 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
1107 EXPECT_TRUE(infobar != NULL); 1122 EXPECT_TRUE(infobar != NULL);
1108 1123
1109 // Disable translate. 1124 // Disable translate.
1110 prefs->SetBoolean(prefs::kEnableTranslate, false); 1125 prefs->SetBoolean(prefs::kEnableTranslate, false);
1111 1126
1112 // Navigate to a new page, that should close the previous infobar. 1127 // Navigate to a new page, that should close the previous infobar.
1113 GURL url("http://www.youtube.fr"); 1128 GURL url("http://www.youtube.fr");
1114 NavigateAndCommit(url); 1129 NavigateAndCommit(url);
1115 infobar = GetTranslateInfoBar(); 1130 infobar = GetTranslateInfoBar();
1116 EXPECT_TRUE(infobar == NULL); 1131 EXPECT_TRUE(infobar == NULL);
(...skipping 16 matching lines...) Expand all
1133 1148
1134 // An infobar should be shown. 1149 // An infobar should be shown.
1135 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 1150 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
1136 1151
1137 // Select never translate this language. 1152 // Select never translate this language.
1138 Profile* profile = 1153 Profile* profile =
1139 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); 1154 Profile::FromBrowserContext(web_contents()->GetBrowserContext());
1140 PrefService* prefs = profile->GetPrefs(); 1155 PrefService* prefs = profile->GetPrefs();
1141 PrefChangeRegistrar registrar; 1156 PrefChangeRegistrar registrar;
1142 registrar.Init(prefs); 1157 registrar.Init(prefs);
1143 registrar.Add(TranslatePrefs::kPrefTranslateBlockedLanguages, pref_callback_); 1158 registrar.Add(translate::TranslatePrefs::kPrefTranslateBlockedLanguages,
1144 scoped_ptr<TranslatePrefs> translate_prefs( 1159 pref_callback_);
1160 scoped_ptr<translate::TranslatePrefs> translate_prefs(
1145 ChromeTranslateClient::CreateTranslatePrefs(prefs)); 1161 ChromeTranslateClient::CreateTranslatePrefs(prefs));
1146 EXPECT_FALSE(translate_prefs->IsBlockedLanguage("fr")); 1162 EXPECT_FALSE(translate_prefs->IsBlockedLanguage("fr"));
1147 TranslateAcceptLanguages* accept_languages = 1163 translate::TranslateAcceptLanguages* accept_languages =
1148 ChromeTranslateClient::GetTranslateAcceptLanguages(profile); 1164 ChromeTranslateClient::GetTranslateAcceptLanguages(profile);
1149 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr")); 1165 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr"));
1150 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateBlockedLanguages); 1166 SetPrefObserverExpectation(
1167 translate::TranslatePrefs::kPrefTranslateBlockedLanguages);
1151 translate_prefs->BlockLanguage("fr"); 1168 translate_prefs->BlockLanguage("fr");
1152 EXPECT_TRUE(translate_prefs->IsBlockedLanguage("fr")); 1169 EXPECT_TRUE(translate_prefs->IsBlockedLanguage("fr"));
1153 EXPECT_FALSE(translate_prefs->IsSiteBlacklisted(url.host())); 1170 EXPECT_FALSE(translate_prefs->IsSiteBlacklisted(url.host()));
1154 EXPECT_FALSE(translate_prefs->CanTranslateLanguage(accept_languages, "fr")); 1171 EXPECT_FALSE(translate_prefs->CanTranslateLanguage(accept_languages, "fr"));
1155 1172
1156 EXPECT_TRUE(CloseTranslateInfoBar()); 1173 EXPECT_TRUE(CloseTranslateInfoBar());
1157 1174
1158 // Navigate to a new page also in French. 1175 // Navigate to a new page also in French.
1159 SimulateNavigation(GURL("http://wwww.youtube.fr"), "fr", true); 1176 SimulateNavigation(GURL("http://wwww.youtube.fr"), "fr", true);
1160 1177
1161 // There should not be a translate infobar. 1178 // There should not be a translate infobar.
1162 EXPECT_TRUE(GetTranslateInfoBar() == NULL); 1179 EXPECT_TRUE(GetTranslateInfoBar() == NULL);
1163 1180
1164 // Remove the language from the blacklist. 1181 // Remove the language from the blacklist.
1165 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateBlockedLanguages); 1182 SetPrefObserverExpectation(
1183 translate::TranslatePrefs::kPrefTranslateBlockedLanguages);
1166 translate_prefs->UnblockLanguage("fr"); 1184 translate_prefs->UnblockLanguage("fr");
1167 EXPECT_FALSE(translate_prefs->IsBlockedLanguage("fr")); 1185 EXPECT_FALSE(translate_prefs->IsBlockedLanguage("fr"));
1168 EXPECT_FALSE(translate_prefs->IsSiteBlacklisted(url.host())); 1186 EXPECT_FALSE(translate_prefs->IsSiteBlacklisted(url.host()));
1169 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr")); 1187 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr"));
1170 1188
1171 // Navigate to a page in French. 1189 // Navigate to a page in French.
1172 SimulateNavigation(url, "fr", true); 1190 SimulateNavigation(url, "fr", true);
1173 1191
1174 // There should be a translate infobar. 1192 // There should be a translate infobar.
1175 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 1193 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
(...skipping 11 matching lines...) Expand all
1187 1205
1188 // An infobar should be shown. 1206 // An infobar should be shown.
1189 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 1207 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
1190 1208
1191 // Select never translate this site. 1209 // Select never translate this site.
1192 Profile* profile = 1210 Profile* profile =
1193 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); 1211 Profile::FromBrowserContext(web_contents()->GetBrowserContext());
1194 PrefService* prefs = profile->GetPrefs(); 1212 PrefService* prefs = profile->GetPrefs();
1195 PrefChangeRegistrar registrar; 1213 PrefChangeRegistrar registrar;
1196 registrar.Init(prefs); 1214 registrar.Init(prefs);
1197 registrar.Add(TranslatePrefs::kPrefTranslateSiteBlacklist, pref_callback_); 1215 registrar.Add(translate::TranslatePrefs::kPrefTranslateSiteBlacklist,
1198 scoped_ptr<TranslatePrefs> translate_prefs( 1216 pref_callback_);
1217 scoped_ptr<translate::TranslatePrefs> translate_prefs(
1199 ChromeTranslateClient::CreateTranslatePrefs(prefs)); 1218 ChromeTranslateClient::CreateTranslatePrefs(prefs));
1200 EXPECT_FALSE(translate_prefs->IsSiteBlacklisted(host)); 1219 EXPECT_FALSE(translate_prefs->IsSiteBlacklisted(host));
1201 TranslateAcceptLanguages* accept_languages = 1220 translate::TranslateAcceptLanguages* accept_languages =
1202 ChromeTranslateClient::GetTranslateAcceptLanguages(profile); 1221 ChromeTranslateClient::GetTranslateAcceptLanguages(profile);
1203 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr")); 1222 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr"));
1204 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateSiteBlacklist); 1223 SetPrefObserverExpectation(
1224 translate::TranslatePrefs::kPrefTranslateSiteBlacklist);
1205 translate_prefs->BlacklistSite(host); 1225 translate_prefs->BlacklistSite(host);
1206 EXPECT_TRUE(translate_prefs->IsSiteBlacklisted(host)); 1226 EXPECT_TRUE(translate_prefs->IsSiteBlacklisted(host));
1207 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr")); 1227 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr"));
1208 1228
1209 EXPECT_TRUE(CloseTranslateInfoBar()); 1229 EXPECT_TRUE(CloseTranslateInfoBar());
1210 1230
1211 // Navigate to a new page also on the same site. 1231 // Navigate to a new page also on the same site.
1212 SimulateNavigation(GURL("http://www.google.fr/hello"), "fr", true); 1232 SimulateNavigation(GURL("http://www.google.fr/hello"), "fr", true);
1213 1233
1214 // There should not be a translate infobar. 1234 // There should not be a translate infobar.
1215 EXPECT_TRUE(GetTranslateInfoBar() == NULL); 1235 EXPECT_TRUE(GetTranslateInfoBar() == NULL);
1216 1236
1217 // Remove the site from the blacklist. 1237 // Remove the site from the blacklist.
1218 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateSiteBlacklist); 1238 SetPrefObserverExpectation(
1239 translate::TranslatePrefs::kPrefTranslateSiteBlacklist);
1219 translate_prefs->RemoveSiteFromBlacklist(host); 1240 translate_prefs->RemoveSiteFromBlacklist(host);
1220 EXPECT_FALSE(translate_prefs->IsSiteBlacklisted(host)); 1241 EXPECT_FALSE(translate_prefs->IsSiteBlacklisted(host));
1221 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr")); 1242 EXPECT_TRUE(translate_prefs->CanTranslateLanguage(accept_languages, "fr"));
1222 1243
1223 // Navigate to a page in French. 1244 // Navigate to a page in French.
1224 SimulateNavigation(url, "fr", true); 1245 SimulateNavigation(url, "fr", true);
1225 1246
1226 // There should be a translate infobar. 1247 // There should be a translate infobar.
1227 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 1248 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
1228 } 1249 }
1229 1250
1230 // Tests the "Always translate this language" pref. 1251 // Tests the "Always translate this language" pref.
1231 TEST_F(TranslateManagerRenderViewHostTest, AlwaysTranslateLanguagePref) { 1252 TEST_F(TranslateManagerRenderViewHostTest, AlwaysTranslateLanguagePref) {
1232 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 1253 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235
1233 if (TranslateService::IsTranslateBubbleEnabled()) 1254 if (TranslateService::IsTranslateBubbleEnabled())
1234 return; 1255 return;
1235 1256
1236 // Select always translate French to English. 1257 // Select always translate French to English.
1237 Profile* profile = 1258 Profile* profile =
1238 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); 1259 Profile::FromBrowserContext(web_contents()->GetBrowserContext());
1239 PrefService* prefs = profile->GetPrefs(); 1260 PrefService* prefs = profile->GetPrefs();
1240 PrefChangeRegistrar registrar; 1261 PrefChangeRegistrar registrar;
1241 registrar.Init(prefs); 1262 registrar.Init(prefs);
1242 registrar.Add(TranslatePrefs::kPrefTranslateWhitelists, pref_callback_); 1263 registrar.Add(translate::TranslatePrefs::kPrefTranslateWhitelists,
1243 scoped_ptr<TranslatePrefs> translate_prefs( 1264 pref_callback_);
1265 scoped_ptr<translate::TranslatePrefs> translate_prefs(
1244 ChromeTranslateClient::CreateTranslatePrefs(prefs)); 1266 ChromeTranslateClient::CreateTranslatePrefs(prefs));
1245 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateWhitelists); 1267 SetPrefObserverExpectation(
1268 translate::TranslatePrefs::kPrefTranslateWhitelists);
1246 translate_prefs->WhitelistLanguagePair("fr", "en"); 1269 translate_prefs->WhitelistLanguagePair("fr", "en");
1247 1270
1248 // Load a page in French. 1271 // Load a page in French.
1249 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 1272 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
1250 1273
1251 // It should have triggered an automatic translation to English. 1274 // It should have triggered an automatic translation to English.
1252 1275
1253 // The translating infobar should be showing. 1276 // The translating infobar should be showing.
1254 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 1277 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
1255 ASSERT_TRUE(infobar != NULL); 1278 ASSERT_TRUE(infobar != NULL);
1256 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATING, infobar->translate_step()); 1279 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATING, infobar->translate_step());
1257 SimulateTranslateScriptURLFetch(true); 1280 SimulateTranslateScriptURLFetch(true);
1258 std::string original_lang, target_lang; 1281 std::string original_lang, target_lang;
1259 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang)); 1282 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang));
1260 EXPECT_EQ("fr", original_lang); 1283 EXPECT_EQ("fr", original_lang);
1261 EXPECT_EQ("en", target_lang); 1284 EXPECT_EQ("en", target_lang);
1262 process()->sink().ClearMessages(); 1285 process()->sink().ClearMessages();
1263 1286
1264 // Try another language, it should not be autotranslated. 1287 // Try another language, it should not be autotranslated.
1265 SimulateNavigation(GURL("http://www.google.es"), "es", true); 1288 SimulateNavigation(GURL("http://www.google.es"), "es", true);
1266 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang)); 1289 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang));
1267 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 1290 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
1268 EXPECT_TRUE(CloseTranslateInfoBar()); 1291 EXPECT_TRUE(CloseTranslateInfoBar());
1269 1292
1270 // Let's switch to incognito mode, it should not be autotranslated in that 1293 // Let's switch to incognito mode, it should not be autotranslated in that
1271 // case either. 1294 // case either.
1272 TestingProfile* test_profile = 1295 TestingProfile* test_profile =
1273 static_cast<TestingProfile*>(web_contents()->GetBrowserContext()); 1296 static_cast<TestingProfile*>(web_contents()->GetBrowserContext());
1274 test_profile->ForceIncognito(true); 1297 test_profile->ForceIncognito(true);
1275 SimulateNavigation(GURL("http://www.youtube.fr"), "fr", true); 1298 SimulateNavigation(GURL("http://www.youtube.fr"), "fr", true);
1276 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang)); 1299 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang));
1277 EXPECT_TRUE(GetTranslateInfoBar() != NULL); 1300 EXPECT_TRUE(GetTranslateInfoBar() != NULL);
1278 EXPECT_TRUE(CloseTranslateInfoBar()); 1301 EXPECT_TRUE(CloseTranslateInfoBar());
1279 test_profile->ForceIncognito(false); // Get back to non incognito. 1302 test_profile->ForceIncognito(false); // Get back to non incognito.
1280 1303
1281 // Now revert the always translate pref and make sure we go back to expected 1304 // Now revert the always translate pref and make sure we go back to expected
1282 // behavior, which is show a "before translate" infobar. 1305 // behavior, which is show a "before translate" infobar.
1283 SetPrefObserverExpectation(TranslatePrefs::kPrefTranslateWhitelists); 1306 SetPrefObserverExpectation(
1307 translate::TranslatePrefs::kPrefTranslateWhitelists);
1284 translate_prefs->RemoveLanguagePairFromWhitelist("fr", "en"); 1308 translate_prefs->RemoveLanguagePairFromWhitelist("fr", "en");
1285 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 1309 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
1286 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang)); 1310 EXPECT_FALSE(GetTranslateMessage(&original_lang, &target_lang));
1287 infobar = GetTranslateInfoBar(); 1311 infobar = GetTranslateInfoBar();
1288 ASSERT_TRUE(infobar != NULL); 1312 ASSERT_TRUE(infobar != NULL);
1289 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE, 1313 EXPECT_EQ(translate::TRANSLATE_STEP_BEFORE_TRANSLATE,
1290 infobar->translate_step()); 1314 infobar->translate_step());
1291 } 1315 }
1292 1316
1293 // Context menu. 1317 // Context menu.
1294 TEST_F(TranslateManagerRenderViewHostTest, ContextMenu) { 1318 TEST_F(TranslateManagerRenderViewHostTest, ContextMenu) {
1295 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 1319 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235
1296 if (TranslateService::IsTranslateBubbleEnabled()) 1320 if (TranslateService::IsTranslateBubbleEnabled())
1297 return; 1321 return;
1298 1322
1299 // Blacklist www.google.fr and French for translation. 1323 // Blacklist www.google.fr and French for translation.
1300 GURL url("http://www.google.fr"); 1324 GURL url("http://www.google.fr");
1301 Profile* profile = 1325 Profile* profile =
1302 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); 1326 Profile::FromBrowserContext(web_contents()->GetBrowserContext());
1303 scoped_ptr<TranslatePrefs> translate_prefs( 1327 scoped_ptr<translate::TranslatePrefs> translate_prefs(
1304 ChromeTranslateClient::CreateTranslatePrefs(profile->GetPrefs())); 1328 ChromeTranslateClient::CreateTranslatePrefs(profile->GetPrefs()));
1305 translate_prefs->BlockLanguage("fr"); 1329 translate_prefs->BlockLanguage("fr");
1306 translate_prefs->BlacklistSite(url.host()); 1330 translate_prefs->BlacklistSite(url.host());
1307 EXPECT_TRUE(translate_prefs->IsBlockedLanguage("fr")); 1331 EXPECT_TRUE(translate_prefs->IsBlockedLanguage("fr"));
1308 EXPECT_TRUE(translate_prefs->IsSiteBlacklisted(url.host())); 1332 EXPECT_TRUE(translate_prefs->IsSiteBlacklisted(url.host()));
1309 1333
1310 // Simulate navigating to a page in French. The translate menu should show but 1334 // Simulate navigating to a page in French. The translate menu should show but
1311 // should only be enabled when the page language has been received. 1335 // should only be enabled when the page language has been received.
1312 NavigateAndCommit(url); 1336 NavigateAndCommit(url);
1313 scoped_ptr<TestRenderViewContextMenu> menu(CreateContextMenu()); 1337 scoped_ptr<TestRenderViewContextMenu> menu(CreateContextMenu());
1314 menu->Init(); 1338 menu->Init();
1315 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE)); 1339 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE));
1316 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); 1340 EXPECT_FALSE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE));
1317 1341
1318 // Simulate receiving the language. 1342 // Simulate receiving the language.
1319 SimulateOnTranslateLanguageDetermined("fr", true); 1343 SimulateOnTranslateLanguageDetermined("fr", true);
1320 menu.reset(CreateContextMenu()); 1344 menu.reset(CreateContextMenu());
1321 menu->Init(); 1345 menu->Init();
1322 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE)); 1346 EXPECT_TRUE(menu->IsItemPresent(IDC_CONTENT_CONTEXT_TRANSLATE));
1323 EXPECT_TRUE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE)); 1347 EXPECT_TRUE(menu->IsCommandIdEnabled(IDC_CONTENT_CONTEXT_TRANSLATE));
1324 1348
1325 // Use the menu to translate the page. 1349 // Use the menu to translate the page.
1326 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); 1350 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0);
1327 1351
1328 // That should have triggered a translation. 1352 // That should have triggered a translation.
1329 // The "translating..." infobar should be showing. 1353 // The "translating..." infobar should be showing.
1330 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 1354 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
1331 ASSERT_TRUE(infobar != NULL); 1355 ASSERT_TRUE(infobar != NULL);
1332 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATING, infobar->translate_step()); 1356 EXPECT_EQ(translate::TRANSLATE_STEP_TRANSLATING, infobar->translate_step());
1333 SimulateTranslateScriptURLFetch(true); 1357 SimulateTranslateScriptURLFetch(true);
1334 std::string original_lang, target_lang; 1358 std::string original_lang, target_lang;
1335 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang)); 1359 EXPECT_TRUE(GetTranslateMessage(&original_lang, &target_lang));
1336 EXPECT_EQ("fr", original_lang); 1360 EXPECT_EQ("fr", original_lang);
1337 EXPECT_EQ("en", target_lang); 1361 EXPECT_EQ("en", target_lang);
1338 process()->sink().ClearMessages(); 1362 process()->sink().ClearMessages();
1339 1363
1340 // This should also have reverted the blacklisting of this site and language. 1364 // This should also have reverted the blacklisting of this site and language.
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
1402 // Tests that an extra always/never translate button is shown on the "before 1426 // Tests that an extra always/never translate button is shown on the "before
1403 // translate" infobar when the translation is accepted/declined 3 times, 1427 // translate" infobar when the translation is accepted/declined 3 times,
1404 // only when not in incognito mode. 1428 // only when not in incognito mode.
1405 TEST_F(TranslateManagerRenderViewHostTest, BeforeTranslateExtraButtons) { 1429 TEST_F(TranslateManagerRenderViewHostTest, BeforeTranslateExtraButtons) {
1406 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 1430 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235
1407 if (TranslateService::IsTranslateBubbleEnabled()) 1431 if (TranslateService::IsTranslateBubbleEnabled())
1408 return; 1432 return;
1409 1433
1410 Profile* profile = 1434 Profile* profile =
1411 Profile::FromBrowserContext(web_contents()->GetBrowserContext()); 1435 Profile::FromBrowserContext(web_contents()->GetBrowserContext());
1412 scoped_ptr<TranslatePrefs> translate_prefs( 1436 scoped_ptr<translate::TranslatePrefs> translate_prefs(
1413 ChromeTranslateClient::CreateTranslatePrefs(profile->GetPrefs())); 1437 ChromeTranslateClient::CreateTranslatePrefs(profile->GetPrefs()));
1414 translate_prefs->ResetTranslationAcceptedCount("fr"); 1438 translate_prefs->ResetTranslationAcceptedCount("fr");
1415 translate_prefs->ResetTranslationDeniedCount("fr"); 1439 translate_prefs->ResetTranslationDeniedCount("fr");
1416 translate_prefs->ResetTranslationAcceptedCount("de"); 1440 translate_prefs->ResetTranslationAcceptedCount("de");
1417 translate_prefs->ResetTranslationDeniedCount("de"); 1441 translate_prefs->ResetTranslationDeniedCount("de");
1418 1442
1419 // We'll do 4 times in incognito mode first to make sure the button is not 1443 // We'll do 4 times in incognito mode first to make sure the button is not
1420 // shown in that case, then 4 times in normal mode. 1444 // shown in that case, then 4 times in normal mode.
1421 TranslateInfoBarDelegate* infobar; 1445 translate::TranslateInfoBarDelegate* infobar;
1422 TestingProfile* test_profile = 1446 TestingProfile* test_profile =
1423 static_cast<TestingProfile*>(web_contents()->GetBrowserContext()); 1447 static_cast<TestingProfile*>(web_contents()->GetBrowserContext());
1424 static_cast<extensions::TestExtensionSystem*>( 1448 static_cast<extensions::TestExtensionSystem*>(
1425 extensions::ExtensionSystem::Get(test_profile))->CreateProcessManager(); 1449 extensions::ExtensionSystem::Get(test_profile))->CreateProcessManager();
1426 test_profile->ForceIncognito(true); 1450 test_profile->ForceIncognito(true);
1427 for (int i = 0; i < 8; ++i) { 1451 for (int i = 0; i < 8; ++i) {
1428 SCOPED_TRACE(::testing::Message() << "Iteration " << i << " incognito mode=" 1452 SCOPED_TRACE(::testing::Message() << "Iteration " << i << " incognito mode="
1429 << test_profile->IsOffTheRecord()); 1453 << test_profile->IsOffTheRecord());
1430 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 1454 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
1431 infobar = GetTranslateInfoBar(); 1455 infobar = GetTranslateInfoBar();
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
1503 1527
1504 // Tests that the script is expired and refetched as expected. 1528 // Tests that the script is expired and refetched as expected.
1505 TEST_F(TranslateManagerRenderViewHostTest, ScriptExpires) { 1529 TEST_F(TranslateManagerRenderViewHostTest, ScriptExpires) {
1506 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235 1530 // TODO(port): Test corresponding bubble translate UX: http://crbug.com/383235
1507 if (TranslateService::IsTranslateBubbleEnabled()) 1531 if (TranslateService::IsTranslateBubbleEnabled())
1508 return; 1532 return;
1509 1533
1510 ExpireTranslateScriptImmediately(); 1534 ExpireTranslateScriptImmediately();
1511 1535
1512 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 1536 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
1513 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 1537 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
1514 ASSERT_TRUE(infobar != NULL); 1538 ASSERT_TRUE(infobar != NULL);
1515 process()->sink().ClearMessages(); 1539 process()->sink().ClearMessages();
1516 infobar->Translate(); 1540 infobar->Translate();
1517 SimulateTranslateScriptURLFetch(true); 1541 SimulateTranslateScriptURLFetch(true);
1518 SimulateOnPageTranslated("fr", "en"); 1542 SimulateOnPageTranslated("fr", "en");
1519 1543
1520 // A task should have been posted to clear the script, run it. 1544 // A task should have been posted to clear the script, run it.
1521 base::MessageLoop::current()->RunUntilIdle(); 1545 base::MessageLoop::current()->RunUntilIdle();
1522 1546
1523 // Do another navigation and translation. 1547 // Do another navigation and translation.
(...skipping 27 matching lines...) Expand all
1551 if (!TranslateService::IsTranslateBubbleEnabled()) 1575 if (!TranslateService::IsTranslateBubbleEnabled())
1552 return; 1576 return;
1553 1577
1554 MockTranslateBubbleFactory* factory = new MockTranslateBubbleFactory; 1578 MockTranslateBubbleFactory* factory = new MockTranslateBubbleFactory;
1555 scoped_ptr<TranslateBubbleFactory> factory_ptr(factory); 1579 scoped_ptr<TranslateBubbleFactory> factory_ptr(factory);
1556 TranslateBubbleFactory::SetFactory(factory); 1580 TranslateBubbleFactory::SetFactory(factory);
1557 1581
1558 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 1582 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
1559 1583
1560 // Check the bubble exists instead of the infobar. 1584 // Check the bubble exists instead of the infobar.
1561 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 1585 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
1562 ASSERT_TRUE(infobar == NULL); 1586 ASSERT_TRUE(infobar == NULL);
1563 TranslateBubbleModel* bubble = factory->model(); 1587 TranslateBubbleModel* bubble = factory->model();
1564 ASSERT_TRUE(bubble != NULL); 1588 ASSERT_TRUE(bubble != NULL);
1565 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 1589 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
1566 bubble->GetViewState()); 1590 bubble->GetViewState());
1567 1591
1568 // Simulate clicking translate. 1592 // Simulate clicking translate.
1569 process()->sink().ClearMessages(); 1593 process()->sink().ClearMessages();
1570 bubble->Translate(); 1594 bubble->Translate();
1571 1595
(...skipping 22 matching lines...) Expand all
1594 if (!TranslateService::IsTranslateBubbleEnabled()) 1618 if (!TranslateService::IsTranslateBubbleEnabled())
1595 return; 1619 return;
1596 1620
1597 MockTranslateBubbleFactory* factory = new MockTranslateBubbleFactory; 1621 MockTranslateBubbleFactory* factory = new MockTranslateBubbleFactory;
1598 scoped_ptr<TranslateBubbleFactory> factory_ptr(factory); 1622 scoped_ptr<TranslateBubbleFactory> factory_ptr(factory);
1599 TranslateBubbleFactory::SetFactory(factory); 1623 TranslateBubbleFactory::SetFactory(factory);
1600 1624
1601 SimulateNavigation(GURL("http://www.google.fr"), "fr", true); 1625 SimulateNavigation(GURL("http://www.google.fr"), "fr", true);
1602 1626
1603 // Check the bubble exists instead of the infobar. 1627 // Check the bubble exists instead of the infobar.
1604 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 1628 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
1605 ASSERT_TRUE(infobar == NULL); 1629 ASSERT_TRUE(infobar == NULL);
1606 TranslateBubbleModel* bubble = factory->model(); 1630 TranslateBubbleModel* bubble = factory->model();
1607 ASSERT_TRUE(bubble != NULL); 1631 ASSERT_TRUE(bubble != NULL);
1608 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE, 1632 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_BEFORE_TRANSLATE,
1609 bubble->GetViewState()); 1633 bubble->GetViewState());
1610 1634
1611 // Simulate clicking translate. 1635 // Simulate clicking translate.
1612 process()->sink().ClearMessages(); 1636 process()->sink().ClearMessages();
1613 bubble->Translate(); 1637 bubble->Translate();
1614 SimulateTranslateScriptURLFetch(false); 1638 SimulateTranslateScriptURLFetch(false);
(...skipping 22 matching lines...) Expand all
1637 1661
1638 // We should not have a bubble as we don't know the language. 1662 // We should not have a bubble as we don't know the language.
1639 ASSERT_TRUE(factory->model() == NULL); 1663 ASSERT_TRUE(factory->model() == NULL);
1640 1664
1641 // Translate the page anyway throught the context menu. 1665 // Translate the page anyway throught the context menu.
1642 scoped_ptr<TestRenderViewContextMenu> menu(CreateContextMenu()); 1666 scoped_ptr<TestRenderViewContextMenu> menu(CreateContextMenu());
1643 menu->Init(); 1667 menu->Init();
1644 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0); 1668 menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE, 0);
1645 1669
1646 // Check the bubble exists instead of the infobar. 1670 // Check the bubble exists instead of the infobar.
1647 TranslateInfoBarDelegate* infobar = GetTranslateInfoBar(); 1671 translate::TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
1648 ASSERT_TRUE(infobar == NULL); 1672 ASSERT_TRUE(infobar == NULL);
1649 TranslateBubbleModel* bubble = factory->model(); 1673 TranslateBubbleModel* bubble = factory->model();
1650 ASSERT_TRUE(bubble != NULL); 1674 ASSERT_TRUE(bubble != NULL);
1651 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_TRANSLATING, 1675 EXPECT_EQ(TranslateBubbleModel::VIEW_STATE_TRANSLATING,
1652 bubble->GetViewState()); 1676 bubble->GetViewState());
1653 } 1677 }
OLDNEW
« no previous file with comments | « chrome/browser/translate/translate_manager_browsertest.cc ('k') | chrome/browser/translate/translate_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698