Changeset 209747 in webkit
- Timestamp:
- Dec 12, 2016, 4:45:37 PM (9 years ago)
- Location:
- trunk/Source
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r209745 r209747 1 2016-12-12 Dean Jackson <dino@apple.com> 2 3 [iOS] MediaDocument "Done" button should navigate the page back 4 https://bugs.webkit.org/show_bug.cgi?id=165779 5 6 Reviewed by Sam Weinig. 7 8 Detect if the exit from fullscreen was caused by the Done button, 9 and if so, tell the page to navigate back. 10 11 Unfortunately this is not yet testable. It's waiting on the 12 UI-based device testing in development by the media team. 13 14 * platform/cocoa/WebVideoFullscreenModel.h: Add a finishedWithMedia parameter to 15 requestFullscreenMode, to indicate if the change in mode is associated with 16 the closing of the media document. 17 * platform/cocoa/WebVideoFullscreenModelVideoElement.h: 18 * platform/cocoa/WebVideoFullscreenModelVideoElement.mm: 19 (WebVideoFullscreenModelVideoElement::requestFullscreenMode): If we're a media 20 document, and we say we're finished with the media, tell the document 21 to navigate back a page. 22 * platform/ios/WebVideoFullscreenControllerAVKit.mm: 23 (WebVideoFullscreenControllerContext::requestFullscreenMode): 24 * platform/ios/WebVideoFullscreenInterfaceAVKit.mm: 25 (WebVideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason): 26 1 27 2016-12-12 Zalan Bujtas <zalan@apple.com> 2 28 -
trunk/Source/WebCore/platform/cocoa/WebVideoFullscreenModel.h
r205365 r209747 44 44 virtual void removeClient(WebVideoFullscreenModelClient&)= 0; 45 45 46 virtual void requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenMode ) = 0;46 virtual void requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenMode, bool finishedWithMedia = false) = 0; 47 47 virtual void setVideoLayerFrame(FloatRect) = 0; 48 48 enum VideoGravity { VideoGravityResize, VideoGravityResizeAspect, VideoGravityResizeAspectFill }; -
trunk/Source/WebCore/platform/cocoa/WebVideoFullscreenModelVideoElement.h
r206245 r209747 65 65 WEBCORE_EXPORT void addClient(WebVideoFullscreenModelClient&) override; 66 66 WEBCORE_EXPORT void removeClient(WebVideoFullscreenModelClient&) override; 67 WEBCORE_EXPORT void requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenMode ) override;67 WEBCORE_EXPORT void requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenMode, bool finishedWithMedia = false) override; 68 68 WEBCORE_EXPORT void setVideoLayerFrame(FloatRect) override; 69 69 WEBCORE_EXPORT void setVideoLayerGravity(VideoGravity) override; -
trunk/Source/WebCore/platform/cocoa/WebVideoFullscreenModelVideoElement.mm
r205365 r209747 29 29 #import "WebVideoFullscreenModelVideoElement.h" 30 30 31 #import "DOMWindow.h" 32 #import "History.h" 31 33 #import "Logging.h" 32 34 #import "MediaControlsHost.h" … … 135 137 } 136 138 137 void WebVideoFullscreenModelVideoElement::requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenMode mode )139 void WebVideoFullscreenModelVideoElement::requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenMode mode, bool finishedWithMedia) 138 140 { 139 141 if (m_videoElement && m_videoElement->fullscreenMode() != mode) 140 142 m_videoElement->setFullscreenMode(mode); 143 144 if (m_videoElement && finishedWithMedia && mode == MediaPlayerEnums::VideoFullscreenModeNone) { 145 if (m_videoElement->document().isMediaDocument()) { 146 if (DOMWindow* window = m_videoElement->document().domWindow()) { 147 if (History* history = window->history()) 148 history->back(); 149 } 150 } 151 } 141 152 } 142 153 -
trunk/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm
r206350 r209747 180 180 void addClient(WebVideoFullscreenModelClient&) override; 181 181 void removeClient(WebVideoFullscreenModelClient&) override; 182 void requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenMode ) override;182 void requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenMode, bool finishedWithMedia = false) override; 183 183 void setVideoLayerFrame(FloatRect) override; 184 184 void setVideoLayerGravity(WebVideoFullscreenModel::VideoGravity) override; … … 445 445 } 446 446 447 void WebVideoFullscreenControllerContext::requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenMode mode )448 { 449 ASSERT(isUIThread()); 450 RefPtr<WebVideoFullscreenControllerContext> protectedThis(this); 451 WebThreadRun([protectedThis, this, mode ] {447 void WebVideoFullscreenControllerContext::requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenMode mode, bool finishedWithMedia) 448 { 449 ASSERT(isUIThread()); 450 RefPtr<WebVideoFullscreenControllerContext> protectedThis(this); 451 WebThreadRun([protectedThis, this, mode, finishedWithMedia] { 452 452 if (m_fullscreenModel) 453 m_fullscreenModel->requestFullscreenMode(mode );453 m_fullscreenModel->requestFullscreenMode(mode, finishedWithMedia); 454 454 }); 455 455 } -
trunk/Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm
r205365 r209747 983 983 webPlaybackSessionModel()->pause(); 984 984 985 986 m_videoFullscreenModel->requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenModeNone); 985 m_videoFullscreenModel->requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenModeNone, reason == ExitFullScreenReason::DoneButtonTapped); 987 986 988 987 if (!m_watchdogTimer.isActive()) -
trunk/Source/WebKit2/ChangeLog
r209736 r209747 1 2016-12-12 Dean Jackson <dino@apple.com> 2 3 [iOS] MediaDocument "Done" button should navigate the page back 4 https://bugs.webkit.org/show_bug.cgi?id=165779 5 6 Reviewed by Sam Weinig. 7 8 * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.h: 9 * UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm: 10 (WebKit::WebVideoFullscreenModelContext::requestFullscreenMode): 11 (WebKit::WebVideoFullscreenManagerProxy::requestFullscreenMode): 12 * WebProcess/cocoa/WebVideoFullscreenManager.h: 13 * WebProcess/cocoa/WebVideoFullscreenManager.messages.in: 14 * WebProcess/cocoa/WebVideoFullscreenManager.mm: 15 (WebKit::WebVideoFullscreenManager::requestFullscreenMode): 16 1 17 2016-12-12 Tim Horton <timothy_horton@apple.com> 2 18 -
trunk/Source/WebKit2/UIProcess/Cocoa/WebVideoFullscreenManagerProxy.h
r205365 r209747 80 80 void addClient(WebCore::WebVideoFullscreenModelClient&) override; 81 81 void removeClient(WebCore::WebVideoFullscreenModelClient&) override; 82 void requestFullscreenMode(WebCore::HTMLMediaElementEnums::VideoFullscreenMode ) override;82 void requestFullscreenMode(WebCore::HTMLMediaElementEnums::VideoFullscreenMode, bool finishedWithMedia = false) override; 83 83 void setVideoLayerFrame(WebCore::FloatRect) override; 84 84 void setVideoLayerGravity(VideoGravity) override; … … 148 148 149 149 // Messages to WebVideoFullscreenManager 150 void requestFullscreenMode(uint64_t contextId, WebCore::HTMLMediaElementEnums::VideoFullscreenMode );150 void requestFullscreenMode(uint64_t contextId, WebCore::HTMLMediaElementEnums::VideoFullscreenMode, bool finishedWithMedia = false); 151 151 void didSetupFullscreen(uint64_t contextId); 152 152 void didExitFullscreen(uint64_t contextId); -
trunk/Source/WebKit2/UIProcess/Cocoa/WebVideoFullscreenManagerProxy.mm
r205592 r209747 137 137 } 138 138 139 void WebVideoFullscreenModelContext::requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenMode mode )140 { 141 if (m_manager) 142 m_manager->requestFullscreenMode(m_contextId, mode );139 void WebVideoFullscreenModelContext::requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenMode mode, bool finishedWithMedia) 140 { 141 if (m_manager) 142 m_manager->requestFullscreenMode(m_contextId, mode, finishedWithMedia); 143 143 } 144 144 … … 436 436 #pragma mark Messages to WebVideoFullscreenManager 437 437 438 void WebVideoFullscreenManagerProxy::requestFullscreenMode(uint64_t contextId, WebCore::HTMLMediaElementEnums::VideoFullscreenMode mode )439 { 440 m_page->send(Messages::WebVideoFullscreenManager::RequestFullscreenMode(contextId, mode ), m_page->pageID());438 void WebVideoFullscreenManagerProxy::requestFullscreenMode(uint64_t contextId, WebCore::HTMLMediaElementEnums::VideoFullscreenMode mode, bool finishedWithMedia) 439 { 440 m_page->send(Messages::WebVideoFullscreenManager::RequestFullscreenMode(contextId, mode, finishedWithMedia), m_page->pageID()); 441 441 } 442 442 -
trunk/Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.h
r205365 r209747 134 134 135 135 // Messages from WebVideoFullscreenManagerProxy 136 void requestFullscreenMode(uint64_t contextId, WebCore::HTMLMediaElementEnums::VideoFullscreenMode );136 void requestFullscreenMode(uint64_t contextId, WebCore::HTMLMediaElementEnums::VideoFullscreenMode, bool finishedWithMedia); 137 137 void didSetupFullscreen(uint64_t contextId); 138 138 void didExitFullscreen(uint64_t contextId); -
trunk/Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.messages.in
r199919 r209747 23 23 #if (PLATFORM(IOS) && HAVE(AVKIT)) || (PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE)) 24 24 messages -> WebVideoFullscreenManager { 25 RequestFullscreenMode(uint64_t contextId, WebCore::HTMLMediaElementEnums::VideoFullscreenMode videoFullscreenMode )25 RequestFullscreenMode(uint64_t contextId, WebCore::HTMLMediaElementEnums::VideoFullscreenMode videoFullscreenMode, bool finishedWithMedia) 26 26 DidSetupFullscreen(uint64_t contextId) 27 27 DidExitFullscreen(uint64_t contextId) -
trunk/Source/WebKit2/WebProcess/cocoa/WebVideoFullscreenManager.mm
r205365 r209747 292 292 #pragma mark Messages from WebVideoFullscreenManagerProxy: 293 293 294 void WebVideoFullscreenManager::requestFullscreenMode(uint64_t contextId, WebCore::HTMLMediaElementEnums::VideoFullscreenMode mode )295 { 296 ensureModel(contextId).requestFullscreenMode(mode );294 void WebVideoFullscreenManager::requestFullscreenMode(uint64_t contextId, WebCore::HTMLMediaElementEnums::VideoFullscreenMode mode, bool finishedWithMedia) 295 { 296 ensureModel(contextId).requestFullscreenMode(mode, finishedWithMedia); 297 297 } 298 298
Note:
See TracChangeset
for help on using the changeset viewer.