Chromium Code Reviews| Index: content/renderer/render_view_impl.cc |
| diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
| index 2bb8d1665f1af8ae27ed9c8d325b397f516647d6..e80e9b20f3df109479c37465a33644b31e255a9a 100644 |
| --- a/content/renderer/render_view_impl.cc |
| +++ b/content/renderer/render_view_impl.cc |
| @@ -925,6 +925,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. |
| @@ -1632,6 +1634,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)); |
| @@ -5453,6 +5456,21 @@ void RenderViewImpl::OnSelectPopupMenuItem(int selected_index) { |
| } |
| #endif |
| +#if defined(OS_ANDROID) |
| +void RenderViewImpl::OnSelectPopupMenuItems(bool canceled, |
| + std::vector<int> selected_indices) { |
|
Avi (use Gerrit)
2012/05/24 18:41:41
const std::vector<int>& ?
aruslan
2012/05/24 19:53:15
Done.
|
| + // 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) |