Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(263)

Side by Side Diff: chrome/browser/renderer_context_menu/render_view_context_menu.cc

Issue 1105263004: "Load image" context menu item to reload a LoFi image. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Context menu browser test to unit test and comments Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/renderer_context_menu/render_view_context_menu.h" 5 #include "chrome/browser/renderer_context_menu/render_view_context_menu.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 #include "chrome/browser/ui/tab_contents/core_tab_helper.h" 55 #include "chrome/browser/ui/tab_contents/core_tab_helper.h"
56 #include "chrome/common/chrome_constants.h" 56 #include "chrome/common/chrome_constants.h"
57 #include "chrome/common/chrome_switches.h" 57 #include "chrome/common/chrome_switches.h"
58 #include "chrome/common/content_restriction.h" 58 #include "chrome/common/content_restriction.h"
59 #include "chrome/common/net/url_util.h" 59 #include "chrome/common/net/url_util.h"
60 #include "chrome/common/pref_names.h" 60 #include "chrome/common/pref_names.h"
61 #include "chrome/common/render_messages.h" 61 #include "chrome/common/render_messages.h"
62 #include "chrome/common/spellcheck_messages.h" 62 #include "chrome/common/spellcheck_messages.h"
63 #include "chrome/common/url_constants.h" 63 #include "chrome/common/url_constants.h"
64 #include "chrome/grit/generated_resources.h" 64 #include "chrome/grit/generated_resources.h"
65 #include "components/data_reduction_proxy/core/common/data_reduction_proxy_heade rs.h"
65 #include "components/google/core/browser/google_util.h" 66 #include "components/google/core/browser/google_util.h"
66 #include "components/metrics/proto/omnibox_input_type.pb.h" 67 #include "components/metrics/proto/omnibox_input_type.pb.h"
67 #include "components/omnibox/autocomplete_match.h" 68 #include "components/omnibox/autocomplete_match.h"
68 #include "components/search_engines/template_url.h" 69 #include "components/search_engines/template_url.h"
69 #include "components/search_engines/template_url_service.h" 70 #include "components/search_engines/template_url_service.h"
70 #include "components/translate/core/browser/translate_download_manager.h" 71 #include "components/translate/core/browser/translate_download_manager.h"
71 #include "components/translate/core/browser/translate_manager.h" 72 #include "components/translate/core/browser/translate_manager.h"
72 #include "components/translate/core/browser/translate_prefs.h" 73 #include "components/translate/core/browser/translate_prefs.h"
73 #include "components/user_prefs/user_prefs.h" 74 #include "components/user_prefs/user_prefs.h"
74 #include "content/public/browser/child_process_security_policy.h" 75 #include "content/public/browser/child_process_security_policy.h"
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 {56, IDC_SPELLCHECK_LANGUAGES_FIRST}, 214 {56, IDC_SPELLCHECK_LANGUAGES_FIRST},
214 {57, IDC_CONTENT_CONTEXT_SEARCHWEBFORIMAGE}, 215 {57, IDC_CONTENT_CONTEXT_SEARCHWEBFORIMAGE},
215 {58, IDC_SPELLCHECK_SUGGESTION_0}, 216 {58, IDC_SPELLCHECK_SUGGESTION_0},
216 {59, IDC_SPELLCHECK_ADD_TO_DICTIONARY}, 217 {59, IDC_SPELLCHECK_ADD_TO_DICTIONARY},
217 {60, IDC_SPELLPANEL_TOGGLE}, 218 {60, IDC_SPELLPANEL_TOGGLE},
218 {61, IDC_CONTENT_CONTEXT_OPEN_ORIGINAL_IMAGE_NEW_TAB}, 219 {61, IDC_CONTENT_CONTEXT_OPEN_ORIGINAL_IMAGE_NEW_TAB},
219 {62, IDC_WRITING_DIRECTION_MENU}, 220 {62, IDC_WRITING_DIRECTION_MENU},
220 {63, IDC_WRITING_DIRECTION_DEFAULT}, 221 {63, IDC_WRITING_DIRECTION_DEFAULT},
221 {64, IDC_WRITING_DIRECTION_LTR}, 222 {64, IDC_WRITING_DIRECTION_LTR},
222 {65, IDC_WRITING_DIRECTION_RTL}, 223 {65, IDC_WRITING_DIRECTION_RTL},
224 {66, IDC_CONTENT_CONTEXT_RELOAD_ORIGINAL_IMAGE},
223 // Add new items here and use |enum_id| from the next line. 225 // Add new items here and use |enum_id| from the next line.
224 {66, 0}, // Must be the last. Increment |enum_id| when new IDC was added. 226 // Also, add new items to RenderViewContextMenuItem enum in histograms.xml.
227 {67, 0}, // Must be the last. Increment |enum_id| when new IDC was added.
225 }; 228 };
226 229
227 // Collapses large ranges of ids before looking for UMA enum. 230 // Collapses large ranges of ids before looking for UMA enum.
228 int CollapseCommandsForUMA(int id) { 231 int CollapseCommandsForUMA(int id) {
229 DCHECK(!RenderViewContextMenu::IsContentCustomCommandId(id)); 232 DCHECK(!RenderViewContextMenu::IsContentCustomCommandId(id));
230 DCHECK(!ContextMenuMatcher::IsExtensionsCustomCommandId(id)); 233 DCHECK(!ContextMenuMatcher::IsExtensionsCustomCommandId(id));
231 234
232 if (id >= IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST && 235 if (id >= IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST &&
233 id <= IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_LAST) { 236 id <= IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_LAST) {
234 return IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST; 237 return IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST;
(...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 IDS_CONTENT_CONTEXT_COPYLINKLOCATION); 737 IDS_CONTENT_CONTEXT_COPYLINKLOCATION);
735 } 738 }
736 739
737 void RenderViewContextMenu::AppendImageItems() { 740 void RenderViewContextMenu::AppendImageItems() {
738 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SAVEIMAGEAS, 741 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SAVEIMAGEAS,
739 IDS_CONTENT_CONTEXT_SAVEIMAGEAS); 742 IDS_CONTENT_CONTEXT_SAVEIMAGEAS);
740 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYIMAGELOCATION, 743 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYIMAGELOCATION,
741 IDS_CONTENT_CONTEXT_COPYIMAGELOCATION); 744 IDS_CONTENT_CONTEXT_COPYIMAGELOCATION);
742 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYIMAGE, 745 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_COPYIMAGE,
743 IDS_CONTENT_CONTEXT_COPYIMAGE); 746 IDS_CONTENT_CONTEXT_COPYIMAGE);
747 std::map<std::string, std::string>::const_iterator it =
748 params_.properties.find(data_reduction_proxy::kChromeProxyHeader);
749 if (it != params_.properties.end() && it->second ==
750 data_reduction_proxy::kChromeProxyLoFiDirective) {
751 menu_model_.AddItemWithStringId(
752 IDC_CONTENT_CONTEXT_RELOAD_ORIGINAL_IMAGE,
753 IDS_CONTENT_CONTEXT_RELOAD_ORIGINAL_IMAGE);
754 }
744 DataReductionProxyChromeSettings* settings = 755 DataReductionProxyChromeSettings* settings =
745 DataReductionProxyChromeSettingsFactory::GetForBrowserContext( 756 DataReductionProxyChromeSettingsFactory::GetForBrowserContext(
746 browser_context_); 757 browser_context_);
747 if (settings && settings->CanUseDataReductionProxy(params_.src_url)) { 758 if (settings && settings->CanUseDataReductionProxy(params_.src_url)) {
748 menu_model_.AddItemWithStringId( 759 menu_model_.AddItemWithStringId(
749 IDC_CONTENT_CONTEXT_OPEN_ORIGINAL_IMAGE_NEW_TAB, 760 IDC_CONTENT_CONTEXT_OPEN_ORIGINAL_IMAGE_NEW_TAB,
750 IDS_CONTENT_CONTEXT_OPEN_ORIGINAL_IMAGE_NEW_TAB); 761 IDS_CONTENT_CONTEXT_OPEN_ORIGINAL_IMAGE_NEW_TAB);
751 } else { 762 } else {
752 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB, 763 menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB,
753 IDS_CONTENT_CONTEXT_OPENIMAGENEWTAB); 764 IDS_CONTENT_CONTEXT_OPENIMAGENEWTAB);
(...skipping 400 matching lines...) Expand 10 before | Expand all | Expand 10 after
1154 // Test if file-selection dialogs are forbidden by policy. 1165 // Test if file-selection dialogs are forbidden by policy.
1155 if (!local_state->GetBoolean(prefs::kAllowFileSelectionDialogs)) 1166 if (!local_state->GetBoolean(prefs::kAllowFileSelectionDialogs))
1156 return false; 1167 return false;
1157 1168
1158 return params_.has_image_contents; 1169 return params_.has_image_contents;
1159 } 1170 }
1160 1171
1161 // The images shown in the most visited thumbnails can't be opened or 1172 // The images shown in the most visited thumbnails can't be opened or
1162 // searched for conventionally. 1173 // searched for conventionally.
1163 case IDC_CONTENT_CONTEXT_OPEN_ORIGINAL_IMAGE_NEW_TAB: 1174 case IDC_CONTENT_CONTEXT_OPEN_ORIGINAL_IMAGE_NEW_TAB:
1175 case IDC_CONTENT_CONTEXT_RELOAD_ORIGINAL_IMAGE:
1164 case IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB: 1176 case IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB:
1165 case IDC_CONTENT_CONTEXT_SEARCHWEBFORIMAGE: 1177 case IDC_CONTENT_CONTEXT_SEARCHWEBFORIMAGE:
1166 return params_.src_url.is_valid() && 1178 return params_.src_url.is_valid() &&
1167 (params_.src_url.scheme() != content::kChromeUIScheme); 1179 (params_.src_url.scheme() != content::kChromeUIScheme);
1168 1180
1169 case IDC_CONTENT_CONTEXT_COPYIMAGE: 1181 case IDC_CONTENT_CONTEXT_COPYIMAGE:
1170 return params_.has_image_contents; 1182 return params_.has_image_contents;
1171 1183
1172 // Media control commands should all be disabled if the player is in an 1184 // Media control commands should all be disabled if the player is in an
1173 // error state. 1185 // error state.
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
1469 GetImageThumbnailForSearch(); 1481 GetImageThumbnailForSearch();
1470 break; 1482 break;
1471 1483
1472 case IDC_CONTENT_CONTEXT_OPEN_ORIGINAL_IMAGE_NEW_TAB: 1484 case IDC_CONTENT_CONTEXT_OPEN_ORIGINAL_IMAGE_NEW_TAB:
1473 OpenURLWithExtraHeaders( 1485 OpenURLWithExtraHeaders(
1474 params_.src_url, GetDocumentURL(params_), NEW_BACKGROUND_TAB, 1486 params_.src_url, GetDocumentURL(params_), NEW_BACKGROUND_TAB,
1475 ui::PAGE_TRANSITION_LINK, 1487 ui::PAGE_TRANSITION_LINK,
1476 data_reduction_proxy::kDataReductionPassThroughHeader); 1488 data_reduction_proxy::kDataReductionPassThroughHeader);
1477 break; 1489 break;
1478 1490
1491 case IDC_CONTENT_CONTEXT_RELOAD_ORIGINAL_IMAGE:
1492 ReloadOriginalImage();
1493 break;
1494
1479 case IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB: 1495 case IDC_CONTENT_CONTEXT_OPENIMAGENEWTAB:
1480 case IDC_CONTENT_CONTEXT_OPENAVNEWTAB: 1496 case IDC_CONTENT_CONTEXT_OPENAVNEWTAB:
1481 OpenURL(params_.src_url, 1497 OpenURL(params_.src_url,
1482 GetDocumentURL(params_), 1498 GetDocumentURL(params_),
1483 NEW_BACKGROUND_TAB, 1499 NEW_BACKGROUND_TAB,
1484 ui::PAGE_TRANSITION_LINK); 1500 ui::PAGE_TRANSITION_LINK);
1485 break; 1501 break;
1486 1502
1487 case IDC_CONTENT_CONTEXT_PLAYPAUSE: { 1503 case IDC_CONTENT_CONTEXT_PLAYPAUSE: {
1488 bool play = !!(params_.media_flags & WebContextMenuData::MediaPaused); 1504 bool play = !!(params_.media_flags & WebContextMenuData::MediaPaused);
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
1823 kMaxSelectionTextLength, 1839 kMaxSelectionTextLength,
1824 gfx::WORD_BREAK); 1840 gfx::WORD_BREAK);
1825 } 1841 }
1826 1842
1827 // Controller functions -------------------------------------------------------- 1843 // Controller functions --------------------------------------------------------
1828 1844
1829 void RenderViewContextMenu::CopyImageAt(int x, int y) { 1845 void RenderViewContextMenu::CopyImageAt(int x, int y) {
1830 source_web_contents_->GetRenderViewHost()->CopyImageAt(x, y); 1846 source_web_contents_->GetRenderViewHost()->CopyImageAt(x, y);
1831 } 1847 }
1832 1848
1849 void RenderViewContextMenu::ReloadOriginalImage() {
1850 RenderFrameHost* render_frame_host = GetRenderFrameHost();
1851 if (!render_frame_host)
1852 return;
1853 render_frame_host->Send(new ChromeViewMsg_RequestReloadImageForContextNode(
1854 render_frame_host->GetRoutingID()));
1855 }
1856
1833 void RenderViewContextMenu::GetImageThumbnailForSearch() { 1857 void RenderViewContextMenu::GetImageThumbnailForSearch() {
1834 RenderFrameHost* render_frame_host = GetRenderFrameHost(); 1858 RenderFrameHost* render_frame_host = GetRenderFrameHost();
1835 if (!render_frame_host) 1859 if (!render_frame_host)
1836 return; 1860 return;
1837 render_frame_host->Send(new ChromeViewMsg_RequestThumbnailForContextNode( 1861 render_frame_host->Send(new ChromeViewMsg_RequestThumbnailForContextNode(
1838 render_frame_host->GetRoutingID(), 1862 render_frame_host->GetRoutingID(),
1839 kImageSearchThumbnailMinSize, 1863 kImageSearchThumbnailMinSize,
1840 gfx::Size(kImageSearchThumbnailMaxWidth, 1864 gfx::Size(kImageSearchThumbnailMaxWidth,
1841 kImageSearchThumbnailMaxHeight))); 1865 kImageSearchThumbnailMaxHeight)));
1842 } 1866 }
(...skipping 18 matching lines...) Expand all
1861 source_web_contents_->GetRenderViewHost()-> 1885 source_web_contents_->GetRenderViewHost()->
1862 ExecuteMediaPlayerActionAtLocation(location, action); 1886 ExecuteMediaPlayerActionAtLocation(location, action);
1863 } 1887 }
1864 1888
1865 void RenderViewContextMenu::PluginActionAt( 1889 void RenderViewContextMenu::PluginActionAt(
1866 const gfx::Point& location, 1890 const gfx::Point& location,
1867 const WebPluginAction& action) { 1891 const WebPluginAction& action) {
1868 source_web_contents_->GetRenderViewHost()-> 1892 source_web_contents_->GetRenderViewHost()->
1869 ExecutePluginActionAtLocation(location, action); 1893 ExecutePluginActionAtLocation(location, action);
1870 } 1894 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698