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

Changeset 101057 in webkit


Ignore:
Timestamp:
Nov 23, 2011, 1:25:39 AM (15 years ago)
Author:
annacc@chromium.org
Message:

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

Reviewed by Eric Carlson.

Source/WebCore:

  • 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:

  • 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

    r101056 r101057  
     12011-11-23  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        Reviewed by Eric Carlson.
     7
     8        * media/track/track-add-track-expected.txt:
     9        * media/track/track-add-track.html:
     10        * media/track/track-constants-expected.txt:
     11        * media/track/track-constants.html:
     12        * media/track/track-load-error-readyState-expected.txt:
     13        * media/track/track-load-error-readyState.html:
     14        * media/track/track-load-from-element-readyState-expected.txt:
     15        * media/track/track-load-from-element-readyState.html:
     16        * media/track/track-load-from-src-readyState-expected.txt:
     17        * media/track/track-load-from-src-readyState.html:
     18
    1192011-11-23  Nikolas Zimmermann  <nzimmermann@rim.com>
    220
  • trunk/LayoutTests/media/track/track-add-track-expected.txt

    r99984 r101057  
    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

    r99984 r101057  
    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

    r99027 r101057  
    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

    r99027 r101057  
    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

    r98860 r101057  
    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

    r99027 r101057  
    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

    r98860 r101057  
    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

    r99027 r101057  
    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

    r98860 r101057  
    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

    r99027 r101057  
    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

    r101052 r101057  
     12011-11-23  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        Reviewed by Eric Carlson.
     7
     8        * html/HTMLTrackElement.cpp:
     9        (WebCore::HTMLTrackElement::HTMLTrackElement):
     10            Set initial readyState to NONE.
     11        (WebCore::HTMLTrackElement::didCompleteLoad):
     12            Set readyState based on load completed status.
     13        (WebCore::HTMLTrackElement::setReadyState):
     14            This replaces textTrackReadyStateChanged() because only LoadableTextTrack
     15            needs to notify HTMLTrackElement of readyState changes (i.e.
     16            textTrackReadyStateChanged() is no longer required of TextTrackClient).
     17        * html/HTMLTrackElement.h:
     18            ReadyState enum and m_readyState member variable moved from TextTrack.
     19        (WebCore::HTMLTrackElement::readyState):
     20            New: readyState() getter.
     21        * html/HTMLTrackElement.idl:
     22            Add readyState attribute and associated constants.
     23
     24        * html/LoadableTextTrack.cpp:
     25        (WebCore::LoadableTextTrack::loadTimerFired): Set readyState on HTMLTrackElement.
     26        (WebCore::LoadableTextTrack::cueLoadingStarted): Ditto.
     27        (WebCore::LoadableTextTrack::cueLoadingCompleted): Move code to set readyState
     28            to HTMLTrackElement (it can set it based on loading status).
     29
     30        * html/TextTrack.cpp: Remove readyState from TextTrack.
     31        (WebCore::TextTrack::TextTrack): Ditto.
     32        * html/TextTrack.h: Ditto.
     33        * html/TextTrack.idl: Ditto.
     34
    1352011-11-23  Raphael Kubo da Costa  <kubo@profusion.mobi>
    236
  • trunk/Source/WebCore/html/HTMLTrackElement.cpp

    r100453 r101057  
    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);
     
    207208void HTMLTrackElement::didCompleteLoad(LoadableTextTrack*, bool loadingFailed)
    208209{
     210    loadingFailed ? setReadyState(HTMLTrackElement::ERROR) : setReadyState(HTMLTrackElement::LOADED);
     211
    209212    ExceptionCode ec = 0;
    210213    dispatchEvent(Event::create(loadingFailed ? eventNames().errorEvent : eventNames().loadEvent, false, false), ec);
    211214}
    212    
    213 void HTMLTrackElement::textTrackReadyStateChanged(TextTrack* track)
    214 {
    215     if (HTMLMediaElement* parent = mediaElement())
    216         return parent->textTrackReadyStateChanged(track);
     215
     216void HTMLTrackElement::setReadyState(ReadyState state)
     217{
     218    m_readyState = state;
     219    if (HTMLMediaElement* parent = mediaElement())
     220        return parent->textTrackReadyStateChanged(m_track.get());
    217221}
    218222   
  • trunk/Source/WebCore/html/HTMLTrackElement.h

    r100453 r101057  
    5454    bool isDefault() const;
    5555    void setIsDefault(bool);
     56   
     57    enum ReadyState { NONE = 0, LOADING = 1, LOADED = 2, 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

    r97926 r101057  
    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        const unsigned short ERROR = 3;
     41        readonly attribute unsigned short readyState;
     42
     43        readonly attribute TextTrack track;
    3844};
    3945}
  • trunk/Source/WebCore/html/LoadableTextTrack.cpp

    r100616 r101057  
    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::ERROR);
    7477        return;
    7578    }
     
    101104    ASSERT_UNUSED(loader, m_loader == loader);
    102105   
    103     setReadyState(TextTrack::LOADING);
     106    if (!m_trackElement)
     107        return;
     108    m_trackElement->setReadyState(HTMLTrackElement::LOADING);
    104109}
    105110
     
    108113    ASSERT_UNUSED(loader, m_loader == loader);
    109114
    110     loadingFailed ? setReadyState(TextTrack::HTML_ERROR) : setReadyState(TextTrack::LOADED);
    111 
    112     if (m_trackElement)
    113         m_trackElement->didCompleteLoad(this, loadingFailed);
     115    if (!m_trackElement)
     116        return;
     117    m_trackElement->didCompleteLoad(this, loadingFailed);
    114118}
    115119
  • trunk/Source/WebCore/html/TextTrack.cpp

    r100616 r101057  
    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

    r100616 r101057  
    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; }
     
    108104    TextTrack(ScriptExecutionContext*, TextTrackClient*, const String& kind, const String& label, const String& language, TextTrackType);
    109105
    110     void setReadyState(ReadyState);
    111 
    112106    RefPtr<TextTrackCueList> m_cues;
    113107
     
    116110    String m_label;
    117111    String m_language;
    118     TextTrack::ReadyState m_readyState;
    119112    TextTrack::Mode m_mode;
    120113    TextTrackClient* m_client;
  • trunk/Source/WebCore/html/TextTrack.idl

    r100064 r101057  
    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.