Changeset 237458 in webkit
- Timestamp:
- Oct 26, 2018, 8:04:44 AM (8 years ago)
- Location:
- trunk/Source
- Files:
-
- 16 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/Scripts/webkit/messages.py (modified) (2 diffs)
-
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
r237457 r237458 1 2018-10-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-10-26 Zalan Bujtas <zalan@apple.com> 2 23 -
trunk/Source/WebCore/PAL/ChangeLog
r237405 r237458 1 2018-10-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-10-24 Alexey Proskuryakov <ap@apple.com> 2 12 -
trunk/Source/WebCore/PAL/pal/spi/cocoa/AVKitSPI.h
r237266 r237458 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
r237266 r237458 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
r237266 r237458 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
r237266 r237458 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
r237266 r237458 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
r237266 r237458 542 542 543 543 - (BOOL)playerViewControllerShouldHandleDoneButtonTap:(AVPlayerViewController *)playerViewController; 544 - (void)setWebKitOverrideRouteSharingPolicy:(NSUInteger)routeSharingPolicy routingContextUID:(NSString *)routingContextUID; 544 545 @end 545 546 NS_ASSUME_NONNULL_END … … 573 574 574 575 return YES; 576 } 577 578 - (void)setWebKitOverrideRouteSharingPolicy:(NSUInteger)routeSharingPolicy routingContextUID:(NSString *)routingContextUID 579 { 580 #pragma clang diagnostic push 581 #pragma clang diagnostic ignored "-Wunknown-pragmas" 582 #pragma clang diagnostic ignored "-Wunguarded-availability-new" 583 if ([_avPlayerViewController respondsToSelector:@selector(setWebKitOverrideRouteSharingPolicy:routingContextUID:)]) 584 [_avPlayerViewController setWebKitOverrideRouteSharingPolicy:routeSharingPolicy routingContextUID:routingContextUID]; 585 #pragma clang diagnostic pop 575 586 } 576 587 … … 759 770 m_videoFullscreenModel = model; 760 771 761 if (m_videoFullscreenModel) 772 if (m_videoFullscreenModel) { 762 773 m_videoFullscreenModel->addClient(*this); 774 m_videoFullscreenModel->requestRouteSharingPolicyAndContextUID([this, protectedThis = makeRefPtr(this)] (RouteSharingPolicy policy, String contextUID) { 775 m_routeSharingPolicy = policy; 776 m_routingContextUID = contextUID; 777 778 if (m_playerViewController && !m_routingContextUID.isEmpty()) 779 [m_playerViewController setWebKitOverrideRouteSharingPolicy:(NSUInteger)m_routeSharingPolicy routingContextUID:m_routingContextUID]; 780 }); 781 } 763 782 764 783 hasVideoChanged(m_videoFullscreenModel ? m_videoFullscreenModel->hasVideo() : false); … … 1221 1240 [m_playerViewController setAllowsPictureInPicturePlayback:m_allowsPictureInPicturePlayback]; 1222 1241 [playerController() setPictureInPicturePossible:m_allowsPictureInPicturePlayback]; 1242 if (!m_routingContextUID.isEmpty()) 1243 [m_playerViewController setWebKitOverrideRouteSharingPolicy:(NSUInteger)m_routeSharingPolicy routingContextUID:m_routingContextUID]; 1223 1244 1224 1245 #if PLATFORM(WATCHOS) -
trunk/Source/WebKit/ChangeLog
r237423 r237458 1 2018-10-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 Drive-by fix: messages.py generates "WTFMove(*arg1, *arg2)" instead of "WTFMove(*arg1), WTFMove(*arg2)" 12 in its reply handler generation. 13 14 * Platform/IPC/MessageSender.h: 15 (IPC::MessageSender::sendWithAsyncReply): 16 * Scripts/webkit/messages.py: 17 * UIProcess/Cocoa/VideoFullscreenManagerProxy.h: 18 * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm: 19 (WebKit::VideoFullscreenModelContext::requestRouteSharingPolicyAndContextUID): 20 * WebProcess/cocoa/VideoFullscreenManager.h: 21 * WebProcess/cocoa/VideoFullscreenManager.messages.in: 22 * WebProcess/cocoa/VideoFullscreenManager.mm: 23 (WebKit::VideoFullscreenManager::requestRouteSharingPolicyAndContextUID): 24 1 25 2018-10-25 Michael Catanzaro <mcatanzaro@igalia.com> 2 26 -
trunk/Source/WebKit/Platform/IPC/MessageSender.h
r208415 r237458 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/Scripts/webkit/messages.py
r237300 r237458 560 560 if message.has_attribute(ASYNC_ATTRIBUTE): 561 561 move_parameters = message.name, ', '.join([move_type(x.type) for x in message.reply_parameters]) 562 move_values = ', '.join(['WTFMove(*%s)' % x.name for x in message.reply_parameters]) 562 563 result.append('void %s::callReply(IPC::Decoder& decoder, CompletionHandler<void(%s)>&& completionHandler)\n{\n' % move_parameters) 563 564 for x in message.reply_parameters: … … 565 566 result.append(' decoder >> %s;\n' % x.name) 566 567 result.append(' if (!%s) {\n ASSERT_NOT_REACHED();\n return;\n }\n' % x.name) 567 result.append(' completionHandler( WTFMove(*%s));\n}\n\n' % (', *'.join(x.name for x in message.reply_parameters)))568 result.append(' completionHandler(%s);\n}\n\n' % move_values) 568 569 result.append('void %s::cancelReply(CompletionHandler<void(%s)>&& completionHandler)\n{\n completionHandler(' % move_parameters) 569 570 result.append(', '.join(['{ }' for x in message.reply_parameters])) -
trunk/Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.h
r237266 r237458 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
r237266 r237458 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
r237266 r237458 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
r237266 r237458 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
r237266 r237458 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.