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

Unified Diff: cc/input/top_controls_manager.cc

Issue 714003002: Allow changing top controls height (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 6 years 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
« no previous file with comments | « cc/input/top_controls_manager.h ('k') | cc/input/top_controls_manager_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/input/top_controls_manager.cc
diff --git a/cc/input/top_controls_manager.cc b/cc/input/top_controls_manager.cc
index ddde672f378a6687b7b2cbab2c592dab5f79a8c6..1615d7f2d3875e4766bb55f884e166caa7d380b9 100644
--- a/cc/input/top_controls_manager.cc
+++ b/cc/input/top_controls_manager.cc
@@ -26,29 +26,24 @@ const int64 kShowHideMaxDurationMs = 200;
// static
scoped_ptr<TopControlsManager> TopControlsManager::Create(
TopControlsManagerClient* client,
- float top_controls_height,
float top_controls_show_threshold,
float top_controls_hide_threshold) {
return make_scoped_ptr(new TopControlsManager(client,
- top_controls_height,
top_controls_show_threshold,
top_controls_hide_threshold));
}
TopControlsManager::TopControlsManager(TopControlsManagerClient* client,
- float top_controls_height,
float top_controls_show_threshold,
float top_controls_hide_threshold)
: client_(client),
animation_direction_(NO_ANIMATION),
permitted_state_(BOTH),
- top_controls_height_(top_controls_height),
+ top_controls_height_(0.f),
current_scroll_delta_(0.f),
controls_scroll_begin_offset_(0.f),
- top_controls_show_height_(
- top_controls_height * top_controls_hide_threshold),
- top_controls_hide_height_(
- top_controls_height * (1.f - top_controls_show_threshold)),
+ top_controls_show_threshold_(top_controls_hide_threshold),
+ top_controls_hide_threshold_(top_controls_show_threshold),
pinch_gesture_active_(false) {
CHECK(client_);
}
@@ -163,6 +158,19 @@ void TopControlsManager::SetControlsTopOffset(float controls_top_offset) {
client_->DidChangeTopControlsPosition();
}
+void TopControlsManager::SetTopControlsHeight(float top_controls_height) {
+ DCHECK_GE(top_controls_height, 0);
+
+ if (top_controls_height == top_controls_height_)
+ return;
+
+ ResetAnimations();
+ float top_controls_offset = client_->ControlsTopOffset();
+ top_controls_height_ = top_controls_height;
+ SetControlsTopOffset(top_controls_offset);
+ StartAnimationIfNecessary();
+}
+
gfx::Vector2dF TopControlsManager::Animate(base::TimeTicks monotonic_time) {
if (!top_controls_animation_ || !client_->HaveRootScrollLayer())
return gfx::Vector2dF();
@@ -217,10 +225,14 @@ void TopControlsManager::StartAnimationIfNecessary() {
&& client_->ControlsTopOffset() != -top_controls_height_) {
AnimationDirection show_controls = NO_ANIMATION;
- if (client_->ControlsTopOffset() >= -top_controls_show_height_) {
+ float top_controls_show_height =
+ top_controls_height_ * top_controls_hide_threshold_;
+ float top_controls_hide_height =
+ top_controls_height_ * (1.f - top_controls_show_threshold_);
+ if (client_->ControlsTopOffset() >= -top_controls_show_height) {
// If we're showing so much that the hide threshold won't trigger, show.
show_controls = SHOWING_CONTROLS;
- } else if (client_->ControlsTopOffset() <= -top_controls_hide_height_) {
+ } else if (client_->ControlsTopOffset() <= -top_controls_hide_height) {
// If we're showing so little that the show threshold won't trigger, hide.
show_controls = HIDING_CONTROLS;
} else {
« no previous file with comments | « cc/input/top_controls_manager.h ('k') | cc/input/top_controls_manager_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698