Diff
Modified: trunk/Source/WebCore/ChangeLog (253656 => 253657)
--- trunk/Source/WebCore/ChangeLog 2019-12-18 00:00:23 UTC (rev 253656)
+++ trunk/Source/WebCore/ChangeLog 2019-12-18 00:02:56 UTC (rev 253657)
@@ -1,3 +1,15 @@
+2019-12-17 Eric Carlson <eric.carl...@apple.com>
+
+ Add remote media player methods for prepareToPlay, preload, private browsing mode, preserves pitch, and failed to load
+ https://bugs.webkit.org/show_bug.cgi?id=205351
+ <rdar://problem/58018451>
+
+ Reviewed by Jer Noble.
+
+ * platform/graphics/MediaPlayer.cpp:
+ (WebCore::MediaPlayer::remoteEngineFailedToLoad):
+ * platform/graphics/MediaPlayer.h:
+
2019-12-17 Kate Cheney <katherine_che...@apple.com>
Add run-time flag for in-app browser privacy
Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp (253656 => 253657)
--- trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp 2019-12-18 00:00:23 UTC (rev 253656)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp 2019-12-18 00:02:56 UTC (rev 253657)
@@ -1616,6 +1616,11 @@
return m_private->shouldIgnoreIntrinsicSize();
}
+void MediaPlayer::remoteEngineFailedToLoad()
+{
+ client().mediaPlayerEngineFailedToLoad();
+}
+
#if !RELEASE_LOG_DISABLED
const Logger& MediaPlayer::mediaPlayerLogger()
{
Modified: trunk/Source/WebCore/platform/graphics/MediaPlayer.h (253656 => 253657)
--- trunk/Source/WebCore/platform/graphics/MediaPlayer.h 2019-12-18 00:00:23 UTC (rev 253656)
+++ trunk/Source/WebCore/platform/graphics/MediaPlayer.h 2019-12-18 00:02:56 UTC (rev 253657)
@@ -632,6 +632,8 @@
void mediaEngineUpdated() { client().mediaPlayerEngineUpdated(); }
bool isLooping() const { return client().mediaPlayerIsLooping(); }
+ void remoteEngineFailedToLoad();
+
#if USE(GSTREAMER)
void requestInstallMissingPlugins(const String& details, const String& description, MediaPlayerRequestInstallMissingPluginsCallback& callback) { client().requestInstallMissingPlugins(details, description, callback); }
#endif
Modified: trunk/Source/WebKit/ChangeLog (253656 => 253657)
--- trunk/Source/WebKit/ChangeLog 2019-12-18 00:00:23 UTC (rev 253656)
+++ trunk/Source/WebKit/ChangeLog 2019-12-18 00:02:56 UTC (rev 253657)
@@ -1,3 +1,38 @@
+2019-12-17 Eric Carlson <eric.carl...@apple.com>
+
+ Add remote media player methods for prepareToPlay, preload, private browsing mode, preserves pitch, and failed to load
+ https://bugs.webkit.org/show_bug.cgi?id=205351
+ <rdar://problem/58018451>
+
+ Reviewed by Jer Noble.
+
+ * GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp:
+ (WebKit::RemoteMediaPlayerManagerProxy::prepareToPlay):
+ (WebKit::RemoteMediaPlayerManagerProxy::setPreload):
+ (WebKit::RemoteMediaPlayerManagerProxy::setPrivateBrowsingMode):
+ (WebKit::RemoteMediaPlayerManagerProxy::setPreservesPitch):
+ * GPUProcess/media/RemoteMediaPlayerManagerProxy.h:
+ * GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in:
+ * GPUProcess/media/RemoteMediaPlayerProxy.cpp:
+ (WebKit::RemoteMediaPlayerProxy::prepareToPlay):
+ (WebKit::RemoteMediaPlayerProxy::setPreload):
+ (WebKit::RemoteMediaPlayerProxy::setPrivateBrowsingMode):
+ (WebKit::RemoteMediaPlayerProxy::setPreservesPitch):
+ * GPUProcess/media/RemoteMediaPlayerProxy.h:
+ * WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp:
+ (WebKit::MediaPlayerPrivateRemote::prepareToPlay):
+ (WebKit::MediaPlayerPrivateRemote::setPreservesPitch):
+ (WebKit::MediaPlayerPrivateRemote::setPreload):
+ (WebKit::MediaPlayerPrivateRemote::setPrivateBrowsingMode):
+ (WebKit::MediaPlayerPrivateRemote::engineFailedToLoad):
+ (WebKit::MediaPlayerPrivateRemote::platformErrorCode const): Deleted.
+ (WebKit::MediaPlayerPrivateRemote::requiresImmediateCompositing const): Deleted.
+ * WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
+ * WebProcess/GPU/media/RemoteMediaPlayerManager.cpp:
+ (WebKit::RemoteMediaPlayerManager::engineFailedToLoad):
+ * WebProcess/GPU/media/RemoteMediaPlayerManager.h:
+ * WebProcess/GPU/media/RemoteMediaPlayerManager.messages.in:
+
2019-12-17 Kate Cheney <katherine_che...@apple.com>
Add run-time flag for in-app browser privacy
Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp (253656 => 253657)
--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp 2019-12-18 00:00:23 UTC (rev 253656)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.cpp 2019-12-18 00:02:56 UTC (rev 253657)
@@ -184,6 +184,12 @@
player->cancelLoad();
}
+void RemoteMediaPlayerManagerProxy::prepareToPlay(MediaPlayerPrivateRemoteIdentifier id)
+{
+ if (auto player = m_proxies.get(id))
+ player->prepareToPlay();
+}
+
void RemoteMediaPlayerManagerProxy::play(MediaPlayerPrivateRemoteIdentifier id)
{
if (auto player = m_proxies.get(id))
@@ -208,6 +214,24 @@
player->setMuted(muted);
}
+void RemoteMediaPlayerManagerProxy::setPreload(MediaPlayerPrivateRemoteIdentifier id, WebCore::MediaPlayerEnums::Preload preload)
+{
+ if (auto player = m_proxies.get(id))
+ player->setPreload(preload);
+}
+
+void RemoteMediaPlayerManagerProxy::setPrivateBrowsingMode(MediaPlayerPrivateRemoteIdentifier id, bool privateMode)
+{
+ if (auto player = m_proxies.get(id))
+ player->setPrivateBrowsingMode(privateMode);
+}
+
+void RemoteMediaPlayerManagerProxy::setPreservesPitch(MediaPlayerPrivateRemoteIdentifier id, bool preservesPitch)
+{
+ if (auto player = m_proxies.get(id))
+ player->setPreservesPitch(preservesPitch);
+}
+
#if !RELEASE_LOG_DISABLED
const Logger& RemoteMediaPlayerManagerProxy::logger() const
{
Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h (253656 => 253657)
--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h 2019-12-18 00:00:23 UTC (rev 253656)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h 2019-12-18 00:02:56 UTC (rev 253657)
@@ -79,10 +79,10 @@
void supportsKeySystem(WebCore::MediaPlayerEnums::MediaEngineIdentifier, const String&&, const String&&, CompletionHandler<void(bool)>&&);
void load(MediaPlayerPrivateRemoteIdentifier, URL&&, WebCore::ContentType&&, String&&);
+ void prepareForPlayback(MediaPlayerPrivateRemoteIdentifier, bool privateMode, WebCore::MediaPlayerEnums::Preload, bool preservesPitch, bool prepareForRendering);
void cancelLoad(MediaPlayerPrivateRemoteIdentifier);
+ void prepareToPlay(MediaPlayerPrivateRemoteIdentifier);
- void prepareForPlayback(MediaPlayerPrivateRemoteIdentifier, bool privateMode, WebCore::MediaPlayerEnums::Preload, bool preservesPitch, bool prepareForRendering);
-
void play(MediaPlayerPrivateRemoteIdentifier);
void pause(MediaPlayerPrivateRemoteIdentifier);
@@ -89,6 +89,10 @@
void setVolume(MediaPlayerPrivateRemoteIdentifier, double);
void setMuted(MediaPlayerPrivateRemoteIdentifier, bool);
+ void setPreload(MediaPlayerPrivateRemoteIdentifier, WebCore::MediaPlayerEnums::Preload);
+ void setPrivateBrowsingMode(MediaPlayerPrivateRemoteIdentifier, bool);
+ void setPreservesPitch(MediaPlayerPrivateRemoteIdentifier, bool);
+
HashMap<MediaPlayerPrivateRemoteIdentifier, std::unique_ptr<RemoteMediaPlayerProxy>> m_proxies;
GPUConnectionToWebProcess& m_gpuConnectionToWebProcess;
Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in (253656 => 253657)
--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in 2019-12-18 00:00:23 UTC (rev 253656)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.messages.in 2019-12-18 00:02:56 UTC (rev 253657)
@@ -39,11 +39,17 @@
Load(WebKit::MediaPlayerPrivateRemoteIdentifier id, URL url, WebCore::ContentType contentType, String keySystem)
CancelLoad(WebKit::MediaPlayerPrivateRemoteIdentifier id)
+ PrepareToPlay(WebKit::MediaPlayerPrivateRemoteIdentifier id)
+
Play(WebKit::MediaPlayerPrivateRemoteIdentifier id)
Pause(WebKit::MediaPlayerPrivateRemoteIdentifier id)
SetVolume(WebKit::MediaPlayerPrivateRemoteIdentifier id, double volume)
SetMuted(WebKit::MediaPlayerPrivateRemoteIdentifier id, bool muted)
+
+ SetPreload(WebKit::MediaPlayerPrivateRemoteIdentifier id, enum:uint8_t WebCore::MediaPlayerEnums::Preload preload)
+ SetPrivateBrowsingMode(WebKit::MediaPlayerPrivateRemoteIdentifier id, bool privateMode)
+ SetPreservesPitch(WebKit::MediaPlayerPrivateRemoteIdentifier id, bool preservesPitch)
}
#endif
Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp (253656 => 253657)
--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp 2019-12-18 00:00:23 UTC (rev 253656)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.cpp 2019-12-18 00:02:56 UTC (rev 253657)
@@ -72,6 +72,11 @@
m_player->cancelLoad();
}
+void RemoteMediaPlayerProxy::prepareToPlay()
+{
+ m_player->prepareToPlay();
+}
+
void RemoteMediaPlayerProxy::play()
{
m_player->play();
@@ -92,6 +97,21 @@
m_player->setMuted(muted);
}
+void RemoteMediaPlayerProxy::setPreload(WebCore::MediaPlayerEnums::Preload preload)
+{
+ m_player->setPreload(preload);
+}
+
+void RemoteMediaPlayerProxy::setPrivateBrowsingMode(bool privateMode)
+{
+ m_player->setPrivateBrowsingMode(privateMode);
+}
+
+void RemoteMediaPlayerProxy::setPreservesPitch(bool preservesPitch)
+{
+ m_player->setPreservesPitch(preservesPitch);
+}
+
// MediaPlayerClient
void RemoteMediaPlayerProxy::mediaPlayerNetworkStateChanged()
{
@@ -128,6 +148,11 @@
m_webProcessConnection->send(Messages::RemoteMediaPlayerManager::RateChanged(m_id, m_player->rate()), 0);
}
+void RemoteMediaPlayerProxy::mediaPlayerEngineFailedToLoad() const
+{
+ m_webProcessConnection->send(Messages::RemoteMediaPlayerManager::EngineFailedToLoad(m_id, m_player->platformErrorCode()), 0);
+}
+
// FIXME: Unimplemented
void RemoteMediaPlayerProxy::mediaPlayerPlaybackStateChanged()
{
@@ -422,11 +447,6 @@
return false;
}
-void RemoteMediaPlayerProxy::mediaPlayerEngineFailedToLoad() const
-{
- notImplemented();
-}
-
double RemoteMediaPlayerProxy::mediaPlayerRequestedPlaybackRate() const
{
notImplemented();
Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h (253656 => 253657)
--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h 2019-12-18 00:00:23 UTC (rev 253656)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h 2019-12-18 00:02:56 UTC (rev 253657)
@@ -60,6 +60,8 @@
void load(const URL&, const ContentType&, const String&);
void cancelLoad();
+ void prepareToPlay();
+
void play();
void pause();
@@ -66,6 +68,10 @@
void setVolume(double);
void setMuted(bool);
+ void setPreload(WebCore::MediaPlayerEnums::Preload);
+ void setPrivateBrowsingMode(bool);
+ void setPreservesPitch(bool);
+
private:
// MediaPlayerClient
void mediaPlayerNetworkStateChanged() final;
Modified: trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp (253656 => 253657)
--- trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp 2019-12-18 00:00:23 UTC (rev 253656)
+++ trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.cpp 2019-12-18 00:02:56 UTC (rev 253657)
@@ -106,7 +106,7 @@
void MediaPlayerPrivateRemote::prepareToPlay()
{
- notImplemented();
+ m_manager.gpuProcessConnection().send(Messages::RemoteMediaPlayerManagerProxy::PrepareToPlay(m_id), 0);
}
PlatformLayer* MediaPlayerPrivateRemote::platformLayer() const
@@ -166,12 +166,6 @@
}
#endif
-long MediaPlayerPrivateRemote::platformErrorCode() const
-{
- notImplemented();
- return 0;
-}
-
void MediaPlayerPrivateRemote::play()
{
m_manager.gpuProcessConnection().send(Messages::RemoteMediaPlayerManagerProxy::Play(m_id), 0);
@@ -205,12 +199,6 @@
return false;
}
-bool MediaPlayerPrivateRemote::requiresImmediateCompositing() const
-{
- notImplemented();
- return false;
-}
-
bool MediaPlayerPrivateRemote::canSaveMediaData() const
{
notImplemented();
@@ -279,9 +267,9 @@
notImplemented();
}
-void MediaPlayerPrivateRemote::setPreservesPitch(bool)
+void MediaPlayerPrivateRemote::setPreservesPitch(bool preservesPitch)
{
- notImplemented();
+ m_manager.gpuProcessConnection().send(Messages::RemoteMediaPlayerManagerProxy::SetPreservesPitch(m_id, preservesPitch), 0);
}
void MediaPlayerPrivateRemote::setVolumeDouble(double volume)
@@ -294,6 +282,16 @@
m_manager.gpuProcessConnection().send(Messages::RemoteMediaPlayerManagerProxy::SetMuted(m_id, muted), 0);
}
+void MediaPlayerPrivateRemote::setPreload(MediaPlayer::Preload preload)
+{
+ m_manager.gpuProcessConnection().send(Messages::RemoteMediaPlayerManagerProxy::SetPreload(m_id, preload), 0);
+}
+
+void MediaPlayerPrivateRemote::setPrivateBrowsingMode(bool privateMode)
+{
+ m_manager.gpuProcessConnection().send(Messages::RemoteMediaPlayerManagerProxy::SetPrivateBrowsingMode(m_id, privateMode), 0);
+}
+
bool MediaPlayerPrivateRemote::hasClosedCaptions() const
{
notImplemented();
@@ -392,11 +390,6 @@
return nullptr;
}
-void MediaPlayerPrivateRemote::setPreload(MediaPlayer::Preload)
-{
- notImplemented();
-}
-
bool MediaPlayerPrivateRemote::hasAvailableVideoFrame() const
{
notImplemented();
@@ -568,11 +561,6 @@
return 0;
}
-void MediaPlayerPrivateRemote::setPrivateBrowsingMode(bool)
-{
- notImplemented();
-}
-
String MediaPlayerPrivateRemote::engineDescription() const
{
notImplemented();
@@ -785,6 +773,12 @@
m_player->playbackStateChanged();
}
+void MediaPlayerPrivateRemote::engineFailedToLoad(long platformErrorCode)
+{
+ m_platformErrorCode = platformErrorCode;
+ m_player->remoteEngineFailedToLoad();
+}
+
#if !RELEASE_LOG_DISABLED
WTFLogChannel& MediaPlayerPrivateRemote::logChannel() const
{
Modified: trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h (253656 => 253657)
--- trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h 2019-12-18 00:00:23 UTC (rev 253656)
+++ trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h 2019-12-18 00:02:56 UTC (rev 253657)
@@ -63,6 +63,7 @@
void durationChanged(MediaTime);
void rateChanged(double);
void playbackStateChanged(bool);
+ void engineFailedToLoad(long);
#if !RELEASE_LOG_DISABLED
const Logger& logger() const final { return *m_logger; }
@@ -83,7 +84,19 @@
#endif
void cancelLoad() final;
+ void play() final;
+ void pause() final;
+
void prepareToPlay() final;
+ long platformErrorCode() const final { return m_platformErrorCode; }
+
+ double rate() const final { return m_rate; }
+ void setVolumeDouble(double) final;
+ void setMuted(bool) final;
+ void setPrivateBrowsingMode(bool) final;
+ void setPreservesPitch(bool) final;
+
+ // Unimplemented
PlatformLayer* platformLayer() const final;
#if PLATFORM(IOS_FAMILY) || (PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE))
@@ -100,16 +113,12 @@
String accessLog() const final;
String errorLog() const final;
#endif
- long platformErrorCode() const final;
- void play() final;
- void pause() final;
void setBufferingPolicy(MediaPlayer::BufferingPolicy) final;
bool supportsPictureInPicture() const final;
bool supportsFullscreen() const final;
bool supportsScanning() const final;
- bool requiresImmediateCompositing() const final;
bool canSaveMediaData() const final;
@@ -133,20 +142,13 @@
MediaTime startTime() const final;
void setRateDouble(double) final;
- double rate() const final { return m_rate; }
- void setPreservesPitch(bool) final;
-
bool paused() const final { return m_paused; }
- void setVolumeDouble(double) final;
-
#if PLATFORM(IOS_FAMILY) || USE(GSTREAMER)
float volume() const final { return 1; }
#endif
- void setMuted(bool) final;
-
bool hasClosedCaptions() const final;
void setClosedCaptionsVisible(bool) final;
@@ -228,7 +230,6 @@
unsigned audioDecodedByteCount() const final;
unsigned videoDecodedByteCount() const final;
- void setPrivateBrowsingMode(bool) final;
String engineDescription() const final;
#if ENABLE(WEB_AUDIO)
@@ -302,6 +303,7 @@
bool m_muted { false };
MediaTime m_duration;
double m_rate { 1 };
+ long m_platformErrorCode { 0 };
bool m_paused { false };
#if !RELEASE_LOG_DISABLED
Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp (253656 => 253657)
--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp 2019-12-18 00:00:23 UTC (rev 253656)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.cpp 2019-12-18 00:02:56 UTC (rev 253657)
@@ -237,6 +237,12 @@
player->playbackStateChanged(paused);
}
+void RemoteMediaPlayerManager::engineFailedToLoad(WebKit::MediaPlayerPrivateRemoteIdentifier id, long platformErrorCode)
+{
+ if (auto player = m_players.get(id))
+ player->engineFailedToLoad(platformErrorCode);
+}
+
void RemoteMediaPlayerManager::updatePreferences(const Settings& settings)
{
auto registerEngine = [this](MediaEngineRegistrar registrar, MediaPlayerEnums::MediaEngineIdentifier remoteEngineIdentifier) {
Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.h (253656 => 253657)
--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.h 2019-12-18 00:00:23 UTC (rev 253656)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.h 2019-12-18 00:02:56 UTC (rev 253657)
@@ -78,6 +78,7 @@
void durationChanged(WebKit::MediaPlayerPrivateRemoteIdentifier, MediaTime&&);
void rateChanged(WebKit::MediaPlayerPrivateRemoteIdentifier, double);
void playbackStateChanged(WebKit::MediaPlayerPrivateRemoteIdentifier, bool);
+ void engineFailedToLoad(WebKit::MediaPlayerPrivateRemoteIdentifier, long);
friend class MediaPlayerRemoteFactory;
void getSupportedTypes(WebCore::MediaPlayerEnums::MediaEngineIdentifier, HashSet<String, ASCIICaseInsensitiveHash>&);
Modified: trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.messages.in (253656 => 253657)
--- trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.messages.in 2019-12-18 00:00:23 UTC (rev 253656)
+++ trunk/Source/WebKit/WebProcess/GPU/media/RemoteMediaPlayerManager.messages.in 2019-12-18 00:02:56 UTC (rev 253657)
@@ -33,6 +33,7 @@
DurationChanged(WebKit::MediaPlayerPrivateRemoteIdentifier id, MediaTime time)
RateChanged(WebKit::MediaPlayerPrivateRemoteIdentifier id, double rate)
PlaybackStateChanged(WebKit::MediaPlayerPrivateRemoteIdentifier id, bool paused)
+ EngineFailedToLoad(WebKit::MediaPlayerPrivateRemoteIdentifier id, int platformErrorCode)
}
#endif