Index: content/renderer/render_view_impl.cc |
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc |
index 7b83e8b62c0fb4cb2f9f959088f59562a40c5109..94b4fa95e7cc06a2ac12c4f5ae9e020a5f2e2744 100644 |
--- a/content/renderer/render_view_impl.cc |
+++ b/content/renderer/render_view_impl.cc |
@@ -2364,13 +2364,20 @@ void RenderViewImpl::didBlur() { |
// created RenderView (i.e., as a blocked popup or as a new tab). |
// |
void RenderViewImpl::show(WebNavigationPolicy policy) { |
- DCHECK(!did_show_) << "received extraneous Show call"; |
- DCHECK(opener_id_ != MSG_ROUTING_NONE); |
- |
- if (did_show_) |
+ if (did_show_) { |
+#if defined(OS_ANDROID) |
+ // When supports_multiple_windows is disabled, popups are reusing |
+ // the same view. In some scenarios, this makes WebKit to call show() twice. |
+ if (!webkit_preferences_.supports_multiple_windows) |
+ return; |
+#endif |
+ NOTREACHED() << "received extraneous Show call"; |
return; |
+ } |
did_show_ = true; |
+ DCHECK(opener_id_ != MSG_ROUTING_NONE); |
+ |
if (GetContentClient()->renderer()->AllowPopup(creator_url_)) |
opened_by_user_gesture_ = true; |