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

Unified Diff: content/renderer/render_view_impl.cc

Issue 10436010: Multi-select <select> in 'external popup window' (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase after reverts and re-reverts.. Created 8 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 side-by-side diff with in-line comments
Download patch
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)

Powered by Google App Engine
This is Rietveld 408576698