 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| OLD | NEW | 
|---|---|
| 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 "base/logging.h" | 5 #include "base/logging.h" | 
| 6 #include "base/strings/utf_string_conversions.h" | 6 #include "base/strings/utf_string_conversions.h" | 
| 7 #include "content/browser/frame_host/cross_site_transferring_request.h" | 7 #include "content/browser/frame_host/cross_site_transferring_request.h" | 
| 8 #include "content/browser/frame_host/interstitial_page_impl.h" | 8 #include "content/browser/frame_host/interstitial_page_impl.h" | 
| 9 #include "content/browser/frame_host/navigation_entry_impl.h" | 9 #include "content/browser/frame_host/navigation_entry_impl.h" | 
| 10 #include "content/browser/renderer_host/render_view_host_impl.h" | 10 #include "content/browser/renderer_host/render_view_host_impl.h" | 
| (...skipping 2412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2423 | 2423 | 
| 2424 // Tests that some mouseehweel events get turned into browser zoom requests. | 2424 // Tests that some mouseehweel events get turned into browser zoom requests. | 
| 2425 TEST_F(WebContentsImplTest, HandleWheelEvent) { | 2425 TEST_F(WebContentsImplTest, HandleWheelEvent) { | 
| 2426 using blink::WebInputEvent; | 2426 using blink::WebInputEvent; | 
| 2427 | 2427 | 
| 2428 scoped_ptr<ContentsZoomChangedDelegate> delegate( | 2428 scoped_ptr<ContentsZoomChangedDelegate> delegate( | 
| 2429 new ContentsZoomChangedDelegate()); | 2429 new ContentsZoomChangedDelegate()); | 
| 2430 contents()->SetDelegate(delegate.get()); | 2430 contents()->SetDelegate(delegate.get()); | 
| 2431 | 2431 | 
| 2432 int modifiers = 0; | 2432 int modifiers = 0; | 
| 2433 float dy = 1; | |
| 
Daniel Erat
2014/04/22 17:40:12
deleted this since i didn't see much point for it
 | |
| 2434 // Verify that normal mouse wheel events do nothing to change the zoom level. | 2433 // Verify that normal mouse wheel events do nothing to change the zoom level. | 
| 2435 blink::WebMouseWheelEvent event = | 2434 blink::WebMouseWheelEvent event = | 
| 2436 SyntheticWebMouseWheelEventBuilder::Build(0, dy, modifiers, false); | 2435 SyntheticWebMouseWheelEventBuilder::Build(0, 1, modifiers, false); | 
| 2437 EXPECT_FALSE(contents()->HandleWheelEvent(event)); | 2436 EXPECT_FALSE(contents()->HandleWheelEvent(event)); | 
| 2438 EXPECT_EQ(0, delegate->GetAndResetContentsZoomChangedCallCount()); | 2437 EXPECT_EQ(0, delegate->GetAndResetContentsZoomChangedCallCount()); | 
| 2439 | 2438 | 
| 2440 modifiers = WebInputEvent::ShiftKey | WebInputEvent::AltKey; | 2439 modifiers = WebInputEvent::ShiftKey | WebInputEvent::AltKey; | 
| 2441 event = SyntheticWebMouseWheelEventBuilder::Build(0, dy, modifiers, false); | 2440 event = SyntheticWebMouseWheelEventBuilder::Build(0, 1, modifiers, false); | 
| 2442 EXPECT_FALSE(contents()->HandleWheelEvent(event)); | 2441 EXPECT_FALSE(contents()->HandleWheelEvent(event)); | 
| 2443 EXPECT_EQ(0, delegate->GetAndResetContentsZoomChangedCallCount()); | 2442 EXPECT_EQ(0, delegate->GetAndResetContentsZoomChangedCallCount()); | 
| 2444 | 2443 | 
| 2445 // But whenever the ctrl modifier is applied, they can increase/decrease zoom. | 2444 // But whenever the ctrl modifier is applied, they can increase/decrease zoom. | 
| 2446 // Except on MacOS where we never want to adjust zoom with mousewheel. | 2445 // Except on MacOS where we never want to adjust zoom with mousewheel. | 
| 2447 modifiers = WebInputEvent::ControlKey; | 2446 modifiers = WebInputEvent::ControlKey; | 
| 2448 event = SyntheticWebMouseWheelEventBuilder::Build(0, dy, modifiers, false); | 2447 event = SyntheticWebMouseWheelEventBuilder::Build(0, 1, modifiers, false); | 
| 2449 bool handled = contents()->HandleWheelEvent(event); | 2448 bool handled = contents()->HandleWheelEvent(event); | 
| 2450 #if defined(OS_MACOSX) | 2449 #if defined(OS_MACOSX) | 
| 2451 EXPECT_FALSE(handled); | 2450 EXPECT_FALSE(handled); | 
| 2452 EXPECT_EQ(0, delegate->GetAndResetContentsZoomChangedCallCount()); | 2451 EXPECT_EQ(0, delegate->GetAndResetContentsZoomChangedCallCount()); | 
| 2453 #else | 2452 #else | 
| 2454 EXPECT_TRUE(handled); | 2453 EXPECT_TRUE(handled); | 
| 2455 EXPECT_EQ(1, delegate->GetAndResetContentsZoomChangedCallCount()); | 2454 EXPECT_EQ(1, delegate->GetAndResetContentsZoomChangedCallCount()); | 
| 2456 EXPECT_TRUE(delegate->last_zoom_in()); | 2455 EXPECT_TRUE(delegate->last_zoom_in()); | 
| 2457 #endif | 2456 #endif | 
| 2458 | 2457 | 
| 2459 modifiers = WebInputEvent::ControlKey | WebInputEvent::ShiftKey | | 2458 modifiers = WebInputEvent::ControlKey | WebInputEvent::ShiftKey | | 
| 2460 WebInputEvent::AltKey; | 2459 WebInputEvent::AltKey; | 
| 2461 dy = -5; | 2460 event = SyntheticWebMouseWheelEventBuilder::Build(2, -5, modifiers, false); | 
| 2462 event = SyntheticWebMouseWheelEventBuilder::Build(2, dy, modifiers, false); | |
| 2463 handled = contents()->HandleWheelEvent(event); | 2461 handled = contents()->HandleWheelEvent(event); | 
| 2464 #if defined(OS_MACOSX) | 2462 #if defined(OS_MACOSX) | 
| 2465 EXPECT_FALSE(handled); | 2463 EXPECT_FALSE(handled); | 
| 2466 EXPECT_EQ(0, delegate->GetAndResetContentsZoomChangedCallCount()); | 2464 EXPECT_EQ(0, delegate->GetAndResetContentsZoomChangedCallCount()); | 
| 2467 #else | 2465 #else | 
| 2468 EXPECT_TRUE(handled); | 2466 EXPECT_TRUE(handled); | 
| 2469 EXPECT_EQ(1, delegate->GetAndResetContentsZoomChangedCallCount()); | 2467 EXPECT_EQ(1, delegate->GetAndResetContentsZoomChangedCallCount()); | 
| 2470 EXPECT_FALSE(delegate->last_zoom_in()); | 2468 EXPECT_FALSE(delegate->last_zoom_in()); | 
| 2471 #endif | 2469 #endif | 
| 2472 | 2470 | 
| 2473 // Unless there is no vertical movement. | 2471 // Unless there is no vertical movement. | 
| 2474 dy = 0; | 2472 event = SyntheticWebMouseWheelEventBuilder::Build(2, 0, modifiers, false); | 
| 2475 event = SyntheticWebMouseWheelEventBuilder::Build(2, dy, modifiers, false); | |
| 2476 EXPECT_FALSE(contents()->HandleWheelEvent(event)); | 2473 EXPECT_FALSE(contents()->HandleWheelEvent(event)); | 
| 2477 EXPECT_EQ(0, delegate->GetAndResetContentsZoomChangedCallCount()); | 2474 EXPECT_EQ(0, delegate->GetAndResetContentsZoomChangedCallCount()); | 
| 2478 | 2475 | 
| 2479 // Ensure pointers to the delegate aren't kept beyond it's lifetime. | 2476 // Events containing precise scrolling deltas also shouldn't result in the | 
| 2477 // zoom being adjusted, to avoid accidental adjustments caused by | |
| 2478 // two-finger-scrolling on a touchpad. | |
| 2479 modifiers = WebInputEvent::ControlKey; | |
| 2480 event = SyntheticWebMouseWheelEventBuilder::Build(0, 5, modifiers, true); | |
| 2481 EXPECT_FALSE(contents()->HandleWheelEvent(event)); | |
| 2482 EXPECT_EQ(0, delegate->GetAndResetContentsZoomChangedCallCount()); | |
| 2483 | |
| 2484 // Ensure pointers to the delegate aren't kept beyond its lifetime. | |
| 2480 contents()->SetDelegate(NULL); | 2485 contents()->SetDelegate(NULL); | 
| 2481 } | 2486 } | 
| 2482 | 2487 | 
| 2483 // Tests that trackpad GesturePinchUpdate events get turned into browser zoom. | 2488 // Tests that trackpad GesturePinchUpdate events get turned into browser zoom. | 
| 2484 TEST_F(WebContentsImplTest, HandleGestureEvent) { | 2489 TEST_F(WebContentsImplTest, HandleGestureEvent) { | 
| 2485 using blink::WebGestureEvent; | 2490 using blink::WebGestureEvent; | 
| 2486 using blink::WebInputEvent; | 2491 using blink::WebInputEvent; | 
| 2487 | 2492 | 
| 2488 scoped_ptr<ContentsZoomChangedDelegate> delegate( | 2493 scoped_ptr<ContentsZoomChangedDelegate> delegate( | 
| 2489 new ContentsZoomChangedDelegate()); | 2494 new ContentsZoomChangedDelegate()); | 
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2524 WebInputEvent::GesturePinchUpdate, WebGestureEvent::Touchscreen); | 2529 WebInputEvent::GesturePinchUpdate, WebGestureEvent::Touchscreen); | 
| 2525 event.data.pinchUpdate.scale = kZoomStepValue * 3; | 2530 event.data.pinchUpdate.scale = kZoomStepValue * 3; | 
| 2526 EXPECT_FALSE(contents()->HandleGestureEvent(event)); | 2531 EXPECT_FALSE(contents()->HandleGestureEvent(event)); | 
| 2527 EXPECT_EQ(0, delegate->GetAndResetContentsZoomChangedCallCount()); | 2532 EXPECT_EQ(0, delegate->GetAndResetContentsZoomChangedCallCount()); | 
| 2528 | 2533 | 
| 2529 // Ensure pointers to the delegate aren't kept beyond it's lifetime. | 2534 // Ensure pointers to the delegate aren't kept beyond it's lifetime. | 
| 2530 contents()->SetDelegate(NULL); | 2535 contents()->SetDelegate(NULL); | 
| 2531 } | 2536 } | 
| 2532 | 2537 | 
| 2533 } // namespace content | 2538 } // namespace content | 
| OLD | NEW |