1 // 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 #ifndef CONTENT_TEST_MOCK_RENDER_WIDGET_HOST_DELEGATE_H_
6 #define CONTENT_TEST_MOCK_RENDER_WIDGET_HOST_DELEGATE_H_
7 
8 #include <memory>
9 
10 #include "base/macros.h"
11 #include "content/browser/renderer_host/render_widget_host_delegate.h"
12 #include "content/browser/renderer_host/render_widget_host_input_event_router.h"
13 #include "content/browser/renderer_host/text_input_manager.h"
14 #include "content/public/browser/keyboard_event_processing_result.h"
15 #include "content/test/stub_render_view_host_delegate_view.h"
16 
17 namespace content {
18 
19 class FrameTree;
20 class RenderWidgetHostImpl;
21 
22 class MockRenderWidgetHostDelegate : public RenderWidgetHostDelegate {
23  public:
24   MockRenderWidgetHostDelegate();
25   ~MockRenderWidgetHostDelegate() override;
26 
last_event()27   const NativeWebKeyboardEvent* last_event() const { return last_event_.get(); }
set_widget_host(RenderWidgetHostImpl * rwh)28   void set_widget_host(RenderWidgetHostImpl* rwh) { rwh_ = rwh; }
set_is_fullscreen(bool is_fullscreen)29   void set_is_fullscreen(bool is_fullscreen) { is_fullscreen_ = is_fullscreen; }
set_focused_widget(RenderWidgetHostImpl * focused_widget)30   void set_focused_widget(RenderWidgetHostImpl* focused_widget) {
31     focused_widget_ = focused_widget;
32   }
set_pre_handle_keyboard_event_result(KeyboardEventProcessingResult result)33   void set_pre_handle_keyboard_event_result(
34       KeyboardEventProcessingResult result) {
35     pre_handle_keyboard_event_result_ = result;
36   }
set_frame_tree(FrameTree * frame_tree)37   void set_frame_tree(FrameTree* frame_tree) { frame_tree_ = frame_tree; }
set_should_ignore_input_events(bool ignore)38   void set_should_ignore_input_events(bool ignore) {
39     should_ignore_input_events_ = ignore;
40   }
41   void CreateInputEventRouter();
42 
43   // RenderWidgetHostDelegate:
44   void ResizeDueToAutoResize(RenderWidgetHostImpl* render_widget_host,
45                              const gfx::Size& new_size) override;
46   KeyboardEventProcessingResult PreHandleKeyboardEvent(
47       const NativeWebKeyboardEvent& event) override;
48   void ExecuteEditCommand(const std::string& command,
49                           const base::Optional<base::string16>& value) override;
50   void Undo() override;
51   void Redo() override;
52   void Cut() override;
53   void Copy() override;
54   void Paste() override;
55   void PasteAndMatchStyle() override;
56   void SelectAll() override;
57   RenderWidgetHostInputEventRouter* GetInputEventRouter() override;
58   RenderWidgetHostImpl* GetFocusedRenderWidgetHost(
59       RenderWidgetHostImpl* widget_host) override;
60   void SendScreenRects() override;
61   TextInputManager* GetTextInputManager() override;
62   bool IsFullscreen() override;
63   RenderViewHostDelegateView* GetDelegateView() override;
64   FrameTree* GetFrameTree() override;
65   bool ShouldIgnoreInputEvents() override;
66 
67  private:
68   std::unique_ptr<NativeWebKeyboardEvent> last_event_;
69   RenderWidgetHostImpl* rwh_ = nullptr;
70   std::unique_ptr<RenderWidgetHostInputEventRouter> rwh_input_event_router_;
71   bool is_fullscreen_ = false;
72   TextInputManager text_input_manager_;
73   RenderWidgetHostImpl* focused_widget_ = nullptr;
74   KeyboardEventProcessingResult pre_handle_keyboard_event_result_ =
75       KeyboardEventProcessingResult::NOT_HANDLED;
76   StubRenderViewHostDelegateView rvh_delegate_view_;
77   FrameTree* frame_tree_ = nullptr;
78   bool should_ignore_input_events_ = false;
79 
80   DISALLOW_COPY_AND_ASSIGN(MockRenderWidgetHostDelegate);
81 };
82 
83 }  // namespace content
84 
85 #endif  // CONTENT_TEST_MOCK_RENDER_WIDGET_HOST_DELEGATE_H_
86