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

Side by Side Diff: content/browser/web_contents/web_contents_impl.cc

Issue 1095913002: Fix window.open issue in Document mode on Android. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/web_contents/web_contents_impl.h" 5 #include "content/browser/web_contents/web_contents_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
(...skipping 1696 matching lines...) Expand 10 before | Expand all | Expand 10 after
1707 } 1707 }
1708 1708
1709 void WebContentsImpl::ShowCreatedWindow(int route_id, 1709 void WebContentsImpl::ShowCreatedWindow(int route_id,
1710 WindowOpenDisposition disposition, 1710 WindowOpenDisposition disposition,
1711 const gfx::Rect& initial_rect, 1711 const gfx::Rect& initial_rect,
1712 bool user_gesture) { 1712 bool user_gesture) {
1713 WebContentsImpl* contents = GetCreatedWindow(route_id); 1713 WebContentsImpl* contents = GetCreatedWindow(route_id);
1714 if (contents) { 1714 if (contents) {
1715 WebContentsDelegate* delegate = GetDelegate(); 1715 WebContentsDelegate* delegate = GetDelegate();
1716 if (delegate) { 1716 if (delegate) {
1717 if (delegate->ShouldResumeRequestsForCreatedWindow())
jam 2015/04/20 16:05:41 nit: instead of calling the line below twice, perh
Maria 2015/04/20 23:40:07 Done.
1718 ResumeRequestsForCreatedWindow(*contents);
1717 delegate->AddNewContents( 1719 delegate->AddNewContents(
1718 this, contents, disposition, initial_rect, user_gesture, NULL); 1720 this, contents, disposition, initial_rect, user_gesture, NULL);
1721 } else {
1722 ResumeRequestsForCreatedWindow(*contents);
1719 } 1723 }
1720 } 1724 }
1721 } 1725 }
1722 1726
1723 void WebContentsImpl::ShowCreatedWidget(int route_id, 1727 void WebContentsImpl::ShowCreatedWidget(int route_id,
1724 const gfx::Rect& initial_rect) { 1728 const gfx::Rect& initial_rect) {
1725 ShowCreatedWidget(route_id, false, initial_rect); 1729 ShowCreatedWidget(route_id, false, initial_rect);
1726 } 1730 }
1727 1731
1728 void WebContentsImpl::ShowCreatedFullscreenWidget(int route_id) { 1732 void WebContentsImpl::ShowCreatedFullscreenWidget(int route_id) {
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
1793 RemoveDestructionObserver(new_contents); 1797 RemoveDestructionObserver(new_contents);
1794 1798
1795 // Don't initialize the guest WebContents immediately. 1799 // Don't initialize the guest WebContents immediately.
1796 if (BrowserPluginGuest::IsGuest(new_contents)) 1800 if (BrowserPluginGuest::IsGuest(new_contents))
1797 return new_contents; 1801 return new_contents;
1798 1802
1799 if (!new_contents->GetRenderProcessHost()->HasConnection() || 1803 if (!new_contents->GetRenderProcessHost()->HasConnection() ||
1800 !new_contents->GetRenderViewHost()->GetView()) 1804 !new_contents->GetRenderViewHost()->GetView())
1801 return NULL; 1805 return NULL;
1802 1806
1803 // Resume blocked requests for both the RenderViewHost and RenderFrameHost. 1807 return new_contents;
1808 }
1809
1810 void WebContentsImpl::ResumeRequestsForCreatedWindow(
1811 WebContentsImpl& new_contents) {
jam 2015/04/20 16:05:41 nit: not sure why this method is needed? i.e. why
Maria 2015/04/20 23:40:07 The reason it's needed is that it gets called on a
1804 // TODO(brettw): It seems bogus to reach into here and initialize the host. 1812 // TODO(brettw): It seems bogus to reach into here and initialize the host.
1805 static_cast<RenderViewHostImpl*>(new_contents->GetRenderViewHost())->Init(); 1813 static_cast<RenderViewHostImpl*>(new_contents.GetRenderViewHost())->Init();
1806 static_cast<RenderFrameHostImpl*>(new_contents->GetMainFrame())->Init(); 1814 static_cast<RenderFrameHostImpl*>(new_contents.GetMainFrame())->Init();
1807
1808 return new_contents;
1809 } 1815 }
1810 1816
1811 RenderWidgetHostView* WebContentsImpl::GetCreatedWidget(int route_id) { 1817 RenderWidgetHostView* WebContentsImpl::GetCreatedWidget(int route_id) {
1812 PendingWidgetViews::iterator iter = pending_widget_views_.find(route_id); 1818 PendingWidgetViews::iterator iter = pending_widget_views_.find(route_id);
1813 if (iter == pending_widget_views_.end()) { 1819 if (iter == pending_widget_views_.end()) {
1814 DCHECK(false); 1820 DCHECK(false);
1815 return NULL; 1821 return NULL;
1816 } 1822 }
1817 1823
1818 RenderWidgetHostView* widget_host_view = iter->second; 1824 RenderWidgetHostView* widget_host_view = iter->second;
(...skipping 2717 matching lines...) Expand 10 before | Expand all | Expand 10 after
4536 FrameTreeNode* node = frame_tree_.root(); 4542 FrameTreeNode* node = frame_tree_.root();
4537 node->render_manager()->ResumeResponseDeferredAtStart(); 4543 node->render_manager()->ResumeResponseDeferredAtStart();
4538 } 4544 }
4539 4545
4540 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) { 4546 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) {
4541 force_disable_overscroll_content_ = force_disable; 4547 force_disable_overscroll_content_ = force_disable;
4542 if (view_) 4548 if (view_)
4543 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); 4549 view_->SetOverscrollControllerEnabled(CanOverscrollContent());
4544 } 4550 }
4545 4551
4552 #if defined(OS_ANDROID)
4553 void WebContentsImpl::ResumeLoadingCreatedWebContents() {
4554 ResumeRequestsForCreatedWindow(*this);
4555 }
4556 #endif
4557
4558
4546 } // namespace content 4559 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698