Index: components/translate/content/renderer/translate_helper.cc |
diff --git a/chrome/renderer/translate/translate_helper.cc b/components/translate/content/renderer/translate_helper.cc |
similarity index 90% |
rename from chrome/renderer/translate/translate_helper.cc |
rename to components/translate/content/renderer/translate_helper.cc |
index c27cb431723f43e845c6a8c4ef696b4b45246344..5aff9c8c259e2a73ca4ec61a91ed18986a2134da 100644 |
--- a/chrome/renderer/translate/translate_helper.cc |
+++ b/components/translate/content/renderer/translate_helper.cc |
@@ -2,7 +2,7 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "chrome/renderer/translate/translate_helper.h" |
+#include "components/translate/content/renderer/translate_helper.h" |
#include "base/bind.h" |
#include "base/compiler_specific.h" |
@@ -12,19 +12,16 @@ |
#include "base/strings/string16.h" |
#include "base/strings/string_util.h" |
#include "base/strings/utf_string_conversions.h" |
-#include "chrome/renderer/isolated_world_ids.h" |
#include "components/translate/content/common/translate_messages.h" |
#include "components/translate/core/common/translate_constants.h" |
#include "components/translate/core/common/translate_metrics.h" |
#include "components/translate/core/common/translate_util.h" |
#include "components/translate/core/language_detection/language_detection_util.h" |
#include "content/public/common/content_constants.h" |
+#include "content/public/common/url_constants.h" |
#include "content/public/renderer/render_thread.h" |
#include "content/public/renderer/render_view.h" |
-#include "extensions/common/constants.h" |
-#include "extensions/renderer/extension_groups.h" |
#include "ipc/ipc_platform_file.h" |
-#include "content/public/common/url_constants.h" |
#include "third_party/WebKit/public/web/WebDocument.h" |
#include "third_party/WebKit/public/web/WebElement.h" |
#include "third_party/WebKit/public/web/WebFrame.h" |
@@ -73,11 +70,15 @@ bool g_cld_callback_set = false; |
} // namespace |
+namespace translate { |
//////////////////////////////////////////////////////////////////////////////// |
// TranslateHelper, public: |
// |
-TranslateHelper::TranslateHelper(content::RenderView* render_view) |
+TranslateHelper::TranslateHelper(content::RenderView* render_view, |
+ int world_id, |
+ int extension_group, |
+ const std::string& extension_scheme) |
: content::RenderViewObserver(render_view), |
page_seq_no_(0), |
translation_pending_(false), |
@@ -86,6 +87,9 @@ TranslateHelper::TranslateHelper(content::RenderView* render_view) |
cld_data_polling_canceled_(false), |
deferred_page_capture_(false), |
deferred_page_seq_no_(-1), |
+ world_id_(world_id), |
+ extension_group_(extension_group), |
+ extension_scheme_(extension_scheme), |
weak_method_factory_(this) { |
} |
@@ -116,7 +120,7 @@ void TranslateHelper::PrepareForUrl(const GURL& url) { |
return; |
if (url.SchemeIs(url::kFtpScheme)) |
return; |
- if (url.SchemeIs(extensions::kExtensionScheme)) |
+ if (url.SchemeIs(extension_scheme_.c_str())) |
return; |
// Start polling for CLD data. |
@@ -172,7 +176,7 @@ void TranslateHelper::PageCapturedImpl(int page_seq_no, |
html_lang = html_element.getAttribute("lang").utf8(); |
std::string cld_language; |
bool is_cld_reliable; |
- std::string language = translate::DeterminePageLanguage( |
+ std::string language = DeterminePageLanguage( |
content_language, html_lang, contents, &cld_language, &is_cld_reliable); |
if (language.empty()) |
@@ -181,7 +185,7 @@ void TranslateHelper::PageCapturedImpl(int page_seq_no, |
language_determined_time_ = base::TimeTicks::Now(); |
GURL url(document.url()); |
- translate::LanguageDetectionDetails details; |
+ LanguageDetectionDetails details; |
details.time = base::Time::Now(); |
details.url = url; |
details.content_language = content_language; |
@@ -255,10 +259,7 @@ void TranslateHelper::ExecuteScript(const std::string& script) { |
WebScriptSource source = WebScriptSource(ASCIIToUTF16(script)); |
main_frame->executeScriptInIsolatedWorld( |
- chrome::ISOLATED_WORLD_ID_TRANSLATE, |
- &source, |
- 1, |
- extensions::EXTENSION_GROUP_INTERNAL_TRANSLATE_SCRIPTS); |
+ world_id_, &source, 1, extension_group_); |
} |
bool TranslateHelper::ExecuteScriptAndGetBoolResult(const std::string& script, |
@@ -271,11 +272,7 @@ bool TranslateHelper::ExecuteScriptAndGetBoolResult(const std::string& script, |
WebVector<v8::Local<v8::Value> > results; |
WebScriptSource source = WebScriptSource(ASCIIToUTF16(script)); |
main_frame->executeScriptInIsolatedWorld( |
- chrome::ISOLATED_WORLD_ID_TRANSLATE, |
- &source, |
- 1, |
- extensions::EXTENSION_GROUP_INTERNAL_TRANSLATE_SCRIPTS, |
- &results); |
+ world_id_, &source, 1, extension_group_, &results); |
if (results.size() != 1 || results[0].IsEmpty() || !results[0]->IsBoolean()) { |
NOTREACHED(); |
return fallback; |
@@ -294,11 +291,7 @@ std::string TranslateHelper::ExecuteScriptAndGetStringResult( |
WebVector<v8::Local<v8::Value> > results; |
WebScriptSource source = WebScriptSource(ASCIIToUTF16(script)); |
main_frame->executeScriptInIsolatedWorld( |
- chrome::ISOLATED_WORLD_ID_TRANSLATE, |
- &source, |
- 1, |
- extensions::EXTENSION_GROUP_INTERNAL_TRANSLATE_SCRIPTS, |
- &results); |
+ world_id_, &source, 1, extension_group_, &results); |
if (results.size() != 1 || results[0].IsEmpty() || !results[0]->IsString()) { |
NOTREACHED(); |
return std::string(); |
@@ -321,11 +314,7 @@ double TranslateHelper::ExecuteScriptAndGetDoubleResult( |
WebVector<v8::Local<v8::Value> > results; |
WebScriptSource source = WebScriptSource(ASCIIToUTF16(script)); |
main_frame->executeScriptInIsolatedWorld( |
- chrome::ISOLATED_WORLD_ID_TRANSLATE, |
- &source, |
- 1, |
- extensions::EXTENSION_GROUP_INTERNAL_TRANSLATE_SCRIPTS, |
- &results); |
+ world_id_, &source, 1, extension_group_, &results); |
if (results.size() != 1 || results[0].IsEmpty() || !results[0]->IsNumber()) { |
NOTREACHED(); |
return 0.0; |
@@ -408,28 +397,25 @@ void TranslateHelper::OnTranslatePage(int page_seq_no, |
// If the source language is undetermined, we'll let the translate element |
// detect it. |
- source_lang_ = (source_lang != translate::kUnknownLanguageCode) ? |
- source_lang : kAutoDetectionLanguage; |
+ source_lang_ = (source_lang != kUnknownLanguageCode) ? source_lang |
+ : kAutoDetectionLanguage; |
target_lang_ = target_lang; |
- translate::ReportUserActionDuration(language_determined_time_, |
- base::TimeTicks::Now()); |
+ ReportUserActionDuration(language_determined_time_, base::TimeTicks::Now()); |
GURL url(main_frame->document().url()); |
- translate::ReportPageScheme(url.scheme()); |
+ ReportPageScheme(url.scheme()); |
// Set up v8 isolated world with proper content-security-policy and |
// security-origin. |
WebFrame* frame = GetMainFrame(); |
if (frame) { |
frame->setIsolatedWorldContentSecurityPolicy( |
- chrome::ISOLATED_WORLD_ID_TRANSLATE, |
- WebString::fromUTF8(kContentSecurityPolicy)); |
+ world_id_, WebString::fromUTF8(kContentSecurityPolicy)); |
- GURL security_origin = translate::GetTranslateSecurityOrigin(); |
+ GURL security_origin = GetTranslateSecurityOrigin(); |
frame->setIsolatedWorldSecurityOrigin( |
- chrome::ISOLATED_WORLD_ID_TRANSLATE, |
- WebSecurityOrigin::create(security_origin)); |
+ world_id_, WebSecurityOrigin::create(security_origin)); |
} |
if (!IsTranslateLibAvailable()) { |
@@ -465,8 +451,7 @@ void TranslateHelper::CheckTranslateStatus(int page_seq_no) { |
// First check if there was an error. |
if (HasTranslationFailed()) { |
// TODO(toyoshim): Check |errorCode| of translate.js and notify it here. |
- NotifyBrowserTranslationFailed( |
- translate::TranslateErrors::TRANSLATION_ERROR); |
+ NotifyBrowserTranslationFailed(TranslateErrors::TRANSLATION_ERROR); |
return; // There was an error. |
} |
@@ -477,12 +462,10 @@ void TranslateHelper::CheckTranslateStatus(int page_seq_no) { |
if (source_lang_ == kAutoDetectionLanguage) { |
actual_source_lang = GetOriginalPageLanguage(); |
if (actual_source_lang.empty()) { |
- NotifyBrowserTranslationFailed( |
- translate::TranslateErrors::UNKNOWN_LANGUAGE); |
+ NotifyBrowserTranslationFailed(TranslateErrors::UNKNOWN_LANGUAGE); |
return; |
} else if (actual_source_lang == target_lang_) { |
- NotifyBrowserTranslationFailed( |
- translate::TranslateErrors::IDENTICAL_LANGUAGES); |
+ NotifyBrowserTranslationFailed(TranslateErrors::IDENTICAL_LANGUAGES); |
return; |
} |
} else { |
@@ -497,7 +480,7 @@ void TranslateHelper::CheckTranslateStatus(int page_seq_no) { |
translation_pending_ = false; |
// Check JavaScript performance counters for UMA reports. |
- translate::ReportTimeToTranslate( |
+ ReportTimeToTranslate( |
ExecuteScriptAndGetDoubleResult("cr.googleTranslate.translationTime")); |
// Notify the browser we are done. |
@@ -505,7 +488,7 @@ void TranslateHelper::CheckTranslateStatus(int page_seq_no) { |
new ChromeViewHostMsg_PageTranslated(render_view()->GetRoutingID(), |
actual_source_lang, |
target_lang_, |
- translate::TranslateErrors::NONE)); |
+ TranslateErrors::NONE)); |
return; |
} |
@@ -526,8 +509,7 @@ void TranslateHelper::TranslatePageImpl(int page_seq_no, int count) { |
// The library is not ready, try again later, unless we have tried several |
// times unsucessfully already. |
if (++count >= kMaxTranslateInitCheckAttempts) { |
- NotifyBrowserTranslationFailed( |
- translate::TranslateErrors::INITIALIZATION_ERROR); |
+ NotifyBrowserTranslationFailed(TranslateErrors::INITIALIZATION_ERROR); |
return; |
} |
base::MessageLoop::current()->PostDelayedTask( |
@@ -541,14 +523,13 @@ void TranslateHelper::TranslatePageImpl(int page_seq_no, int count) { |
// The library is loaded, and ready for translation now. |
// Check JavaScript performance counters for UMA reports. |
- translate::ReportTimeToBeReady( |
+ ReportTimeToBeReady( |
ExecuteScriptAndGetDoubleResult("cr.googleTranslate.readyTime")); |
- translate::ReportTimeToLoad( |
+ ReportTimeToLoad( |
ExecuteScriptAndGetDoubleResult("cr.googleTranslate.loadTime")); |
if (!StartTranslation()) { |
- NotifyBrowserTranslationFailed( |
- translate::TranslateErrors::TRANSLATION_ERROR); |
+ NotifyBrowserTranslationFailed(TranslateErrors::TRANSLATION_ERROR); |
return; |
} |
// Check the status of the translation. |
@@ -560,7 +541,7 @@ void TranslateHelper::TranslatePageImpl(int page_seq_no, int count) { |
} |
void TranslateHelper::NotifyBrowserTranslationFailed( |
- translate::TranslateErrors::Type error) { |
+ TranslateErrors::Type error) { |
translation_pending_ = false; |
// Notify the browser there was an error. |
render_view()->Send(new ChromeViewHostMsg_PageTranslated( |
@@ -653,3 +634,5 @@ void TranslateHelper::RecordLanguageDetectionTiming( |
content::RenderThread::Get()->UpdateHistograms( |
content::kHistogramSynchronizerReservedSequenceNumber); |
} |
+ |
+} // namespace translate |