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

Side by Side Diff: cc/animation/animation_host.cc

Issue 2860293002: Change cc::ElementId to be a uint64_t (Closed)
Patch Set: none Created 3 years, 7 months 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/animation/animation_host.h" 5 #include "cc/animation/animation_host.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/ptr_util.h" 10 #include "base/memory/ptr_util.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 void AnimationHost::RegisterPlayerForElement(ElementId element_id, 122 void AnimationHost::RegisterPlayerForElement(ElementId element_id,
123 AnimationPlayer* player) { 123 AnimationPlayer* player) {
124 DCHECK(element_id); 124 DCHECK(element_id);
125 DCHECK(player); 125 DCHECK(player);
126 126
127 scoped_refptr<ElementAnimations> element_animations = 127 scoped_refptr<ElementAnimations> element_animations =
128 GetElementAnimationsForElementId(element_id); 128 GetElementAnimationsForElementId(element_id);
129 if (!element_animations) { 129 if (!element_animations) {
130 element_animations = ElementAnimations::Create(); 130 element_animations = ElementAnimations::Create();
131 element_animations->SetElementId(element_id); 131 element_animations->SetElementId(element_id);
132 element_to_animations_map_[element_animations->element_id()] = 132 element_to_animations_map_[element_animations->element_id().id] =
133 element_animations; 133 element_animations;
134 } 134 }
135 135
136 if (element_animations->animation_host() != this) { 136 if (element_animations->animation_host() != this) {
137 element_animations->SetAnimationHost(this); 137 element_animations->SetAnimationHost(this);
138 element_animations->InitAffectedElementTypes(); 138 element_animations->InitAffectedElementTypes();
139 } 139 }
140 140
141 element_animations->AddPlayer(player); 141 element_animations->AddPlayer(player);
142 } 142 }
143 143
144 void AnimationHost::UnregisterPlayerForElement(ElementId element_id, 144 void AnimationHost::UnregisterPlayerForElement(ElementId element_id,
145 AnimationPlayer* player) { 145 AnimationPlayer* player) {
146 DCHECK(element_id); 146 DCHECK(element_id);
147 DCHECK(player); 147 DCHECK(player);
148 148
149 scoped_refptr<ElementAnimations> element_animations = 149 scoped_refptr<ElementAnimations> element_animations =
150 GetElementAnimationsForElementId(element_id); 150 GetElementAnimationsForElementId(element_id);
151 DCHECK(element_animations); 151 DCHECK(element_animations);
152 element_animations->RemovePlayer(player); 152 element_animations->RemovePlayer(player);
153 153
154 if (element_animations->IsEmpty()) { 154 if (element_animations->IsEmpty()) {
155 element_animations->ClearAffectedElementTypes(); 155 element_animations->ClearAffectedElementTypes();
156 element_to_animations_map_.erase(element_animations->element_id()); 156 element_to_animations_map_.erase(element_animations->element_id().id);
157 element_animations->SetAnimationHost(nullptr); 157 element_animations->SetAnimationHost(nullptr);
158 } 158 }
159 159
160 RemoveFromTicking(player); 160 RemoveFromTicking(player);
161 } 161 }
162 162
163 void AnimationHost::SetMutatorHostClient(MutatorHostClient* client) { 163 void AnimationHost::SetMutatorHostClient(MutatorHostClient* client) {
164 if (mutator_host_client_ == client) 164 if (mutator_host_client_ == client)
165 return; 165 return;
166 166
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 host_impl->GetTimelineById(timeline->id()); 233 host_impl->GetTimelineById(timeline->id());
234 if (timeline_impl) 234 if (timeline_impl)
235 timeline->PushPropertiesTo(timeline_impl); 235 timeline->PushPropertiesTo(timeline_impl);
236 } 236 }
237 } 237 }
238 238
239 // Sync properties for created ElementAnimations. 239 // Sync properties for created ElementAnimations.
240 for (auto& kv : element_to_animations_map_) { 240 for (auto& kv : element_to_animations_map_) {
241 const auto& element_animations = kv.second; 241 const auto& element_animations = kv.second;
242 if (element_animations->needs_push_properties()) { 242 if (element_animations->needs_push_properties()) {
243 ElementId element_id;
244 element_id.id = kv.first;
243 auto element_animations_impl = 245 auto element_animations_impl =
244 host_impl->GetElementAnimationsForElementId(kv.first); 246 host_impl->GetElementAnimationsForElementId(element_id);
245 if (element_animations_impl) 247 if (element_animations_impl)
246 element_animations->PushPropertiesTo( 248 element_animations->PushPropertiesTo(
247 std::move(element_animations_impl)); 249 std::move(element_animations_impl));
248 } 250 }
249 } 251 }
250 252
251 // Update the impl-only scroll offset animations. 253 // Update the impl-only scroll offset animations.
252 scroll_offset_animations_->PushPropertiesTo( 254 scroll_offset_animations_->PushPropertiesTo(
253 host_impl->scroll_offset_animations_impl_.get()); 255 host_impl->scroll_offset_animations_impl_.get());
254 } 256 }
255 257
256 scoped_refptr<ElementAnimations> 258 scoped_refptr<ElementAnimations>
257 AnimationHost::GetElementAnimationsForElementId(ElementId element_id) const { 259 AnimationHost::GetElementAnimationsForElementId(ElementId element_id) const {
258 if (!element_id) 260 if (!element_id)
259 return nullptr; 261 return nullptr;
260 auto iter = element_to_animations_map_.find(element_id); 262 auto iter = element_to_animations_map_.find(element_id.id);
261 return iter == element_to_animations_map_.end() ? nullptr : iter->second; 263 return iter == element_to_animations_map_.end() ? nullptr : iter->second;
262 } 264 }
263 265
264 void AnimationHost::SetSupportsScrollAnimations( 266 void AnimationHost::SetSupportsScrollAnimations(
265 bool supports_scroll_animations) { 267 bool supports_scroll_animations) {
266 supports_scroll_animations_ = supports_scroll_animations; 268 supports_scroll_animations_ = supports_scroll_animations;
267 } 269 }
268 270
269 bool AnimationHost::SupportsScrollAnimations() const { 271 bool AnimationHost::SupportsScrollAnimations() const {
270 return supports_scroll_animations_; 272 return supports_scroll_animations_;
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
323 base::WrapUnique(static_cast<AnimationEvents*>(mutator_events.release())); 325 base::WrapUnique(static_cast<AnimationEvents*>(mutator_events.release()));
324 326
325 for (size_t event_index = 0; event_index < events->events_.size(); 327 for (size_t event_index = 0; event_index < events->events_.size();
326 ++event_index) { 328 ++event_index) {
327 ElementId element_id = events->events_[event_index].element_id; 329 ElementId element_id = events->events_[event_index].element_id;
328 330
329 // Use the map of all ElementAnimations, not just ticking players, since 331 // Use the map of all ElementAnimations, not just ticking players, since
330 // non-ticking Players may still receive events for impl-only animations. 332 // non-ticking Players may still receive events for impl-only animations.
331 const ElementToAnimationsMap& all_element_animations = 333 const ElementToAnimationsMap& all_element_animations =
332 element_to_animations_map_; 334 element_to_animations_map_;
333 auto iter = all_element_animations.find(element_id); 335 auto iter = all_element_animations.find(element_id.id);
334 if (iter != all_element_animations.end()) { 336 if (iter != all_element_animations.end()) {
335 switch (events->events_[event_index].type) { 337 switch (events->events_[event_index].type) {
336 case AnimationEvent::STARTED: 338 case AnimationEvent::STARTED:
337 (*iter).second->NotifyAnimationStarted(events->events_[event_index]); 339 (*iter).second->NotifyAnimationStarted(events->events_[event_index]);
338 break; 340 break;
339 341
340 case AnimationEvent::FINISHED: 342 case AnimationEvent::FINISHED:
341 (*iter).second->NotifyAnimationFinished(events->events_[event_index]); 343 (*iter).second->NotifyAnimationFinished(events->events_[event_index]);
342 break; 344 break;
343 345
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 const { 576 const {
575 return ticking_players_; 577 return ticking_players_;
576 } 578 }
577 579
578 const AnimationHost::ElementToAnimationsMap& 580 const AnimationHost::ElementToAnimationsMap&
579 AnimationHost::element_animations_for_testing() const { 581 AnimationHost::element_animations_for_testing() const {
580 return element_to_animations_map_; 582 return element_to_animations_map_;
581 } 583 }
582 584
583 } // namespace cc 585 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698