// Copyright 2015 The Chromium Authors // 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_HTML_TRACK_CUE_TIMELINE_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_HTML_TRACK_CUE_TIMELINE_H_ #include <optional> #include "base/types/pass_key.h" #include "third_party/blink/renderer/core/html/track/text_track_cue.h" #include "third_party/blink/renderer/core/html/track/vtt/vtt_cue.h" #include "third_party/blink/renderer/platform/heap/garbage_collected.h" #include "third_party/blink/renderer/platform/wtf/pod_interval_tree.h" #include "third_party/blink/renderer/platform/wtf/vector.h" namespace blink { class HTMLMediaElement; class TextTrackCueList; // TODO(Oilpan): This needs to be PODIntervalTree<double, Member<TextTrackCue>>. // However, it is not easy to move PODIntervalTree to the heap (for a // C++-template reason) so we leave it as a raw pointer at the moment. This is // safe because CueTimeline and TextTrackCue are guaranteed to die at the same // time when the owner HTMLMediaElement dies. Thus the raw TextTrackCue* cannot // become stale pointers. CueIntervalTree; CueInterval; CueList; // This class manages the timeline and rendering updates of cues associated // with TextTracks. Owned by a HTMLMediaElement. class CueTimeline final : public GarbageCollected<CueTimeline> { … }; } // namespace blink namespace WTF { #ifndef NDEBUG // Template specializations required by PodIntervalTree in debug mode. template <> struct ValueToString<blink::TextTrackCue*> { … }; #endif } #endif // THIRD_PARTY_BLINK_RENDERER_CORE_HTML_TRACK_CUE_TIMELINE_H_