Diff
Modified: trunk/LayoutTests/ChangeLog (101212 => 101213)
--- trunk/LayoutTests/ChangeLog 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/LayoutTests/ChangeLog 2011-11-27 23:25:52 UTC (rev 101213)
@@ -1,3 +1,23 @@
+2011-11-27 Anna Cavender <ann...@chromium.org>
+
+ Move readyState from TextTrack to HTMLTrackElement
+ https://bugs.webkit.org/show_bug.cgi?id=72553
+
+ 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:
+
2011-11-27 Benjamin Poulain <benja...@webkit.org>
The test compositing/layer-creation/spanOverlapsCanvas.html fails on Lion
Modified: trunk/LayoutTests/media/track/track-add-track-expected.txt (101212 => 101213)
--- trunk/LayoutTests/media/track/track-add-track-expected.txt 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/LayoutTests/media/track/track-add-track-expected.txt 2011-11-27 23:25:52 UTC (rev 101213)
@@ -5,7 +5,7 @@
RUN(video.appendChild(trackElement))
RUN(trackElement.src = '')
EXPECTED (video.textTracks.length == '1') OK
-EXPECTED (tracks[0].readyState == '0') OK
+EXPECTED (trackElement.readyState == '0') OK
EVENT(addtrack)
EXPECTED (event.target == '[object TextTrackList]') OK
EXPECTED (event instanceof window.TrackEvent == 'true') OK
@@ -14,12 +14,10 @@
** Test a TextTrack created with video.addTrack().
RUN(tracks.push(video.addTrack('captions', 'Caption Track', 'en')))
EXPECTED (video.textTracks.length == '2') OK
-EXPECTED (tracks[1].readyState == '0') OK
EVENT(addtrack)
EXPECTED (event.target == '[object TextTrackList]') OK
EXPECTED (event instanceof window.TrackEvent == 'true') OK
EXPECTED (event.track == '[object TextTrack]') OK
-EXPECTED (tracks[1].readyState == '0') OK
END OF TEST
Modified: trunk/LayoutTests/media/track/track-add-track.html (101212 => 101213)
--- trunk/LayoutTests/media/track/track-add-track.html 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/LayoutTests/media/track/track-add-track.html 2011-11-27 23:25:52 UTC (rev 101213)
@@ -21,9 +21,7 @@
consoleWrite("<br>** Test a TextTrack created with video.addTrack().");
run("tracks.push(video.addTrack('captions', 'Caption Track', 'en'))");
testExpected("video.textTracks.length", 2);
- testExpected("tracks[1].readyState", TextTrack.NONE);
} else {
- testExpected("tracks[1].readyState", TextTrack.NONE);
consoleWrite("");
endTest();
}
@@ -44,7 +42,7 @@
run("trackElement.src = ''");
testExpected("video.textTracks.length", 1);
- testExpected("tracks[0].readyState", TextTrack.NONE);
+ testExpected("trackElement.readyState", HTMLTrackElement.NONE);
}
</script>
Modified: trunk/LayoutTests/media/track/track-constants-expected.txt (101212 => 101213)
--- trunk/LayoutTests/media/track/track-constants-expected.txt 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/LayoutTests/media/track/track-constants-expected.txt 2011-11-27 23:25:52 UTC (rev 101213)
@@ -1,9 +1,9 @@
Test TextTrack constants.
-EXPECTED (TextTrack.NONE == '0') OK
-EXPECTED (TextTrack.LOADING == '1') OK
-EXPECTED (TextTrack.LOADED == '2') OK
-EXPECTED (TextTrack.ERROR == '3') OK
+EXPECTED (HTMLTrackElement.NONE == '0') OK
+EXPECTED (HTMLTrackElement.LOADING == '1') OK
+EXPECTED (HTMLTrackElement.LOADED == '2') OK
+EXPECTED (HTMLTrackElement.ERROR == '3') OK
EXPECTED (TextTrack.DISABLED == '0') OK
EXPECTED (TextTrack.HIDDEN == '1') OK
Modified: trunk/LayoutTests/media/track/track-constants.html (101212 => 101213)
--- trunk/LayoutTests/media/track/track-constants.html 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/LayoutTests/media/track/track-constants.html 2011-11-27 23:25:52 UTC (rev 101213)
@@ -5,10 +5,10 @@
<script type="text/_javascript_">
function doTest ()
{
- testExpected("TextTrack.NONE", 0);
- testExpected("TextTrack.LOADING", 1);
- testExpected("TextTrack.LOADED", 2);
- testExpected("TextTrack.ERROR", 3);
+ testExpected("HTMLTrackElement.NONE", 0);
+ testExpected("HTMLTrackElement.LOADING", 1);
+ testExpected("HTMLTrackElement.LOADED", 2);
+ testExpected("HTMLTrackElement.ERROR", 3);
consoleWrite("");
testExpected("TextTrack.DISABLED", 0);
Modified: trunk/LayoutTests/media/track/track-load-error-readyState-expected.txt (101212 => 101213)
--- trunk/LayoutTests/media/track/track-load-error-readyState-expected.txt 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/LayoutTests/media/track/track-load-error-readyState-expected.txt 2011-11-27 23:25:52 UTC (rev 101213)
@@ -1,6 +1,6 @@
Tests the error event on HTMLTrackElement and ERROR readyState on TextTrack.
EVENT(error)
-EXPECTED (track.track.readyState == '3') OK
+EXPECTED (track.readyState == '3') OK
END OF TEST
Modified: trunk/LayoutTests/media/track/track-load-error-readyState.html (101212 => 101213)
--- trunk/LayoutTests/media/track/track-load-error-readyState.html 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/LayoutTests/media/track/track-load-error-readyState.html 2011-11-27 23:25:52 UTC (rev 101213)
@@ -11,7 +11,7 @@
{
consoleWrite("EVENT(error)");
track = document.getElementById('testTrackError');
- testExpected("track.track.readyState", TextTrack.ERROR);
+ testExpected("track.readyState", HTMLTrackElement.ERROR);
endTest();
}
Modified: trunk/LayoutTests/media/track/track-load-from-element-readyState-expected.txt (101212 => 101213)
--- trunk/LayoutTests/media/track/track-load-from-element-readyState-expected.txt 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/LayoutTests/media/track/track-load-from-element-readyState-expected.txt 2011-11-27 23:25:52 UTC (rev 101213)
@@ -1,6 +1,6 @@
Tests the load event on HTMLTrackElement and LOADED readyState on TextTrack when src is set on the element.
EVENT(load)
-EXPECTED (track.track.readyState == '2') OK
+EXPECTED (track.readyState == '2') OK
END OF TEST
Modified: trunk/LayoutTests/media/track/track-load-from-element-readyState.html (101212 => 101213)
--- trunk/LayoutTests/media/track/track-load-from-element-readyState.html 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/LayoutTests/media/track/track-load-from-element-readyState.html 2011-11-27 23:25:52 UTC (rev 101213)
@@ -11,7 +11,7 @@
{
consoleWrite("EVENT(load)");
track = document.getElementById('testTrackSrc');
- testExpected("track.track.readyState", TextTrack.LOADED);
+ testExpected("track.readyState", HTMLTrackElement.LOADED);
endTest();
}
Modified: trunk/LayoutTests/media/track/track-load-from-src-readyState-expected.txt (101212 => 101213)
--- trunk/LayoutTests/media/track/track-load-from-src-readyState-expected.txt 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/LayoutTests/media/track/track-load-from-src-readyState-expected.txt 2011-11-27 23:25:52 UTC (rev 101213)
@@ -1,7 +1,7 @@
Tests the load event on HTMLTrackElement and LOADED readyState on TextTrack when src is set from _javascript_.
-EXPECTED (track.track.readyState == '0') OK
+EXPECTED (track.readyState == '0') OK
EVENT(load)
-EXPECTED (track.track.readyState == '2') OK
+EXPECTED (track.readyState == '2') OK
END OF TEST
Modified: trunk/LayoutTests/media/track/track-load-from-src-readyState.html (101212 => 101213)
--- trunk/LayoutTests/media/track/track-load-from-src-readyState.html 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/LayoutTests/media/track/track-load-from-src-readyState.html 2011-11-27 23:25:52 UTC (rev 101213)
@@ -16,12 +16,12 @@
function trackLoaded()
{
consoleWrite("EVENT(load)");
- testExpected("track.track.readyState", TextTrack.LOADED);
+ testExpected("track.readyState", HTMLTrackElement.LOADED);
endTest();
}
track = document.getElementById('testTrackEmpty');
- testExpected("track.track.readyState", TextTrack.NONE);
+ testExpected("track.readyState", HTMLTrackElement.NONE);
track.addEventListener("load", function () { trackLoaded(); }, true);
track.src = ""
Modified: trunk/Source/WebCore/ChangeLog (101212 => 101213)
--- trunk/Source/WebCore/ChangeLog 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/Source/WebCore/ChangeLog 2011-11-27 23:25:52 UTC (rev 101213)
@@ -1,5 +1,41 @@
2011-11-27 Anna Cavender <ann...@chromium.org>
+ Move readyState from TextTrack to HTMLTrackElement
+ https://bugs.webkit.org/show_bug.cgi?id=72553
+
+ 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.
+
+2011-11-27 Anna Cavender <ann...@chromium.org>
+
Don't allow attribute changes on <track> if feature is not enabled.
https://bugs.webkit.org/show_bug.cgi?id=73046
Modified: trunk/Source/WebCore/html/HTMLTrackElement.cpp (101212 => 101213)
--- trunk/Source/WebCore/html/HTMLTrackElement.cpp 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/Source/WebCore/html/HTMLTrackElement.cpp 2011-11-27 23:25:52 UTC (rev 101213)
@@ -43,6 +43,7 @@
inline HTMLTrackElement::HTMLTrackElement(const QualifiedName& tagName, Document* document)
: HTMLElement(tagName, document)
+ , m_readyState(HTMLTrackElement::NONE)
{
LOG(Media, "HTMLTrackElement::HTMLTrackElement - %p", this);
ASSERT(hasTagName(trackTag));
@@ -212,14 +213,17 @@
void HTMLTrackElement::didCompleteLoad(LoadableTextTrack*, bool loadingFailed)
{
+ loadingFailed ? setReadyState(HTMLTrackElement::TRACK_ERROR) : setReadyState(HTMLTrackElement::LOADED);
+
ExceptionCode ec = 0;
dispatchEvent(Event::create(loadingFailed ? eventNames().errorEvent : eventNames().loadEvent, false, false), ec);
}
-
-void HTMLTrackElement::textTrackReadyStateChanged(TextTrack* track)
+
+void HTMLTrackElement::setReadyState(ReadyState state)
{
+ m_readyState = state;
if (HTMLMediaElement* parent = mediaElement())
- return parent->textTrackReadyStateChanged(track);
+ return parent->textTrackReadyStateChanged(m_track.get());
}
void HTMLTrackElement::textTrackKindChanged(TextTrack* track)
Modified: trunk/Source/WebCore/html/HTMLTrackElement.h (101212 => 101213)
--- trunk/Source/WebCore/html/HTMLTrackElement.h 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/Source/WebCore/html/HTMLTrackElement.h 2011-11-27 23:25:52 UTC (rev 101213)
@@ -53,12 +53,17 @@
bool isDefault() const;
void setIsDefault(bool);
+
+ enum ReadyState { NONE = 0, LOADING = 1, LOADED = 2, TRACK_ERROR = 3 };
+ ReadyState readyState() const { return m_readyState; }
TextTrack* track();
void scheduleLoad();
virtual bool canLoadUrl(LoadableTextTrack*, const KURL&);
virtual void didCompleteLoad(LoadableTextTrack*, bool /* loadingFailed */);
+
+ void setReadyState(ReadyState);
private:
HTMLTrackElement(const QualifiedName&, Document*);
@@ -79,7 +84,6 @@
HTMLMediaElement* mediaElement() const;
// TextTrackClient
- virtual void textTrackReadyStateChanged(TextTrack*);
virtual void textTrackModeChanged(TextTrack*);
virtual void textTrackKindChanged(TextTrack*);
virtual void textTrackAddCues(TextTrack*, const TextTrackCueList*);
@@ -89,6 +93,7 @@
LoadableTextTrack* ensureTrack();
+ HTMLTrackElement::ReadyState m_readyState;
RefPtr<LoadableTextTrack> m_track;
};
Modified: trunk/Source/WebCore/html/HTMLTrackElement.idl (101212 => 101213)
--- trunk/Source/WebCore/html/HTMLTrackElement.idl 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/Source/WebCore/html/HTMLTrackElement.idl 2011-11-27 23:25:52 UTC (rev 101213)
@@ -28,12 +28,19 @@
Conditional=VIDEO_TRACK,
EnabledAtRuntime=webkitVideoTrack
] HTMLTrackElement : HTMLElement {
- attribute [Reflect, URL] DOMString src;
- attribute DOMString kind;
- attribute DOMString srclang;
- attribute DOMString label;
- attribute [Reflect=default] boolean isDefault;
+ attribute [Reflect, URL] DOMString src;
+ attribute DOMString kind;
+ attribute DOMString srclang;
+ attribute DOMString label;
+ attribute [Reflect=default] boolean isDefault;
- readonly attribute TextTrack track;
+ const unsigned short NONE = 0;
+ const unsigned short LOADING = 1;
+ const unsigned short LOADED = 2;
+ // Reflect is used for ERROR because it conflicts with a windows define.
+ const [Reflect=TRACK_ERROR] unsigned short ERROR = 3;
+ readonly attribute unsigned short readyState;
+
+ readonly attribute TextTrack track;
};
}
Modified: trunk/Source/WebCore/html/LoadableTextTrack.cpp (101212 => 101213)
--- trunk/Source/WebCore/html/LoadableTextTrack.cpp 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/Source/WebCore/html/LoadableTextTrack.cpp 2011-11-27 23:25:52 UTC (rev 101213)
@@ -64,13 +64,16 @@
void LoadableTextTrack::loadTimerFired(Timer<LoadableTextTrack>*)
{
- setReadyState(TextTrack::LOADING);
+ if (!m_trackElement)
+ return;
+
+ m_trackElement->setReadyState(HTMLTrackElement::LOADING);
if (m_loader)
m_loader->cancelLoad();
- if (!m_trackElement || !m_trackElement->canLoadUrl(this, m_url)) {
- setReadyState(TextTrack::HTML_ERROR);
+ if (!m_trackElement->canLoadUrl(this, m_url)) {
+ m_trackElement->setReadyState(HTMLTrackElement::TRACK_ERROR);
return;
}
@@ -101,17 +104,18 @@
{
ASSERT_UNUSED(loader, m_loader == loader);
- setReadyState(TextTrack::LOADING);
+ if (!m_trackElement)
+ return;
+ m_trackElement->setReadyState(HTMLTrackElement::LOADING);
}
void LoadableTextTrack::cueLoadingCompleted(TextTrackLoader* loader, bool loadingFailed)
{
ASSERT_UNUSED(loader, m_loader == loader);
- loadingFailed ? setReadyState(TextTrack::HTML_ERROR) : setReadyState(TextTrack::LOADED);
-
- if (m_trackElement)
- m_trackElement->didCompleteLoad(this, loadingFailed);
+ if (!m_trackElement)
+ return;
+ m_trackElement->didCompleteLoad(this, loadingFailed);
}
void LoadableTextTrack::fireCueChangeEvent()
Modified: trunk/Source/WebCore/html/TextTrack.cpp (101212 => 101213)
--- trunk/Source/WebCore/html/TextTrack.cpp 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/Source/WebCore/html/TextTrack.cpp 2011-11-27 23:25:52 UTC (rev 101213)
@@ -75,7 +75,6 @@
: TrackBase(context, TrackBase::TextTrack)
, m_label(label)
, m_language(language)
- , m_readyState(TextTrack::NONE)
, m_mode(TextTrack::HIDDEN)
, m_client(client)
, m_trackType(type)
@@ -119,13 +118,6 @@
m_client->textTrackKindChanged(this);
}
-void TextTrack::setReadyState(ReadyState state)
-{
- m_readyState = state;
- if (m_client)
- m_client->textTrackReadyStateChanged(this);
-}
-
void TextTrack::setMode(unsigned short mode, ExceptionCode& ec)
{
// 4.8.10.12.5 On setting the mode, if the new value is not either 0, 1, or 2,
Modified: trunk/Source/WebCore/html/TextTrack.h (101212 => 101213)
--- trunk/Source/WebCore/html/TextTrack.h 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/Source/WebCore/html/TextTrack.h 2011-11-27 23:25:52 UTC (rev 101213)
@@ -43,7 +43,6 @@
class TextTrackClient {
public:
virtual ~TextTrackClient() { }
- virtual void textTrackReadyStateChanged(TextTrack*) = 0;
virtual void textTrackKindChanged(TextTrack*) = 0;
virtual void textTrackModeChanged(TextTrack*) = 0;
virtual void textTrackAddCues(TextTrack*, const TextTrackCueList*) = 0;
@@ -76,9 +75,6 @@
String language() const { return m_language; }
void setLanguage(const String& language) { m_language = language; }
- enum ReadyState { NONE = 0, LOADING = 1, LOADED = 2, HTML_ERROR = 3 };
- ReadyState readyState() const { return m_readyState; }
-
enum Mode { DISABLED = 0, HIDDEN = 1, SHOWING = 2 };
Mode mode() const { return m_mode; }
void setMode(unsigned short, ExceptionCode&);
@@ -104,15 +100,12 @@
protected:
TextTrack(ScriptExecutionContext*, TextTrackClient*, const String& kind, const String& label, const String& language, TextTrackType);
- void setReadyState(ReadyState);
-
RefPtr<TextTrackCueList> m_cues;
private:
String m_kind;
String m_label;
String m_language;
- TextTrack::ReadyState m_readyState;
TextTrack::Mode m_mode;
TextTrackClient* m_client;
TextTrackType m_trackType;
Modified: trunk/Source/WebCore/html/TextTrack.idl (101212 => 101213)
--- trunk/Source/WebCore/html/TextTrack.idl 2011-11-27 23:05:03 UTC (rev 101212)
+++ trunk/Source/WebCore/html/TextTrack.idl 2011-11-27 23:25:52 UTC (rev 101213)
@@ -34,13 +34,6 @@
readonly attribute DOMString label;
readonly attribute DOMString language;
- const unsigned short NONE = 0;
- const unsigned short LOADING = 1;
- const unsigned short LOADED = 2;
- // Reflect is used for TextTrack::ERROR because it conflicts with a windows define.
- const [Reflect=HTML_ERROR] unsigned short ERROR = 3;
- readonly attribute unsigned short readyState;
-
const unsigned short DISABLED = 0;
const unsigned short HIDDEN = 1;
const unsigned short SHOWING = 2;