| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "cc/top_controls_manager.h" | 5 #include "cc/top_controls_manager.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/time.h" | 10 #include "base/time.h" |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 | 25 |
| 26 // static | 26 // static |
| 27 scoped_ptr<TopControlsManager> TopControlsManager::Create( | 27 scoped_ptr<TopControlsManager> TopControlsManager::Create( |
| 28 TopControlsManagerClient* client, float top_controls_height) { | 28 TopControlsManagerClient* client, float top_controls_height) { |
| 29 return make_scoped_ptr(new TopControlsManager(client, top_controls_height)); | 29 return make_scoped_ptr(new TopControlsManager(client, top_controls_height)); |
| 30 } | 30 } |
| 31 | 31 |
| 32 TopControlsManager::TopControlsManager(TopControlsManagerClient* client, | 32 TopControlsManager::TopControlsManager(TopControlsManagerClient* client, |
| 33 float top_controls_height) | 33 float top_controls_height) |
| 34 : client_(client), | 34 : client_(client), |
| 35 content_layer_id_(0), | |
| 36 is_overlay_mode_(false), | 35 is_overlay_mode_(false), |
| 37 top_controls_height_(top_controls_height), | 36 top_controls_height_(top_controls_height), |
| 38 controls_top_offset_(0), | 37 controls_top_offset_(0), |
| 39 content_top_offset_(top_controls_height), | 38 content_top_offset_(top_controls_height), |
| 40 previous_root_scroll_offset_(0.f), | 39 previous_root_scroll_offset_(0.f), |
| 41 scroll_readjustment_enabled_(false), | 40 scroll_readjustment_enabled_(false), |
| 42 is_showing_animation_(false) { | 41 is_showing_animation_(false) { |
| 43 CHECK(client_); | 42 CHECK(client_); |
| 44 } | 43 } |
| 45 | 44 |
| 46 TopControlsManager::~TopControlsManager() { | 45 TopControlsManager::~TopControlsManager() { |
| 47 } | 46 } |
| 48 | 47 |
| 49 void TopControlsManager::UpdateDrawPositions() { | 48 void TopControlsManager::UpdateDrawPositions() { |
| 50 if (!RootScrollLayer()) | 49 if (!RootScrollLayer()) |
| 51 return; | 50 return; |
| 52 | 51 |
| 53 // If the scroll position has changed underneath us (i.e. a javascript | 52 // If the scroll position has changed underneath us (i.e. a javascript |
| 54 // scroll), then simulate a scroll that covers the delta. | 53 // scroll), then simulate a scroll that covers the delta. |
| 55 float scroll_total_y = RootScrollLayerTotalScrollY(); | 54 float scroll_total_y = RootScrollLayerTotalScrollY(); |
| 56 if (scroll_readjustment_enabled_ | 55 if (scroll_readjustment_enabled_ |
| 57 && scroll_total_y != previous_root_scroll_offset_) { | 56 && scroll_total_y != previous_root_scroll_offset_) { |
| 58 ScrollBy(gfx::Vector2dF(0, scroll_total_y - previous_root_scroll_offset_)); | 57 ScrollBy(gfx::Vector2dF(0, scroll_total_y - previous_root_scroll_offset_)); |
| 59 StartAnimationIfNecessary(); | 58 StartAnimationIfNecessary(); |
| 60 previous_root_scroll_offset_ = RootScrollLayerTotalScrollY(); | 59 previous_root_scroll_offset_ = RootScrollLayerTotalScrollY(); |
| 61 } | 60 } |
| 62 | |
| 63 float offset_top = is_overlay_mode_ ? 0 : content_top_offset_; | |
| 64 | |
| 65 LayerImpl* content_layer = | |
| 66 client_->activeTree()->FindActiveTreeLayerById(content_layer_id_); | |
| 67 DCHECK(content_layer); | |
| 68 if (content_layer) { | |
| 69 gfx::Transform transform; | |
| 70 transform.Translate(0, offset_top); | |
| 71 content_layer->setTransform(transform); | |
| 72 } | |
| 73 | |
| 74 // TODO(tedchoc): Adjust fixed position layers as well. | |
| 75 } | 61 } |
| 76 | 62 |
| 77 void TopControlsManager::ScrollBegin() { | 63 void TopControlsManager::ScrollBegin() { |
| 78 ResetAnimations(); | 64 ResetAnimations(); |
| 79 scroll_readjustment_enabled_ = false; | 65 scroll_readjustment_enabled_ = false; |
| 80 } | 66 } |
| 81 | 67 |
| 82 gfx::Vector2dF TopControlsManager::ScrollBy( | 68 gfx::Vector2dF TopControlsManager::ScrollBy( |
| 83 const gfx::Vector2dF pending_delta) { | 69 const gfx::Vector2dF pending_delta) { |
| 84 ResetAnimations(); | 70 ResetAnimations(); |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 185 | 171 |
| 186 if (controls_top_offset_ != 0 | 172 if (controls_top_offset_ != 0 |
| 187 && controls_top_offset_ != -top_controls_height_) { | 173 && controls_top_offset_ != -top_controls_height_) { |
| 188 SetupAnimation( | 174 SetupAnimation( |
| 189 controls_top_offset_ >= -(top_controls_height_ * kShowHideThreshold)); | 175 controls_top_offset_ >= -(top_controls_height_ * kShowHideThreshold)); |
| 190 client_->setNeedsRedraw(); | 176 client_->setNeedsRedraw(); |
| 191 } | 177 } |
| 192 } | 178 } |
| 193 | 179 |
| 194 } // namespace cc | 180 } // namespace cc |
| OLD | NEW |