| Index: content/renderer/render_view_impl.cc
|
| diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
|
| index 7cc7ebedeb9f6aa25c13e8dea4d4e455205a4af7..11d65dddae4ce56b5bf8f635d46cdb71b856b7b6 100644
|
| --- a/content/renderer/render_view_impl.cc
|
| +++ b/content/renderer/render_view_impl.cc
|
| @@ -939,6 +939,8 @@ bool RenderViewImpl::OnMessageReceived(const IPC::Message& message) {
|
| OnGetSerializedHtmlDataForCurrentPageWithLocalLinks)
|
| #if defined(OS_MACOSX)
|
| IPC_MESSAGE_HANDLER(ViewMsg_SelectPopupMenuItem, OnSelectPopupMenuItem)
|
| +#elif defined(OS_ANDROID)
|
| + IPC_MESSAGE_HANDLER(ViewMsg_SelectPopupMenuItems, OnSelectPopupMenuItems)
|
| #endif
|
| IPC_MESSAGE_HANDLER(ViewMsg_ContextMenuClosed, OnContextMenuClosed)
|
| // TODO(viettrungluu): Move to a separate message filter.
|
| @@ -1665,6 +1667,7 @@ WebWidget* RenderViewImpl::createPopupMenu(WebKit::WebPopupType popup_type) {
|
| WebExternalPopupMenu* RenderViewImpl::createExternalPopupMenu(
|
| const WebPopupMenuInfo& popup_menu_info,
|
| WebExternalPopupMenuClient* popup_menu_client) {
|
| + // TODO(jcivelli): http:/b/5793321 Implement a better fix, as detailed in bug.
|
| DCHECK(!external_popup_menu_.get());
|
| external_popup_menu_.reset(
|
| new ExternalPopupMenu(this, popup_menu_info, popup_menu_client));
|
| @@ -5495,6 +5498,22 @@ void RenderViewImpl::OnSelectPopupMenuItem(int selected_index) {
|
| }
|
| #endif
|
|
|
| +#if defined(OS_ANDROID)
|
| +void RenderViewImpl::OnSelectPopupMenuItems(
|
| + bool canceled,
|
| + const std::vector<int>& selected_indices) {
|
| + // It is possible to receive more than one of these calls if the user presses
|
| + // a select faster than it takes for the show-select-popup IPC message to make
|
| + // it to the browser UI thread. Ignore the extra-messages.
|
| + // TODO(jcivelli): http:/b/5793321 Implement a better fix, as detailed in bug.
|
| + if (!external_popup_menu_.get())
|
| + return;
|
| +
|
| + external_popup_menu_->DidSelectItems(canceled, selected_indices);
|
| + external_popup_menu_.reset();
|
| +}
|
| +#endif
|
| +
|
| void RenderViewImpl::OnContextMenuClosed(
|
| const content::CustomContextMenuContext& custom_context) {
|
| if (custom_context.is_pepper_menu)
|
|
|