fix: esc not working on Windows during fullscreen (#34317)
* fix: esc not working on Windows during fullscreen * chore: fix lint
This commit is contained in:
parent
6cb2b9eab7
commit
7bc4b919dc
3 changed files with 28 additions and 9 deletions
|
@ -98,7 +98,7 @@ fix_expose_decrementcapturercount_in_web_contents_impl.patch
|
||||||
add_ui_scopedcliboardwriter_writeunsaferawdata.patch
|
add_ui_scopedcliboardwriter_writeunsaferawdata.patch
|
||||||
feat_add_data_parameter_to_processsingleton.patch
|
feat_add_data_parameter_to_processsingleton.patch
|
||||||
load_v8_snapshot_in_browser_process.patch
|
load_v8_snapshot_in_browser_process.patch
|
||||||
fix_patch_out_permissions_checks_in_exclusive_access.patch
|
fix_adapt_exclusive_access_for_electron_needs.patch
|
||||||
fix_aspect_ratio_with_max_size.patch
|
fix_aspect_ratio_with_max_size.patch
|
||||||
fix_dont_delete_SerialPortManager_on_main_thread.patch
|
fix_dont_delete_SerialPortManager_on_main_thread.patch
|
||||||
fix_crash_when_saving_edited_pdf_files.patch
|
fix_crash_when_saving_edited_pdf_files.patch
|
||||||
|
|
|
@ -1,20 +1,22 @@
|
||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
From: Shelley Vohr <shelley.vohr@gmail.com>
|
From: Shelley Vohr <shelley.vohr@gmail.com>
|
||||||
Date: Mon, 25 Oct 2021 21:45:57 +0200
|
Date: Mon, 25 Oct 2021 21:45:57 +0200
|
||||||
Subject: fix: patch out permissions checks in exclusive_access
|
Subject: fix: adapt exclusive_access for electron needs
|
||||||
|
|
||||||
This patch is necessary in order to properly enable
|
This patch is necessary in order to properly enable
|
||||||
navigator.keyboard.{(un)?lock}() functionality. We don't have a concept
|
navigator.keyboard.{(un)?lock}() functionality. We don't have a concept
|
||||||
of PermissionManager nor of a Profile, so this would not affect usage of
|
of PermissionManager nor of a Profile, so this would not affect usage of
|
||||||
the API.
|
the API.
|
||||||
|
|
||||||
We might consider potentially using our own permissions handler,
|
We also need to ensure that NotifyExclusiveTabAccessLost is called
|
||||||
but it's not strictly necessary for this API to work to spec.
|
on all platforms in FullscreenController::ExitFullscreenModeInternal()
|
||||||
|
and not just macOS, since Electron's native window impls report state
|
||||||
Profile check has been upstreamed at https://chromium-review.googlesource.com/c/chromium/src/+/3247196
|
change fairly instantly as well, and so pressing escape won't work on
|
||||||
|
Linux or Windows to un-fullscreen in some circumstances without this
|
||||||
|
change.
|
||||||
|
|
||||||
diff --git a/chrome/browser/ui/exclusive_access/fullscreen_controller.cc b/chrome/browser/ui/exclusive_access/fullscreen_controller.cc
|
diff --git a/chrome/browser/ui/exclusive_access/fullscreen_controller.cc b/chrome/browser/ui/exclusive_access/fullscreen_controller.cc
|
||||||
index ac9f8b06b066adb53a92cb1768e21d6b6e9be2a8..9fb77b8d7c3d9cb49dcb3ac1f2495fa52f53932e 100644
|
index ac9f8b06b066adb53a92cb1768e21d6b6e9be2a8..ebc0f0fe568d7219486360bbe4b6c65e415735e4 100644
|
||||||
--- a/chrome/browser/ui/exclusive_access/fullscreen_controller.cc
|
--- a/chrome/browser/ui/exclusive_access/fullscreen_controller.cc
|
||||||
+++ b/chrome/browser/ui/exclusive_access/fullscreen_controller.cc
|
+++ b/chrome/browser/ui/exclusive_access/fullscreen_controller.cc
|
||||||
@@ -16,12 +16,16 @@
|
@@ -16,12 +16,16 @@
|
||||||
|
@ -112,6 +114,22 @@ index ac9f8b06b066adb53a92cb1768e21d6b6e9be2a8..9fb77b8d7c3d9cb49dcb3ac1f2495fa5
|
||||||
|
|
||||||
if (option == BROWSER)
|
if (option == BROWSER)
|
||||||
base::RecordAction(base::UserMetricsAction("ToggleFullscreen"));
|
base::RecordAction(base::UserMetricsAction("ToggleFullscreen"));
|
||||||
|
@@ -507,12 +517,12 @@ void FullscreenController::ExitFullscreenModeInternal() {
|
||||||
|
RecordExitingUMA();
|
||||||
|
toggled_into_fullscreen_ = false;
|
||||||
|
started_fullscreen_transition_ = true;
|
||||||
|
-#if BUILDFLAG(IS_MAC)
|
||||||
|
- // Mac windows report a state change instantly, and so we must also clear
|
||||||
|
+
|
||||||
|
+ // Electron native windows report a state change instantly, and so we must also clear
|
||||||
|
// state_prior_to_tab_fullscreen_ to match them else other logic using
|
||||||
|
// state_prior_to_tab_fullscreen_ will be incorrect.
|
||||||
|
NotifyTabExclusiveAccessLost();
|
||||||
|
-#endif
|
||||||
|
+
|
||||||
|
exclusive_access_manager()->context()->ExitFullscreen();
|
||||||
|
extension_caused_fullscreen_ = GURL();
|
||||||
|
|
||||||
diff --git a/chrome/browser/ui/exclusive_access/fullscreen_controller.h b/chrome/browser/ui/exclusive_access/fullscreen_controller.h
|
diff --git a/chrome/browser/ui/exclusive_access/fullscreen_controller.h b/chrome/browser/ui/exclusive_access/fullscreen_controller.h
|
||||||
index f0841982cb296079c8b943067564d74bc1b7067c..49f59fc2c12c98faada52e0e7c8c9c6e6251b599 100644
|
index f0841982cb296079c8b943067564d74bc1b7067c..49f59fc2c12c98faada52e0e7c8c9c6e6251b599 100644
|
||||||
--- a/chrome/browser/ui/exclusive_access/fullscreen_controller.h
|
--- a/chrome/browser/ui/exclusive_access/fullscreen_controller.h
|
|
@ -1308,8 +1308,6 @@ void WebContents::EnterFullscreenModeForTab(
|
||||||
base::BindRepeating(&WebContents::OnEnterFullscreenModeForTab,
|
base::BindRepeating(&WebContents::OnEnterFullscreenModeForTab,
|
||||||
base::Unretained(this), requesting_frame, options);
|
base::Unretained(this), requesting_frame, options);
|
||||||
permission_helper->RequestFullscreenPermission(callback);
|
permission_helper->RequestFullscreenPermission(callback);
|
||||||
exclusive_access_manager_->fullscreen_controller()->EnterFullscreenModeForTab(
|
|
||||||
requesting_frame, options.display_id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void WebContents::OnEnterFullscreenModeForTab(
|
void WebContents::OnEnterFullscreenModeForTab(
|
||||||
|
@ -1325,6 +1323,9 @@ void WebContents::OnEnterFullscreenModeForTab(
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
exclusive_access_manager_->fullscreen_controller()->EnterFullscreenModeForTab(
|
||||||
|
requesting_frame, options.display_id);
|
||||||
|
|
||||||
SetHtmlApiFullscreen(true);
|
SetHtmlApiFullscreen(true);
|
||||||
|
|
||||||
if (native_fullscreen_) {
|
if (native_fullscreen_) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue