Chromium Code Reviews| Index: content/browser/renderer_host/render_widget_host_view_aura_unittest.cc |
| diff --git a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc |
| index 81137d9eeba78ff21a5e049618c72b4acd5282bb..2242a3c1e0170d01c0fa2393c1a957d1cc88d4cf 100644 |
| --- a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc |
| +++ b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc |
| @@ -148,10 +148,23 @@ class FakeFrameSubscriber : public RenderWidgetHostViewFrameSubscriber { |
| class FakeRenderWidgetHostViewAura : public RenderWidgetHostViewAura { |
| public: |
| FakeRenderWidgetHostViewAura(RenderWidgetHost* widget) |
| - : RenderWidgetHostViewAura(widget), has_resize_lock_(false) {} |
| + : RenderWidgetHostViewAura(widget), |
| + has_resize_lock_(false) {} |
| virtual ~FakeRenderWidgetHostViewAura() {} |
| + const blink::WebInputEvent* last_input_event() const { |
| + return last_input_event_.get(); |
| + } |
| + |
| + scoped_ptr<cc::CopyOutputRequest> ReleaseLastCopyRequest() { |
| + return last_copy_request_.Pass(); |
| + } |
| + |
| + void RunOnCompositingDidCommit() { |
| + OnCompositingDidCommit(window()->GetHost()->compositor()); |
| + } |
| + |
| virtual bool ShouldCreateResizeLock() OVERRIDE { |
| gfx::Size desired_size = window()->bounds().size(); |
| return desired_size != current_frame_size_in_dip(); |
| @@ -178,10 +191,13 @@ class FakeRenderWidgetHostViewAura : public RenderWidgetHostViewAura { |
| } |
| } |
| - void RunOnCompositingDidCommit() { |
| - OnCompositingDidCommit(window()->GetHost()->compositor()); |
| + virtual InputEventAckState FilterInputEvent( |
| + const blink::WebInputEvent& input_event) OVERRIDE { |
|
Daniel Erat
2014/04/21 23:26:39
please let me know if there's a better way to capt
|
| + last_input_event_.reset(new blink::WebInputEvent(input_event)); |
| + return RenderWidgetHostViewAura::FilterInputEvent(input_event); |
| } |
| + private: |
| // A lock that doesn't actually do anything to the compositor, and does not |
| // time out. |
| class FakeResizeLock : public ResizeLock { |
| @@ -193,6 +209,9 @@ class FakeRenderWidgetHostViewAura : public RenderWidgetHostViewAura { |
| bool has_resize_lock_; |
| gfx::Size last_frame_size_; |
| scoped_ptr<cc::CopyOutputRequest> last_copy_request_; |
| + scoped_ptr<blink::WebInputEvent> last_input_event_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(FakeRenderWidgetHostViewAura); |
| }; |
| class RenderWidgetHostViewAuraTest : public testing::Test { |
| @@ -1249,6 +1268,44 @@ TEST_F(RenderWidgetHostViewAuraTest, SoftwareDPIChange) { |
| EXPECT_NE(frame_provider.get(), view_->frame_provider_.get()); |
| } |
| +TEST_F(RenderWidgetHostViewAuraTest, ClearControlOnScrollEvent) { |
| + view_->InitAsChild(NULL); |
| + view_->Show(); |
| + ui::ScrollEvent event(ui::ET_SCROLL, |
| + gfx::Point(30, 30), |
| + ui::EventTimeForNow(), |
| + ui::EF_CONTROL_DOWN, |
| + 0, 0, 0, 0, |
| + 2 /* finger_count */); |
| + |
| + // The Control modifier should be cleared in the forwarded event. |
| + view_->OnScrollEvent(&event); |
| + const blink::WebInputEvent* web_event = view_->last_input_event(); |
| + ASSERT_TRUE(web_event); |
| + EXPECT_EQ(blink::WebInputEvent::MouseWheel, web_event->type); |
| + EXPECT_EQ(0, web_event->modifiers); |
| +} |
| + |
| +TEST_F(RenderWidgetHostViewAuraTest, |
| + PreserveControlOnScrollEventWithOtherModifiers) { |
| + view_->InitAsChild(NULL); |
| + view_->Show(); |
| + ui::ScrollEvent event(ui::ET_SCROLL, |
| + gfx::Point(30, 30), |
| + ui::EventTimeForNow(), |
| + ui::EF_CONTROL_DOWN | ui::EF_ALT_DOWN, |
| + 0, 0, 0, 0, |
| + 2 /* finger_count */); |
| + |
| + // The Control modifier should be preserved since Alt was also down. |
| + view_->OnScrollEvent(&event); |
| + const blink::WebInputEvent* web_event = view_->last_input_event(); |
| + ASSERT_TRUE(web_event); |
| + EXPECT_EQ(blink::WebInputEvent::MouseWheel, web_event->type); |
| + EXPECT_EQ(blink::WebInputEvent::ControlKey | blink::WebInputEvent::AltKey, |
| + web_event->modifiers); |
| +} |
| + |
| class RenderWidgetHostViewAuraCopyRequestTest |
| : public RenderWidgetHostViewAuraShutdownTest { |
| public: |
| @@ -1289,7 +1346,8 @@ TEST_F(RenderWidgetHostViewAuraCopyRequestTest, DestroyedAfterCopyRequest) { |
| run_loop.QuitClosure()))); |
| EXPECT_EQ(0, callback_count_); |
| - EXPECT_FALSE(view_->last_copy_request_); |
| + request = view_->ReleaseLastCopyRequest(); |
| + EXPECT_FALSE(request); |
| view_->BeginFrameSubscription( |
| frame_subscriber.PassAs<RenderWidgetHostViewFrameSubscriber>()); |
| @@ -1297,9 +1355,9 @@ TEST_F(RenderWidgetHostViewAuraCopyRequestTest, DestroyedAfterCopyRequest) { |
| 1, MakeDelegatedFrame(1.f, view_rect.size(), gfx::Rect(view_rect))); |
| EXPECT_EQ(0, callback_count_); |
| - EXPECT_TRUE(view_->last_copy_request_); |
| - EXPECT_TRUE(view_->last_copy_request_->has_texture_mailbox()); |
| - request = view_->last_copy_request_.Pass(); |
| + request = view_->ReleaseLastCopyRequest(); |
| + ASSERT_TRUE(request); |
| + EXPECT_TRUE(request->has_texture_mailbox()); |
| // There should be one subscriber texture in flight. |
| EXPECT_EQ(1u, view_->active_frame_subscriber_textures_.size()); |
| @@ -1322,7 +1380,7 @@ TEST_F(RenderWidgetHostViewAuraCopyRequestTest, DestroyedAfterCopyRequest) { |
| 1, MakeDelegatedFrame(1.f, view_rect.size(), gfx::Rect(view_rect))); |
| EXPECT_EQ(1, callback_count_); |
| - request = view_->last_copy_request_.Pass(); |
| + request = view_->ReleaseLastCopyRequest(); |
| // There should be one subscriber texture in flight again. |
| EXPECT_EQ(1u, view_->active_frame_subscriber_textures_.size()); |