Index: chrome/browser/translate/translate_manager.cc |
diff --git a/chrome/browser/translate/translate_manager.cc b/chrome/browser/translate/translate_manager.cc |
index a9979ed6cb47e6b5753a91aba73f14faf2aae3e8..201f7e88f793d066b0b3caeda184e47a6dc14ea1 100644 |
--- a/chrome/browser/translate/translate_manager.cc |
+++ b/chrome/browser/translate/translate_manager.cc |
@@ -81,6 +81,10 @@ const int kTranslateLoadCheckDelayMs = 150; |
// loading before giving up the translation |
const int kMaxTranslateLoadCheckAttempts = 20; |
+// file extensions tested for in IsTranslatableURL() |
+const char kFileExtMHTMLShort[] = "mht"; |
+const char kFileExtMHTMLLong[] = "mhtml"; |
+ |
} // namespace |
TranslateManager::~TranslateManager() { |
@@ -101,6 +105,12 @@ bool TranslateManager::IsTranslatableURL(const GURL& url) { |
// - Chrome OS file manager extension |
// - an FTP page (as FTP pages tend to have long lists of filenames that may |
// confuse the CLD) |
+ // - an MHTML page (Chrome does not load external resources when displaying |
+ // MHTML pages, see bug 262953) |
+ |
+ // extract file extension (empty if URL does not reference a file) |
+ std::string file_extension = url.ExtractFileExtension(); |
+ |
return !url.is_empty() && |
!url.SchemeIs(chrome::kChromeUIScheme) && |
!url.SchemeIs(chrome::kChromeDevToolsScheme) && |
@@ -108,7 +118,9 @@ bool TranslateManager::IsTranslatableURL(const GURL& url) { |
!(url.SchemeIs(extensions::kExtensionScheme) && |
url.DomainIs(kFileBrowserDomain)) && |
#endif |
- !url.SchemeIs(chrome::kFtpScheme); |
+ !url.SchemeIs(chrome::kFtpScheme) && |
+ !(file_extension.compare(kFileExtMHTMLShort) == 0 || |
MAD
2013/07/29 20:39:17
Shouldn't we do a case insensitive compare?
|
+ file_extension.compare(kFileExtMHTMLLong) == 0); |
} |
// static |