Title: [220288] trunk/Source
- Revision
- 220288
- Author
- [email protected]
- Date
- 2017-08-04 13:07:20 -0700 (Fri, 04 Aug 2017)
Log Message
Use MPAVRoutingController instead of deprecated versions.
https://bugs.webkit.org/show_bug.cgi?id=175063
Source/WebCore:
Patch by Jeremy Jones <[email protected]> on 2017-08-04
Reviewed by Tim Horton.
No new tests because no behavior change. This uses a different platform class to present
an interface.
Remove deprecated MPAudioVideoRoutingPopoverController and MPAVRoutingSheet
Add MPMediaControlsViewController.
* platform/spi/ios/MediaPlayerSPI.h:
Source/WebKit:
rdar://problem/33301230
Patch by Jeremy Jones <[email protected]> on 2017-08-04
Reviewed by Tim Horton.
Remove dependence on deprecated classes MPAVRoutingSheet and MPAudioVideoRoutingPopoverController.
* UIProcess/ios/forms/WKAirPlayRoutePicker.h:
* UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
(-[WKAirPlayRoutePicker dealloc]):
(-[WKAirPlayRoutePicker show:fromRect:]):
(-[WKAirPlayRoutePicker popoverControllerDidDismissPopover:]): Deleted.
(-[WKAirPlayRoutePicker _presentAirPlayPopoverAnimated:fromRect:]): Deleted.
(-[WKAirPlayRoutePicker _windowWillRotate:]): Deleted.
(-[WKAirPlayRoutePicker _windowDidRotate:]): Deleted.
(-[WKAirPlayRoutePicker _dismissAirPlayRoutePickerIPad]): Deleted.
(-[WKAirPlayRoutePicker showAirPlayPickerIPad:fromRect:]): Deleted.
(-[WKAirPlayRoutePicker showAirPlayPickerIPhone:]): Deleted.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (220287 => 220288)
--- trunk/Source/WebCore/ChangeLog 2017-08-04 20:01:16 UTC (rev 220287)
+++ trunk/Source/WebCore/ChangeLog 2017-08-04 20:07:20 UTC (rev 220288)
@@ -1,3 +1,18 @@
+2017-08-04 Jeremy Jones <[email protected]>
+
+ Use MPAVRoutingController instead of deprecated versions.
+ https://bugs.webkit.org/show_bug.cgi?id=175063
+
+ Reviewed by Tim Horton.
+
+ No new tests because no behavior change. This uses a different platform class to present
+ an interface.
+
+ Remove deprecated MPAudioVideoRoutingPopoverController and MPAVRoutingSheet
+ Add MPMediaControlsViewController.
+
+ * platform/spi/ios/MediaPlayerSPI.h:
+
2017-08-04 Matt Baker <[email protected]>
Web Inspector: REGRESSION (r220233): Check for null pointer passed to WebGLRenderingContextBase::deleteProgram
Modified: trunk/Source/WebCore/platform/spi/ios/MediaPlayerSPI.h (220287 => 220288)
--- trunk/Source/WebCore/platform/spi/ios/MediaPlayerSPI.h 2017-08-04 20:01:16 UTC (rev 220287)
+++ trunk/Source/WebCore/platform/spi/ios/MediaPlayerSPI.h 2017-08-04 20:07:20 UTC (rev 220288)
@@ -33,17 +33,11 @@
#if USE(APPLE_INTERNAL_SDK)
#import <MediaPlayer/MPAVRoutingController.h>
-#import <MediaPlayer/MPAVRoutingSheet.h>
-#import <MediaPlayer/MPAudioVideoRoutingPopoverController.h>
+#import <MediaPlayer/MPMediaControlsViewController.h>
#else
-enum {
- MPAVItemTypeUnknown = 0,
- MPAVItemTypeAudio = 1,
- MPAVItemTypeVideo = 2,
-};
-typedef NSUInteger MPAVItemType;
+NS_ASSUME_NONNULL_BEGIN
enum {
MPRouteDiscoveryModeDisabled = 0,
@@ -60,34 +54,12 @@
@property (nonatomic, assign) MPRouteDiscoveryMode discoveryMode;
@end
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-@interface MPAudioVideoRoutingPopoverController : UIPopoverController
+@interface MPMediaControlsViewController : UIViewController
+@property (nonatomic, copy, nullable) void (^didDismissHandler)(void);
@end
-#pragma clang diagnostic pop
-@interface MPAudioVideoRoutingPopoverController ()
-- (id)initWithType:(MPAVItemType)avItemType;
-@end
+NS_ASSUME_NONNULL_END
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-@interface MPAVRoutingSheet : UIView
-@end
-#pragma clang diagnostic pop
-
-@interface MPAVRoutingSheet ()
-@property (nonatomic, assign, setter=setAVItemType:) MPAVItemType avItemType;
-
-@property (nonatomic, assign) BOOL mirroringOnly;
-
-- (id)initWithAVItemType:(MPAVItemType)avItemType;
-
-- (void)showInView:(UIView *)view withCompletionHandler:(void (^)(void))completionHandler;
-
-- (void)dismiss;
-@end
-
#endif
#endif
Modified: trunk/Source/WebKit/ChangeLog (220287 => 220288)
--- trunk/Source/WebKit/ChangeLog 2017-08-04 20:01:16 UTC (rev 220287)
+++ trunk/Source/WebKit/ChangeLog 2017-08-04 20:07:20 UTC (rev 220288)
@@ -1,3 +1,25 @@
+2017-08-04 Jeremy Jones <[email protected]>
+
+ Use MPAVRoutingController instead of deprecated versions.
+ https://bugs.webkit.org/show_bug.cgi?id=175063
+ rdar://problem/33301230
+
+ Reviewed by Tim Horton.
+
+ Remove dependence on deprecated classes MPAVRoutingSheet and MPAudioVideoRoutingPopoverController.
+
+ * UIProcess/ios/forms/WKAirPlayRoutePicker.h:
+ * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
+ (-[WKAirPlayRoutePicker dealloc]):
+ (-[WKAirPlayRoutePicker show:fromRect:]):
+ (-[WKAirPlayRoutePicker popoverControllerDidDismissPopover:]): Deleted.
+ (-[WKAirPlayRoutePicker _presentAirPlayPopoverAnimated:fromRect:]): Deleted.
+ (-[WKAirPlayRoutePicker _windowWillRotate:]): Deleted.
+ (-[WKAirPlayRoutePicker _windowDidRotate:]): Deleted.
+ (-[WKAirPlayRoutePicker _dismissAirPlayRoutePickerIPad]): Deleted.
+ (-[WKAirPlayRoutePicker showAirPlayPickerIPad:fromRect:]): Deleted.
+ (-[WKAirPlayRoutePicker showAirPlayPickerIPhone:]): Deleted.
+
2017-08-04 Tim Horton <[email protected]>
viewport-fit changes during animated resize can cause layout size to get stuck
Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm (220287 => 220288)
--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm 2017-08-04 20:01:16 UTC (rev 220287)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm 2017-08-04 20:07:20 UTC (rev 220288)
@@ -4000,8 +4000,8 @@
- (void)_showPlaybackTargetPicker:(BOOL)hasVideo fromRect:(const IntRect&)elementRect
{
if (!_airPlayRoutePicker)
- _airPlayRoutePicker = adoptNS([[WKAirPlayRoutePicker alloc] initWithView:self]);
- [_airPlayRoutePicker show:hasVideo fromRect:elementRect];
+ _airPlayRoutePicker = adoptNS([[WKAirPlayRoutePicker alloc] init]);
+ [_airPlayRoutePicker showFromView:self];
}
- (void)_showRunOpenPanel:(API::OpenPanelParameters*)parameters resultListener:(WebOpenPanelResultListenerProxy*)listener
Modified: trunk/Source/WebKit/UIProcess/ios/forms/WKAirPlayRoutePicker.h (220287 => 220288)
--- trunk/Source/WebKit/UIProcess/ios/forms/WKAirPlayRoutePicker.h 2017-08-04 20:01:16 UTC (rev 220287)
+++ trunk/Source/WebKit/UIProcess/ios/forms/WKAirPlayRoutePicker.h 2017-08-04 20:07:20 UTC (rev 220288)
@@ -25,13 +25,12 @@
#if PLATFORM(IOS)
-#import <UIKit/UIPopoverController.h>
+#import <Foundation/Foundation.h>
@class WKContentView;
-@interface WKAirPlayRoutePicker : UIView <UIPopoverControllerDelegate>
-- (instancetype)initWithView:(WKContentView *)view;
-- (void)show:(BOOL)hasVideo fromRect:(CGRect)elementRect;
+@interface WKAirPlayRoutePicker : NSObject
+- (void)showFromView:(WKContentView *)view;
@end
#endif // PLATFORM(IOS)
Modified: trunk/Source/WebKit/UIProcess/ios/forms/WKAirPlayRoutePicker.mm (220287 => 220288)
--- trunk/Source/WebKit/UIProcess/ios/forms/WKAirPlayRoutePicker.mm 2017-08-04 20:01:16 UTC (rev 220287)
+++ trunk/Source/WebKit/UIProcess/ios/forms/WKAirPlayRoutePicker.mm 2017-08-04 20:07:20 UTC (rev 220288)
@@ -30,133 +30,55 @@
#import "UIKitSPI.h"
#import "WKContentView.h"
-#import "WKContentViewInteraction.h"
-#import "WebPageProxy.h"
#import <WebCore/MediaPlayerSPI.h>
#import <wtf/RetainPtr.h>
#import <wtf/SoftLinking.h>
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wdeprecated-declarations"
-
+#if !PLATFORM(WATCHOS) && !PLATFORM(APPLETV)
SOFT_LINK_FRAMEWORK(MediaPlayer)
SOFT_LINK_CLASS(MediaPlayer, MPAVRoutingController)
-SOFT_LINK_CLASS(MediaPlayer, MPAudioVideoRoutingPopoverController)
-SOFT_LINK_CLASS(MediaPlayer, MPAVRoutingSheet)
+SOFT_LINK_CLASS(MediaPlayer, MPMediaControlsViewController)
+#endif
using namespace WebKit;
@implementation WKAirPlayRoutePicker {
- RetainPtr<MPAVRoutingController> _routingController;
- RetainPtr<MPAudioVideoRoutingPopoverController> _popoverController; // iPad
- RetainPtr<MPAVRoutingSheet> _actionSheet; // iPhone
- WKContentView* _view; // Weak reference.
+#if !PLATFORM(WATCHOS) && !PLATFORM(APPLETV)
+ RetainPtr<MPMediaControlsViewController> _actionSheet;
+#endif
}
-- (instancetype)initWithView:(WKContentView *)view
-{
- if (!(self = [super init]))
- return nil;
-
- _view = view;
- return self;
-}
-
- (void)dealloc
{
- // The ActionSheet's completion handler will release and clear the ActionSheet.
- [_actionSheet dismiss];
- [self _dismissAirPlayRoutePickerIPad];
-
+#if !PLATFORM(WATCHOS) && !PLATFORM(APPLETV)
+ [_actionSheet dismissViewControllerAnimated:0 completion:nil];
+#endif
[super dealloc];
}
-- (void)popoverControllerDidDismissPopover:(UIPopoverController *)popoverController
+- (void)showFromView:(WKContentView *)view
{
- if (popoverController != _popoverController)
- return;
-
- [self _dismissAirPlayRoutePickerIPad];
-}
-
-- (void)_presentAirPlayPopoverAnimated:(BOOL)animated fromRect:(CGRect)elementRect
-{
- [_popoverController presentPopoverFromRect:elementRect inView:_view permittedArrowDirections:UIPopoverArrowDirectionAny animated:animated];
-}
-
-- (void)_windowWillRotate:(NSNotification *)notification
-{
- [_popoverController dismissPopoverAnimated:NO];
-}
-
-- (void)_windowDidRotate:(NSNotification *)notification
-{
- [self _dismissAirPlayRoutePickerIPad];
-}
-
-- (void)_dismissAirPlayRoutePickerIPad
-{
- if (!_routingController)
- return;
-
- [_routingController setDiscoveryMode:MPRouteDiscoveryModeDisabled];
- _routingController = nil;
-
- if (!_popoverController)
- return;
-
- NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
- [center removeObserver:self name:UIWindowWillRotateNotification object:nil];
- [center removeObserver:self name:UIWindowDidRotateNotification object:nil];
-
- [_popoverController dismissPopoverAnimated:NO];
- [_popoverController setDelegate:nil];
- _popoverController = nil;
-}
-
-- (void)showAirPlayPickerIPad:(MPAVItemType)itemType fromRect:(CGRect)elementRect
-{
- if (_popoverController)
- return;
-
- _popoverController = adoptNS([allocMPAudioVideoRoutingPopoverControllerInstance() initWithType:itemType]);
- [_popoverController setDelegate:self];
-
- NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
- [center addObserver:self selector:@selector(_windowWillRotate:) name:UIWindowWillRotateNotification object:nil];
- [center addObserver:self selector:@selector(_windowDidRotate:) name:UIWindowDidRotateNotification object:nil];
-
- [self _presentAirPlayPopoverAnimated:YES fromRect:elementRect];
-}
-
-- (void)showAirPlayPickerIPhone:(MPAVItemType)itemType
-{
+#if !PLATFORM(WATCHOS) && !PLATFORM(APPLETV)
if (_actionSheet)
return;
- _actionSheet = adoptNS([allocMPAVRoutingSheetInstance() initWithAVItemType:itemType]);
+ __block RetainPtr<MPAVRoutingController> routingController = adoptNS([allocMPAVRoutingControllerInstance() initWithName:@"WebKit - HTML media element showing AirPlay route picker"]);
+ [routingController setDiscoveryMode:MPRouteDiscoveryModeDetailed];
- [_actionSheet showInView:_view withCompletionHandler:^{
- [_routingController setDiscoveryMode:MPRouteDiscoveryModeDisabled];
- _routingController = nil;
+ _actionSheet = adoptNS([allocMPMediaControlsViewControllerInstance() init]);
+ _actionSheet.get().didDismissHandler = ^ {
+ [routingController setDiscoveryMode:MPRouteDiscoveryModeDisabled];
+ routingController = nil;
_actionSheet = nil;
- }];
-}
+ };
-- (void)show:(BOOL)hasVideo fromRect:(CGRect)elementRect
-{
- _routingController = adoptNS([allocMPAVRoutingControllerInstance() initWithName:@"WebKit2 - HTML media element showing AirPlay route picker"]);
- [_routingController setDiscoveryMode:MPRouteDiscoveryModeDetailed];
-
- MPAVItemType itemType = hasVideo ? MPAVItemTypeVideo : MPAVItemTypeAudio;
- if (UICurrentUserInterfaceIdiomIsPad())
- [self showAirPlayPickerIPad:itemType fromRect:elementRect];
- else
- [self showAirPlayPickerIPhone:itemType];
+ UIViewController *viewControllerForPresentation = [UIViewController _viewControllerForFullScreenPresentationFromView:view];
+ [viewControllerForPresentation presentViewController:_actionSheet.get() animated:YES completion:nil];
+#else
+ UNUSED_PARAM(view);
+#endif
}
@end
-#pragma clang diagnostic pop
-
#endif // PLATFORM(IOS)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes