Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2011 The Chromium Authors. All rights reserved. | 1 // Copyright 2011 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/trees/layer_tree_host_impl.h" | 5 #include "cc/trees/layer_tree_host_impl.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/json/json_writer.h" | 10 #include "base/json/json_writer.h" |
| (...skipping 1909 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1920 active_tree_->ClearCurrentlyScrollingLayer(); | 1920 active_tree_->ClearCurrentlyScrollingLayer(); |
| 1921 did_lock_scrolling_layer_ = false; | 1921 did_lock_scrolling_layer_ = false; |
| 1922 accumulated_root_overscroll_ = gfx::Vector2dF(); | 1922 accumulated_root_overscroll_ = gfx::Vector2dF(); |
| 1923 current_fling_velocity_ = gfx::Vector2dF(); | 1923 current_fling_velocity_ = gfx::Vector2dF(); |
| 1924 } | 1924 } |
| 1925 | 1925 |
| 1926 void LayerTreeHostImpl::ScrollEnd() { | 1926 void LayerTreeHostImpl::ScrollEnd() { |
| 1927 if (top_controls_manager_) | 1927 if (top_controls_manager_) |
| 1928 top_controls_manager_->ScrollEnd(); | 1928 top_controls_manager_->ScrollEnd(); |
| 1929 ClearCurrentlyScrollingLayer(); | 1929 ClearCurrentlyScrollingLayer(); |
| 1930 StartScrollbarAnimation(CurrentFrameTimeTicks()); | 1930 StartScrollbarAnimation(); |
| 1931 } | 1931 } |
| 1932 | 1932 |
| 1933 InputHandler::ScrollStatus LayerTreeHostImpl::FlingScrollBegin() { | 1933 InputHandler::ScrollStatus LayerTreeHostImpl::FlingScrollBegin() { |
| 1934 if (active_tree_->CurrentlyScrollingLayer()) | 1934 if (active_tree_->CurrentlyScrollingLayer()) |
| 1935 return ScrollStarted; | 1935 return ScrollStarted; |
| 1936 | 1936 |
| 1937 return ScrollIgnored; | 1937 return ScrollIgnored; |
| 1938 } | 1938 } |
| 1939 | 1939 |
| 1940 void LayerTreeHostImpl::NotifyCurrentFlingVelocity(gfx::Vector2dF velocity) { | 1940 void LayerTreeHostImpl::NotifyCurrentFlingVelocity(gfx::Vector2dF velocity) { |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2192 TRACE_EVENT_INSTANT0( | 2192 TRACE_EVENT_INSTANT0( |
| 2193 "cc", "LayerTreeHostImpl::SetNeedsRedraw due to AnimateScrollbars", | 2193 "cc", "LayerTreeHostImpl::SetNeedsRedraw due to AnimateScrollbars", |
| 2194 TRACE_EVENT_SCOPE_THREAD); | 2194 TRACE_EVENT_SCOPE_THREAD); |
| 2195 client_->SetNeedsRedrawOnImplThread(); | 2195 client_->SetNeedsRedrawOnImplThread(); |
| 2196 } | 2196 } |
| 2197 | 2197 |
| 2198 for (size_t i = 0; i < layer->children().size(); ++i) | 2198 for (size_t i = 0; i < layer->children().size(); ++i) |
| 2199 AnimateScrollbarsRecursive(layer->children()[i], time); | 2199 AnimateScrollbarsRecursive(layer->children()[i], time); |
| 2200 } | 2200 } |
| 2201 | 2201 |
| 2202 void LayerTreeHostImpl::StartScrollbarAnimation(base::TimeTicks time) { | 2202 void LayerTreeHostImpl::StartScrollbarAnimation() { |
| 2203 TRACE_EVENT0("cc", "LayerTreeHostImpl::StartScrollbarAnimation"); | 2203 TRACE_EVENT0("cc", "LayerTreeHostImpl::StartScrollbarAnimation"); |
| 2204 StartScrollbarAnimationRecursive(RootLayer(), time); | 2204 StartScrollbarAnimationRecursive(RootLayer(), CurrentPhysicalTimeTicks()); |
| 2205 } | 2205 } |
| 2206 | 2206 |
| 2207 void LayerTreeHostImpl::StartScrollbarAnimationRecursive(LayerImpl* layer, | 2207 void LayerTreeHostImpl::StartScrollbarAnimationRecursive(LayerImpl* layer, |
| 2208 base::TimeTicks time) { | 2208 base::TimeTicks time) { |
| 2209 if (!layer) | 2209 if (!layer) |
| 2210 return; | 2210 return; |
| 2211 | 2211 |
| 2212 ScrollbarAnimationController* scrollbar_controller = | 2212 ScrollbarAnimationController* scrollbar_controller = |
| 2213 layer->scrollbar_animation_controller(); | 2213 layer->scrollbar_animation_controller(); |
| 2214 if (scrollbar_controller && scrollbar_controller->IsAnimating()) { | 2214 if (scrollbar_controller && scrollbar_controller->IsAnimating()) { |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 2234 new_state.tree_priority = priority; | 2234 new_state.tree_priority = priority; |
| 2235 tile_manager_->SetGlobalState(new_state); | 2235 tile_manager_->SetGlobalState(new_state); |
| 2236 manage_tiles_needed_ = true; | 2236 manage_tiles_needed_ = true; |
| 2237 } | 2237 } |
| 2238 | 2238 |
| 2239 void LayerTreeHostImpl::ResetCurrentFrameTimeForNextFrame() { | 2239 void LayerTreeHostImpl::ResetCurrentFrameTimeForNextFrame() { |
| 2240 current_frame_timeticks_ = base::TimeTicks(); | 2240 current_frame_timeticks_ = base::TimeTicks(); |
| 2241 current_frame_time_ = base::Time(); | 2241 current_frame_time_ = base::Time(); |
| 2242 } | 2242 } |
| 2243 | 2243 |
| 2244 static void UpdateCurrentFrameTime(base::TimeTicks* ticks, base::Time* now) { | 2244 void LayerTreeHostImpl::UpdateCurrentFrameTime(base::TimeTicks* ticks, |
| 2245 base::Time* now) const { | |
| 2245 if (ticks->is_null()) { | 2246 if (ticks->is_null()) { |
| 2246 DCHECK(now->is_null()); | 2247 DCHECK(now->is_null()); |
| 2247 *ticks = base::TimeTicks::Now(); | 2248 *ticks = CurrentPhysicalTimeTicks(); |
| 2248 *now = base::Time::Now(); | 2249 *now = base::Time::Now(); |
| 2249 } | 2250 } |
| 2250 } | 2251 } |
| 2251 | 2252 |
| 2252 base::TimeTicks LayerTreeHostImpl::CurrentFrameTimeTicks() { | 2253 base::TimeTicks LayerTreeHostImpl::CurrentFrameTimeTicks() { |
| 2253 UpdateCurrentFrameTime(¤t_frame_timeticks_, ¤t_frame_time_); | 2254 UpdateCurrentFrameTime(¤t_frame_timeticks_, ¤t_frame_time_); |
| 2254 return current_frame_timeticks_; | 2255 return current_frame_timeticks_; |
| 2255 } | 2256 } |
| 2256 | 2257 |
| 2257 base::Time LayerTreeHostImpl::CurrentFrameTime() { | 2258 base::Time LayerTreeHostImpl::CurrentFrameTime() { |
| 2258 UpdateCurrentFrameTime(¤t_frame_timeticks_, ¤t_frame_time_); | 2259 UpdateCurrentFrameTime(¤t_frame_timeticks_, ¤t_frame_time_); |
| 2259 return current_frame_time_; | 2260 return current_frame_time_; |
| 2260 } | 2261 } |
| 2261 | 2262 |
| 2263 base::TimeTicks LayerTreeHostImpl::CurrentPhysicalTimeTicks() const { | |
|
danakj
2013/06/14 18:35:10
Think I'd prefer this is virtual instead of adding
| |
| 2264 if (!fake_current_physical_time_for_test_.is_null()) | |
| 2265 return fake_current_physical_time_for_test_; | |
| 2266 else | |
| 2267 return base::TimeTicks::Now(); | |
| 2268 } | |
| 2269 | |
| 2270 void LayerTreeHostImpl::SetCurrentPhysicalTimeTicksForTest( | |
| 2271 base::TimeTicks fake_time) { | |
| 2272 fake_current_physical_time_for_test_ = fake_time; | |
| 2273 } | |
| 2274 | |
| 2262 scoped_ptr<base::Value> LayerTreeHostImpl::AsValue() const { | 2275 scoped_ptr<base::Value> LayerTreeHostImpl::AsValue() const { |
| 2263 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue()); | 2276 scoped_ptr<base::DictionaryValue> state(new base::DictionaryValue()); |
| 2264 if (this->pending_tree_) | 2277 if (this->pending_tree_) |
| 2265 state->Set("activation_state", ActivationStateAsValue().release()); | 2278 state->Set("activation_state", ActivationStateAsValue().release()); |
| 2266 state->Set("device_viewport_size", | 2279 state->Set("device_viewport_size", |
| 2267 MathUtil::AsValue(device_viewport_size_).release()); | 2280 MathUtil::AsValue(device_viewport_size_).release()); |
| 2268 if (tile_manager_) | 2281 if (tile_manager_) |
| 2269 state->Set("tiles", tile_manager_->AllTilesAsValue().release()); | 2282 state->Set("tiles", tile_manager_->AllTilesAsValue().release()); |
| 2270 state->Set("active_tree", active_tree_->AsValue().release()); | 2283 state->Set("active_tree", active_tree_->AsValue().release()); |
| 2271 if (pending_tree_) | 2284 if (pending_tree_) |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2308 } | 2321 } |
| 2309 | 2322 |
| 2310 void LayerTreeHostImpl::SetDebugState(const LayerTreeDebugState& debug_state) { | 2323 void LayerTreeHostImpl::SetDebugState(const LayerTreeDebugState& debug_state) { |
| 2311 if (debug_state_.continuous_painting != debug_state.continuous_painting) | 2324 if (debug_state_.continuous_painting != debug_state.continuous_painting) |
| 2312 paint_time_counter_->ClearHistory(); | 2325 paint_time_counter_->ClearHistory(); |
| 2313 | 2326 |
| 2314 debug_state_ = debug_state; | 2327 debug_state_ = debug_state; |
| 2315 } | 2328 } |
| 2316 | 2329 |
| 2317 } // namespace cc | 2330 } // namespace cc |
| OLD | NEW |