#include "third_party/blink/renderer/core/svg/animation/smil_time_container.h"
#include <algorithm>
#include "base/auto_reset.h"
#include "third_party/blink/renderer/core/animation/document_timeline.h"
#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/dom/element_traversal.h"
#include "third_party/blink/renderer/core/dom/node_computed_style.h"
#include "third_party/blink/renderer/core/frame/local_frame_view.h"
#include "third_party/blink/renderer/core/frame/settings.h"
#include "third_party/blink/renderer/core/frame/web_feature.h"
#include "third_party/blink/renderer/core/svg/animation/element_smil_animations.h"
#include "third_party/blink/renderer/core/svg/animation/svg_smil_element.h"
#include "third_party/blink/renderer/core/svg/graphics/svg_image.h"
#include "third_party/blink/renderer/core/svg/svg_component_transfer_function_element.h"
#include "third_party/blink/renderer/core/svg/svg_fe_light_element.h"
#include "third_party/blink/renderer/core/svg/svg_fe_merge_node_element.h"
#include "third_party/blink/renderer/core/svg/svg_svg_element.h"
#include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
namespace blink {
class AnimationTargetsMutationsForbidden { … };
class SMILTimeContainer::TimingUpdate { … };
SMILTimeContainer::TimingUpdate::~TimingUpdate() { … }
void SMILTimeContainer::TimingUpdate::AddActiveElement(
SVGSMILElement* element,
const SMILInterval& interval) { … }
void SMILTimeContainer::TimingUpdate::HandleEvents(
SVGSMILElement* element,
SVGSMILElement::EventDispatchMask events_to_dispatch) { … }
SMILTimeContainer::SMILTimeContainer(SVGSVGElement& owner)
: … { … }
SMILTimeContainer::~SMILTimeContainer() { … }
void SMILTimeContainer::Schedule(SVGSMILElement* animation) { … }
void SMILTimeContainer::Unschedule(SVGSMILElement* animation) { … }
void SMILTimeContainer::Reschedule(SVGSMILElement* animation,
SMILTime interval_time) { … }
bool SMILTimeContainer::HasAnimations() const { … }
bool SMILTimeContainer::HasPendingSynchronization() const { … }
SMILTime SMILTimeContainer::Elapsed() const { … }
void SMILTimeContainer::ResetDocumentTime() { … }
SMILTime SMILTimeContainer::LatestUpdatePresentationTime() const { … }
void SMILTimeContainer::SynchronizeToDocumentTimeline() { … }
bool SMILTimeContainer::IsPaused() const { … }
bool SMILTimeContainer::IsStarted() const { … }
bool SMILTimeContainer::IsTimelineRunning() const { … }
void SMILTimeContainer::Start() { … }
void SMILTimeContainer::Pause() { … }
void SMILTimeContainer::Unpause() { … }
void SMILTimeContainer::SetPresentationTime(SMILTime new_presentation_time) { … }
SMILTime SMILTimeContainer::ClampPresentationTime(
SMILTime presentation_time) const { … }
void SMILTimeContainer::SetElapsed(SMILTime elapsed) { … }
void SMILTimeContainer::ScheduleAnimationFrame(base::TimeDelta delay_time,
bool disable_throttling) { … }
void SMILTimeContainer::CancelAnimationFrame() { … }
void SMILTimeContainer::ScheduleWakeUp(
base::TimeDelta delay_time,
FrameSchedulingState frame_scheduling_state) { … }
void SMILTimeContainer::WakeupTimerFired(TimerBase*) { … }
mojom::blink::ImageAnimationPolicy SMILTimeContainer::AnimationPolicy() const { … }
bool SMILTimeContainer::AnimationsDisabled() const { … }
void SMILTimeContainer::UpdateDocumentOrderIndexes() { … }
SVGSVGElement& SMILTimeContainer::OwnerSVGElement() const { … }
Document& SMILTimeContainer::GetDocument() const { … }
void SMILTimeContainer::ServiceOnNextFrame() { … }
bool SMILTimeContainer::ServiceAnimations() { … }
bool SMILTimeContainer::UpdateAnimationsAndScheduleFrameIfNeeded(
TimingUpdate& update) { … }
SMILTime SMILTimeContainer::NextProgressTime(SMILTime presentation_time,
bool disable_throttling) const { … }
void SMILTimeContainer::PrepareSeek(TimingUpdate& update) { … }
void SMILTimeContainer::ResetIntervals() { … }
void SMILTimeContainer::UpdateIntervals(TimingUpdate& update) { … }
void SMILTimeContainer::UpdateTimedElements(TimingUpdate& update) { … }
namespace {
bool NonRenderedElementThatAffectsContent(const SVGElement& target) { … }
bool CanThrottleTarget(const SVGElement& target) { … }
}
bool SMILTimeContainer::ApplyTimedEffects(SMILTime elapsed) { … }
void SMILTimeContainer::AdvanceFrameForTesting() { … }
void SMILTimeContainer::Trace(Visitor* visitor) const { … }
void SMILTimeContainer::DidAttachLayoutObject() { … }
}