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

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

Issue 1977623002: Updates to DownloadUrlParameters in preparation for OOPIF changes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix Created 4 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 <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <set> 10 #include <set>
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 #include "content/public/browser/download_manager.h" 93 #include "content/public/browser/download_manager.h"
94 #include "content/public/browser/download_save_info.h" 94 #include "content/public/browser/download_save_info.h"
95 #include "content/public/browser/download_url_parameters.h" 95 #include "content/public/browser/download_url_parameters.h"
96 #include "content/public/browser/navigation_details.h" 96 #include "content/public/browser/navigation_details.h"
97 #include "content/public/browser/navigation_entry.h" 97 #include "content/public/browser/navigation_entry.h"
98 #include "content/public/browser/notification_service.h" 98 #include "content/public/browser/notification_service.h"
99 #include "content/public/browser/render_frame_host.h" 99 #include "content/public/browser/render_frame_host.h"
100 #include "content/public/browser/render_process_host.h" 100 #include "content/public/browser/render_process_host.h"
101 #include "content/public/browser/render_view_host.h" 101 #include "content/public/browser/render_view_host.h"
102 #include "content/public/browser/render_widget_host_view.h" 102 #include "content/public/browser/render_widget_host_view.h"
103 #include "content/public/browser/storage_partition.h"
103 #include "content/public/browser/user_metrics.h" 104 #include "content/public/browser/user_metrics.h"
104 #include "content/public/browser/web_contents.h" 105 #include "content/public/browser/web_contents.h"
105 #include "content/public/common/browser_plugin_guest_mode.h" 106 #include "content/public/common/browser_plugin_guest_mode.h"
106 #include "content/public/common/menu_item.h" 107 #include "content/public/common/menu_item.h"
107 #include "content/public/common/ssl_status.h" 108 #include "content/public/common/ssl_status.h"
108 #include "content/public/common/url_utils.h" 109 #include "content/public/common/url_utils.h"
109 #include "extensions/browser/extension_host.h" 110 #include "extensions/browser/extension_host.h"
110 #include "extensions/browser/extension_system.h" 111 #include "extensions/browser/extension_system.h"
111 #include "extensions/browser/guest_view/web_view/web_view_guest.h" 112 #include "extensions/browser/guest_view/web_view/web_view_guest.h"
112 #include "extensions/browser/view_type_utils.h" 113 #include "extensions/browser/view_type_utils.h"
(...skipping 1631 matching lines...) Expand 10 before | Expand all | Expand 10 after
1744 1745
1745 return false; 1746 return false;
1746 } 1747 }
1747 1748
1748 void RenderViewContextMenu::ExecuteCommand(int id, int event_flags) { 1749 void RenderViewContextMenu::ExecuteCommand(int id, int event_flags) {
1749 RenderViewContextMenuBase::ExecuteCommand(id, event_flags); 1750 RenderViewContextMenuBase::ExecuteCommand(id, event_flags);
1750 if (command_executed_) 1751 if (command_executed_)
1751 return; 1752 return;
1752 command_executed_ = true; 1753 command_executed_ = true;
1753 1754
1755 // MAY BE NULL. Check before using. The frame under the cursor could have
1756 // been asynchronously destroyed while the context menu was open, but many
1757 // context menu commands should continue to function in this situation (e.g.
1758 // "Reload").
1759 RenderFrameHost* render_frame_host = GetRenderFrameHost();
1760
1754 // Process extension menu items. 1761 // Process extension menu items.
1755 if (ContextMenuMatcher::IsExtensionsCustomCommandId(id)) { 1762 if (ContextMenuMatcher::IsExtensionsCustomCommandId(id)) {
1756 extension_items_.ExecuteCommand(id, source_web_contents_, 1763 if (render_frame_host) {
1757 GetRenderFrameHost(), params_); 1764 extension_items_.ExecuteCommand(id, source_web_contents_,
1765 render_frame_host, params_);
1766 }
1758 return; 1767 return;
1759 } 1768 }
1760 1769
1761 if (id >= IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST && 1770 if (id >= IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_FIRST &&
1762 id <= IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_LAST) { 1771 id <= IDC_CONTENT_CONTEXT_PROTOCOL_HANDLER_LAST) {
1763 ProtocolHandlerRegistry::ProtocolHandlerList handlers = 1772 ProtocolHandlerRegistry::ProtocolHandlerList handlers =
1764 GetHandlersForLinkUrl(); 1773 GetHandlersForLinkUrl();
1765 if (handlers.empty()) 1774 if (handlers.empty())
1766 return; 1775 return;
1767 1776
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1822 GetDocumentURL(params_), 1831 GetDocumentURL(params_),
1823 NEW_WINDOW, 1832 NEW_WINDOW,
1824 ui::PAGE_TRANSITION_LINK); 1833 ui::PAGE_TRANSITION_LINK);
1825 break; 1834 break;
1826 1835
1827 case IDC_CONTENT_CONTEXT_OPENLINKOFFTHERECORD: 1836 case IDC_CONTENT_CONTEXT_OPENLINKOFFTHERECORD:
1828 OpenURL(params_.link_url, GURL(), OFF_THE_RECORD, 1837 OpenURL(params_.link_url, GURL(), OFF_THE_RECORD,
1829 ui::PAGE_TRANSITION_LINK); 1838 ui::PAGE_TRANSITION_LINK);
1830 break; 1839 break;
1831 1840
1832 case IDC_CONTENT_CONTEXT_SAVELINKAS: { 1841 case IDC_CONTENT_CONTEXT_SAVELINKAS:
1833 RecordDownloadSource(DOWNLOAD_INITIATED_BY_CONTEXT_MENU); 1842 SaveLinkAs();
1834 const GURL& url = params_.link_url;
1835 content::Referrer referrer = CreateReferrer(url, params_);
1836 DownloadManager* dlm =
1837 BrowserContext::GetDownloadManager(browser_context_);
1838 std::unique_ptr<DownloadUrlParameters> dl_params(
1839 DownloadUrlParameters::FromWebContents(source_web_contents_, url));
1840 dl_params->set_referrer(referrer);
1841 dl_params->set_referrer_encoding(params_.frame_charset);
1842 dl_params->set_suggested_name(params_.suggested_filename);
1843 dl_params->set_prompt(true);
1844 dlm->DownloadUrl(std::move(dl_params));
1845 break; 1843 break;
1846 }
1847 1844
1848 case IDC_CONTENT_CONTEXT_SAVEAVAS: 1845 case IDC_CONTENT_CONTEXT_SAVEAVAS:
1849 case IDC_CONTENT_CONTEXT_SAVEIMAGEAS: { 1846 case IDC_CONTENT_CONTEXT_SAVEIMAGEAS: {
1850 bool is_large_data_url = params_.has_image_contents && 1847 bool is_large_data_url = params_.has_image_contents &&
1851 params_.src_url.is_empty(); 1848 params_.src_url.is_empty();
1852 if (params_.media_type == WebContextMenuData::MediaTypeCanvas || 1849 if (params_.media_type == WebContextMenuData::MediaTypeCanvas ||
1853 (params_.media_type == WebContextMenuData::MediaTypeImage && 1850 (params_.media_type == WebContextMenuData::MediaTypeImage &&
1854 is_large_data_url)) { 1851 is_large_data_url)) {
1855 source_web_contents_->GetRenderViewHost()->SaveImageAt( 1852 source_web_contents_->GetRenderViewHost()->SaveImageAt(
1856 params_.x, params_.y); 1853 params_.x, params_.y);
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
2005 DCHECK(platform_app->is_platform_app()); 2002 DCHECK(platform_app->is_platform_app());
2006 2003
2007 apps::AppLoadService::Get(GetProfile()) 2004 apps::AppLoadService::Get(GetProfile())
2008 ->RestartApplication(platform_app->id()); 2005 ->RestartApplication(platform_app->id());
2009 break; 2006 break;
2010 } 2007 }
2011 2008
2012 case IDC_PRINT: { 2009 case IDC_PRINT: {
2013 #if defined(ENABLE_PRINTING) 2010 #if defined(ENABLE_PRINTING)
2014 if (params_.media_type != WebContextMenuData::MediaTypeNone) { 2011 if (params_.media_type != WebContextMenuData::MediaTypeNone) {
2015 RenderFrameHost* render_frame_host = GetRenderFrameHost();
2016 if (render_frame_host) { 2012 if (render_frame_host) {
2017 render_frame_host->Send(new PrintMsg_PrintNodeUnderContextMenu( 2013 render_frame_host->Send(new PrintMsg_PrintNodeUnderContextMenu(
2018 render_frame_host->GetRoutingID())); 2014 render_frame_host->GetRoutingID()));
2019 } 2015 }
2020 break; 2016 break;
2021 } 2017 }
2022 2018
2023 printing::StartPrint( 2019 printing::StartPrint(
2024 source_web_contents_, 2020 source_web_contents_,
2025 GetPrefs(browser_context_)->GetBoolean(prefs::kPrintPreviewDisabled), 2021 GetPrefs(browser_context_)->GetBoolean(prefs::kPrintPreviewDisabled),
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after
2292 } 2288 }
2293 2289
2294 void RenderViewContextMenu::Inspect(int x, int y) { 2290 void RenderViewContextMenu::Inspect(int x, int y) {
2295 content::RecordAction(UserMetricsAction("DevTools_InspectElement")); 2291 content::RecordAction(UserMetricsAction("DevTools_InspectElement"));
2296 RenderFrameHost* render_frame_host = GetRenderFrameHost(); 2292 RenderFrameHost* render_frame_host = GetRenderFrameHost();
2297 if (!render_frame_host) 2293 if (!render_frame_host)
2298 return; 2294 return;
2299 DevToolsWindow::InspectElement(render_frame_host, x, y); 2295 DevToolsWindow::InspectElement(render_frame_host, x, y);
2300 } 2296 }
2301 2297
2298 void RenderViewContextMenu::SaveLinkAs() {
2299 RenderFrameHost* render_frame_host = GetRenderFrameHost();
2300 if (!render_frame_host)
2301 return;
2302
2303 RecordDownloadSource(DOWNLOAD_INITIATED_BY_CONTEXT_MENU);
2304
2305 const GURL& url = params_.link_url;
2306 content::StoragePartition* storage_partition =
2307 BrowserContext::GetStoragePartition(
2308 source_web_contents_->GetBrowserContext(),
2309 render_frame_host->GetSiteInstance());
2310
2311 std::unique_ptr<DownloadUrlParameters> dl_params(
2312 new DownloadUrlParameters(
2313 url, render_frame_host->GetProcess()->GetID(),
2314 render_frame_host->GetRenderViewHost()->GetRoutingID(),
2315 render_frame_host->GetRoutingID(),
2316 storage_partition->GetURLRequestContext()));
2317 dl_params->set_referrer(CreateReferrer(url, params_));
2318 dl_params->set_referrer_encoding(params_.frame_charset);
2319 dl_params->set_suggested_name(params_.suggested_filename);
2320 dl_params->set_prompt(true);
2321
2322 BrowserContext::GetDownloadManager(browser_context_)->DownloadUrl(
2323 std::move(dl_params));
2324 }
2325
2302 void RenderViewContextMenu::WriteURLToClipboard(const GURL& url) { 2326 void RenderViewContextMenu::WriteURLToClipboard(const GURL& url) {
2303 ::WriteURLToClipboard(url); 2327 ::WriteURLToClipboard(url);
2304 } 2328 }
2305 2329
2306 void RenderViewContextMenu::MediaPlayerActionAt( 2330 void RenderViewContextMenu::MediaPlayerActionAt(
2307 const gfx::Point& location, 2331 const gfx::Point& location,
2308 const WebMediaPlayerAction& action) { 2332 const WebMediaPlayerAction& action) {
2309 source_web_contents_->GetRenderViewHost()-> 2333 source_web_contents_->GetRenderViewHost()->
2310 ExecuteMediaPlayerActionAtLocation(location, action); 2334 ExecuteMediaPlayerActionAtLocation(location, action);
2311 } 2335 }
2312 2336
2313 void RenderViewContextMenu::PluginActionAt( 2337 void RenderViewContextMenu::PluginActionAt(
2314 const gfx::Point& location, 2338 const gfx::Point& location,
2315 const WebPluginAction& action) { 2339 const WebPluginAction& action) {
2316 source_web_contents_->GetRenderViewHost()-> 2340 source_web_contents_->GetRenderViewHost()->
2317 ExecutePluginActionAtLocation(location, action); 2341 ExecutePluginActionAtLocation(location, action);
2318 } 2342 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698