Skip to content

Commit

Permalink
fix: pointer lock escape handling
Browse files Browse the repository at this point in the history
  • Loading branch information
codebytere committed Jan 6, 2022
1 parent 2f9fd06 commit d5e63f4
Show file tree
Hide file tree
Showing 4 changed files with 18 additions and 19 deletions.
22 changes: 14 additions & 8 deletions shell/browser/api/electron_api_web_contents.cc
Expand Up @@ -1238,6 +1238,9 @@ bool WebContents::PlatformHandleKeyboardEvent(
content::KeyboardEventProcessingResult WebContents::PreHandleKeyboardEvent(
content::WebContents* source,
const content::NativeWebKeyboardEvent& event) {
if (exclusive_access_manager_->HandleUserKeyEvent(event))
return content::KeyboardEventProcessingResult::HANDLED;

if (event.GetType() == blink::WebInputEvent::Type::kRawKeyDown ||
event.GetType() == blink::WebInputEvent::Type::kKeyUp) {
bool prevent_default = Emit("before-input-event", event);
Expand Down Expand Up @@ -1386,6 +1389,17 @@ void WebContents::FindReply(content::WebContents* web_contents,
Emit("found-in-page", result.GetHandle());
}

void WebContents::RequestToLockMouse(content::WebContents* web_contents,
bool user_gesture,
bool last_unlocked_by_target) {
exclusive_access_manager_->mouse_lock_controller()->RequestToLockMouse(
web_contents, user_gesture, last_unlocked_by_target);
}

void WebContents::LostMouseLock() {
exclusive_access_manager_->mouse_lock_controller()->LostMouseLock();
}

void WebContents::RequestKeyboardLock(content::WebContents* web_contents,
bool esc_key_locked) {
exclusive_access_manager_->keyboard_lock_controller()->RequestKeyboardLock(
Expand Down Expand Up @@ -1418,14 +1432,6 @@ void WebContents::RequestMediaAccessPermission(
permission_helper->RequestMediaAccessPermission(request, std::move(callback));
}

void WebContents::RequestToLockMouse(content::WebContents* web_contents,
bool user_gesture,
bool last_unlocked_by_target) {
auto* permission_helper =
WebContentsPermissionHelper::FromWebContents(web_contents);
permission_helper->RequestPointerLockPermission(user_gesture);
}

content::JavaScriptDialogManager* WebContents::GetJavaScriptDialogManager(
content::WebContents* source) {
if (!dialog_manager_)
Expand Down
7 changes: 4 additions & 3 deletions shell/browser/api/electron_api_web_contents.h
Expand Up @@ -557,6 +557,10 @@ class WebContents : public ExclusiveAccessContext,
const gfx::Rect& selection_rect,
int active_match_ordinal,
bool final_update) override;
void RequestToLockMouse(content::WebContents* web_contents,
bool user_gesture,
bool last_unlocked_by_target) override;
void LostMouseLock() override;
void RequestKeyboardLock(content::WebContents* web_contents,
bool esc_key_locked) override;
void CancelKeyboardLockRequest(content::WebContents* web_contents) override;
Expand All @@ -567,9 +571,6 @@ class WebContents : public ExclusiveAccessContext,
content::WebContents* web_contents,
const content::MediaStreamRequest& request,
content::MediaResponseCallback callback) override;
void RequestToLockMouse(content::WebContents* web_contents,
bool user_gesture,
bool last_unlocked_by_target) override;
content::JavaScriptDialogManager* GetJavaScriptDialogManager(
content::WebContents* source) override;
void OnAudioStateChanged(bool audible) override;
Expand Down
7 changes: 0 additions & 7 deletions shell/browser/web_contents_permission_helper.cc
Expand Up @@ -154,13 +154,6 @@ void WebContentsPermissionHelper::RequestWebNotificationPermission(
std::move(callback));
}

void WebContentsPermissionHelper::RequestPointerLockPermission(
bool user_gesture) {
RequestPermission(
static_cast<content::PermissionType>(PermissionType::POINTER_LOCK),
base::BindOnce(&OnPointerLockResponse, web_contents_), user_gesture);
}

void WebContentsPermissionHelper::RequestOpenExternalPermission(
base::OnceCallback<void(bool)> callback,
bool user_gesture,
Expand Down
1 change: 0 additions & 1 deletion shell/browser/web_contents_permission_helper.h
Expand Up @@ -38,7 +38,6 @@ class WebContentsPermissionHelper
content::MediaResponseCallback callback);
void RequestWebNotificationPermission(
base::OnceCallback<void(bool)> callback);
void RequestPointerLockPermission(bool user_gesture);
void RequestOpenExternalPermission(base::OnceCallback<void(bool)> callback,
bool user_gesture,
const GURL& url);
Expand Down

0 comments on commit d5e63f4

Please sign in to comment.