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..5b4bbc14c6ec1d3effecf51c9f5545e5b61472db 100644 |
--- a/chrome/browser/translate/translate_manager.cc |
+++ b/chrome/browser/translate/translate_manager.cc |
@@ -101,6 +101,20 @@ 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) |
+ |
+ // get file extension (empty if URL does not reference a file) |
Miguel Garcia
2013/07/22 17:42:00
I'd move this to a method and add a unittest for i
|
+ std::string file_name, file_extension; |
+ size_t path_delim = url.path().rfind('/'); |
+ if (path_delim != std::string::npos) { |
+ file_name = url.path().substr(path_delim+1); |
+ size_t file_delim = file_name.rfind('.'); |
+ if (file_delim != std::string::npos) { |
+ file_extension = file_name.substr(file_delim+1); |
+ } |
+ } |
+ |
return !url.is_empty() && |
!url.SchemeIs(chrome::kChromeUIScheme) && |
!url.SchemeIs(chrome::kChromeDevToolsScheme) && |
@@ -108,7 +122,8 @@ bool TranslateManager::IsTranslatableURL(const GURL& url) { |
!(url.SchemeIs(extensions::kExtensionScheme) && |
url.DomainIs(kFileBrowserDomain)) && |
#endif |
- !url.SchemeIs(chrome::kFtpScheme); |
+ !url.SchemeIs(chrome::kFtpScheme) && |
+ !(file_extension == "mht" || file_extension == "mhtml"); |
Miguel Garcia
2013/07/22 17:42:00
create constants perhaps?
|
} |
// static |