Changeset 285741 in webkit
- Timestamp:
- Nov 12, 2021, 2:14:26 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 12 edited
-
Source/WebKit/ChangeLog (modified) (1 diff)
-
Source/WebKit/UIProcess/API/Cocoa/WKPreferences.h (modified) (1 diff)
-
Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm (modified) (1 diff)
-
Source/WebKit/UIProcess/API/Cocoa/WKWebView.h (modified) (2 diffs)
-
Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm (modified) (6 diffs)
-
Source/WebKit/UIProcess/Cocoa/FullscreenClient.h (modified) (1 diff)
-
Source/WebKit/UIProcess/Cocoa/FullscreenClient.mm (modified) (4 diffs)
-
Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm (modified) (1 diff)
-
Source/WebKit/UIProcess/WebFullScreenManagerProxy.cpp (modified) (4 diffs)
-
Source/WebKit/UIProcess/WebFullScreenManagerProxy.h (modified) (2 diffs)
-
Tools/ChangeLog (modified) (1 diff)
-
Tools/MiniBrowser/mac/AppDelegate.m (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r285739 r285741 1 2021-11-12 Peng Liu <peng.liu6@apple.com> 2 3 Promote WKPreferences._fullScreenEnabled to API 4 https://bugs.webkit.org/show_bug.cgi?id=230784 5 <rdar://83255308> 6 7 Reviewed by Jer Noble. 8 9 * UIProcess/API/Cocoa/WKPreferences.h: 10 * UIProcess/API/Cocoa/WKPreferences.mm: 11 (-[WKPreferences isElementFullscreenEnabled]): 12 (-[WKPreferences setElementFullscreenEnabled:]): 13 * UIProcess/API/Cocoa/WKWebView.h: 14 * UIProcess/API/Cocoa/WKWebView.mm: 15 (-[WKWebView fullscreenState]): 16 * UIProcess/Cocoa/FullscreenClient.h: 17 * UIProcess/Cocoa/FullscreenClient.mm: 18 (WebKit::FullscreenClient::willEnterFullscreen): 19 (WebKit::FullscreenClient::didEnterFullscreen): 20 (WebKit::FullscreenClient::willExitFullscreen): 21 (WebKit::FullscreenClient::didExitFullscreen): 22 * UIProcess/Cocoa/WebViewImpl.mm: 23 (WebKit::WebViewImpl::WebViewImpl): 24 * UIProcess/WebFullScreenManagerProxy.cpp: 25 (WebKit::WebFullScreenManagerProxy::willEnterFullScreen): 26 (WebKit::WebFullScreenManagerProxy::didEnterFullScreen): 27 (WebKit::WebFullScreenManagerProxy::willExitFullScreen): 28 (WebKit::WebFullScreenManagerProxy::didExitFullScreen): 29 * UIProcess/WebFullScreenManagerProxy.h: 30 (WebKit::WebFullScreenManagerProxy::fullscreenState const): 31 1 32 2021-11-12 Chris Dumez <cdumez@apple.com> 2 33 -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.h
r284214 r285741 71 71 @property (nonatomic, getter=isSiteSpecificQuirksModeEnabled) BOOL siteSpecificQuirksModeEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 72 72 73 /*! @abstract A Boolean value indicating whether Fullscreen API is enabled. 74 @discussion The default value is NO. We can set it to YES to enable support for the fullscreen API. 75 */ 76 @property (nonatomic, getter=isElementFullscreenEnabled) BOOL elementFullscreenEnabled WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 77 73 78 @end 74 79 -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKPreferences.mm
r285047 r285741 164 164 } 165 165 166 - (BOOL)isElementFullscreenEnabled 167 { 168 return _preferences->fullScreenEnabled(); 169 } 170 171 - (void)setElementFullscreenEnabled:(BOOL)elementFullscreenEnabled 172 { 173 _preferences->setFullScreenEnabled(elementFullscreenEnabled); 174 } 175 166 176 #pragma mark OS X-specific methods 167 177 -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.h
r281780 r285741 75 75 } WK_API_AVAILABLE(macos(12.0), ios(15.0)); 76 76 77 typedef NS_ENUM(NSInteger, WKFullscreenState) { 78 WKFullscreenStateNotInFullscreen, 79 WKFullscreenStateEnteringFullscreen, 80 WKFullscreenStateInFullscreen, 81 WKFullscreenStateExitingFullscreen, 82 } NS_SWIFT_NAME(WKWebView.FullscreenState) WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 83 77 84 /*! @abstract A copy of the configuration with which the web view was 78 85 initialized. */ … … 605 612 #endif 606 613 614 /*! @abstract A WKWebView's fullscreen state. 615 @discussion @link WKWebView @link is key-value observing (KVO) compliant for this property. When an element 616 in the WKWebView enters fullscreen, WebKit will replace the WKWebView in the application view hierarchy with 617 a "placeholder" view, and move the WKWebView into a fullscreen window. When the element exits fullscreen later, 618 the WKWebView will be moved back into the application view hierarchy. An application may need to adjust/restore 619 its native UI components when the fullscreen state changes. The application should observe the fullscreenState 620 property of WKWebView in order to receive notifications regarding the fullscreen state change. 621 */ 622 @property (nonatomic, readonly) WKFullscreenState fullscreenState WK_API_AVAILABLE(macos(WK_MAC_TBA), ios(WK_IOS_TBA)); 623 607 624 @end 608 625 -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
r285345 r285741 71 71 #import "WKNSData.h" 72 72 #import "WKNSURLExtras.h" 73 #import <WebKit/WKNavigationDelegate.h>73 #import "WKNavigationDelegate.h" 74 74 #import "WKNavigationInternal.h" 75 75 #import "WKPDFConfiguration.h" … … 79 79 #import "WKSharedAPICast.h" 80 80 #import "WKSnapshotConfiguration.h" 81 #import <WebKit/WKUIDelegate.h>82 #import <WebKit/WKUIDelegatePrivate.h>81 #import "WKUIDelegate.h" 82 #import "WKUIDelegatePrivate.h" 83 83 #import "WKUserContentControllerInternal.h" 84 84 #import "WKWebViewConfigurationInternal.h" … … 1792 1792 } 1793 1793 1794 - (WKFullscreenState)fullscreenState 1795 { 1796 #if ENABLE(FULLSCREEN_API) 1797 auto* fullscreenManager = _page->fullScreenManager(); 1798 if (!fullscreenManager) 1799 return WKFullscreenStateNotInFullscreen; 1800 1801 WKFullscreenState state = WKFullscreenStateNotInFullscreen; 1802 switch (fullscreenManager->fullscreenState()) { 1803 case WebKit::WebFullScreenManagerProxy::FullscreenState::EnteringFullscreen: 1804 state = WKFullscreenStateEnteringFullscreen; 1805 break; 1806 case WebKit::WebFullScreenManagerProxy::FullscreenState::InFullscreen: 1807 state = WKFullscreenStateInFullscreen; 1808 break; 1809 case WebKit::WebFullScreenManagerProxy::FullscreenState::ExitingFullscreen: 1810 state = WKFullscreenStateExitingFullscreen; 1811 break; 1812 default: 1813 state = WKFullscreenStateNotInFullscreen; 1814 break; 1815 } 1816 1817 return state; 1818 #else 1819 return WKFullscreenStateNotInFullscreen; 1820 #endif 1821 } 1822 1794 1823 @end 1795 1824 … … 3566 3595 } 3567 3596 3597 // FIXME: Remove this after Safari adopts the new API 3568 3598 - (void)_setFullscreenDelegate:(id<_WKFullscreenDelegate>)delegate 3569 3599 { … … 3574 3604 } 3575 3605 3606 // FIXME: Remove this after Safari adopts the new API 3576 3607 - (id<_WKFullscreenDelegate>)_fullscreenDelegate 3577 3608 { … … 3583 3614 } 3584 3615 3616 // FIXME: Remove this after Safari adopts the new API 3585 3617 - (BOOL)_isInFullscreen 3586 3618 { -
trunk/Source/WebKit/UIProcess/Cocoa/FullscreenClient.h
r242339 r285741 32 32 #import <wtf/WeakObjCPtr.h> 33 33 34 #if PLATFORM(MAC)35 @class NSView;36 using WKFullscreenClientView = NSView;37 #else38 34 @class WKWebView; 39 35 using WKFullscreenClientView = WKWebView; 40 #endif41 36 42 37 @protocol _WKFullscreenDelegate; -
trunk/Source/WebKit/UIProcess/Cocoa/FullscreenClient.mm
r242339 r285741 60 60 void FullscreenClient::willEnterFullscreen(WebPageProxy*) 61 61 { 62 [m_webView willChangeValueForKey:@"fullscreenState"]; 63 [m_webView didChangeValueForKey:@"fullscreenState"]; 62 64 #if PLATFORM(MAC) 63 65 if (m_delegateMethods.webViewWillEnterFullscreen) 64 [m_delegate.get() _webViewWillEnterFullscreen: m_webView];66 [m_delegate.get() _webViewWillEnterFullscreen:static_cast<NSView *>(m_webView)]; 65 67 #else 66 68 if (m_delegateMethods.webViewWillEnterElementFullscreen) … … 71 73 void FullscreenClient::didEnterFullscreen(WebPageProxy*) 72 74 { 75 [m_webView willChangeValueForKey:@"fullscreenState"]; 76 [m_webView didChangeValueForKey:@"fullscreenState"]; 73 77 #if PLATFORM(MAC) 74 78 if (m_delegateMethods.webViewDidEnterFullscreen) 75 [m_delegate.get() _webViewDidEnterFullscreen: m_webView];79 [m_delegate.get() _webViewDidEnterFullscreen:static_cast<NSView *>(m_webView)]; 76 80 #else 77 81 if (m_delegateMethods.webViewDidEnterElementFullscreen) … … 82 86 void FullscreenClient::willExitFullscreen(WebPageProxy*) 83 87 { 88 [m_webView willChangeValueForKey:@"fullscreenState"]; 89 [m_webView didChangeValueForKey:@"fullscreenState"]; 84 90 #if PLATFORM(MAC) 85 91 if (m_delegateMethods.webViewWillExitFullscreen) 86 [m_delegate.get() _webViewWillExitFullscreen: m_webView];92 [m_delegate.get() _webViewWillExitFullscreen:static_cast<NSView *>(m_webView)]; 87 93 #else 88 94 if (m_delegateMethods.webViewWillExitElementFullscreen) … … 93 99 void FullscreenClient::didExitFullscreen(WebPageProxy*) 94 100 { 101 [m_webView willChangeValueForKey:@"fullscreenState"]; 102 [m_webView didChangeValueForKey:@"fullscreenState"]; 95 103 #if PLATFORM(MAC) 96 104 if (m_delegateMethods.webViewDidExitFullscreen) 97 [m_delegate.get() _webViewDidExitFullscreen: m_webView];105 [m_delegate.get() _webViewDidExitFullscreen:static_cast<NSView *>(m_webView)]; 98 106 #else 99 107 if (m_delegateMethods.webViewDidExitElementFullscreen) -
trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm
r285047 r285741 1538 1538 1539 1539 #if ENABLE(FULLSCREEN_API) 1540 m_page->setFullscreenClient(makeUnique<WebKit::FullscreenClient>( view));1540 m_page->setFullscreenClient(makeUnique<WebKit::FullscreenClient>(outerWebView)); 1541 1541 #endif 1542 1542 -
trunk/Source/WebKit/UIProcess/WebFullScreenManagerProxy.cpp
r271970 r285741 57 57 void WebFullScreenManagerProxy::willEnterFullScreen() 58 58 { 59 m_fullscreenState = FullscreenState::EnteringFullscreen; 59 60 m_page.fullscreenClient().willEnterFullscreen(&m_page); 60 61 m_page.send(Messages::WebFullScreenManager::WillEnterFullScreen()); … … 63 64 void WebFullScreenManagerProxy::didEnterFullScreen() 64 65 { 66 m_fullscreenState = FullscreenState::InFullscreen; 65 67 m_page.fullscreenClient().didEnterFullscreen(&m_page); 66 68 m_page.send(Messages::WebFullScreenManager::DidEnterFullScreen()); … … 74 76 void WebFullScreenManagerProxy::willExitFullScreen() 75 77 { 78 m_fullscreenState = FullscreenState::ExitingFullscreen; 76 79 m_page.fullscreenClient().willExitFullscreen(&m_page); 77 80 m_page.send(Messages::WebFullScreenManager::WillExitFullScreen()); … … 93 96 void WebFullScreenManagerProxy::didExitFullScreen() 94 97 { 98 m_fullscreenState = FullscreenState::NotInFullscreen; 95 99 m_page.fullscreenClient().didExitFullscreen(&m_page); 96 100 m_page.send(Messages::WebFullScreenManager::DidExitFullScreen()); -
trunk/Source/WebKit/UIProcess/WebFullScreenManagerProxy.h
r274189 r285741 68 68 void close(); 69 69 70 enum class FullscreenState : uint8_t { 71 NotInFullscreen, 72 EnteringFullscreen, 73 InFullscreen, 74 ExitingFullscreen, 75 }; 76 FullscreenState fullscreenState() const { return m_fullscreenState; } 77 70 78 void willEnterFullScreen(); 71 79 void didEnterFullScreen(); … … 95 103 WebPageProxy& m_page; 96 104 WebFullScreenManagerProxyClient& m_client; 105 FullscreenState m_fullscreenState { FullscreenState::NotInFullscreen }; 97 106 bool m_blocksReturnToFullscreenFromPictureInPicture { false }; 98 107 Vector<CompletionHandler<void()>> m_closeCompletionHandlers; -
trunk/Tools/ChangeLog
r285739 r285741 1 2021-11-12 Peng Liu <peng.liu6@apple.com> 2 3 Promote WKPreferences._fullScreenEnabled to API 4 https://bugs.webkit.org/show_bug.cgi?id=230784 5 <rdar://83255308> 6 7 Reviewed by Jer Noble. 8 9 * MiniBrowser/mac/AppDelegate.m: 10 (-[BrowserAppDelegate defaultConfiguration]): 11 1 12 2021-11-12 Chris Dumez <cdumez@apple.com> 2 13 -
trunk/Tools/MiniBrowser/mac/AppDelegate.m
r284887 r285741 146 146 } 147 147 148 configuration.preferences. _fullScreenEnabled = YES;148 configuration.preferences.elementFullscreenEnabled = YES; 149 149 configuration.preferences._allowsPictureInPictureMediaPlayback = YES; 150 150 configuration.preferences._developerExtrasEnabled = YES;
Note:
See TracChangeset
for help on using the changeset viewer.