fix: html fullscreen when window not fullscreenable (#37368)

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
This commit is contained in:
trop[bot]
2023-02-21 17:54:25 +01:00
committed by GitHub
parent 85802682b5
commit de5ee7e60e
3 changed files with 46 additions and 7 deletions

View File

@@ -1307,7 +1307,10 @@ Profile* WebContents::GetProfile() {
}
bool WebContents::IsFullscreen() const {
return owner_window_ && owner_window_->IsFullscreen();
if (!owner_window())
return false;
return owner_window()->IsFullscreen() || is_html_fullscreen();
}
void WebContents::EnterFullscreen(const GURL& url,
@@ -1353,7 +1356,7 @@ void WebContents::OnEnterFullscreenModeForTab(
content::RenderFrameHost* requesting_frame,
const blink::mojom::FullscreenOptions& options,
bool allowed) {
if (!allowed || !owner_window_)
if (!allowed || !owner_window())
return;
auto* source = content::WebContents::FromRenderFrameHost(requesting_frame);
@@ -1377,7 +1380,7 @@ void WebContents::OnEnterFullscreenModeForTab(
}
void WebContents::ExitFullscreenModeForTab(content::WebContents* source) {
if (!owner_window_)
if (!owner_window())
return;
// This needs to be called before we exit fullscreen on the native window,
@@ -3582,14 +3585,14 @@ void WebContents::EnumerateDirectory(
bool WebContents::IsFullscreenForTabOrPending(
const content::WebContents* source) {
if (!owner_window())
return html_fullscreen_;
return is_html_fullscreen();
bool in_transition = owner_window()->fullscreen_transition_state() !=
NativeWindow::FullScreenTransitionState::NONE;
bool is_html_transition = owner_window()->fullscreen_transition_type() ==
NativeWindow::FullScreenTransitionType::HTML;
return html_fullscreen_ || (in_transition && is_html_transition);
return is_html_fullscreen() || (in_transition && is_html_transition);
}
bool WebContents::TakeFocus(content::WebContents* source, bool reverse) {
@@ -3879,7 +3882,7 @@ void WebContents::OnDevToolsSearchCompleted(
void WebContents::SetHtmlApiFullscreen(bool enter_fullscreen) {
// Window is already in fullscreen mode, save the state.
if (enter_fullscreen && owner_window_->IsFullscreen()) {
if (enter_fullscreen && owner_window()->IsFullscreen()) {
native_fullscreen_ = true;
UpdateHtmlApiFullscreen(true);
return;