Changeset 148785 in webkit


Ignore:
Timestamp:
Apr 19, 2013 6:03:14 PM (11 years ago)
Author:
commit-queue@webkit.org
Message:

Add interfaces and stubs for audio and video tracks
https://bugs.webkit.org/show_bug.cgi?id=113965

Patch by Brendan Long <b.long@cablelabs.com> on 2013-04-19
Reviewed by Jer Noble.

No new tests because there's no implementations, so there's nothing
interesting to test.

  • CMakeLists.txt: Add AudioTrack, VideoTrack, AudioTrackList and VideoTrackList.
  • DerivedSources.cpp: Same.
  • DerivedSources.make: Same.
  • DerivedSources.pri: Same.
  • GNUmakefile.list.am: Same.
  • Target.pri: Same.
  • UseJSC.cmake: Same.
  • WebCore.vcproj/WebCore.vcproj: Same.
  • WebCore.xcodeproj/project.pbxproj: Same.
  • bindings/gobject/GNUmakefile.am: Same.
  • bindings/js/JSAudioTrackCustom.cpp: Added, based on JSTestTrackCustom
  • bindings/js/JSAudioTrackListCustom.cpp: Same.
  • bindings/js/JSBindingsAllInOne.cpp: Add AudioTrack, VideoTrack, AudioTrackList and VideoTrackList.
  • bindings/js/JSVideoTrackCustom.cpp: Added, based on JSTestTrackCustom
  • bindings/js/JSVideoTrackListCustom.cpp: Same.
  • dom/EventTarget.h: Make AudioTrackList and VideoTrackList event targets.
  • dom/EventTargetFactory.in: Same.
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement): Add m_audioTracks and m_videoTracks
(WebCore::HTMLMediaElement::~HTMLMediaElement): Clear clients for audio and video tracks
(WebCore::HTMLMediaElement::audioTrackEnabledChanged): Added.
(WebCore::HTMLMediaElement::videoTrackSelectedChanged): Added.
(WebCore::HTMLMediaElement::mediaPlayerDidAddAudioTrack): Added, based on mediaPlayerDidAddTextTrack
(WebCore::HTMLMediaElement::mediaPlayerDidAddVideoTrack): Same.
(WebCore::HTMLMediaElement::mediaPlayerDidRemoveAudioTrack): Added, based on mediaPlayerDidRemoveTextTrack
(WebCore::HTMLMediaElement::mediaPlayerDidRemoveVideoTrack): Same.
(WebCore::HTMLMediaElement::addAudioTrack): Added, based on addTextTrack
(WebCore::HTMLMediaElement::addVideoTrack): Same.
(WebCore::HTMLMediaElement::removeAudioTrack): Added, based on removeTextTrack
(WebCore::HTMLMediaElement::removeVideoTrack): Added, based on removeTextTrack
(WebCore::HTMLMediaElement::removeAllInbandTracks): Remove audio and video tracks too
(WebCore::HTMLMediaElement::audioTracks): Added, based on textTracks
(WebCore::HTMLMediaElement::videoTracks): Added, based on textTracks
(WebCore::HTMLMediaElement::reportMemoryUsage): Add audio and video tracks

  • html/HTMLMediaElement.h: Add audioTracks and videoTracks and related functions
  • html/HTMLMediaElement.idl: Add audioTracks and videoTracks
  • html/track/AudioTrack.cpp: Added, based on TextTrack and InbandTextTrack.
  • html/track/AudioTrack.h: Same.
  • html/track/AudioTrack.idl: Added.
  • html/track/AudioTrackList.cpp: Added, based on TextTrackList
  • html/track/AudioTrackList.h: Same.
  • html/track/AudioTrackList.idl: Added.
  • html/track/TextTrackList.h: Add missing OVERRIDE on interfaceName()
  • html/track/VideoTrack.cpp: Added, based on TextTrack and InbandTextTrack.
  • html/track/VideoTrack.h: Same.
  • html/track/VideoTrack.idl: Added.
  • html/track/VideoTrackList.cpp: Added, based on TextTrackList
  • html/track/VideoTrackList.h: Same.
  • html/track/VideoTrackList.idl: Added.
  • platform/graphics/AudioTrackPrivate.h: Added, based on InbandTextTrackPrivate.h
  • platform/graphics/MediaPlayer.cpp:

(WebCore::MediaPlayer::addAudioTrack): Added, based on addTextTrack
(WebCore::MediaPlayer::removeAudioTrack): Added, based on removeTextTrack
(WebCore::MediaPlayer::addVideoTrack): Added, based on addTextTrack
(WebCore::MediaPlayer::removeVideoTrack): Added, based on removeTextTrack

  • platform/graphics/MediaPlayer.h:

(WebCore::MediaPlayerClient::mediaPlayerDidAddAudioTrack): Added, based on mediaPlayerDidAddTextTrack
(WebCore::MediaPlayerClient::mediaPlayerDidAddVideoTrack): Same
(WebCore::MediaPlayerClient::mediaPlayerDidRemoveAudioTrack): Added, based on mediaPlayerDidRemoveTextTrack
(WebCore::MediaPlayerClient::mediaPlayerDidRemoveVideoTrack): Same

  • platform/graphics/VideoTrackPrivate.h: Added, based on InbandTextTrackPrivate.h
Location:
trunk/Source/WebCore
Files:
5 added
38 edited
12 copied
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/CMakeLists.txt

    r148753 r148785  
    26872687if (ENABLE_VIDEO_TRACK)
    26882688    list(APPEND WebCore_IDL_FILES
     2689        html/track/AudioTrack.idl
     2690        html/track/AudioTrackList.idl
    26892691        html/track/TextTrack.idl
    26902692        html/track/TextTrackCue.idl
     
    26922694        html/track/TextTrackList.idl
    26932695        html/track/TrackEvent.idl
     2696        html/track/VideoTrack.idl
     2697        html/track/VideoTrackList.idl
    26942698    )
    26952699
    26962700    list(APPEND WebCore_SOURCES
     2701        html/track/AudioTrack.cpp
     2702        html/track/AudioTrackList.cpp
    26972703        html/track/InbandTextTrack.cpp
    26982704        html/track/LoadableTextTrack.cpp
     
    27082714        html/track/WebVTTParser.cpp
    27092715        html/track/WebVTTTokenizer.cpp
     2716        html/track/VideoTrack.cpp
     2717        html/track/VideoTrackList.cpp
    27102718
    27112719        loader/cache/CachedTextTrack.cpp
  • trunk/Source/WebCore/ChangeLog

    r148781 r148785  
     12013-04-19  Brendan Long  <b.long@cablelabs.com>
     2
     3        Add interfaces and stubs for audio and video tracks
     4        https://bugs.webkit.org/show_bug.cgi?id=113965
     5
     6        Reviewed by Jer Noble.
     7
     8        No new tests because there's no implementations, so there's nothing
     9        interesting to test.
     10
     11        * CMakeLists.txt: Add AudioTrack, VideoTrack, AudioTrackList and VideoTrackList.
     12        * DerivedSources.cpp: Same.
     13        * DerivedSources.make: Same.
     14        * DerivedSources.pri: Same.
     15        * GNUmakefile.list.am: Same.
     16        * Target.pri: Same.
     17        * UseJSC.cmake: Same.
     18        * WebCore.vcproj/WebCore.vcproj: Same.
     19        * WebCore.xcodeproj/project.pbxproj: Same.
     20        * bindings/gobject/GNUmakefile.am: Same.
     21        * bindings/js/JSAudioTrackCustom.cpp: Added, based on JSTestTrackCustom
     22        * bindings/js/JSAudioTrackListCustom.cpp: Same.
     23        * bindings/js/JSBindingsAllInOne.cpp: Add AudioTrack, VideoTrack, AudioTrackList and VideoTrackList.
     24        * bindings/js/JSVideoTrackCustom.cpp: Added, based on JSTestTrackCustom
     25        * bindings/js/JSVideoTrackListCustom.cpp: Same.
     26        * dom/EventTarget.h: Make AudioTrackList and VideoTrackList event targets.
     27        * dom/EventTargetFactory.in: Same.
     28        * html/HTMLMediaElement.cpp:
     29        (WebCore::HTMLMediaElement::HTMLMediaElement): Add m_audioTracks and m_videoTracks
     30        (WebCore::HTMLMediaElement::~HTMLMediaElement): Clear clients for audio and video tracks
     31        (WebCore::HTMLMediaElement::audioTrackEnabledChanged): Added.
     32        (WebCore::HTMLMediaElement::videoTrackSelectedChanged): Added.
     33        (WebCore::HTMLMediaElement::mediaPlayerDidAddAudioTrack): Added, based on mediaPlayerDidAddTextTrack
     34        (WebCore::HTMLMediaElement::mediaPlayerDidAddVideoTrack): Same.
     35        (WebCore::HTMLMediaElement::mediaPlayerDidRemoveAudioTrack): Added, based on mediaPlayerDidRemoveTextTrack
     36        (WebCore::HTMLMediaElement::mediaPlayerDidRemoveVideoTrack): Same.
     37        (WebCore::HTMLMediaElement::addAudioTrack): Added, based on addTextTrack
     38        (WebCore::HTMLMediaElement::addVideoTrack): Same.
     39        (WebCore::HTMLMediaElement::removeAudioTrack): Added, based on removeTextTrack
     40        (WebCore::HTMLMediaElement::removeVideoTrack): Added, based on removeTextTrack
     41        (WebCore::HTMLMediaElement::removeAllInbandTracks): Remove audio and video tracks too
     42        (WebCore::HTMLMediaElement::audioTracks): Added, based on textTracks
     43        (WebCore::HTMLMediaElement::videoTracks): Added, based on textTracks
     44        (WebCore::HTMLMediaElement::reportMemoryUsage): Add audio and video tracks
     45        * html/HTMLMediaElement.h: Add audioTracks and videoTracks and related functions
     46        * html/HTMLMediaElement.idl: Add audioTracks and videoTracks
     47        * html/track/AudioTrack.cpp: Added, based on TextTrack and InbandTextTrack.
     48        * html/track/AudioTrack.h: Same.
     49        * html/track/AudioTrack.idl: Added.
     50        * html/track/AudioTrackList.cpp: Added, based on TextTrackList
     51        * html/track/AudioTrackList.h: Same.
     52        * html/track/AudioTrackList.idl: Added.
     53        * html/track/TextTrackList.h: Add missing OVERRIDE on interfaceName()
     54        * html/track/VideoTrack.cpp: Added, based on TextTrack and InbandTextTrack.
     55        * html/track/VideoTrack.h: Same.
     56        * html/track/VideoTrack.idl: Added.
     57        * html/track/VideoTrackList.cpp: Added, based on TextTrackList
     58        * html/track/VideoTrackList.h: Same.
     59        * html/track/VideoTrackList.idl: Added.
     60        * platform/graphics/AudioTrackPrivate.h: Added, based on InbandTextTrackPrivate.h
     61        * platform/graphics/MediaPlayer.cpp:
     62        (WebCore::MediaPlayer::addAudioTrack): Added, based on addTextTrack
     63        (WebCore::MediaPlayer::removeAudioTrack): Added, based on removeTextTrack
     64        (WebCore::MediaPlayer::addVideoTrack): Added, based on addTextTrack
     65        (WebCore::MediaPlayer::removeVideoTrack): Added, based on removeTextTrack
     66        * platform/graphics/MediaPlayer.h:
     67        (WebCore::MediaPlayerClient::mediaPlayerDidAddAudioTrack): Added, based on mediaPlayerDidAddTextTrack
     68        (WebCore::MediaPlayerClient::mediaPlayerDidAddVideoTrack): Same
     69        (WebCore::MediaPlayerClient::mediaPlayerDidRemoveAudioTrack): Added, based on mediaPlayerDidRemoveTextTrack
     70        (WebCore::MediaPlayerClient::mediaPlayerDidRemoveVideoTrack): Same
     71        * platform/graphics/VideoTrackPrivate.h: Added, based on InbandTextTrackPrivate.h
     72
    1732013-04-19  Bear Travis  <betravis@adobe.com>
    274
  • trunk/Source/WebCore/DerivedSources.cpp

    r145787 r148785  
    473473#include "JSTextMetrics.cpp"
    474474#if ENABLE(VIDEO_TRACK)
     475#include "JSAudioTrack.cpp"
     476#include "JSAudioTrackList.cpp"
    475477#include "JSHTMLTrackElement.cpp"
    476478#include "JSTextTrack.cpp"
     
    479481#include "JSTextTrackList.cpp"
    480482#include "JSTrackEvent.cpp"
     483#include "JSVideoTrack.cpp"
     484#include "JSVideoTrackList.cpp"
    481485#endif
    482486#include "JSTimeRanges.cpp"
  • trunk/Source/WebCore/DerivedSources.make

    r146820 r148785  
    432432    $(WebCore)/html/shadow/HTMLContentElement.idl \
    433433    $(WebCore)/html/shadow/HTMLShadowElement.idl \
     434    $(WebCore)/html/track/AudioTrack.idl \
     435    $(WebCore)/html/track/AudioTrackList.idl \
    434436    $(WebCore)/html/track/TextTrack.idl \
    435437    $(WebCore)/html/track/TextTrackCue.idl \
     
    437439    $(WebCore)/html/track/TextTrackList.idl \
    438440    $(WebCore)/html/track/TrackEvent.idl \
     441    $(WebCore)/html/track/VideoTrack.idl \
     442    $(WebCore)/html/track/VideoTrackList.idl \
    439443    $(WebCore)/inspector/InjectedScriptHost.idl \
    440444    $(WebCore)/inspector/InspectorFrontendHost.idl \
  • trunk/Source/WebCore/DerivedSources.pri

    r146820 r148785  
    653653enable?(VIDEO_TRACK) {
    654654  IDL_BINDINGS += \
     655    $$PWD/html/track/AudioTrack.idl \
     656    $$PWD/html/track/AudioTrackList.idl \
    655657    $$PWD/html/track/TextTrack.idl \
    656658    $$PWD/html/track/TextTrackCue.idl \
     
    658660    $$PWD/html/track/TextTrackList.idl \
    659661    $$PWD/html/track/TrackEvent.idl \
     662    $$PWD/html/track/VideoTrack.idl \
     663    $$PWD/html/track/VideoTrackList.idl
    660664}
    661665
  • trunk/Source/WebCore/GNUmakefile.list.am

    r148753 r148785  
    6666        DerivedSources/WebCore/JSAudioSourceNode.cpp \
    6767        DerivedSources/WebCore/JSAudioSourceNode.h \
     68        DerivedSources/WebCore/JSAudioTrack.cpp \
     69        DerivedSources/WebCore/JSAudioTrack.h \
     70        DerivedSources/WebCore/JSAudioTrackList.cpp \
     71        DerivedSources/WebCore/JSAudioTrackList.h \
    6872        DerivedSources/WebCore/JSBarInfo.cpp \
    6973        DerivedSources/WebCore/JSBarInfo.h \
     
    778782        DerivedSources/WebCore/JSVoidCallback.cpp \
    779783        DerivedSources/WebCore/JSVoidCallback.h \
     784        DerivedSources/WebCore/JSVideoTrack.cpp \
     785        DerivedSources/WebCore/JSVideoTrack.h \
     786        DerivedSources/WebCore/JSVideoTrackList.cpp \
     787        DerivedSources/WebCore/JSVideoTrackList.h \
    780788        DerivedSources/WebCore/JSWaveShaperNode.cpp \
    781789        DerivedSources/WebCore/JSWaveShaperNode.h \
     
    15871595        $(WebCore)/html/shadow/HTMLContentElement.idl \
    15881596        $(WebCore)/html/shadow/HTMLShadowElement.idl \
     1597        $(WebCore)/html/track/AudioTrack.idl \
     1598        $(WebCore)/html/track/AudioTrackList.idl \
    15891599        $(WebCore)/html/track/TextTrack.idl \
    15901600        $(WebCore)/html/track/TextTrackCue.idl \
     
    15921602        $(WebCore)/html/track/TextTrackList.idl \
    15931603        $(WebCore)/html/track/TrackEvent.idl \
     1604        $(WebCore)/html/track/VideoTrack.idl \
     1605        $(WebCore)/html/track/VideoTrackList.idl \
    15941606        $(WebCore)/inspector/InjectedScriptHost.idl \
    15951607        $(WebCore)/inspector/InspectorFrontendHost.idl \
     
    23222334        Source/WebCore/bindings/js/JSAudioBufferSourceNodeCustom.cpp \
    23232335        Source/WebCore/bindings/js/JSAudioContextCustom.cpp \
     2336        Source/WebCore/bindings/js/JSAudioTrackCustom.cpp \
     2337        Source/WebCore/bindings/js/JSAudioTrackListCustom.cpp \
    23242338        Source/WebCore/bindings/js/JSBiquadFilterNodeCustom.cpp \
    23252339        Source/WebCore/bindings/js/JSBlobCustom.cpp \
     
    24682482        Source/WebCore/bindings/js/JSTextTrackCueCustom.cpp \
    24692483        Source/WebCore/bindings/js/JSTextTrackCustom.cpp \
    2470         Source/WebCore/bindings/js/JSTextTrackCustom.h \
    24712484        Source/WebCore/bindings/js/JSTextTrackListCustom.cpp \
    24722485        Source/WebCore/bindings/js/JSTouchCustom.cpp \
     
    24762489        Source/WebCore/bindings/js/JSTrackEventCustom.cpp \
    24772490        Source/WebCore/bindings/js/JSTreeWalkerCustom.cpp \
     2491        Source/WebCore/bindings/js/JSVideoTrackCustom.cpp \
     2492        Source/WebCore/bindings/js/JSVideoTrackListCustom.cpp \
    24782493        Source/WebCore/bindings/js/JSWebKitCSSKeyframeRuleCustom.cpp \
    24792494        Source/WebCore/bindings/js/JSWebKitCSSKeyframesRuleCustom.cpp \
     
    37703785        Source/WebCore/html/TimeRanges.cpp \
    37713786        Source/WebCore/html/TimeRanges.h \
     3787        Source/WebCore/html/track/AudioTrack.cpp \
     3788        Source/WebCore/html/track/AudioTrack.h \
     3789        Source/WebCore/html/track/AudioTrackList.cpp \
     3790        Source/WebCore/html/track/AudioTrackList.h \
    37723791        Source/WebCore/html/track/InbandTextTrack.cpp \
    37733792        Source/WebCore/html/track/InbandTextTrack.h \
     
    37903809        Source/WebCore/html/track/TrackListBase.cpp \
    37913810        Source/WebCore/html/track/TrackListBase.h \
     3811        Source/WebCore/html/track/VideoTrack.cpp \
     3812        Source/WebCore/html/track/VideoTrack.h \
     3813        Source/WebCore/html/track/VideoTrackList.cpp \
     3814        Source/WebCore/html/track/VideoTrackList.h \
    37923815        Source/WebCore/html/track/WebVTTElement.cpp \
    37933816        Source/WebCore/html/track/WebVTTElement.h \
     
    55005523        Source/WebCore/platform/graphics/ANGLEWebKitBridge.cpp \
    55015524        Source/WebCore/platform/graphics/ANGLEWebKitBridge.h \
     5525        Source/WebCore/platform/graphics/AudioTrackPrivate.h \
    55025526        Source/WebCore/platform/graphics/cpu/arm/GraphicsContext3DNEON.h \
    55035527        Source/WebCore/platform/graphics/cpu/arm/filters/NEONHelpers.h \
     
    57805804        Source/WebCore/platform/graphics/TypesettingFeatures.h \
    57815805        Source/WebCore/platform/graphics/UnitBezier.h \
     5806        Source/WebCore/platform/graphics/VideoTrackPrivate.h \
    57825807        Source/WebCore/platform/graphics/WidthCache.h \
    57835808        Source/WebCore/platform/graphics/WidthIterator.cpp \
  • trunk/Source/WebCore/Target.pri

    r148753 r148785  
    39703970enable?(VIDEO_TRACK) {
    39713971    HEADERS += \
    3972         bindings/js/JSTextTrackCustom.h \
    39733972        bindings/js/JSTrackCustom.h \
    39743973        html/HTMLTrackElement.h \
     3974        html/track/AudioTrack.h \
     3975        html/track/AudioTrackList.h \
    39753976        html/track/InbandTextTrack.h \
    39763977        html/track/LoadableTextTrack.h \
     
    39833984        html/track/TrackEvent.h \
    39843985        html/track/TrackListBase.h \
     3986        html/track/VideoTrack.h \
     3987        html/track/VideoTrackList.h \
    39853988        html/track/WebVTTParser.h \
    39863989        html/track/WebVTTToken.h \
    39873990        html/track/WebVTTTokenizer.h \
    39883991        loader/TextTrackLoader.h \
     3992        platform/graphics/AudioTrackPrivate.h \
    39893993        platform/graphics/InbandTextTrackPrivate.h \
    39903994        platform/graphics/InbandTextTrackPrivateClient.h
     3995        platform/graphics/VideoTrackPrivate.h \
    39913996
    39923997    SOURCES += \
     3998        bindings/js/JSAudioTrackCustom.cpp \
     3999        bindings/js/JSAudioTrackListCustom.cpp \
    39934000        bindings/js/JSTextTrackCueCustom.cpp \
    39944001        bindings/js/JSTextTrackCustom.cpp \
     
    39964003        bindings/js/JSTrackEventCustom.cpp \
    39974004        bindings/js/JSTextTrackListCustom.cpp \
     4005        bindings/js/JSVideoTrackCustom.cpp \
     4006        bindings/js/JSVideoTrackListCustom.cpp \
    39984007        html/HTMLTrackElement.cpp \
     4008        html/track/AudioTrack.cpp \
     4009        html/track/AudioTrackList.cpp \
    39994010        html/track/InbandTextTrack.cpp \
    40004011        html/track/LoadableTextTrack.cpp \
     
    40074018        html/track/TrackEvent.cpp \
    40084019        html/track/TrackListBase.cpp \
     4020        html/track/VideoTrack.cpp \
     4021        html/track/VideoTrackList.cpp \
    40094022        html/track/WebVTTElement.cpp \
    40104023        html/track/WebVTTParser.cpp \
  • trunk/Source/WebCore/UseJSC.cmake

    r148569 r148785  
    220220if (ENABLE_VIDEO_TRACK)
    221221    list(APPEND WebCore_SOURCES
     222        bindings/js/JSAudioTrackCustom.cpp
     223        bindings/js/JSAudioTrackListCustom.cpp
    222224        bindings/js/JSTextTrackCueCustom.cpp
    223225        bindings/js/JSTextTrackCustom.cpp
     
    225227        bindings/js/JSTrackCustom.cpp
    226228        bindings/js/JSTrackEventCustom.cpp
     229        bindings/js/JSVideoTrackCustom.cpp
     230        bindings/js/JSVideoTrackListCustom.cpp
    227231    )
    228232endif ()
  • trunk/Source/WebCore/WebCore.vcproj/WebCore.vcproj

    r148753 r148785  
    2990329903                                >
    2990429904                                <File
     29905                                        RelativePath="..\platform\graphics\AudioTrackPrivate.h"
     29906                                        >
     29907                                </File>
     29908                                <File
    2990529909                                        RelativePath="..\platform\graphics\BitmapImage.cpp"
    2990629910                                        >
     
    3037630380                                <File
    3037730381                                        RelativePath="..\platform\graphics\UnitBezier.h"
     30382                                        >
     30383                                </File>
     30384                                <File
     30385                                        RelativePath="..\platform\graphics\VideoTrackPrivate.h"
    3037830386                                        >
    3037930387                                </File>
     
    6575565763                                >
    6575665764                                <File
     65765                                        RelativePath="..\html\track\AudioTrack.cpp"
     65766                                        >
     65767                                </File>
     65768                                <File
     65769                                        RelativePath="..\html\track\AudioTrack.h"
     65770                                        >
     65771                                </File>
     65772                                <File
     65773                                        RelativePath="..\html\track\AudioTrackList.cpp"
     65774                                        >
     65775                                </File>
     65776                                <File
     65777                                        RelativePath="..\html\track\AudioTrackList.h"
     65778                                        >
     65779                                </File>
     65780                                <File
    6575765781                                        RelativePath="..\html\track\InbandTextTrack.cpp"
    6575865782                                        >
     
    6583265856                                <File
    6583365857                                        RelativePath="..\html\track\TrackListBase.h"
     65858                                        >
     65859                                </File>
     65860                                <File
     65861                                        RelativePath="..\html\track\VideoTrack.cpp"
     65862                                        >
     65863                                </File>
     65864                                <File
     65865                                        RelativePath="..\html\track\VideoTrack.h"
     65866                                        >
     65867                                </File>
     65868                                <File
     65869                                        RelativePath="..\html\track\VideoTrackList.cpp"
     65870                                        >
     65871                                </File>
     65872                                <File
     65873                                        RelativePath="..\html\track\VideoTrackList.h"
    6583465874                                        >
    6583565875                                </File>
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r148753 r148785  
    133133                07B5A30D14687D7100A81ECE /* JSTextTrackListCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07B5A30C14687D7100A81ECE /* JSTextTrackListCustom.cpp */; };
    134134                07BDD6EC1469B4C2009C9F85 /* JSTrackEventCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07B5A30A14687B8400A81ECE /* JSTrackEventCustom.cpp */; };
    135                 07CE77D516712A6A00C55A47 /* InbandTextTrackPrivateClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 07CE77D416712A6A00C55A47 /* InbandTextTrackPrivateClient.h */; };
     135                07CE77D516712A6A00C55A47 /* InbandTextTrackPrivateClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 07CE77D416712A6A00C55A47 /* InbandTextTrackPrivateClient.h */; settings = {ATTRIBUTES = (Private, ); }; };
    136136                07E116B11489C9A100EC5ACE /* JSTextTrackCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07E116B01489C9A100EC5ACE /* JSTextTrackCustom.cpp */; };
    137137                07E117071489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07E117061489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp */; };
     
    51145114                BCFF64910EAD15C200C1D6F7 /* LengthBox.h in Headers */ = {isa = PBXBuildFile; fileRef = BCFF648F0EAD15C200C1D6F7 /* LengthBox.h */; settings = {ATTRIBUTES = (Private, ); }; };
    51155115                BCFF64920EAD15C200C1D6F7 /* LengthSize.h in Headers */ = {isa = PBXBuildFile; fileRef = BCFF64900EAD15C200C1D6F7 /* LengthSize.h */; settings = {ATTRIBUTES = (Private, ); }; };
     5116                BE6DF70B171CA2C500DD52B8 /* JSVideoTrackCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE6DF708171CA2C500DD52B8 /* JSVideoTrackCustom.cpp */; };
     5117                BE6DF70D171CA2C500DD52B8 /* JSVideoTrackListCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE6DF70A171CA2C500DD52B8 /* JSVideoTrackListCustom.cpp */; };
     5118                BE6DF711171CA2DA00DD52B8 /* JSAudioTrackCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE6DF70E171CA2DA00DD52B8 /* JSAudioTrackCustom.cpp */; };
     5119                BE6DF713171CA2DA00DD52B8 /* JSAudioTrackListCustom.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE6DF710171CA2DA00DD52B8 /* JSAudioTrackListCustom.cpp */; };
    51165120                BE88E0C11715CE2600658D98 /* TrackListBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE88E0BF1715CE2600658D98 /* TrackListBase.cpp */; };
    51175121                BE88E0C21715CE2600658D98 /* TrackListBase.h in Headers */ = {isa = PBXBuildFile; fileRef = BE88E0C01715CE2600658D98 /* TrackListBase.h */; };
     5122                BE88E0D81715D2A200658D98 /* AudioTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE88E0CC1715D2A200658D98 /* AudioTrack.cpp */; };
     5123                BE88E0D91715D2A200658D98 /* AudioTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = BE88E0CD1715D2A200658D98 /* AudioTrack.h */; settings = {ATTRIBUTES = (Private, ); }; };
     5124                BE88E0DB1715D2A200658D98 /* AudioTrackList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE88E0CF1715D2A200658D98 /* AudioTrackList.cpp */; };
     5125                BE88E0DC1715D2A200658D98 /* AudioTrackList.h in Headers */ = {isa = PBXBuildFile; fileRef = BE88E0D01715D2A200658D98 /* AudioTrackList.h */; };
     5126                BE88E0DE1715D2A200658D98 /* VideoTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE88E0D21715D2A200658D98 /* VideoTrack.cpp */; };
     5127                BE88E0DF1715D2A200658D98 /* VideoTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = BE88E0D31715D2A200658D98 /* VideoTrack.h */; settings = {ATTRIBUTES = (Private, ); }; };
     5128                BE88E0E11715D2A200658D98 /* VideoTrackList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE88E0D51715D2A200658D98 /* VideoTrackList.cpp */; };
     5129                BE88E0E21715D2A200658D98 /* VideoTrackList.h in Headers */ = {isa = PBXBuildFile; fileRef = BE88E0D61715D2A200658D98 /* VideoTrackList.h */; };
     5130                BE8EF042171C8FF9009B48C3 /* JSAudioTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE8EF03E171C8FF9009B48C3 /* JSAudioTrack.cpp */; };
     5131                BE8EF043171C8FF9009B48C3 /* JSAudioTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = BE8EF03F171C8FF9009B48C3 /* JSAudioTrack.h */; };
     5132                BE8EF044171C8FF9009B48C3 /* JSAudioTrackList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE8EF040171C8FF9009B48C3 /* JSAudioTrackList.cpp */; };
     5133                BE8EF045171C8FF9009B48C3 /* JSAudioTrackList.h in Headers */ = {isa = PBXBuildFile; fileRef = BE8EF041171C8FF9009B48C3 /* JSAudioTrackList.h */; };
     5134                BE8EF04A171C9014009B48C3 /* JSVideoTrack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE8EF046171C9014009B48C3 /* JSVideoTrack.cpp */; };
     5135                BE8EF04B171C9014009B48C3 /* JSVideoTrack.h in Headers */ = {isa = PBXBuildFile; fileRef = BE8EF047171C9014009B48C3 /* JSVideoTrack.h */; };
     5136                BE8EF04C171C9014009B48C3 /* JSVideoTrackList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BE8EF048171C9014009B48C3 /* JSVideoTrackList.cpp */; };
     5137                BE8EF04D171C9014009B48C3 /* JSVideoTrackList.h in Headers */ = {isa = PBXBuildFile; fileRef = BE8EF049171C9014009B48C3 /* JSVideoTrackList.h */; };
     5138                BEF29EEB1715DD0900C4B4C9 /* AudioTrackPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = BEF29EE91715DD0900C4B4C9 /* AudioTrackPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
     5139                BEF29EEC1715DD0900C4B4C9 /* VideoTrackPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = BEF29EEA1715DD0900C4B4C9 /* VideoTrackPrivate.h */; settings = {ATTRIBUTES = (Private, ); }; };
    51185140                C046E1AC1208A9FE00BA2CF7 /* LocalizedStrings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C046E1AB1208A9FE00BA2CF7 /* LocalizedStrings.cpp */; };
    51195141                C0C054CB1118C8E400CE2636 /* CodeGenerator.pm in Headers */ = {isa = PBXBuildFile; fileRef = 93F8B3050A300FE100F61AB8 /* CodeGenerator.pm */; settings = {ATTRIBUTES = (Private, ); }; };
     
    63526374                07E116B01489C9A100EC5ACE /* JSTextTrackCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextTrackCustom.cpp; sourceTree = "<group>"; };
    63536375                07E117061489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSTextTrackCueCustom.cpp; sourceTree = "<group>"; };
    6354                 07E38A0B148FCF0C006E1ECC /* JSTextTrackCustom.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSTextTrackCustom.h; sourceTree = "<group>"; };
    63556376                0806E57912893045007CED32 /* SVGMatrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SVGMatrix.h; sourceTree = "<group>"; };
    63566377                080E49211255F3BD00EFCA27 /* SVGTextLayoutEngineBaseline.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SVGTextLayoutEngineBaseline.cpp; sourceTree = "<group>"; };
     
    1183911860                BCFF648F0EAD15C200C1D6F7 /* LengthBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LengthBox.h; sourceTree = "<group>"; };
    1184011861                BCFF64900EAD15C200C1D6F7 /* LengthSize.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LengthSize.h; sourceTree = "<group>"; };
     11862                BE6DF708171CA2C500DD52B8 /* JSVideoTrackCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSVideoTrackCustom.cpp; sourceTree = "<group>"; };
     11863                BE6DF70A171CA2C500DD52B8 /* JSVideoTrackListCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSVideoTrackListCustom.cpp; sourceTree = "<group>"; };
     11864                BE6DF70E171CA2DA00DD52B8 /* JSAudioTrackCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioTrackCustom.cpp; sourceTree = "<group>"; };
     11865                BE6DF710171CA2DA00DD52B8 /* JSAudioTrackListCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioTrackListCustom.cpp; sourceTree = "<group>"; };
    1184111866                BE855F7F0701E83500239769 /* WebCoreView.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreView.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
    1184211867                BE8560510701F91100239769 /* WebCoreView.m */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.objc; path = WebCoreView.m; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
    1184311868                BE88E0BF1715CE2600658D98 /* TrackListBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TrackListBase.cpp; sourceTree = "<group>"; };
    1184411869                BE88E0C01715CE2600658D98 /* TrackListBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackListBase.h; sourceTree = "<group>"; };
     11870                BE88E0CC1715D2A200658D98 /* AudioTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioTrack.cpp; sourceTree = "<group>"; };
     11871                BE88E0CD1715D2A200658D98 /* AudioTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioTrack.h; sourceTree = "<group>"; };
     11872                BE88E0CE1715D2A200658D98 /* AudioTrack.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AudioTrack.idl; sourceTree = "<group>"; };
     11873                BE88E0CF1715D2A200658D98 /* AudioTrackList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioTrackList.cpp; sourceTree = "<group>"; };
     11874                BE88E0D01715D2A200658D98 /* AudioTrackList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioTrackList.h; sourceTree = "<group>"; };
     11875                BE88E0D11715D2A200658D98 /* AudioTrackList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AudioTrackList.idl; sourceTree = "<group>"; };
     11876                BE88E0D21715D2A200658D98 /* VideoTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VideoTrack.cpp; sourceTree = "<group>"; };
     11877                BE88E0D31715D2A200658D98 /* VideoTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoTrack.h; sourceTree = "<group>"; };
     11878                BE88E0D41715D2A200658D98 /* VideoTrack.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VideoTrack.idl; sourceTree = "<group>"; };
     11879                BE88E0D51715D2A200658D98 /* VideoTrackList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VideoTrackList.cpp; sourceTree = "<group>"; };
     11880                BE88E0D61715D2A200658D98 /* VideoTrackList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoTrackList.h; sourceTree = "<group>"; };
     11881                BE88E0D71715D2A200658D98 /* VideoTrackList.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VideoTrackList.idl; sourceTree = "<group>"; };
     11882                BE8EF03E171C8FF9009B48C3 /* JSAudioTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioTrack.cpp; sourceTree = "<group>"; };
     11883                BE8EF03F171C8FF9009B48C3 /* JSAudioTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAudioTrack.h; sourceTree = "<group>"; };
     11884                BE8EF040171C8FF9009B48C3 /* JSAudioTrackList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSAudioTrackList.cpp; sourceTree = "<group>"; };
     11885                BE8EF041171C8FF9009B48C3 /* JSAudioTrackList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSAudioTrackList.h; sourceTree = "<group>"; };
     11886                BE8EF046171C9014009B48C3 /* JSVideoTrack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSVideoTrack.cpp; sourceTree = "<group>"; };
     11887                BE8EF047171C9014009B48C3 /* JSVideoTrack.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSVideoTrack.h; sourceTree = "<group>"; };
     11888                BE8EF048171C9014009B48C3 /* JSVideoTrackList.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSVideoTrackList.cpp; sourceTree = "<group>"; };
     11889                BE8EF049171C9014009B48C3 /* JSVideoTrackList.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSVideoTrackList.h; sourceTree = "<group>"; };
    1184511890                BE91FC8B06133666005E3790 /* Position.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = Position.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
    1184611891                BE91FC8C06133666005E3790 /* Position.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Position.cpp; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
    1184711892                BE983D95052A2E0A00892D85 /* WebCoreKeyboardUIMode.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreKeyboardUIMode.h; sourceTree = "<group>"; tabWidth = 8; usesTabs = 0; };
     11893                BEF29EE91715DD0900C4B4C9 /* AudioTrackPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioTrackPrivate.h; sourceTree = "<group>"; };
     11894                BEF29EEA1715DD0900C4B4C9 /* VideoTrackPrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoTrackPrivate.h; sourceTree = "<group>"; };
    1184811895                C046E1AB1208A9FE00BA2CF7 /* LocalizedStrings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LocalizedStrings.cpp; sourceTree = "<group>"; };
    1184911896                C0DFC86F0DB6841A003EAE7C /* JSConsoleCustom.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSConsoleCustom.cpp; sourceTree = "<group>"; };
     
    1667516722                                49EECF19105072F300099FAB /* JSArrayBufferView.cpp */,
    1667616723                                49EECF1A105072F300099FAB /* JSArrayBufferView.h */,
     16724                                BE8EF03E171C8FF9009B48C3 /* JSAudioTrack.cpp */,
     16725                                BE8EF03F171C8FF9009B48C3 /* JSAudioTrack.h */,
     16726                                BE8EF040171C8FF9009B48C3 /* JSAudioTrackList.cpp */,
     16727                                BE8EF041171C8FF9009B48C3 /* JSAudioTrackList.h */,
    1667716728                                65DF323309D1DE65000BE325 /* JSCanvasGradient.cpp */,
    1667816729                                65DF323409D1DE65000BE325 /* JSCanvasGradient.h */,
     
    1690916960                                15C77092100D3CA8005BA267 /* JSValidityState.cpp */,
    1691016961                                15C77091100D3CA8005BA267 /* JSValidityState.h */,
     16962                                BE8EF046171C9014009B48C3 /* JSVideoTrack.cpp */,
     16963                                BE8EF047171C9014009B48C3 /* JSVideoTrack.h */,
     16964                                BE8EF048171C9014009B48C3 /* JSVideoTrackList.cpp */,
     16965                                BE8EF049171C9014009B48C3 /* JSVideoTrackList.h */,
    1691116966                                97E9EC8B15DC492F004F2E71 /* JSVoidCallback.cpp */,
    1691216967                                97E9EC8C15DC492F004F2E71 /* JSVoidCallback.h */,
     
    1767717732                        isa = PBXGroup;
    1767817733                        children = (
    17679                                 BE88E0BF1715CE2600658D98 /* TrackListBase.cpp */,
    17680                                 BE88E0C01715CE2600658D98 /* TrackListBase.h */,
     17734                                BE88E0CC1715D2A200658D98 /* AudioTrack.cpp */,
     17735                                BE88E0CD1715D2A200658D98 /* AudioTrack.h */,
     17736                                BE88E0CE1715D2A200658D98 /* AudioTrack.idl */,
     17737                                BE88E0CF1715D2A200658D98 /* AudioTrackList.cpp */,
     17738                                BE88E0D01715D2A200658D98 /* AudioTrackList.h */,
     17739                                BE88E0D11715D2A200658D98 /* AudioTrackList.idl */,
    1768117740                                0794178F166E855F009416C2 /* InbandTextTrack.cpp */,
    1768217741                                07941790166E855F009416C2 /* InbandTextTrack.h */,
     
    1770217761                                070334D11459FFAC008D8D45 /* TrackEvent.h */,
    1770317762                                070334D21459FFAC008D8D45 /* TrackEvent.idl */,
     17763                                BE88E0BF1715CE2600658D98 /* TrackListBase.cpp */,
     17764                                BE88E0C01715CE2600658D98 /* TrackListBase.h */,
     17765                                BE88E0D21715D2A200658D98 /* VideoTrack.cpp */,
     17766                                BE88E0D31715D2A200658D98 /* VideoTrack.h */,
     17767                                BE88E0D41715D2A200658D98 /* VideoTrack.idl */,
     17768                                BE88E0D51715D2A200658D98 /* VideoTrackList.cpp */,
     17769                                BE88E0D61715D2A200658D98 /* VideoTrackList.h */,
     17770                                BE88E0D71715D2A200658D98 /* VideoTrackList.idl */,
    1770417771                                F12171F316A8BC63000053CA /* WebVTTElement.cpp */,
    1770517772                                F12171F416A8BC63000053CA /* WebVTTElement.h */,
     
    1833418401                                490707E41219C04300D90E51 /* ANGLEWebKitBridge.cpp */,
    1833518402                                490707E51219C04300D90E51 /* ANGLEWebKitBridge.h */,
     18403                                BEF29EE91715DD0900C4B4C9 /* AudioTrackPrivate.h */,
     18404                                BEF29EEA1715DD0900C4B4C9 /* VideoTrackPrivate.h */,
    1833618405                                A89943270B42338700D7C802 /* BitmapImage.cpp */,
    1833718406                                A89943260B42338700D7C802 /* BitmapImage.h */,
     
    1881618885                                CDDE691D171DF89100A44D89 /* JSAudioBufferCustom.cpp */,
    1881718886                                FDEAAAF012B02EE400DCF33B /* JSAudioContextCustom.cpp */,
     18887                                BE6DF70E171CA2DA00DD52B8 /* JSAudioTrackCustom.cpp */,
     18888                                BE6DF710171CA2DA00DD52B8 /* JSAudioTrackListCustom.cpp */,
    1881818889                                FD8AA63B1695148E00D2EA68 /* JSBiquadFilterNodeCustom.cpp */,
    1881918890                                8931DE5A14C44C44000DC9D2 /* JSBlobCustom.cpp */,
     
    1891918990                                07E117061489EBEB00EC5ACE /* JSTextTrackCueCustom.cpp */,
    1892018991                                07E116B01489C9A100EC5ACE /* JSTextTrackCustom.cpp */,
    18921                                 07E38A0B148FCF0C006E1ECC /* JSTextTrackCustom.h */,
    1892218992                                07B5A30C14687D7100A81ECE /* JSTextTrackListCustom.cpp */,
    1892318993                                070334E8145A1F35008D8D45 /* JSTrackCustom.cpp */,
     
    1892518995                                07B5A30A14687B8400A81ECE /* JSTrackEventCustom.cpp */,
    1892618996                                516BB7920CE91E6800512F79 /* JSTreeWalkerCustom.cpp */,
     18997                                BE6DF708171CA2C500DD52B8 /* JSVideoTrackCustom.cpp */,
     18998                                BE6DF70A171CA2C500DD52B8 /* JSVideoTrackListCustom.cpp */,
    1892718999                                49EED14C1051971A00099FAB /* JSWebGLRenderingContextCustom.cpp */,
    1892819000                                E1AD14C41297354900ACA989 /* JSWebKitCSSKeyframeRuleCustom.cpp */,
     
    2100121073                                FD62F52E145898D80094B0ED /* AudioSourceProviderClient.h in Headers */,
    2100221074                                FDB052E01561A42C00B500D6 /* AudioSummingJunction.h in Headers */,
     21075                                BEF29EEB1715DD0900C4B4C9 /* AudioTrackPrivate.h in Headers */,
    2100321076                                FD31608B12B026F700C1A359 /* AudioUtilities.h in Headers */,
    2100421077                                7EE6846012D26E3800E79415 /* AuthenticationCF.h in Headers */,
     
    2386323936                                FD3160AF12B026F700C1A359 /* VectorMath.h in Headers */,
    2386423937                                BCA257151293C010007A263D /* VerticalPositionCache.h in Headers */,
     23938                                BEF29EEC1715DD0900C4B4C9 /* VideoTrackPrivate.h in Headers */,
    2386523939                                CEF418CF1179678C009D112C /* ViewportArguments.h in Headers */,
    2386623940                                3FFFF9AE159D9B060020BBD5 /* ViewportStyleResolver.h in Headers */,
     
    2405024124                                BE88E0C21715CE2600658D98 /* TrackListBase.h in Headers */,
    2405124125                                FB484F4D171F821E00040755 /* TransformFunctions.h in Headers */,
     24126                                BE88E0D91715D2A200658D98 /* AudioTrack.h in Headers */,
     24127                                BE88E0DC1715D2A200658D98 /* AudioTrackList.h in Headers */,
     24128                                BE88E0DF1715D2A200658D98 /* VideoTrack.h in Headers */,
     24129                                BE88E0E21715D2A200658D98 /* VideoTrackList.h in Headers */,
     24130                                BE8EF043171C8FF9009B48C3 /* JSAudioTrack.h in Headers */,
     24131                                BE8EF045171C8FF9009B48C3 /* JSAudioTrackList.h in Headers */,
     24132                                BE8EF04B171C9014009B48C3 /* JSVideoTrack.h in Headers */,
     24133                                BE8EF04D171C9014009B48C3 /* JSVideoTrackList.h in Headers */,
    2405224134                        );
    2405324135                        runOnlyForDeploymentPostprocessing = 0;
     
    2700127083                                BE88E0C11715CE2600658D98 /* TrackListBase.cpp in Sources */,
    2700227084                                FB484F4C171F821E00040755 /* TransformFunctions.cpp in Sources */,
     27085                                BE88E0D81715D2A200658D98 /* AudioTrack.cpp in Sources */,
     27086                                BE88E0DB1715D2A200658D98 /* AudioTrackList.cpp in Sources */,
     27087                                BE88E0DE1715D2A200658D98 /* VideoTrack.cpp in Sources */,
     27088                                BE88E0E11715D2A200658D98 /* VideoTrackList.cpp in Sources */,
     27089                                BE8EF042171C8FF9009B48C3 /* JSAudioTrack.cpp in Sources */,
     27090                                BE8EF044171C8FF9009B48C3 /* JSAudioTrackList.cpp in Sources */,
     27091                                BE8EF04A171C9014009B48C3 /* JSVideoTrack.cpp in Sources */,
     27092                                BE8EF04C171C9014009B48C3 /* JSVideoTrackList.cpp in Sources */,
     27093                                BE6DF70B171CA2C500DD52B8 /* JSVideoTrackCustom.cpp in Sources */,
     27094                                BE6DF70D171CA2C500DD52B8 /* JSVideoTrackListCustom.cpp in Sources */,
     27095                                BE6DF711171CA2DA00DD52B8 /* JSAudioTrackCustom.cpp in Sources */,
     27096                                BE6DF713171CA2DA00DD52B8 /* JSAudioTrackListCustom.cpp in Sources */,
    2700327097                        );
    2700427098                        runOnlyForDeploymentPostprocessing = 0;
  • trunk/Source/WebCore/bindings/gobject/GNUmakefile.am

    r147924 r148785  
    434434if ENABLE_VIDEO
    435435webkitgtk_gdom_built_h_api += \
     436        $(top_builddir)/DerivedSources/webkitdom/WebKitDOMAudioTrack.h \
     437        $(top_builddir)/DerivedSources/webkitdom/WebKitDOMAudioTrackList.h \
    436438        $(top_builddir)/DerivedSources/webkitdom/WebKitDOMHTMLAudioElement.h \
    437439        $(top_builddir)/DerivedSources/webkitdom/WebKitDOMHTMLVideoElement.h \
     
    440442        $(top_builddir)/DerivedSources/webkitdom/WebKitDOMTextTrackCue.h \
    441443        $(top_builddir)/DerivedSources/webkitdom/WebKitDOMTextTrackCueList.h \
    442         $(top_builddir)/DerivedSources/webkitdom/WebKitDOMTrackEvent.h
     444        $(top_builddir)/DerivedSources/webkitdom/WebKitDOMTrackEvent.h \
     445        $(top_builddir)/DerivedSources/webkitdom/WebKitDOMVideoTrack.h \
     446        $(top_builddir)/DerivedSources/webkitdom/WebKitDOMVideoTrackList.h
    443447webkitgtk_gdom_built_sources += \
    444448        DerivedSources/webkitdom/WebKitDOMHTMLAudioElement.cpp \
     
    446450        DerivedSources/webkitdom/WebKitDOMHTMLVideoElement.cpp \
    447451        DerivedSources/webkitdom/WebKitDOMHTMLVideoElementPrivate.h \
     452        DerivedSources/webkitdom/WebKitDOMAudioTrack.cpp \
     453        DerivedSources/webkitdom/WebKitDOMAudioTrackList.cpp \
    448454        DerivedSources/webkitdom/WebKitDOMTextTrack.cpp \
    449455        DerivedSources/webkitdom/WebKitDOMTextTrackPrivate.h \
     
    454460        DerivedSources/webkitdom/WebKitDOMTextTrackCueList.cpp \
    455461        DerivedSources/webkitdom/WebKitDOMTextTrackCueListPrivate.h \
     462        DerivedSources/webkitdom/WebKitDOMVideoTrack.cpp \
     463        DerivedSources/webkitdom/WebKitDOMVideoTrackList.cpp \
    456464        DerivedSources/webkitdom/WebKitDOMTrackEvent.cpp \
    457465        DerivedSources/webkitdom/WebKitDOMTrackEventPrivate.h
  • trunk/Source/WebCore/bindings/js/JSAudioTrackCustom.cpp

    r148784 r148785  
    11/*
    2  * Copyright (C) 2011 Apple Inc.  All rights reserved.
     2 * Copyright (C) 2011 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2525
    2626#include "config.h"
    27 #include "TrackBase.h"
    2827
    2928#if ENABLE(VIDEO_TRACK)
    3029
     30#include "JSAudioTrack.h"
     31
     32#include "JSTrackCustom.h"
     33
     34using namespace JSC;
     35
    3136namespace WebCore {
    3237
    33 TrackBase::TrackBase(Type type, const AtomicString& label, const AtomicString& language)
    34     : m_mediaElement(0)
    35     , m_label(label)
    36     , m_language(language)
     38void JSAudioTrack::visitChildren(JSCell* cell, SlotVisitor& visitor)
    3739{
    38     ASSERT(type != BaseTrack);
    39     m_type = type;
    40 }
     40    JSAudioTrack* jsAudioTrack = jsCast<JSAudioTrack*>(cell);
     41    ASSERT_GC_OBJECT_INHERITS(jsAudioTrack, &s_info);
     42    COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag);
     43    ASSERT(jsAudioTrack->structure()->typeInfo().overridesVisitChildren());
     44    Base::visitChildren(jsAudioTrack, visitor);
    4145
    42 TrackBase::~TrackBase()
    43 {
    44 }
    45 
    46 void TrackBase::setKind(const AtomicString& kind)
    47 {
    48     String oldKind = m_kind;
    49 
    50     if (isValidKind(kind))
    51         m_kind = kind;
    52     else
    53         m_kind = defaultKindKeyword();
     46    AudioTrack* audioTrack = static_cast<AudioTrack*>(jsAudioTrack->impl());
     47    visitor.addOpaqueRoot(root(audioTrack));
    5448}
    5549
  • trunk/Source/WebCore/bindings/js/JSAudioTrackListCustom.cpp

    r148784 r148785  
    11/*
    2  * Copyright (C) 2011 Apple Inc.  All rights reserved.
     2 * Copyright (C) 2011 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2424 */
    2525
    26 #ifndef JSTextTrackCustom_h
    27 #define JSTextTrackCustom_h
     26#include "config.h"
    2827
    2928#if ENABLE(VIDEO_TRACK)
    30 #include "JSTextTrack.h"
     29#include "JSAudioTrackList.h"
    3130
    32 #include "HTMLMediaElement.h"
    33 #include "HTMLTrackElement.h"
     31#include "Element.h"
    3432#include "JSNodeCustom.h"
    35 #include "LoadableTextTrack.h"
    3633
    3734using namespace JSC;
     
    3936namespace WebCore {
    4037
    41 inline void* root(TextTrack* track)
     38void JSAudioTrackList::visitChildren(JSCell* cell, SlotVisitor& visitor)
    4239{
    43     // If this track corresponds to a <track> element, return that element's root.
    44     if (track->trackType() == TextTrack::TrackElement) {
    45         if (HTMLTrackElement* trackElement = static_cast<LoadableTextTrack*>(track)->trackElement())
    46             return root(trackElement);
    47     }
     40    JSAudioTrackList* jsAudioTrackList = jsCast<JSAudioTrackList*>(cell);
     41    ASSERT_GC_OBJECT_INHERITS(jsAudioTrackList, &s_info);
     42    COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag);
     43    ASSERT(jsAudioTrackList->structure()->typeInfo().overridesVisitChildren());
     44    Base::visitChildren(jsAudioTrackList, visitor);
    4845
    49     // No, return the media element's root if it has one.
    50     if (track->mediaElement())
    51         return root(track->mediaElement());
    52 
    53     // No track element and no media element, return the text track.
    54     return track;
     46    AudioTrackList* audioTrackList = static_cast<AudioTrackList*>(jsAudioTrackList->impl());
     47    visitor.addOpaqueRoot(root(audioTrackList->element()));
     48    audioTrackList->visitJSEventListeners(visitor);
    5549}
    5650
    57 }
     51} // namespace WebCore
    5852
    5953#endif
    60 #endif
  • trunk/Source/WebCore/bindings/js/JSBindingsAllInOne.cpp

    r146585 r148785  
    3535#include "JSArrayBufferCustom.cpp"
    3636#include "JSAttrCustom.cpp"
     37#include "JSAudioTrackCustom.cpp"
     38#include "JSAudioTrackListCustom.cpp"
    3739#include "JSBlobCustom.cpp"
    3840#include "JSCDATASectionCustom.cpp"
     
    148150#include "JSTrackEventCustom.cpp"
    149151#include "JSTreeWalkerCustom.cpp"
     152#include "JSVideoTrackCustom.cpp"
     153#include "JSVideoTrackListCustom.cpp"
    150154#include "JSWebKitCSSKeyframeRuleCustom.cpp"
    151155#include "JSWebKitCSSKeyframesRuleCustom.cpp"
  • trunk/Source/WebCore/bindings/js/JSTextTrackCueCustom.cpp

    r113387 r148785  
    2929
    3030#include "JSTextTrackCue.h"
    31 #include "JSTextTrackCustom.h"
     31#include "JSTrackCustom.h"
     32#include "TextTrack.h"
    3233
    3334using namespace JSC;
  • trunk/Source/WebCore/bindings/js/JSTextTrackCustom.cpp

    r113387 r148785  
    2727
    2828#if ENABLE(VIDEO_TRACK)
    29 #include "JSTextTrackCustom.h"
    30 
    3129#include "JSTextTrack.h"
    3230#include "JSTextTrackCueList.h"
     31#include "JSTrackCustom.h"
    3332
    3433using namespace JSC;
    3534
    3635namespace WebCore {
    37 
    38 bool JSTextTrackOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor)
    39 {
    40     JSTextTrack* jsTextTrack = jsCast<JSTextTrack*>(handle.get().asCell());
    41     TextTrack* textTrack = static_cast<TextTrack*>(jsTextTrack->impl());
    42 
    43     // If the cue is firing event listeners, its wrapper is reachable because
    44     // the wrapper is responsible for marking those event listeners.
    45     if (textTrack->isFiringEventListeners())
    46         return true;
    47 
    48     // If the cue has no event listeners and has no custom properties, it is not reachable.
    49     if (!textTrack->hasEventListeners() && !jsTextTrack->hasCustomProperties())
    50         return false;
    51 
    52     return visitor.containsOpaqueRoot(root(textTrack));
    53 }
    5436
    5537void JSTextTrack::visitChildren(JSCell* cell, SlotVisitor& visitor)
  • trunk/Source/WebCore/bindings/js/JSTextTrackListCustom.cpp

    r148752 r148785  
    2929#include "JSTextTrackList.h"
    3030
    31 #include "HTMLMediaElement.h"
     31#include "Element.h"
    3232#include "JSNodeCustom.h"
    3333
     
    3535
    3636namespace WebCore {
    37 
    38 bool JSTextTrackListOwner::isReachableFromOpaqueRoots(JSC::Handle<JSC::Unknown> handle, void*, SlotVisitor& visitor)
    39 {
    40     JSTextTrackList* jsTextTrackList = jsCast<JSTextTrackList*>(handle.get().asCell());
    41     TextTrackList* textTrackList = static_cast<TextTrackList*>(jsTextTrackList->impl());
    42 
    43     // If the list is firing event listeners, its wrapper is reachable because
    44     // the wrapper is responsible for marking those event listeners.
    45     if (textTrackList->isFiringEventListeners())
    46         return true;
    47 
    48     // If the list has no event listeners and has no custom properties, it is not reachable.
    49     if (!textTrackList->hasEventListeners() && !jsTextTrackList->hasCustomProperties())
    50         return false;
    51 
    52     // It is reachable if the media element parent is reachable.
    53     return visitor.containsOpaqueRoot(root(textTrackList->element()));
    54 }
    5537
    5638void JSTextTrackList::visitChildren(JSCell* cell, SlotVisitor& visitor)
  • trunk/Source/WebCore/bindings/js/JSTrackCustom.cpp

    r113387 r148785  
    3030#include "JSTrackCustom.h"
    3131
     32#include "JSAudioTrack.h"
    3233#include "JSTextTrack.h"
     34#include "JSVideoTrack.h"
    3335
    3436using namespace JSC;
     
    6769       
    6870    case TrackBase::AudioTrack:
     71        return CREATE_DOM_WRAPPER(exec, globalObject, AudioTrack, track);
     72        break;
     73
    6974    case TrackBase::VideoTrack:
    70         // This should not happen until VideoTrack and AudioTrack are implemented.
    71         ASSERT_NOT_REACHED();
     75        return CREATE_DOM_WRAPPER(exec, globalObject, VideoTrack, track);
    7276        break;
    7377
  • trunk/Source/WebCore/bindings/js/JSTrackCustom.h

    r99261 r148785  
    2929#if ENABLE(VIDEO_TRACK)
    3030
     31#include "Element.h"
    3132#include "JSDOMBinding.h"
     33#include "JSNodeCustom.h"
    3234#include "TrackBase.h"
    3335
     
    3739JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TrackBase*);
    3840
     41inline void* root(TrackBase* track)
     42{
     43    if (track->element())
     44        return root(track->element());
     45    return track;
     46}
     47
    3948}
    4049
  • trunk/Source/WebCore/bindings/js/JSVideoTrackCustom.cpp

    r148784 r148785  
    11/*
    2  * Copyright (C) 2011 Apple Inc.  All rights reserved.
     2 * Copyright (C) 2011 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2525
    2626#include "config.h"
    27 #include "TrackBase.h"
    2827
    2928#if ENABLE(VIDEO_TRACK)
    3029
     30#include "JSVideoTrack.h"
     31
     32#include "JSTrackCustom.h"
     33
     34using namespace JSC;
     35
    3136namespace WebCore {
    3237
    33 TrackBase::TrackBase(Type type, const AtomicString& label, const AtomicString& language)
    34     : m_mediaElement(0)
    35     , m_label(label)
    36     , m_language(language)
     38void JSVideoTrack::visitChildren(JSCell* cell, SlotVisitor& visitor)
    3739{
    38     ASSERT(type != BaseTrack);
    39     m_type = type;
    40 }
     40    JSVideoTrack* jsVideoTrack = jsCast<JSVideoTrack*>(cell);
     41    ASSERT_GC_OBJECT_INHERITS(jsVideoTrack, &s_info);
     42    COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag);
     43    ASSERT(jsVideoTrack->structure()->typeInfo().overridesVisitChildren());
     44    Base::visitChildren(jsVideoTrack, visitor);
    4145
    42 TrackBase::~TrackBase()
    43 {
    44 }
    45 
    46 void TrackBase::setKind(const AtomicString& kind)
    47 {
    48     String oldKind = m_kind;
    49 
    50     if (isValidKind(kind))
    51         m_kind = kind;
    52     else
    53         m_kind = defaultKindKeyword();
     46    VideoTrack* videoTrack = static_cast<VideoTrack*>(jsVideoTrack->impl());
     47    visitor.addOpaqueRoot(root(videoTrack));
    5448}
    5549
  • trunk/Source/WebCore/bindings/js/JSVideoTrackListCustom.cpp

    r148784 r148785  
    11/*
    2  * Copyright (C) 2011 Apple Inc.  All rights reserved.
     2 * Copyright (C) 2011 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2424 */
    2525
    26 #ifndef JSTextTrackCustom_h
    27 #define JSTextTrackCustom_h
     26#include "config.h"
    2827
    2928#if ENABLE(VIDEO_TRACK)
    30 #include "JSTextTrack.h"
     29#include "JSVideoTrackList.h"
    3130
    32 #include "HTMLMediaElement.h"
    33 #include "HTMLTrackElement.h"
     31#include "Element.h"
    3432#include "JSNodeCustom.h"
    35 #include "LoadableTextTrack.h"
    3633
    3734using namespace JSC;
     
    3936namespace WebCore {
    4037
    41 inline void* root(TextTrack* track)
     38void JSVideoTrackList::visitChildren(JSCell* cell, SlotVisitor& visitor)
    4239{
    43     // If this track corresponds to a <track> element, return that element's root.
    44     if (track->trackType() == TextTrack::TrackElement) {
    45         if (HTMLTrackElement* trackElement = static_cast<LoadableTextTrack*>(track)->trackElement())
    46             return root(trackElement);
    47     }
     40    JSVideoTrackList* jsVideoTrackList = jsCast<JSVideoTrackList*>(cell);
     41    ASSERT_GC_OBJECT_INHERITS(jsVideoTrackList, &s_info);
     42    COMPILE_ASSERT(StructureFlags & OverridesVisitChildren, OverridesVisitChildrenWithoutSettingFlag);
     43    ASSERT(jsVideoTrackList->structure()->typeInfo().overridesVisitChildren());
     44    Base::visitChildren(jsVideoTrackList, visitor);
    4845
    49     // No, return the media element's root if it has one.
    50     if (track->mediaElement())
    51         return root(track->mediaElement());
    52 
    53     // No track element and no media element, return the text track.
    54     return track;
     46    VideoTrackList* videoTrackList = static_cast<VideoTrackList*>(jsVideoTrackList->impl());
     47    visitor.addOpaqueRoot(root(videoTrackList->element()));
     48    videoTrackList->visitJSEventListeners(visitor);
    5549}
    5650
    57 }
     51} // namespace WebCore
    5852
    5953#endif
    60 #endif
  • trunk/Source/WebCore/dom/EventTarget.h

    r147795 r148785  
    4242
    4343    class AudioContext;
     44    class AudioTrackList;
    4445    class DedicatedWorkerContext;
    4546    class DOMApplicationCache;
     
    6869    class TextTrack;
    6970    class TextTrackCue;
     71    class VideoTrackList;
    7072    class WebSocket;
    7173    class WebKitNamedFlow;
  • trunk/Source/WebCore/dom/EventTargetFactory.in

    r147857 r148785  
    22
    33AudioContext conditional=WEB_AUDIO
     4AudioTrackList conditional=VIDEO_TRACK
    45BatteryManager conditional=BATTERY_STATUS
    56DedicatedWorkerContext conditional=WORKERS
     
    3839TextTrackCue conditional=VIDEO_TRACK
    3940TextTrackList conditional=VIDEO_TRACK
     41VideoTrackList conditional=VIDEO_TRACK
    4042WebKitNamedFlow
    4143WebSocket conditional=WEB_SOCKETS
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r148752 r148785  
    9999
    100100#if ENABLE(VIDEO_TRACK)
     101#include "AudioTrackList.h"
     102#include "AudioTrackPrivate.h"
    101103#include "CaptionUserPreferences.h"
    102104#include "HTMLTrackElement.h"
     
    106108#include "TextTrackCueList.h"
    107109#include "TextTrackList.h"
     110#include "VideoTrackList.h"
     111#include "VideoTrackPrivate.h"
    108112#endif
    109113
     
    297301    , m_lastTextTrackUpdateTime(-1)
    298302    , m_captionDisplayMode(CaptionUserPreferences::Automatic)
     303    , m_audioTracks(0)
    299304    , m_textTracks(0)
     305    , m_videoTracks(0)
    300306    , m_ignoreTrackDisplayUpdate(0)
    301307#endif
     
    331337#if ENABLE(VIDEO_TRACK)
    332338    document()->unregisterForCaptionPreferencesChangedCallbacks(this);
     339    if (m_audioTracks) {
     340        m_audioTracks->clearElement();
     341        for (unsigned i = 0; i < m_audioTracks->length(); ++i)
     342            m_audioTracks->item(i)->clearClient();
     343    }
    333344    if (m_textTracks)
    334345        m_textTracks->clearElement();
     
    336347        for (unsigned i = 0; i < m_textTracks->length(); ++i)
    337348            m_textTracks->item(i)->clearClient();
     349    }
     350    if (m_videoTracks) {
     351        m_videoTracks->clearElement();
     352        for (unsigned i = 0; i < m_videoTracks->length(); ++i)
     353            m_videoTracks->item(i)->clearClient();
    338354    }
    339355#endif
     
    13541370}
    13551371
     1372void HTMLMediaElement::audioTrackEnabledChanged(AudioTrack*)
     1373{
     1374    // We will want to change the media controls here once they exist
     1375}
     1376
    13561377void HTMLMediaElement::textTrackModeChanged(TextTrack* track)
    13571378{
     
    13911412    configureTextTrackDisplay();
    13921413    updateActiveTextTrackCues(currentTime());
     1414}
     1415
     1416void HTMLMediaElement::videoTrackSelectedChanged(VideoTrack*)
     1417{
     1418    // We will want to change the media controls here once they exist
    13931419}
    13941420
     
    27972823#if ENABLE(VIDEO_TRACK)
    27982824
     2825void HTMLMediaElement::mediaPlayerDidAddAudioTrack(PassRefPtr<AudioTrackPrivate> prpTrack)
     2826{
     2827    if (!RuntimeEnabledFeatures::webkitVideoTrackEnabled())
     2828        return;
     2829
     2830    addAudioTrack(AudioTrack::create(this, prpTrack));
     2831}
     2832
    27992833void HTMLMediaElement::mediaPlayerDidAddTextTrack(PassRefPtr<InbandTextTrackPrivate> prpTrack)
    28002834{
     
    28292863    // interface, with the track attribute initialized to the text track's TextTrack object, at the media element's
    28302864    // textTracks attribute's TextTrackList object.
    2831     addTextTrack(textTrack.get());
     2865    addTextTrack(textTrack.release());
     2866}
     2867
     2868void HTMLMediaElement::mediaPlayerDidAddVideoTrack(PassRefPtr<VideoTrackPrivate> prpTrack)
     2869{
     2870    if (!RuntimeEnabledFeatures::webkitVideoTrackEnabled())
     2871        return;
     2872
     2873    addVideoTrack(VideoTrack::create(this, prpTrack));
     2874}
     2875
     2876void HTMLMediaElement::mediaPlayerDidRemoveAudioTrack(PassRefPtr<AudioTrackPrivate> prpTrack)
     2877{
     2878    prpTrack->willBeRemoved();
    28322879}
    28332880
    28342881void HTMLMediaElement::mediaPlayerDidRemoveTextTrack(PassRefPtr<InbandTextTrackPrivate> prpTrack)
    28352882{
    2836     if (!RuntimeEnabledFeatures::webkitVideoTrackEnabled())
    2837         return;
    2838    
    2839     if (!m_textTracks)
    2840         return;
    2841 
    2842     // This cast is safe because we created the InbandTextTrack with the InbandTextTrackPrivate
    2843     // passed to mediaPlayerDidAddTextTrack.
    2844     RefPtr<InbandTextTrack> textTrack = static_cast<InbandTextTrack*>(prpTrack->client());
    2845     if (!textTrack)
    2846         return;
    2847 
    2848     removeTextTrack(textTrack.get());
     2883    prpTrack->willBeRemoved();
     2884}
     2885
     2886void HTMLMediaElement::mediaPlayerDidRemoveVideoTrack(PassRefPtr<VideoTrackPrivate> prpTrack)
     2887{
     2888    prpTrack->willBeRemoved();
    28492889}
    28502890
     
    29252965}
    29262966
    2927 void HTMLMediaElement::addTextTrack(TextTrack* track)
    2928 {
     2967void HTMLMediaElement::addAudioTrack(PassRefPtr<AudioTrack> track)
     2968{
     2969    if (!RuntimeEnabledFeatures::webkitVideoTrackEnabled())
     2970        return;
     2971
     2972    audioTracks()->append(track);
     2973}
     2974
     2975void HTMLMediaElement::addTextTrack(PassRefPtr<TextTrack> track)
     2976{
     2977    if (!RuntimeEnabledFeatures::webkitVideoTrackEnabled())
     2978        return;
     2979
    29292980    textTracks()->append(track);
    2930    
     2981
    29312982    closeCaptionTracksChanged();
    29322983}
    29332984
     2985void HTMLMediaElement::addVideoTrack(PassRefPtr<VideoTrack> track)
     2986{
     2987    if (!RuntimeEnabledFeatures::webkitVideoTrackEnabled())
     2988        return;
     2989
     2990    videoTracks()->append(track);
     2991}
     2992
     2993void HTMLMediaElement::removeAudioTrack(AudioTrack* track)
     2994{
     2995    if (!RuntimeEnabledFeatures::webkitVideoTrackEnabled())
     2996        return;
     2997
     2998    m_audioTracks->remove(track);
     2999}
     3000
    29343001void HTMLMediaElement::removeTextTrack(TextTrack* track)
    29353002{
     3003    if (!RuntimeEnabledFeatures::webkitVideoTrackEnabled())
     3004        return;
     3005
    29363006    TrackDisplayUpdateScope scope(this);
    29373007    TextTrackCueList* cues = track->cues();
     
    29443014}
    29453015
     3016void HTMLMediaElement::removeVideoTrack(VideoTrack* track)
     3017{
     3018    if (!RuntimeEnabledFeatures::webkitVideoTrackEnabled())
     3019        return;
     3020
     3021    m_videoTracks->remove(track);
     3022}
     3023
    29463024void HTMLMediaElement::removeAllInbandTracks()
    29473025{
    2948     if (!m_textTracks)
    2949         return;
    2950 
    2951     TrackDisplayUpdateScope scope(this);
    2952     for (int i = m_textTracks->length() - 1; i >= 0; --i) {
    2953         TextTrack* track = m_textTracks->item(i);
    2954 
    2955         if (track->trackType() == TextTrack::InBand)
    2956             removeTextTrack(track);
    2957     }
     3026    while (m_audioTracks &&  m_audioTracks->length())
     3027        removeAudioTrack(m_audioTracks->lastItem());
     3028
     3029    if (m_textTracks) {
     3030        TrackDisplayUpdateScope scope(this);
     3031        for (int i = m_textTracks->length() - 1; i >= 0; --i) {
     3032            TextTrack* track = m_textTracks->item(i);
     3033
     3034            if (track->trackType() == TextTrack::InBand)
     3035                removeTextTrack(track);
     3036        }
     3037    }
     3038
     3039    while (m_videoTracks &&  m_videoTracks->length())
     3040        removeVideoTrack(m_videoTracks->lastItem());
    29583041}
    29593042
     
    29843067
    29853068    // 6. Add the new text track to the media element's list of text tracks.
    2986     addTextTrack(textTrack.get());
     3069    addTextTrack(textTrack);
    29873070
    29883071    // ... its text track readiness state to the text track loaded state ...
     
    29953078}
    29963079
    2997 TextTrackList* HTMLMediaElement::textTracks()
     3080AudioTrackList* HTMLMediaElement::audioTracks()
    29983081{
    29993082    if (!RuntimeEnabledFeatures::webkitVideoTrackEnabled())
    30003083        return 0;
    30013084
     3085    if (!m_audioTracks)
     3086        m_audioTracks = AudioTrackList::create(this, ActiveDOMObject::scriptExecutionContext());
     3087
     3088    return m_audioTracks.get();
     3089}
     3090
     3091TextTrackList* HTMLMediaElement::textTracks()
     3092{
     3093    if (!RuntimeEnabledFeatures::webkitVideoTrackEnabled())
     3094        return 0;
     3095
    30023096    if (!m_textTracks)
    30033097        m_textTracks = TextTrackList::create(this, ActiveDOMObject::scriptExecutionContext());
    30043098
    30053099    return m_textTracks.get();
     3100}
     3101
     3102VideoTrackList* HTMLMediaElement::videoTracks()
     3103{
     3104    if (!RuntimeEnabledFeatures::webkitVideoTrackEnabled())
     3105        return 0;
     3106
     3107    if (!m_videoTracks)
     3108        m_videoTracks = VideoTrackList::create(this, ActiveDOMObject::scriptExecutionContext());
     3109
     3110    return m_videoTracks.get();
    30063111}
    30073112
     
    30213126        return;
    30223127   
    3023     addTextTrack(textTrack.get());
     3128    addTextTrack(textTrack.release());
    30243129   
    30253130    // Do not schedule the track loading until parsing finishes so we don't start before all tracks
     
    49235028#endif
    49245029#if ENABLE(VIDEO_TRACK)
     5030    info.addMember(m_audioTracks, "audioTracks");
    49255031    info.addMember(m_textTracks, "textTracks");
     5032    info.addMember(m_videoTracks, "videoTracks");
    49265033    info.addMember(m_textTracksWhenResourceSelectionBegan, "textTracksWhenResourceSelectionBegan");
    49275034    info.addMember(m_cueTree, "cueTree");
  • trunk/Source/WebCore/html/HTMLMediaElement.h

    r148305 r148785  
    4040
    4141#if ENABLE(VIDEO_TRACK)
     42#include "AudioTrack.h"
    4243#include "CaptionUserPreferences.h"
    4344#include "PODIntervalTree.h"
    4445#include "TextTrack.h"
    4546#include "TextTrackCue.h"
     47#include "VideoTrack.h"
    4648#endif
    4749
     
    7173
    7274#if ENABLE(VIDEO_TRACK)
     75class AudioTrackList;
     76class AudioTrackPrivate;
    7377class InbandTextTrackPrivate;
    7478class TextTrackList;
     79class VideoTrackList;
     80class VideoTrackPrivate;
    7581
    7682typedef PODIntervalTree<double, TextTrackCue*> CueIntervalTree;
     
    8591class HTMLMediaElement : public HTMLElement, public MediaPlayerClient, public MediaPlayerSupportsTypeClient, private MediaCanStartListener, public ActiveDOMObject, public MediaControllerInterface
    8692#if ENABLE(VIDEO_TRACK)
     93    , private AudioTrackClient
    8794    , private TextTrackClient
     95    , private VideoTrackClient
    8896#endif
    8997#if USE(PLATFORM_TEXT_TRACK_MENU)
     
    227235    PassRefPtr<TextTrack> addTextTrack(const String& kind, ExceptionCode& ec) { return addTextTrack(kind, emptyString(), emptyString(), ec); }
    228236
     237    AudioTrackList* audioTracks();
    229238    TextTrackList* textTracks();
     239    VideoTrackList* videoTracks();
     240
    230241    CueList currentlyActiveCues() const { return m_currentlyActiveCues; }
    231242
    232     void addTextTrack(TextTrack*);
     243    void addAudioTrack(PassRefPtr<AudioTrack>);
     244    void addTextTrack(PassRefPtr<TextTrack>);
     245    void addVideoTrack(PassRefPtr<VideoTrack>);
     246    void removeAudioTrack(AudioTrack*);
    233247    void removeTextTrack(TextTrack*);
     248    void removeVideoTrack(VideoTrack*);
    234249    void removeAllInbandTracks();
    235250    void closeCaptionTracksChanged();
     
    239254    virtual void didRemoveTextTrack(HTMLTrackElement*);
    240255
     256    virtual void mediaPlayerDidAddAudioTrack(PassRefPtr<AudioTrackPrivate>) OVERRIDE;
    241257    virtual void mediaPlayerDidAddTextTrack(PassRefPtr<InbandTextTrackPrivate>) OVERRIDE;
     258    virtual void mediaPlayerDidAddVideoTrack(PassRefPtr<VideoTrackPrivate>) OVERRIDE;
     259    virtual void mediaPlayerDidRemoveAudioTrack(PassRefPtr<AudioTrackPrivate>) OVERRIDE;
    242260    virtual void mediaPlayerDidRemoveTextTrack(PassRefPtr<InbandTextTrackPrivate>) OVERRIDE;
     261    virtual void mediaPlayerDidRemoveVideoTrack(PassRefPtr<VideoTrackPrivate>) OVERRIDE;
    243262
    244263#if USE(PLATFORM_TEXT_TRACK_MENU)
     
    275294    void configureTextTrackDisplay();
    276295    void updateTextTrackDisplay();
     296
     297    // AudioTrackClient
     298    virtual void audioTrackEnabledChanged(AudioTrack*);
    277299
    278300    // TextTrackClient
     
    284306    virtual void textTrackAddCue(TextTrack*, PassRefPtr<TextTrackCue>);
    285307    virtual void textTrackRemoveCue(TextTrack*, PassRefPtr<TextTrackCue>);
     308
     309    // VideoTrackClient
     310    virtual void videoTrackSelectedChanged(VideoTrack*);
    286311
    287312    bool requiresTextTrackRepresentation() const;
     
    700725    CaptionUserPreferences::CaptionDisplayMode m_captionDisplayMode;
    701726
     727    RefPtr<AudioTrackList> m_audioTracks;
    702728    RefPtr<TextTrackList> m_textTracks;
     729    RefPtr<VideoTrackList> m_videoTracks;
    703730    Vector<RefPtr<TextTrack> > m_textTracksWhenResourceSelectionBegan;
    704731
  • trunk/Source/WebCore/html/HTMLMediaElement.idl

    r148099 r148785  
    117117TextTrack addTextTrack(in DOMString kind, in [Optional] DOMString label, in [Optional] DOMString language)
    118118    raises (DOMException);
     119readonly attribute AudioTrackList audioTracks;
    119120readonly attribute TextTrackList textTracks;
     121readonly attribute VideoTrackList videoTracks;
    120122#endif
    121123
  • trunk/Source/WebCore/html/track/AudioTrack.idl

    r148784 r148785  
    11/*
    2  * Copyright (C) 2011 Apple Inc.  All rights reserved.
     2 * Copyright (C) 2011 Google Inc.  All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2424 */
    2525
    26 #ifndef JSTrackCustom_h
    27 #define JSTrackCustom_h
     26[
     27    Conditional=VIDEO_TRACK,
     28    GenerateIsReachable=ImplElementRoot,
     29    JSCustomMarkFunction
     30] interface AudioTrack {
     31    readonly attribute DOMString id;
     32    readonly attribute DOMString kind;
     33    readonly attribute DOMString label;
     34    readonly attribute DOMString language;
    2835
    29 #if ENABLE(VIDEO_TRACK)
    30 
    31 #include "JSDOMBinding.h"
    32 #include "TrackBase.h"
    33 
    34 namespace WebCore {
    35 
    36 TrackBase* toTrack(JSC::JSValue);
    37 JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TrackBase*);
    38 
    39 }
    40 
    41 #endif
    42 #endif
     36    attribute boolean enabled;
     37};
  • trunk/Source/WebCore/html/track/AudioTrackList.cpp

    r148784 r148785  
    2424 */
    2525
    26 #ifndef TextTrackList_h
    27 #define TextTrackList_h
     26#include "config.h"
    2827
    2928#if ENABLE(VIDEO_TRACK)
    3029
    31 #include "TrackListBase.h"
     30#include "AudioTrackList.h"
    3231
    33 namespace WebCore {
     32#include "AudioTrack.h"
     33#include "EventNames.h"
    3434
    35 class TextTrack;
     35using namespace WebCore;
    3636
    37 class TextTrackList : public TrackListBase {
    38 public:
    39     static PassRefPtr<TextTrackList> create(HTMLMediaElement* element, ScriptExecutionContext* context)
    40     {
    41         return adoptRef(new TextTrackList(element, context));
     37AudioTrackList::AudioTrackList(HTMLMediaElement* element, ScriptExecutionContext* context)
     38    : TrackListBase(element, context)
     39{
     40}
     41
     42AudioTrackList::~AudioTrackList()
     43{
     44}
     45
     46void AudioTrackList::append(PassRefPtr<AudioTrack> prpTrack)
     47{
     48    RefPtr<AudioTrack> track = prpTrack;
     49
     50    // Insert tracks in the media file order.
     51    size_t index = track->inbandTrackIndex();
     52    m_inbandTracks.insert(index, track);
     53
     54    ASSERT(!track->mediaElement() || track->mediaElement() == mediaElement());
     55    track->setMediaElement(mediaElement());
     56
     57    scheduleAddTrackEvent(track.release());
     58}
     59
     60AudioTrack* AudioTrackList::item(unsigned index) const
     61{
     62    if (index < m_inbandTracks.size())
     63        return toAudioTrack(m_inbandTracks[index].get());
     64
     65    return 0;
     66}
     67
     68AudioTrack* AudioTrackList::getTrackById(const AtomicString& id) const
     69{
     70    for (size_t i = 0; i < m_inbandTracks.size(); ++i) {
     71        AudioTrack* track = toAudioTrack(m_inbandTracks[i].get());
     72        if (track->id() == id)
     73            return track;
    4274    }
    43     ~TextTrackList();
     75    return 0;
     76}
    4477
    45     virtual unsigned length() const OVERRIDE;
    46     int getTrackIndex(TextTrack*);
    47     int getTrackIndexRelativeToRenderedTracks(TextTrack*);
    48     virtual bool contains(TrackBase*) const OVERRIDE;
    49 
    50     TextTrack* item(unsigned index);
    51     void append(PassRefPtr<TextTrack>);
    52     virtual void remove(TrackBase*) OVERRIDE;
    53 
    54     // EventTarget
    55     virtual const AtomicString& interfaceName() const;
    56 
    57 private:
    58     TextTrackList(HTMLMediaElement*, ScriptExecutionContext*);
    59 
    60     void invalidateTrackIndexesAfterTrack(TextTrack*);
    61 
    62     Vector<RefPtr<TrackBase> > m_addTrackTracks;
    63     Vector<RefPtr<TrackBase> > m_elementTracks;
    64 };
    65 
    66 } // namespace WebCore
     78const AtomicString& AudioTrackList::interfaceName() const
     79{
     80    return eventNames().interfaceForAudioTrackList;
     81}
    6782
    6883#endif
    69 #endif
  • trunk/Source/WebCore/html/track/AudioTrackList.h

    r148784 r148785  
    11/*
    2  * Copyright (C) 2011 Apple Inc.  All rights reserved.
     2 * Copyright (C) 2011, 2012 Apple Inc.  All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2424 */
    2525
    26 #include "config.h"
    27 #include "TrackBase.h"
     26#ifndef AudioTrackList_h
     27#define AudioTrackList_h
    2828
    2929#if ENABLE(VIDEO_TRACK)
    3030
     31#include "TrackListBase.h"
     32
    3133namespace WebCore {
    3234
    33 TrackBase::TrackBase(Type type, const AtomicString& label, const AtomicString& language)
    34     : m_mediaElement(0)
    35     , m_label(label)
    36     , m_language(language)
    37 {
    38     ASSERT(type != BaseTrack);
    39     m_type = type;
    40 }
     35class AudioTrack;
    4136
    42 TrackBase::~TrackBase()
    43 {
    44 }
     37class AudioTrackList : public TrackListBase {
     38public:
     39    static PassRefPtr<AudioTrackList> create(HTMLMediaElement* owner, ScriptExecutionContext* context)
     40    {
     41        return adoptRef(new AudioTrackList(owner, context));
     42    }
     43    ~AudioTrackList();
    4544
    46 void TrackBase::setKind(const AtomicString& kind)
    47 {
    48     String oldKind = m_kind;
     45    AudioTrack* getTrackById(const AtomicString&) const;
    4946
    50     if (isValidKind(kind))
    51         m_kind = kind;
    52     else
    53         m_kind = defaultKindKeyword();
    54 }
     47    AudioTrack* item(unsigned index) const;
     48    AudioTrack* lastItem() const { return item(length() - 1); }
     49    void append(PassRefPtr<AudioTrack>);
     50
     51    // EventTarget
     52    virtual const AtomicString& interfaceName() const OVERRIDE;
     53
     54private:
     55    AudioTrackList(HTMLMediaElement*, ScriptExecutionContext*);
     56};
    5557
    5658} // namespace WebCore
    5759
    5860#endif
     61#endif
  • trunk/Source/WebCore/html/track/AudioTrackList.idl

    r148784 r148785  
    2626[
    2727    Conditional=VIDEO_TRACK,
     28    GenerateIsReachable=ImplElementRoot,
    2829    IndexedGetter,
    2930    EventTarget,
    30     JSCustomMarkFunction,
    31     CustomIsReachable
    32 ] interface TextTrackList {
     31    JSCustomMarkFunction
     32] interface AudioTrackList {
    3333    readonly attribute unsigned long length;
    34     TextTrack item(in unsigned long index);
     34    AudioTrack item(in unsigned long index);
     35    AudioTrack getTrackById(in DOMString id);
    3536
     37    attribute EventListener onchange;
    3638    attribute EventListener onaddtrack;
    3739    attribute EventListener onremovetrack;
  • trunk/Source/WebCore/html/track/InbandTextTrack.cpp

    r148540 r148785  
    264264    TextTrack::removeCue(cue, ec);
    265265}
    266    
     266
     267void InbandTextTrack::willRemoveTextTrackPrivate(InbandTextTrackPrivate* trackPrivate)
     268{
     269    UNUSED_PARAM(trackPrivate);
     270    ASSERT(trackPrivate == m_private);
     271    mediaElement()->removeTextTrack(this);
     272}
     273
    267274} // namespace WebCore
    268275
  • trunk/Source/WebCore/html/track/InbandTextTrack.h

    r148540 r148785  
    8181    virtual void removeGenericCue(InbandTextTrackPrivate*, GenericCueData*) OVERRIDE;
    8282    virtual void removeCue(TextTrackCue*, ExceptionCode&) OVERRIDE;
     83    virtual void willRemoveTextTrackPrivate(InbandTextTrackPrivate*) OVERRIDE;
    8384
    8485    PassRefPtr<TextTrackCueGeneric> createCue(PassRefPtr<GenericCueData>);
  • trunk/Source/WebCore/html/track/LoadableTextTrack.cpp

    r147325 r148785  
    7171    if (!m_loadTimer.isActive())
    7272        m_loadTimer.startOneShot(0);
     73}
     74
     75Element* LoadableTextTrack::element()
     76{
     77    return m_trackElement;
    7378}
    7479
  • trunk/Source/WebCore/html/track/LoadableTextTrack.h

    r147325 r148785  
    6161    size_t trackElementIndex();
    6262    HTMLTrackElement* trackElement() { return m_trackElement; }
     63    virtual Element* element() OVERRIDE;
    6364
    6465    virtual bool isDefault() const OVERRIDE { return m_isDefault; }
  • trunk/Source/WebCore/html/track/TextTrack.idl

    r148593 r148785  
    2727    Conditional=VIDEO_TRACK,
    2828    EventTarget,
     29    GenerateIsReachable=ImplElementRoot,
    2930    JSCustomMarkFunction,
    30     CustomIsReachable,
    3131    SkipVTableValidation
    3232] interface TextTrack {
  • trunk/Source/WebCore/html/track/TextTrackList.cpp

    r148752 r148785  
    3131
    3232#include "EventNames.h"
     33#include "HTMLMediaElement.h"
    3334#include "InbandTextTrack.h"
    3435#include "InbandTextTrackPrivate.h"
     
    3839using namespace WebCore;
    3940
    40 TextTrackList::TextTrackList(HTMLMediaElement* owner, ScriptExecutionContext* context)
    41     : TrackListBase(owner, context)
     41TextTrackList::TextTrackList(HTMLMediaElement* element, ScriptExecutionContext* context)
     42    : TrackListBase(element, context)
    4243{
    4344}
     
    174175    invalidateTrackIndexesAfterTrack(track.get());
    175176
    176     ASSERT(!track->mediaElement() || track->mediaElement() == element());
    177     track->setMediaElement(element());
     177    ASSERT(!track->mediaElement() || track->mediaElement() == mediaElement());
     178    track->setMediaElement(mediaElement());
    178179
    179180    scheduleAddTrackEvent(track.release());
  • trunk/Source/WebCore/html/track/TextTrackList.h

    r148752 r148785  
    5353
    5454    // EventTarget
    55     virtual const AtomicString& interfaceName() const;
     55    virtual const AtomicString& interfaceName() const OVERRIDE;
    5656
    5757private:
  • trunk/Source/WebCore/html/track/TextTrackList.idl

    r148593 r148785  
    2626[
    2727    Conditional=VIDEO_TRACK,
     28    GenerateIsReachable=ImplElementRoot,
    2829    IndexedGetter,
    2930    EventTarget,
    30     JSCustomMarkFunction,
    31     CustomIsReachable
     31    JSCustomMarkFunction
    3232] interface TextTrackList {
    3333    readonly attribute unsigned long length;
  • trunk/Source/WebCore/html/track/TrackBase.cpp

    r148305 r148785  
    2727#include "TrackBase.h"
    2828
     29#include "HTMLMediaElement.h"
     30
    2931#if ENABLE(VIDEO_TRACK)
    3032
     
    4446}
    4547
     48Element* TrackBase::element()
     49{
     50    return m_mediaElement;
     51}
     52
    4653void TrackBase::setKind(const AtomicString& kind)
    4754{
  • trunk/Source/WebCore/html/track/TrackBase.h

    r148305 r148785  
    3434namespace WebCore {
    3535
     36class Element;
    3637class HTMLMediaElement;
    3738
     
    4546    void setMediaElement(HTMLMediaElement* element) { m_mediaElement = element; }
    4647    HTMLMediaElement* mediaElement() { return m_mediaElement; }
     48    virtual Element* element();
    4749
    4850    AtomicString kind() const { return m_kind; }
  • trunk/Source/WebCore/html/track/TrackListBase.cpp

    r148752 r148785  
    4949TrackListBase::~TrackListBase()
    5050{
     51}
     52
     53Element* TrackListBase::element() const
     54{
     55    return m_element;
    5156}
    5257
  • trunk/Source/WebCore/html/track/TrackListBase.h

    r148752 r148785  
    3939
    4040class HTMLMediaElement;
     41class Element;
    4142class TrackBase;
    4243
     
    6061
    6162    void clearElement() { m_element = 0; }
    62     HTMLMediaElement* element() const { return m_element; }
     63    Element* element() const;
     64    HTMLMediaElement* mediaElement() const { return m_element; }
    6365
    6466    bool isFiringEventListeners() { return m_dispatchingEvents; }
  • trunk/Source/WebCore/html/track/VideoTrack.idl

    r148784 r148785  
    11/*
    2  * Copyright (C) 2011 Apple Inc.  All rights reserved.
     2 * Copyright (C) 2011 Google Inc.  All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2424 */
    2525
    26 #ifndef JSTrackCustom_h
    27 #define JSTrackCustom_h
     26[
     27    Conditional=VIDEO_TRACK,
     28    GenerateIsReachable=ImplElementRoot,
     29    JSCustomMarkFunction
     30] interface VideoTrack {
     31    readonly attribute DOMString id;
     32    readonly attribute DOMString kind;
     33    readonly attribute DOMString label;
     34    readonly attribute DOMString language;
    2835
    29 #if ENABLE(VIDEO_TRACK)
    30 
    31 #include "JSDOMBinding.h"
    32 #include "TrackBase.h"
    33 
    34 namespace WebCore {
    35 
    36 TrackBase* toTrack(JSC::JSValue);
    37 JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TrackBase*);
    38 
    39 }
    40 
    41 #endif
    42 #endif
     36    attribute boolean selected;
     37};
  • trunk/Source/WebCore/html/track/VideoTrackList.h

    r148784 r148785  
    2424 */
    2525
    26 #ifndef TextTrackList_h
    27 #define TextTrackList_h
     26#ifndef VideoTrackList_h
     27#define VideoTrackList_h
    2828
    2929#if ENABLE(VIDEO_TRACK)
     
    3333namespace WebCore {
    3434
    35 class TextTrack;
     35class VideoTrack;
    3636
    37 class TextTrackList : public TrackListBase {
     37class VideoTrackList : public TrackListBase {
    3838public:
    39     static PassRefPtr<TextTrackList> create(HTMLMediaElement* element, ScriptExecutionContext* context)
     39    static PassRefPtr<VideoTrackList> create(HTMLMediaElement* owner, ScriptExecutionContext* context)
    4040    {
    41         return adoptRef(new TextTrackList(element, context));
     41        return adoptRef(new VideoTrackList(owner, context));
    4242    }
    43     ~TextTrackList();
     43    ~VideoTrackList();
    4444
    45     virtual unsigned length() const OVERRIDE;
    46     int getTrackIndex(TextTrack*);
    47     int getTrackIndexRelativeToRenderedTracks(TextTrack*);
    48     virtual bool contains(TrackBase*) const OVERRIDE;
     45    VideoTrack* getTrackById(const AtomicString&) const;
     46    long selectedIndex() const;
    4947
    50     TextTrack* item(unsigned index);
    51     void append(PassRefPtr<TextTrack>);
    52     virtual void remove(TrackBase*) OVERRIDE;
     48    VideoTrack* item(unsigned) const;
     49    VideoTrack* lastItem() const { return item(length() - 1); }
     50    void append(PassRefPtr<VideoTrack>);
    5351
    5452    // EventTarget
    55     virtual const AtomicString& interfaceName() const;
     53    virtual const AtomicString& interfaceName() const OVERRIDE;
    5654
    5755private:
    58     TextTrackList(HTMLMediaElement*, ScriptExecutionContext*);
     56    VideoTrackList(HTMLMediaElement*, ScriptExecutionContext*);
    5957
    60     void invalidateTrackIndexesAfterTrack(TextTrack*);
    61 
    62     Vector<RefPtr<TrackBase> > m_addTrackTracks;
    63     Vector<RefPtr<TrackBase> > m_elementTracks;
    6458};
    6559
  • trunk/Source/WebCore/html/track/VideoTrackList.idl

    r148784 r148785  
    2626[
    2727    Conditional=VIDEO_TRACK,
     28    GenerateIsReachable=ImplElementRoot,
    2829    IndexedGetter,
    2930    EventTarget,
    30     JSCustomMarkFunction,
    31     CustomIsReachable
    32 ] interface TextTrackList {
     31    JSCustomMarkFunction
     32] interface VideoTrackList {
    3333    readonly attribute unsigned long length;
    34     TextTrack item(in unsigned long index);
     34    VideoTrack item(in unsigned long index);
     35    VideoTrack getTrackById(in DOMString id);
    3536
     37    attribute EventListener onchange;
    3638    attribute EventListener onaddtrack;
    3739    attribute EventListener onremovetrack;
  • trunk/Source/WebCore/platform/graphics/AudioTrackPrivate.h

    r148784 r148785  
    2424 */
    2525
    26 #ifndef InbandTextTrackPrivate_h
    27 #define InbandTextTrackPrivate_h
     26#ifndef AudioTrackPrivate_h
     27#define AudioTrackPrivate_h
    2828
    2929#include <wtf/Forward.h>
     
    3636namespace WebCore {
    3737
    38 class InbandTextTrackPrivateClient;
     38class AudioTrackPrivate;
    3939
    40 class InbandTextTrackPrivate : public RefCounted<InbandTextTrackPrivate> {
    41     WTF_MAKE_NONCOPYABLE(InbandTextTrackPrivate); WTF_MAKE_FAST_ALLOCATED;
     40class AudioTrackPrivateClient {
    4241public:
    43     static PassRefPtr<InbandTextTrackPrivate> create()
     42    virtual ~AudioTrackPrivateClient() { }
     43    virtual void willRemoveAudioTrackPrivate(AudioTrackPrivate*) = 0;
     44};
     45
     46class AudioTrackPrivate : public RefCounted<AudioTrackPrivate> {
     47    WTF_MAKE_NONCOPYABLE(AudioTrackPrivate); WTF_MAKE_FAST_ALLOCATED;
     48public:
     49    static PassRefPtr<AudioTrackPrivate> create()
    4450    {
    45         return adoptRef(new InbandTextTrackPrivate());
     51        return adoptRef(new AudioTrackPrivate());
    4652    }
    47     virtual ~InbandTextTrackPrivate() { }
     53    virtual ~AudioTrackPrivate() { }
    4854
    49     void setClient(InbandTextTrackPrivateClient* client) { m_client = client; }
    50     InbandTextTrackPrivateClient* client() { return m_client; }
     55    void setClient(AudioTrackPrivateClient* client) { m_client = client; }
     56    AudioTrackPrivateClient* client() { return m_client; }
    5157
    52     enum Mode {
    53         Disabled,
    54         Hidden,
    55         Showing
    56     };
    57     virtual void setMode(Mode mode) { m_mode = mode; };
    58     virtual InbandTextTrackPrivate::Mode mode() const { return m_mode; }
     58    virtual void setEnabled(bool enabled) { m_enabled = enabled; };
     59    virtual bool enabled() const { return m_enabled; }
    5960
    60     enum Kind {
    61         Subtitles,
    62         Captions,
    63         Descriptions,
    64         Chapters,
    65         Metadata,
    66         Forced,
    67         None
    68     };
    69     virtual Kind kind() const { return Subtitles; }
    70     virtual bool isClosedCaptions() const { return false; }
    71     virtual bool containsOnlyForcedSubtitles() const { return false; }
    72     virtual bool isMainProgramContent() const { return true; }
    73     virtual bool isEasyToRead() const { return false; }
     61    enum Kind { Alternative, Description, Main, MainDesc, Translation, Commentary, None };
     62    virtual Kind kind() const { return None; }
    7463
     64    virtual AtomicString id() const { return emptyAtom; }
    7565    virtual AtomicString label() const { return emptyAtom; }
    7666    virtual AtomicString language() const { return emptyAtom; }
    77     virtual bool isDefault() const { return false; }
    7867
    79     virtual int textTrackIndex() const { return 0; }
     68    virtual int audioTrackIndex() const { return 0; }
     69
     70    void willBeRemoved()
     71    {
     72        if (m_client)
     73            m_client->willRemoveAudioTrackPrivate(this);
     74    }
    8075
    8176protected:
    82     InbandTextTrackPrivate()
    83         : m_client(0)
    84         , m_mode(Disabled)
     77    AudioTrackPrivate()
     78        : m_enabled(false)
    8579    {
    8680    }
    8781
    8882private:
    89     InbandTextTrackPrivateClient* m_client;
    90     Mode m_mode;
     83    AudioTrackPrivateClient* m_client;
     84    bool m_enabled;
    9185};
    9286
  • trunk/Source/WebCore/platform/graphics/InbandTextTrackPrivate.h

    r148285 r148785  
    2727#define InbandTextTrackPrivate_h
    2828
     29#if ENABLE(VIDEO_TRACK)
     30
     31#include "InbandTextTrackPrivateClient.h"
    2932#include <wtf/Forward.h>
    3033#include <wtf/Noncopyable.h>
     
    3235#include <wtf/text/AtomicString.h>
    3336
    34 #if ENABLE(VIDEO_TRACK)
    35 
    3637namespace WebCore {
    37 
    38 class InbandTextTrackPrivateClient;
    3938
    4039class InbandTextTrackPrivate : public RefCounted<InbandTextTrackPrivate> {
     
    7978    virtual int textTrackIndex() const { return 0; }
    8079
     80    void willBeRemoved()
     81    {
     82        if (m_client)
     83            m_client->willRemoveTextTrackPrivate(this);
     84    }
     85
    8186protected:
    8287    InbandTextTrackPrivate()
  • trunk/Source/WebCore/platform/graphics/InbandTextTrackPrivateClient.h

    r148540 r148785  
    129129public:
    130130    virtual ~InbandTextTrackPrivateClient() { }
    131    
     131
    132132    virtual void addGenericCue(InbandTextTrackPrivate*, PassRefPtr<GenericCueData>) = 0;
    133133    virtual void updateGenericCue(InbandTextTrackPrivate*, GenericCueData*) = 0;
    134134    virtual void removeGenericCue(InbandTextTrackPrivate*, GenericCueData*) = 0;
     135
     136    virtual void willRemoveTextTrackPrivate(InbandTextTrackPrivate*) = 0;
    135137};
    136138
  • trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp

    r148305 r148785  
    11041104
    11051105#if ENABLE(VIDEO_TRACK)
    1106 void MediaPlayer::addTextTrack(PassRefPtr<InbandTextTrackPrivate> track)
     1106void MediaPlayer::addAudioTrack(PassRefPtr<AudioTrackPrivate> track)
    11071107{
    11081108    if (!m_mediaPlayerClient)
    11091109        return;
    11101110
    1111     m_mediaPlayerClient->mediaPlayerDidAddTextTrack(track);
    1112 }
    1113 
    1114 void MediaPlayer::removeTextTrack(PassRefPtr<InbandTextTrackPrivate> track)
     1111    m_mediaPlayerClient->mediaPlayerDidAddAudioTrack(track);
     1112}
     1113
     1114void MediaPlayer::removeAudioTrack(PassRefPtr<AudioTrackPrivate> track)
    11151115{
    11161116    if (!m_mediaPlayerClient)
    11171117        return;
    11181118
     1119    m_mediaPlayerClient->mediaPlayerDidRemoveAudioTrack(track);
     1120}
     1121
     1122void MediaPlayer::addTextTrack(PassRefPtr<InbandTextTrackPrivate> track)
     1123{
     1124    if (!m_mediaPlayerClient)
     1125        return;
     1126
     1127    m_mediaPlayerClient->mediaPlayerDidAddTextTrack(track);
     1128}
     1129
     1130void MediaPlayer::removeTextTrack(PassRefPtr<InbandTextTrackPrivate> track)
     1131{
     1132    if (!m_mediaPlayerClient)
     1133        return;
     1134
    11191135    m_mediaPlayerClient->mediaPlayerDidRemoveTextTrack(track);
     1136}
     1137
     1138void MediaPlayer::addVideoTrack(PassRefPtr<VideoTrackPrivate> track)
     1139{
     1140    if (!m_mediaPlayerClient)
     1141        return;
     1142
     1143    m_mediaPlayerClient->mediaPlayerDidAddVideoTrack(track);
     1144}
     1145
     1146void MediaPlayer::removeVideoTrack(PassRefPtr<VideoTrackPrivate> track)
     1147{
     1148    if (!m_mediaPlayerClient)
     1149        return;
     1150
     1151    m_mediaPlayerClient->mediaPlayerDidRemoveVideoTrack(track);
    11201152}
    11211153
  • trunk/Source/WebCore/platform/graphics/MediaPlayer.h

    r148636 r148785  
    3333#endif
    3434
     35#include "AudioTrackPrivate.h"
    3536#include "InbandTextTrackPrivate.h"
    3637#include "IntRect.h"
     
    3839#include "LayoutRect.h"
    3940#include "Timer.h"
     41#include "VideoTrackPrivate.h"
    4042#include <wtf/Forward.h>
    4143#include <wtf/HashSet.h>
     
    219221
    220222#if ENABLE(VIDEO_TRACK)
     223    virtual void mediaPlayerDidAddAudioTrack(PassRefPtr<AudioTrackPrivate>) { }
    221224    virtual void mediaPlayerDidAddTextTrack(PassRefPtr<InbandTextTrackPrivate>) { }
     225    virtual void mediaPlayerDidAddVideoTrack(PassRefPtr<VideoTrackPrivate>) { }
     226    virtual void mediaPlayerDidRemoveAudioTrack(PassRefPtr<AudioTrackPrivate>) { }
    222227    virtual void mediaPlayerDidRemoveTextTrack(PassRefPtr<InbandTextTrackPrivate>) { }
     228    virtual void mediaPlayerDidRemoveVideoTrack(PassRefPtr<VideoTrackPrivate>) { }
    223229
    224230    virtual void textTrackRepresentationBoundsChanged(const IntRect&) { }
     
    451457
    452458#if ENABLE(VIDEO_TRACK)
     459    void addAudioTrack(PassRefPtr<AudioTrackPrivate>);
    453460    void addTextTrack(PassRefPtr<InbandTextTrackPrivate>);
     461    void addVideoTrack(PassRefPtr<VideoTrackPrivate>);
     462    void removeAudioTrack(PassRefPtr<AudioTrackPrivate>);
    454463    void removeTextTrack(PassRefPtr<InbandTextTrackPrivate>);
     464    void removeVideoTrack(PassRefPtr<VideoTrackPrivate>);
    455465
    456466    bool requiresTextTrackRepresentation() const;
  • trunk/Source/WebCore/platform/graphics/VideoTrackPrivate.h

    r148784 r148785  
    2424 */
    2525
    26 #ifndef InbandTextTrackPrivate_h
    27 #define InbandTextTrackPrivate_h
     26#ifndef VideoTrackPrivate_h
     27#define VideoTrackPrivate_h
    2828
    2929#include <wtf/Forward.h>
     
    3636namespace WebCore {
    3737
    38 class InbandTextTrackPrivateClient;
     38class VideoTrackPrivate;
    3939
    40 class InbandTextTrackPrivate : public RefCounted<InbandTextTrackPrivate> {
    41     WTF_MAKE_NONCOPYABLE(InbandTextTrackPrivate); WTF_MAKE_FAST_ALLOCATED;
     40class VideoTrackPrivateClient {
    4241public:
    43     static PassRefPtr<InbandTextTrackPrivate> create()
     42    virtual ~VideoTrackPrivateClient() { }
     43    virtual void willRemoveVideoTrackPrivate(VideoTrackPrivate*) = 0;
     44};
     45
     46class VideoTrackPrivate : public RefCounted<VideoTrackPrivate> {
     47    WTF_MAKE_NONCOPYABLE(VideoTrackPrivate); WTF_MAKE_FAST_ALLOCATED;
     48public:
     49    static PassRefPtr<VideoTrackPrivate> create()
    4450    {
    45         return adoptRef(new InbandTextTrackPrivate());
     51        return adoptRef(new VideoTrackPrivate());
    4652    }
    47     virtual ~InbandTextTrackPrivate() { }
     53    virtual ~VideoTrackPrivate() { }
    4854
    49     void setClient(InbandTextTrackPrivateClient* client) { m_client = client; }
    50     InbandTextTrackPrivateClient* client() { return m_client; }
     55    void setClient(VideoTrackPrivateClient* client) { m_client = client; }
     56    VideoTrackPrivateClient* client() { return m_client; }
    5157
    52     enum Mode {
    53         Disabled,
    54         Hidden,
    55         Showing
    56     };
    57     virtual void setMode(Mode mode) { m_mode = mode; };
    58     virtual InbandTextTrackPrivate::Mode mode() const { return m_mode; }
     58    virtual void setSelected(bool selected) { m_selected = selected; };
     59    virtual bool selected() const { return m_selected; }
    5960
    60     enum Kind {
    61         Subtitles,
    62         Captions,
    63         Descriptions,
    64         Chapters,
    65         Metadata,
    66         Forced,
    67         None
    68     };
    69     virtual Kind kind() const { return Subtitles; }
    70     virtual bool isClosedCaptions() const { return false; }
    71     virtual bool containsOnlyForcedSubtitles() const { return false; }
    72     virtual bool isMainProgramContent() const { return true; }
    73     virtual bool isEasyToRead() const { return false; }
     61    enum Kind { Alternative, Captions, Main, Sign, Subtitles, Commentary, None };
     62    virtual Kind kind() const { return None; }
    7463
     64    virtual AtomicString id() const { return emptyAtom; }
    7565    virtual AtomicString label() const { return emptyAtom; }
    7666    virtual AtomicString language() const { return emptyAtom; }
    77     virtual bool isDefault() const { return false; }
    7867
    79     virtual int textTrackIndex() const { return 0; }
     68    virtual int videoTrackIndex() const { return 0; }
     69
     70    void willBeRemoved()
     71    {
     72        if (m_client)
     73            m_client->willRemoveVideoTrackPrivate(this);
     74    }
    8075
    8176protected:
    82     InbandTextTrackPrivate()
    83         : m_client(0)
    84         , m_mode(Disabled)
     77    VideoTrackPrivate()
     78        : m_selected(false)
    8579    {
    8680    }
    8781
    8882private:
    89     InbandTextTrackPrivateClient* m_client;
    90     Mode m_mode;
     83    VideoTrackPrivateClient* m_client;
     84    bool m_selected;
    9185};
    9286
Note: See TracChangeset for help on using the changeset viewer.