blob: 3429206e3d21d9781a4e63c8cbfc1017d8baa56a [file] [log] [blame]
lfg84763c92017-02-16 18:55:151// Copyright 2017 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "content/browser/pointer_lock_browsertest.h"
6
7#include "content/browser/renderer_host/render_widget_host_impl.h"
8#include "content/browser/renderer_host/render_widget_host_view_mac.h"
9#include "content/browser/web_contents/web_contents_view_mac.h"
10
11namespace content {
12
Ella Geb15a7572018-06-25 17:03:5013class MockPointerLockRenderWidgetHostView : public RenderWidgetHostViewMac {
lfg84763c92017-02-16 18:55:1514 public:
W. James MacLean13d834d2019-12-04 16:06:4515 MockPointerLockRenderWidgetHostView(RenderWidgetHost* host)
16 : RenderWidgetHostViewMac(host) {}
Ella Geb15a7572018-06-25 17:03:5017 ~MockPointerLockRenderWidgetHostView() override {
lfg84763c92017-02-16 18:55:1518 if (mouse_locked_)
19 UnlockMouse();
20 }
21
James Hollyerd5c9de462020-03-10 19:02:4522 blink::mojom::PointerLockResult LockMouse(
23 bool request_unadjusted_movement) override {
lfg84763c92017-02-16 18:55:1524 mouse_locked_ = true;
James Howarda07e1492020-06-26 15:34:0825 mouse_lock_unadjusted_movement_ = request_unadjusted_movement;
26
27 return blink::mojom::PointerLockResult::kSuccess;
28 }
29
30 blink::mojom::PointerLockResult ChangeMouseLock(
31 bool request_unadjusted_movement) override {
32 mouse_lock_unadjusted_movement_ = request_unadjusted_movement;
lfg84763c92017-02-16 18:55:1533
James Hollyerd5c9de462020-03-10 19:02:4534 return blink::mojom::PointerLockResult::kSuccess;
lfg84763c92017-02-16 18:55:1535 }
36
37 void UnlockMouse() override {
lfgde6f0d1f2017-03-24 15:29:5138 if (RenderWidgetHostImpl* host =
39 RenderWidgetHostImpl::From(GetRenderWidgetHost())) {
40 host->LostMouseLock();
41 }
lfg84763c92017-02-16 18:55:1542 mouse_locked_ = false;
James Howarda07e1492020-06-26 15:34:0843 mouse_lock_unadjusted_movement_ = false;
lfg84763c92017-02-16 18:55:1544 }
45
46 bool IsMouseLocked() override { return mouse_locked_; }
47
James Howarda07e1492020-06-26 15:34:0848 bool GetIsMouseLockedUnadjustedMovementForTesting() override {
49 return mouse_lock_unadjusted_movement_;
50 }
Lucas Furukawa Gadani95fc3612019-04-05 22:33:4951 bool HasFocus() override { return true; }
lfg84763c92017-02-16 18:55:1552};
53
lfg84763c92017-02-16 18:55:1554void InstallCreateHooksForPointerLockBrowserTests() {
55 WebContentsViewMac::InstallCreateHookForTests(
W. James MacLean13d834d2019-12-04 16:06:4556 [](RenderWidgetHost* host) -> RenderWidgetHostViewMac* {
57 return new MockPointerLockRenderWidgetHostView(host);
lfg84763c92017-02-16 18:55:1558 });
59}
60
61} // namespace content