Index: chrome/browser/renderer_context_menu/render_view_context_menu.cc |
diff --git a/chrome/browser/renderer_context_menu/render_view_context_menu.cc b/chrome/browser/renderer_context_menu/render_view_context_menu.cc |
index af666b7e166ad76b3bfafb93b376d7f3d851c08c..fc76b17d38ab7b64bdcc0e9f4fc62b9689676ed9 100644 |
--- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc |
+++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc |
@@ -31,6 +31,8 @@ |
#include "chrome/browser/download/download_stats.h" |
#include "chrome/browser/extensions/devtools_util.h" |
#include "chrome/browser/extensions/extension_service.h" |
+#include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings.h" |
+#include "chrome/browser/net/spdyproxy/data_reduction_proxy_chrome_settings_factory.h" |
#include "chrome/browser/plugins/chrome_plugin_service_filter.h" |
#include "chrome/browser/prefs/incognito_mode_prefs.h" |
#include "chrome/browser/profiles/profile.h" |
@@ -148,69 +150,70 @@ const struct UmaEnumCommandIdPair { |
int enum_id; |
int control_id; |
} kUmaEnumToControlId[] = { |
- /* |
- enum id for 0, 1 are detected using |
- RenderViewContextMenu::IsContentCustomCommandId and |
- ContextMenuMatcher::IsExtensionsCustomCommandId |
- */ |
- {2, IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST}, |
- {3, IDC_CONTENT_CONTEXT_OPENLINKNEWTAB}, |
- {4, IDC_CONTENT_CONTEXT_OPENLINKNEWWINDOW}, |
- {5, IDC_CONTENT_CONTEXT_OPENLINKOFFTHERECORD}, |
- {6, IDC_CONTENT_CONTEXT_SAVELINKAS}, |
- {7, IDC_CONTENT_CONTEXT_SAVEAVAS}, |
- {8, IDC_CONTENT_CONTEXT_SAVEIMAGEAS}, |
- {9, IDC_CONTENT_CONTEXT_COPYLINKLOCATION}, |
- {10, IDC_CONTENT_CONTEXT_COPYIMAGELOCATION}, |
- {11, IDC_CONTENT_CONTEXT_COPYAVLOCATION}, |
- {12, IDC_CONTENT_CONTEXT_COPYIMAGE}, |
- {13, IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB}, |
- {14, IDC_CONTENT_CONTEXT_OPENAVNEWTAB}, |
- {15, IDC_CONTENT_CONTEXT_PLAYPAUSE}, |
- {16, IDC_CONTENT_CONTEXT_MUTE}, |
- {17, IDC_CONTENT_CONTEXT_LOOP}, |
- {18, IDC_CONTENT_CONTEXT_CONTROLS}, |
- {19, IDC_CONTENT_CONTEXT_ROTATECW}, |
- {20, IDC_CONTENT_CONTEXT_ROTATECCW}, |
- {21, IDC_BACK}, |
- {22, IDC_FORWARD}, |
- {23, IDC_SAVE_PAGE}, |
- {24, IDC_RELOAD}, |
- {25, IDC_CONTENT_CONTEXT_RELOAD_PACKAGED_APP}, |
- {26, IDC_CONTENT_CONTEXT_RESTART_PACKAGED_APP}, |
- {27, IDC_PRINT}, |
- {28, IDC_VIEW_SOURCE}, |
- {29, IDC_CONTENT_CONTEXT_INSPECTELEMENT}, |
- {30, IDC_CONTENT_CONTEXT_INSPECTBACKGROUNDPAGE}, |
- {31, IDC_CONTENT_CONTEXT_VIEWPAGEINFO}, |
- {32, IDC_CONTENT_CONTEXT_TRANSLATE}, |
- {33, IDC_CONTENT_CONTEXT_RELOADFRAME}, |
- {34, IDC_CONTENT_CONTEXT_VIEWFRAMESOURCE}, |
- {35, IDC_CONTENT_CONTEXT_VIEWFRAMEINFO}, |
- {36, IDC_CONTENT_CONTEXT_UNDO}, |
- {37, IDC_CONTENT_CONTEXT_REDO}, |
- {38, IDC_CONTENT_CONTEXT_CUT}, |
- {39, IDC_CONTENT_CONTEXT_COPY}, |
- {40, IDC_CONTENT_CONTEXT_PASTE}, |
- {41, IDC_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE}, |
- {42, IDC_CONTENT_CONTEXT_DELETE}, |
- {43, IDC_CONTENT_CONTEXT_SELECTALL}, |
- {44, IDC_CONTENT_CONTEXT_SEARCHWEBFOR}, |
- {45, IDC_CONTENT_CONTEXT_GOTOURL}, |
- {46, IDC_CONTENT_CONTEXT_LANGUAGE_SETTINGS}, |
- {47, IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_SETTINGS}, |
- {48, IDC_CONTENT_CONTEXT_ADDSEARCHENGINE}, |
- {52, IDC_CONTENT_CONTEXT_OPENLINKWITH}, |
- {53, IDC_CHECK_SPELLING_WHILE_TYPING}, |
- {54, IDC_SPELLCHECK_MENU}, |
- {55, IDC_CONTENT_CONTEXT_SPELLING_TOGGLE}, |
- {56, IDC_SPELLCHECK_LANGUAGES_FIRST}, |
- {57, IDC_CONTENT_CONTEXT_SEARCHWEBFORIMAGE}, |
- {58, IDC_SPELLCHECK_SUGGESTION_0}, |
- {59, IDC_SPELLCHECK_ADD_TO_DICTIONARY}, |
- {60, IDC_SPELLPANEL_TOGGLE}, |
- // Add new items here and use |enum_id| from the next line. |
- {61, 0}, // Must be the last. Increment |enum_id| when new IDC was added. |
+ /* |
+ enum id for 0, 1 are detected using |
+ RenderViewContextMenu::IsContentCustomCommandId and |
+ ContextMenuMatcher::IsExtensionsCustomCommandId |
+ */ |
+ {2, IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST}, |
+ {3, IDC_CONTENT_CONTEXT_OPENLINKNEWTAB}, |
+ {4, IDC_CONTENT_CONTEXT_OPENLINKNEWWINDOW}, |
+ {5, IDC_CONTENT_CONTEXT_OPENLINKOFFTHERECORD}, |
+ {6, IDC_CONTENT_CONTEXT_SAVELINKAS}, |
+ {7, IDC_CONTENT_CONTEXT_SAVEAVAS}, |
+ {8, IDC_CONTENT_CONTEXT_SAVEIMAGEAS}, |
+ {9, IDC_CONTENT_CONTEXT_COPYLINKLOCATION}, |
+ {10, IDC_CONTENT_CONTEXT_COPYIMAGELOCATION}, |
+ {11, IDC_CONTENT_CONTEXT_COPYAVLOCATION}, |
+ {12, IDC_CONTENT_CONTEXT_COPYIMAGE}, |
+ {13, IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB}, |
+ {14, IDC_CONTENT_CONTEXT_OPENAVNEWTAB}, |
+ {15, IDC_CONTENT_CONTEXT_PLAYPAUSE}, |
+ {16, IDC_CONTENT_CONTEXT_MUTE}, |
+ {17, IDC_CONTENT_CONTEXT_LOOP}, |
+ {18, IDC_CONTENT_CONTEXT_CONTROLS}, |
+ {19, IDC_CONTENT_CONTEXT_ROTATECW}, |
+ {20, IDC_CONTENT_CONTEXT_ROTATECCW}, |
+ {21, IDC_BACK}, |
+ {22, IDC_FORWARD}, |
+ {23, IDC_SAVE_PAGE}, |
+ {24, IDC_RELOAD}, |
+ {25, IDC_CONTENT_CONTEXT_RELOAD_PACKAGED_APP}, |
+ {26, IDC_CONTENT_CONTEXT_RESTART_PACKAGED_APP}, |
+ {27, IDC_PRINT}, |
+ {28, IDC_VIEW_SOURCE}, |
+ {29, IDC_CONTENT_CONTEXT_INSPECTELEMENT}, |
+ {30, IDC_CONTENT_CONTEXT_INSPECTBACKGROUNDPAGE}, |
+ {31, IDC_CONTENT_CONTEXT_VIEWPAGEINFO}, |
+ {32, IDC_CONTENT_CONTEXT_TRANSLATE}, |
+ {33, IDC_CONTENT_CONTEXT_RELOADFRAME}, |
+ {34, IDC_CONTENT_CONTEXT_VIEWFRAMESOURCE}, |
+ {35, IDC_CONTENT_CONTEXT_VIEWFRAMEINFO}, |
+ {36, IDC_CONTENT_CONTEXT_UNDO}, |
+ {37, IDC_CONTENT_CONTEXT_REDO}, |
+ {38, IDC_CONTENT_CONTEXT_CUT}, |
+ {39, IDC_CONTENT_CONTEXT_COPY}, |
+ {40, IDC_CONTENT_CONTEXT_PASTE}, |
+ {41, IDC_CONTENT_CONTEXT_PASTE_AND_MATCH_STYLE}, |
+ {42, IDC_CONTENT_CONTEXT_DELETE}, |
+ {43, IDC_CONTENT_CONTEXT_SELECTALL}, |
+ {44, IDC_CONTENT_CONTEXT_SEARCHWEBFOR}, |
+ {45, IDC_CONTENT_CONTEXT_GOTOURL}, |
+ {46, IDC_CONTENT_CONTEXT_LANGUAGE_SETTINGS}, |
+ {47, IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_SETTINGS}, |
+ {48, IDC_CONTENT_CONTEXT_ADDSEARCHENGINE}, |
+ {52, IDC_CONTENT_CONTEXT_OPENLINKWITH}, |
+ {53, IDC_CHECK_SPELLING_WHILE_TYPING}, |
+ {54, IDC_SPELLCHECK_MENU}, |
+ {55, IDC_CONTENT_CONTEXT_SPELLING_TOGGLE}, |
+ {56, IDC_SPELLCHECK_LANGUAGES_FIRST}, |
+ {57, IDC_CONTENT_CONTEXT_SEARCHWEBFORIMAGE}, |
+ {58, IDC_SPELLCHECK_SUGGESTION_0}, |
+ {59, IDC_SPELLCHECK_ADD_TO_DICTIONARY}, |
+ {60, IDC_SPELLPANEL_TOGGLE}, |
+ {61, IDC_CONTENT_CONTEXT_OPEN_ORIGINAL_IMAGE_NEW_TAB}, |
+ // Add new items here and use |enum_id| from the next line. |
+ {62, 0}, // Must be the last. Increment |enum_id| when new IDC was added. |
}; |
// Collapses large ranges of ids before looking for UMA enum. |
@@ -692,8 +695,16 @@ void RenderViewContextMenu::AppendImageItems() { |
IDS_CONTENT_CONTEXT_COPYIMAGELOCATION); |
menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYIMAGE, |
IDS_CONTENT_CONTEXT_COPYIMAGE); |
- menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB, |
- IDS_CONTENT_CONTEXT_OPENIMAGENEWTAB); |
+ if (!browser_context_->IsOffTheRecord() && |
+ DataReductionProxyChromeSettingsFactory::GetForBrowserContext( |
+ browser_context_)->CanUseDataReductionProxy(params_.src_url)) { |
+ menu_model_.AddItemWithStringId( |
+ IDC_CONTENT_CONTEXT_OPEN_ORIGINAL_IMAGE_NEW_TAB, |
+ IDS_CONTENT_CONTEXT_OPEN_ORIGINAL_IMAGE_NEW_TAB); |
+ } else { |
+ menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB, |
+ IDS_CONTENT_CONTEXT_OPENIMAGENEWTAB); |
+ } |
} |
void RenderViewContextMenu::AppendSearchWebForImageItems() { |
@@ -1102,6 +1113,7 @@ bool RenderViewContextMenu::IsCommandIdEnabled(int id) const { |
// The images shown in the most visited thumbnails can't be opened or |
// searched for conventionally. |
+ case IDC_CONTENT_CONTEXT_OPEN_ORIGINAL_IMAGE_NEW_TAB: |
case IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB: |
case IDC_CONTENT_CONTEXT_SEARCHWEBFORIMAGE: |
return params_.src_url.is_valid() && |
@@ -1400,6 +1412,13 @@ void RenderViewContextMenu::ExecuteCommand(int id, int event_flags) { |
GetImageThumbnailForSearch(); |
break; |
+ case IDC_CONTENT_CONTEXT_OPEN_ORIGINAL_IMAGE_NEW_TAB: |
+ OpenURLWithExtraHeaders( |
+ params_.src_url, GetDocumentURL(params_), NEW_BACKGROUND_TAB, |
+ ui::PAGE_TRANSITION_LINK, |
+ data_reduction_proxy::kDataReductionPassThroughHeader); |
+ break; |
+ |
case IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB: |
case IDC_CONTENT_CONTEXT_OPENAVNEWTAB: |
OpenURL(params_.src_url, |