| 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 a7e58d88e4aea7f3e44aea68ce9666ad8081185e..f675e44967300e8bb0d21913f29321ce0f8a8d90 100644
|
| --- a/chrome/browser/renderer_context_menu/render_view_context_menu.cc
|
| +++ b/chrome/browser/renderer_context_menu/render_view_context_menu.cc
|
| @@ -630,6 +630,11 @@ void RenderViewContextMenu::InitMenu() {
|
| }
|
|
|
| if (content_type_->SupportsGroup(
|
| + ContextMenuContentType::ITEM_GROUP_MEDIA_CANVAS)) {
|
| + AppendCanvasItems();
|
| + }
|
| +
|
| + if (content_type_->SupportsGroup(
|
| ContextMenuContentType::ITEM_GROUP_MEDIA_PLUGIN)) {
|
| AppendPluginItems();
|
| }
|
| @@ -843,6 +848,14 @@ void RenderViewContextMenu::AppendAudioItems() {
|
| IDS_CONTENT_CONTEXT_OPENAUDIONEWTAB);
|
| }
|
|
|
| +void RenderViewContextMenu::AppendCanvasItems() {
|
| + menu_model_.AddItemWithStringId(IDC_CONTENT_CONTEXT_SAVEIMAGEAS,
|
| + IDS_CONTENT_CONTEXT_SAVEIMAGEAS);
|
| +
|
| + // TODO(zino): We should support 'copy image' for canvas.
|
| + // http://crbug.com/369092
|
| +}
|
| +
|
| void RenderViewContextMenu::AppendVideoItems() {
|
| AppendMediaItems();
|
| menu_model_.AddSeparator(ui::NORMAL_SEPARATOR);
|
| @@ -1225,6 +1238,9 @@ bool RenderViewContextMenu::IsCommandIdEnabled(int id) const {
|
| if (!local_state->GetBoolean(prefs::kAllowFileSelectionDialogs))
|
| return false;
|
|
|
| + if (params_.media_type == WebContextMenuData::MediaTypeCanvas)
|
| + return true;
|
| +
|
| return params_.src_url.is_valid() &&
|
| ProfileIOData::IsHandledProtocol(params_.src_url.scheme());
|
| }
|
| @@ -1537,12 +1553,18 @@ void RenderViewContextMenu::ExecuteCommand(int id, int event_flags) {
|
|
|
| case IDC_CONTENT_CONTEXT_SAVEAVAS:
|
| case IDC_CONTENT_CONTEXT_SAVEIMAGEAS: {
|
| - RecordDownloadSource(DOWNLOAD_INITIATED_BY_CONTEXT_MENU);
|
| - const GURL& referrer =
|
| - params_.frame_url.is_empty() ? params_.page_url : params_.frame_url;
|
| - const GURL& url = params_.src_url;
|
| - source_web_contents_->SaveFrame(url, content::Referrer(
|
| - referrer, params_.referrer_policy));
|
| + if (params_.media_type == WebContextMenuData::MediaTypeCanvas) {
|
| + source_web_contents_->GetRenderViewHost()->SaveImageAt(
|
| + params_.x, params_.y);
|
| + } else {
|
| + // TODO(zino): We can use SaveImageAt() like a case of canvas.
|
| + RecordDownloadSource(DOWNLOAD_INITIATED_BY_CONTEXT_MENU);
|
| + const GURL& referrer =
|
| + params_.frame_url.is_empty() ? params_.page_url : params_.frame_url;
|
| + const GURL& url = params_.src_url;
|
| + source_web_contents_->SaveFrame(url, content::Referrer(
|
| + referrer, params_.referrer_policy));
|
| + }
|
| break;
|
| }
|
|
|
|
|