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

Unified Diff: content/browser/renderer_host/render_widget_host_view_aura_unittest.cc

Issue 242733008: Prevent Control+two-finger-scroll from zooming the page. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
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());

Powered by Google App Engine
This is Rietveld 408576698