Changeset 185179 in webkit


Ignore:
Timestamp:
Jun 3, 2015 4:41:52 PM (9 years ago)
Author:
commit-queue@webkit.org
Message:

Add basic Media Session support to HTMLMediaElement.
https://bugs.webkit.org/show_bug.cgi?id=145581

Patch by Matt Rajca <mrajca@apple.com> on 2015-06-03
Reviewed by Eric Carlson.

HTMLMediaElements now have:

  • a 'kind' attribute representing the intrinsic media category
  • a 'session' attribute representing the current media session, if any
  • CMakeLists.txt: Include the new HTMLMediaElementMediaSession sources.
  • DerivedSources.make: Include the new IDL file.
  • Modules/mediasession/HTMLMediaElementMediaSession.cpp: Added.

(WebCore::HTMLMediaElementMediaSession::session):

  • Modules/mediasession/HTMLMediaElementMediaSession.h: Added basic translation of the IDL file.

(WebCore::HTMLMediaElementMediaSession::kind):
(WebCore::HTMLMediaElementMediaSession::setKind):
(WebCore::HTMLMediaElementMediaSession::setSession):

  • Modules/mediasession/HTMLMediaElementMediaSession.idl: Added from the Media Session spec.
  • PlatformMac.cmake: Include DOMHTMLMediaElementMediaSession.cpp.
  • WebCore.xcodeproj/project.pbxproj: Include the new HTMLMediaElementMediaSession sources.
  • html/HTMLMediaElement.h: Added accessors for 'kind' and 'session'.

(WebCore::HTMLMediaElement::kind):
(WebCore::HTMLMediaElement::setKind):
(WebCore::HTMLMediaElement::session):
(WebCore::HTMLMediaElement::setSession):

Location:
trunk/Source/WebCore
Files:
3 added
8 edited

Legend:

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

    r185126 r185179  
    1010    "${WEBCORE_DIR}/Modules/indieui"
    1111    "${WEBCORE_DIR}/Modules/mediacontrols/"
     12    "${WEBCORE_DIR}/Modules/mediasession"
    1213    "${WEBCORE_DIR}/Modules/mediasource"
    1314    "${WEBCORE_DIR}/Modules/mediastream"
     
    219220    Modules/mediacontrols/MediaControlsHost.idl
    220221
     222    Modules/mediasession/HTMLMediaElementMediaSession.idl
    221223    Modules/mediasession/MediaRemoteControls.idl
    222224    Modules/mediasession/MediaSession.idl
     
    875877    Modules/mediacontrols/MediaControlsHost.cpp
    876878
     879    Modules/mediasession/HTMLMediaElementMediaSession.cpp
    877880    Modules/mediasession/MediaRemoteControls.cpp
    878881    Modules/mediasession/MediaSession.cpp
  • trunk/Source/WebCore/ChangeLog

    r185176 r185179  
     12015-06-03  Matt Rajca  <mrajca@apple.com>
     2
     3        Add basic Media Session support to HTMLMediaElement.
     4        https://bugs.webkit.org/show_bug.cgi?id=145581
     5
     6        Reviewed by Eric Carlson.
     7
     8        HTMLMediaElements now have:
     9
     10        - a 'kind' attribute representing the intrinsic media category
     11        - a 'session' attribute representing the current media session, if any
     12
     13        * CMakeLists.txt: Include the new HTMLMediaElementMediaSession sources.
     14        * DerivedSources.make: Include the new IDL file.
     15        * Modules/mediasession/HTMLMediaElementMediaSession.cpp: Added.
     16        (WebCore::HTMLMediaElementMediaSession::session):
     17        * Modules/mediasession/HTMLMediaElementMediaSession.h: Added basic translation of the IDL file.
     18        (WebCore::HTMLMediaElementMediaSession::kind):
     19        (WebCore::HTMLMediaElementMediaSession::setKind):
     20        (WebCore::HTMLMediaElementMediaSession::setSession):
     21        * Modules/mediasession/HTMLMediaElementMediaSession.idl: Added from the Media Session spec.
     22        * PlatformMac.cmake: Include DOMHTMLMediaElementMediaSession.cpp.
     23        * WebCore.xcodeproj/project.pbxproj: Include the new HTMLMediaElementMediaSession sources.
     24        * html/HTMLMediaElement.h: Added accessors for 'kind' and 'session'.
     25        (WebCore::HTMLMediaElement::kind):
     26        (WebCore::HTMLMediaElement::setKind):
     27        (WebCore::HTMLMediaElement::session):
     28        (WebCore::HTMLMediaElement::setSession):
     29
    1302015-06-03  Myles C. Maxfield  <mmaxfield@apple.com>
    231
  • trunk/Source/WebCore/DerivedSources.make

    r185126 r185179  
    105105    $(WebCore)/Modules/indieui/UIRequestEvent.idl \
    106106    $(WebCore)/Modules/mediacontrols/MediaControlsHost.idl \
     107    $(WebCore)/Modules/mediasession/HTMLMediaElementMediaSession.idl \
    107108    $(WebCore)/Modules/mediasession/MediaRemoteControls.idl \
    108109    $(WebCore)/Modules/mediasession/MediaSession.idl \
  • trunk/Source/WebCore/PlatformMac.cmake

    r184536 r185179  
    571571    ${DERIVED_SOURCES_WEBCORE_DIR}/DOMHTMLFormControlsCollection.mm
    572572    ${DERIVED_SOURCES_WEBCORE_DIR}/DOMHTMLMediaElement.mm
     573    ${DERIVED_SOURCES_WEBCORE_DIR}/DOMHTMLMediaElementMediaSession.mm
    573574    ${DERIVED_SOURCES_WEBCORE_DIR}/DOMHTMLMediaElementMediaStream.mm
    574575    ${DERIVED_SOURCES_WEBCORE_DIR}/DOMHTMLTrackElement.mm
  • trunk/Source/WebCore/WebCore.vcxproj/WebCoreIncludeCommon.props

    r180979 r185179  
    66  <ItemDefinitionGroup>
    77    <ClCompile>
    8       <AdditionalIncludeDirectories>$(ProjectDir)..;$(ProjectDir)..\Modules\mediacontrols;$(ProjectDir)..\Modules\mediastream;$(ProjectDir)..\Modules\encryptedmedia;$(ProjectDir)..\Modules\filesystem;$(ProjectDir)..\Modules\gamepad;$(ProjectDir)..\Modules\geolocation;$(ProjectDir)..\Modules\indexeddb;$(ProjectDir)..\Modules\mediasource;$(ProjectDir)..\Modules\navigatorcontentutils;$(ProjectDir)..\Modules\plugins;$(ProjectDir)..\Modules\speech;$(ProjectDir)..\Modules\proximity;$(ProjectDir)..\Modules\quota;$(ProjectDir)..\Modules\notifications;$(ProjectDir)..\Modules\streams;$(ProjectDir)..\Modules\webdatabase;$(ProjectDir)..\Modules\websockets;$(ProjectDir)..\accessibility;$(ProjectDir)..\accessibility\win;$(ProjectDir)..\bridge;$(ProjectDir)..\bridge\c;$(ProjectDir)..\bridge\jsc;$(ProjectDir)..\css;$(ProjectDir)..\cssjit;$(ProjectDir)..\contentextensions;$(ProjectDir)..\editing;$(ProjectDir)..\fileapi;$(ProjectDir)..\rendering;$(ProjectDir)..\rendering\line;$(ProjectDir)..\rendering\mathml;$(ProjectDir)..\rendering\shapes;$(ProjectDir)..\rendering\style;$(ProjectDir)..\rendering\svg;$(ProjectDir)..\bindings;$(ProjectDir)..\bindings\generic;$(ProjectDir)..\bindings\js;$(ProjectDir)..\bindings\js\specialization;$(ProjectDir)..\dom;$(ProjectDir)..\dom\default;$(ProjectDir)..\history;$(ProjectDir)..\html;$(ProjectDir)..\html\canvas;$(ProjectDir)..\html\forms;$(ProjectDir)..\html\parser;$(ProjectDir)..\html\shadow;$(ProjectDir)..\html\track;$(ProjectDir)..\inspector;$(ProjectDir)..\loader;$(ProjectDir)..\loader\appcache;$(ProjectDir)..\loader\archive;$(ProjectDir)..\loader\archive\cf;$(ProjectDir)..\loader\cache;$(ProjectDir)..\loader\icon;$(ProjectDir)..\mathml;$(ProjectDir)..\page;$(ProjectDir)..\page\animation;$(ProjectDir)..\page\scrolling;$(ProjectDir)..\page\win;$(ProjectDir)..\platform;$(ProjectDir)..\platform\animation;$(ProjectDir)..\platform\audio;$(ProjectDir)..\platform\mock;$(ProjectDir)..\platform\sql;$(ProjectDir)..\platform\win;$(ProjectDir)..\platform\network;$(ProjectDir)..\platform\network\win;$(ProjectDir)..\platform\cf;$(ProjectDir)..\platform\graphics;$(ProjectDir)..\platform\graphics\ca;$(ProjectDir)..\platform\graphics\cpu\arm\filters;$(ProjectDir)..\platform\graphics\filters;$(ProjectDir)..\platform\graphics\filters\arm;$(ProjectDir)..\platform\graphics\opentype;$(ProjectDir)..\platform\graphics\transforms;$(ProjectDir)..\platform\text;$(ProjectDir)..\platform\text\icu;$(ProjectDir)..\platform\text\transcoder;$(ProjectDir)..\platform\graphics\win;$(ProjectDir)..\xml;$(ProjectDir)..\xml\parser;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\WebCore\DerivedSources;$(ProjectDir)..\plugins;$(ProjectDir)..\plugins\win;$(ProjectDir)..\replay;$(ProjectDir)..\svg\animation;$(ProjectDir)..\svg\graphics;$(ProjectDir)..\svg\properties;$(ProjectDir)..\svg\graphics\filters;$(ProjectDir)..\svg;$(ProjectDir)..\testing;$(ProjectDir)..\crypto;$(ProjectDir)..\crypto\keys;$(ProjectDir)..\wml;$(ProjectDir)..\storage;$(ProjectDir)..\style;$(ProjectDir)..\websockets;$(ProjectDir)..\workers;$(ConfigurationBuildDir)\include;$(ConfigurationBuildDir)\include\private;$(ConfigurationBuildDir)\include\JavaScriptCore;$(ConfigurationBuildDir)\include\private\JavaScriptCore;$(ProjectDir)..\ForwardingHeaders;$(ProjectDir)..\platform\graphics\gpu;$(ProjectDir)..\platform\graphics\egl;$(ProjectDir)..\platform\graphics\surfaces;$(ProjectDir)..\platform\graphics\surfaces\egl;$(ProjectDir)..\platform\graphics\opengl;$(WebKit_Libraries)\include;$(WebKit_Libraries)\include\private;$(WebKit_Libraries)\include\private\JavaScriptCore;$(WebKit_Libraries)\include\sqlite;$(WebKit_Libraries)\include\JavaScriptCore;$(WebKit_Libraries)\include\zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
     8      <AdditionalIncludeDirectories>$(ProjectDir)..;$(ProjectDir)..\Modules\mediacontrols;$(ProjectDir)..\Modules\mediasession;$(ProjectDir)..\Modules\mediastream;$(ProjectDir)..\Modules\encryptedmedia;$(ProjectDir)..\Modules\filesystem;$(ProjectDir)..\Modules\gamepad;$(ProjectDir)..\Modules\geolocation;$(ProjectDir)..\Modules\indexeddb;$(ProjectDir)..\Modules\mediasource;$(ProjectDir)..\Modules\navigatorcontentutils;$(ProjectDir)..\Modules\plugins;$(ProjectDir)..\Modules\speech;$(ProjectDir)..\Modules\proximity;$(ProjectDir)..\Modules\quota;$(ProjectDir)..\Modules\notifications;$(ProjectDir)..\Modules\streams;$(ProjectDir)..\Modules\webdatabase;$(ProjectDir)..\Modules\websockets;$(ProjectDir)..\accessibility;$(ProjectDir)..\accessibility\win;$(ProjectDir)..\bridge;$(ProjectDir)..\bridge\c;$(ProjectDir)..\bridge\jsc;$(ProjectDir)..\css;$(ProjectDir)..\cssjit;$(ProjectDir)..\contentextensions;$(ProjectDir)..\editing;$(ProjectDir)..\fileapi;$(ProjectDir)..\rendering;$(ProjectDir)..\rendering\line;$(ProjectDir)..\rendering\mathml;$(ProjectDir)..\rendering\shapes;$(ProjectDir)..\rendering\style;$(ProjectDir)..\rendering\svg;$(ProjectDir)..\bindings;$(ProjectDir)..\bindings\generic;$(ProjectDir)..\bindings\js;$(ProjectDir)..\bindings\js\specialization;$(ProjectDir)..\dom;$(ProjectDir)..\dom\default;$(ProjectDir)..\history;$(ProjectDir)..\html;$(ProjectDir)..\html\canvas;$(ProjectDir)..\html\forms;$(ProjectDir)..\html\parser;$(ProjectDir)..\html\shadow;$(ProjectDir)..\html\track;$(ProjectDir)..\inspector;$(ProjectDir)..\loader;$(ProjectDir)..\loader\appcache;$(ProjectDir)..\loader\archive;$(ProjectDir)..\loader\archive\cf;$(ProjectDir)..\loader\cache;$(ProjectDir)..\loader\icon;$(ProjectDir)..\mathml;$(ProjectDir)..\page;$(ProjectDir)..\page\animation;$(ProjectDir)..\page\scrolling;$(ProjectDir)..\page\win;$(ProjectDir)..\platform;$(ProjectDir)..\platform\animation;$(ProjectDir)..\platform\audio;$(ProjectDir)..\platform\mock;$(ProjectDir)..\platform\sql;$(ProjectDir)..\platform\win;$(ProjectDir)..\platform\network;$(ProjectDir)..\platform\network\win;$(ProjectDir)..\platform\cf;$(ProjectDir)..\platform\graphics;$(ProjectDir)..\platform\graphics\ca;$(ProjectDir)..\platform\graphics\cpu\arm\filters;$(ProjectDir)..\platform\graphics\filters;$(ProjectDir)..\platform\graphics\filters\arm;$(ProjectDir)..\platform\graphics\opentype;$(ProjectDir)..\platform\graphics\transforms;$(ProjectDir)..\platform\text;$(ProjectDir)..\platform\text\icu;$(ProjectDir)..\platform\text\transcoder;$(ProjectDir)..\platform\graphics\win;$(ProjectDir)..\xml;$(ProjectDir)..\xml\parser;$(ConfigurationBuildDir)\obj$(PlatformArchitecture)\WebCore\DerivedSources;$(ProjectDir)..\plugins;$(ProjectDir)..\plugins\win;$(ProjectDir)..\replay;$(ProjectDir)..\svg\animation;$(ProjectDir)..\svg\graphics;$(ProjectDir)..\svg\properties;$(ProjectDir)..\svg\graphics\filters;$(ProjectDir)..\svg;$(ProjectDir)..\testing;$(ProjectDir)..\crypto;$(ProjectDir)..\crypto\keys;$(ProjectDir)..\wml;$(ProjectDir)..\storage;$(ProjectDir)..\style;$(ProjectDir)..\websockets;$(ProjectDir)..\workers;$(ConfigurationBuildDir)\include;$(ConfigurationBuildDir)\include\private;$(ConfigurationBuildDir)\include\JavaScriptCore;$(ConfigurationBuildDir)\include\private\JavaScriptCore;$(ProjectDir)..\ForwardingHeaders;$(ProjectDir)..\platform\graphics\gpu;$(ProjectDir)..\platform\graphics\egl;$(ProjectDir)..\platform\graphics\surfaces;$(ProjectDir)..\platform\graphics\surfaces\egl;$(ProjectDir)..\platform\graphics\opengl;$(WebKit_Libraries)\include;$(WebKit_Libraries)\include\private;$(WebKit_Libraries)\include\private\JavaScriptCore;$(WebKit_Libraries)\include\sqlite;$(WebKit_Libraries)\include\JavaScriptCore;$(WebKit_Libraries)\include\zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
    99    </ClCompile>
    1010  </ItemDefinitionGroup>
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r185126 r185179  
    56965696                C90843CF1B18E47D00B68564 /* MediaRemoteControls.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C90843CD1B18E47D00B68564 /* MediaRemoteControls.cpp */; };
    56975697                C90843D01B18E47D00B68564 /* MediaRemoteControls.h in Headers */ = {isa = PBXBuildFile; fileRef = C90843CE1B18E47D00B68564 /* MediaRemoteControls.h */; };
     5698                C937FE8D1B1F6821008ECC5D /* HTMLMediaElementMediaSession.h in Headers */ = {isa = PBXBuildFile; fileRef = C968B2E61B1E72F700EF1F81 /* HTMLMediaElementMediaSession.h */; };
     5699                C968B2E81B1E778100EF1F81 /* HTMLMediaElementMediaSession.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C968B2E71B1E778100EF1F81 /* HTMLMediaElementMediaSession.cpp */; };
    56985700                C9DADBCB1B1D3B97001F17D8 /* JSMediaSession.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C9DADBC91B1D3B25001F17D8 /* JSMediaSession.cpp */; };
    56995701                CA3BF67C10D99BAE00E6CE53 /* ScrollAnimator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CA3BF67B10D99BAE00E6CE53 /* ScrollAnimator.cpp */; };
     
    1326213264                C90843CE1B18E47D00B68564 /* MediaRemoteControls.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaRemoteControls.h; sourceTree = "<group>"; };
    1326313265                C93458BB1B18D77E0088EE12 /* MediaRemoteControls.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaRemoteControls.idl; sourceTree = "<group>"; };
     13266                C968B2E51B1E704500EF1F81 /* HTMLMediaElementMediaSession.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = HTMLMediaElementMediaSession.idl; sourceTree = "<group>"; };
     13267                C968B2E61B1E72F700EF1F81 /* HTMLMediaElementMediaSession.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HTMLMediaElementMediaSession.h; sourceTree = "<group>"; };
     13268                C968B2E71B1E778100EF1F81 /* HTMLMediaElementMediaSession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HTMLMediaElementMediaSession.cpp; sourceTree = "<group>"; };
    1326413269                C9DADBC91B1D3B25001F17D8 /* JSMediaSession.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMediaSession.cpp; sourceTree = "<group>"; };
    1326513270                C9DADBCA1B1D3B25001F17D8 /* JSMediaSession.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMediaSession.h; sourceTree = "<group>"; };
     
    1460714612                        isa = PBXGroup;
    1460814613                        children = (
     14614                                C968B2E71B1E778100EF1F81 /* HTMLMediaElementMediaSession.cpp */,
     14615                                C968B2E61B1E72F700EF1F81 /* HTMLMediaElementMediaSession.h */,
     14616                                C968B2E51B1E704500EF1F81 /* HTMLMediaElementMediaSession.idl */,
    1460914617                                C90843CD1B18E47D00B68564 /* MediaRemoteControls.cpp */,
    1461014618                                C90843CE1B18E47D00B68564 /* MediaRemoteControls.h */,
     
    2493724945                                E44613A50CD6331000FADA75 /* HTMLMediaElement.h in Headers */,
    2493824946                                CD5209E61B0BD9E10077184E /* HTMLMediaElementEnums.h in Headers */,
     24947                                C937FE8D1B1F6821008ECC5D /* HTMLMediaElementMediaSession.h in Headers */,
    2493924948                                0779BF0E18453168000B6AE7 /* HTMLMediaElementMediaStream.h in Headers */,
    2494024949                                A8EA79F40A1916DF00A8EF5F /* HTMLMenuElement.h in Headers */,
     
    2845028459                                A8EA7CAC0A192B9C00A8EF5F /* HTMLMarqueeElement.cpp in Sources */,
    2845128460                                E44613A40CD6331000FADA75 /* HTMLMediaElement.cpp in Sources */,
     28461                                C968B2E81B1E778100EF1F81 /* HTMLMediaElementMediaSession.cpp in Sources */,
    2845228462                                0779BF0D18453168000B6AE7 /* HTMLMediaElementMediaStream.cpp in Sources */,
    2845328463                                A8EA79F80A1916DF00A8EF5F /* HTMLMenuElement.cpp in Sources */,
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r185120 r185179  
    115115#endif
    116116
     117#if ENABLE(MEDIA_SESSION)
     118#include "MediaSession.h"
     119#endif
     120
    117121#if ENABLE(MEDIA_SOURCE)
    118122#include "DOMWindow.h"
     
    63556359}
    63566360
    6357 }
    6358 
    6359 #endif
     6361#if ENABLE(MEDIA_SESSION)
     6362
     6363MediaSession* HTMLMediaElement::session() const
     6364{
     6365    return m_session.get();
     6366}
     6367
     6368void HTMLMediaElement::setSession(MediaSession* session)
     6369{
     6370    m_session = session;
     6371}
     6372
     6373#endif
     6374
     6375}
     6376
     6377#endif
  • trunk/Source/WebCore/html/HTMLMediaElement.h

    r185006 r185179  
    7373class MediaKeys;
    7474#endif
     75#if ENABLE(MEDIA_SESSION)
     76class MediaSession;
     77#endif
    7578#if ENABLE(MEDIA_SOURCE)
    7679class MediaSource;
     
    412415    void mediaLoadingFailedFatally(MediaPlayerEnums::NetworkState);
    413416
     417#if ENABLE(MEDIA_SESSION)
     418    const String& kind() const { return m_kind; }
     419    void setKind(const String& kind) { m_kind = kind; }
     420
     421    MediaSession* session() const;
     422    void setSession(MediaSession*);
     423#endif
     424
    414425#if ENABLE(MEDIA_SOURCE)
    415426    RefPtr<VideoPlaybackQuality> getVideoPlaybackQuality();
     
    790801    int m_processingMediaPlayerCallback;
    791802
     803#if ENABLE(MEDIA_SESSION)
     804    String m_kind;
     805    RefPtr<MediaSession> m_session;
     806#endif
     807
    792808#if ENABLE(MEDIA_SOURCE)
    793809    RefPtr<MediaSource> m_mediaSource;
Note: See TracChangeset for help on using the changeset viewer.