 Chromium Code Reviews
 Chromium Code Reviews Issue 242733008:
  Prevent Control+two-finger-scroll from zooming the page.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src
    
  
    Issue 242733008:
  Prevent Control+two-finger-scroll from zooming the page.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src| 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()); |