Changeset 253866 in webkit


Ignore:
Timestamp:
Dec 21, 2019 7:09:18 PM (4 years ago)
Author:
eric.carlson@apple.com
Message:

[Media in GPU process] Add remote media player configuration
https://bugs.webkit.org/show_bug.cgi?id=205541
<rdar://problem/58137418>

Reviewed by Simon Fraser.

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:

(WebKit::RemoteMediaPlayerManagerProxy::createMediaPlayer):

  • GPUProcess/media/RemoteMediaPlayerManagerProxy.h:
  • GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in:
  • GPUProcess/media/RemoteMediaPlayerProxy.cpp:

(WebKit::RemoteMediaPlayerProxy::RemoteMediaPlayerProxy):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerMediaKeysStorageDirectory const):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerReferrer const):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerUserAgent const):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerSourceApplicationIdentifier const):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerNetworkInterfaceName const):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerMediaCacheDirectory const):
(WebKit::RemoteMediaPlayerProxy::mediaContentTypesRequiringHardwareSupport const):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerPreferredAudioCharacteristics const):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerShouldUsePersistentCache const):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerIsVideo const):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerKeyNeeded):
(WebKit::RemoteMediaPlayerProxy::mediaPlayerGetRawCookies const):

  • GPUProcess/media/RemoteMediaPlayerProxy.h:

(WebKit::RemoteMediaPlayerProxy::mediaPlayerLogIdentifier):

  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:

(WebKit::RemoteMediaPlayerManager::createRemoteMediaPlayer):

Location:
trunk/Source/WebKit
Files:
1 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r253863 r253866  
     12019-12-21  Eric Carlson  <eric.carlson@apple.com>
     2
     3        [Media in GPU process] Add remote media player configuration
     4        https://bugs.webkit.org/show_bug.cgi?id=205541
     5        <rdar://problem/58137418>
     6
     7        Reviewed by Simon Fraser.
     8
     9        * GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:
     10        (WebKit::RemoteMediaPlayerManagerProxy::createMediaPlayer):
     11        * GPUProcess/media/RemoteMediaPlayerManagerProxy.h:
     12        * GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in:
     13        * GPUProcess/media/RemoteMediaPlayerProxy.cpp:
     14        (WebKit::RemoteMediaPlayerProxy::RemoteMediaPlayerProxy):
     15        (WebKit::RemoteMediaPlayerProxy::mediaPlayerMediaKeysStorageDirectory const):
     16        (WebKit::RemoteMediaPlayerProxy::mediaPlayerReferrer const):
     17        (WebKit::RemoteMediaPlayerProxy::mediaPlayerUserAgent const):
     18        (WebKit::RemoteMediaPlayerProxy::mediaPlayerSourceApplicationIdentifier const):
     19        (WebKit::RemoteMediaPlayerProxy::mediaPlayerNetworkInterfaceName const):
     20        (WebKit::RemoteMediaPlayerProxy::mediaPlayerMediaCacheDirectory const):
     21        (WebKit::RemoteMediaPlayerProxy::mediaContentTypesRequiringHardwareSupport const):
     22        (WebKit::RemoteMediaPlayerProxy::mediaPlayerPreferredAudioCharacteristics const):
     23        (WebKit::RemoteMediaPlayerProxy::mediaPlayerShouldUsePersistentCache const):
     24        (WebKit::RemoteMediaPlayerProxy::mediaPlayerIsVideo const):
     25        (WebKit::RemoteMediaPlayerProxy::mediaPlayerKeyNeeded):
     26        (WebKit::RemoteMediaPlayerProxy::mediaPlayerGetRawCookies const):
     27        * GPUProcess/media/RemoteMediaPlayerProxy.h:
     28        (WebKit::RemoteMediaPlayerProxy::mediaPlayerLogIdentifier):
     29        * WebKit.xcodeproj/project.pbxproj:
     30        * WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:
     31        (WebKit::RemoteMediaPlayerManager::createRemoteMediaPlayer):
     32
    1332019-12-21  Kate Cheney  <katherine_cheney@apple.com>
    234
  • trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp

    r253861 r253866  
    6363}
    6464
    65 void RemoteMediaPlayerManagerProxy::createMediaPlayer(MediaPlayerPrivateRemoteIdentifier id, MediaPlayerEnums::MediaEngineIdentifier engineIdentifier, CompletionHandler<void(bool succeeded)>&& completionHandler)
     65void RemoteMediaPlayerManagerProxy::createMediaPlayer(MediaPlayerPrivateRemoteIdentifier id, MediaPlayerEnums::MediaEngineIdentifier engineIdentifier, RemoteMediaPlayerProxyConfiguration&& configuration, CompletionHandler<void(bool succeeded)>&& completionHandler)
    6666{
    6767    MESSAGE_CHECK_CONTEXTID(id);
    6868
    6969    ASSERT(!m_proxies.contains(id));
    70     m_proxies.add(id, makeUnique<RemoteMediaPlayerProxy>(*this, id, m_gpuConnectionToWebProcess.connection(), engineIdentifier));
     70    m_proxies.add(id, makeUnique<RemoteMediaPlayerProxy>(*this, id, m_gpuConnectionToWebProcess.connection(), engineIdentifier, WTFMove(configuration)));
    7171
    7272    completionHandler(true);
  • trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h

    r253861 r253866  
    3131#include "MediaPlayerPrivateRemoteIdentifier.h"
    3232#include "MessageReceiver.h"
     33#include "RemoteMediaPlayerProxyConfiguration.h"
    3334#include <WebCore/MediaPlayer.h>
    3435#include <wtf/LoggerHelper.h>
     
    6869    void didReceiveSyncMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&) final;
    6970
    70     void createMediaPlayer(MediaPlayerPrivateRemoteIdentifier, WebCore::MediaPlayerEnums::MediaEngineIdentifier, CompletionHandler<void(bool)>&&);
     71    void createMediaPlayer(MediaPlayerPrivateRemoteIdentifier, WebCore::MediaPlayerEnums::MediaEngineIdentifier, RemoteMediaPlayerProxyConfiguration&&, CompletionHandler<void(bool)>&&);
    7172    void deleteMediaPlayer(MediaPlayerPrivateRemoteIdentifier);
    7273
  • trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in

    r253861 r253866  
    2525
    2626messages -> RemoteMediaPlayerManagerProxy NotRefCounted {
    27     CreateMediaPlayer(WebKit::MediaPlayerPrivateRemoteIdentifier id, enum:uint8_t WebCore::MediaPlayerEnums::MediaEngineIdentifier remoteEngineIdentifier) -> (bool success) Synchronous
     27    CreateMediaPlayer(WebKit::MediaPlayerPrivateRemoteIdentifier id, enum:uint8_t WebCore::MediaPlayerEnums::MediaEngineIdentifier remoteEngineIdentifier, struct WebKit::RemoteMediaPlayerProxyConfiguration configuration) -> (bool success) Synchronous
    2828    DeleteMediaPlayer(WebKit::MediaPlayerPrivateRemoteIdentifier id)
    2929
  • trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp

    r253861 r253866  
    3939using namespace WebCore;
    4040
    41 RemoteMediaPlayerProxy::RemoteMediaPlayerProxy(RemoteMediaPlayerManagerProxy& manager, MediaPlayerPrivateRemoteIdentifier id, Ref<IPC::Connection>&& connection, MediaPlayerEnums::MediaEngineIdentifier engineIdentifier)
     41RemoteMediaPlayerProxy::RemoteMediaPlayerProxy(RemoteMediaPlayerManagerProxy& manager, MediaPlayerPrivateRemoteIdentifier id, Ref<IPC::Connection>&& connection, MediaPlayerEnums::MediaEngineIdentifier engineIdentifier, RemoteMediaPlayerProxyConfiguration&& configuration)
    4242    : m_id(id)
    4343    , m_webProcessConnection(WTFMove(connection))
     
    4545    , m_engineIdentifier(engineIdentifier)
    4646    , m_updateCachedStateMessageTimer(RunLoop::main(), this, &RemoteMediaPlayerProxy::timerFired)
     47    , m_configuration(configuration)
    4748#if !RELEASE_LOG_DISABLED
    4849    , m_logger(m_manager.logger())
    4950#endif
    5051{
     52    m_typesRequiringHardwareSupport = m_configuration.mediaContentTypesRequiringHardwareSupport;
    5153    m_player = MediaPlayer::create(*this, m_engineIdentifier);
    5254}
     
    178180}
    179181
     182#if ENABLE(LEGACY_ENCRYPTED_MEDIA)
     183String RemoteMediaPlayerProxy::mediaPlayerMediaKeysStorageDirectory() const
     184{
     185    return m_configuration.mediaKeysStorageDirectory;
     186}
     187#endif
     188
     189String RemoteMediaPlayerProxy::mediaPlayerReferrer() const
     190{
     191    return m_configuration.referrer;
     192}
     193
     194String RemoteMediaPlayerProxy::mediaPlayerUserAgent() const
     195{
     196    return m_configuration.userAgent;
     197}
     198
     199String RemoteMediaPlayerProxy::mediaPlayerSourceApplicationIdentifier() const
     200{
     201    return m_configuration.sourceApplicationIdentifier;
     202}
     203
     204#if PLATFORM(IOS_FAMILY)
     205String RemoteMediaPlayerProxy::mediaPlayerNetworkInterfaceName() const
     206{
     207    return m_configuration.networkInterfaceName;
     208}
     209#endif
     210
     211const String& RemoteMediaPlayerProxy::mediaPlayerMediaCacheDirectory() const
     212{
     213    return m_configuration.mediaCacheDirectory;
     214}
     215
     216const Vector<WebCore::ContentType>& RemoteMediaPlayerProxy::mediaContentTypesRequiringHardwareSupport() const
     217{
     218    return m_typesRequiringHardwareSupport;
     219}
     220
     221Vector<String> RemoteMediaPlayerProxy::mediaPlayerPreferredAudioCharacteristics() const
     222{
     223    return m_configuration.preferredAudioCharacteristics;
     224}
     225
     226bool RemoteMediaPlayerProxy::mediaPlayerShouldUsePersistentCache() const
     227{
     228    return m_configuration.shouldUsePersistentCache;
     229}
     230
     231bool RemoteMediaPlayerProxy::mediaPlayerIsVideo() const
     232{
     233    return m_configuration.isVideo;
     234}
     235
     236// FIXME: Unimplemented
    180237void RemoteMediaPlayerProxy::mediaPlayerPlaybackStateChanged()
    181238{
     
    247304    return false;
    248305}
    249 
    250 String RemoteMediaPlayerProxy::mediaPlayerMediaKeysStorageDirectory() const
    251 {
    252     notImplemented();
    253     return emptyString();
    254 }
    255 
    256306#endif
    257307
     
    272322#endif
    273323
    274 String RemoteMediaPlayerProxy::mediaPlayerReferrer() const
    275 {
    276     notImplemented();
    277     return String();
    278 }
    279 
    280 String RemoteMediaPlayerProxy::mediaPlayerUserAgent() const
    281 {
    282     notImplemented();
    283     return String();
    284 }
    285 
    286324void RemoteMediaPlayerProxy::mediaPlayerEnterFullscreen()
    287325{
     
    305343}
    306344
    307 bool RemoteMediaPlayerProxy::mediaPlayerIsVideo() const
    308 {
    309     notImplemented();
    310     return false;
    311 }
    312 
    313345LayoutRect RemoteMediaPlayerProxy::mediaPlayerContentBoxRect() const
    314346{
     
    355387    notImplemented();
    356388    return false;
    357 }
    358 
    359 bool RemoteMediaPlayerProxy::mediaPlayerShouldUsePersistentCache() const
    360 {
    361     notImplemented();
    362     return true;
    363 }
    364 
    365 const String& RemoteMediaPlayerProxy::mediaPlayerMediaCacheDirectory() const
    366 {
    367     notImplemented();
    368     return emptyString();
    369389}
    370390
     
    417437
    418438#if PLATFORM(IOS_FAMILY)
    419 String RemoteMediaPlayerProxy::mediaPlayerNetworkInterfaceName() const
    420 {
    421     notImplemented();
    422     return String();
    423 }
    424 
    425439bool RemoteMediaPlayerProxy::mediaPlayerGetRawCookies(const URL&, Vector<Cookie>&) const
    426440{
     
    428442    return false;
    429443}
    430 
    431 #endif
    432 
    433 String RemoteMediaPlayerProxy::mediaPlayerSourceApplicationIdentifier() const
    434 {
    435     notImplemented();
    436     return emptyString();
    437 }
     444#endif
    438445
    439446double RemoteMediaPlayerProxy::mediaPlayerRequestedPlaybackRate() const
     
    455462}
    456463
    457 Vector<String> RemoteMediaPlayerProxy::mediaPlayerPreferredAudioCharacteristics() const
    458 {
    459     notImplemented();
    460     return Vector<String>();
    461 }
    462 
    463464bool RemoteMediaPlayerProxy::mediaPlayerShouldDisableSleep() const
    464465{
    465466    notImplemented();
    466467    return false;
    467 }
    468 
    469 const Vector<WebCore::ContentType>& RemoteMediaPlayerProxy::mediaContentTypesRequiringHardwareSupport() const
    470 {
    471     notImplemented();
    472     return m_typesRequiringHardwareSupport;
    473468}
    474469
  • trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h

    r253861 r253866  
    2929
    3030#include "MediaPlayerPrivateRemoteIdentifier.h"
     31#include "RemoteMediaPlayerProxyConfiguration.h"
    3132#include "RemoteMediaPlayerState.h"
    3233#include <wtf/LoggerHelper.h>
     
    5152    WTF_MAKE_FAST_ALLOCATED;
    5253public:
    53     RemoteMediaPlayerProxy(RemoteMediaPlayerManagerProxy&, MediaPlayerPrivateRemoteIdentifier, Ref<IPC::Connection>&&, MediaPlayerEnums::MediaEngineIdentifier);
     54    RemoteMediaPlayerProxy(RemoteMediaPlayerManagerProxy&, MediaPlayerPrivateRemoteIdentifier, Ref<IPC::Connection>&&, MediaPlayerEnums::MediaEngineIdentifier, RemoteMediaPlayerProxyConfiguration&&);
    5455    virtual ~RemoteMediaPlayerProxy()
    5556    {
     
    169170#if !RELEASE_LOG_DISABLED
    170171    const Logger& mediaPlayerLogger() final { return m_logger; }
     172    const void* mediaPlayerLogIdentifier() { return reinterpret_cast<const void*>(m_configuration.logIdentifier); }
    171173#endif
    172174
     
    179181    RunLoop::Timer<RemoteMediaPlayerProxy> m_updateCachedStateMessageTimer;
    180182    RemoteMediaPlayerState m_cachedState;
    181 
     183    RemoteMediaPlayerProxyConfiguration m_configuration;
    182184    bool m_seekableChanged { true };
    183185    bool m_bufferedChanged { true };
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r253861 r253866  
    20672067                07A5EBBA1C7BA43E00B9CA69 /* WKFrameHandleRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKFrameHandleRef.h; sourceTree = "<group>"; };
    20682068                07B3B46F23AB2CB300BA5B12 /* RemoteMediaPlayerState.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteMediaPlayerState.h; sourceTree = "<group>"; };
     2069                07B3B47523AD890400BA5B12 /* RemoteMediaPlayerProxyConfiguration.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteMediaPlayerProxyConfiguration.h; sourceTree = "<group>"; };
    20692070                07BAF35623A2CC170044257E /* RemoteMediaPlayerProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RemoteMediaPlayerProxy.h; sourceTree = "<group>"; };
    20702071                07BAF35723A2CC190044257E /* RemoteMediaPlayerProxy.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteMediaPlayerProxy.cpp; sourceTree = "<group>"; };
     
    51125113                                07BAF35723A2CC190044257E /* RemoteMediaPlayerProxy.cpp */,
    51135114                                07BAF35623A2CC170044257E /* RemoteMediaPlayerProxy.h */,
     5115                                07B3B47523AD890400BA5B12 /* RemoteMediaPlayerProxyConfiguration.h */,
    51145116                        );
    51155117                        path = media;
  • trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp

    r253861 r253866  
    3131#include "RemoteMediaPlayerManagerMessages.h"
    3232#include "RemoteMediaPlayerManagerProxyMessages.h"
     33#include "RemoteMediaPlayerProxyConfiguration.h"
    3334#include "WebCoreArgumentCoders.h"
    3435#include "WebProcess.h"
     
    116117    auto id = MediaPlayerPrivateRemoteIdentifier::generate();
    117118
     119    RemoteMediaPlayerProxyConfiguration configuration;
     120    configuration.mediaKeysStorageDirectory = player->mediaKeysStorageDirectory();
     121    configuration.referrer = player->referrer();
     122    configuration.userAgent = player->userAgent();
     123    configuration.sourceApplicationIdentifier = player->sourceApplicationIdentifier();
     124#if PLATFORM(IOS_FAMILY)
     125    configuration.networkInterfaceName = player->mediaPlayerNetworkInterfaceName();
     126#endif
     127    configuration.mediaCacheDirectory = player->mediaCacheDirectory();
     128    configuration.mediaContentTypesRequiringHardwareSupport = player->mediaContentTypesRequiringHardwareSupport();
     129    configuration.preferredAudioCharacteristics = player->preferredAudioCharacteristics();
     130    configuration.logIdentifier = reinterpret_cast<uint64_t>(player->mediaPlayerLogIdentifier());
     131    configuration.shouldUsePersistentCache = player->shouldUsePersistentCache();
     132    configuration.isVideo = player->isVideoPlayer();
     133
    118134    bool haveRemoteProxy;
    119     bool sendSucceeded = gpuProcessConnection().sendSync(Messages::RemoteMediaPlayerManagerProxy::CreateMediaPlayer(id, remoteEngineIdentifier), Messages::RemoteMediaPlayerManagerProxy::CreateMediaPlayer::Reply(haveRemoteProxy), 0);
     135    bool sendSucceeded = gpuProcessConnection().sendSync(Messages::RemoteMediaPlayerManagerProxy::CreateMediaPlayer(id, remoteEngineIdentifier, configuration), Messages::RemoteMediaPlayerManagerProxy::CreateMediaPlayer::Reply(haveRemoteProxy), 0);
    120136    if (!haveRemoteProxy || !sendSucceeded) {
    121137        WTFLogAlways("Failed to create remote media player.");
Note: See TracChangeset for help on using the changeset viewer.