12345678910111213141516171819202122232425262728293031323334353637 |
- From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
- From: Cheng Zhao <[email protected]>
- Date: Thu, 4 Oct 2018 14:57:02 -0700
- Subject: fix: also propagate fullscreen state for outer frame
- When entering fullscreen with Element.requestFullscreen in child frames,
- the parent frame should also enter fullscreen mode too. Chromium handles
- this for iframes, but not for webviews as they are essentially main
- frames instead of child frames.
- This patch makes webviews propagate the fullscreen state to embedder.
- Note that we also need to manually update embedder's
- `api::WebContents::IsFullscreenForTabOrPending` value.
- diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
- index 4da6272864fd6709dcb56b9561ec86f4b0e037be..03d913c1ab176dfb330ba3192daeaed3e212c131 100644
- --- a/content/browser/renderer_host/render_frame_host_impl.cc
- +++ b/content/browser/renderer_host/render_frame_host_impl.cc
- @@ -7286,6 +7286,17 @@ void RenderFrameHostImpl::EnterFullscreen(
- }
- }
-
- + // Entering fullscreen from webview should also notify its outer frame.
- + if (frame_tree_node()->render_manager()->IsMainFrameForInnerDelegate()) {
- + RenderFrameProxyHost* outer_proxy =
- + frame_tree_node()->render_manager()->GetProxyToOuterDelegate();
- + DCHECK(outer_proxy);
- + if (outer_proxy->is_render_frame_proxy_live()) {
- + outer_proxy->GetAssociatedRemoteFrame()->WillEnterFullscreen(
- + options.Clone());
- + }
- + }
- +
- // Focus the window if another frame may have delegated the capability.
- if (had_fullscreen_token && !GetView()->HasFocus())
- GetView()->Focus();
|