| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "content/browser/pointer_lock_browsertest.h" |
| |
| #include "content/browser/renderer_host/render_widget_host_impl.h" |
| #include "content/browser/renderer_host/render_widget_host_view_mac.h" |
| #include "content/browser/web_contents/web_contents_view_mac.h" |
| |
| namespace content { |
| |
| class MockPointerLockRenderWidgetHostView : public RenderWidgetHostViewMac { |
| public: |
| MockPointerLockRenderWidgetHostView(RenderWidgetHost* host) |
| : RenderWidgetHostViewMac(host) {} |
| ~MockPointerLockRenderWidgetHostView() override { |
| if (mouse_locked_) |
| UnlockMouse(); |
| } |
| |
| blink::mojom::PointerLockResult LockMouse( |
| bool request_unadjusted_movement) override { |
| mouse_locked_ = true; |
| mouse_lock_unadjusted_movement_ = request_unadjusted_movement; |
| |
| return blink::mojom::PointerLockResult::kSuccess; |
| } |
| |
| blink::mojom::PointerLockResult ChangeMouseLock( |
| bool request_unadjusted_movement) override { |
| mouse_lock_unadjusted_movement_ = request_unadjusted_movement; |
| |
| return blink::mojom::PointerLockResult::kSuccess; |
| } |
| |
| void UnlockMouse() override { |
| if (RenderWidgetHostImpl* host = |
| RenderWidgetHostImpl::From(GetRenderWidgetHost())) { |
| host->LostMouseLock(); |
| } |
| mouse_locked_ = false; |
| mouse_lock_unadjusted_movement_ = false; |
| } |
| |
| bool IsMouseLocked() override { return mouse_locked_; } |
| |
| bool GetIsMouseLockedUnadjustedMovementForTesting() override { |
| return mouse_lock_unadjusted_movement_; |
| } |
| bool HasFocus() override { return true; } |
| }; |
| |
| void InstallCreateHooksForPointerLockBrowserTests() { |
| WebContentsViewMac::InstallCreateHookForTests( |
| [](RenderWidgetHost* host) -> RenderWidgetHostViewMac* { |
| return new MockPointerLockRenderWidgetHostView(host); |
| }); |
| } |
| |
| } // namespace content |