Title: [152741] trunk/Source/WebCore
Revision
152741
Author
[email protected]
Date
2013-07-16 14:34:12 -0700 (Tue, 16 Jul 2013)

Log Message

Make WebVTTParser return cue data instead of cue DOM objects
https://bugs.webkit.org/show_bug.cgi?id=118687

Patch by Brendan Long <[email protected]> on 2013-07-16
Reviewed by Eric Carlson.

No new tests because this doesn't change functionality.

* html/track/InbandTextTrack.cpp:
Make TextTrackCueMap handle WebVTTCues instead of just generic cues.
m_dataToCueMap and m_cueToDataMap were renamed m_genericDataToCueMap
and m_genericCueToDataMap. The cue maps were turned into pointers so we
only allocate the ones we need.
(WebCore::TextTrackCueMap::TextTrackCueMap): Initialize maps to 0.
(WebCore::TextTrackCueMap::~TextTrackCueMap): Delete allocated maps.
(WebCore::TextTrackCueMap::add): Changed to allocate cue maps as needed, and added WebVTT version.
(WebCore::TextTrackCueMap::find): Checked to check if cue maps are allocated, and added WebVTT version.
(WebCore::TextTrackCueMap::findGenericData): Changed to accept TextTrackCue instead of TextTrackCueGeneric.
(WebCore::TextTrackCueMap::findWebVTTData): Same as findGenericData, except for WebVTTCueData.
(WebCore::TextTrackCueMap::remove): Accept TextTrackCue instead of TextTrackCueGeneric, and look in both maps.
(WebCore::InbandTextTrack::addWebVTTCue): Added, based on addGenericCue.
(WebCore::InbandTextTrack::removeWebVTTCue): Added, almost identical to removeGenericCue.
(WebCore::InbandTextTrack::removeCue): m_cueMap.remove() takes a TextTrackCue now so it can remove both types of cue.
(WebCore::InbandTextTrack::willRemoveTextTrackPrivate): Use ASSERT_UNUSED instead of UNUSED_PARAM + ASSERT.
* html/track/InbandTextTrack.h: Add new functions above, change maps to pointers and add maps for holding WebVTT cues.
* html/track/WebVTTParser.cpp:
(WebCore::WebVTTParser::getNewCues): Return WebVTTCueData instead of TextTrackCue.
(WebCore::WebVTTParser::createNewCue): Create WebVTTCueData instead of TextTrackCue.
* html/track/WebVTTParser.h: Add WebVTTCueData class, based on GenericCueData.
The following functions are just constructors, destructors, getters, or setters.
(WebCore::WebVTTCueData::create):
(WebCore::WebVTTCueData::~WebVTTCueData):
(WebCore::WebVTTCueData::startTime):
(WebCore::WebVTTCueData::setStartTime):
(WebCore::WebVTTCueData::endTime):
(WebCore::WebVTTCueData::setEndTime):
(WebCore::WebVTTCueData::id):
(WebCore::WebVTTCueData::setId):
(WebCore::WebVTTCueData::content):
(WebCore::WebVTTCueData::setContent):
(WebCore::WebVTTCueData::settings):
(WebCore::WebVTTCueData::setSettings):
(WebCore::WebVTTCueData::WebVTTCueData):
* loader/TextTrackLoader.cpp:
(WebCore::TextTrackLoader::getNewCues): Convert WebVTTCueData to TextTrackCue when we get them.
* platform/graphics/InbandTextTrackPrivateClient.h: Add addWebVTTCue and removeWebVTTCue functions to the interface.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (152740 => 152741)


--- trunk/Source/WebCore/ChangeLog	2013-07-16 21:14:58 UTC (rev 152740)
+++ trunk/Source/WebCore/ChangeLog	2013-07-16 21:34:12 UTC (rev 152741)
@@ -1,3 +1,51 @@
+2013-07-16  Brendan Long  <[email protected]>
+
+        Make WebVTTParser return cue data instead of cue DOM objects
+        https://bugs.webkit.org/show_bug.cgi?id=118687
+
+        Reviewed by Eric Carlson.
+
+        No new tests because this doesn't change functionality.
+
+        * html/track/InbandTextTrack.cpp:
+        Make TextTrackCueMap handle WebVTTCues instead of just generic cues.
+        m_dataToCueMap and m_cueToDataMap were renamed m_genericDataToCueMap
+        and m_genericCueToDataMap. The cue maps were turned into pointers so we
+        only allocate the ones we need.
+        (WebCore::TextTrackCueMap::TextTrackCueMap): Initialize maps to 0.
+        (WebCore::TextTrackCueMap::~TextTrackCueMap): Delete allocated maps.
+        (WebCore::TextTrackCueMap::add): Changed to allocate cue maps as needed, and added WebVTT version.
+        (WebCore::TextTrackCueMap::find): Checked to check if cue maps are allocated, and added WebVTT version.
+        (WebCore::TextTrackCueMap::findGenericData): Changed to accept TextTrackCue instead of TextTrackCueGeneric.
+        (WebCore::TextTrackCueMap::findWebVTTData): Same as findGenericData, except for WebVTTCueData.
+        (WebCore::TextTrackCueMap::remove): Accept TextTrackCue instead of TextTrackCueGeneric, and look in both maps.
+        (WebCore::InbandTextTrack::addWebVTTCue): Added, based on addGenericCue.
+        (WebCore::InbandTextTrack::removeWebVTTCue): Added, almost identical to removeGenericCue.
+        (WebCore::InbandTextTrack::removeCue): m_cueMap.remove() takes a TextTrackCue now so it can remove both types of cue.
+        (WebCore::InbandTextTrack::willRemoveTextTrackPrivate): Use ASSERT_UNUSED instead of UNUSED_PARAM + ASSERT.
+        * html/track/InbandTextTrack.h: Add new functions above, change maps to pointers and add maps for holding WebVTT cues.
+        * html/track/WebVTTParser.cpp:
+        (WebCore::WebVTTParser::getNewCues): Return WebVTTCueData instead of TextTrackCue.
+        (WebCore::WebVTTParser::createNewCue): Create WebVTTCueData instead of TextTrackCue.
+        * html/track/WebVTTParser.h: Add WebVTTCueData class, based on GenericCueData.
+        The following functions are just constructors, destructors, getters, or setters.
+        (WebCore::WebVTTCueData::create):
+        (WebCore::WebVTTCueData::~WebVTTCueData):
+        (WebCore::WebVTTCueData::startTime):
+        (WebCore::WebVTTCueData::setStartTime):
+        (WebCore::WebVTTCueData::endTime):
+        (WebCore::WebVTTCueData::setEndTime):
+        (WebCore::WebVTTCueData::id):
+        (WebCore::WebVTTCueData::setId):
+        (WebCore::WebVTTCueData::content):
+        (WebCore::WebVTTCueData::setContent):
+        (WebCore::WebVTTCueData::settings):
+        (WebCore::WebVTTCueData::setSettings):
+        (WebCore::WebVTTCueData::WebVTTCueData):
+        * loader/TextTrackLoader.cpp:
+        (WebCore::TextTrackLoader::getNewCues): Convert WebVTTCueData to TextTrackCue when we get them.
+        * platform/graphics/InbandTextTrackPrivateClient.h: Add addWebVTTCue and removeWebVTTCue functions to the interface.
+
 2013-07-16  Tim Horton  <[email protected]>
 
         Use the correct cursor value for the unavailable plugin indicator

Modified: trunk/Source/WebCore/html/track/InbandTextTrack.cpp (152740 => 152741)


--- trunk/Source/WebCore/html/track/InbandTextTrack.cpp	2013-07-16 21:14:58 UTC (rev 152740)
+++ trunk/Source/WebCore/html/track/InbandTextTrack.cpp	2013-07-16 21:34:12 UTC (rev 152741)
@@ -37,54 +37,156 @@
 #include "Logging.h"
 #include "TextTrackCueGeneric.h"
 #include "TextTrackCueList.h"
+#include "WebVTTParser.h"
 #include <math.h>
 #include <wtf/text/CString.h>
 
 namespace WebCore {
 
+TextTrackCueMap::TextTrackCueMap()
+    : m_genericCueToDataMap(0)
+    , m_genericDataToCueMap(0)
+    , m_webVTTCueToDataMap(0)
+    , m_webVTTDataToCueMap(0)
+{
+}
+
+TextTrackCueMap::~TextTrackCueMap()
+{
+    if (m_genericCueToDataMap) {
+        delete m_genericCueToDataMap;
+        ASSERT(m_genericDataToCueMap);
+        delete m_genericDataToCueMap;
+    } else
+        ASSERT(!m_genericDataToCueMap);
+
+    if (m_webVTTCueToDataMap) {
+        delete m_webVTTCueToDataMap;
+        ASSERT(m_webVTTDataToCueMap);
+        delete m_webVTTDataToCueMap;
+    } else
+        ASSERT(!m_webVTTDataToCueMap);
+}
+
 void TextTrackCueMap::add(GenericCueData* cueData, TextTrackCueGeneric* cue)
 {
-    m_dataToCueMap.add(cueData, cue);
-    m_cueToDataMap.add(cue, cueData);
+    if (!m_genericDataToCueMap) {
+        m_genericDataToCueMap = new GenericCueDataToCueMap;
+        ASSERT(!m_genericCueToDataMap);
+        m_genericCueToDataMap = new GenericCueToDataMap;
+    } else
+        ASSERT(m_genericCueToDataMap);
+
+    m_genericDataToCueMap->add(cueData, cue);
+    m_genericCueToDataMap->add(cue, cueData);
 }
 
+void TextTrackCueMap::add(WebVTTCueData* cueData, TextTrackCue* cue)
+{
+    if (!m_webVTTDataToCueMap) {
+        m_webVTTDataToCueMap = new WebVTTCueDataToCueMap;
+        ASSERT(!m_webVTTCueToDataMap);
+        m_webVTTCueToDataMap = new WebVTTCueToDataMap;
+    } else
+        ASSERT(m_webVTTCueToDataMap);
+
+    m_webVTTDataToCueMap->add(cueData, cue);
+    m_webVTTCueToDataMap->add(cue, cueData);
+}
+
 PassRefPtr<TextTrackCueGeneric> TextTrackCueMap::find(GenericCueData* cueData)
 {
-    GenericCueDataToCueMap::iterator iter = m_dataToCueMap.find(cueData);
-    if (iter == m_dataToCueMap.end())
+    if (!m_genericDataToCueMap)
         return 0;
-    
+
+    GenericCueDataToCueMap::iterator iter = m_genericDataToCueMap->find(cueData);
+    if (iter == m_genericDataToCueMap->end())
+        return 0;
+
     return iter->value;
 }
 
-PassRefPtr<GenericCueData> TextTrackCueMap::find(TextTrackCueGeneric* cue)
+PassRefPtr<TextTrackCue> TextTrackCueMap::find(WebVTTCueData* cueData)
 {
-    GenericCueToCueDataMap::iterator iter = m_cueToDataMap.find(cue);
-    if (iter == m_cueToDataMap.end())
+    if (!m_webVTTDataToCueMap)
         return 0;
+
+    WebVTTCueDataToCueMap::iterator iter = m_webVTTDataToCueMap->find(cueData);
+    if (iter == m_webVTTDataToCueMap->end())
+        return 0;
+
+    return iter->value;
+}
+
+PassRefPtr<GenericCueData> TextTrackCueMap::findGenericData(TextTrackCue* cue)
+{
+    if (!m_genericCueToDataMap)
+        return 0;
+
+    GenericCueToDataMap::iterator iter = m_genericCueToDataMap->find(cue);
+    if (iter == m_genericCueToDataMap->end())
+        return 0;
+
+    return iter->value;
+}
+
+PassRefPtr<WebVTTCueData> TextTrackCueMap::findWebVTTData(TextTrackCue* cue)
+{
+    if (!m_webVTTCueToDataMap)
+        return 0;
+
+    WebVTTCueToDataMap::iterator iter = m_webVTTCueToDataMap->find(cue);
+    if (iter == m_webVTTCueToDataMap->end())
+        return 0;
     
     return iter->value;
 }
 
 void TextTrackCueMap::remove(GenericCueData* cueData)
 {
+    if (!m_genericCueToDataMap)
+        return;
+
     RefPtr<TextTrackCueGeneric> cue = find(cueData);
 
     if (cue)
-        m_cueToDataMap.remove(cue);
-    m_dataToCueMap.remove(cueData);
+        m_genericCueToDataMap->remove(cue);
+    m_genericDataToCueMap->remove(cueData);
 }
 
-void TextTrackCueMap::remove(TextTrackCueGeneric* cue)
+void TextTrackCueMap::remove(TextTrackCue* cue)
 {
-    RefPtr<GenericCueData> cueData = find(cue);
+    if (m_genericCueToDataMap) {
+        RefPtr<GenericCueData> genericData = findGenericData(cue);
+        if (genericData) {
+            m_genericDataToCueMap->remove(genericData);
+            m_genericCueToDataMap->remove(cue);
+            return;
+        }
+    }
 
-    if (cueData)
-        m_dataToCueMap.remove(cueData);
-    m_cueToDataMap.remove(cue);
+    if (m_webVTTCueToDataMap) {
+        RefPtr<WebVTTCueData> webVTTData = findWebVTTData(cue);
+        if (webVTTData) {
+            m_webVTTDataToCueMap->remove(webVTTData);
+            m_webVTTCueToDataMap->remove(cue);
+        }
+    }
 }
 
+void TextTrackCueMap::remove(WebVTTCueData* cueData)
+{
+    if (!m_webVTTCueToDataMap)
+        return;
 
+    RefPtr<TextTrackCue> cue = find(cueData);
+
+    if (cue)
+        m_webVTTCueToDataMap->remove(cue);
+    m_webVTTDataToCueMap->remove(cueData);
+}
+
+
 PassRefPtr<InbandTextTrack> InbandTextTrack::create(ScriptExecutionContext* context, TextTrackClient* client, PassRefPtr<InbandTextTrackPrivate> playerPrivate)
 {
     return adoptRef(new InbandTextTrack(context, client, playerPrivate));
@@ -228,8 +330,7 @@
     
 void InbandTextTrack::addGenericCue(InbandTextTrackPrivate* trackPrivate, PassRefPtr<GenericCueData> prpCueData)
 {
-    UNUSED_PARAM(trackPrivate);
-    ASSERT(trackPrivate == m_private);
+    ASSERT_UNUSED(trackPrivate, trackPrivate == m_private);
 
     RefPtr<GenericCueData> cueData = prpCueData;
     if (m_cueMap.find(cueData.get()))
@@ -270,9 +371,35 @@
         m_cueMap.remove(cueData);
 }
 
+void InbandTextTrack::addWebVTTCue(InbandTextTrackPrivate* trackPrivate, PassRefPtr<WebVTTCueData> prpCueData)
+{
+    ASSERT_UNUSED(trackPrivate, trackPrivate == m_private);
+
+    RefPtr<WebVTTCueData> cueData = prpCueData;
+    if (m_cueMap.find(cueData.get()))
+        return;
+
+    RefPtr<TextTrackCue> cue = TextTrackCue::create(scriptExecutionContext(), cueData->startTime(), cueData->endTime(), cueData->content());
+    cue->setId(cueData->id());
+    cue->setCueSettings(cueData->settings());
+
+    m_cueMap.add(cueData.get(), cue.get());
+    addCue(cue.release());
+}
+
+void InbandTextTrack::removeWebVTTCue(InbandTextTrackPrivate*, WebVTTCueData* cueData)
+{
+    RefPtr<TextTrackCue> cue = m_cueMap.find(cueData);
+    if (cue) {
+        LOG(Media, "InbandTextTrack::removeWebVTTCue removing cue: start=%.2f, end=%.2f, content=\"%s\"\n", cueData->startTime(), cueData->endTime(), cueData->content().utf8().data());
+        removeCue(cue.get(), IGNORE_EXCEPTION);
+    } else
+        m_cueMap.remove(cueData);
+}
+
 void InbandTextTrack::removeCue(TextTrackCue* cue, ExceptionCode& ec)
 {
-    m_cueMap.remove(static_cast<TextTrackCueGeneric*>(cue));
+    m_cueMap.remove(cue);
     TextTrack::removeCue(cue, ec);
 }
 
@@ -280,9 +407,7 @@
 {
     if (!mediaElement())
         return;
-
-    UNUSED_PARAM(trackPrivate);
-    ASSERT(trackPrivate == m_private);
+    ASSERT_UNUSED(trackPrivate, trackPrivate == m_private);
     mediaElement()->removeTextTrack(this);
 }
 

Modified: trunk/Source/WebCore/html/track/InbandTextTrack.h (152740 => 152741)


--- trunk/Source/WebCore/html/track/InbandTextTrack.h	2013-07-16 21:14:58 UTC (rev 152740)
+++ trunk/Source/WebCore/html/track/InbandTextTrack.h	2013-07-16 21:34:12 UTC (rev 152741)
@@ -38,26 +38,35 @@
 class Document;
 class InbandTextTrackPrivate;
 class TextTrackCue;
+class WebVTTCueData;
 
 class TextTrackCueMap {
 public:
-    TextTrackCueMap() { }
-    virtual ~TextTrackCueMap() { }
+    TextTrackCueMap();
+    virtual ~TextTrackCueMap();
 
     void add(GenericCueData*, TextTrackCueGeneric*);
+    void add(WebVTTCueData*, TextTrackCue*);
 
+    void remove(TextTrackCue*);
     void remove(GenericCueData*);
-    void remove(TextTrackCueGeneric*);
-    
-    PassRefPtr<GenericCueData> find(TextTrackCueGeneric*);
+    void remove(WebVTTCueData*);
+
+    PassRefPtr<GenericCueData> findGenericData(TextTrackCue*);
+    PassRefPtr<WebVTTCueData> findWebVTTData(TextTrackCue*);
     PassRefPtr<TextTrackCueGeneric> find(GenericCueData*);
+    PassRefPtr<TextTrackCue> find(WebVTTCueData*);
     
 private:
-    typedef HashMap<RefPtr<TextTrackCueGeneric>, RefPtr<GenericCueData> > GenericCueToCueDataMap;
+    typedef HashMap<RefPtr<TextTrackCue>, RefPtr<GenericCueData> > GenericCueToDataMap;
     typedef HashMap<RefPtr<GenericCueData>, RefPtr<TextTrackCueGeneric> > GenericCueDataToCueMap;
-    
-    GenericCueToCueDataMap m_cueToDataMap;
-    GenericCueDataToCueMap m_dataToCueMap;
+    typedef HashMap<RefPtr<TextTrackCue>, RefPtr<WebVTTCueData> > WebVTTCueToDataMap;
+    typedef HashMap<RefPtr<WebVTTCueData>, RefPtr<TextTrackCue> > WebVTTCueDataToCueMap;
+
+    GenericCueToDataMap* m_genericCueToDataMap;
+    GenericCueDataToCueMap* m_genericDataToCueMap;
+    WebVTTCueToDataMap* m_webVTTCueToDataMap;
+    WebVTTCueDataToCueMap* m_webVTTDataToCueMap;
 };
 
 class InbandTextTrack : public TextTrack, public InbandTextTrackPrivateClient {
@@ -79,6 +88,8 @@
     virtual void addGenericCue(InbandTextTrackPrivate*, PassRefPtr<GenericCueData>) OVERRIDE;
     virtual void updateGenericCue(InbandTextTrackPrivate*, GenericCueData*) OVERRIDE;
     virtual void removeGenericCue(InbandTextTrackPrivate*, GenericCueData*) OVERRIDE;
+    virtual void addWebVTTCue(InbandTextTrackPrivate*, PassRefPtr<WebVTTCueData>) OVERRIDE;
+    virtual void removeWebVTTCue(InbandTextTrackPrivate*, WebVTTCueData*) OVERRIDE;
     virtual void removeCue(TextTrackCue*, ExceptionCode&) OVERRIDE;
     virtual void willRemoveTextTrackPrivate(InbandTextTrackPrivate*) OVERRIDE;
 

Modified: trunk/Source/WebCore/html/track/WebVTTParser.cpp (152740 => 152741)


--- trunk/Source/WebCore/html/track/WebVTTParser.cpp	2013-07-16 21:14:58 UTC (rev 152740)
+++ trunk/Source/WebCore/html/track/WebVTTParser.cpp	2013-07-16 21:34:12 UTC (rev 152741)
@@ -126,7 +126,7 @@
 {
 }
 
-void WebVTTParser::getNewCues(Vector<RefPtr<TextTrackCue> >& outputCues)
+void WebVTTParser::getNewCues(Vector<RefPtr<WebVTTCueData> >& outputCues)
 {
     outputCues = m_cuelist;
     m_cuelist.clear();
@@ -360,9 +360,12 @@
     if (!m_currentContent.length())
         return;
 
-    RefPtr<TextTrackCue> cue = TextTrackCue::create(m_scriptExecutionContext, m_currentStartTime, m_currentEndTime, m_currentContent.toString());
+    RefPtr<WebVTTCueData> cue = WebVTTCueData::create();
+    cue->setStartTime(m_currentStartTime);
+    cue->setEndTime(m_currentEndTime);
+    cue->setContent(m_currentContent.toString());
     cue->setId(m_currentId);
-    cue->setCueSettings(m_currentSettings);
+    cue->setSettings(m_currentSettings);
 
     m_cuelist.append(cue);
     if (m_client)

Modified: trunk/Source/WebCore/html/track/WebVTTParser.h (152740 => 152741)


--- trunk/Source/WebCore/html/track/WebVTTParser.h	2013-07-16 21:14:58 UTC (rev 152740)
+++ trunk/Source/WebCore/html/track/WebVTTParser.h	2013-07-16 21:34:12 UTC (rev 152741)
@@ -35,7 +35,6 @@
 
 #include "DocumentFragment.h"
 #include "HTMLNames.h"
-#include "TextTrackCue.h"
 #include "TextTrackRegion.h"
 #include "WebVTTTokenizer.h"
 #include <wtf/PassOwnPtr.h>
@@ -58,6 +57,41 @@
     virtual void fileFailedToParse() = 0;
 };
 
+class WebVTTCueData : public RefCounted<WebVTTCueData> {
+public:
+
+    static PassRefPtr<WebVTTCueData> create() { return adoptRef(new WebVTTCueData()); }
+    virtual ~WebVTTCueData() { }
+
+    double startTime() const { return m_startTime; }
+    void setStartTime(double startTime) { m_startTime = startTime; }
+
+    double endTime() const { return m_endTime; }
+    void setEndTime(double endTime) { m_endTime = endTime; }
+
+    String id() const { return m_id; }
+    void setId(String id) { m_id = id; }
+
+    String content() const { return m_content; }
+    void setContent(String content) { m_content = content; }
+
+    String settings() const { return m_settings; }
+    void setSettings(String settings) { m_settings = settings; }
+
+private:
+    WebVTTCueData()
+        : m_startTime(0)
+        , m_endTime(0)
+    {
+    }
+
+    double m_startTime;
+    double m_endTime;
+    String m_id;
+    String m_content;
+    String m_settings;
+};
+
 class WebVTTParser {
 public:
     virtual ~WebVTTParser() { }
@@ -112,7 +146,7 @@
     void parseBytes(const char* data, unsigned length);
 
     // Transfers ownership of last parsed cues to caller.
-    void getNewCues(Vector<RefPtr<TextTrackCue> >&);
+    void getNewCues(Vector<RefPtr<WebVTTCueData> >&);
 #if ENABLE(WEBVTT_REGIONS)
     void getNewRegions(Vector<RefPtr<TextTrackRegion> >&);
 #endif
@@ -165,7 +199,7 @@
     WebVTTParserClient* m_client;
 
     Vector<AtomicString> m_languageStack;
-    Vector<RefPtr<TextTrackCue> > m_cuelist;
+    Vector<RefPtr<WebVTTCueData> > m_cuelist;
 
 #if ENABLE(WEBVTT_REGIONS)
     Vector<RefPtr<TextTrackRegion> > m_regionList;

Modified: trunk/Source/WebCore/loader/TextTrackLoader.cpp (152740 => 152741)


--- trunk/Source/WebCore/loader/TextTrackLoader.cpp	2013-07-16 21:14:58 UTC (rev 152740)
+++ trunk/Source/WebCore/loader/TextTrackLoader.cpp	2013-07-16 21:34:12 UTC (rev 152741)
@@ -38,6 +38,7 @@
 #include "ResourceBuffer.h"
 #include "ScriptCallStack.h"
 #include "SecurityOrigin.h"
+#include "TextTrackCue.h"
 #include "WebVTTParser.h"
 
 namespace WebCore {
@@ -209,8 +210,17 @@
 void TextTrackLoader::getNewCues(Vector<RefPtr<TextTrackCue> >& outputCues)
 {
     ASSERT(m_cueParser);
-    if (m_cueParser)
-        m_cueParser->getNewCues(outputCues);
+    if (m_cueParser) {
+        Vector<RefPtr<WebVTTCueData> > newCues;
+        m_cueParser->getNewCues(newCues);
+        for (size_t i = 0; i < newCues.size(); ++i) {
+            RefPtr<WebVTTCueData> data = ""
+            RefPtr<TextTrackCue> cue = TextTrackCue::create(m_scriptExecutionContext, data->startTime(), data->endTime(), data->content());
+            cue->setId(data->id());
+            cue->setCueSettings(data->settings());
+            outputCues.append(cue);
+        }
+    }
 }
 
 #if ENABLE(WEBVTT_REGIONS)

Modified: trunk/Source/WebCore/platform/graphics/InbandTextTrackPrivateClient.h (152740 => 152741)


--- trunk/Source/WebCore/platform/graphics/InbandTextTrackPrivateClient.h	2013-07-16 21:14:58 UTC (rev 152740)
+++ trunk/Source/WebCore/platform/graphics/InbandTextTrackPrivateClient.h	2013-07-16 21:34:12 UTC (rev 152741)
@@ -129,6 +129,8 @@
     Status m_status;
 };
 
+class WebVTTCueData;
+
 class InbandTextTrackPrivateClient {
 public:
     virtual ~InbandTextTrackPrivateClient() { }
@@ -137,6 +139,9 @@
     virtual void updateGenericCue(InbandTextTrackPrivate*, GenericCueData*) = 0;
     virtual void removeGenericCue(InbandTextTrackPrivate*, GenericCueData*) = 0;
 
+    virtual void addWebVTTCue(InbandTextTrackPrivate*, PassRefPtr<WebVTTCueData>) = 0;
+    virtual void removeWebVTTCue(InbandTextTrackPrivate*, WebVTTCueData*) = 0;
+
     virtual void willRemoveTextTrackPrivate(InbandTextTrackPrivate*) = 0;
 };
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to