Changeset 224313 in webkit
- Timestamp:
- Nov 1, 2017 8:25:19 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 6 added
- 23 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r224309 r224313 1 2017-11-01 Jeremy Jones <jeremyj@apple.com> 2 3 Implement WKFullscreenWindowController for iOS. 4 https://bugs.webkit.org/show_bug.cgi?id=178924 5 rdar://problem/34697120 6 7 Reviewed by Simon Fraser. 8 9 Enable ENABLE_FULLSCREEN_API for iOS. 10 11 * Configurations/FeatureDefines.xcconfig: 12 1 13 2017-11-01 Mark Lam <mark.lam@apple.com> 2 14 -
trunk/Source/JavaScriptCore/Configurations/FeatureDefines.xcconfig
r224263 r224313 88 88 ENABLE_DEVICE_ORIENTATION[sdk=iphone*] = ENABLE_DEVICE_ORIENTATION; 89 89 ENABLE_FILTERS_LEVEL_2 = ENABLE_FILTERS_LEVEL_2; 90 ENABLE_FULLSCREEN_API[sdk=iphone*] = ENABLE_FULLSCREEN_API; 90 91 ENABLE_FULLSCREEN_API[sdk=macosx*] = ENABLE_FULLSCREEN_API; 91 92 ENABLE_GAMEPAD = ENABLE_GAMEPAD; -
trunk/Source/WebCore/ChangeLog
r224312 r224313 1 2017-11-01 Jeremy Jones <jeremyj@apple.com> 2 3 Implement WKFullscreenWindowController for iOS. 4 https://bugs.webkit.org/show_bug.cgi?id=178924 5 rdar://problem/34697120 6 7 Reviewed by Simon Fraser. 8 9 Enable ENABLE_FULLSCREEN_API for iOS. 10 11 * Configurations/FeatureDefines.xcconfig: 12 1 13 2017-11-01 Simon Fraser <simon.fraser@apple.com> 2 14 -
trunk/Source/WebCore/Configurations/FeatureDefines.xcconfig
r224263 r224313 88 88 ENABLE_DEVICE_ORIENTATION[sdk=iphone*] = ENABLE_DEVICE_ORIENTATION; 89 89 ENABLE_FILTERS_LEVEL_2 = ENABLE_FILTERS_LEVEL_2; 90 ENABLE_FULLSCREEN_API[sdk=iphone*] = ENABLE_FULLSCREEN_API; 90 91 ENABLE_FULLSCREEN_API[sdk=macosx*] = ENABLE_FULLSCREEN_API; 91 92 ENABLE_GAMEPAD = ENABLE_GAMEPAD; -
trunk/Source/WebCore/PAL/ChangeLog
r224299 r224313 1 2017-11-01 Jeremy Jones <jeremyj@apple.com> 2 3 Implement WKFullscreenWindowController for iOS. 4 https://bugs.webkit.org/show_bug.cgi?id=178924 5 rdar://problem/34697120 6 7 Reviewed by Simon Fraser. 8 9 Enable ENABLE_FULLSCREEN_API for iOS; 10 11 * Configurations/FeatureDefines.xcconfig: 12 1 13 2017-11-01 Daniel Bates <dabates@apple.com> 2 14 -
trunk/Source/WebCore/PAL/Configurations/FeatureDefines.xcconfig
r224263 r224313 88 88 ENABLE_DEVICE_ORIENTATION[sdk=iphone*] = ENABLE_DEVICE_ORIENTATION; 89 89 ENABLE_FILTERS_LEVEL_2 = ENABLE_FILTERS_LEVEL_2; 90 ENABLE_FULLSCREEN_API[sdk=iphone*] = ENABLE_FULLSCREEN_API; 90 91 ENABLE_FULLSCREEN_API[sdk=macosx*] = ENABLE_FULLSCREEN_API; 91 92 ENABLE_GAMEPAD = ENABLE_GAMEPAD; -
trunk/Source/WebKit/ChangeLog
r224299 r224313 1 2017-11-01 Jeremy Jones <jeremyj@apple.com> 2 3 Implement WKFullscreenWindowController for iOS. 4 https://bugs.webkit.org/show_bug.cgi?id=178924 5 rdar://problem/34697120 6 7 Reviewed by Simon Fraser. 8 9 Plumb relevant calls through WKWebView and PageClientImplIOS. 10 11 This forms the base implementation for element fullscreen. This will animate an element into fullscreen and back to inline. 12 It does this by replacing the WKWebView with a placeholder image and presenting the WKWebView with a fullscreen view controller. 13 This also attempts to preserve UI state of the WKWebView when it is placed back inline. 14 15 To enable _WKFullscreenDelegate for iOS, this adds an iOS version of the delegate methods that passes WKWebView instead of NSView. 16 The iOS version of these functions are renamed to be more specific and disambiguate them from the video fullscreen delegate methods. 17 18 This also adds an image asset for the done button. 19 20 * Configurations/FeatureDefines.xcconfig: 21 * UIProcess/API/Cocoa/WKWebView.mm: 22 (-[WKWebView hasFullScreenWindowController]): 23 (-[WKWebView fullScreenWindowController]): 24 (-[WKWebView closeFullScreenWindowController]): 25 (-[WKWebView fullScreenPlaceholderView]): 26 * UIProcess/API/Cocoa/WKWebViewInternal.h: 27 * UIProcess/API/Cocoa/_WKFullscreenDelegate.h: 28 * UIProcess/Cocoa/FullscreenClient.h: 29 * UIProcess/Cocoa/FullscreenClient.mm: 30 (WebKit::FullscreenClient::FullscreenClient): 31 (WebKit::FullscreenClient::setDelegate): 32 (WebKit::FullscreenClient::willEnterFullscreen): 33 (WebKit::FullscreenClient::didEnterFullscreen): 34 (WebKit::FullscreenClient::willExitFullscreen): 35 (WebKit::FullscreenClient::didExitFullscreen): 36 * UIProcess/ios/PageClientImplIOS.mm: 37 (WebKit::PageClientImpl::closeFullScreenManager): 38 (WebKit::PageClientImpl::isFullScreen): 39 (WebKit::PageClientImpl::enterFullScreen): 40 (WebKit::PageClientImpl::exitFullScreen): 41 (WebKit::PageClientImpl::beganEnterFullScreen): 42 (WebKit::PageClientImpl::beganExitFullScreen): 43 * UIProcess/ios/WKContentView.mm: 44 * UIProcess/ios/WKFullScreenWindowControllerIOS.h: Copied from Source/WebKit/UIProcess/API/Cocoa/_WKFullscreenDelegate.h. 45 * UIProcess/ios/WKFullScreenWindowControllerIOS.mm: Added. 46 (WebKit::replaceViewWithView): 47 (WebKit::WKWebViewState::applyTo): 48 (WebKit::WKWebViewState::store): 49 (-[_WKTapDelgatingView setTarget:action:]): 50 (-[_WKTapDelgatingView hitTest:withEvent:]): 51 (-[_WKFullScreenViewController dealloc]): 52 (-[_WKFullScreenViewController viewWillTransitionToSize:withTransitionCoordinator:]): 53 (+[_WKFullScreenViewController configureView:withBackgroundFillOfColor:opacity:filter:]): 54 (-[_WKFullScreenViewController _updateTransparencyOfVisualEffectView:]): 55 (-[_WKFullScreenViewController createVisualEffectViewWithFrame:]): 56 (-[_WKFullScreenViewController loadView]): 57 (-[_WKFullScreenViewController viewWillAppear:]): 58 (-[_WKFullScreenViewController viewDidDisappear:]): 59 (-[_WKFullScreenViewController cancelAction:]): 60 (-[_WKFullScreenViewController hideCancelButton]): 61 (-[_WKFullScreenViewController showCancelButton]): 62 (-[_WKFullScreenViewController setTarget:action:]): 63 (-[_WKFullScreenViewController prefersStatusBarHidden]): 64 (-[WKFullscreenAnimationController transitionDuration:]): 65 (-[WKFullscreenAnimationController animateTransition:]): 66 (-[WKFullscreenAnimationController animationEnded:]): 67 (-[WKFullScreenWindowController initWithWebView:page:]): 68 (-[WKFullScreenWindowController dealloc]): 69 (-[WKFullScreenWindowController isFullScreen]): 70 (-[WKFullScreenWindowController webViewPlaceholder]): 71 (-[WKFullScreenWindowController enterFullScreen]): 72 (-[WKFullScreenWindowController beganEnterFullScreenWithInitialFrame:finalFrame:]): 73 (-[WKFullScreenWindowController completedEnterFullScreen]): 74 (-[WKFullScreenWindowController exitFullScreen]): 75 (-[WKFullScreenWindowController requestExitFullScreen]): 76 (-[WKFullScreenWindowController beganExitFullScreenWithInitialFrame:finalFrame:]): 77 (-[WKFullScreenWindowController completedExitFullScreen]): 78 (-[WKFullScreenWindowController close]): 79 (-[WKFullScreenWindowController _manager]): 80 (-[WKFullScreenWindowController animationControllerForPresentedController:presentingController:sourceController:]): 81 (-[WKFullScreenWindowController animationControllerForDismissedController:]): 82 * WebKit.xcassets/Contents.json: Added. 83 * WebKit.xcassets/Done.imageset/Contents.json: Added. 84 * WebKit.xcassets/Done.imageset/Done.pdf: Added. 85 * WebKit.xcodeproj/project.pbxproj: 86 * WebProcess/FullScreen/WebFullScreenManager.cpp: 87 (WebKit::WebFullScreenManager::willEnterFullScreen): 88 (WebKit::WebFullScreenManager::willExitFullScreen): 89 1 90 2017-11-01 Daniel Bates <dabates@apple.com> 2 91 -
trunk/Source/WebKit/Configurations/FeatureDefines.xcconfig
r224263 r224313 88 88 ENABLE_DEVICE_ORIENTATION[sdk=iphone*] = ENABLE_DEVICE_ORIENTATION; 89 89 ENABLE_FILTERS_LEVEL_2 = ENABLE_FILTERS_LEVEL_2; 90 ENABLE_FULLSCREEN_API[sdk=iphone*] = ENABLE_FULLSCREEN_API; 90 91 ENABLE_FULLSCREEN_API[sdk=macosx*] = ENABLE_FULLSCREEN_API; 91 92 ENABLE_GAMEPAD = ENABLE_GAMEPAD; -
trunk/Source/WebKit/Platform/spi/ios/UIKitSPI.h
r224029 r224313 31 31 #import <UIKit/UIApplication_Private.h> 32 32 #import <UIKit/UIBarButtonItem_Private.h> 33 #import <UIKit/UIBlurEffect_Private.h> 33 34 #import <UIKit/UICalloutBar.h> 35 #import <UIKit/UIColorEffect.h> 34 36 #import <UIKit/UIDatePicker_Private.h> 35 37 #import <UIKit/UIDevice_Private.h> … … 63 65 #import <UIKit/UIViewController_ViewService.h> 64 66 #import <UIKit/UIView_Private.h> 67 #import <UIKit/UIVisualEffect_Private.h> 65 68 #import <UIKit/UIWKSelectionAssistant.h> 66 69 #import <UIKit/UIWKTextInteractionAssistant.h> … … 471 474 - (void)safeAreaInsetsDidChange; 472 475 #endif 476 @property (nonatomic, setter=_setContinuousCornerRadius:) CGFloat _continuousCornerRadius; 473 477 @end 474 478 … … 888 892 889 893 NSTimeInterval _UIDragInteractionDefaultLiftDelay(); 894 CGFloat UIRoundToScreenScale(CGFloat value, UIScreen *); 890 895 891 896 WTF_EXTERN_C_END … … 932 937 #endif 933 938 939 @interface _UIVisualEffectLayerConfig : NSObject 940 + (instancetype)layerWithFillColor:(UIColor *)fillColor opacity:(CGFloat)opacity filterType:(NSString *)filterType; 941 - (void)configureLayerView:(UIView *)view; 942 @end 943 944 @interface _UIVisualEffectConfig : NSObject 945 @property (nonatomic, readonly) _UIVisualEffectLayerConfig *contentConfig; 946 + (_UIVisualEffectConfig *)configWithContentConfig:(_UIVisualEffectLayerConfig *)contentConfig; 947 @end 948 949 @interface UIVisualEffect () 950 + (UIVisualEffect *)emptyEffect; 951 + (UIVisualEffect *)effectCombiningEffects:(NSArray<UIVisualEffect *> *)effects; 952 @end 953 954 @interface UIColorEffect : UIVisualEffect 955 + (UIColorEffect *)colorEffectSaturate:(CGFloat)saturationAmount; 956 @end 957 958 @interface UIBlurEffect () 959 + (UIBlurEffect *)effectWithBlurRadius:(CGFloat)blurRadius; 960 @end 961 934 962 #endif // USE(APPLE_INTERNAL_SDK) 935 963 -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
r224238 r224313 261 261 RetainPtr<WKScrollView> _scrollView; 262 262 RetainPtr<WKContentView> _contentView; 263 264 #if ENABLE(FULLSCREEN_API) 265 RetainPtr<WKFullScreenWindowController> _fullScreenWindowController; 266 #endif 263 267 264 268 BOOL _overridesMinimumLayoutSize; … … 6079 6083 6080 6084 6085 #if ENABLE(FULLSCREEN_API) && PLATFORM(IOS) 6086 6087 @implementation WKWebView (FullScreenAPI) 6088 6089 - (BOOL)hasFullScreenWindowController 6090 { 6091 return !!_fullScreenWindowController; 6092 } 6093 6094 - (WKFullScreenWindowController *)fullScreenWindowController 6095 { 6096 if (!_fullScreenWindowController) 6097 _fullScreenWindowController = adoptNS([[WKFullScreenWindowController alloc] initWithWebView:self]); 6098 6099 return _fullScreenWindowController.get(); 6100 } 6101 6102 - (void)closeFullScreenWindowController 6103 { 6104 if (!_fullScreenWindowController) 6105 return; 6106 6107 [_fullScreenWindowController close]; 6108 _fullScreenWindowController = nullptr; 6109 } 6110 6111 - (WebCoreFullScreenPlaceholderView *)fullScreenPlaceholderView 6112 { 6113 if ([_fullScreenWindowController isFullScreen]) 6114 return [_fullScreenWindowController webViewPlaceholder]; 6115 return nil; 6116 } 6117 6118 @end 6119 #endif // ENABLE(FULLSCREEN_API) && PLATFORM(IOS) 6120 6081 6121 #if PLATFORM(MAC) 6082 6122 -
trunk/Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h
r224238 r224313 38 38 #import "WKContentView.h" 39 39 #import "WKContentViewInteraction.h" 40 #import "WKFullScreenWindowControllerIOS.h" 40 41 #import <WebCore/FloatRect.h> 41 42 #import <WebCore/LengthBox.h> … … 155 156 WKWebView* fromWebPageProxy(WebKit::WebPageProxy&); 156 157 158 #if ENABLE(FULLSCREEN_API) && PLATFORM(IOS) 159 @interface WKWebView (FullScreenAPI) 160 -(BOOL)hasFullScreenWindowController; 161 -(WKFullScreenWindowController *)fullScreenWindowController; 162 -(void)closeFullScreenWindowController; 163 -(WebCoreFullScreenPlaceholderView *)fullScreenPlaceholderView; 164 @end 165 #endif // ENABLE(FULLSCREEN_API) && PLATFORM(IOS) 166 157 167 #if PLATFORM(IOS) 158 168 @interface WKWebView (_WKWebViewPrintFormatter) -
trunk/Source/WebKit/UIProcess/API/Cocoa/_WKFullscreenDelegate.h
r221930 r224313 28 28 #if WK_API_ENABLED 29 29 30 WK_API_AVAILABLE(macosx(10.13) )30 WK_API_AVAILABLE(macosx(10.13), ios(WK_IOS_TBA)) 31 31 @protocol _WKFullscreenDelegate <NSObject> 32 32 33 33 @optional 34 34 35 #if TARGET_OS_IPHONE 36 - (void)_webViewWillEnterElementFullscreen:(WKWebView *)webView; 37 - (void)_webViewDidEnterElementFullscreen:(WKWebView *)webView; 38 - (void)_webViewWillExitElementFullscreen:(WKWebView *)webView; 39 - (void)_webViewDidExitElementFullscreen:(WKWebView *)webView; 40 #else 35 41 - (void)_webViewWillEnterFullscreen:(NSView *)webView; 36 42 - (void)_webViewDidEnterFullscreen:(NSView *)webView; 37 43 - (void)_webViewWillExitFullscreen:(NSView *)webView; 38 44 - (void)_webViewDidExitFullscreen:(NSView *)webView; 45 #endif 39 46 40 47 @end -
trunk/Source/WebKit/UIProcess/Cocoa/FullscreenClient.h
r211891 r224313 34 34 #import <wtf/RetainPtr.h> 35 35 36 #if PLATFORM(MAC) 36 37 @class NSView; 38 using WKFullscreenClientView = NSView; 39 #else 40 @class WKWebView; 41 using WKFullscreenClientView = WKWebView; 42 #endif 43 37 44 @protocol _WKFullscreenDelegate; 38 45 … … 41 48 class FullscreenClient : public API::FullscreenClient { 42 49 public: 43 explicit FullscreenClient( NSView *);50 explicit FullscreenClient(WKFullscreenClientView *); 44 51 ~FullscreenClient() { }; 45 52 … … 53 60 54 61 private: 55 NSView *m_webView;62 WKFullscreenClientView *m_webView; 56 63 WeakObjCPtr<id <_WKFullscreenDelegate> > m_delegate; 57 64 58 65 struct { 66 #if PLATFORM(MAC) 59 67 bool webViewWillEnterFullscreen : 1; 60 68 bool webViewDidEnterFullscreen : 1; 61 69 bool webViewWillExitFullscreen : 1; 62 70 bool webViewDidExitFullscreen : 1; 71 #else 72 bool webViewWillEnterElementFullscreen : 1; 73 bool webViewDidEnterElementFullscreen : 1; 74 bool webViewWillExitElementFullscreen : 1; 75 bool webViewDidExitElementFullscreen : 1; 76 #endif 63 77 } m_delegateMethods; 64 78 }; -
trunk/Source/WebKit/UIProcess/Cocoa/FullscreenClient.mm
r211891 r224313 33 33 namespace WebKit { 34 34 35 FullscreenClient::FullscreenClient( NSView *webView)35 FullscreenClient::FullscreenClient(WKFullscreenClientView *webView) 36 36 : m_webView(webView) 37 37 { … … 47 47 m_delegate = delegate; 48 48 49 #if PLATFORM(MAC) 49 50 m_delegateMethods.webViewWillEnterFullscreen = [delegate respondsToSelector:@selector(_webViewWillEnterFullscreen:)]; 50 51 m_delegateMethods.webViewDidEnterFullscreen = [delegate respondsToSelector:@selector(_webViewDidEnterFullscreen:)]; 51 52 m_delegateMethods.webViewWillExitFullscreen = [delegate respondsToSelector:@selector(_webViewWillExitFullscreen:)]; 52 53 m_delegateMethods.webViewDidExitFullscreen = [delegate respondsToSelector:@selector(_webViewDidExitFullscreen:)]; 54 #else 55 m_delegateMethods.webViewWillEnterElementFullscreen = [delegate respondsToSelector:@selector(_webViewWillEnterElementFullscreen:)]; 56 m_delegateMethods.webViewDidEnterElementFullscreen = [delegate respondsToSelector:@selector(_webViewDidEnterElementFullscreen:)]; 57 m_delegateMethods.webViewWillExitElementFullscreen = [delegate respondsToSelector:@selector(_webViewWillExitElementFullscreen:)]; 58 m_delegateMethods.webViewDidExitElementFullscreen = [delegate respondsToSelector:@selector(_webViewDidExitElementFullscreen:)]; 59 #endif 53 60 } 54 61 55 62 void FullscreenClient::willEnterFullscreen(WebPageProxy*) 56 63 { 64 #if PLATFORM(MAC) 57 65 if (m_delegateMethods.webViewWillEnterFullscreen) 58 66 [m_delegate.get() _webViewWillEnterFullscreen:m_webView]; 67 #else 68 if (m_delegateMethods.webViewWillEnterElementFullscreen) 69 [m_delegate.get() _webViewWillEnterElementFullscreen:m_webView]; 70 #endif 59 71 } 60 72 61 73 void FullscreenClient::didEnterFullscreen(WebPageProxy*) 62 74 { 75 #if PLATFORM(MAC) 63 76 if (m_delegateMethods.webViewDidEnterFullscreen) 64 77 [m_delegate.get() _webViewDidEnterFullscreen:m_webView]; 78 #else 79 if (m_delegateMethods.webViewDidEnterElementFullscreen) 80 [m_delegate.get() _webViewDidEnterElementFullscreen:m_webView]; 81 #endif 65 82 } 66 83 67 84 void FullscreenClient::willExitFullscreen(WebPageProxy*) 68 85 { 86 #if PLATFORM(MAC) 69 87 if (m_delegateMethods.webViewWillExitFullscreen) 70 88 [m_delegate.get() _webViewWillExitFullscreen:m_webView]; 89 #else 90 if (m_delegateMethods.webViewWillExitElementFullscreen) 91 [m_delegate.get() _webViewWillExitElementFullscreen:m_webView]; 92 #endif 71 93 } 72 94 73 95 void FullscreenClient::didExitFullscreen(WebPageProxy*) 74 96 { 97 #if PLATFORM(MAC) 75 98 if (m_delegateMethods.webViewDidExitFullscreen) 76 99 [m_delegate.get() _webViewDidExitFullscreen:m_webView]; 100 #else 101 if (m_delegateMethods.webViewDidExitElementFullscreen) 102 [m_delegate.get() _webViewDidExitElementFullscreen:m_webView]; 103 #endif 77 104 } 78 105 -
trunk/Source/WebKit/UIProcess/ios/PageClientImplIOS.mm
r224057 r224313 627 627 void PageClientImpl::closeFullScreenManager() 628 628 { 629 [m_webView closeFullScreenWindowController]; 629 630 } 630 631 631 632 bool PageClientImpl::isFullScreen() 632 633 { 633 return false; 634 if (![m_webView hasFullScreenWindowController]) 635 return false; 636 637 return [m_webView fullScreenWindowController].isFullScreen; 634 638 } 635 639 636 640 void PageClientImpl::enterFullScreen() 637 641 { 642 [[m_webView fullScreenWindowController] enterFullScreen]; 638 643 } 639 644 640 645 void PageClientImpl::exitFullScreen() 641 646 { 642 } 643 644 void PageClientImpl::beganEnterFullScreen(const IntRect&, const IntRect&) 645 { 646 } 647 648 void PageClientImpl::beganExitFullScreen(const IntRect&, const IntRect&) 649 { 647 [[m_webView fullScreenWindowController] exitFullScreen]; 648 } 649 650 void PageClientImpl::beganEnterFullScreen(const IntRect& initialFrame, const IntRect& finalFrame) 651 { 652 [[m_webView fullScreenWindowController] beganEnterFullScreenWithInitialFrame:initialFrame finalFrame:finalFrame]; 653 } 654 655 void PageClientImpl::beganExitFullScreen(const IntRect& initialFrame, const IntRect& finalFrame) 656 { 657 [[m_webView fullScreenWindowController] beganExitFullScreenWithInitialFrame:initialFrame finalFrame:finalFrame]; 650 658 } 651 659 -
trunk/Source/WebKit/UIProcess/ios/WKContentView.mm
r224063 r224313 32 32 #import "AccessibilityIOS.h" 33 33 #import "ApplicationStateTracker.h" 34 #import "FullscreenClient.h" 34 35 #import "InputViewUpdateDeferrer.h" 35 36 #import "Logging.h" -
trunk/Source/WebKit/UIProcess/ios/WKFullScreenWindowControllerIOS.h
r224312 r224313 1 1 /* 2 * Copyright (C) 201 6Apple Inc. All rights reserved.2 * Copyright (C) 2017 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 #i mport <WebKit/WKFoundation.h>26 #if ENABLE(FULLSCREEN_API) && PLATFORM(IOS) 27 27 28 #i f WK_API_ENABLED28 #import <UIKit/UIViewControllerTransitioning.h> 29 29 30 WK_API_AVAILABLE(macosx(10.13)) 31 @protocol _WKFullscreenDelegate <NSObject> 30 namespace WebKit { 31 class WebPageProxy; 32 } 32 33 33 @optional 34 namespace WebCore { 35 class IntRect; 36 } 34 37 35 - (void)_webViewWillEnterFullscreen:(NSView *)webView; 36 - (void)_webViewDidEnterFullscreen:(NSView *)webView; 37 - (void)_webViewWillExitFullscreen:(NSView *)webView; 38 - (void)_webViewDidExitFullscreen:(NSView *)webView; 38 @class WebCoreFullScreenPlaceholderView; 39 @class WKWebView; 40 41 @interface WKFullScreenWindowController : NSObject <UIViewControllerTransitioningDelegate> 42 43 - (id)initWithWebView:(WKWebView *)webView; 44 45 - (WebCoreFullScreenPlaceholderView*)webViewPlaceholder; 46 47 - (BOOL)isFullScreen; 48 49 - (void)enterFullScreen; 50 - (void)exitFullScreen; 51 - (void)requestExitFullScreen; 52 - (void)close; 53 - (void)beganEnterFullScreenWithInitialFrame:(CGRect)initialFrame finalFrame:(CGRect)finalFrame; 54 - (void)beganExitFullScreenWithInitialFrame:(CGRect)initialFrame finalFrame:(CGRect)finalFrame; 39 55 40 56 @end -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r224238 r224313 877 877 3F87B9BE158940190090FF62 /* WebColorChooser.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F87B9BB15893F630090FF62 /* WebColorChooser.h */; }; 878 878 3F87B9C0158940D80090FF62 /* WebColorPicker.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F87B9BF158940D80090FF62 /* WebColorPicker.h */; }; 879 3F915C101F564DEE00183CE9 /* WKFullScreenWindowControllerIOS.mm in Headers */ = {isa = PBXBuildFile; fileRef = 3F915C0E1F564DED00183CE9 /* WKFullScreenWindowControllerIOS.mm */; }; 880 3FB08E431F60B240005E5312 /* WebKit.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3FB08E421F60B240005E5312 /* WebKit.xcassets */; }; 881 3FFDDB961F577F480050E593 /* WKFullScreenWindowControllerIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F915C0F1F564DED00183CE9 /* WKFullScreenWindowControllerIOS.h */; }; 882 3FFDDB971F5780E10050E593 /* WKFullScreenWindowControllerIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3F915C0E1F564DED00183CE9 /* WKFullScreenWindowControllerIOS.mm */; }; 879 883 410482CD1DDD324C00F006D0 /* RTCNetwork.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 410482CB1DDD2FB500F006D0 /* RTCNetwork.cpp */; }; 880 884 410482CE1DDD324F00F006D0 /* RTCNetwork.h in Headers */ = {isa = PBXBuildFile; fileRef = 410482CC1DDD2FB500F006D0 /* RTCNetwork.h */; }; … … 3182 3186 3F87B9BB15893F630090FF62 /* WebColorChooser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebColorChooser.h; sourceTree = "<group>"; }; 3183 3187 3F87B9BF158940D80090FF62 /* WebColorPicker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebColorPicker.h; sourceTree = "<group>"; }; 3188 3F915C0E1F564DED00183CE9 /* WKFullScreenWindowControllerIOS.mm */ = {isa = PBXFileReference; indentWidth = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKFullScreenWindowControllerIOS.mm; path = ios/WKFullScreenWindowControllerIOS.mm; sourceTree = "<group>"; }; 3189 3F915C0F1F564DED00183CE9 /* WKFullScreenWindowControllerIOS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WKFullScreenWindowControllerIOS.h; path = ios/WKFullScreenWindowControllerIOS.h; sourceTree = "<group>"; }; 3190 3FB08E421F60B240005E5312 /* WebKit.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = WebKit.xcassets; path = ../../../Opensource/Source/WebKit/WebKit.xcassets; sourceTree = "<group>"; }; 3184 3191 410482CB1DDD2FB500F006D0 /* RTCNetwork.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RTCNetwork.cpp; sourceTree = "<group>"; }; 3185 3192 410482CC1DDD2FB500F006D0 /* RTCNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCNetwork.h; sourceTree = "<group>"; }; … … 4709 4716 E1D26A4C1759634E0095BFD1 /* WebContentProcess.xib */, 4710 4717 E133FD891423DD7F00FC7BFB /* WebKit.icns */, 4718 3FB08E421F60B240005E5312 /* WebKit.xcassets */, 4711 4719 ); 4712 4720 name = Resources; … … 5632 5640 0FCB4E6A18BBF26A000FCFC9 /* WKContentViewInteraction.h */, 5633 5641 0FCB4E6B18BBF26A000FCFC9 /* WKContentViewInteraction.mm */, 5642 3F915C0F1F564DED00183CE9 /* WKFullScreenWindowControllerIOS.h */, 5643 3F915C0E1F564DED00183CE9 /* WKFullScreenWindowControllerIOS.mm */, 5634 5644 0FCB4E3F18BBE044000FCFC9 /* WKGeolocationProviderIOS.h */, 5635 5645 0FCB4E4018BBE044000FCFC9 /* WKGeolocationProviderIOS.mm */, … … 9260 9270 E1AEA22F14687BDB00804569 /* WKFullKeyboardAccessWatcher.h in Headers */, 9261 9271 CDCA85C9132ABA4E00E961DF /* WKFullScreenWindowController.h in Headers */, 9272 3FFDDB961F577F480050E593 /* WKFullScreenWindowControllerIOS.h in Headers */, 9273 3F915C101F564DEE00183CE9 /* WKFullScreenWindowControllerIOS.mm in Headers */, 9262 9274 BC54CC1212D674EE005C67B0 /* WKGeolocationManager.h in Headers */, 9263 9275 BC06F44E12DBDF3F002D78DE /* WKGeolocationPermissionRequest.h in Headers */, … … 9731 9743 8DC2EF530486A6940098B216 /* InfoPlist.strings in Resources */, 9732 9744 93A2A3461D246125002B59D3 /* mediaIcon.pdf in Resources */, 9745 3FB08E431F60B240005E5312 /* WebKit.xcassets in Resources */, 9733 9746 ); 9734 9747 runOnlyForDeploymentPostprocessing = 0; … … 10875 10888 E1AEA23014687BDB00804569 /* WKFullKeyboardAccessWatcher.mm in Sources */, 10876 10889 CDCA85C8132ABA4E00E961DF /* WKFullScreenWindowController.mm in Sources */, 10890 3FFDDB971F5780E10050E593 /* WKFullScreenWindowControllerIOS.mm in Sources */, 10877 10891 BC54CC1312D674EE005C67B0 /* WKGeolocationManager.cpp in Sources */, 10878 10892 BC06F44F12DBDF3F002D78DE /* WKGeolocationPermissionRequest.cpp in Sources */, -
trunk/Source/WebKit/WebProcess/FullScreen/WebFullScreenManager.cpp
r204668 r224313 110 110 ASSERT(m_element); 111 111 m_element->document().webkitWillEnterFullScreenForElement(m_element.get()); 112 #if !PLATFORM(IOS) 112 113 m_page->hidePageBanners(); 114 #endif 113 115 m_element->document().updateLayout(); 114 116 m_page->forceRepaintWithoutCallback(); … … 128 130 m_finalFrame = screenRectOfContents(m_element.get()); 129 131 m_element->document().webkitWillExitFullScreenForElement(m_element.get()); 132 #if !PLATFORM(IOS) 130 133 m_page->showPageBanners(); 134 #endif 131 135 m_page->injectedBundleFullScreenClient().beganExitFullScreen(m_page.get(), m_finalFrame, m_initialFrame); 132 136 } -
trunk/Source/WebKitLegacy/mac/ChangeLog
r224263 r224313 1 2017-11-01 Jeremy Jones <jeremyj@apple.com> 2 3 Implement WKFullscreenWindowController for iOS. 4 https://bugs.webkit.org/show_bug.cgi?id=178924 5 rdar://problem/34697120 6 7 Reviewed by Simon Fraser. 8 9 Enable ENABLE_FULLSCREEN_API for iOS. Fix a build error. 10 11 * Configurations/FeatureDefines.xcconfig: 12 * WebView/WebView.mm: 13 (-[WebView fullScreenPlaceholderView]): 14 1 15 2017-10-31 Tim Horton <timothy_horton@apple.com> 2 16 -
trunk/Source/WebKitLegacy/mac/Configurations/FeatureDefines.xcconfig
r224263 r224313 88 88 ENABLE_DEVICE_ORIENTATION[sdk=iphone*] = ENABLE_DEVICE_ORIENTATION; 89 89 ENABLE_FILTERS_LEVEL_2 = ENABLE_FILTERS_LEVEL_2; 90 ENABLE_FULLSCREEN_API[sdk=iphone*] = ENABLE_FULLSCREEN_API; 90 91 ENABLE_FULLSCREEN_API[sdk=macosx*] = ENABLE_FULLSCREEN_API; 91 92 ENABLE_GAMEPAD = ENABLE_GAMEPAD; -
trunk/Source/WebKitLegacy/mac/WebView/WebView.mm
r223779 r224313 10097 10097 - (NSView*)fullScreenPlaceholderView 10098 10098 { 10099 #if ENABLE(FULLSCREEN_API) 10099 #if ENABLE(FULLSCREEN_API) && !PLATFORM(IOS) 10100 10100 if (_private->newFullscreenController && [_private->newFullscreenController isFullScreen]) 10101 10101 return [_private->newFullscreenController webViewPlaceholder]; -
trunk/Tools/ChangeLog
r224312 r224313 1 2017-11-01 Jeremy Jones <jeremyj@apple.com> 2 3 Implement WKFullscreenWindowController for iOS. 4 https://bugs.webkit.org/show_bug.cgi?id=178924 5 rdar://problem/34697120 6 7 Reviewed by Simon Fraser. 8 9 Enable ENABLE_FULLSCREEN_API for iOS. 10 11 * TestWebKitAPI/Configurations/FeatureDefines.xcconfig: 12 1 13 2017-11-01 Simon Fraser <simon.fraser@apple.com> 2 14 -
trunk/Tools/TestWebKitAPI/Configurations/FeatureDefines.xcconfig
r224263 r224313 88 88 ENABLE_DEVICE_ORIENTATION[sdk=iphone*] = ENABLE_DEVICE_ORIENTATION; 89 89 ENABLE_FILTERS_LEVEL_2 = ENABLE_FILTERS_LEVEL_2; 90 ENABLE_FULLSCREEN_API[sdk=iphone*] = ENABLE_FULLSCREEN_API; 90 91 ENABLE_FULLSCREEN_API[sdk=macosx*] = ENABLE_FULLSCREEN_API; 91 92 ENABLE_GAMEPAD = ENABLE_GAMEPAD;
Note: See TracChangeset
for help on using the changeset viewer.