| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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(¤t_supported_languages); | 659 translate::TranslateDownloadManager::GetSupportedLanguages( |
| 660 ¤t_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(¤t_supported_languages); | 667 translate::TranslateDownloadManager::GetSupportedLanguages( |
| 668 ¤t_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(¤t_supported_languages); | 675 translate::TranslateDownloadManager::GetSupportedLanguages( |
| 676 ¤t_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(¤t_supported_languages); | 718 translate::TranslateDownloadManager::GetSupportedLanguages( |
| 719 ¤t_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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |