| Index: content/browser/web_contents/web_contents_impl.cc
|
| diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
|
| index e44ae4fe13c652d497333368835aabb7ef3d62f9..98e1caf70d86c60a3089407a6eb78af9991ef5b5 100644
|
| --- a/content/browser/web_contents/web_contents_impl.cc
|
| +++ b/content/browser/web_contents/web_contents_impl.cc
|
| @@ -105,6 +105,7 @@
|
| #include "content/public/common/bindings_policy.h"
|
| #include "content/public/common/browser_plugin_guest_mode.h"
|
| #include "content/public/common/browser_side_navigation_policy.h"
|
| +#include "content/public/common/child_process_host.h"
|
| #include "content/public/common/content_constants.h"
|
| #include "content/public/common/content_switches.h"
|
| #include "content/public/common/page_zoom.h"
|
| @@ -404,6 +405,7 @@ WebContentsImpl::WebContentsImpl(BrowserContext* browser_context)
|
| zoom_scroll_remainder_(0),
|
| render_view_message_source_(NULL),
|
| render_frame_message_source_(NULL),
|
| + fullscreen_widget_process_id_(ChildProcessHost::kInvalidUniqueID),
|
| fullscreen_widget_routing_id_(MSG_ROUTING_NONE),
|
| fullscreen_widget_had_focus_at_shutdown_(false),
|
| is_subframe_(false),
|
| @@ -855,10 +857,6 @@ void WebContentsImpl::CancelActiveAndPendingDialogs() {
|
| browser_plugin_embedder_->CancelGuestDialogs();
|
| }
|
|
|
| -int WebContentsImpl::GetFullscreenWidgetRoutingID() const {
|
| - return fullscreen_widget_routing_id_;
|
| -}
|
| -
|
| void WebContentsImpl::ClosePage() {
|
| GetRenderViewHost()->ClosePage();
|
| }
|
| @@ -876,8 +874,8 @@ RenderWidgetHostView* WebContentsImpl::GetTopLevelRenderWidgetHostView() {
|
| RenderWidgetHostView* WebContentsImpl::GetFullscreenRenderWidgetHostView()
|
| const {
|
| RenderWidgetHost* const widget_host =
|
| - RenderWidgetHostImpl::FromID(GetRenderProcessHost()->GetID(),
|
| - GetFullscreenWidgetRoutingID());
|
| + RenderWidgetHostImpl::FromID(fullscreen_widget_process_id_,
|
| + fullscreen_widget_routing_id_);
|
| return widget_host ? widget_host->GetView() : NULL;
|
| }
|
|
|
| @@ -1679,12 +1677,15 @@ void WebContentsImpl::RenderWidgetDeleted(
|
| return;
|
|
|
| if (render_widget_host &&
|
| - render_widget_host->GetRoutingID() == fullscreen_widget_routing_id_) {
|
| + render_widget_host->GetRoutingID() == fullscreen_widget_routing_id_ &&
|
| + render_widget_host->GetProcess()->GetID() ==
|
| + fullscreen_widget_process_id_) {
|
| if (delegate_ && delegate_->EmbedsFullscreenWidget())
|
| delegate_->ExitFullscreenModeForTab(this);
|
| FOR_EACH_OBSERVER(WebContentsObserver,
|
| observers_,
|
| DidDestroyFullscreenWidget());
|
| + fullscreen_widget_process_id_ = ChildProcessHost::kInvalidUniqueID;
|
| fullscreen_widget_routing_id_ = MSG_ROUTING_NONE;
|
| if (fullscreen_widget_had_focus_at_shutdown_)
|
| view_->RestoreFocus();
|
| @@ -2176,6 +2177,8 @@ void WebContentsImpl::ShowCreatedWidget(int route_id,
|
| if (is_fullscreen) {
|
| DCHECK_EQ(MSG_ROUTING_NONE, fullscreen_widget_routing_id_);
|
| view_->StoreFocus();
|
| + fullscreen_widget_process_id_ =
|
| + widget_host_view->GetRenderWidgetHost()->GetProcess()->GetID();
|
| fullscreen_widget_routing_id_ = route_id;
|
| if (delegate_ && delegate_->EmbedsFullscreenWidget()) {
|
| widget_host_view->InitAsChild(GetRenderWidgetHostView()->GetNativeView());
|
|
|