Apply FINAL to the Node hierarchy.
[WebKit.git] / Source / WebCore / html / HTMLTrackElement.h
index 5b3002c..480bb43 100644 (file)
 #define HTMLTrackElement_h
 
 #if ENABLE(VIDEO_TRACK)
-
 #include "HTMLElement.h"
 #include "LoadableTextTrack.h"
+#include "TextTrack.h"
 
 namespace WebCore {
 
-class HTMLTrackElement : public HTMLElement, private TextTrackLoadingClient {
+class HTMLMediaElement;
+
+class HTMLTrackElement FINAL : public HTMLElement, public TextTrackClient {
 public:
     static PassRefPtr<HTMLTrackElement> create(const QualifiedName&, Document*);
 
     KURL src() const;
-    String kind() const;
-    String srclang() const;
-    String label() const;
+    void setSrc(const String&);
 
-    bool isDefault() const;
+    String kind();
     void setKind(const String&);
-    void setSrc(const String&);
+
+    String srclang() const;
     void setSrclang(const String&);
+
+    String label() const;
     void setLabel(const String&);
+
+    bool isDefault() const;
     void setIsDefault(bool);
-    TextTrack* track() const;
-    
-    void load(ScriptExecutionContext*, TextTrackClient*);
 
-private:
+    enum ReadyState { NONE = 0, LOADING = 1, LOADED = 2, TRACK_ERROR = 3 };
+    ReadyState readyState();
+    void setReadyState(ReadyState);
+
+    TextTrack* track();
 
-    // TextTrackLoadingClient
-    virtual void textTrackLoadingCompleted(LoadableTextTrack*, bool);
+    void scheduleLoad();
 
+    enum LoadStatus { Failure, Success };
+    virtual void didCompleteLoad(LoadableTextTrack*, LoadStatus);
+
+    const AtomicString& mediaElementCrossOriginAttribute() const;
+
+private:
     HTMLTrackElement(const QualifiedName&, Document*);
     virtual ~HTMLTrackElement();
 
-    virtual void insertedIntoTree(bool);
-    virtual void willRemove();
-    virtual bool isURLAttribute(Attribute*) const;
+    virtual void parseAttribute(const QualifiedName&, const AtomicString&) OVERRIDE;
+
+    virtual InsertionNotificationRequest insertedInto(ContainerNode*) OVERRIDE;
+
+    virtual void removedFrom(ContainerNode*) OVERRIDE;
+    virtual bool isURLAttribute(const Attribute&) const OVERRIDE;
+
+    void loadTimerFired(Timer<HTMLTrackElement>*);
 
 #if ENABLE(MICRODATA)
     virtual String itemValueText() const OVERRIDE;
     virtual void setItemValueText(const String&, ExceptionCode&) OVERRIDE;
 #endif
 
+    HTMLMediaElement* mediaElement() const;
+
+    // TextTrackClient
+    virtual void textTrackModeChanged(TextTrack*);
+    virtual void textTrackKindChanged(TextTrack*);
+    virtual void textTrackAddCues(TextTrack*, const TextTrackCueList*);
+    virtual void textTrackRemoveCues(TextTrack*, const TextTrackCueList*);
+    virtual void textTrackAddCue(TextTrack*, PassRefPtr<TextTrackCue>);
+    virtual void textTrackRemoveCue(TextTrack*, PassRefPtr<TextTrackCue>);
+
+    LoadableTextTrack* ensureTrack();
+    virtual bool canLoadUrl(const KURL&);
+
     RefPtr<LoadableTextTrack> m_track;
+    Timer<HTMLTrackElement> m_loadTimer;
 };
 
 }