Changeset 94121 in webkit


Ignore:
Timestamp:
Aug 30, 2011 4:15:56 PM (13 years ago)
Author:
commit-queue@webkit.org
Message:

Add MediaSource API to HTMLMediaElement
https://bugs.webkit.org/show_bug.cgi?id=64731

Patch by Aaron Colwell <acolwell@chromium.org> on 2011-08-30
Reviewed by Eric Carlson.

.:

  • configure.ac:

Source/JavaScriptCore:

  • Configurations/FeatureDefines.xcconfig:

Source/WebCore:

Tests: http/tests/media/media-source/webm/video-media-source-errors.html

http/tests/media/media-source/webm/video-media-source-play.html
http/tests/media/media-source/webm/video-media-source-seek.html
http/tests/media/media-source/webm/video-media-source-state-changes.html

  • Configurations/FeatureDefines.xcconfig:
  • GNUmakefile.am:
  • dom/EventNames.h:
  • features.pri:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement): Added initializers for new member variables.
(WebCore::HTMLMediaElement::prepareForLoad): Close the media source before starting a new load.
(WebCore::HTMLMediaElement::loadResource):

Fail loading if the media source url from another media element is used.

(WebCore::HTMLMediaElement::mediaEngineError):

Make sure the source is in the closed state before firing an emptied event.

(WebCore::HTMLMediaElement::mediaPlayerSourceOpened):

New method called by WebCore::MediaPlayer to signal when the source is open.

(WebCore::HTMLMediaElement::mediaPlayerSourceURL):

New method called by the WebCore::MediaPlayer to determine what the media source URL is for this
HTMLMediaElement instance.

(WebCore::HTMLMediaElement::seek):

Disabled noSeekRequired optimization if a media source is open and resets the source state to SOURCE_OPEN if
it was in the SOURCE_ENDED state when seek() was called.

(WebCore::HTMLMediaElement::webkitSourceAppend):

New method for passing media data from JavaScript to the WebCore::MediaPlayer.

(WebCore::HTMLMediaElement::webkitSourceEndOfStream):

New method that allows JavaScript to signal the end of the stream.

(WebCore::HTMLMediaElement::webkitSourceState): New method allowing JavaScript to read the current source state.
(WebCore::HTMLMediaElement::setSourceState): New method for updating the current source state.
(WebCore::HTMLMediaElement::userCancelledLoad):

Transitions an open source to the closed state before firing an emptied event.

  • html/HTMLMediaElement.h:

(WebCore::HTMLMediaElement::webkitMediaSourceURL):

New method providing the media source URL to JavaScript for this HTMLMediaElement instance.

  • html/HTMLMediaElement.idl: Added new methods, attributes, and constants for the media source api.
  • platform/graphics/MediaPlayer.cpp:

(WebCore::NullMediaPlayerPrivate::sourceAppend):

Stub implementation of new WebCore::MediaPlayerPrivateInterface::sourceAppend.

(WebCore::NullMediaPlayerPrivate::sourceEndOfStream):

Stub implementation of new WebCore::MediaPlayerPrivateInterface::sourceEndOfStream.

(WebCore::MediaPlayer::sourceAppend): New method for receiving media data from WebCore::HTMLMediaElement.
(WebCore::MediaPlayer::sourceEndOfStream): New method for receiving end of stream from WebCore::HTMLMediaElement.
(WebCore::MediaPlayer::sourceOpened):

New method called by the MediaPlayerPrivate object to notify the MediaPlayer when the source has opened.

(WebCore::MediaPlayer::sourceURL):

New method called by the MediaPlayerPrivate implementation to get the media source URL from the MediaPlayer.

  • platform/graphics/MediaPlayer.h:

(WebCore::MediaPlayerClient::mediaPlayerSourceOpened):

Interface method used by the MediaPlayer to tell the HTMLMediaElement when the media source has been opened.

(WebCore::MediaPlayerClient::mediaPlayerSourceURL):

Interface method used by the MediaPlayer to get the media source URL from the HTMLMediaElement.

  • platform/graphics/MediaPlayerPrivate.h:

(WebCore::MediaPlayerPrivateInterface::sourceAppend):

Interface method used by the MediaPlayer to pass media data to the MediaPlayerPrivate object.

(WebCore::MediaPlayerPrivateInterface::sourceEndOfStream):

Interface method used by the MediaPlayer to pass end of stream information to the MediaPlayerPrivate object.

Source/WebKit/chromium:

  • public/WebMediaPlayer.h:

(WebKit::WebMediaPlayer::sourceAppend):
(WebKit::WebMediaPlayer::sourceEndOfStream):

  • public/WebMediaPlayerClient.h:
  • src/WebMediaPlayerClientImpl.cpp:

(WebKit::WebMediaPlayerClientImpl::sourceOpened):
(WebKit::WebMediaPlayerClientImpl::sourceURL):
(WebKit::WebMediaPlayerClientImpl::sourceAppend):
(WebKit::WebMediaPlayerClientImpl::sourceEndOfStream):

  • src/WebMediaPlayerClientImpl.h:

Source/WebKit/mac:

  • Configurations/FeatureDefines.xcconfig:

Source/WebKit2:

  • Configurations/FeatureDefines.xcconfig:

Tools:

  • Scripts/build-webkit:

WebKitLibraries:

  • win/tools/vsprops/FeatureDefines.vsprops:
  • win/tools/vsprops/FeatureDefinesCairo.vsprops:

LayoutTests:

  • http/tests/media/media-source/webm/video-media-source-errors-expected.txt: Added.
  • http/tests/media/media-source/webm/video-media-source-errors.html: Added.
  • http/tests/media/media-source/webm/video-media-source-play-expected.txt: Added.
  • http/tests/media/media-source/webm/video-media-source-play.html: Added.
  • http/tests/media/media-source/webm/video-media-source-seek-expected.txt: Added.
  • http/tests/media/media-source/webm/video-media-source-seek.html: Added.
  • http/tests/media/media-source/webm/video-media-source-state-changes-expected.txt: Added.
  • http/tests/media/media-source/webm/video-media-source-state-changes.html: Added.
  • http/tests/media/media-source/webm/webm-media-source.js: Added.

(getData):
(getHeaders):
(getClusterCount):
(getCluster):
(getClusterTimeForIndex):
(getClusterIndexForTimestamp):
(setSrcToMediaSourceURL):
(appendHeaders):
(appendCluster):
(appendUntilEndOfStream):
(logSourceState):
(getSourceStateName):
(expectSourceState):

  • http/tests/media/resources/media-source/webm/test.webm: Added.
  • http/tests/media/resources/media-source/webm/test.webm.cluster-0: Added.
  • http/tests/media/resources/media-source/webm/test.webm.cluster-1: Added.
  • http/tests/media/resources/media-source/webm/test.webm.cluster-10: Added.
  • http/tests/media/resources/media-source/webm/test.webm.cluster-11: Added.
  • http/tests/media/resources/media-source/webm/test.webm.cluster-12: Added.
  • http/tests/media/resources/media-source/webm/test.webm.cluster-13: Added.
  • http/tests/media/resources/media-source/webm/test.webm.cluster-14: Added.
  • http/tests/media/resources/media-source/webm/test.webm.cluster-15: Added.
  • http/tests/media/resources/media-source/webm/test.webm.cluster-2: Added.
  • http/tests/media/resources/media-source/webm/test.webm.cluster-3: Added.
  • http/tests/media/resources/media-source/webm/test.webm.cluster-4: Added.
  • http/tests/media/resources/media-source/webm/test.webm.cluster-5: Added.
  • http/tests/media/resources/media-source/webm/test.webm.cluster-6: Added.
  • http/tests/media/resources/media-source/webm/test.webm.cluster-7: Added.
  • http/tests/media/resources/media-source/webm/test.webm.cluster-8: Added.
  • http/tests/media/resources/media-source/webm/test.webm.cluster-9: Added.
  • http/tests/media/resources/media-source/webm/test.webm.headers: Added.
  • platform/chromium/test_expectations.txt:
  • platform/gtk/Skipped:
  • platform/mac/Skipped:
  • platform/qt/Skipped:
  • platform/win/Skipped:
Location:
trunk
Files:
31 added
35 edited

Legend:

Unmodified
Added
Removed
  • trunk/ChangeLog

    r94056 r94121  
     12011-08-30  Aaron Colwell  <acolwell@chromium.org>
     2
     3        Add MediaSource API to HTMLMediaElement
     4        https://bugs.webkit.org/show_bug.cgi?id=64731
     5
     6        Reviewed by Eric Carlson.
     7
     8        * configure.ac:
     9
    1102011-08-30  Ryosuke Niwa  <rniwa@webkit.org>
    211
  • trunk/LayoutTests/ChangeLog

    r94120 r94121  
     12011-08-30  Aaron Colwell  <acolwell@chromium.org>
     2
     3        Add MediaSource API to HTMLMediaElement
     4        https://bugs.webkit.org/show_bug.cgi?id=64731
     5
     6        Reviewed by Eric Carlson.
     7
     8        * http/tests/media/media-source/webm/video-media-source-errors-expected.txt: Added.
     9        * http/tests/media/media-source/webm/video-media-source-errors.html: Added.
     10        * http/tests/media/media-source/webm/video-media-source-play-expected.txt: Added.
     11        * http/tests/media/media-source/webm/video-media-source-play.html: Added.
     12        * http/tests/media/media-source/webm/video-media-source-seek-expected.txt: Added.
     13        * http/tests/media/media-source/webm/video-media-source-seek.html: Added.
     14        * http/tests/media/media-source/webm/video-media-source-state-changes-expected.txt: Added.
     15        * http/tests/media/media-source/webm/video-media-source-state-changes.html: Added.
     16        * http/tests/media/media-source/webm/webm-media-source.js: Added.
     17        (getData):
     18        (getHeaders):
     19        (getClusterCount):
     20        (getCluster):
     21        (getClusterTimeForIndex):
     22        (getClusterIndexForTimestamp):
     23        (setSrcToMediaSourceURL):
     24        (appendHeaders):
     25        (appendCluster):
     26        (appendUntilEndOfStream):
     27        (logSourceState):
     28        (getSourceStateName):
     29        (expectSourceState):
     30        * http/tests/media/resources/media-source/webm/test.webm: Added.
     31        * http/tests/media/resources/media-source/webm/test.webm.cluster-0: Added.
     32        * http/tests/media/resources/media-source/webm/test.webm.cluster-1: Added.
     33        * http/tests/media/resources/media-source/webm/test.webm.cluster-10: Added.
     34        * http/tests/media/resources/media-source/webm/test.webm.cluster-11: Added.
     35        * http/tests/media/resources/media-source/webm/test.webm.cluster-12: Added.
     36        * http/tests/media/resources/media-source/webm/test.webm.cluster-13: Added.
     37        * http/tests/media/resources/media-source/webm/test.webm.cluster-14: Added.
     38        * http/tests/media/resources/media-source/webm/test.webm.cluster-15: Added.
     39        * http/tests/media/resources/media-source/webm/test.webm.cluster-2: Added.
     40        * http/tests/media/resources/media-source/webm/test.webm.cluster-3: Added.
     41        * http/tests/media/resources/media-source/webm/test.webm.cluster-4: Added.
     42        * http/tests/media/resources/media-source/webm/test.webm.cluster-5: Added.
     43        * http/tests/media/resources/media-source/webm/test.webm.cluster-6: Added.
     44        * http/tests/media/resources/media-source/webm/test.webm.cluster-7: Added.
     45        * http/tests/media/resources/media-source/webm/test.webm.cluster-8: Added.
     46        * http/tests/media/resources/media-source/webm/test.webm.cluster-9: Added.
     47        * http/tests/media/resources/media-source/webm/test.webm.headers: Added.
     48        * platform/chromium/test_expectations.txt:
     49        * platform/gtk/Skipped:
     50        * platform/mac/Skipped:
     51        * platform/qt/Skipped:
     52        * platform/win/Skipped:
     53
    1542011-08-30  Abhishek Arya  <inferno@chromium.org>
    255
  • trunk/LayoutTests/platform/chromium/test_expectations.txt

    r94116 r94121  
    6969// Tests for WebVTT parser for <track>.  Feature is not yet functional.
    7070BUGWK43668 SKIP : media/track/ = TIMEOUT
     71
     72// Tests for MediaSource API. Feature is not yet functional.
     73BUGWK64731 SKIP : http/tests/media/media-source/ = TIMEOUT
    7174
    7275// Chrome does not support WebArchives yet.
  • trunk/LayoutTests/platform/gtk/Skipped

    r93904 r94121  
    415415# https://bugs.webkit.org/show_bug.cgi?id=43668
    416416media/track/
     417
     418# Tests for MediaSource API. Feature is not yet functional.
     419# https://bugs.webkit.org/show_bug.cgi?id=64731
     420http/tests/media/media-source/
    417421
    418422# Tests that require ENABLE(DOWNLOAD_ATTRIBUTE).
  • trunk/LayoutTests/platform/mac/Skipped

    r94105 r94121  
    400400media/track/
    401401
     402# Tests for MediaSource API. Feature is not yet functional.
     403# https://bugs.webkit.org/show_bug.cgi?id=64731
     404http/tests/media/media-source/
     405
    402406# REGRESSION (r91547): scrollbars/scrollbar-drag-thumb-with-large-content.html failing on SnowLeopard Intel Release (Tests)
    403407# https://bugs.webkit.org/show_bug.cgi?id=65434
  • trunk/LayoutTests/platform/qt/Skipped

    r94073 r94121  
    199199# https://bugs.webkit.org/show_bug.cgi?id=43668
    200200media/track/
     201
     202# Tests for MediaSource API. Feature is not yet functional.
     203# https://bugs.webkit.org/show_bug.cgi?id=64731
     204http/tests/media/media-source/
    201205
    202206# Font feature settings is not implemented.
  • trunk/LayoutTests/platform/win/Skipped

    r94105 r94121  
    13901390media/track/
    13911391
     1392# Tests for MediaSource API. Feature is not yet functional.
     1393# https://bugs.webkit.org/show_bug.cgi?id=64731
     1394http/tests/media/media-source/
     1395
    13921396# Font feature settings is not implemented.
    13931397css3/font-feature-settings-rendering.html
  • trunk/Source/JavaScriptCore/ChangeLog

    r94095 r94121  
     12011-08-30  Aaron Colwell  <acolwell@chromium.org>
     2
     3        Add MediaSource API to HTMLMediaElement
     4        https://bugs.webkit.org/show_bug.cgi?id=64731
     5
     6        Reviewed by Eric Carlson.
     7
     8        * Configurations/FeatureDefines.xcconfig:
     9
    1102011-08-30  Oliver Hunt  <oliver@apple.com>
    211
  • trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig

    r92333 r94121  
    7373ENABLE_LINK_PREFETCH = ;
    7474ENABLE_MATHML = ENABLE_MATHML;
     75ENABLE_MEDIA_SOURCE = ;
    7576ENABLE_MEDIA_STATISTICS = ;
    7677ENABLE_METER_TAG = ENABLE_METER_TAG;
     
    101102ENABLE_XSLT = ENABLE_XSLT;
    102103
    103 FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ANIMATION_API) $(ENABLE_BLOB) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CLIENT_BASED_GEOLOCATION) $(ENABLE_CSS3_FLEXBOX) $(ENABLE_CSS_EXCLUSIONS) $(ENABLE_CSS_REGIONS) $(ENABLE_DATABASE) $(ENABLE_DATALIST) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DIRECTORY_UPLOAD) $(ENABLE_DOM_STORAGE) $(ENABLE_EVENTSOURCE) $(ENABLE_FILE_SYSTEM) $(ENABLE_FILTERS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INPUT_COLOR) $(ENABLE_INPUT_SPEECH) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_LINK_PREFETCH) $(ENABLE_MATHML) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_TAG) $(ENABLE_NOTIFICATIONS) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PROGRESS_TAG) $(ENABLE_QUOTA) $(ENABLE_REGISTER_PROTOCOL_HANDLER) $(ENABLE_SHARED_WORKERS) $(ENABLE_SVG) $(ENABLE_SVG_ANIMATION) $(ENABLE_SVG_AS_IMAGE) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_FOREIGN_OBJECT) $(ENABLE_SVG_USE) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WORKERS) $(ENABLE_XHTMLMP) $(ENABLE_XPATH) $(ENABLE_XSLT);
     104FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ANIMATION_API) $(ENABLE_BLOB) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CLIENT_BASED_GEOLOCATION) $(ENABLE_CSS3_FLEXBOX) $(ENABLE_CSS_EXCLUSIONS) $(ENABLE_CSS_REGIONS) $(ENABLE_DATABASE) $(ENABLE_DATALIST) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DIRECTORY_UPLOAD) $(ENABLE_DOM_STORAGE) $(ENABLE_EVENTSOURCE) $(ENABLE_FILE_SYSTEM) $(ENABLE_FILTERS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INPUT_COLOR) $(ENABLE_INPUT_SPEECH) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_LINK_PREFETCH) $(ENABLE_MATHML) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_TAG) $(ENABLE_NOTIFICATIONS) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PROGRESS_TAG) $(ENABLE_QUOTA) $(ENABLE_REGISTER_PROTOCOL_HANDLER) $(ENABLE_SHARED_WORKERS) $(ENABLE_SVG) $(ENABLE_SVG_ANIMATION) $(ENABLE_SVG_AS_IMAGE) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_FOREIGN_OBJECT) $(ENABLE_SVG_USE) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WORKERS) $(ENABLE_XHTMLMP) $(ENABLE_XPATH) $(ENABLE_XSLT);
  • trunk/Source/WebCore/ChangeLog

    r94119 r94121  
     12011-08-30  Aaron Colwell  <acolwell@chromium.org>
     2
     3        Add MediaSource API to HTMLMediaElement
     4        https://bugs.webkit.org/show_bug.cgi?id=64731
     5
     6        Reviewed by Eric Carlson.
     7
     8        Tests: http/tests/media/media-source/webm/video-media-source-errors.html
     9               http/tests/media/media-source/webm/video-media-source-play.html
     10               http/tests/media/media-source/webm/video-media-source-seek.html
     11               http/tests/media/media-source/webm/video-media-source-state-changes.html
     12
     13        * Configurations/FeatureDefines.xcconfig:
     14        * GNUmakefile.am:
     15        * dom/EventNames.h:
     16        * features.pri:
     17        * html/HTMLMediaElement.cpp:
     18        (WebCore::HTMLMediaElement::HTMLMediaElement): Added initializers for new member variables.
     19        (WebCore::HTMLMediaElement::prepareForLoad): Close the media source before starting a new load.
     20        (WebCore::HTMLMediaElement::loadResource):
     21            Fail loading if the media source url from another media element is used.
     22        (WebCore::HTMLMediaElement::mediaEngineError):
     23            Make sure the source is in the closed state before firing an emptied event.
     24        (WebCore::HTMLMediaElement::mediaPlayerSourceOpened):
     25            New method called by WebCore::MediaPlayer to signal when the source is open.
     26        (WebCore::HTMLMediaElement::mediaPlayerSourceURL):
     27            New method called by the WebCore::MediaPlayer to determine what the media source URL is for this
     28            HTMLMediaElement instance.
     29        (WebCore::HTMLMediaElement::seek):
     30            Disabled noSeekRequired optimization if a media source is open and resets the source state to SOURCE_OPEN if
     31            it was in the SOURCE_ENDED state when seek() was called.
     32        (WebCore::HTMLMediaElement::webkitSourceAppend):
     33            New method for passing media data from JavaScript to the WebCore::MediaPlayer.
     34        (WebCore::HTMLMediaElement::webkitSourceEndOfStream):
     35            New method that allows JavaScript to signal the end of the stream.
     36        (WebCore::HTMLMediaElement::webkitSourceState): New method allowing JavaScript to read the current source state.
     37        (WebCore::HTMLMediaElement::setSourceState): New method for updating the current source state.
     38        (WebCore::HTMLMediaElement::userCancelledLoad):
     39            Transitions an open source to the closed state before firing an emptied event.
     40        * html/HTMLMediaElement.h:
     41        (WebCore::HTMLMediaElement::webkitMediaSourceURL):
     42            New method providing the media source URL to JavaScript for this HTMLMediaElement instance.
     43        * html/HTMLMediaElement.idl: Added new methods, attributes, and constants for the media source api.
     44        * platform/graphics/MediaPlayer.cpp:
     45        (WebCore::NullMediaPlayerPrivate::sourceAppend):
     46            Stub implementation of new WebCore::MediaPlayerPrivateInterface::sourceAppend.
     47        (WebCore::NullMediaPlayerPrivate::sourceEndOfStream):
     48            Stub implementation of new WebCore::MediaPlayerPrivateInterface::sourceEndOfStream.
     49        (WebCore::MediaPlayer::sourceAppend): New method for receiving media data from WebCore::HTMLMediaElement.
     50        (WebCore::MediaPlayer::sourceEndOfStream): New method for receiving end of stream from WebCore::HTMLMediaElement.
     51        (WebCore::MediaPlayer::sourceOpened):
     52            New method called by the MediaPlayerPrivate object to notify the MediaPlayer when the source has opened.
     53        (WebCore::MediaPlayer::sourceURL):
     54            New method called by the MediaPlayerPrivate implementation to get the media source URL from the MediaPlayer.
     55        * platform/graphics/MediaPlayer.h:
     56        (WebCore::MediaPlayerClient::mediaPlayerSourceOpened):
     57            Interface method used by the MediaPlayer to tell the HTMLMediaElement when the media source has been opened.
     58        (WebCore::MediaPlayerClient::mediaPlayerSourceURL):
     59            Interface method used by the MediaPlayer to get the media source URL from the HTMLMediaElement.
     60        * platform/graphics/MediaPlayerPrivate.h:
     61        (WebCore::MediaPlayerPrivateInterface::sourceAppend):
     62            Interface method used by the MediaPlayer to pass media data to the MediaPlayerPrivate object.
     63        (WebCore::MediaPlayerPrivateInterface::sourceEndOfStream):
     64            Interface method used by the MediaPlayer to pass end of stream information to the MediaPlayerPrivate object.
     65
    1662011-08-30  Sam Weinig  <sam@webkit.org>
    267
  • trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig

    r93980 r94121  
    7171ENABLE_LINK_PREFETCH = ;
    7272ENABLE_MATHML = ENABLE_MATHML;
     73ENABLE_MEDIA_SOURCE = ;
    7374ENABLE_MEDIA_STATISTICS = ;
    7475ENABLE_METER_TAG = ENABLE_METER_TAG;
     
    100101ENABLE_XSLT = ENABLE_XSLT;
    101102
    102 FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ANIMATION_API) $(ENABLE_BLOB) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CLIENT_BASED_GEOLOCATION) $(ENABLE_CSS3_FLEXBOX) $(ENABLE_DATABASE) $(ENABLE_DATALIST) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DIRECTORY_UPLOAD) $(ENABLE_DOM_STORAGE) $(ENABLE_EVENTSOURCE) $(ENABLE_FILE_SYSTEM) $(ENABLE_FILTERS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INPUT_COLOR) $(ENABLE_INPUT_SPEECH) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_LINK_PREFETCH) $(ENABLE_MATHML) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_TAG) $(ENABLE_NOTIFICATIONS) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PROGRESS_TAG) $(ENABLE_QUOTA) $(ENABLE_REGISTER_PROTOCOL_HANDLER) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_SHARED_WORKERS) $(ENABLE_SVG) $(ENABLE_SVG_ANIMATION) $(ENABLE_SVG_AS_IMAGE) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_FOREIGN_OBJECT) $(ENABLE_SVG_USE) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WORKERS) $(ENABLE_XHTMLMP) $(ENABLE_XPATH) $(ENABLE_XSLT);
     103FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ANIMATION_API) $(ENABLE_BLOB) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CLIENT_BASED_GEOLOCATION) $(ENABLE_CSS3_FLEXBOX) $(ENABLE_DATABASE) $(ENABLE_DATALIST) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DIRECTORY_UPLOAD) $(ENABLE_DOM_STORAGE) $(ENABLE_EVENTSOURCE) $(ENABLE_FILE_SYSTEM) $(ENABLE_FILTERS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INPUT_COLOR) $(ENABLE_INPUT_SPEECH) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_LINK_PREFETCH) $(ENABLE_MATHML) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_TAG) $(ENABLE_NOTIFICATIONS) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PROGRESS_TAG) $(ENABLE_QUOTA) $(ENABLE_REGISTER_PROTOCOL_HANDLER) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_SHARED_WORKERS) $(ENABLE_SVG) $(ENABLE_SVG_ANIMATION) $(ENABLE_SVG_AS_IMAGE) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_FOREIGN_OBJECT) $(ENABLE_SVG_USE) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WORKERS) $(ENABLE_XHTMLMP) $(ENABLE_XPATH) $(ENABLE_XSLT);
  • trunk/Source/WebCore/GNUmakefile.am

    r93492 r94121  
    335335endif # END USE_GSTREAMER
    336336endif # END ENABLE_VIDEO
     337
     338# ----
     339# Media Source Support
     340# ----
     341if ENABLE_MEDIA_SOURCE
     342FEATURE_DEFINES += ENABLE_MEDIA_SOURCE=1
     343webcore_cppflags += -DENABLE_MEDIA_SOURCE=1
     344else
     345webcore_cppflags += -DENABLE_MEDIA_SOURCE=0
     346endif # END ENABLE_MEDIA_SOURCE
    337347
    338348# ----
  • trunk/Source/WebCore/dom/EventNames.h

    r92304 r94121  
    148148    macro(webkitendfullscreen) \
    149149    \
     150    macro(webkitsourceopen) \
     151    macro(webkitsourceended) \
     152    macro(webkitsourceclose) \
     153    \
    150154    macro(progress) \
    151155    macro(stalled) \
  • trunk/Source/WebCore/features.pri

    r94075 r94121  
    8989!contains(DEFINES, ENABLE_3D_RENDERING=.): DEFINES += ENABLE_3D_RENDERING=1
    9090!contains(DEFINES, ENABLE_WEB_AUDIO=.): DEFINES += ENABLE_WEB_AUDIO=0
     91!contains(DEFINES, ENABLE_MEDIA_SOURCE=.): DEFINES += ENABLE_MEDIA_SOURCE=0
    9192!contains(DEFINES, ENABLE_MEDIA_STATISTICS=.): DEFINES += ENABLE_MEDIA_STATISTICS=0
    9293!contains(DEFINES, ENABLE_MEDIA_STREAM=.): DEFINES += ENABLE_MEDIA_STREAM=0
     
    262263contains(DEFINES, ENABLE_GEOLOCATION=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_GEOLOCATION=1
    263264contains(DEFINES, ENABLE_BLOB=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_BLOB=1
     265contains(DEFINES, ENABLE_MEDIA_SOURCE=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_MEDIA_SOURCE=1
    264266contains(DEFINES, ENABLE_MEDIA_STATISTICS=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_MEDIA_STATISTICS=1
    265267contains(DEFINES, ENABLE_MEDIA_STREAM=1): FEATURE_DEFINES_JAVASCRIPT += ENABLE_MEDIA_STREAM=1
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r93903 r94121  
    7070#include "ShadowRoot.h"
    7171#include "TimeRanges.h"
     72#include "UUID.h"
     73#include "Uint8Array.h"
    7274#include <limits>
    7375#include <wtf/CurrentTime.h>
     
    126128
    127129static const float invalidMediaTime = -1;
     130
     131#if ENABLE(MEDIA_SOURCE)
     132// URL protocol used to signal that the media source API is being used.
     133static const char* mediaSourceURLProtocol = "x-media-source";
     134#endif
    128135
    129136using namespace HTMLNames;
     
    159166    , m_displayMode(Unknown)
    160167    , m_processingMediaPlayerCallback(0)
     168#if ENABLE(MEDIA_SOURCE)     
     169    , m_sourceState(SOURCE_CLOSED)
     170#endif
    161171    , m_cachedTime(invalidMediaTime)
    162172    , m_cachedTimeWallClockUpdateTime(0)
     
    195205    if (document->settings() && document->settings()->mediaPlaybackRequiresUserGesture())
    196206        m_restrictions |= RequireUserGestureForRateChangeRestriction;
     207
     208#if ENABLE(MEDIA_SOURCE)
     209    m_mediaSourceURL.setProtocol(mediaSourceURLProtocol);
     210    m_mediaSourceURL.setPath(createCanonicalUUIDString());
     211#endif
    197212}
    198213
     
    547562#endif
    548563
     564#if ENABLE(MEDIA_SOURCE)
     565    if (m_sourceState != SOURCE_CLOSED)
     566        setSourceState(SOURCE_CLOSED);
     567#endif
     568
    549569    // 4 - If the media element's networkState is not set to NETWORK_EMPTY, then run these substeps
    550570    if (m_networkState != NETWORK_EMPTY) {
     
    736756        return;
    737757    }
     758   
     759#if ENABLE(MEDIA_SOURCE)
     760    // If this is a media source URL, make sure it is the one for this media element.
     761    if (url.protocolIs(mediaSourceURLProtocol) && url != m_mediaSourceURL) {
     762        mediaLoadingFailed(MediaPlayer::FormatError);
     763        return;
     764    }
     765#endif
    738766
    739767    // The resource fetch algorithm
     
    903931    // 3 - Queue a task to fire a simple event named error at the media element.
    904932    scheduleEvent(eventNames().errorEvent);
     933
     934#if ENABLE(MEDIA_SOURCE)
     935    if (m_sourceState != SOURCE_CLOSED)
     936        setSourceState(SOURCE_CLOSED);
     937#endif
    905938
    906939    // 4 - Set the element's networkState attribute to the NETWORK_EMPTY value and queue a
     
    11251158}
    11261159
     1160#if ENABLE(MEDIA_SOURCE)
     1161void HTMLMediaElement::mediaPlayerSourceOpened()
     1162{
     1163    beginProcessingMediaPlayerCallback();
     1164
     1165    setSourceState(SOURCE_OPEN);
     1166
     1167    endProcessingMediaPlayerCallback();
     1168}
     1169
     1170String HTMLMediaElement::mediaPlayerSourceURL() const
     1171{
     1172    return m_mediaSourceURL.string();
     1173}
     1174#endif
     1175
    11271176void HTMLMediaElement::progressEventTimerFired(Timer<HTMLMediaElement>*)
    11281177{
     
    12471296    // cancel poster display.
    12481297    bool noSeekRequired = !seekableRanges->length() || (time == now && displayMode() != Poster);
     1298
     1299#if ENABLE(MEDIA_SOURCE)
     1300    // Always notify the media engine of a seek if the source is not closed. This ensures that the source is
     1301    // always in a flushed state when the 'seeking' event fires.
     1302    if (m_sourceState != SOURCE_CLOSED)
     1303      noSeekRequired = false;
     1304#endif
     1305
    12491306    if (noSeekRequired) {
    12501307        if (time == now) {
     
    12641321    m_lastSeekTime = time;
    12651322    m_sentEndEvent = false;
     1323
     1324#if ENABLE(MEDIA_SOURCE)
     1325    if (m_sourceState == SOURCE_ENDED)
     1326        setSourceState(SOURCE_OPEN);
     1327#endif
    12661328
    12671329    // 8 - Set the current playback position to the given new playback position
     
    15791641    updatePlayState();
    15801642}
     1643
     1644#if ENABLE(MEDIA_SOURCE)
     1645void HTMLMediaElement::webkitSourceAppend(PassRefPtr<Uint8Array> data, ExceptionCode& ec)
     1646{
     1647    if (!m_player || m_currentSrc != m_mediaSourceURL || m_sourceState != SOURCE_OPEN) {
     1648        ec = INVALID_STATE_ERR;
     1649        return;
     1650    }
     1651
     1652    if (!data.get() || !m_player->sourceAppend(data->data(), data->length())) {
     1653        ec = SYNTAX_ERR;
     1654        return;
     1655    }
     1656}
     1657
     1658void HTMLMediaElement::webkitSourceEndOfStream(unsigned short status, ExceptionCode& ec)
     1659{
     1660    if (!m_player || m_currentSrc != m_mediaSourceURL || m_sourceState != SOURCE_OPEN) {
     1661        ec = INVALID_STATE_ERR;
     1662        return;
     1663    }
     1664
     1665    MediaPlayer::EndOfStreamStatus eosStatus = MediaPlayer::EosNoError;
     1666
     1667    switch (status) {
     1668    case EOS_NO_ERROR:
     1669        eosStatus = MediaPlayer::EosNoError;
     1670        break;
     1671    case EOS_NETWORK_ERR:
     1672        eosStatus = MediaPlayer::EosNetworkError;
     1673        break;
     1674    case EOS_DECODE_ERR:
     1675        eosStatus = MediaPlayer::EosDecodeError;
     1676        break;
     1677    default:
     1678        ec = SYNTAX_ERR;
     1679        return;
     1680    }
     1681
     1682    setSourceState(SOURCE_ENDED);
     1683    m_player->sourceEndOfStream(eosStatus);
     1684}
     1685
     1686HTMLMediaElement::SourceState HTMLMediaElement::webkitSourceState() const
     1687{
     1688    return m_sourceState;
     1689}
     1690
     1691void HTMLMediaElement::setSourceState(SourceState state)
     1692{
     1693    SourceState oldState = m_sourceState;
     1694    m_sourceState = static_cast<SourceState>(state);
     1695
     1696    if (m_sourceState == oldState)
     1697        return;
     1698
     1699    if (m_sourceState == SOURCE_CLOSED) {
     1700        scheduleEvent(eventNames().webkitsourcecloseEvent);
     1701        return;
     1702    }
     1703
     1704    if (oldState == SOURCE_OPEN && m_sourceState == SOURCE_ENDED) {
     1705        scheduleEvent(eventNames().webkitsourceendedEvent);
     1706        return;
     1707    }
     1708
     1709    if (m_sourceState == SOURCE_OPEN) {
     1710        scheduleEvent(eventNames().webkitsourceopenEvent);
     1711        return;
     1712    }
     1713}
     1714#endif
    15811715
    15821716bool HTMLMediaElement::loop() const
     
    23592493    scheduleEvent(eventNames().abortEvent);
    23602494
     2495#if ENABLE(MEDIA_SOURCE)
     2496    if (m_sourceState != SOURCE_CLOSED)
     2497        setSourceState(SOURCE_CLOSED);
     2498#endif
     2499
    23612500    // 4 - If the media element's readyState attribute has a value equal to HAVE_NOTHING, set the
    23622501    // element's networkState attribute to the NETWORK_EMPTY value and queue a task to fire a
  • trunk/Source/WebCore/html/HTMLMediaElement.h

    r93903 r94121  
    5050class KURL;
    5151class TimeRanges;
     52class Uint8Array;
    5253#if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
    5354class Widget;
     
    141142#endif
    142143
     144#if ENABLE(MEDIA_SOURCE)
     145//  Media Source.
     146    const KURL& webkitMediaSourceURL() const { return m_mediaSourceURL; }
     147    void webkitSourceAppend(PassRefPtr<Uint8Array> data, ExceptionCode&);
     148    enum EndOfStreamStatus { EOS_NO_ERROR, EOS_NETWORK_ERR, EOS_DECODE_ERR };
     149    void webkitSourceEndOfStream(unsigned short, ExceptionCode&);
     150    enum SourceState { SOURCE_CLOSED, SOURCE_OPEN, SOURCE_ENDED };
     151    SourceState webkitSourceState() const;
     152    void setSourceState(SourceState);
     153#endif
     154
    143155// controls
    144156    bool controls() const;
     
    282294    virtual void mediaPlayerCharacteristicChanged(MediaPlayer*);
    283295
     296#if ENABLE(MEDIA_SOURCE)
     297    virtual void mediaPlayerSourceOpened();
     298    virtual String mediaPlayerSourceURL() const;
     299#endif
     300
    284301    void loadTimerFired(Timer<HTMLMediaElement>*);
    285302    void asyncEventTimerFired(Timer<HTMLMediaElement>*);
     
    412429    int m_processingMediaPlayerCallback;
    413430
     431#if ENABLE(MEDIA_SOURCE)
     432    KURL m_mediaSourceURL;
     433    SourceState m_sourceState;
     434#endif
     435
    414436    mutable float m_cachedTime;
    415437    mutable double m_cachedTimeWallClockUpdateTime;
  • trunk/Source/WebCore/html/HTMLMediaElement.idl

    r93054 r94121  
    8989    readonly attribute [Conditional=MEDIA_STATISTICS] unsigned long webkitAudioDecodedByteCount;
    9090    readonly attribute [Conditional=MEDIA_STATISTICS] unsigned long webkitVideoDecodedByteCount;
     91
     92#if defined(ENABLE_MEDIA_SOURCE) && ENABLE_MEDIA_SOURCE
     93    // URL passed to src attribute to enable the media source logic.
     94    readonly attribute [URL] DOMString webkitMediaSourceURL;
     95
     96    // Appends media to to the source.
     97    void webkitSourceAppend(in Uint8Array data) raises (DOMException);
     98
     99    // Signals the end of stream.
     100    const unsigned short EOS_NO_ERROR = 0; // End of stream reached w/o error.
     101    const unsigned short EOS_NETWORK_ERR = 1; // A network error triggered end of stream.
     102    const unsigned short EOS_DECODE_ERR = 2; // A decode error triggered end of stream.
     103    void webkitSourceEndOfStream(in unsigned short status) raises (DOMException);
     104
     105    // Indicates the current state of the media source.
     106    const unsigned short SOURCE_CLOSED = 0;
     107    const unsigned short SOURCE_OPEN = 1;
     108    const unsigned short SOURCE_ENDED = 2;
     109    readonly attribute unsigned short webkitSourceState;
     110#endif
    91111};
    92112}
  • trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp

    r93903 r94121  
    143143
    144144    virtual bool hasSingleSecurityOrigin() const { return true; }
     145
     146#if ENABLE(MEDIA_SOURCE)
     147    virtual bool sourceAppend(const unsigned char*, unsigned) { return false; }
     148    virtual void sourceEndOfStream(MediaPlayer::EndOfStreamStatus status) { }
     149#endif
    145150};
    146151
     
    433438}
    434439
     440#if ENABLE(MEDIA_SOURCE)
     441bool MediaPlayer::sourceAppend(const unsigned char* data, unsigned length)
     442{
     443    return m_private->sourceAppend(data, length);
     444}
     445
     446void MediaPlayer::sourceEndOfStream(MediaPlayer::EndOfStreamStatus status)
     447{
     448    return m_private->sourceEndOfStream(status);
     449}
     450#endif
     451
    435452float MediaPlayer::duration() const
    436453{
     
    788805    m_private->setPrivateBrowsingMode(m_privateBrowsing);
    789806}
     807
     808#if ENABLE(MEDIA_SOURCE)
     809void MediaPlayer::sourceOpened()
     810{
     811    if (m_mediaPlayerClient)
     812        m_mediaPlayerClient->mediaPlayerSourceOpened();
     813}
     814
     815String MediaPlayer::sourceURL() const
     816{
     817    if (m_mediaPlayerClient)
     818        return m_mediaPlayerClient->mediaPlayerSourceURL();
     819    return String();
     820}
     821#endif
    790822
    791823// Client callbacks.
  • trunk/Source/WebCore/platform/graphics/MediaPlayer.h

    r93903 r94121  
    166166    virtual void mediaPlayerRenderingModeChanged(MediaPlayer*) { }
    167167#endif
     168
     169#if ENABLE(MEDIA_SOURCE)
     170    virtual void mediaPlayerSourceOpened() { }
     171    virtual String mediaPlayerSourceURL() const { return "x-media-source-unsupported:"; }
     172#endif
    168173};
    169174
     
    214219    void play();
    215220    void pause();   
     221
     222#if ENABLE(MEDIA_SOURCE)
     223    bool sourceAppend(const unsigned char* data, unsigned length);
     224    enum EndOfStreamStatus { EosNoError, EosNetworkError, EosDecodeError };
     225    void sourceEndOfStream(EndOfStreamStatus);
     226#endif
    216227
    217228    bool paused() const;
     
    316327#if ENABLE(WEB_AUDIO)
    317328    AudioSourceProvider* audioSourceProvider();
     329#endif
     330
     331#if ENABLE(MEDIA_SOURCE)
     332    void sourceOpened();
     333    String sourceURL() const;
    318334#endif
    319335
  • trunk/Source/WebCore/platform/graphics/MediaPlayerPrivate.h

    r93903 r94121  
    148148    virtual void setPrivateBrowsingMode(bool) { }
    149149
     150
    150151#if ENABLE(WEB_AUDIO)
    151152    virtual AudioSourceProvider* audioSourceProvider() { return 0; }
     153#endif
     154
     155#if ENABLE(MEDIA_SOURCE)
     156    virtual bool sourceAppend(const unsigned char*, unsigned) { return false; }
     157    virtual void sourceEndOfStream(MediaPlayer::EndOfStreamStatus) { };
    152158#endif
    153159};
  • trunk/Source/WebKit/chromium/ChangeLog

    r94106 r94121  
     12011-08-30  Aaron Colwell  <acolwell@chromium.org>
     2
     3        Add MediaSource API to HTMLMediaElement
     4        https://bugs.webkit.org/show_bug.cgi?id=64731
     5
     6        Reviewed by Eric Carlson.
     7
     8        * public/WebMediaPlayer.h:
     9        (WebKit::WebMediaPlayer::sourceAppend):
     10        (WebKit::WebMediaPlayer::sourceEndOfStream):
     11        * public/WebMediaPlayerClient.h:
     12        * src/WebMediaPlayerClientImpl.cpp:
     13        (WebKit::WebMediaPlayerClientImpl::sourceOpened):
     14        (WebKit::WebMediaPlayerClientImpl::sourceURL):
     15        (WebKit::WebMediaPlayerClientImpl::sourceAppend):
     16        (WebKit::WebMediaPlayerClientImpl::sourceEndOfStream):
     17        * src/WebMediaPlayerClientImpl.h:
     18
    1192011-08-30  Nat Duca  <nduca@chromium.org>
    220
  • trunk/Source/WebKit/chromium/public/WebMediaPlayer.h

    r93367 r94121  
    8787    };
    8888
     89    enum EndOfStreamStatus {
     90        EosNoError,
     91        EosNetworkError,
     92        EosDecodeError,
     93    };
     94
    8995    virtual ~WebMediaPlayer() {}
    9096
     
    157163
    158164    virtual WebAudioSourceProvider* audioSourceProvider() { return 0; }
     165
     166    virtual bool sourceAppend(const unsigned char* data, unsigned length) { return false; }
     167    virtual void sourceEndOfStream(EndOfStreamStatus)  { }
    159168};
    160169
  • trunk/Source/WebKit/chromium/public/WebMediaPlayerClient.h

    r82641 r94121  
    5454    virtual void playbackStateChanged() = 0;
    5555    virtual WebMediaPlayer::Preload preload() const = 0;
    56 
     56    virtual void sourceOpened() = 0;
     57    virtual WebKit::WebURL sourceURL() const = 0;
    5758protected:
    5859    ~WebMediaPlayerClient() { }
  • trunk/Source/WebKit/chromium/src/WebMediaPlayerClientImpl.cpp

    r93367 r94121  
    197197}
    198198
     199void WebMediaPlayerClientImpl::sourceOpened()
     200{
     201#if ENABLE(MEDIA_SOURCE)
     202    ASSERT(m_mediaPlayer);
     203    m_mediaPlayer->sourceOpened();
     204#endif
     205}
     206
     207WebKit::WebURL WebMediaPlayerClientImpl::sourceURL() const
     208{
     209#if ENABLE(MEDIA_SOURCE)
     210    ASSERT(m_mediaPlayer);
     211    return KURL(ParsedURLString, m_mediaPlayer->sourceURL());
     212#else
     213    return KURL();
     214#endif
     215}
     216
    199217// MediaPlayerPrivateInterface -------------------------------------------------
    200218
     
    258276        m_webMediaPlayer->pause();
    259277}
     278
     279#if ENABLE(MEDIA_SOURCE)
     280bool WebMediaPlayerClientImpl::sourceAppend(const unsigned char* data, unsigned length)
     281{
     282    if (m_webMediaPlayer.get())
     283        return m_webMediaPlayer->sourceAppend(data, length);
     284    return false;
     285}
     286
     287void WebMediaPlayerClientImpl::sourceEndOfStream(WebCore::MediaPlayer::EndOfStreamStatus status)
     288{
     289    if (m_webMediaPlayer.get())
     290        m_webMediaPlayer->sourceEndOfStream(static_cast<WebMediaPlayer::EndOfStreamStatus>(status));
     291}
     292#endif
    260293
    261294void WebMediaPlayerClientImpl::prepareToPlay()
  • trunk/Source/WebKit/chromium/src/WebMediaPlayerClientImpl.h

    r93367 r94121  
    8181    virtual void playbackStateChanged();
    8282    virtual WebMediaPlayer::Preload preload() const;
     83    virtual void sourceOpened();
     84    virtual WebKit::WebURL sourceURL() const;
    8385
    8486    // MediaPlayerPrivateInterface methods:
     
    135137#endif
    136138
     139#if ENABLE(MEDIA_SOURCE)
     140    virtual bool sourceAppend(const unsigned char* data, unsigned length);
     141    virtual void sourceEndOfStream(WebCore::MediaPlayer::EndOfStreamStatus);
     142#endif
     143
    137144private:
    138145    WebMediaPlayerClientImpl();
  • trunk/Source/WebKit/mac/ChangeLog

    r94093 r94121  
     12011-08-30  Aaron Colwell  <acolwell@chromium.org>
     2
     3        Add MediaSource API to HTMLMediaElement
     4        https://bugs.webkit.org/show_bug.cgi?id=64731
     5
     6        Reviewed by Eric Carlson.
     7
     8        * Configurations/FeatureDefines.xcconfig:
     9
    1102011-08-29  Alexey Proskuryakov  <ap@apple.com>
    211
  • trunk/Source/WebKit/mac/Configurations/FeatureDefines.xcconfig

    r93980 r94121  
    7171ENABLE_LINK_PREFETCH = ;
    7272ENABLE_MATHML = ENABLE_MATHML;
     73ENABLE_MEDIA_SOURCE = ;
    7374ENABLE_MEDIA_STATISTICS = ;
    7475ENABLE_METER_TAG = ENABLE_METER_TAG;
     
    100101ENABLE_XSLT = ENABLE_XSLT;
    101102
    102 FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ANIMATION_API) $(ENABLE_BLOB) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CLIENT_BASED_GEOLOCATION) $(ENABLE_CSS3_FLEXBOX) $(ENABLE_DATABASE) $(ENABLE_DATALIST) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DIRECTORY_UPLOAD) $(ENABLE_DOM_STORAGE) $(ENABLE_EVENTSOURCE) $(ENABLE_FILE_SYSTEM) $(ENABLE_FILTERS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INPUT_COLOR) $(ENABLE_INPUT_SPEECH) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_LINK_PREFETCH) $(ENABLE_MATHML) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_TAG) $(ENABLE_NOTIFICATIONS) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PROGRESS_TAG) $(ENABLE_QUOTA) $(ENABLE_REGISTER_PROTOCOL_HANDLER) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_SHARED_WORKERS) $(ENABLE_SVG) $(ENABLE_SVG_ANIMATION) $(ENABLE_SVG_AS_IMAGE) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_FOREIGN_OBJECT) $(ENABLE_SVG_USE) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WORKERS) $(ENABLE_XHTMLMP) $(ENABLE_XPATH) $(ENABLE_XSLT);
     103FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ANIMATION_API) $(ENABLE_BLOB) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CLIENT_BASED_GEOLOCATION) $(ENABLE_CSS3_FLEXBOX) $(ENABLE_DATABASE) $(ENABLE_DATALIST) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DIRECTORY_UPLOAD) $(ENABLE_DOM_STORAGE) $(ENABLE_EVENTSOURCE) $(ENABLE_FILE_SYSTEM) $(ENABLE_FILTERS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INPUT_COLOR) $(ENABLE_INPUT_SPEECH) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_LINK_PREFETCH) $(ENABLE_MATHML) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_TAG) $(ENABLE_NOTIFICATIONS) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PROGRESS_TAG) $(ENABLE_QUOTA) $(ENABLE_REGISTER_PROTOCOL_HANDLER) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_SHARED_WORKERS) $(ENABLE_SVG) $(ENABLE_SVG_ANIMATION) $(ENABLE_SVG_AS_IMAGE) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_FOREIGN_OBJECT) $(ENABLE_SVG_USE) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WORKERS) $(ENABLE_XHTMLMP) $(ENABLE_XPATH) $(ENABLE_XSLT);
  • trunk/Source/WebKit2/ChangeLog

    r94115 r94121  
     12011-08-30  Aaron Colwell  <acolwell@chromium.org>
     2
     3        Add MediaSource API to HTMLMediaElement
     4        https://bugs.webkit.org/show_bug.cgi?id=64731
     5
     6        Reviewed by Eric Carlson.
     7
     8        * Configurations/FeatureDefines.xcconfig:
     9
    1102011-08-30  Ada Chan  <adachan@apple.com>
    211
  • trunk/Source/WebKit2/Configurations/FeatureDefines.xcconfig

    r93980 r94121  
    7171ENABLE_LINK_PREFETCH = ;
    7272ENABLE_MATHML = ENABLE_MATHML;
     73ENABLE_MEDIA_SOURCE = ;
    7374ENABLE_MEDIA_STATISTICS = ;
    7475ENABLE_METER_TAG = ENABLE_METER_TAG;
     
    100101ENABLE_XSLT = ENABLE_XSLT;
    101102
    102 FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ANIMATION_API) $(ENABLE_BLOB) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CLIENT_BASED_GEOLOCATION) $(ENABLE_CSS3_FLEXBOX) $(ENABLE_DATABASE) $(ENABLE_DATALIST) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DIRECTORY_UPLOAD) $(ENABLE_DOM_STORAGE) $(ENABLE_EVENTSOURCE) $(ENABLE_FILE_SYSTEM) $(ENABLE_FILTERS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INPUT_COLOR) $(ENABLE_INPUT_SPEECH) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_LINK_PREFETCH) $(ENABLE_MATHML) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_TAG) $(ENABLE_NOTIFICATIONS) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PROGRESS_TAG) $(ENABLE_QUOTA) $(ENABLE_REGISTER_PROTOCOL_HANDLER) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_SHARED_WORKERS) $(ENABLE_SVG) $(ENABLE_SVG_ANIMATION) $(ENABLE_SVG_AS_IMAGE) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_FOREIGN_OBJECT) $(ENABLE_SVG_USE) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WORKERS) $(ENABLE_XHTMLMP) $(ENABLE_XPATH) $(ENABLE_XSLT);
     103FEATURE_DEFINES = $(ENABLE_3D_RENDERING) $(ENABLE_ACCELERATED_2D_CANVAS) $(ENABLE_ANIMATION_API) $(ENABLE_BLOB) $(ENABLE_CHANNEL_MESSAGING) $(ENABLE_CLIENT_BASED_GEOLOCATION) $(ENABLE_CSS3_FLEXBOX) $(ENABLE_DATABASE) $(ENABLE_DATALIST) $(ENABLE_DATA_TRANSFER_ITEMS) $(ENABLE_DETAILS) $(ENABLE_DEVICE_ORIENTATION) $(ENABLE_DIRECTORY_UPLOAD) $(ENABLE_DOM_STORAGE) $(ENABLE_EVENTSOURCE) $(ENABLE_FILE_SYSTEM) $(ENABLE_FILTERS) $(ENABLE_FULLSCREEN_API) $(ENABLE_GEOLOCATION) $(ENABLE_ICONDATABASE) $(ENABLE_INDEXED_DATABASE) $(ENABLE_INPUT_COLOR) $(ENABLE_INPUT_SPEECH) $(ENABLE_JAVASCRIPT_DEBUGGER) $(ENABLE_LINK_PREFETCH) $(ENABLE_MATHML) $(ENABLE_MEDIA_SOURCE) $(ENABLE_MEDIA_STATISTICS) $(ENABLE_METER_TAG) $(ENABLE_NOTIFICATIONS) $(ENABLE_OFFLINE_WEB_APPLICATIONS) $(ENABLE_PAGE_VISIBILITY_API) $(ENABLE_PROGRESS_TAG) $(ENABLE_QUOTA) $(ENABLE_REGISTER_PROTOCOL_HANDLER) $(ENABLE_REQUEST_ANIMATION_FRAME) $(ENABLE_SHARED_WORKERS) $(ENABLE_SVG) $(ENABLE_SVG_ANIMATION) $(ENABLE_SVG_AS_IMAGE) $(ENABLE_SVG_DOM_OBJC_BINDINGS) $(ENABLE_SVG_FONTS) $(ENABLE_SVG_FOREIGN_OBJECT) $(ENABLE_SVG_USE) $(ENABLE_TOUCH_ICON_LOADING) $(ENABLE_VIDEO) $(ENABLE_VIDEO_TRACK) $(ENABLE_WEBGL) $(ENABLE_WEB_AUDIO) $(ENABLE_WEB_SOCKETS) $(ENABLE_WEB_TIMING) $(ENABLE_WORKERS) $(ENABLE_XHTMLMP) $(ENABLE_XPATH) $(ENABLE_XSLT);
  • trunk/Tools/ChangeLog

    r94105 r94121  
     12011-08-30  Aaron Colwell  <acolwell@chromium.org>
     2
     3        Add MediaSource API to HTMLMediaElement
     4        https://bugs.webkit.org/show_bug.cgi?id=64731
     5
     6        Reviewed by Eric Carlson.
     7
     8        * Scripts/build-webkit:
     9
    1102011-08-30  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
    211
  • trunk/Tools/Scripts/build-webkit

    r93980 r94121  
    9595    $linkPrefetchSupport,
    9696    $mathmlSupport,
     97    $mediaSourceSupport,
    9798    $mediaStatisticsSupport,
    9899    $mediaStreamSupport,
     
    222223      define => "ENABLE_MATHML", default => 1, value => \$mathmlSupport },
    223224
     225    { option => "media-source", desc => "Toggle Media Source support",
     226      define => "ENABLE_MEDIA_SOURCE", default => 0, value => \$mediaSourceSupport },
     227
    224228    { option => "media-statistics", desc => "Toggle Media Statistics support",
    225229      define => "ENABLE_MEDIA_STATISTICS", default => 0, value => \$mediaStatisticsSupport },
  • trunk/WebKitLibraries/ChangeLog

    r93719 r94121  
     12011-08-30  Aaron Colwell  <acolwell@chromium.org>
     2
     3        Add MediaSource API to HTMLMediaElement
     4        https://bugs.webkit.org/show_bug.cgi?id=64731
     5
     6        Reviewed by Eric Carlson.
     7
     8        * win/tools/vsprops/FeatureDefines.vsprops:
     9        * win/tools/vsprops/FeatureDefinesCairo.vsprops:
     10
    1112011-08-24  Lucas Forschler  <lforschler@apple.com>
    212
  • trunk/WebKitLibraries/win/tools/vsprops/FeatureDefines.vsprops

    r89406 r94121  
    1010  <Tool
    1111                Name="VCCLCompilerTool"
    12                 PreprocessorDefinitions="$(ENABLE_3D_CANVAS);$(ENABLE_3D_RENDERING);$(ENABLE_ACCELERATED_2D_CANVAS);$(ENABLE_BLOB);$(ENABLE_CHANNEL_MESSAGING);$(ENABLE_CLIENT_BASED_GEOLOCATION);$(ENABLE_CSS_REGIONS);$(ENABLE_CSS_EXCLUSIONS);$(ENABLE_DATABASE);$(ENABLE_DATAGRID);$(ENABLE_DATALIST);$(ENABLE_DATA_TRANSFER_ITEMS);$(ENABLE_DETAILS);$(ENABLE_DEVICE_ORIENTATION);$(ENABLE_DIRECTORY_UPLOAD);$(ENABLE_DOM_STORAGE);$(ENABLE_EVENTSOURCE);$(ENABLE_FILTERS);$(ENABLE_FILE_SYSTEM);$(ENABLE_CSS3_FLEXBOX);$(ENABLE_FULLSCREEN_API);$(ENABLE_GEOLOCATION);$(ENABLE_ICONDATABASE);$(ENABLE_INDEXED_DATABASE);$(ENABLE_INPUT_COLOR);$(ENABLE_INPUT_SPEECH);$(ENABLE_JAVASCRIPT_DEBUGGER);$(ENABLE_LINK_PREFETCH);$(ENABLE_MATHML);$(ENABLE_METER_TAG);$(ENABLE_NOTIFICATIONS);$(ENABLE_OFFLINE_WEB_APPLICATIONS);$(ENABLE_PAGE_VISIBILITY_API);$(ENABLE_PROGRESS_TAG);$(ENABLE_QUOTA);$(ENABLE_REGISTER_PROTOCOL_HANDLER);$(ENABLE_SHARED_WORKERS);$(ENABLE_SVG);$(ENABLE_SVG_ANIMATION);$(ENABLE_SVG_AS_IMAGE);$(ENABLE_SVG_DOM_OBJC_BINDINGS);$(ENABLE_SVG_FONTS);$(ENABLE_SVG_FOREIGN_OBJECT);$(ENABLE_SVG_USE);$(ENABLE_VIDEO);$(ENABLE_MEDIA_STATISTICS);$(ENABLE_WEB_SOCKETS);$(ENABLE_WEB_TIMING);$(ENABLE_WORKERS);$(ENABLE_XHTMLMP);$(ENABLE_XPATH);$(ENABLE_XSLT)"
     12                PreprocessorDefinitions="$(ENABLE_3D_CANVAS);$(ENABLE_3D_RENDERING);$(ENABLE_ACCELERATED_2D_CANVAS);$(ENABLE_BLOB);$(ENABLE_CHANNEL_MESSAGING);$(ENABLE_CLIENT_BASED_GEOLOCATION);$(ENABLE_CSS_REGIONS);$(ENABLE_CSS_EXCLUSIONS);$(ENABLE_DATABASE);$(ENABLE_DATAGRID);$(ENABLE_DATALIST);$(ENABLE_DATA_TRANSFER_ITEMS);$(ENABLE_DETAILS);$(ENABLE_DEVICE_ORIENTATION);$(ENABLE_DIRECTORY_UPLOAD);$(ENABLE_DOM_STORAGE);$(ENABLE_EVENTSOURCE);$(ENABLE_FILTERS);$(ENABLE_FILE_SYSTEM);$(ENABLE_CSS3_FLEXBOX);$(ENABLE_FULLSCREEN_API);$(ENABLE_GEOLOCATION);$(ENABLE_ICONDATABASE);$(ENABLE_INDEXED_DATABASE);$(ENABLE_INPUT_COLOR);$(ENABLE_INPUT_SPEECH);$(ENABLE_JAVASCRIPT_DEBUGGER);$(ENABLE_LINK_PREFETCH);$(ENABLE_MATHML);$(ENABLE_METER_TAG);$(ENABLE_NOTIFICATIONS);$(ENABLE_OFFLINE_WEB_APPLICATIONS);$(ENABLE_PAGE_VISIBILITY_API);$(ENABLE_PROGRESS_TAG);$(ENABLE_QUOTA);$(ENABLE_REGISTER_PROTOCOL_HANDLER);$(ENABLE_SHARED_WORKERS);$(ENABLE_SVG);$(ENABLE_SVG_ANIMATION);$(ENABLE_SVG_AS_IMAGE);$(ENABLE_SVG_DOM_OBJC_BINDINGS);$(ENABLE_SVG_FONTS);$(ENABLE_SVG_FOREIGN_OBJECT);$(ENABLE_SVG_USE);$(ENABLE_VIDEO);$(ENABLE_MEDIA_SOURCE);$(ENABLE_MEDIA_STATISTICS);$(ENABLE_WEB_SOCKETS);$(ENABLE_WEB_TIMING);$(ENABLE_WORKERS);$(ENABLE_XHTMLMP);$(ENABLE_XPATH);$(ENABLE_XSLT)"
    1313        />
    1414  <UserMacro
     
    238238        />
    239239  <UserMacro
     240                Name="ENABLE_MEDIA_SOURCE"
     241                Value="ENABLE_MEDIA_SOURCE"
     242                PerformEnvironmentSet="true"
     243        />
     244  <UserMacro
    240245                Name="ENABLE_MEDIA_STATISTICS"
    241246                Value="ENABLE_MEDIA_STATISTICS"
  • trunk/WebKitLibraries/win/tools/vsprops/FeatureDefinesCairo.vsprops

    r89406 r94121  
    1010  <Tool
    1111                Name="VCCLCompilerTool"
    12                 PreprocessorDefinitions="$(ENABLE_3D_CANVAS);$(ENABLE_3D_RENDERING);$(ENABLE_ACCELERATED_2D_CANVAS);$(ENABLE_BLOB);$(ENABLE_CHANNEL_MESSAGING);$(ENABLE_CLIENT_BASED_GEOLOCATION);$(ENABLE_CSS_REGIONS);$(ENABLE_CSS_EXCLUSIONS);$(ENABLE_DATABASE);$(ENABLE_DATAGRID);$(ENABLE_DATALIST);$(ENABLE_DATA_TRANSFER_ITEMS);$(ENABLE_DETAILS);$(ENABLE_DEVICE_ORIENTATION);$(ENABLE_DIRECTORY_UPLOAD);$(ENABLE_DOM_STORAGE);$(ENABLE_EVENTSOURCE);$(ENABLE_FILTERS);$(ENABLE_FILE_SYSTEM);$(ENABLE_CSS3_FLEXBOX);$(ENABLE_FULLSCREEN_API);$(ENABLE_GEOLOCATION);$(ENABLE_ICONDATABASE);$(ENABLE_INDEXED_DATABASE);$(ENABLE_INPUT_COLOR);$(ENABLE_INPUT_SPEECH);$(ENABLE_JAVASCRIPT_DEBUGGER);$(ENABLE_LINK_PREFETCH);$(ENABLE_MATHML);$(ENABLE_METER_TAG);$(ENABLE_NOTIFICATIONS);$(ENABLE_OFFLINE_WEB_APPLICATIONS);$(ENABLE_PAGE_VISIBILITY_API);$(ENABLE_PROGRESS_TAG);$(ENABLE_QUOTA);$(ENABLE_REGISTER_PROTOCOL_HANDLER);$(ENABLE_SHARED_WORKERS);$(ENABLE_SVG);$(ENABLE_SVG_ANIMATION);$(ENABLE_SVG_AS_IMAGE);$(ENABLE_SVG_DOM_OBJC_BINDINGS);$(ENABLE_SVG_FONTS);$(ENABLE_SVG_FOREIGN_OBJECT);$(ENABLE_SVG_USE);$(ENABLE_VIDEO);$(ENABLE_MEDIA_STATISTICS);$(ENABLE_WEB_SOCKETS);$(ENABLE_WEB_TIMING);$(ENABLE_WORKERS);$(ENABLE_XHTMLMP);$(ENABLE_XPATH);$(ENABLE_XSLT)"
     12                PreprocessorDefinitions="$(ENABLE_3D_CANVAS);$(ENABLE_3D_RENDERING);$(ENABLE_ACCELERATED_2D_CANVAS);$(ENABLE_BLOB);$(ENABLE_CHANNEL_MESSAGING);$(ENABLE_CLIENT_BASED_GEOLOCATION);$(ENABLE_CSS_REGIONS);$(ENABLE_CSS_EXCLUSIONS);$(ENABLE_DATABASE);$(ENABLE_DATAGRID);$(ENABLE_DATALIST);$(ENABLE_DATA_TRANSFER_ITEMS);$(ENABLE_DETAILS);$(ENABLE_DEVICE_ORIENTATION);$(ENABLE_DIRECTORY_UPLOAD);$(ENABLE_DOM_STORAGE);$(ENABLE_EVENTSOURCE);$(ENABLE_FILTERS);$(ENABLE_FILE_SYSTEM);$(ENABLE_CSS3_FLEXBOX);$(ENABLE_FULLSCREEN_API);$(ENABLE_GEOLOCATION);$(ENABLE_ICONDATABASE);$(ENABLE_INDEXED_DATABASE);$(ENABLE_INPUT_COLOR);$(ENABLE_INPUT_SPEECH);$(ENABLE_JAVASCRIPT_DEBUGGER);$(ENABLE_LINK_PREFETCH);$(ENABLE_MATHML);$(ENABLE_METER_TAG);$(ENABLE_NOTIFICATIONS);$(ENABLE_OFFLINE_WEB_APPLICATIONS);$(ENABLE_PAGE_VISIBILITY_API);$(ENABLE_PROGRESS_TAG);$(ENABLE_QUOTA);$(ENABLE_REGISTER_PROTOCOL_HANDLER);$(ENABLE_SHARED_WORKERS);$(ENABLE_SVG);$(ENABLE_SVG_ANIMATION);$(ENABLE_SVG_AS_IMAGE);$(ENABLE_SVG_DOM_OBJC_BINDINGS);$(ENABLE_SVG_FONTS);$(ENABLE_SVG_FOREIGN_OBJECT);$(ENABLE_SVG_USE);$(ENABLE_VIDEO);$(ENABLE_MEDIA_SOURCE);$(ENABLE_MEDIA_STATISTICS);$(ENABLE_WEB_SOCKETS);$(ENABLE_WEB_TIMING);$(ENABLE_WORKERS);$(ENABLE_XHTMLMP);$(ENABLE_XPATH);$(ENABLE_XSLT)"
    1313        />
    1414  <UserMacro
     
    238238        />
    239239  <UserMacro
     240                Name="ENABLE_MEDIA_SOURCE"
     241                Value=""
     242                PerformEnvironmentSet="true"
     243        />
     244  <UserMacro
    240245                Name="ENABLE_MEDIA_STATISTICS"
    241246                Value=""
  • trunk/configure.ac

    r94000 r94121  
    563563              [],[enable_video_track="yes"])
    564564AC_MSG_RESULT([$enable_video_track])
     565
     566# check whether to enable media source support
     567AC_MSG_CHECKING([whether to enable media source support])
     568AC_ARG_ENABLE(media_source,
     569              AC_HELP_STRING([--enable-media-source],
     570                             [enable support for media source [default=no]]),
     571              [], [enable_media_source="no"])
     572AC_MSG_RESULT([$enable_media_source])
    565573
    566574# check whether to enable media statistics support
     
    11861194AM_CONDITIONAL([ENABLE_MHTML], [test "$enable_mhtml" = "yes"])
    11871195AM_CONDITIONAL([ENABLE_VIDEO],[test "$enable_video" = "yes"])
     1196AM_CONDITIONAL([ENABLE_MEDIA_SOURCE],[test "$enable_media_source" = "yes"])
    11881197AM_CONDITIONAL([ENABLE_MEDIA_STATISTICS],[test "$enable_media_statistics" = "yes"])
    11891198AM_CONDITIONAL([ENABLE_VIDEO_TRACK],[test "$enable_video_track" = "yes"])
     
    12671276 JavaScript debugger/profiler support                     : $enable_javascript_debugger
    12681277 MathML support                                           : $enable_mathml
     1278 Media source                                             : $enable_media_source
    12691279 Media statistics                                         : $enable_media_statistics
    12701280 HTML5 offline web applications support                   : $enable_offline_web_applications
Note: See TracChangeset for help on using the changeset viewer.