blob: aa99a2dbd3f9d9d05d578b5bffe77442a8eaabe0 [file] [log] [blame]
// Copyright 2018 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 THIRD_PARTY_BLINK_RENDERER_CORE_ANIMATION_ANIMATION_EFFECT_OWNER_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_ANIMATION_ANIMATION_EFFECT_OWNER_H_
#include "third_party/blink/renderer/platform/heap/garbage_collected.h"
namespace blink {
class Animation;
// This interface is used by AnimationEffect to interact with its owning
// animation.
class AnimationEffectOwner : public GarbageCollectedMixin {
public:
AnimationEffectOwner() = default;
// Returns the owning animation's sequence number. It is used by the effect to
// determine its ordering compared to other effects.
virtual unsigned SequenceNumber() const = 0;
// Returns true if the owning animation is playing. It is eventually used by
// EffectStack to determine if a property is actively being animated.
virtual bool Playing() const = 0;
// Returns true if the owning animation allows events to be dispatched. This
// is used by the effect to determine if should dispatch animation events
// (e.g. start, end, iteration) when its phase and timing changes.
virtual bool IsEventDispatchAllowed() const = 0;
// Returns true if the effect is supressed. Used to determine if effect needs
// to be updated or not.
virtual bool EffectSuppressed() const = 0;
// Notifies the owning animation that the effect has been invalidated, and any
// cached information regarding it may need to be invalidated. This can
// happen e.g. if the timing information changes or the keyframes change.
virtual void EffectInvalidated() = 0;
virtual void UpdateIfNecessary() = 0;
// TODO(majidvp): Remove this. Exposing the animation instance here is not
// ideal as it punches a hole in our abstraction. This is currently necessary
// as CompositorAnimations and EffectStack need to access the animation
// instance but we should try to replace these usage with more appropriate
// patterns and remove this. http://crbug.com/812410
virtual Animation* GetAnimation() = 0;
protected:
virtual ~AnimationEffectOwner() = default;
};
} // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_CORE_ANIMATION_ANIMATION_EFFECT_OWNER_H_