Title: [238688] trunk/Source
Revision
238688
Author
eric.carl...@apple.com
Date
2018-11-29 13:11:40 -0800 (Thu, 29 Nov 2018)

Log Message

[iOS] Tell AirPlay picker when a file has video
https://bugs.webkit.org/show_bug.cgi?id=192155
Source/WebCore/PAL:

Reviewed by Jer Noble.

* pal/spi/ios/MediaPlayerSPI.h:

Source/WebKit:

<rdar://problem/43843865>

Reviewed by Jer Noble.

* UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView _showPlaybackTargetPicker:fromRect:routeSharingPolicy:routingContextUID:]):
Add hasVideo parameter.

* UIProcess/ios/forms/WKAirPlayRoutePicker.h:
* UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
(-[WKAirPlayRoutePicker showFromView:routeSharingPolicy:routingContextUID:hasVideo:]): Add
hasVideo parameter, pass info to MPMediaControlsViewController.
(-[WKAirPlayRoutePicker showFromView:routeSharingPolicy:routingContextUID:]): Deleted.

Modified Paths

Diff

Modified: trunk/Source/WebCore/PAL/ChangeLog (238687 => 238688)


--- trunk/Source/WebCore/PAL/ChangeLog	2018-11-29 21:09:08 UTC (rev 238687)
+++ trunk/Source/WebCore/PAL/ChangeLog	2018-11-29 21:11:40 UTC (rev 238688)
@@ -1,3 +1,12 @@
+2018-11-29  Eric Carlson  <eric.carl...@apple.com>
+
+        [iOS] Tell AirPlay picker when a file has video
+        https://bugs.webkit.org/show_bug.cgi?id=192155
+
+        Reviewed by Jer Noble.
+
+        * pal/spi/ios/MediaPlayerSPI.h:
+
 2018-11-29  Alexey Proskuryakov  <a...@apple.com>
 
         Modernize the check for kCFURLRequestContentDecoderSkipURLCheck existence

Modified: trunk/Source/WebCore/PAL/pal/spi/ios/MediaPlayerSPI.h (238687 => 238688)


--- trunk/Source/WebCore/PAL/pal/spi/ios/MediaPlayerSPI.h	2018-11-29 21:09:08 UTC (rev 238687)
+++ trunk/Source/WebCore/PAL/pal/spi/ios/MediaPlayerSPI.h	2018-11-29 21:11:40 UTC (rev 238688)
@@ -66,6 +66,9 @@
 @property (nonatomic, copy, nullable) void (^didDismissHandler)(void);
 @end
 
+@interface MPMediaControlsConfiguration : NSObject <NSSecureCoding, NSCopying>
+@end
+
 #else
 
 enum {

Modified: trunk/Source/WebKit/ChangeLog (238687 => 238688)


--- trunk/Source/WebKit/ChangeLog	2018-11-29 21:09:08 UTC (rev 238687)
+++ trunk/Source/WebKit/ChangeLog	2018-11-29 21:11:40 UTC (rev 238688)
@@ -1,3 +1,21 @@
+2018-11-29  Eric Carlson  <eric.carl...@apple.com>
+
+        [iOS] Tell AirPlay picker when a file has video
+        https://bugs.webkit.org/show_bug.cgi?id=192155
+        <rdar://problem/43843865>
+
+        Reviewed by Jer Noble.
+
+        * UIProcess/ios/WKContentViewInteraction.mm:
+        (-[WKContentView _showPlaybackTargetPicker:fromRect:routeSharingPolicy:routingContextUID:]):
+        Add hasVideo parameter.
+
+        * UIProcess/ios/forms/WKAirPlayRoutePicker.h:
+        * UIProcess/ios/forms/WKAirPlayRoutePicker.mm:
+        (-[WKAirPlayRoutePicker showFromView:routeSharingPolicy:routingContextUID:hasVideo:]): Add
+        hasVideo parameter, pass info to MPMediaControlsViewController.
+        (-[WKAirPlayRoutePicker showFromView:routeSharingPolicy:routingContextUID:]): Deleted.
+
 2018-11-29  Alexey Proskuryakov  <a...@apple.com>
 
         Modernize the check for kCFURLRequestContentDecoderSkipURLCheck existence

Modified: trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm (238687 => 238688)


--- trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm	2018-11-29 21:09:08 UTC (rev 238687)
+++ trunk/Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm	2018-11-29 21:11:40 UTC (rev 238688)
@@ -4926,7 +4926,7 @@
 #if __IPHONE_OS_VERSION_MIN_REQUIRED >= 110000 && !PLATFORM(WATCHOS) && !PLATFORM(APPLETV)
     if (!_airPlayRoutePicker)
         _airPlayRoutePicker = adoptNS([[WKAirPlayRoutePicker alloc] init]);
-    [_airPlayRoutePicker showFromView:self routeSharingPolicy:routeSharingPolicy routingContextUID:routingContextUID];
+    [_airPlayRoutePicker showFromView:self routeSharingPolicy:routeSharingPolicy routingContextUID:routingContextUID hasVideo:hasVideo];
 #else
     if (!_airPlayRoutePicker)
         _airPlayRoutePicker = adoptNS([[WKAirPlayRoutePicker alloc] initWithView:self]);

Modified: trunk/Source/WebKit/UIProcess/ios/forms/WKAirPlayRoutePicker.h (238687 => 238688)


--- trunk/Source/WebKit/UIProcess/ios/forms/WKAirPlayRoutePicker.h	2018-11-29 21:09:08 UTC (rev 238687)
+++ trunk/Source/WebKit/UIProcess/ios/forms/WKAirPlayRoutePicker.h	2018-11-29 21:11:40 UTC (rev 238688)
@@ -36,7 +36,7 @@
 @class UIView;
 
 @interface WKAirPlayRoutePicker : NSObject
-- (void)showFromView:(UIView *)view routeSharingPolicy:(WebCore::RouteSharingPolicy)policy routingContextUID:(NSString *)contextUID;
+- (void)showFromView:(UIView *)view routeSharingPolicy:(WebCore::RouteSharingPolicy)policy routingContextUID:(NSString *)contextUID hasVideo:(BOOL)hasVideo;
 @end
 
 #else

Modified: trunk/Source/WebKit/UIProcess/ios/forms/WKAirPlayRoutePicker.mm (238687 => 238688)


--- trunk/Source/WebKit/UIProcess/ios/forms/WKAirPlayRoutePicker.mm	2018-11-29 21:09:08 UTC (rev 238687)
+++ trunk/Source/WebKit/UIProcess/ios/forms/WKAirPlayRoutePicker.mm	2018-11-29 21:11:40 UTC (rev 238688)
@@ -167,8 +167,13 @@
 
 SOFT_LINK_FRAMEWORK(MediaPlayer)
 SOFT_LINK_CLASS(MediaPlayer, MPAVRoutingController)
+SOFT_LINK_CLASS(MediaPlayer, MPMediaControlsConfiguration)
 SOFT_LINK_CLASS(MediaPlayer, MPMediaControlsViewController)
 
+@interface MPMediaControlsConfiguration (WKMPMediaControlsConfiguration)
+@property (nonatomic) BOOL sortByIsVideoRoute;
+@end
+
 enum {
     WKAirPlayRoutePickerRouteSharingPolicyDefault = 0,
     WKAirPlayRoutePickerRouteSharingPolicyLongForm = 1,
@@ -177,6 +182,7 @@
 typedef NSInteger WKAirPlayRoutePickerRouteSharingPolicy;
 
 @interface MPMediaControlsViewController (WKMPMediaControlsViewControllerPrivate)
+- (instancetype)initWithConfiguration:(MPMediaControlsConfiguration *)configuration;
 - (void)setOverrideRouteSharingPolicy:(WKAirPlayRoutePickerRouteSharingPolicy)routeSharingPolicy routingContextUID:(NSString *)routingContextUID;
 @end
 
@@ -190,7 +196,7 @@
     [super dealloc];
 }
 
-- (void)showFromView:(UIView *)view routeSharingPolicy:(WebCore::RouteSharingPolicy)routeSharingPolicy routingContextUID:(NSString *)routingContextUID
+- (void)showFromView:(UIView *)view routeSharingPolicy:(WebCore::RouteSharingPolicy)routeSharingPolicy routingContextUID:(NSString *)routingContextUID hasVideo:(BOOL)hasVideo
 {
     static_assert(static_cast<size_t>(WebCore::RouteSharingPolicy::Default) == static_cast<size_t>(WKAirPlayRoutePickerRouteSharingPolicyDefault), "RouteSharingPolicy::Default is not WKAirPlayRoutePickerRouteSharingPolicyDefault as expected");
     static_assert(static_cast<size_t>(WebCore::RouteSharingPolicy::LongForm) == static_cast<size_t>(WKAirPlayRoutePickerRouteSharingPolicyLongForm), "RouteSharingPolicy::LongForm is not WKAirPlayRoutePickerRouteSharingPolicyLongForm as expected");
@@ -202,7 +208,12 @@
     __block RetainPtr<MPAVRoutingController> routingController = adoptNS([allocMPAVRoutingControllerInstance() initWithName:@"WebKit - HTML media element showing AirPlay route picker"]);
     [routingController setDiscoveryMode:MPRouteDiscoveryModeDetailed];
 
-    _actionSheet = adoptNS([allocMPMediaControlsViewControllerInstance() init]);
+    RetainPtr<MPMediaControlsConfiguration> configuration;
+    if ([getMPMediaControlsConfigurationClass() instancesRespondToSelector:@selector(setSortByIsVideoRoute:)]) {
+        configuration = adoptNS([allocMPMediaControlsConfigurationInstance() init]);
+        configuration.get().sortByIsVideoRoute = hasVideo;
+    }
+    _actionSheet = adoptNS([allocMPMediaControlsViewControllerInstance() initWithConfiguration:configuration.get()]);
 
     if ([_actionSheet respondsToSelector:@selector(setOverrideRouteSharingPolicy:routingContextUID:)])
         [_actionSheet setOverrideRouteSharingPolicy:static_cast<WKAirPlayRoutePickerRouteSharingPolicy>(routeSharingPolicy) routingContextUID:routingContextUID];
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to