summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/browser_main.cc7
-rw-r--r--chrome/browser/translate/translate_manager.cc204
-rw-r--r--chrome/browser/translate/translate_manager.h24
-rw-r--r--chrome/browser/translate/translate_manager_browsertest.cc119
4 files changed, 286 insertions, 68 deletions
diff --git a/chrome/browser/browser_main.cc b/chrome/browser/browser_main.cc
index 61e4030..51537b7 100644
--- a/chrome/browser/browser_main.cc
+++ b/chrome/browser/browser_main.cc
@@ -1617,7 +1617,12 @@ int BrowserMain(const MainFunctionParams& parameters) {
return ResultCodes::MACHINE_LEVEL_INSTALL_EXISTS;
// Create the TranslateManager singleton.
- TranslateManager::GetInstance();
+ TranslateManager* translate_manager = TranslateManager::GetInstance();
+ DCHECK(translate_manager != NULL);
+ // If we're running tests (ui_task is non-null), then we don't want to
+ // call FetchLanguageListFromTranslateServer
+ if (parameters.ui_task == NULL && translate_manager != NULL)
+ translate_manager->FetchLanguageListFromTranslateServer(user_prefs);
#if defined(OS_MACOSX)
if (!parsed_command_line.HasSwitch(switches::kNoFirstRun)) {
diff --git a/chrome/browser/translate/translate_manager.cc b/chrome/browser/translate/translate_manager.cc
index 6816171..de144f7 100644
--- a/chrome/browser/translate/translate_manager.cc
+++ b/chrome/browser/translate/translate_manager.cc
@@ -6,10 +6,12 @@
#include "base/command_line.h"
#include "base/compiler_specific.h"
+#include "base/json/json_reader.h"
#include "base/memory/singleton.h"
#include "base/metrics/histogram.h"
#include "base/string_split.h"
#include "base/string_util.h"
+#include "base/values.h"
#include "chrome/browser/autofill/autofill_manager.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/prefs/pref_service.h"
@@ -124,11 +126,17 @@ const char* const kTranslateScriptHeader =
"Google-Translate-Element-Mode: library";
const char* const kReportLanguageDetectionErrorURL =
"http://translate.google.com/translate_error";
-
+const char* const kLanguageListFetchURL =
+ "http://translate.googleapis.com/translate_a/l?client=chrome&cb=sl";
+const int kMaxRetryLanguageListFetch = 5;
const int kTranslateScriptExpirationDelayMS = 24 * 60 * 60 * 1000; // 1 day.
} // namespace
+// This must be kept in sync with the &cb= value in the kLanguageListFetchURL.
+const char* const TranslateManager::kLanguageListCallbackName = "sl(";
+const char* const TranslateManager::kTargetLanguagesKey = "tl";
+
// static
base::LazyInstance<std::set<std::string> >
TranslateManager::supported_languages_(base::LINKER_INITIALIZED);
@@ -154,11 +162,69 @@ bool TranslateManager::IsTranslatableURL(const GURL& url) {
}
// static
+void TranslateManager::SetSupportedLanguages(const std::string& language_list) {
+ // The format is:
+ // sl({'sl': {'XX': 'LanguageName', ...}, 'tl': {'XX': 'LanguageName', ...}})
+ // Where "sl(" is set in kLanguageListCallbackName
+ // and 'tl' is kTargetLanguagesKey
+ if (!StartsWithASCII(language_list, kLanguageListCallbackName, false) ||
+ !EndsWith(language_list, ")", false)) {
+ // We don't have a NOTREACHED here since this can happen in ui_tests, even
+ // though the the BrowserMain function won't call us with parameters.ui_task
+ // is NULL some tests don't set it, so we must bail here.
+ return;
+ }
+ static const size_t kLanguageListCallbackNameLength =
+ strlen(kLanguageListCallbackName);
+ std::string languages_json = language_list.substr(
+ kLanguageListCallbackNameLength,
+ language_list.size() - kLanguageListCallbackNameLength - 1);
+ // JSON doesn't support single quotes though this is what is used on the
+ // translate server so we must replace them with double quotes.
+ ReplaceSubstringsAfterOffset(&languages_json, 0, "'", "\"");
+ scoped_ptr<Value> json_value(base::JSONReader::Read(languages_json, true));
+ if (json_value == NULL || !json_value->IsType(Value::TYPE_DICTIONARY)) {
+ NOTREACHED();
+ return;
+ }
+ // The first level dictionary contains two sub-dict, one for source languages
+ // and the other for target languages, we want to use the target languages.
+ DictionaryValue* language_dict =
+ static_cast<DictionaryValue*>(json_value.get());
+ DictionaryValue* target_languages = NULL;
+ if (!language_dict->GetDictionary(kTargetLanguagesKey, &target_languages) ||
+ target_languages == NULL) {
+ NOTREACHED();
+ return;
+ }
+ // Now we can clear our current state...
+ std::set<std::string>* supported_languages = supported_languages_.Pointer();
+ supported_languages->clear();
+ // ... and replace it with the values we just fetched from the server.
+ DictionaryValue::key_iterator iter = target_languages->begin_keys();
+ for (; iter != target_languages->end_keys(); ++iter)
+ supported_languages_.Pointer()->insert(*iter);
+}
+
+// static
+void TranslateManager::InitSupportedLanguages() {
+ // If our list of supported languages have not been set yet, we default
+ // to our hard coded list of languages in kSupportedLanguages.
+ if (supported_languages_.Pointer()->empty()) {
+ for (size_t i = 0; i < arraysize(kSupportedLanguages); ++i)
+ supported_languages_.Pointer()->insert(kSupportedLanguages[i]);
+ }
+}
+
+// static
void TranslateManager::GetSupportedLanguages(
std::vector<std::string>* languages) {
DCHECK(languages && languages->empty());
- for (size_t i = 0; i < arraysize(kSupportedLanguages); ++i)
- languages->push_back(kSupportedLanguages[i]);
+ InitSupportedLanguages();
+ std::set<std::string>* supported_languages = supported_languages_.Pointer();
+ std::set<std::string>::const_iterator iter = supported_languages->begin();
+ for (; iter != supported_languages->end(); ++iter)
+ languages->push_back(*iter);
}
// static
@@ -177,12 +243,8 @@ std::string TranslateManager::GetLanguageCode(
// static
bool TranslateManager::IsSupportedLanguage(const std::string& page_language) {
- std::set<std::string>* supported_languages = supported_languages_.Pointer();
- if (supported_languages->empty()) {
- for (size_t i = 0; i < arraysize(kSupportedLanguages); ++i)
- supported_languages->insert(kSupportedLanguages[i]);
- }
- return supported_languages->find(page_language) != supported_languages->end();
+ InitSupportedLanguages();
+ return supported_languages_.Pointer()->count(page_language) != 0;
}
void TranslateManager::Observe(NotificationType type,
@@ -288,54 +350,74 @@ void TranslateManager::OnURLFetchComplete(const URLFetcher* source,
const net::ResponseCookies& cookies,
const std::string& data) {
scoped_ptr<const URLFetcher> delete_ptr(source);
- DCHECK(translate_script_request_pending_);
- translate_script_request_pending_ = false;
+ DCHECK(translate_script_request_pending_ || language_list_request_pending_);
+ // We quickly recognize that we are handling a translate script request
+ // if we don't have a language_list_request_pending_. Otherwise we do the
+ // more expensive check of confirming we got the kTranslateScriptURL in the
+ // rare case where we would have both requests pending at the same time.
+ bool translate_script_request = !language_list_request_pending_ ||
+ url == GURL(kTranslateScriptURL);
+ // Here we make sure that if we didn't get the translate_script_request,
+ // we actually got a language_list_request.
+ DCHECK(translate_script_request || url == GURL(kLanguageListFetchURL));
+ if (translate_script_request)
+ translate_script_request_pending_ = false;
+ else
+ language_list_request_pending_ = false;
+
bool error =
(status.status() != net::URLRequestStatus::SUCCESS ||
response_code != 200);
- if (!error) {
- base::StringPiece str = ResourceBundle::GetSharedInstance().
- GetRawDataResource(IDR_TRANSLATE_JS);
- DCHECK(translate_script_.empty());
- str.CopyToString(&translate_script_);
- translate_script_ += "\n" + data;
- // We'll expire the cached script after some time, to make sure long running
- // browsers still get fixes that might get pushed with newer scripts.
- MessageLoop::current()->PostDelayedTask(FROM_HERE,
- method_factory_.NewRunnableMethod(
- &TranslateManager::ClearTranslateScript),
- translate_script_expiration_delay_);
- }
-
- // Process any pending requests.
- std::vector<PendingRequest>::const_iterator iter;
- for (iter = pending_requests_.begin(); iter != pending_requests_.end();
- ++iter) {
- const PendingRequest& request = *iter;
- TabContents* tab = tab_util::GetTabContentsByID(request.render_process_id,
- request.render_view_id);
- if (!tab) {
- // The tab went away while we were retrieving the script.
- continue;
- }
- NavigationEntry* entry = tab->controller().GetActiveEntry();
- if (!entry || entry->page_id() != request.page_id) {
- // We navigated away from the page the translation was triggered on.
- continue;
+ if (translate_script_request) {
+ if (!error) {
+ base::StringPiece str = ResourceBundle::GetSharedInstance().
+ GetRawDataResource(IDR_TRANSLATE_JS);
+ DCHECK(translate_script_.empty());
+ str.CopyToString(&translate_script_);
+ translate_script_ += "\n" + data;
+ // We'll expire the cached script after some time, to make sure long
+ // running browsers still get fixes that might get pushed with newer
+ // scripts.
+ MessageLoop::current()->PostDelayedTask(FROM_HERE,
+ method_factory_.NewRunnableMethod(
+ &TranslateManager::ClearTranslateScript),
+ translate_script_expiration_delay_);
}
+ // Process any pending requests.
+ std::vector<PendingRequest>::const_iterator iter;
+ for (iter = pending_requests_.begin(); iter != pending_requests_.end();
+ ++iter) {
+ const PendingRequest& request = *iter;
+ TabContents* tab = tab_util::GetTabContentsByID(request.render_process_id,
+ request.render_view_id);
+ if (!tab) {
+ // The tab went away while we were retrieving the script.
+ continue;
+ }
+ NavigationEntry* entry = tab->controller().GetActiveEntry();
+ if (!entry || entry->page_id() != request.page_id) {
+ // We navigated away from the page the translation was triggered on.
+ continue;
+ }
- if (error) {
- ShowInfoBar(tab, TranslateInfoBarDelegate::CreateErrorDelegate(
- TranslateErrors::NETWORK, tab,
- request.source_lang, request.target_lang));
- } else {
- // Translate the page.
- DoTranslatePage(tab, translate_script_,
- request.source_lang, request.target_lang);
+ if (error) {
+ ShowInfoBar(tab, TranslateInfoBarDelegate::CreateErrorDelegate(
+ TranslateErrors::NETWORK, tab,
+ request.source_lang, request.target_lang));
+ } else {
+ // Translate the page.
+ DoTranslatePage(tab, translate_script_,
+ request.source_lang, request.target_lang);
+ }
}
+ pending_requests_.clear();
+ } else { // if (translate_script_request)
+ if (!error)
+ SetSupportedLanguages(data);
+ else
+ VLOG(1) << "Failed to Fetch languages from: " << kLanguageListFetchURL;
}
- pending_requests_.clear();
}
// static
@@ -346,7 +428,8 @@ bool TranslateManager::IsShowingTranslateInfobar(TabContents* tab) {
TranslateManager::TranslateManager()
: ALLOW_THIS_IN_INITIALIZER_LIST(method_factory_(this)),
translate_script_expiration_delay_(kTranslateScriptExpirationDelayMS),
- translate_script_request_pending_(false) {
+ translate_script_request_pending_(false),
+ language_list_request_pending_(false) {
notification_registrar_.Add(this, NotificationType::NAV_ENTRY_COMMITTED,
NotificationService::AllSources());
notification_registrar_.Add(this, NotificationType::TAB_LANGUAGE_DETERMINED,
@@ -620,6 +703,27 @@ void TranslateManager::InitAcceptLanguages(PrefService* prefs) {
accept_languages_[prefs] = accept_langs_set;
}
+void TranslateManager::FetchLanguageListFromTranslateServer(
+ PrefService* prefs) {
+ if (language_list_request_pending_)
+ return;
+
+ // We don't want to do this when translate is disabled.
+ DCHECK(prefs != NULL);
+ if (CommandLine::ForCurrentProcess()->HasSwitch(
+ switches::kDisableTranslate) ||
+ (prefs != NULL && !prefs->GetBoolean(prefs::kEnableTranslate))) {
+ return;
+ }
+
+ language_list_request_pending_ = true;
+ URLFetcher* fetcher = URLFetcher::Create(1, GURL(kLanguageListFetchURL),
+ URLFetcher::GET, this);
+ fetcher->set_request_context(Profile::GetDefaultRequestContext());
+ fetcher->set_max_retries(kMaxRetryLanguageListFetch);
+ fetcher->Start();
+}
+
void TranslateManager::RequestTranslateScript() {
if (translate_script_request_pending_)
return;
diff --git a/chrome/browser/translate/translate_manager.h b/chrome/browser/translate/translate_manager.h
index 1e2d54a..1c5caa0 100644
--- a/chrome/browser/translate/translate_manager.h
+++ b/chrome/browser/translate/translate_manager.h
@@ -39,6 +39,12 @@ class TranslateManager : public NotificationObserver,
virtual ~TranslateManager();
+ // Let the caller decide if and when we should fetch the language list from
+ // the translate server. This is a NOOP if switches::kDisableTranslate is
+ // set or if prefs::kEnableTranslate is set to false.
+ // It will not retry more than kMaxRetryLanguageListFetch times.
+ void FetchLanguageListFromTranslateServer(PrefService* prefs);
+
// Translates the page contents from |source_lang| to |target_lang|.
// The actual translation might be performed asynchronously if the translate
// script is not yet available.
@@ -94,6 +100,9 @@ class TranslateManager : public NotificationObserver,
// Returns true if |language| is supported by the translation server.
static bool IsSupportedLanguage(const std::string& language);
+ // static const values shared with our browser tests.
+ static const char* const kLanguageListCallbackName;
+ static const char* const kTargetLanguagesKey;
protected:
TranslateManager();
@@ -111,6 +120,14 @@ class TranslateManager : public NotificationObserver,
std::string target_lang;
};
+ // Fills supported_languages_ with the list of languages that the translate
+ // server can translate to and from.
+ static void SetSupportedLanguages(const std::string& language_list);
+
+ // Initializes the list of supported languages if it wasn't initialized before
+ // in case we failed to get them from the server, or didn't get them just yet.
+ static void InitSupportedLanguages();
+
// Starts the translation process on |tab| containing the page in the
// |page_lang| language.
void InitiateTranslation(TabContents* tab, const std::string& page_lang);
@@ -127,8 +144,8 @@ class TranslateManager : public NotificationObserver,
const std::string& source_lang,
const std::string& target_lang);
- // Shows the after translate or error infobar depending on the details.
- void PageTranslated(TabContents* tab, PageTranslatedDetails* details);
+ // Shows the after translate or error infobar depending on the details.
+ void PageTranslated(TabContents* tab, PageTranslatedDetails* details);
// Returns true if the passed language has been configured by the user as an
// accept language.
@@ -175,6 +192,9 @@ class TranslateManager : public NotificationObserver,
// Whether the translate JS is currently being retrieved.
bool translate_script_request_pending_;
+ // Whether the list of languages is currently being retrieved.
+ bool language_list_request_pending_;
+
// The list of pending translate requests. Translate requests are queued when
// the translate script is not ready and has to be fetched from the translate
// server.
diff --git a/chrome/browser/translate/translate_manager_browsertest.cc b/chrome/browser/translate/translate_manager_browsertest.cc
index f5f7631..0e0b50c 100644
--- a/chrome/browser/translate/translate_manager_browsertest.cc
+++ b/chrome/browser/translate/translate_manager_browsertest.cc
@@ -3,9 +3,12 @@
// found in the LICENSE file.
+#include <algorithm>
#include <set>
+#include <vector>
#include "base/utf_string_conversions.h"
+#include "base/stringprintf.h"
#include "chrome/app/chrome_command_ids.h"
#include "chrome/browser/prefs/pref_change_registrar.h"
#include "chrome/browser/prefs/pref_service.h"
@@ -177,7 +180,7 @@ class TranslateManagerTest : public TabContentsWrapperTestHarness,
URLFetcher::set_factory(NULL);
}
- void SimulateURLFetch(bool success) {
+ void SimulateTranslateScriptURLFetch(bool success) {
TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(0);
ASSERT_TRUE(fetcher);
net::URLRequestStatus status;
@@ -189,6 +192,34 @@ class TranslateManagerTest : public TabContentsWrapperTestHarness,
std::string());
}
+ void SimulateSupportedLanguagesURLFetch(
+ bool success, const std::vector<std::string>& languages) {
+ TestURLFetcher* fetcher = url_fetcher_factory_.GetFetcherByID(1);
+ ASSERT_TRUE(fetcher);
+ net::URLRequestStatus status;
+ status.set_status(success ? net::URLRequestStatus::SUCCESS :
+ net::URLRequestStatus::FAILED);
+
+ std::string data;
+ if (success) {
+ data = base::StringPrintf("%s{'sl': {'bla': 'bla'}, '%s': {",
+ TranslateManager::kLanguageListCallbackName,
+ TranslateManager::kTargetLanguagesKey);
+ const char* comma = "";
+ for (size_t i = 0; i < languages.size(); ++i) {
+ data += base::StringPrintf(
+ "%s'%s': 'UnusedFullName'", comma, languages[i].c_str());
+ if (i == 0)
+ comma = ",";
+ }
+ data += "}})";
+ }
+ fetcher->delegate()->OnURLFetchComplete(fetcher, fetcher->original_url(),
+ status, success ? 200 : 500,
+ net::ResponseCookies(),
+ data);
+ }
+
void SetPrefObserverExpectation(const char* path) {
EXPECT_CALL(
pref_observer_,
@@ -300,7 +331,7 @@ TEST_F(TranslateManagerTest, NormalTranslate) {
// Simulate the translate script being retrieved (it only needs to be done
// once in the test as it is cached).
- SimulateURLFetch(true);
+ SimulateTranslateScriptURLFetch(true);
// Test that we sent the right message to the renderer.
int page_id = 0;
@@ -361,7 +392,7 @@ TEST_F(TranslateManagerTest, TranslateScriptNotAvailable) {
process()->sink().ClearMessages();
infobar->Translate();
// Simulate a failure retrieving the translate script.
- SimulateURLFetch(false);
+ SimulateTranslateScriptURLFetch(false);
// We should not have sent any message to translate to the renderer.
EXPECT_FALSE(GetTranslateMessage(NULL, NULL, NULL));
@@ -389,13 +420,14 @@ TEST_F(TranslateManagerTest, TranslateUnknownLanguage) {
menu->ExecuteCommand(IDC_CONTENT_CONTEXT_TRANSLATE);
// To test that bug #49018 if fixed, make sure we deal correctly with errors.
- SimulateURLFetch(false); // Simulate a failure to fetch the translate script.
+ // Simulate a failure to fetch the translate script.
+ SimulateTranslateScriptURLFetch(false);
TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATION_ERROR, infobar->type());
EXPECT_TRUE(infobar->IsError());
infobar->MessageInfoBarButtonPressed();
- SimulateURLFetch(true); // This time succeed.
+ SimulateTranslateScriptURLFetch(true); // This time succeed.
// Simulate the render notifying the translation has been done, the server
// having detected the page was in a known and supported language.
@@ -506,6 +538,59 @@ TEST_F(TranslateManagerTest, TestAllLanguages) {
}
}
+// Test the fetching of languages from the translate server
+TEST_F(TranslateManagerTest, FetchLanguagesFromTranslateServer) {
+ std::vector<std::string> server_languages;
+ // A list of languages to fake being returned by the translate server.
+ server_languages.push_back("aa");
+ server_languages.push_back("bb");
+ server_languages.push_back("ab");
+ server_languages.push_back("en-CA");
+ server_languages.push_back("zz");
+ server_languages.push_back("yy");
+ server_languages.push_back("fr-FR");
+
+ // First, get the default languages list:
+ std::vector<std::string> default_supported_languages;
+ TranslateManager::GetSupportedLanguages(&default_supported_languages);
+ // To make sure we got the defaults and don't confuse them with the mocks.
+ ASSERT_NE(default_supported_languages.size(), server_languages.size());
+
+ TranslateManager::GetInstance()->FetchLanguageListFromTranslateServer(
+ contents()->profile()->GetPrefs());
+
+ // Check that we still get the defaults until the URLFetch has completed.
+ std::vector<std::string> current_supported_languages;
+ TranslateManager::GetSupportedLanguages(&current_supported_languages);
+ EXPECT_EQ(default_supported_languages, current_supported_languages);
+
+ // Also check that it didn't change if we failed the URL fetch.
+ SimulateSupportedLanguagesURLFetch(false, std::vector<std::string>());
+ current_supported_languages.clear();
+ TranslateManager::GetSupportedLanguages(&current_supported_languages);
+ EXPECT_EQ(default_supported_languages, current_supported_languages);
+
+ // Now check that we got the appropriate set of languages from the server.
+ TranslateManager::GetInstance()->FetchLanguageListFromTranslateServer(
+ contents()->profile()->GetPrefs());
+ SimulateSupportedLanguagesURLFetch(true, server_languages);
+ current_supported_languages.clear();
+ TranslateManager::GetSupportedLanguages(&current_supported_languages);
+ // Not sure we need to guarantee the order of languages, so we find them.
+ EXPECT_EQ(server_languages.size(), current_supported_languages.size());
+ for (size_t i = 0; i < server_languages.size(); ++i) {
+ EXPECT_NE(current_supported_languages.end(),
+ std::find(current_supported_languages.begin(),
+ current_supported_languages.end(),
+ server_languages[i]));
+ }
+
+ // Reset to original state.
+ TranslateManager::GetInstance()->FetchLanguageListFromTranslateServer(
+ contents()->profile()->GetPrefs());
+ SimulateSupportedLanguagesURLFetch(true, default_supported_languages);
+}
+
// Tests auto-translate on page.
TEST_F(TranslateManagerTest, AutoTranslateOnNavigate) {
// Simulate navigating to a page and getting its language.
@@ -515,7 +600,8 @@ TEST_F(TranslateManagerTest, AutoTranslateOnNavigate) {
TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
infobar->Translate();
- SimulateURLFetch(true); // Simulate the translate script being retrieved.
+ // Simulate the translate script being retrieved.
+ SimulateTranslateScriptURLFetch(true);
rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en",
TranslateErrors::NONE));
@@ -687,7 +773,8 @@ TEST_F(TranslateManagerTest, TranslateCloseInfoBarInPageNavigation) {
TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
infobar->Translate();
- SimulateURLFetch(true); // Simulate the translate script being retrieved.
+ // Simulate the translate script being retrieved.
+ SimulateTranslateScriptURLFetch(true);
rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en",
TranslateErrors::NONE));
@@ -716,7 +803,8 @@ TEST_F(TranslateManagerTest, TranslateInPageNavigation) {
TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
infobar->Translate();
- SimulateURLFetch(true); // Simulate the translate script being retrieved.
+ // Simulate the translate script being retrieved.
+ SimulateTranslateScriptURLFetch(true);
rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en",
TranslateErrors::NONE));
// The after translate infobar is showing.
@@ -753,7 +841,7 @@ TEST_F(TranslateManagerTest, ServerReportsUnsupportedLanguage) {
ASSERT_TRUE(infobar != NULL);
process()->sink().ClearMessages();
infobar->Translate();
- SimulateURLFetch(true);
+ SimulateTranslateScriptURLFetch(true);
// Simulate the render notifying the translation has been done, but it
// reports a language we don't support.
rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "qbz", "en",
@@ -936,8 +1024,8 @@ TEST_F(TranslateManagerTest, AlwaysTranslateLanguagePref) {
TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATING, infobar->type());
-
- SimulateURLFetch(true); // Simulate the translate script being retrieved.
+ // Simulate the translate script being retrieved.
+ SimulateTranslateScriptURLFetch(true);
int page_id = 0;
std::string original_lang, target_lang;
EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
@@ -1007,7 +1095,8 @@ TEST_F(TranslateManagerTest, ContextMenu) {
TranslateInfoBarDelegate* infobar = GetTranslateInfoBar();
ASSERT_TRUE(infobar != NULL);
EXPECT_EQ(TranslateInfoBarDelegate::TRANSLATING, infobar->type());
- SimulateURLFetch(true); // Simulate the translate script being retrieved.
+ // Simulate the translate script being retrieved.
+ SimulateTranslateScriptURLFetch(true);
int page_id = 0;
std::string original_lang, target_lang;
EXPECT_TRUE(GetTranslateMessage(&page_id, &original_lang, &target_lang));
@@ -1117,7 +1206,7 @@ TEST_F(TranslateManagerTest, BeforeTranslateExtraButtons) {
EXPECT_TRUE(translate_prefs.IsLanguagePairWhitelisted("fr", "en"));
// Simulate the translate script being retrieved (it only needs to be done
// once in the test as it is cached).
- SimulateURLFetch(true);
+ SimulateTranslateScriptURLFetch(true);
// That should have triggered a page translate.
int page_id = 0;
std::string original_lang, target_lang;
@@ -1179,7 +1268,7 @@ TEST_F(TranslateManagerTest, ScriptExpires) {
ASSERT_TRUE(infobar != NULL);
process()->sink().ClearMessages();
infobar->Translate();
- SimulateURLFetch(true);
+ SimulateTranslateScriptURLFetch(true);
rvh()->TestOnMessageReceived(ViewHostMsg_PageTranslated(0, 0, "fr", "en",
TranslateErrors::NONE));
@@ -1198,7 +1287,7 @@ TEST_F(TranslateManagerTest, ScriptExpires) {
process()->sink().GetFirstMessageMatching(ViewMsg_TranslatePage::ID) ==
NULL);
// Now simulate the URL fetch.
- SimulateURLFetch(true);
+ SimulateTranslateScriptURLFetch(true);
// Now the message should have been sent.
int page_id = 0;
std::string original_lang, target_lang;