Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(431)

Side by Side Diff: content/browser/renderer_host/render_widget_host_view_aura_unittest.cc

Issue 2775553002: Adds the ability for WebContentsDelegate to decide if event should be updated (Closed)
Patch Set: Fix compile Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/renderer_host/render_widget_host_view_aura.h" 5 #include "content/browser/renderer_host/render_widget_host_view_aura.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <tuple> 10 #include <tuple>
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 #include "content/browser/renderer_host/render_widget_host_view_event_handler.h" 48 #include "content/browser/renderer_host/render_widget_host_view_event_handler.h"
49 #include "content/browser/renderer_host/render_widget_host_view_frame_subscriber .h" 49 #include "content/browser/renderer_host/render_widget_host_view_frame_subscriber .h"
50 #include "content/browser/renderer_host/resize_lock.h" 50 #include "content/browser/renderer_host/resize_lock.h"
51 #include "content/browser/renderer_host/text_input_manager.h" 51 #include "content/browser/renderer_host/text_input_manager.h"
52 #include "content/browser/web_contents/web_contents_view_aura.h" 52 #include "content/browser/web_contents/web_contents_view_aura.h"
53 #include "content/common/host_shared_bitmap_manager.h" 53 #include "content/common/host_shared_bitmap_manager.h"
54 #include "content/common/input/synthetic_web_input_event_builders.h" 54 #include "content/common/input/synthetic_web_input_event_builders.h"
55 #include "content/common/input_messages.h" 55 #include "content/common/input_messages.h"
56 #include "content/common/text_input_state.h" 56 #include "content/common/text_input_state.h"
57 #include "content/common/view_messages.h" 57 #include "content/common/view_messages.h"
58 #include "content/public/browser/keyboard_event_processing_result.h"
58 #include "content/public/browser/render_widget_host_view.h" 59 #include "content/public/browser/render_widget_host_view.h"
59 #include "content/public/browser/web_contents_view_delegate.h" 60 #include "content/public/browser/web_contents_view_delegate.h"
60 #include "content/public/common/content_features.h" 61 #include "content/public/common/content_features.h"
61 #include "content/public/common/context_menu_params.h" 62 #include "content/public/common/context_menu_params.h"
62 #include "content/public/test/mock_render_process_host.h" 63 #include "content/public/test/mock_render_process_host.h"
63 #include "content/public/test/test_browser_context.h" 64 #include "content/public/test/test_browser_context.h"
64 #include "content/test/test_render_view_host.h" 65 #include "content/test/test_render_view_host.h"
65 #include "content/test/test_web_contents.h" 66 #include "content/test/test_web_contents.h"
66 #include "ipc/ipc_message.h" 67 #include "ipc/ipc_message.h"
67 #include "ipc/ipc_test_sink.h" 68 #include "ipc/ipc_test_sink.h"
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 return !!focused_widget_ ? focused_widget_ : widget_host; 204 return !!focused_widget_ ? focused_widget_ : widget_host;
204 } 205 }
205 void set_focused_widget(RenderWidgetHostImpl* focused_widget) { 206 void set_focused_widget(RenderWidgetHostImpl* focused_widget) {
206 focused_widget_ = focused_widget; 207 focused_widget_ = focused_widget;
207 } 208 }
208 209
209 double get_last_device_scale_factor() { return last_device_scale_factor_; } 210 double get_last_device_scale_factor() { return last_device_scale_factor_; }
210 void UpdateDeviceScaleFactor(double device_scale_factor) override { 211 void UpdateDeviceScaleFactor(double device_scale_factor) override {
211 last_device_scale_factor_ = device_scale_factor; 212 last_device_scale_factor_ = device_scale_factor;
212 } 213 }
214 void set_pre_handle_keyboard_event_result(
215 KeyboardEventProcessingResult result) {
216 pre_handle_keyboard_event_result_ = result;
217 }
213 218
214 protected: 219 protected:
215 // RenderWidgetHostDelegate: 220 // RenderWidgetHostDelegate:
216 bool PreHandleKeyboardEvent(const NativeWebKeyboardEvent& event, 221 KeyboardEventProcessingResult PreHandleKeyboardEvent(
217 bool* is_keyboard_shortcut) override { 222 const NativeWebKeyboardEvent& event) override {
218 last_event_.reset(new NativeWebKeyboardEvent(event)); 223 last_event_.reset(new NativeWebKeyboardEvent(event));
219 return true; 224 return pre_handle_keyboard_event_result_;
220 } 225 }
221 void Cut() override {} 226 void Cut() override {}
222 void Copy() override {} 227 void Copy() override {}
223 void Paste() override {} 228 void Paste() override {}
224 void SelectAll() override {} 229 void SelectAll() override {}
225 void SendScreenRects() override { 230 void SendScreenRects() override {
226 if (rwh_) 231 if (rwh_)
227 rwh_->SendScreenRects(); 232 rwh_->SendScreenRects();
228 } 233 }
229 bool IsFullscreenForCurrentTab() const override { return is_fullscreen_; } 234 bool IsFullscreenForCurrentTab() const override { return is_fullscreen_; }
230 235
231 private: 236 private:
232 std::unique_ptr<NativeWebKeyboardEvent> last_event_; 237 std::unique_ptr<NativeWebKeyboardEvent> last_event_;
233 RenderWidgetHostImpl* rwh_; 238 RenderWidgetHostImpl* rwh_;
234 bool is_fullscreen_; 239 bool is_fullscreen_;
235 TextInputManager text_input_manager_; 240 TextInputManager text_input_manager_;
236 RenderWidgetHostImpl* focused_widget_; 241 RenderWidgetHostImpl* focused_widget_;
237 double last_device_scale_factor_; 242 double last_device_scale_factor_;
243 KeyboardEventProcessingResult pre_handle_keyboard_event_result_ =
244 KeyboardEventProcessingResult::HANDLED;
238 245
239 DISALLOW_COPY_AND_ASSIGN(MockRenderWidgetHostDelegate); 246 DISALLOW_COPY_AND_ASSIGN(MockRenderWidgetHostDelegate);
240 }; 247 };
241 248
242 // Simple observer that keeps track of changes to a window for tests. 249 // Simple observer that keeps track of changes to a window for tests.
243 class TestWindowObserver : public aura::WindowObserver { 250 class TestWindowObserver : public aura::WindowObserver {
244 public: 251 public:
245 explicit TestWindowObserver(aura::Window* window_to_observe) 252 explicit TestWindowObserver(aura::Window* window_to_observe)
246 : window_(window_to_observe) { 253 : window_(window_to_observe) {
247 window_->AddObserver(this); 254 window_->AddObserver(this);
(...skipping 4014 matching lines...) Expand 10 before | Expand all | Expand 10 after
4262 // Checks key event codes. 4269 // Checks key event codes.
4263 TEST_F(RenderWidgetHostViewAuraTest, KeyEvent) { 4270 TEST_F(RenderWidgetHostViewAuraTest, KeyEvent) {
4264 view_->InitAsChild(nullptr); 4271 view_->InitAsChild(nullptr);
4265 view_->Show(); 4272 view_->Show();
4266 4273
4267 ui::KeyEvent key_event(ui::ET_KEY_PRESSED, ui::VKEY_A, ui::DomCode::US_A, 4274 ui::KeyEvent key_event(ui::ET_KEY_PRESSED, ui::VKEY_A, ui::DomCode::US_A,
4268 ui::EF_NONE); 4275 ui::EF_NONE);
4269 view_->OnKeyEvent(&key_event); 4276 view_->OnKeyEvent(&key_event);
4270 4277
4271 const NativeWebKeyboardEvent* event = delegates_.back()->last_event(); 4278 const NativeWebKeyboardEvent* event = delegates_.back()->last_event();
4272 EXPECT_NE(nullptr, event); 4279 ASSERT_TRUE(event);
4273 if (event) { 4280 EXPECT_EQ(key_event.key_code(), event->windowsKeyCode);
4274 EXPECT_EQ(key_event.key_code(), event->windowsKeyCode); 4281 EXPECT_EQ(ui::KeycodeConverter::DomCodeToNativeKeycode(key_event.code()),
4275 EXPECT_EQ(ui::KeycodeConverter::DomCodeToNativeKeycode(key_event.code()), 4282 event->nativeKeyCode);
4276 event->nativeKeyCode); 4283 }
4277 } 4284
4285 TEST_F(RenderWidgetHostViewAuraTest, KeyEventsHandled) {
4286 view_->InitAsChild(nullptr);
4287 view_->Show();
4288
4289 ui::KeyEvent key_event1(ui::ET_KEY_PRESSED, ui::VKEY_A, ui::EF_NONE);
4290 view_->OnKeyEvent(&key_event1);
4291 // Normally event should be handled.
4292 EXPECT_TRUE(key_event1.handled());
4293
4294 ASSERT_FALSE(delegates_.empty());
4295 // Make the delegate mark the event as not-handled.
4296 delegates_.back()->set_pre_handle_keyboard_event_result(
4297 KeyboardEventProcessingResult::HANDLED_DONT_UPDATE_EVENT);
4298 ui::KeyEvent key_event2(ui::ET_KEY_PRESSED, ui::VKEY_A, ui::EF_NONE);
4299 view_->OnKeyEvent(&key_event2);
4300 EXPECT_FALSE(key_event2.handled());
4278 } 4301 }
4279 4302
4280 TEST_F(RenderWidgetHostViewAuraTest, SetCanScrollForWebMouseWheelEvent) { 4303 TEST_F(RenderWidgetHostViewAuraTest, SetCanScrollForWebMouseWheelEvent) {
4281 view_->InitAsChild(nullptr); 4304 view_->InitAsChild(nullptr);
4282 view_->Show(); 4305 view_->Show();
4283 4306
4284 sink_->ClearMessages(); 4307 sink_->ClearMessages();
4285 4308
4286 // Simulates the mouse wheel event with ctrl modifier applied. 4309 // Simulates the mouse wheel event with ctrl modifier applied.
4287 ui::MouseWheelEvent event(gfx::Vector2d(1, 1), gfx::Point(), gfx::Point(), 4310 ui::MouseWheelEvent event(gfx::Vector2d(1, 1), gfx::Point(), gfx::Point(),
(...skipping 719 matching lines...) Expand 10 before | Expand all | Expand 10 after
5007 // There is no composition in the beginning. 5030 // There is no composition in the beginning.
5008 EXPECT_FALSE(has_composition_text()); 5031 EXPECT_FALSE(has_composition_text());
5009 SetHasCompositionTextToTrue(); 5032 SetHasCompositionTextToTrue();
5010 view->ImeCancelComposition(); 5033 view->ImeCancelComposition();
5011 // The composition must have been canceled. 5034 // The composition must have been canceled.
5012 EXPECT_FALSE(has_composition_text()); 5035 EXPECT_FALSE(has_composition_text());
5013 } 5036 }
5014 } 5037 }
5015 5038
5016 } // namespace content 5039 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698