Changeset 238528 in webkit
- Timestamp:
- Nov 26, 2018, 4:02:28 PM (8 years ago)
- Location:
- trunk/Source
- Files:
-
- 15 edited
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/PAL/ChangeLog (modified) (1 diff)
-
WebCore/PAL/pal/spi/cocoa/AVKitSPI.h (modified) (2 diffs)
-
WebCore/platform/cocoa/VideoFullscreenModel.h (modified) (2 diffs)
-
WebCore/platform/cocoa/VideoFullscreenModelVideoElement.h (modified) (1 diff)
-
WebCore/platform/cocoa/VideoFullscreenModelVideoElement.mm (modified) (1 diff)
-
WebCore/platform/ios/VideoFullscreenInterfaceAVKit.h (modified) (2 diffs)
-
WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm (modified) (4 diffs)
-
WebKit/ChangeLog (modified) (1 diff)
-
WebKit/Platform/IPC/MessageSender.h (modified) (1 diff)
-
WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.h (modified) (4 diffs)
-
WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm (modified) (2 diffs)
-
WebKit/WebProcess/cocoa/VideoFullscreenManager.h (modified) (2 diffs)
-
WebKit/WebProcess/cocoa/VideoFullscreenManager.messages.in (modified) (1 diff)
-
WebKit/WebProcess/cocoa/VideoFullscreenManager.mm (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r238524 r238528 1 2018-11-26 Jer Noble <jer.noble@apple.com> 2 3 Adopt -setOverrideRouteSharingPolicy:routingContextUID: SPI 4 https://bugs.webkit.org/show_bug.cgi?id=190951 5 <rdar://problem/45213065> 6 7 Reviewed by Alex Christensen. 8 9 Request the correct route policy and context from the VideoFullscreenModel. 10 11 * platform/cocoa/VideoFullscreenModel.h: 12 (WebCore::VideoFullscreenModel::requestRouteSharingPolicyAndContextUID): 13 * platform/cocoa/VideoFullscreenModelVideoElement.h: 14 * platform/cocoa/VideoFullscreenModelVideoElement.mm: 15 (WebCore::VideoFullscreenModelVideoElement::requestRouteSharingPolicyAndContextUID): 16 * platform/ios/VideoFullscreenInterfaceAVKit.h: 17 * platform/ios/VideoFullscreenInterfaceAVKit.mm: 18 (-[WebAVPlayerViewController setWebKitOverrideRouteSharingPolicy:routingContextUID:]): 19 (VideoFullscreenInterfaceAVKit::setVideoFullscreenModel): 20 (VideoFullscreenInterfaceAVKit::doSetup): 21 1 22 2018-11-24 Ryosuke Niwa <rniwa@webkit.org> 2 23 -
trunk/Source/WebCore/PAL/ChangeLog
r238515 r238528 1 2018-11-26 Jer Noble <jer.noble@apple.com> 2 3 Adopt -setOverrideRouteSharingPolicy:routingContextUID: SPI 4 https://bugs.webkit.org/show_bug.cgi?id=190951 5 <rdar://problem/45213065> 6 7 Reviewed by Alex Christensen. 8 9 * pal/spi/cocoa/AVKitSPI.h: 10 1 11 2018-11-26 Andy Estes <aestes@apple.com> 2 12 -
trunk/Source/WebCore/PAL/pal/spi/cocoa/AVKitSPI.h
r237483 r238528 74 74 @property (nonatomic, readonly, getter=isPictureInPictureSuspended) BOOL pictureInPictureSuspended; 75 75 @property (nonatomic, readonly) BOOL pictureInPictureWasStartedWhenEnteringBackground; 76 - (void)setWebKitOverrideRouteSharingPolicy:(NSUInteger)routeSharingPolicy routingContextUID:(NSString *)routingContextUID; 76 77 @end 77 78 … … 164 165 @property (nonatomic, readonly, getter=isPictureInPictureActive) BOOL pictureInPictureActive; 165 166 @property (nonatomic, readonly) BOOL pictureInPictureWasStartedWhenEnteringBackground; 167 - (void)setWebKitOverrideRouteSharingPolicy:(NSUInteger)routeSharingPolicy routingContextUID:(NSString *)routingContextUID; 166 168 @end 167 169 -
trunk/Source/WebCore/platform/cocoa/VideoFullscreenModel.h
r237483 r238528 29 29 #if PLATFORM(IOS_FAMILY) || (PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE)) 30 30 31 #include "AudioSession.h" 31 32 #include "FloatRect.h" 32 33 #include "HTMLMediaElementEnums.h" 33 34 #include "MediaPlayerEnums.h" 34 35 #include "PlaybackSessionModel.h" 36 #include <wtf/CompletionHandler.h> 35 37 36 38 #if PLATFORM(IOS_FAMILY) … … 63 65 virtual void didExitPictureInPicture() = 0; 64 66 67 virtual void requestRouteSharingPolicyAndContextUID(CompletionHandler<void(RouteSharingPolicy, String)>&& completionHandler) { completionHandler(RouteSharingPolicy::Default, emptyString()); } 68 65 69 #if PLATFORM(IOS_FAMILY) 66 70 virtual UIViewController *presentingViewController() { return nullptr; } -
trunk/Source/WebCore/platform/cocoa/VideoFullscreenModelVideoElement.h
r237483 r238528 73 73 bool hasVideo() const override { return m_hasVideo; } 74 74 75 WEBCORE_EXPORT void requestRouteSharingPolicyAndContextUID(CompletionHandler<void(RouteSharingPolicy, String)>&&) override; 75 76 76 77 protected: -
trunk/Source/WebCore/platform/cocoa/VideoFullscreenModelVideoElement.mm
r237483 r238528 188 188 } 189 189 190 void VideoFullscreenModelVideoElement::requestRouteSharingPolicyAndContextUID(CompletionHandler<void(RouteSharingPolicy, String)>&& completionHandler) 191 { 192 auto& session = AudioSession::sharedSession(); 193 completionHandler(session.routeSharingPolicy(), session.routingContextUID()); 194 } 195 190 196 void VideoFullscreenModelVideoElement::addClient(VideoFullscreenModelClient& client) 191 197 { -
trunk/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.h
r237483 r238528 58 58 class VideoFullscreenModel; 59 59 class VideoFullscreenChangeObserver; 60 60 61 61 class VideoFullscreenInterfaceAVKit final 62 62 : public VideoFullscreenModelClient … … 185 185 RunLoop::Timer<VideoFullscreenInterfaceAVKit> m_watchdogTimer; 186 186 FloatRect m_inlineRect; 187 RouteSharingPolicy m_routeSharingPolicy { RouteSharingPolicy::Default }; 188 String m_routingContextUID; 187 189 bool m_allowsPictureInPicturePlayback { false }; 188 190 bool m_wirelessVideoPlaybackDisabled { true }; -
trunk/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm
r238516 r238528 548 548 549 549 - (BOOL)playerViewControllerShouldHandleDoneButtonTap:(AVPlayerViewController *)playerViewController; 550 - (void)setWebKitOverrideRouteSharingPolicy:(NSUInteger)routeSharingPolicy routingContextUID:(NSString *)routingContextUID; 550 551 @end 551 552 NS_ASSUME_NONNULL_END … … 579 580 580 581 return YES; 582 } 583 584 - (void)setWebKitOverrideRouteSharingPolicy:(NSUInteger)routeSharingPolicy routingContextUID:(NSString *)routingContextUID 585 { 586 #pragma clang diagnostic push 587 #pragma clang diagnostic ignored "-Wunknown-pragmas" 588 #pragma clang diagnostic ignored "-Wunguarded-availability-new" 589 if ([_avPlayerViewController respondsToSelector:@selector(setWebKitOverrideRouteSharingPolicy:routingContextUID:)]) 590 [_avPlayerViewController setWebKitOverrideRouteSharingPolicy:routeSharingPolicy routingContextUID:routingContextUID]; 591 #pragma clang diagnostic pop 581 592 } 582 593 … … 765 776 m_videoFullscreenModel = model; 766 777 767 if (m_videoFullscreenModel) 778 if (m_videoFullscreenModel) { 768 779 m_videoFullscreenModel->addClient(*this); 780 m_videoFullscreenModel->requestRouteSharingPolicyAndContextUID([this, protectedThis = makeRefPtr(this)] (RouteSharingPolicy policy, String contextUID) { 781 m_routeSharingPolicy = policy; 782 m_routingContextUID = contextUID; 783 784 if (m_playerViewController && !m_routingContextUID.isEmpty()) 785 [m_playerViewController setWebKitOverrideRouteSharingPolicy:(NSUInteger)m_routeSharingPolicy routingContextUID:m_routingContextUID]; 786 }); 787 } 769 788 770 789 hasVideoChanged(m_videoFullscreenModel ? m_videoFullscreenModel->hasVideo() : false); … … 1230 1249 [m_playerViewController setAllowsPictureInPicturePlayback:m_allowsPictureInPicturePlayback]; 1231 1250 [playerController() setPictureInPicturePossible:m_allowsPictureInPicturePlayback]; 1251 if (!m_routingContextUID.isEmpty()) 1252 [m_playerViewController setWebKitOverrideRouteSharingPolicy:(NSUInteger)m_routeSharingPolicy routingContextUID:m_routingContextUID]; 1232 1253 1233 1254 #if PLATFORM(WATCHOS) -
trunk/Source/WebKit/ChangeLog
r238527 r238528 1 2018-11-26 Jer Noble <jer.noble@apple.com> 2 3 Adopt -setOverrideRouteSharingPolicy:routingContextUID: SPI 4 https://bugs.webkit.org/show_bug.cgi?id=190951 5 <rdar://problem/45213065> 6 7 Reviewed by Alex Christensen. 8 9 Add an asyncronous reply request to VideoFullscreenManager. 10 11 * Platform/IPC/MessageSender.h: 12 (IPC::MessageSender::sendWithAsyncReply): 13 * UIProcess/Cocoa/VideoFullscreenManagerProxy.h: 14 * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm: 15 (WebKit::VideoFullscreenModelContext::requestRouteSharingPolicyAndContextUID): 16 * WebProcess/cocoa/VideoFullscreenManager.h: 17 * WebProcess/cocoa/VideoFullscreenManager.messages.in: 18 * WebProcess/cocoa/VideoFullscreenManager.mm: 19 (WebKit::VideoFullscreenManager::requestRouteSharingPolicyAndContextUID): 20 1 21 2018-11-26 Alex Christensen <achristensen@webkit.org> 2 22 -
trunk/Source/WebKit/Platform/IPC/MessageSender.h
r237483 r238528 66 66 } 67 67 68 template<typename T, typename... Args> 69 void sendWithAsyncReply(T&& message, CompletionHandler<void(Args...)>&& args, uint64_t destinationID = 0) 70 { 71 ASSERT(messageSenderConnection()); 72 73 messageSenderConnection()->sendWithAsyncReply(WTFMove(message), WTFMove(args), destinationID); 74 } 75 68 76 virtual bool sendMessage(std::unique_ptr<Encoder>, OptionSet<SendOption>); 69 77 -
trunk/Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.h
r237483 r238528 29 29 30 30 #include "MessageReceiver.h" 31 #include <WebCore/AudioSession.h> 31 32 #include <WebCore/GraphicsLayer.h> 32 33 #include <WebCore/PlatformView.h> … … 37 38 #include <wtf/RefCounted.h> 38 39 #include <wtf/RefPtr.h> 40 #include <wtf/text/WTFString.h> 39 41 40 42 #if PLATFORM(IOS_FAMILY) … … 94 96 void willExitPictureInPicture() final; 95 97 void didExitPictureInPicture() final; 98 void requestRouteSharingPolicyAndContextUID(CompletionHandler<void(WebCore::RouteSharingPolicy, String)>&&) final; 96 99 97 100 // VideoFullscreenChangeObserver … … 127 130 void applicationDidBecomeActive(); 128 131 bool isVisible() const; 132 133 void requestRouteSharingPolicyAndContextUID(uint64_t contextId, CompletionHandler<void(WebCore::RouteSharingPolicy, String)>&&); 129 134 130 135 #if ENABLE(VIDEO_PRESENTATION_MODE) -
trunk/Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm
r238468 r238528 275 275 } 276 276 277 void VideoFullscreenModelContext::requestRouteSharingPolicyAndContextUID(CompletionHandler<void(WebCore::RouteSharingPolicy, String)>&& completionHandler) 278 { 279 if (m_manager) 280 m_manager->requestRouteSharingPolicyAndContextUID(m_contextId, WTFMove(completionHandler)); 281 else 282 completionHandler(WebCore::RouteSharingPolicy::Default, emptyString()); 283 } 284 277 285 void VideoFullscreenModelContext::willEnterPictureInPicture() 278 286 { … … 392 400 for (auto& tuple : m_contextMap.values()) 393 401 std::get<1>(tuple)->applicationDidBecomeActive(); 402 } 403 404 void VideoFullscreenManagerProxy::requestRouteSharingPolicyAndContextUID(uint64_t contextId, CompletionHandler<void(WebCore::RouteSharingPolicy, String)>&& callback) 405 { 406 m_page->sendWithAsyncReply(Messages::VideoFullscreenManager::RequestRouteSharingPolicyAndContextUID(contextId), WTFMove(callback)); 394 407 } 395 408 -
trunk/Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.h
r237483 r238528 28 28 #if (PLATFORM(IOS_FAMILY) && HAVE(AVKIT)) || (PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE)) 29 29 30 #include "Connection.h" 30 31 #include "MessageReceiver.h" 32 #include "VideoFullscreenManagerMessages.h" 31 33 #include <WebCore/EventListener.h> 32 34 #include <WebCore/HTMLMediaElementEnums.h> … … 152 154 void fullscreenModeChanged(uint64_t contextId, WebCore::HTMLMediaElementEnums::VideoFullscreenMode); 153 155 void fullscreenMayReturnToInline(uint64_t contextId, bool isPageVisible); 154 156 void requestRouteSharingPolicyAndContextUID(uint64_t contextId, Messages::VideoFullscreenManager::RequestRouteSharingPolicyAndContextUID::AsyncReply&&); 157 155 158 WebPage* m_page; 156 159 Ref<PlaybackSessionManager> m_playbackSessionManager; -
trunk/Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.messages.in
r237483 r238528 36 36 FullscreenModeChanged(uint64_t contextId, WebCore::HTMLMediaElementEnums::VideoFullscreenMode videoFullscreenMode) 37 37 FullscreenMayReturnToInline(uint64_t contextId, bool isPageVisible) 38 RequestRouteSharingPolicyAndContextUID(uint64_t contextId) -> (enum:uint8_t WebCore::RouteSharingPolicy routeSharingPolicy, String routingContextUID) Async 38 39 } 39 40 #endif -
trunk/Source/WebKit/WebProcess/cocoa/VideoFullscreenManager.mm
r237483 r238528 31 31 #import "Logging.h" 32 32 #import "PlaybackSessionManager.h" 33 #import "VideoFullscreenManagerMessages.h"34 33 #import "VideoFullscreenManagerProxyMessages.h" 35 34 #import "WebCoreArgumentCoders.h" … … 559 558 m_page->send(Messages::VideoFullscreenManagerProxy::PreparedToReturnToInline(contextId, true, inlineVideoFrame(*model.videoElement())), m_page->pageID()); 560 559 } 560 561 void VideoFullscreenManager::requestRouteSharingPolicyAndContextUID(uint64_t contextId, Messages::VideoFullscreenManager::RequestRouteSharingPolicyAndContextUID::AsyncReply&& reply) 562 { 563 ensureModel(contextId).requestRouteSharingPolicyAndContextUID(WTFMove(reply)); 564 } 561 565 562 566 void VideoFullscreenManager::setVideoLayerFrameFenced(uint64_t contextId, WebCore::FloatRect bounds, IPC::Attachment fencePort)
Note:
See TracChangeset
for help on using the changeset viewer.