| Index: chrome/renderer/render_view.cc
|
| diff --git a/chrome/renderer/render_view.cc b/chrome/renderer/render_view.cc
|
| index 1e2be189e12e8020a132d90d799b4d82b4a3190c..99ac56259b152bff5ec67cf66adca488d824da9e 100644
|
| --- a/chrome/renderer/render_view.cc
|
| +++ b/chrome/renderer/render_view.cc
|
| @@ -569,7 +569,9 @@ RenderView::RenderView(RenderThreadBase* render_thread,
|
| device_orientation_dispatcher_(NULL),
|
| accessibility_ack_pending_(false),
|
| pending_app_icon_requests_(0),
|
| - session_storage_namespace_id_(session_storage_namespace_id) {
|
| + session_storage_namespace_id_(session_storage_namespace_id),
|
| + has_saved_context_menu_action_(false),
|
| + saved_context_menu_action_(0) {
|
| #if defined(OS_MACOSX)
|
| // On Mac, the select popups are rendered by the browser.
|
| // Note that we don't do this in RenderMain otherwise this would not be called
|
| @@ -4712,8 +4714,17 @@ void RenderView::OnSetAltErrorPageURL(const GURL& url) {
|
| alternate_error_page_url_ = url;
|
| }
|
|
|
| -void RenderView::OnCustomContextMenuAction(unsigned action) {
|
| - webview()->performCustomContextMenuAction(action);
|
| +void RenderView::OnCustomContextMenuAction(
|
| + const webkit_glue::CustomContextMenuContext& custom_context,
|
| + unsigned action) {
|
| + if (custom_context.is_pepper_menu) {
|
| + // Just save the action.
|
| + DCHECK(!has_saved_context_menu_action_);
|
| + has_saved_context_menu_action_ = true;
|
| + saved_context_menu_action_ = action;
|
| + } else {
|
| + webview()->performCustomContextMenuAction(action);
|
| + }
|
| }
|
|
|
| void RenderView::OnTranslatePage(int page_id,
|
| @@ -5770,6 +5781,15 @@ void RenderView::OnJavaScriptStressTestControl(int cmd, int param) {
|
| }
|
| }
|
|
|
| -void RenderView::OnContextMenuClosed() {
|
| - context_menu_node_.reset();
|
| +void RenderView::OnContextMenuClosed(
|
| + const webkit_glue::CustomContextMenuContext& custom_context) {
|
| + if (custom_context.is_pepper_menu) {
|
| + pepper_delegate_.CompleteShowContextMenu(custom_context.request_id,
|
| + has_saved_context_menu_action_,
|
| + saved_context_menu_action_);
|
| + has_saved_context_menu_action_ = false;
|
| + saved_context_menu_action_ = 0;
|
| + } else {
|
| + context_menu_node_.reset();
|
| + }
|
| }
|
|
|