diff options
Diffstat (limited to 'chrome/renderer/render_view.cc')
-rw-r--r-- | chrome/renderer/render_view.cc | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc index 1386917..7030f80 100644 --- a/chrome/renderer/render_view.cc +++ b/chrome/renderer/render_view.cc @@ -838,11 +838,11 @@ void RenderView::CapturePageInfo(int load_id, bool preliminary_capture) { std::string language = DetermineTextLanguage(contents); UMA_HISTOGRAM_MEDIUM_TIMES("Renderer4.LanguageDetection", base::TimeTicks::Now() - begin_time); - + WebKit::WebDocument document = main_frame->document(); // Send the text to the browser for indexing (the browser might decide not // to index, if the URL is HTTPS for instance) and language discovery. Send(new ViewHostMsg_PageContents(routing_id_, url, load_id, contents, - language)); + language, IsPageTranslatable(&document))); } OnCaptureThumbnail(); @@ -1978,6 +1978,23 @@ void RenderView::UpdateTargetURL(const GURL& url, const GURL& fallback_url) { } } +bool RenderView::IsPageTranslatable(WebKit::WebDocument* document) { + std::vector<WebKit::WebElement> meta_elements; + webkit_glue::GetMetaElementsWithName(document, ASCIIToUTF16("google"), + &meta_elements); + std::vector<WebKit::WebElement>::const_iterator iter; + for (iter = meta_elements.begin(); iter != meta_elements.end(); ++iter) { + WebString attribute = iter->getAttribute("value"); + if (attribute.isNull()) // We support both 'value' and 'content'. + attribute = iter->getAttribute("content"); + if (attribute.isNull()) + continue; + if (LowerCaseEqualsASCII(attribute, "notranslate")) + return false; + } + return true; +} + void RenderView::StartNavStateSyncTimerIfNecessary() { int delay; if (send_content_state_immediately_) |