Commit 67755673 authored by toyoshim@chromium.org's avatar toyoshim@chromium.org

Translate: URL check should be done at once

The URL for Chrome OS file manager extension is checked
separately for now. But this must be done in IsTranslatableURL()
at once.

BUG=none
TEST=unit_tests

Review URL: https://codereview.chromium.org/13770003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@192943 0039d316-1c4b-4281-b951-d872f2087c98
parent 4723f884
......@@ -56,6 +56,7 @@
#ifdef FILE_MANAGER_EXTENSION
#include "chrome/browser/chromeos/extensions/file_manager_util.h"
#include "extensions/common/constants.h"
#endif
using content::NavigationController;
......@@ -184,12 +185,19 @@ TranslateManager* TranslateManager::GetInstance() {
// static
bool TranslateManager::IsTranslatableURL(const GURL& url) {
// A URLs is translatable unless it is one of the following:
// - empty (can happen for popups created with window.open(""))
// - an internal URL (chrome:// and others)
// - the devtools (which is considered UI)
// - Chrome OS file manager extension
// - an FTP page (as FTP pages tend to have long lists of filenames that may
// confuse the CLD)
return !url.SchemeIs(chrome::kChromeUIScheme) &&
return !url.is_empty() &&
!url.SchemeIs(chrome::kChromeUIScheme) &&
!url.SchemeIs(chrome::kChromeDevToolsScheme) &&
#ifdef FILE_MANAGER_EXTENSION
!(url.SchemeIs(extensions::kExtensionScheme) &&
url.DomainIs(kFileBrowserDomain)) &&
#endif
!url.SchemeIs(chrome::kFtpScheme);
}
......@@ -487,13 +495,6 @@ TranslateManager::TranslateManager()
void TranslateManager::InitiateTranslation(WebContents* web_contents,
const std::string& page_lang) {
#ifdef FILE_MANAGER_EXTENSION
const GURL& page_url = web_contents->GetURL();
if (page_url.SchemeIs("chrome-extension") &&
page_url.DomainIs(kFileBrowserDomain))
return;
#endif
Profile* profile =
Profile::FromBrowserContext(web_contents->GetBrowserContext());
PrefService* prefs = profile->GetOriginalProfile()->GetPrefs();
......@@ -505,12 +506,6 @@ void TranslateManager::InitiateTranslation(WebContents* web_contents,
if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableTranslate))
return;
NavigationEntry* entry = web_contents->GetController().GetActiveEntry();
if (!entry) {
// This can happen for popups created with window.open("").
return;
}
std::string target_lang = GetTargetLanguage(prefs);
std::string language_code = GetLanguageCode(page_lang);
// Nothing to do if either the language Chrome is in or the language of the
......@@ -524,8 +519,10 @@ void TranslateManager::InitiateTranslation(WebContents* web_contents,
// - similar languages (ex: en-US to en).
// - any user black-listed URLs or user selected language combination.
// - any language the user configured as accepted languages.
if (!IsTranslatableURL(entry->GetURL()) || language_code == target_lang ||
!TranslatePrefs::CanTranslate(prefs, language_code, entry->GetURL()) ||
GURL page_url = web_contents->GetURL();
if (!IsTranslatableURL(page_url) ||
language_code == target_lang ||
!TranslatePrefs::CanTranslate(prefs, language_code, page_url) ||
IsAcceptLanguage(web_contents, language_code)) {
return;
}
......
......@@ -114,8 +114,6 @@ class TranslateManager : public content::NotificationObserver,
private:
friend struct DefaultSingletonTraits<TranslateManager>;
friend class TranslateManagerTest;
FRIEND_TEST_ALL_PREFIXES(TranslateManagerTest, LanguageCodeSynonyms);
// Structure that describes a translate request.
// Translation may be deferred while the translate script is being retrieved
......
// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/translate/translate_manager.h"
#include "content/public/common/url_constants.h"
#include "googleurl/src/gurl.h"
#include "testing/gtest/include/gtest/gtest.h"
#ifdef FILE_MANAGER_EXTENSION
#include "chrome/browser/chromeos/extensions/file_manager_util.h"
#include "extensions/common/constants.h"
#endif
typedef testing::Test TranslateManagerTest;
TEST_F(TranslateManagerTest, CheckTranslatableURL) {
GURL empty_url = GURL("");
EXPECT_FALSE(TranslateManager::IsTranslatableURL(empty_url));
std::string chrome = std::string(chrome::kChromeUIScheme) + "://flags";
GURL chrome_url = GURL(chrome);
EXPECT_FALSE(TranslateManager::IsTranslatableURL(chrome_url));
std::string devtools = std::string(chrome::kChromeDevToolsScheme) + "://";
GURL devtools_url = GURL(devtools);
EXPECT_FALSE(TranslateManager::IsTranslatableURL(devtools_url));
#ifdef FILE_MANAGER_EXTENSION
std::string filemanager =
std::string(extensions::kExtensionScheme) +
std::string("://") +
std::string(kFileBrowserDomain);
GURL filemanager_url = GURL(filemanager);
EXPECT_FALSE(TranslateManager::IsTranslatableURL(filemanager_url));
#endif
std::string ftp = std::string(chrome::kFtpScheme) + "://google.com/pub";
GURL ftp_url = GURL(ftp);
EXPECT_FALSE(TranslateManager::IsTranslatableURL(ftp_url));
GURL right_url = GURL("http://www.tamurayukari.com/");
EXPECT_TRUE(TranslateManager::IsTranslatableURL(right_url));
}
......@@ -1194,6 +1194,7 @@
'browser/thumbnails/render_widget_snapshot_taker_unittest.cc',
'browser/thumbnails/simple_thumbnail_crop_unittest.cc',
'browser/thumbnails/thumbnail_service_unittest.cc',
'browser/translate/translate_manager_unittest.cc',
'browser/ui/android/tab_model/tab_model_unittest.cc',
'browser/ui/ash/event_rewriter_unittest.cc',
'browser/ui/ash/ime_controller_chromeos_unittest.cc',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment