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

Unified Diff: ui/compositor/layer_animation_sequence.h

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/compositor/layer_animation_observer.cc ('k') | ui/compositor/layer_animation_sequence.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/compositor/layer_animation_sequence.h
diff --git a/ui/compositor/layer_animation_sequence.h b/ui/compositor/layer_animation_sequence.h
deleted file mode 100644
index 19635adfc971b68f08c146abe481354524e9c952..0000000000000000000000000000000000000000
--- a/ui/compositor/layer_animation_sequence.h
+++ /dev/null
@@ -1,192 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef UI_COMPOSITOR_LAYER_ANIMATION_SEQUENCE_H_
-#define UI_COMPOSITOR_LAYER_ANIMATION_SEQUENCE_H_
-
-#include <vector>
-
-#include "base/gtest_prod_util.h"
-#include "base/memory/linked_ptr.h"
-#include "base/memory/weak_ptr.h"
-#include "base/observer_list.h"
-#include "base/time/time.h"
-#include "ui/compositor/compositor_export.h"
-#include "ui/compositor/layer_animation_element.h"
-
-namespace ui {
-
-class LayerAnimationDelegate;
-class LayerAnimationObserver;
-
-// Contains a collection of layer animation elements to be played one after
-// another. Although it has a similar interface to LayerAnimationElement, it is
-// not a LayerAnimationElement (i.e., it is not permitted to have a sequence in
-// a sequence). Sequences own their elements, and sequences are themselves owned
-// by a LayerAnimator.
-//
-// TODO(vollick) Create a 'blended' sequence for transitioning between
-// sequences.
-// TODO(vollick) Eventually, the LayerAnimator will switch to a model where new
-// work is scheduled rather than calling methods directly. This should make it
-// impossible for temporary pointers to running animations to go stale. When
-// this happens, there will be no need for LayerAnimationSequences to support
-// weak pointers.
-class COMPOSITOR_EXPORT LayerAnimationSequence
- : public base::SupportsWeakPtr<LayerAnimationSequence> {
- public:
- LayerAnimationSequence();
- // Takes ownership of the given element and adds it to the sequence.
- explicit LayerAnimationSequence(LayerAnimationElement* element);
- virtual ~LayerAnimationSequence();
-
- // Sets the start time for the animation. This must be called before the
- // first call to {Start, IsFinished}. Once the animation is finished, this
- // must be called again in order to restart the animation.
- void set_start_time(base::TimeTicks start_time) { start_time_ = start_time; }
- base::TimeTicks start_time() const { return start_time_; }
-
- // Sets a flag indicating that this sequence will start together with other
- // sequences, and at least one of the sequences in this group has a threaded
- // first element.
- void set_waiting_for_group_start(bool waiting) {
- waiting_for_group_start_ = waiting;
- }
- bool waiting_for_group_start() { return waiting_for_group_start_; }
-
- // This must be called before the first call to Progress. If starting the
- // animation involves dispatching to another thread, then this will proceed
- // with that dispatch, ultimately resulting in the animation getting an
- // effective start time (the time the animation starts on the other thread).
- void Start(LayerAnimationDelegate* delegate);
-
- // Updates the delegate to the appropriate value for |now|. Requests a
- // redraw if it is required.
- void Progress(base::TimeTicks now, LayerAnimationDelegate* delegate);
-
- // Returns true if calling Progress now, with the given time, will finish
- // the animation.
- bool IsFinished(base::TimeTicks time);
-
- // Updates the delegate to the end of the animation; if this sequence is
- // cyclic, updates the delegate to the end of one cycle of the sequence.
- void ProgressToEnd(LayerAnimationDelegate* delegate);
-
- // Sets the target value to the value that would have been set had
- // the sequence completed. Does nothing if the sequence is cyclic.
- void GetTargetValue(LayerAnimationElement::TargetValue* target) const;
-
- // Aborts the given animation.
- void Abort(LayerAnimationDelegate* delegate);
-
- // All properties modified by the sequence.
- LayerAnimationElement::AnimatableProperties properties() const {
- return properties_;
- }
-
- // Adds an element to the sequence. The sequences takes ownership of this
- // element.
- void AddElement(LayerAnimationElement* element);
-
- // Sequences can be looped indefinitely.
- void set_is_cyclic(bool is_cyclic) { is_cyclic_ = is_cyclic; }
- bool is_cyclic() const { return is_cyclic_; }
-
- // Returns true if this sequence has at least one element conflicting with a
- // property in |other|.
- bool HasConflictingProperty(
- LayerAnimationElement::AnimatableProperties other) const;
-
- // Returns true if the first element animates on the compositor thread.
- bool IsFirstElementThreaded() const;
-
- // Used to identify groups of sequences that are supposed to start together.
- // Once started, used to identify the sequence that owns a particular
- // threaded animation.
- int animation_group_id() const { return animation_group_id_; }
- void set_animation_group_id(int id) { animation_group_id_ = id; }
-
- // These functions are used for adding or removing observers from the observer
- // list. The observers are notified when animations end.
- void AddObserver(LayerAnimationObserver* observer);
- void RemoveObserver(LayerAnimationObserver* observer);
-
- // Called when a threaded animation is actually started.
- void OnThreadedAnimationStarted(const cc::AnimationEvent& event);
-
- // Called when the animator schedules this sequence.
- void OnScheduled();
-
- // Called when the animator is destroyed.
- void OnAnimatorDestroyed();
-
- // The last_progressed_fraction of the element most recently progressed by
- // by this sequence. Returns 0.0 if no elements have been progressed.
- double last_progressed_fraction() const { return last_progressed_fraction_; }
-
- size_t size() const;
-
- LayerAnimationElement* FirstElement() const;
-
- private:
- friend class LayerAnimatorTestController;
-
- typedef std::vector<linked_ptr<LayerAnimationElement> > Elements;
-
- FRIEND_TEST_ALL_PREFIXES(LayerAnimatorTest,
- ObserverReleasedBeforeAnimationSequenceEnds);
-
- // Notifies the observers that this sequence has been scheduled.
- void NotifyScheduled();
-
- // Notifies the observers that this sequence has ended.
- void NotifyEnded();
-
- // Notifies the observers that this sequence has been aborted.
- void NotifyAborted();
-
- // The currently animating element.
- LayerAnimationElement* CurrentElement() const;
-
- // The union of all the properties modified by all elements in the sequence.
- LayerAnimationElement::AnimatableProperties properties_;
-
- // The elements in the sequence.
- Elements elements_;
-
- // True if the sequence should be looped forever.
- bool is_cyclic_;
-
- // These are used when animating to efficiently find the next element.
- size_t last_element_;
- base::TimeTicks last_start_;
-
- // The start time of the current run of the sequence.
- base::TimeTicks start_time_;
-
- // True if this sequence will start together with other sequences, and at
- // least one of the sequences in this group has a threaded first element.
- bool waiting_for_group_start_;
-
- // Identifies groups of sequences that are supposed to start together.
- // Also used to identify the owner of a particular threaded animation; any
- // in-progress threaded animation owned by this sequence will have this
- // group id.
- int animation_group_id_;
-
- // These parties are notified when layer animations end.
- ObserverList<LayerAnimationObserver> observers_;
-
- // Tracks the last_progressed_fraction() of the most recently progressed
- // element.
- double last_progressed_fraction_;
-
- base::WeakPtrFactory<LayerAnimationSequence> weak_ptr_factory_;
-
- DISALLOW_COPY_AND_ASSIGN(LayerAnimationSequence);
-};
-
-} // namespace ui
-
-#endif // UI_COMPOSITOR_LAYER_ANIMATION_SEQUENCE_H_
« no previous file with comments | « ui/compositor/layer_animation_observer.cc ('k') | ui/compositor/layer_animation_sequence.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698