⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 101213 in webkit


Ignore:
Timestamp:
Nov 27, 2011, 3:25:52 PM (15 years ago)
Author:
annacc@chromium.org
Message:

Move readyState from TextTrack to HTMLTrackElement
https://bugs.webkit.org/show_bug.cgi?id=72553

Source/WebCore:

Fix for r101057 after it was rolled out in r101088

Reviewed by Eric Carlson.

  • html/HTMLTrackElement.cpp:

(WebCore::HTMLTrackElement::HTMLTrackElement):

Set initial readyState to NONE.

(WebCore::HTMLTrackElement::didCompleteLoad):

Set readyState based on load completed status.

(WebCore::HTMLTrackElement::setReadyState):

This replaces textTrackReadyStateChanged() because only LoadableTextTrack
needs to notify HTMLTrackElement of readyState changes (i.e.
textTrackReadyStateChanged() is no longer required of TextTrackClient).

  • html/HTMLTrackElement.h:

ReadyState enum and m_readyState member variable moved from TextTrack.

(WebCore::HTMLTrackElement::readyState):

New: readyState() getter.

  • html/HTMLTrackElement.idl:

Add readyState attribute and associated constants.

  • html/LoadableTextTrack.cpp:

(WebCore::LoadableTextTrack::loadTimerFired): Set readyState on HTMLTrackElement.
(WebCore::LoadableTextTrack::cueLoadingStarted): Ditto.
(WebCore::LoadableTextTrack::cueLoadingCompleted): Move code to set readyState

to HTMLTrackElement (it can set it based on loading status).

  • html/TextTrack.cpp: Remove readyState from TextTrack.

(WebCore::TextTrack::TextTrack): Ditto.

  • html/TextTrack.h: Ditto.
  • html/TextTrack.idl: Ditto.

LayoutTests:

Fix for r101057 after it was rolled out in r101088

Reviewed by Eric Carlson.

  • media/track/track-add-track-expected.txt:
  • media/track/track-add-track.html:
  • media/track/track-constants-expected.txt:
  • media/track/track-constants.html:
  • media/track/track-load-error-readyState-expected.txt:
  • media/track/track-load-error-readyState.html:
  • media/track/track-load-from-element-readyState-expected.txt:
  • media/track/track-load-from-element-readyState.html:
  • media/track/track-load-from-src-readyState-expected.txt:
  • media/track/track-load-from-src-readyState.html:
Location:
trunk
Files:
19 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r101212 r101213  
     12011-11-27  Anna Cavender  <annacc@chromium.org>
     2
     3        Move readyState from TextTrack to HTMLTrackElement
     4        https://bugs.webkit.org/show_bug.cgi?id=72553
     5
     6        Fix for r101057 after it was rolled out in r101088
     7
     8        Reviewed by Eric Carlson.
     9
     10        * media/track/track-add-track-expected.txt:
     11        * media/track/track-add-track.html:
     12        * media/track/track-constants-expected.txt:
     13        * media/track/track-constants.html:
     14        * media/track/track-load-error-readyState-expected.txt:
     15        * media/track/track-load-error-readyState.html:
     16        * media/track/track-load-from-element-readyState-expected.txt:
     17        * media/track/track-load-from-element-readyState.html:
     18        * media/track/track-load-from-src-readyState-expected.txt:
     19        * media/track/track-load-from-src-readyState.html:
     20
    1212011-11-27  Benjamin Poulain  <benjamin@webkit.org>
    222
  • trunk/LayoutTests/media/track/track-add-track-expected.txt

    r101088 r101213  
    66RUN(trackElement.src = 'captions-webvtt/tc004-webvtt-file.vtt')
    77EXPECTED (video.textTracks.length == '1') OK
    8 EXPECTED (tracks[0].readyState == '0') OK
     8EXPECTED (trackElement.readyState == '0') OK
    99EVENT(addtrack)
    1010EXPECTED (event.target == '[object TextTrackList]') OK
     
    1515RUN(tracks.push(video.addTrack('captions', 'Caption Track', 'en')))
    1616EXPECTED (video.textTracks.length == '2') OK
    17 EXPECTED (tracks[1].readyState == '0') OK
    1817EVENT(addtrack)
    1918EXPECTED (event.target == '[object TextTrackList]') OK
    2019EXPECTED (event instanceof window.TrackEvent == 'true') OK
    2120EXPECTED (event.track == '[object TextTrack]') OK
    22 EXPECTED (tracks[1].readyState == '0') OK
    2321
    2422END OF TEST
  • trunk/LayoutTests/media/track/track-add-track.html

    r101088 r101213  
    2222                    run("tracks.push(video.addTrack('captions', 'Caption Track', 'en'))");
    2323                    testExpected("video.textTracks.length", 2);
    24                     testExpected("tracks[1].readyState", TextTrack.NONE);
    2524                } else {
    26                     testExpected("tracks[1].readyState", TextTrack.NONE);
    2725                    consoleWrite("");
    2826                    endTest();
     
    4543                run("trackElement.src = 'captions-webvtt/tc004-webvtt-file.vtt'");
    4644                testExpected("video.textTracks.length", 1);
    47                 testExpected("tracks[0].readyState", TextTrack.NONE);
     45                testExpected("trackElement.readyState", HTMLTrackElement.NONE);
    4846            }
    4947
  • trunk/LayoutTests/media/track/track-constants-expected.txt

    r101088 r101213  
    11Test TextTrack constants.
    22
    3 EXPECTED (TextTrack.NONE == '0') OK
    4 EXPECTED (TextTrack.LOADING == '1') OK
    5 EXPECTED (TextTrack.LOADED == '2') OK
    6 EXPECTED (TextTrack.ERROR == '3') OK
     3EXPECTED (HTMLTrackElement.NONE == '0') OK
     4EXPECTED (HTMLTrackElement.LOADING == '1') OK
     5EXPECTED (HTMLTrackElement.LOADED == '2') OK
     6EXPECTED (HTMLTrackElement.ERROR == '3') OK
    77
    88EXPECTED (TextTrack.DISABLED == '0') OK
  • trunk/LayoutTests/media/track/track-constants.html

    r101088 r101213  
    66        function doTest ()
    77        {
    8             testExpected("TextTrack.NONE", 0);
    9             testExpected("TextTrack.LOADING", 1);
    10             testExpected("TextTrack.LOADED", 2);
    11             testExpected("TextTrack.ERROR", 3);
     8            testExpected("HTMLTrackElement.NONE", 0);
     9            testExpected("HTMLTrackElement.LOADING", 1);
     10            testExpected("HTMLTrackElement.LOADED", 2);
     11            testExpected("HTMLTrackElement.ERROR", 3);
    1212            consoleWrite("");
    1313
  • trunk/LayoutTests/media/track/track-load-error-readyState-expected.txt

    r101088 r101213  
    22
    33EVENT(error)
    4 EXPECTED (track.track.readyState == '3') OK
     4EXPECTED (track.readyState == '3') OK
    55END OF TEST
    66
  • trunk/LayoutTests/media/track/track-load-error-readyState.html

    r101088 r101213  
    1212                consoleWrite("EVENT(error)");
    1313                track = document.getElementById('testTrackError');
    14                 testExpected("track.track.readyState", TextTrack.ERROR);
     14                testExpected("track.readyState", HTMLTrackElement.ERROR);
    1515                endTest();
    1616            }
  • trunk/LayoutTests/media/track/track-load-from-element-readyState-expected.txt

    r101088 r101213  
    22
    33EVENT(load)
    4 EXPECTED (track.track.readyState == '2') OK
     4EXPECTED (track.readyState == '2') OK
    55END OF TEST
    66
  • trunk/LayoutTests/media/track/track-load-from-element-readyState.html

    r101088 r101213  
    1212                consoleWrite("EVENT(load)");
    1313                track = document.getElementById('testTrackSrc');
    14                 testExpected("track.track.readyState", TextTrack.LOADED);
     14                testExpected("track.readyState", HTMLTrackElement.LOADED);
    1515                endTest();
    1616            }
  • trunk/LayoutTests/media/track/track-load-from-src-readyState-expected.txt

    r101088 r101213  
    11Tests the load event on HTMLTrackElement and LOADED readyState on TextTrack when src is set from JavaScript.
    22
    3 EXPECTED (track.track.readyState == '0') OK
     3EXPECTED (track.readyState == '0') OK
    44EVENT(load)
    5 EXPECTED (track.track.readyState == '2') OK
     5EXPECTED (track.readyState == '2') OK
    66END OF TEST
    77
  • trunk/LayoutTests/media/track/track-load-from-src-readyState.html

    r101088 r101213  
    1717            {
    1818                consoleWrite("EVENT(load)");
    19                 testExpected("track.track.readyState", TextTrack.LOADED);
     19                testExpected("track.readyState", HTMLTrackElement.LOADED);
    2020                endTest();
    2121            }
    2222
    2323            track = document.getElementById('testTrackEmpty');
    24             testExpected("track.track.readyState", TextTrack.NONE);
     24            testExpected("track.readyState", HTMLTrackElement.NONE);
    2525            track.addEventListener("load", function () { trackLoaded(); }, true);
    2626            track.src = "captions-webvtt/tc004-webvtt-file.vtt";   
  • trunk/Source/WebCore/ChangeLog

    r101210 r101213  
     12011-11-27  Anna Cavender  <annacc@chromium.org>
     2
     3        Move readyState from TextTrack to HTMLTrackElement
     4        https://bugs.webkit.org/show_bug.cgi?id=72553
     5
     6        Fix for r101057 after it was rolled out in r101088
     7
     8        Reviewed by Eric Carlson.
     9
     10        * html/HTMLTrackElement.cpp:
     11        (WebCore::HTMLTrackElement::HTMLTrackElement):
     12            Set initial readyState to NONE.
     13        (WebCore::HTMLTrackElement::didCompleteLoad):
     14            Set readyState based on load completed status.
     15        (WebCore::HTMLTrackElement::setReadyState):
     16            This replaces textTrackReadyStateChanged() because only LoadableTextTrack
     17            needs to notify HTMLTrackElement of readyState changes (i.e.
     18            textTrackReadyStateChanged() is no longer required of TextTrackClient).
     19        * html/HTMLTrackElement.h:
     20            ReadyState enum and m_readyState member variable moved from TextTrack.
     21        (WebCore::HTMLTrackElement::readyState):
     22            New: readyState() getter.
     23        * html/HTMLTrackElement.idl:
     24            Add readyState attribute and associated constants.
     25
     26        * html/LoadableTextTrack.cpp:
     27        (WebCore::LoadableTextTrack::loadTimerFired): Set readyState on HTMLTrackElement.
     28        (WebCore::LoadableTextTrack::cueLoadingStarted): Ditto.
     29        (WebCore::LoadableTextTrack::cueLoadingCompleted): Move code to set readyState
     30            to HTMLTrackElement (it can set it based on loading status).
     31
     32        * html/TextTrack.cpp: Remove readyState from TextTrack.
     33        (WebCore::TextTrack::TextTrack): Ditto.
     34        * html/TextTrack.h: Ditto.
     35        * html/TextTrack.idl: Ditto.
     36
    1372011-11-27  Anna Cavender  <annacc@chromium.org>
    238
  • trunk/Source/WebCore/html/HTMLTrackElement.cpp

    r101210 r101213  
    4444inline HTMLTrackElement::HTMLTrackElement(const QualifiedName& tagName, Document* document)
    4545    : HTMLElement(tagName, document)
     46    , m_readyState(HTMLTrackElement::NONE)
    4647{
    4748    LOG(Media, "HTMLTrackElement::HTMLTrackElement - %p", this);
     
    213214void HTMLTrackElement::didCompleteLoad(LoadableTextTrack*, bool loadingFailed)
    214215{
     216    loadingFailed ? setReadyState(HTMLTrackElement::TRACK_ERROR) : setReadyState(HTMLTrackElement::LOADED);
     217
    215218    ExceptionCode ec = 0;
    216219    dispatchEvent(Event::create(loadingFailed ? eventNames().errorEvent : eventNames().loadEvent, false, false), ec);
    217220}
    218    
    219 void HTMLTrackElement::textTrackReadyStateChanged(TextTrack* track)
    220 {
    221     if (HTMLMediaElement* parent = mediaElement())
    222         return parent->textTrackReadyStateChanged(track);
     221
     222void HTMLTrackElement::setReadyState(ReadyState state)
     223{
     224    m_readyState = state;
     225    if (HTMLMediaElement* parent = mediaElement())
     226        return parent->textTrackReadyStateChanged(m_track.get());
    223227}
    224228   
  • trunk/Source/WebCore/html/HTMLTrackElement.h

    r101088 r101213  
    5454    bool isDefault() const;
    5555    void setIsDefault(bool);
     56   
     57    enum ReadyState { NONE = 0, LOADING = 1, LOADED = 2, TRACK_ERROR = 3 };
     58    ReadyState readyState() const { return m_readyState; }
    5659
    5760    TextTrack* track();
     
    6063    virtual bool canLoadUrl(LoadableTextTrack*, const KURL&);
    6164    virtual void didCompleteLoad(LoadableTextTrack*, bool /* loadingFailed */);
     65   
     66    void setReadyState(ReadyState);
    6267
    6368private:
     
    8085
    8186    // TextTrackClient
    82     virtual void textTrackReadyStateChanged(TextTrack*);
    8387    virtual void textTrackModeChanged(TextTrack*);
    8488    virtual void textTrackKindChanged(TextTrack*);
     
    9094    LoadableTextTrack* ensureTrack();
    9195
     96    HTMLTrackElement::ReadyState m_readyState;
    9297    RefPtr<LoadableTextTrack> m_track;
    9398};
  • trunk/Source/WebCore/html/HTMLTrackElement.idl

    r101088 r101213  
    2929        EnabledAtRuntime=webkitVideoTrack
    3030    ] HTMLTrackElement : HTMLElement {
    31     attribute [Reflect, URL] DOMString src;
    32     attribute DOMString kind;
    33     attribute DOMString srclang;
    34     attribute DOMString label;
    35     attribute [Reflect=default] boolean isDefault;
     31        attribute [Reflect, URL] DOMString src;
     32        attribute DOMString kind;
     33        attribute DOMString srclang;
     34        attribute DOMString label;
     35        attribute [Reflect=default] boolean isDefault;
    3636
    37     readonly attribute TextTrack track;
     37        const unsigned short NONE = 0;
     38        const unsigned short LOADING = 1;
     39        const unsigned short LOADED = 2;
     40        // Reflect is used for ERROR because it conflicts with a windows define.
     41        const [Reflect=TRACK_ERROR] unsigned short ERROR = 3;
     42        readonly attribute unsigned short readyState;
     43
     44        readonly attribute TextTrack track;
    3845};
    3946}
  • trunk/Source/WebCore/html/LoadableTextTrack.cpp

    r101185 r101213  
    6565void LoadableTextTrack::loadTimerFired(Timer<LoadableTextTrack>*)
    6666{
    67     setReadyState(TextTrack::LOADING);
     67    if (!m_trackElement)
     68        return;
     69
     70    m_trackElement->setReadyState(HTMLTrackElement::LOADING);
    6871   
    6972    if (m_loader)
    7073        m_loader->cancelLoad();
    7174
    72     if (!m_trackElement || !m_trackElement->canLoadUrl(this, m_url)) {
    73         setReadyState(TextTrack::HTML_ERROR);
     75    if (!m_trackElement->canLoadUrl(this, m_url)) {
     76        m_trackElement->setReadyState(HTMLTrackElement::TRACK_ERROR);
    7477        return;
    7578    }
     
    102105    ASSERT_UNUSED(loader, m_loader == loader);
    103106   
    104     setReadyState(TextTrack::LOADING);
     107    if (!m_trackElement)
     108        return;
     109    m_trackElement->setReadyState(HTMLTrackElement::LOADING);
    105110}
    106111
     
    109114    ASSERT_UNUSED(loader, m_loader == loader);
    110115
    111     loadingFailed ? setReadyState(TextTrack::HTML_ERROR) : setReadyState(TextTrack::LOADED);
    112 
    113     if (m_trackElement)
    114         m_trackElement->didCompleteLoad(this, loadingFailed);
     116    if (!m_trackElement)
     117        return;
     118    m_trackElement->didCompleteLoad(this, loadingFailed);
    115119}
    116120
  • trunk/Source/WebCore/html/TextTrack.cpp

    r101185 r101213  
    7676    , m_label(label)
    7777    , m_language(language)
    78     , m_readyState(TextTrack::NONE)
    7978    , m_mode(TextTrack::HIDDEN)
    8079    , m_client(client)
     
    118117    if (m_client && oldKind != m_kind)
    119118        m_client->textTrackKindChanged(this);
    120 }
    121 
    122 void TextTrack::setReadyState(ReadyState state)
    123 {
    124     m_readyState = state;
    125     if (m_client)
    126         m_client->textTrackReadyStateChanged(this);
    127119}
    128120
  • trunk/Source/WebCore/html/TextTrack.h

    r101185 r101213  
    4444public:
    4545    virtual ~TextTrackClient() { }
    46     virtual void textTrackReadyStateChanged(TextTrack*) = 0;
    4746    virtual void textTrackKindChanged(TextTrack*) = 0;
    4847    virtual void textTrackModeChanged(TextTrack*) = 0;
     
    7776    void setLanguage(const String& language) { m_language = language; }
    7877
    79     enum ReadyState { NONE = 0, LOADING = 1, LOADED = 2, HTML_ERROR = 3 };
    80     ReadyState readyState() const { return m_readyState; }
    81 
    8278    enum Mode { DISABLED = 0, HIDDEN = 1, SHOWING = 2 };
    8379    Mode mode() const { return m_mode; }
     
    105101    TextTrack(ScriptExecutionContext*, TextTrackClient*, const String& kind, const String& label, const String& language, TextTrackType);
    106102
    107     void setReadyState(ReadyState);
    108 
    109103    RefPtr<TextTrackCueList> m_cues;
    110104
     
    113107    String m_label;
    114108    String m_language;
    115     TextTrack::ReadyState m_readyState;
    116109    TextTrack::Mode m_mode;
    117110    TextTrackClient* m_client;
  • trunk/Source/WebCore/html/TextTrack.idl

    r101088 r101213  
    3535        readonly attribute DOMString language;
    3636
    37         const unsigned short NONE = 0;
    38         const unsigned short LOADING = 1;
    39         const unsigned short LOADED = 2;
    40         // Reflect is used for TextTrack::ERROR because it conflicts with a windows define.
    41         const [Reflect=HTML_ERROR] unsigned short ERROR = 3;
    42         readonly attribute unsigned short readyState;
    43 
    4437        const unsigned short DISABLED = 0;
    4538        const unsigned short HIDDEN = 1;
Note: See TracChangeset for help on using the changeset viewer.