| OLD | NEW | 
|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "chrome/browser/translate/translate_manager.h" | 5 #include "chrome/browser/translate/translate_manager.h" | 
| 6 | 6 | 
| 7 #include "base/bind.h" | 7 #include "base/bind.h" | 
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" | 
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" | 
| 10 #include "base/memory/singleton.h" | 10 #include "base/memory/singleton.h" | 
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 197 | 197 | 
| 198       // When doing a page reload, TAB_LANGUAGE_DETERMINED is not sent, | 198       // When doing a page reload, TAB_LANGUAGE_DETERMINED is not sent, | 
| 199       // so the translation needs to be explicitly initiated, but only when the | 199       // so the translation needs to be explicitly initiated, but only when the | 
| 200       // page needs translation. | 200       // page needs translation. | 
| 201       if (!translate_tab_helper->language_state().page_needs_translation()) | 201       if (!translate_tab_helper->language_state().page_needs_translation()) | 
| 202         return; | 202         return; | 
| 203       // Note that we delay it as the TranslateManager gets this notification | 203       // Note that we delay it as the TranslateManager gets this notification | 
| 204       // before the WebContents and the WebContents processing might remove the | 204       // before the WebContents and the WebContents processing might remove the | 
| 205       // current infobars.  Since InitTranslation might add an infobar, it must | 205       // current infobars.  Since InitTranslation might add an infobar, it must | 
| 206       // be done after that. | 206       // be done after that. | 
| 207       MessageLoop::current()->PostTask(FROM_HERE, | 207       base::MessageLoop::current()->PostTask(FROM_HERE, | 
| 208           base::Bind( | 208           base::Bind( | 
| 209               &TranslateManager::InitiateTranslationPosted, | 209               &TranslateManager::InitiateTranslationPosted, | 
| 210               weak_method_factory_.GetWeakPtr(), | 210               weak_method_factory_.GetWeakPtr(), | 
| 211               controller->GetWebContents()->GetRenderProcessHost()->GetID(), | 211               controller->GetWebContents()->GetRenderProcessHost()->GetID(), | 
| 212               controller->GetWebContents()->GetRenderViewHost()->GetRoutingID(), | 212               controller->GetWebContents()->GetRenderViewHost()->GetRoutingID(), | 
| 213               translate_tab_helper->language_state().original_language(), 0)); | 213               translate_tab_helper->language_state().original_language(), 0)); | 
| 214       break; | 214       break; | 
| 215     } | 215     } | 
| 216     case chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED: { | 216     case chrome::NOTIFICATION_TAB_LANGUAGE_DETERMINED: { | 
| 217       const LanguageDetectionDetails* lang_det_details = | 217       const LanguageDetectionDetails* lang_det_details = | 
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 291       std::string api_key = google_apis::GetAPIKey(); | 291       std::string api_key = google_apis::GetAPIKey(); | 
| 292       argument += net::EscapeQueryParamValue(api_key, true); | 292       argument += net::EscapeQueryParamValue(api_key, true); | 
| 293       argument += "');\n"; | 293       argument += "');\n"; | 
| 294       std::string data; | 294       std::string data; | 
| 295       source->GetResponseAsString(&data); | 295       source->GetResponseAsString(&data); | 
| 296       translate_script_ += argument + data; | 296       translate_script_ += argument + data; | 
| 297 | 297 | 
| 298       // We'll expire the cached script after some time, to make sure long | 298       // We'll expire the cached script after some time, to make sure long | 
| 299       // running browsers still get fixes that might get pushed with newer | 299       // running browsers still get fixes that might get pushed with newer | 
| 300       // scripts. | 300       // scripts. | 
| 301       MessageLoop::current()->PostDelayedTask(FROM_HERE, | 301       base::MessageLoop::current()->PostDelayedTask(FROM_HERE, | 
| 302           base::Bind(&TranslateManager::ClearTranslateScript, | 302           base::Bind(&TranslateManager::ClearTranslateScript, | 
| 303                      weak_method_factory_.GetWeakPtr()), | 303                      weak_method_factory_.GetWeakPtr()), | 
| 304           translate_script_expiration_delay_); | 304           translate_script_expiration_delay_); | 
| 305     } | 305     } | 
| 306     // Process any pending requests. | 306     // Process any pending requests. | 
| 307     std::vector<PendingRequest>::const_iterator iter; | 307     std::vector<PendingRequest>::const_iterator iter; | 
| 308     for (iter = pending_requests_.begin(); iter != pending_requests_.end(); | 308     for (iter = pending_requests_.begin(); iter != pending_requests_.end(); | 
| 309          ++iter) { | 309          ++iter) { | 
| 310       const PendingRequest& request = *iter; | 310       const PendingRequest& request = *iter; | 
| 311       WebContents* web_contents = | 311       WebContents* web_contents = | 
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 489       TranslateTabHelper::FromWebContents(web_contents); | 489       TranslateTabHelper::FromWebContents(web_contents); | 
| 490   if (translate_tab_helper->language_state().translation_pending()) | 490   if (translate_tab_helper->language_state().translation_pending()) | 
| 491     return; | 491     return; | 
| 492 | 492 | 
| 493   // During a reload we need web content to be available before the | 493   // During a reload we need web content to be available before the | 
| 494   // translate script is executed. Otherwise we will run the translate script on | 494   // translate script is executed. Otherwise we will run the translate script on | 
| 495   // an empty DOM which will fail. Therefore we wait a bit to see if the page | 495   // an empty DOM which will fail. Therefore we wait a bit to see if the page | 
| 496   // has finished. | 496   // has finished. | 
| 497   if ((web_contents->IsLoading()) && attempt < kMaxTranslateLoadCheckAttempts) { | 497   if ((web_contents->IsLoading()) && attempt < kMaxTranslateLoadCheckAttempts) { | 
| 498     int backoff = attempt * max_reload_check_attempts_; | 498     int backoff = attempt * max_reload_check_attempts_; | 
| 499     MessageLoop::current()->PostDelayedTask( | 499     base::MessageLoop::current()->PostDelayedTask( | 
| 500         FROM_HERE, base::Bind(&TranslateManager::InitiateTranslationPosted, | 500         FROM_HERE, base::Bind(&TranslateManager::InitiateTranslationPosted, | 
| 501                               weak_method_factory_.GetWeakPtr(), process_id, | 501                               weak_method_factory_.GetWeakPtr(), process_id, | 
| 502                               render_id, page_lang, ++attempt), | 502                               render_id, page_lang, ++attempt), | 
| 503         base::TimeDelta::FromMilliseconds(backoff)); | 503         base::TimeDelta::FromMilliseconds(backoff)); | 
| 504     return; | 504     return; | 
| 505   } | 505   } | 
| 506 | 506 | 
| 507   InitiateTranslation(web_contents, GetLanguageCode(page_lang)); | 507   InitiateTranslation(web_contents, GetLanguageCode(page_lang)); | 
| 508 } | 508 } | 
| 509 | 509 | 
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 803   // reason so we are more aggressive showing the shortcuts for never translate. | 803   // reason so we are more aggressive showing the shortcuts for never translate. | 
| 804   #if defined(OS_ANDROID) | 804   #if defined(OS_ANDROID) | 
| 805   config.never_translate_min_count = 1; | 805   config.never_translate_min_count = 1; | 
| 806   #else | 806   #else | 
| 807   config.never_translate_min_count = 3; | 807   config.never_translate_min_count = 3; | 
| 808   #endif  // defined(OS_ANDROID) | 808   #endif  // defined(OS_ANDROID) | 
| 809 | 809 | 
| 810   config.always_translate_min_count = 3; | 810   config.always_translate_min_count = 3; | 
| 811   return config; | 811   return config; | 
| 812 } | 812 } | 
| OLD | NEW | 
|---|