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 "content/browser/renderer_host/overscroll_controller.h" | 5 #include "content/browser/renderer_host/overscroll_controller.h" |
6 | 6 |
| 7 #include "base/command_line.h" |
7 #include "base/logging.h" | 8 #include "base/logging.h" |
8 #include "content/browser/renderer_host/overscroll_controller_delegate.h" | 9 #include "content/browser/renderer_host/overscroll_controller_delegate.h" |
9 #include "content/public/browser/overscroll_configuration.h" | 10 #include "content/public/browser/overscroll_configuration.h" |
| 11 #include "content/public/common/content_switches.h" |
10 | 12 |
11 using WebKit::WebInputEvent; | 13 using WebKit::WebInputEvent; |
12 | 14 |
| 15 namespace { |
| 16 |
| 17 bool IsScrollEndEffectEnabled() { |
| 18 return CommandLine::ForCurrentProcess()->GetSwitchValueASCII( |
| 19 switches::kScrollEndEffect) == "1"; |
| 20 } |
| 21 |
| 22 } // namespace |
| 23 |
13 namespace content { | 24 namespace content { |
14 | 25 |
15 OverscrollController::OverscrollController() | 26 OverscrollController::OverscrollController() |
16 : overscroll_mode_(OVERSCROLL_NONE), | 27 : overscroll_mode_(OVERSCROLL_NONE), |
17 scroll_state_(STATE_UNKNOWN), | 28 scroll_state_(STATE_UNKNOWN), |
18 overscroll_delta_x_(0.f), | 29 overscroll_delta_x_(0.f), |
19 overscroll_delta_y_(0.f), | 30 overscroll_delta_y_(0.f), |
20 delegate_(NULL) { | 31 delegate_(NULL) { |
21 } | 32 } |
22 | 33 |
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
295 // to make sure that subsequent scroll events go through to the page first. | 306 // to make sure that subsequent scroll events go through to the page first. |
296 OverscrollMode new_mode = OVERSCROLL_NONE; | 307 OverscrollMode new_mode = OVERSCROLL_NONE; |
297 const float kMinRatio = 2.5; | 308 const float kMinRatio = 2.5; |
298 if (fabs(overscroll_delta_x_) > horiz_threshold && | 309 if (fabs(overscroll_delta_x_) > horiz_threshold && |
299 fabs(overscroll_delta_x_) > fabs(overscroll_delta_y_) * kMinRatio) | 310 fabs(overscroll_delta_x_) > fabs(overscroll_delta_y_) * kMinRatio) |
300 new_mode = overscroll_delta_x_ > 0.f ? OVERSCROLL_EAST : OVERSCROLL_WEST; | 311 new_mode = overscroll_delta_x_ > 0.f ? OVERSCROLL_EAST : OVERSCROLL_WEST; |
301 else if (fabs(overscroll_delta_y_) > vert_threshold && | 312 else if (fabs(overscroll_delta_y_) > vert_threshold && |
302 fabs(overscroll_delta_y_) > fabs(overscroll_delta_x_) * kMinRatio) | 313 fabs(overscroll_delta_y_) > fabs(overscroll_delta_x_) * kMinRatio) |
303 new_mode = overscroll_delta_y_ > 0.f ? OVERSCROLL_SOUTH : OVERSCROLL_NORTH; | 314 new_mode = overscroll_delta_y_ > 0.f ? OVERSCROLL_SOUTH : OVERSCROLL_NORTH; |
304 | 315 |
| 316 // The vertical oversrcoll currently does not have any UX effects other then |
| 317 // for the scroll end effect, so testing if it is enabled. |
| 318 if ((new_mode == OVERSCROLL_SOUTH || new_mode == OVERSCROLL_NORTH) && |
| 319 !IsScrollEndEffectEnabled()) |
| 320 new_mode = OVERSCROLL_NONE; |
| 321 |
305 if (overscroll_mode_ == OVERSCROLL_NONE) | 322 if (overscroll_mode_ == OVERSCROLL_NONE) |
306 SetOverscrollMode(new_mode); | 323 SetOverscrollMode(new_mode); |
307 else if (new_mode != overscroll_mode_) | 324 else if (new_mode != overscroll_mode_) |
308 SetOverscrollMode(OVERSCROLL_NONE); | 325 SetOverscrollMode(OVERSCROLL_NONE); |
309 | 326 |
310 if (overscroll_mode_ == OVERSCROLL_NONE) | 327 if (overscroll_mode_ == OVERSCROLL_NONE) |
311 return; | 328 return; |
312 | 329 |
313 // Tell the delegate about the overscroll update so that it can update | 330 // Tell the delegate about the overscroll update so that it can update |
314 // the display accordingly (e.g. show history preview etc.). | 331 // the display accordingly (e.g. show history preview etc.). |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 overscroll_mode_ = mode; | 369 overscroll_mode_ = mode; |
353 if (overscroll_mode_ == OVERSCROLL_NONE) | 370 if (overscroll_mode_ == OVERSCROLL_NONE) |
354 overscroll_delta_x_ = overscroll_delta_y_ = 0.f; | 371 overscroll_delta_x_ = overscroll_delta_y_ = 0.f; |
355 else | 372 else |
356 scroll_state_ = STATE_OVERSCROLLING; | 373 scroll_state_ = STATE_OVERSCROLLING; |
357 if (delegate_) | 374 if (delegate_) |
358 delegate_->OnOverscrollModeChange(old_mode, overscroll_mode_); | 375 delegate_->OnOverscrollModeChange(old_mode, overscroll_mode_); |
359 } | 376 } |
360 | 377 |
361 } // namespace content | 378 } // namespace content |
OLD | NEW |