Diff
Modified: trunk/Source/WebCore/ChangeLog (238527 => 238528)
--- trunk/Source/WebCore/ChangeLog 2018-11-26 23:06:57 UTC (rev 238527)
+++ trunk/Source/WebCore/ChangeLog 2018-11-27 00:02:28 UTC (rev 238528)
@@ -1,3 +1,24 @@
+2018-11-26 Jer Noble <jer.no...@apple.com>
+
+ Adopt -setOverrideRouteSharingPolicy:routingContextUID: SPI
+ https://bugs.webkit.org/show_bug.cgi?id=190951
+ <rdar://problem/45213065>
+
+ Reviewed by Alex Christensen.
+
+ Request the correct route policy and context from the VideoFullscreenModel.
+
+ * platform/cocoa/VideoFullscreenModel.h:
+ (WebCore::VideoFullscreenModel::requestRouteSharingPolicyAndContextUID):
+ * platform/cocoa/VideoFullscreenModelVideoElement.h:
+ * platform/cocoa/VideoFullscreenModelVideoElement.mm:
+ (WebCore::VideoFullscreenModelVideoElement::requestRouteSharingPolicyAndContextUID):
+ * platform/ios/VideoFullscreenInterfaceAVKit.h:
+ * platform/ios/VideoFullscreenInterfaceAVKit.mm:
+ (-[WebAVPlayerViewController setWebKitOverrideRouteSharingPolicy:routingContextUID:]):
+ (VideoFullscreenInterfaceAVKit::setVideoFullscreenModel):
+ (VideoFullscreenInterfaceAVKit::doSetup):
+
2018-11-24 Ryosuke Niwa <rn...@webkit.org>
SVG use element inside a shadow tree cannot reference an element in the same tree
Modified: trunk/Source/WebCore/PAL/ChangeLog (238527 => 238528)
--- trunk/Source/WebCore/PAL/ChangeLog 2018-11-26 23:06:57 UTC (rev 238527)
+++ trunk/Source/WebCore/PAL/ChangeLog 2018-11-27 00:02:28 UTC (rev 238528)
@@ -1,3 +1,13 @@
+2018-11-26 Jer Noble <jer.no...@apple.com>
+
+ Adopt -setOverrideRouteSharingPolicy:routingContextUID: SPI
+ https://bugs.webkit.org/show_bug.cgi?id=190951
+ <rdar://problem/45213065>
+
+ Reviewed by Alex Christensen.
+
+ * pal/spi/cocoa/AVKitSPI.h:
+
2018-11-26 Andy Estes <aes...@apple.com>
[Cocoa] Make it easier to encode NSObjects
Modified: trunk/Source/WebCore/PAL/pal/spi/cocoa/AVKitSPI.h (238527 => 238528)
--- trunk/Source/WebCore/PAL/pal/spi/cocoa/AVKitSPI.h 2018-11-26 23:06:57 UTC (rev 238527)
+++ trunk/Source/WebCore/PAL/pal/spi/cocoa/AVKitSPI.h 2018-11-27 00:02:28 UTC (rev 238528)
@@ -73,6 +73,7 @@
@property (nonatomic, readonly, getter=isPictureInPictureActive) BOOL pictureInPictureActive;
@property (nonatomic, readonly, getter=isPictureInPictureSuspended) BOOL pictureInPictureSuspended;
@property (nonatomic, readonly) BOOL pictureInPictureWasStartedWhenEnteringBackground;
+- (void)setWebKitOverrideRouteSharingPolicy:(NSUInteger)routeSharingPolicy routingContextUID:(NSString *)routingContextUID;
@end
@protocol AVPlayerViewControllerDelegate_WebKitOnly <AVPlayerViewControllerDelegate>
@@ -163,6 +164,7 @@
@property (nonatomic, strong, nullable) AVPlayerController *playerController;
@property (nonatomic, readonly, getter=isPictureInPictureActive) BOOL pictureInPictureActive;
@property (nonatomic, readonly) BOOL pictureInPictureWasStartedWhenEnteringBackground;
+- (void)setWebKitOverrideRouteSharingPolicy:(NSUInteger)routeSharingPolicy routingContextUID:(NSString *)routingContextUID;
@end
NS_ASSUME_NONNULL_END
Modified: trunk/Source/WebCore/platform/cocoa/VideoFullscreenModel.h (238527 => 238528)
--- trunk/Source/WebCore/platform/cocoa/VideoFullscreenModel.h 2018-11-26 23:06:57 UTC (rev 238527)
+++ trunk/Source/WebCore/platform/cocoa/VideoFullscreenModel.h 2018-11-27 00:02:28 UTC (rev 238528)
@@ -28,10 +28,12 @@
#if PLATFORM(IOS_FAMILY) || (PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE))
+#include "AudioSession.h"
#include "FloatRect.h"
#include "HTMLMediaElementEnums.h"
#include "MediaPlayerEnums.h"
#include "PlaybackSessionModel.h"
+#include <wtf/CompletionHandler.h>
#if PLATFORM(IOS_FAMILY)
OBJC_CLASS AVPlayerViewController;
@@ -62,6 +64,8 @@
virtual void willExitPictureInPicture() = 0;
virtual void didExitPictureInPicture() = 0;
+ virtual void requestRouteSharingPolicyAndContextUID(CompletionHandler<void(RouteSharingPolicy, String)>&& completionHandler) { completionHandler(RouteSharingPolicy::Default, emptyString()); }
+
#if PLATFORM(IOS_FAMILY)
virtual UIViewController *presentingViewController() { return nullptr; }
virtual UIViewController *createVideoFullscreenViewController(AVPlayerViewController *) { return nullptr; }
Modified: trunk/Source/WebCore/platform/cocoa/VideoFullscreenModelVideoElement.h (238527 => 238528)
--- trunk/Source/WebCore/platform/cocoa/VideoFullscreenModelVideoElement.h 2018-11-26 23:06:57 UTC (rev 238527)
+++ trunk/Source/WebCore/platform/cocoa/VideoFullscreenModelVideoElement.h 2018-11-27 00:02:28 UTC (rev 238528)
@@ -72,6 +72,7 @@
FloatSize videoDimensions() const override { return m_videoDimensions; }
bool hasVideo() const override { return m_hasVideo; }
+ WEBCORE_EXPORT void requestRouteSharingPolicyAndContextUID(CompletionHandler<void(RouteSharingPolicy, String)>&&) override;
protected:
WEBCORE_EXPORT VideoFullscreenModelVideoElement();
Modified: trunk/Source/WebCore/platform/cocoa/VideoFullscreenModelVideoElement.mm (238527 => 238528)
--- trunk/Source/WebCore/platform/cocoa/VideoFullscreenModelVideoElement.mm 2018-11-26 23:06:57 UTC (rev 238527)
+++ trunk/Source/WebCore/platform/cocoa/VideoFullscreenModelVideoElement.mm 2018-11-27 00:02:28 UTC (rev 238528)
@@ -187,6 +187,12 @@
m_videoElement->fullscreenModeChanged(videoFullscreenMode);
}
+void VideoFullscreenModelVideoElement::requestRouteSharingPolicyAndContextUID(CompletionHandler<void(RouteSharingPolicy, String)>&& completionHandler)
+{
+ auto& session = AudioSession::sharedSession();
+ completionHandler(session.routeSharingPolicy(), session.routingContextUID());
+}
+
void VideoFullscreenModelVideoElement::addClient(VideoFullscreenModelClient& client)
{
ASSERT(!m_clients.contains(&client));
Modified: trunk/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.h (238527 => 238528)
--- trunk/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.h 2018-11-26 23:06:57 UTC (rev 238527)
+++ trunk/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.h 2018-11-27 00:02:28 UTC (rev 238528)
@@ -57,7 +57,7 @@
class FloatSize;
class VideoFullscreenModel;
class VideoFullscreenChangeObserver;
-
+
class VideoFullscreenInterfaceAVKit final
: public VideoFullscreenModelClient
, public PlaybackSessionModelClient
@@ -184,6 +184,8 @@
WTF::Function<void(bool)> m_prepareToInlineCallback;
RunLoop::Timer<VideoFullscreenInterfaceAVKit> m_watchdogTimer;
FloatRect m_inlineRect;
+ RouteSharingPolicy m_routeSharingPolicy { RouteSharingPolicy::Default };
+ String m_routingContextUID;
bool m_allowsPictureInPicturePlayback { false };
bool m_wirelessVideoPlaybackDisabled { true };
bool m_shouldReturnToFullscreenWhenStoppingPiP { false };
Modified: trunk/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm (238527 => 238528)
--- trunk/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm 2018-11-26 23:06:57 UTC (rev 238527)
+++ trunk/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm 2018-11-27 00:02:28 UTC (rev 238528)
@@ -547,6 +547,7 @@
- (void)stopPictureInPicture;
- (BOOL)playerViewControllerShouldHandleDoneButtonTap:(AVPlayerViewController *)playerViewController;
+- (void)setWebKitOverrideRouteSharingPolicy:(NSUInteger)routeSharingPolicy routingContextUID:(NSString *)routingContextUID;
@end
NS_ASSUME_NONNULL_END
@@ -580,6 +581,16 @@
return YES;
}
+- (void)setWebKitOverrideRouteSharingPolicy:(NSUInteger)routeSharingPolicy routingContextUID:(NSString *)routingContextUID
+{
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunknown-pragmas"
+#pragma clang diagnostic ignored "-Wunguarded-availability-new"
+ if ([_avPlayerViewController respondsToSelector:@selector(setWebKitOverrideRouteSharingPolicy:routingContextUID:)])
+ [_avPlayerViewController setWebKitOverrideRouteSharingPolicy:routeSharingPolicy routingContextUID:routingContextUID];
+#pragma clang diagnostic pop
+}
+
- (void)enterFullScreenAnimated:(BOOL)animated completionHandler:(void (^)(BOOL success, NSError * __nullable error))completionHandler
{
#if PLATFORM(WATCHOS)
@@ -764,9 +775,17 @@
m_videoFullscreenModel = model;
- if (m_videoFullscreenModel)
+ if (m_videoFullscreenModel) {
m_videoFullscreenModel->addClient(*this);
+ m_videoFullscreenModel->requestRouteSharingPolicyAndContextUID([this, protectedThis = makeRefPtr(this)] (RouteSharingPolicy policy, String contextUID) {
+ m_routeSharingPolicy = policy;
+ m_routingContextUID = contextUID;
+ if (m_playerViewController && !m_routingContextUID.isEmpty())
+ [m_playerViewController setWebKitOverrideRouteSharingPolicy:(NSUInteger)m_routeSharingPolicy routingContextUID:m_routingContextUID];
+ });
+ }
+
hasVideoChanged(m_videoFullscreenModel ? m_videoFullscreenModel->hasVideo() : false);
videoDimensionsChanged(m_videoFullscreenModel ? m_videoFullscreenModel->videoDimensions() : FloatSize());
}
@@ -1229,6 +1248,8 @@
[m_playerViewController setDelegate:m_playerViewControllerDelegate.get()];
[m_playerViewController setAllowsPictureInPicturePlayback:m_allowsPictureInPicturePlayback];
[playerController() setPictureInPicturePossible:m_allowsPictureInPicturePlayback];
+ if (!m_routingContextUID.isEmpty())
+ [m_playerViewController setWebKitOverrideRouteSharingPolicy:(NSUInteger)m_routeSharingPolicy routingContextUID:m_routingContextUID];
#if PLATFORM(WATCHOS)
m_viewController = videoFullscreenModel()->createVideoFullscreenViewController(m_playerViewController.get().avPlayerViewController);
Modified: trunk/Source/WebKit/ChangeLog (238527 => 238528)
--- trunk/Source/WebKit/ChangeLog 2018-11-26 23:06:57 UTC (rev 238527)
+++ trunk/Source/WebKit/ChangeLog 2018-11-27 00:02:28 UTC (rev 238528)
@@ -1,3 +1,23 @@
+2018-11-26 Jer Noble <jer.no...@apple.com>
+
+ Adopt -setOverrideRouteSharingPolicy:routingContextUID: SPI
+ https://bugs.webkit.org/show_bug.cgi?id=190951
+ <rdar://problem/45213065>
+
+ Reviewed by Alex Christensen.
+
+ Add an asyncronous reply request to VideoFullscreenManager.
+
+ * Platform/IPC/MessageSender.h:
+ (IPC::MessageSender::sendWithAsyncReply):
+ * UIProcess/Cocoa/VideoFullscreenManagerProxy.h:
+ * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm:
+ (WebKit::VideoFullscreenModelContext::requestRouteSharingPolicyAndContextUID):
+ * WebProcess/cocoa/VideoFullscreenManager.h:
+ * WebProcess/cocoa/VideoFullscreenManager.messages.in:
+ * WebProcess/cocoa/VideoFullscreenManager.mm:
+ (WebKit::VideoFullscreenManager::requestRouteSharingPolicyAndContextUID):
+
2018-11-26 Alex Christensen <achristen...@webkit.org>
Rename WKWebView._safeBrowsingWarningForTesting to _safeBrowsingWarning to use it for more than testing
Modified: trunk/Source/WebKit/Platform/IPC/MessageSender.h (238527 => 238528)
--- trunk/Source/WebKit/Platform/IPC/MessageSender.h 2018-11-26 23:06:57 UTC (rev 238527)
+++ trunk/Source/WebKit/Platform/IPC/MessageSender.h 2018-11-27 00:02:28 UTC (rev 238528)
@@ -65,6 +65,14 @@
return messageSenderConnection()->sendSync(WTFMove(message), WTFMove(reply), destinationID, timeout, sendSyncOptions);
}
+ template<typename T, typename... Args>
+ void sendWithAsyncReply(T&& message, CompletionHandler<void(Args...)>&& args, uint64_t destinationID = 0)
+ {
+ ASSERT(messageSenderConnection());
+
+ messageSenderConnection()->sendWithAsyncReply(WTFMove(message), WTFMove(args), destinationID);
+ }
+
virtual bool sendMessage(std::unique_ptr<Encoder>, OptionSet<SendOption>);
private:
Modified: trunk/Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.h (238527 => 238528)
--- trunk/Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.h 2018-11-26 23:06:57 UTC (rev 238527)
+++ trunk/Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.h 2018-11-27 00:02:28 UTC (rev 238528)
@@ -28,6 +28,7 @@
#if (PLATFORM(IOS_FAMILY) && HAVE(AVKIT)) || (PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE))
#include "MessageReceiver.h"
+#include <WebCore/AudioSession.h>
#include <WebCore/GraphicsLayer.h>
#include <WebCore/PlatformView.h>
#include <WebCore/VideoFullscreenChangeObserver.h>
@@ -36,6 +37,7 @@
#include <wtf/HashSet.h>
#include <wtf/RefCounted.h>
#include <wtf/RefPtr.h>
+#include <wtf/text/WTFString.h>
#if PLATFORM(IOS_FAMILY)
#include <WebCore/VideoFullscreenInterfaceAVKit.h>
@@ -93,6 +95,7 @@
void failedToEnterPictureInPicture() final;
void willExitPictureInPicture() final;
void didExitPictureInPicture() final;
+ void requestRouteSharingPolicyAndContextUID(CompletionHandler<void(WebCore::RouteSharingPolicy, String)>&&) final;
// VideoFullscreenChangeObserver
void requestUpdateInlineRect() final;
@@ -127,6 +130,8 @@
void applicationDidBecomeActive();
bool isVisible() const;
+ void requestRouteSharingPolicyAndContextUID(uint64_t contextId, CompletionHandler<void(WebCore::RouteSharingPolicy, String)>&&);
+
#if ENABLE(VIDEO_PRESENTATION_MODE)
bool isPlayingVideoInEnhancedFullscreen() const;
#endif
Modified: trunk/Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm (238527 => 238528)
--- trunk/Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm 2018-11-26 23:06:57 UTC (rev 238527)
+++ trunk/Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm 2018-11-27 00:02:28 UTC (rev 238528)
@@ -274,6 +274,14 @@
m_manager->fullscreenMayReturnToInline(m_contextId);
}
+void VideoFullscreenModelContext::requestRouteSharingPolicyAndContextUID(CompletionHandler<void(WebCore::RouteSharingPolicy, String)>&& completionHandler)
+{
+ if (m_manager)
+ m_manager->requestRouteSharingPolicyAndContextUID(m_contextId, WTFMove(completionHandler));
+ else
+ completionHandler(WebCore::RouteSharingPolicy::Default, emptyString());
+}
+
void VideoFullscreenModelContext::willEnterPictureInPicture()
{
for (auto& client : m_clients)
@@ -393,6 +401,11 @@
std::get<1>(tuple)->applicationDidBecomeActive();
}
+void VideoFullscreenManagerProxy::requestRouteSharingPolicyAndContextUID(uint64_t contextId, CompletionHandler<void(WebCore::RouteSharingPolicy, String)>&& callback)
+{
+ m_page->sendWithAsyncReply(Messages::VideoFullscreenManager::RequestRouteSharingPolicyAndContextUID(contextId), WTFMove(callback));
+}
+
VideoFullscreenManagerProxy::ModelInterfaceTuple VideoFullscreenManagerProxy::createModelAndInterface(uint64_t contextId)
{
auto& playbackSessionModel = m_playbackSessionManagerProxy->ensureModel(contextId);
Modified: trunk/Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.h (238527 => 238528)
--- trunk/Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.h 2018-11-26 23:06:57 UTC (rev 238527)
+++ trunk/Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.h 2018-11-27 00:02:28 UTC (rev 238528)
@@ -27,7 +27,9 @@
#if (PLATFORM(IOS_FAMILY) && HAVE(AVKIT)) || (PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE))
+#include "Connection.h"
#include "MessageReceiver.h"
+#include "VideoFullscreenManagerMessages.h"
#include <WebCore/EventListener.h>
#include <WebCore/HTMLMediaElementEnums.h>
#include <WebCore/PlatformCALayer.h>
@@ -151,7 +153,8 @@
void setVideoLayerGravityEnum(uint64_t contextId, unsigned gravity);
void fullscreenModeChanged(uint64_t contextId, WebCore::HTMLMediaElementEnums::VideoFullscreenMode);
void fullscreenMayReturnToInline(uint64_t contextId, bool isPageVisible);
-
+ void requestRouteSharingPolicyAndContextUID(uint64_t contextId, Messages::VideoFullscreenManager::RequestRouteSharingPolicyAndContextUID::AsyncReply&&);
+
WebPage* m_page;
Ref<PlaybackSessionManager> m_playbackSessionManager;
HashMap<WebCore::HTMLVideoElement*, uint64_t> m_videoElements;
Modified: trunk/Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.messages.in (238527 => 238528)
--- trunk/Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.messages.in 2018-11-26 23:06:57 UTC (rev 238527)
+++ trunk/Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.messages.in 2018-11-27 00:02:28 UTC (rev 238528)
@@ -35,5 +35,6 @@
SetVideoLayerGravityEnum(uint64_t contextId, unsigned gravity)
FullscreenModeChanged(uint64_t contextId, WebCore::HTMLMediaElementEnums::VideoFullscreenMode videoFullscreenMode)
FullscreenMayReturnToInline(uint64_t contextId, bool isPageVisible)
+ RequestRouteSharingPolicyAndContextUID(uint64_t contextId) -> (enum:uint8_t WebCore::RouteSharingPolicy routeSharingPolicy, String routingContextUID) Async
}
#endif
Modified: trunk/Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.mm (238527 => 238528)
--- trunk/Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.mm 2018-11-26 23:06:57 UTC (rev 238527)
+++ trunk/Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.mm 2018-11-27 00:02:28 UTC (rev 238528)
@@ -30,7 +30,6 @@
#import "Attachment.h"
#import "Logging.h"
#import "PlaybackSessionManager.h"
-#import "VideoFullscreenManagerMessages.h"
#import "VideoFullscreenManagerProxyMessages.h"
#import "WebCoreArgumentCoders.h"
#import "WebPage.h"
@@ -558,6 +557,11 @@
model.videoElement()->scrollIntoViewIfNotVisible(false);
m_page->send(Messages::VideoFullscreenManagerProxy::PreparedToReturnToInline(contextId, true, inlineVideoFrame(*model.videoElement())), m_page->pageID());
}
+
+void VideoFullscreenManager::requestRouteSharingPolicyAndContextUID(uint64_t contextId, Messages::VideoFullscreenManager::RequestRouteSharingPolicyAndContextUID::AsyncReply&& reply)
+{
+ ensureModel(contextId).requestRouteSharingPolicyAndContextUID(WTFMove(reply));
+}
void VideoFullscreenManager::setVideoLayerFrameFenced(uint64_t contextId, WebCore::FloatRect bounds, IPC::Attachment fencePort)
{