Changeset 233926 in webkit
- Timestamp:
- Jul 18, 2018 12:50:04 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 4 deleted
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r233923 r233926 1 2018-07-18 Jer Noble <jer.noble@apple.com> 2 3 PiP from Element Fullscreen should match AVKit's behavior 4 https://bugs.webkit.org/show_bug.cgi?id=187623 5 6 Reviewed by Jon Lee. 7 8 * TestExpectations: 9 * media/fullscreen-video-going-into-pip-expected.txt: Removed. 10 * media/fullscreen-video-going-into-pip.html: Removed. 11 * media/video-contained-in-fullscreen-element-going-into-pip-expected.txt: Removed. 12 * media/video-contained-in-fullscreen-element-going-into-pip.html: Removed. 13 * platform/mac-wk2/TestExpectations: 14 1 15 2018-07-18 Truitt Savell <tsavell@apple.com> 2 16 -
trunk/LayoutTests/TestExpectations
r233922 r233926 1447 1447 media/element-containing-pip-video-going-into-fullscreen.html [ WontFix ] 1448 1448 media/fullscreen-api-enabled-media-with-presentation-mode.html [ WontFix ] 1449 media/fullscreen-video-going-into-pip.html [ WontFix ]1450 1449 media/navigate-with-pip-should-not-crash.html [ WontFix ] 1451 1450 media/pip-video-going-into-fullscreen.html [ WontFix ] 1452 media/video-contained-in-fullscreen-element-going-into-pip.html [ WontFix ]1453 1451 1454 1452 webkit.org/b/159370 [ Debug ] fast/history/page-cache-destroy-document.html [ Skip ] -
trunk/LayoutTests/platform/mac-wk2/TestExpectations
r233880 r233926 548 548 [ Sierra+ ] media/element-containing-pip-video-going-into-fullscreen.html [ Pass Timeout ] 549 549 webkit.org/b/172998 [ Sierra+ ] media/fullscreen-api-enabled-media-with-presentation-mode.html [ Failure ] 550 [ Sierra+ ] media/fullscreen-video-going-into-pip.html [ Pass ]551 550 webkit.org/b/173199 [ Sierra+ ] media/navigate-with-pip-should-not-crash.html [ Pass Failure ] 552 551 [ Sierra+ ] media/pip-video-going-into-fullscreen.html [ Pass ] 553 [ Sierra+ ] media/video-contained-in-fullscreen-element-going-into-pip.html [ Pass ]554 552 555 553 # RTL Scrollbars are enabled on Sierra WebKit2. -
trunk/Source/WebCore/ChangeLog
r233919 r233926 1 2018-07-18 Jer Noble <jer.noble@apple.com> 2 3 PiP from Element Fullscreen should match AVKit's behavior 4 https://bugs.webkit.org/show_bug.cgi?id=187623 5 6 Reviewed by Jon Lee. 7 8 PiP behavior should be defined at the WebKit2 level, and not in HTMLMediaElement: 9 10 * html/HTMLMediaElement.cpp: 11 (WebCore::HTMLMediaElement::enterFullscreen): 12 13 Add an accessor for pictureInPictureWasStartedWhenEnteringBackground(): 14 15 * platform/cocoa/VideoFullscreenModelVideoElement.mm: 16 (VideoFullscreenInterfaceAVKit::pictureInPictureWasStartedWhenEnteringBackground const): 17 18 Add VideoFullscreenModelClient virutal methods for PiP change notifications: 19 20 * platform/cocoa/VideoFullscreenModel.h: 21 (WebCore::VideoFullscreenModelClient::hasVideoChanged): 22 (WebCore::VideoFullscreenModelClient::videoDimensionsChanged): 23 (WebCore::VideoFullscreenModelClient::willEnterPictureInPicture): 24 (WebCore::VideoFullscreenModelClient::didEnterPictureInPicture): 25 (WebCore::VideoFullscreenModelClient::failedToEnterPictureInPicture): 26 (WebCore::VideoFullscreenModelClient::willExitPictureInPicture): 27 (WebCore::VideoFullscreenModelClient::didExitPictureInPicture): 28 (WebCore::VideoFullscreenModelClient::failedToExitPictureInPicture): 29 * platform/cocoa/VideoFullscreenModelVideoElement.h: 30 * platform/cocoa/VideoFullscreenModelVideoElement.mm: 31 (VideoFullscreenModelVideoElement::willEnterPictureInPicture): 32 (VideoFullscreenModelVideoElement::didEnterPictureInPicture): 33 (VideoFullscreenModelVideoElement::failedToEnterPictureInPicture): 34 (VideoFullscreenModelVideoElement::willExitPictureInPicture): 35 (VideoFullscreenModelVideoElement::didExitPictureInPicture): 36 (VideoFullscreenModelVideoElement::failedToExitPictureInPicture): 37 * platform/ios/VideoFullscreenInterfaceAVKit.h: 38 * platform/ios/VideoFullscreenInterfaceAVKit.mm: 39 (-[WebAVPlayerLayer layoutSublayers]): 40 (-[WebAVPlayerLayer resolveBounds]): 41 (-[WebAVPlayerLayer setVideoGravity:]): 42 (VideoFullscreenInterfaceAVKit::setupFullscreen): 43 (VideoFullscreenInterfaceAVKit::presentingViewController): 44 (VideoFullscreenInterfaceAVKit::willStartPictureInPicture): 45 (VideoFullscreenInterfaceAVKit::didStartPictureInPicture): 46 (VideoFullscreenInterfaceAVKit::failedToStartPictureInPicture): 47 (VideoFullscreenInterfaceAVKit::willStopPictureInPicture): 48 (VideoFullscreenInterfaceAVKit::didStopPictureInPicture): 49 (VideoFullscreenInterfaceAVKit::shouldExitFullscreenWithReason): 50 (VideoFullscreenInterfaceAVKit::doSetup): 51 * platform/ios/WebVideoFullscreenControllerAVKit.mm: 52 (VideoFullscreenControllerContext::willEnterPictureInPicture): 53 (VideoFullscreenControllerContext::didEnterPictureInPicture): 54 (VideoFullscreenControllerContext::failedToEnterPictureInPicture): 55 (VideoFullscreenControllerContext::willExitPictureInPicture): 56 (VideoFullscreenControllerContext::didExitPictureInPicture): 57 (VideoFullscreenControllerContext::failedToExitPictureInPicture): 58 * platform/mac/VideoFullscreenInterfaceMac.h: 59 (WebCore::VideoFullscreenInterfaceMac::requestHideAndExitFullscreen): Deleted. 60 * platform/mac/VideoFullscreenInterfaceMac.mm: 61 (-[WebVideoFullscreenInterfaceMacObjC invalidateFullscreenState]): 62 (-[WebVideoFullscreenInterfaceMacObjC exitPIP]): 63 (-[WebVideoFullscreenInterfaceMacObjC exitPIPAnimatingToRect:inWindow:]): 64 (-[WebVideoFullscreenInterfaceMacObjC pipShouldClose:]): 65 (-[WebVideoFullscreenInterfaceMacObjC pipDidClose:]): 66 (WebCore::VideoFullscreenInterfaceMac::enterFullscreen): 67 (WebCore::VideoFullscreenInterfaceMac::exitFullscreen): 68 (WebCore::VideoFullscreenInterfaceMac::exitFullscreenWithoutAnimationToMode): 69 (WebCore::VideoFullscreenInterfaceMac::requestHideAndExitFullscreen): 70 1 71 2018-07-18 Basuke Suzuki <Basuke.Suzuki@sony.com> 2 72 -
trunk/Source/WebCore/PAL/ChangeLog
r233837 r233926 1 2018-07-18 Jer Noble <jer.noble@apple.com> 2 3 PiP from Element Fullscreen should match AVKit's behavior 4 https://bugs.webkit.org/show_bug.cgi?id=187623 5 6 Reviewed by Jon Lee. 7 8 * pal/spi/mac/PIPSPI.h: 9 1 10 2018-07-14 Kocsen Chung <kocsen_chung@apple.com> 2 11 -
trunk/Source/WebCore/PAL/pal/spi/mac/PIPSPI.h
r227552 r233926 50 50 @optional 51 51 - (BOOL)pipShouldClose:(PIPViewController *)pip; 52 - (void)pipWillClose:(PIPViewController *)pip; 52 53 - (void)pipDidClose:(PIPViewController *)pip; 53 54 - (void)pipActionPlay:(PIPViewController *)pip; -
trunk/Source/WebCore/html/HTMLMediaElement.cpp
r233865 r233926 5919 5919 m_waitingToEnterFullscreen = true; 5920 5920 5921 #if ENABLE(FULLSCREEN_API) 5922 if (document().settings().fullScreenEnabled()) { 5923 #if ENABLE(VIDEO_USES_ELEMENT_FULLSCREEN) 5924 if (mode == VideoFullscreenModeStandard) { 5925 document().requestFullScreenForElement(this, Document::ExemptIFrameAllowFullScreenRequirement); 5926 return; 5927 } 5928 #endif 5929 5930 // If this media element is not going to standard fullscreen mode but there's 5931 // an element that's currently in full screen in the document, exit full screen 5932 // if it contains this media element. 5933 if (RefPtr<Element> fullscreenElement = document().webkitCurrentFullScreenElement()) { 5934 if (fullscreenElement->contains(this)) 5935 document().webkitCancelFullScreen(); 5936 } 5921 #if ENABLE(FULLSCREEN_API) && ENABLE(VIDEO_USES_ELEMENT_FULLSCREEN) 5922 if (document().settings().fullScreenEnabled() && mode == VideoFullscreenModeStandard) { 5923 document().requestFullScreenForElement(this, Document::ExemptIFrameAllowFullScreenRequirement); 5924 return; 5937 5925 } 5938 5926 #endif -
trunk/Source/WebCore/platform/cocoa/VideoFullscreenModel.h
r229714 r233926 58 58 virtual bool hasVideo() const = 0; 59 59 60 virtual void willEnterPictureInPicture() = 0; 61 virtual void didEnterPictureInPicture() = 0; 62 virtual void failedToEnterPictureInPicture() = 0; 63 virtual void willExitPictureInPicture() = 0; 64 virtual void didExitPictureInPicture() = 0; 65 60 66 #if PLATFORM(IOS) 61 67 virtual UIViewController *presentingViewController() { return nullptr; } … … 67 73 public: 68 74 virtual ~VideoFullscreenModelClient() = default; 69 virtual void hasVideoChanged(bool) = 0; 70 virtual void videoDimensionsChanged(const FloatSize&) = 0; 75 virtual void hasVideoChanged(bool) { }; 76 virtual void videoDimensionsChanged(const FloatSize&) { }; 77 virtual void willEnterPictureInPicture() { } 78 virtual void didEnterPictureInPicture() { } 79 virtual void failedToEnterPictureInPicture() { } 80 virtual void willExitPictureInPicture() { } 81 virtual void didExitPictureInPicture() { } 71 82 }; 72 83 -
trunk/Source/WebCore/platform/cocoa/VideoFullscreenModelVideoElement.h
r233189 r233926 81 81 void setVideoDimensions(const FloatSize&); 82 82 83 void willEnterPictureInPicture() override; 84 void didEnterPictureInPicture() override; 85 void failedToEnterPictureInPicture() override; 86 void willExitPictureInPicture() override; 87 void didExitPictureInPicture() override; 88 83 89 static const Vector<WTF::AtomicString>& observedEventNames(); 84 90 const WTF::AtomicString& eventNameAll(); -
trunk/Source/WebCore/platform/cocoa/VideoFullscreenModelVideoElement.mm
r230194 r233926 241 241 } 242 242 243 void VideoFullscreenModelVideoElement::willEnterPictureInPicture() 244 { 245 for (auto& client : m_clients) 246 client->willEnterPictureInPicture(); 247 } 248 249 void VideoFullscreenModelVideoElement::didEnterPictureInPicture() 250 { 251 for (auto& client : m_clients) 252 client->didEnterPictureInPicture(); 253 } 254 255 void VideoFullscreenModelVideoElement::failedToEnterPictureInPicture() 256 { 257 for (auto& client : m_clients) 258 client->failedToEnterPictureInPicture(); 259 } 260 261 void VideoFullscreenModelVideoElement::willExitPictureInPicture() 262 { 263 for (auto& client : m_clients) 264 client->willExitPictureInPicture(); 265 } 266 267 void VideoFullscreenModelVideoElement::didExitPictureInPicture() 268 { 269 for (auto& client : m_clients) 270 client->didExitPictureInPicture(); 271 } 272 243 273 #endif -
trunk/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.h
r230194 r233926 59 59 class VideoFullscreenChangeObserver; 60 60 61 class WEBCORE_EXPORTVideoFullscreenInterfaceAVKit final61 class VideoFullscreenInterfaceAVKit final 62 62 : public VideoFullscreenModelClient 63 63 , public PlaybackSessionModelClient … … 65 65 66 66 public: 67 static Ref<VideoFullscreenInterfaceAVKit> create(PlaybackSessionInterfaceAVKit&);67 WEBCORE_EXPORT static Ref<VideoFullscreenInterfaceAVKit> create(PlaybackSessionInterfaceAVKit&); 68 68 virtual ~VideoFullscreenInterfaceAVKit(); 69 69 WEBCORE_EXPORT void setVideoFullscreenModel(VideoFullscreenModel*); 70 70 WEBCORE_EXPORT void setVideoFullscreenChangeObserver(VideoFullscreenChangeObserver*); 71 PlaybackSessionInterfaceAVKit& playbackSessionInterface() const { return m_playbackSessionInterface.get(); } 71 72 PlaybackSessionModel* playbackSessionModel() const { return m_playbackSessionInterface->playbackSessionModel(); } 72 73 … … 131 132 #endif 132 133 133 VideoFullscreenModel* model() const { return m_videoFullscreenModel; }134 VideoFullscreenModel* videoFullscreenModel() const { return m_videoFullscreenModel; } 134 135 bool shouldExitFullscreenWithReason(ExitFullScreenReason); 135 136 HTMLMediaElementEnums::VideoFullscreenMode mode() const { return m_currentMode.mode(); } … … 138 139 void fullscreenMayReturnToInline(WTF::Function<void(bool)>&& callback); 139 140 bool wirelessVideoPlaybackDisabled() const; 140 void applicationDidBecomeActive();141 WEBCORE_EXPORT void applicationDidBecomeActive(); 141 142 142 143 void willStartPictureInPicture(); … … 152 153 bool isPlayingVideoInEnhancedFullscreen() const; 153 154 154 void setMode(HTMLMediaElementEnums::VideoFullscreenMode);155 WEBCORE_EXPORT void setMode(HTMLMediaElementEnums::VideoFullscreenMode); 155 156 void clearMode(HTMLMediaElementEnums::VideoFullscreenMode); 156 157 bool hasMode(HTMLMediaElementEnums::VideoFullscreenMode mode) const { return m_currentMode.hasMode(mode); } … … 160 161 UIViewController *fullscreenViewController() const { return m_viewController.get(); } 161 162 WebAVPlayerLayerView* playerLayerView() const { return m_playerLayerView.get(); } 163 WEBCORE_EXPORT bool pictureInPictureWasStartedWhenEnteringBackground() const; 162 164 #endif 163 165 -
trunk/Source/WebCore/platform/ios/VideoFullscreenInterfaceAVKit.mm
r233476 r233926 290 290 sourceVideoFrame = smallestRectWithAspectRatioAroundRect(videoAspectRatio, self.modelVideoLayerFrame); 291 291 self.modelVideoLayerFrame = CGRectMake(0, 0, sourceVideoFrame.width(), sourceVideoFrame.height()); 292 ASSERT(_fullscreenInterface-> model());293 _fullscreenInterface-> model()->setVideoLayerFrame(self.modelVideoLayerFrame);292 ASSERT(_fullscreenInterface->videoFullscreenModel()); 293 _fullscreenInterface->videoFullscreenModel()->setVideoLayerFrame(self.modelVideoLayerFrame); 294 294 targetVideoFrame = smallestRectWithAspectRatioAroundRect(videoAspectRatio, self.bounds); 295 295 } else … … 326 326 if (!CGRectEqualToRect(self.modelVideoLayerFrame, [self bounds])) { 327 327 self.modelVideoLayerFrame = [self bounds]; 328 ASSERT(_fullscreenInterface-> model());329 _fullscreenInterface-> model()->setVideoLayerFrame(self.modelVideoLayerFrame);328 ASSERT(_fullscreenInterface->videoFullscreenModel()); 329 _fullscreenInterface->videoFullscreenModel()->setVideoLayerFrame(self.modelVideoLayerFrame); 330 330 } 331 331 [(UIView *)[_videoSublayer delegate] setTransform:CGAffineTransformIdentity]; … … 351 351 ASSERT_NOT_REACHED(); 352 352 353 ASSERT(_fullscreenInterface-> model());354 _fullscreenInterface-> model()->setVideoLayerGravity(gravity);353 ASSERT(_fullscreenInterface->videoFullscreenModel()); 354 _fullscreenInterface->videoFullscreenModel()->setVideoLayerGravity(gravity); 355 355 } 356 356 … … 798 798 } 799 799 800 BOOL VideoFullscreenInterfaceAVKit::pictureInPictureWasStartedWhenEnteringBackground() const 801 { 802 return [m_playerViewController pictureInPictureWasStartedWhenEnteringBackground]; 803 } 804 800 805 #if !ENABLE(FULLSCREEN_API) 801 806 … … 880 885 881 886 #if PLATFORM(WATCHOS) 882 m_viewController = model()->createVideoFullscreenViewController(m_playerViewController.get().avPlayerViewController);887 m_viewController = videoFullscreenModel()->createVideoFullscreenViewController(m_playerViewController.get().avPlayerViewController); 883 888 #endif 884 889 … … 945 950 UIViewController *VideoFullscreenInterfaceAVKit::presentingViewController() 946 951 { 947 auto *controller = model()->presentingViewController();952 auto *controller = videoFullscreenModel()->presentingViewController(); 948 953 if (!controller) 949 954 controller = fallbackViewController(m_parentView.get()); … … 1135 1140 LOG(Fullscreen, "VideoFullscreenInterfaceAVKit::willStartPictureInPicture(%p)", this); 1136 1141 setMode(HTMLMediaElementEnums::VideoFullscreenModePictureInPicture); 1142 if (m_videoFullscreenModel) 1143 m_videoFullscreenModel->willEnterPictureInPicture(); 1137 1144 } 1138 1145 … … 1140 1147 { 1141 1148 LOG(Fullscreen, "VideoFullscreenInterfaceAVKit::didStartPictureInPicture(%p)", this); 1142 m_shouldReturnToFullscreenAfterEnteringForeground = [m_playerViewController pictureInPictureWasStartedWhenEnteringBackground];1149 m_shouldReturnToFullscreenAfterEnteringForeground = pictureInPictureWasStartedWhenEnteringBackground(); 1143 1150 [m_playerViewController setShowsPlaybackControls:YES]; 1144 1151 1145 1152 if (m_currentMode.hasFullscreen()) { 1146 if (! [m_playerViewController pictureInPictureWasStartedWhenEnteringBackground]) {1153 if (!pictureInPictureWasStartedWhenEnteringBackground()) { 1147 1154 [[m_playerViewController view] layoutIfNeeded]; 1148 1155 [m_playerViewController exitFullScreenAnimated:YES completionHandler:[protectedThis = makeRefPtr(this), this] (BOOL success, NSError* error) { … … 1160 1167 if (m_fullscreenChangeObserver) 1161 1168 m_fullscreenChangeObserver->didEnterFullscreen(); 1169 if (m_videoFullscreenModel) 1170 m_videoFullscreenModel->didEnterPictureInPicture(); 1162 1171 } 1163 1172 … … 1174 1183 if (m_fullscreenChangeObserver) 1175 1184 m_fullscreenChangeObserver->didEnterFullscreen(); 1185 if (m_videoFullscreenModel) 1186 m_videoFullscreenModel->failedToEnterPictureInPicture(); 1176 1187 1177 1188 if (m_videoFullscreenModel) … … 1194 1205 if (m_videoFullscreenModel) 1195 1206 m_videoFullscreenModel->requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenModeNone); 1207 if (m_videoFullscreenModel) 1208 m_videoFullscreenModel->willExitPictureInPicture(); 1196 1209 } 1197 1210 … … 1216 1229 if (m_fullscreenChangeObserver) 1217 1230 m_fullscreenChangeObserver->didExitFullscreen(); 1231 if (m_videoFullscreenModel) 1232 m_videoFullscreenModel->didExitPictureInPicture(); 1218 1233 } 1219 1234 … … 1256 1271 1257 1272 if (reason == ExitFullScreenReason::PictureInPictureStarted) { 1258 if ( [m_playerViewController pictureInPictureWasStartedWhenEnteringBackground])1273 if (pictureInPictureWasStartedWhenEnteringBackground()) 1259 1274 return false; 1260 1275 … … 1431 1446 if (!m_hasVideoContentLayer) 1432 1447 m_fullscreenChangeObserver->requestVideoContentLayer(); 1448 if (m_videoFullscreenModel) 1449 m_videoFullscreenModel->willEnterPictureInPicture(); 1433 1450 } 1434 1451 … … 1450 1467 } 1451 1468 1469 if (m_videoFullscreenModel) 1470 m_videoFullscreenModel->didEnterPictureInPicture(); 1471 1452 1472 if (m_enterFullscreenNeedsEnterPictureInPicture) 1453 1473 doEnterFullscreen(); … … 1467 1487 1468 1488 if (m_videoFullscreenModel) 1489 m_videoFullscreenModel->failedToEnterPictureInPicture(); 1490 1491 if (m_videoFullscreenModel) 1469 1492 m_videoFullscreenModel->requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenModeNone); 1470 1493 } … … 1481 1504 [m_window setHidden:NO]; 1482 1505 [[m_playerViewController view] setHidden:NO]; 1506 1507 if (m_videoFullscreenModel) 1508 m_videoFullscreenModel->willExitPictureInPicture(); 1483 1509 } 1484 1510 … … 1504 1530 1505 1531 clearMode(HTMLMediaElementEnums::VideoFullscreenModePictureInPicture); 1532 1533 if (m_videoFullscreenModel) 1534 m_videoFullscreenModel->didExitPictureInPicture(); 1506 1535 1507 1536 if (m_enterFullscreenNeedsExitPictureInPicture) … … 1654 1683 1655 1684 #if PLATFORM(WATCHOS) 1656 m_viewController = model()->createVideoFullscreenViewController(m_playerViewController.get().avPlayerViewController);1685 m_viewController = videoFullscreenModel()->createVideoFullscreenViewController(m_playerViewController.get().avPlayerViewController); 1657 1686 #endif 1658 1687 -
trunk/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm
r232479 r233926 203 203 double volume() const override; 204 204 bool isPictureInPictureActive() const override; 205 void willEnterPictureInPicture() final; 206 void didEnterPictureInPicture() final; 207 void failedToEnterPictureInPicture() final; 208 void willExitPictureInPicture() final; 209 void didExitPictureInPicture() final; 205 210 206 211 HashSet<PlaybackSessionModelClient*> m_playbackClients; … … 628 633 } 629 634 635 void VideoFullscreenControllerContext::willEnterPictureInPicture() 636 { 637 ASSERT(isUIThread()); 638 for (auto* client : m_fullscreenClients) 639 client->willEnterPictureInPicture(); 640 } 641 642 void VideoFullscreenControllerContext::didEnterPictureInPicture() 643 { 644 ASSERT(isUIThread()); 645 for (auto* client : m_fullscreenClients) 646 client->didEnterPictureInPicture(); 647 } 648 649 void VideoFullscreenControllerContext::failedToEnterPictureInPicture() 650 { 651 ASSERT(isUIThread()); 652 for (auto* client : m_fullscreenClients) 653 client->failedToEnterPictureInPicture(); 654 } 655 656 void VideoFullscreenControllerContext::willExitPictureInPicture() 657 { 658 ASSERT(isUIThread()); 659 for (auto* client : m_fullscreenClients) 660 client->willExitPictureInPicture(); 661 } 662 663 void VideoFullscreenControllerContext::didExitPictureInPicture() 664 { 665 ASSERT(isUIThread()); 666 for (auto* client : m_fullscreenClients) 667 client->didExitPictureInPicture(); 668 } 669 630 670 FloatSize VideoFullscreenControllerContext::videoDimensions() const 631 671 { -
trunk/Source/WebCore/platform/mac/VideoFullscreenInterfaceMac.h
r230194 r233926 45 45 class VideoFullscreenChangeObserver; 46 46 47 class WEBCORE_EXPORTVideoFullscreenInterfaceMac47 class VideoFullscreenInterfaceMac 48 48 : public VideoFullscreenModelClient 49 49 , private PlaybackSessionModelClient … … 56 56 } 57 57 virtual ~VideoFullscreenInterfaceMac(); 58 PlaybackSessionInterfaceMac& playbackSessionInterface() const { return m_playbackSessionInterface.get(); } 58 59 VideoFullscreenModel* videoFullscreenModel() const { return m_videoFullscreenModel; } 59 60 PlaybackSessionModel* playbackSessionModel() const { return m_playbackSessionInterface->playbackSessionModel(); } … … 77 78 WEBCORE_EXPORT void cleanupFullscreen(); 78 79 WEBCORE_EXPORT void invalidate(); 79 void requestHideAndExitFullscreen() { }80 WEBCORE_EXPORT void requestHideAndExitFullscreen(); 80 81 WEBCORE_EXPORT void preparedToReturnToInline(bool visible, const IntRect& inlineRect, NSWindow *parentWindow); 81 82 void preparedToExitFullscreen() { } … … 84 85 bool hasMode(HTMLMediaElementEnums::VideoFullscreenMode mode) const { return m_mode & mode; } 85 86 bool isMode(HTMLMediaElementEnums::VideoFullscreenMode mode) const { return m_mode == mode; } 86 void setMode(HTMLMediaElementEnums::VideoFullscreenMode);87 WEBCORE_EXPORT void setMode(HTMLMediaElementEnums::VideoFullscreenMode); 87 88 void clearMode(HTMLMediaElementEnums::VideoFullscreenMode); 88 89 89 bool isPlayingVideoInEnhancedFullscreen() const;90 WEBCORE_EXPORT bool isPlayingVideoInEnhancedFullscreen() const; 90 91 91 92 bool mayAutomaticallyShowVideoPictureInPicture() const { return false; } … … 95 96 96 97 private: 97 VideoFullscreenInterfaceMac(PlaybackSessionInterfaceMac&);98 WEBCORE_EXPORT VideoFullscreenInterfaceMac(PlaybackSessionInterfaceMac&); 98 99 Ref<PlaybackSessionInterfaceMac> m_playbackSessionInterface; 99 100 VideoFullscreenModel* m_videoFullscreenModel { nullptr }; -
trunk/Source/WebCore/platform/mac/VideoFullscreenInterfaceMac.mm
r230177 r233926 108 108 NSRect _returningRect; 109 109 BOOL _playing; 110 BOOL _didRequestExitingPIP;111 110 BOOL _exitingToStandardFullscreen; 112 111 } … … 122 121 123 122 // Handling PIP transitions 124 @property (nonatomic, readonly) BOOL didRequestExitingPIP;125 123 @property (nonatomic, getter=isExitingToStandardFullscreen) BOOL exitingToStandardFullscreen; 126 124 … … 136 134 @synthesize playing=_playing; 137 135 @synthesize videoDimensions=_videoDimensions; 138 @synthesize didRequestExitingPIP=_didRequestExitingPIP;139 136 @synthesize exitingToStandardFullscreen=_exitingToStandardFullscreen; 140 137 … … 159 156 _videoViewContainerController = nil; 160 157 _pipState = PIPState::NotInPIP; 161 _didRequestExitingPIP = NO;162 158 _exitingToStandardFullscreen = NO; 163 159 _returningWindow = nil; … … 226 222 return; 227 223 228 _didRequestExitingPIP = YES;229 224 [_videoViewContainerController view].layer.backgroundColor = CGColorGetConstantColor(kCGColorClear); 230 225 [_pipViewController dismissViewController:_videoViewContainerController.get()]; … … 236 231 _returningWindow = window; 237 232 _returningRect = rect; 238 233 239 234 [_pipViewController setReplacementRect:rect]; 240 235 [_pipViewController setReplacementWindow:window]; … … 280 275 return YES; 281 276 282 _didRequestExitingPIP = YES; 283 _videoFullscreenInterfaceMac->videoFullscreenChangeObserver()->fullscreenMayReturnToInline(); 277 _videoFullscreenInterfaceMac->requestHideAndExitFullscreen(); 284 278 285 279 return NO; … … 304 298 if (!self.isExitingToStandardFullscreen) { 305 299 if (VideoFullscreenModel* videoFullscreenModel = _videoFullscreenInterfaceMac->videoFullscreenModel()) { 306 videoFullscreenModel-> requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenModeNone);300 videoFullscreenModel->didExitPictureInPicture(); 307 301 videoFullscreenModel->setVideoLayerGravity(VideoFullscreenModel::VideoGravityResizeAspect); 308 302 } 309 303 } 310 311 _videoFullscreenInterfaceMac->clearMode(HTMLMediaElementEnums::VideoFullscreenModePictureInPicture);312 304 313 305 if (VideoFullscreenChangeObserver* fullscreenChangeObserver = _videoFullscreenInterfaceMac->videoFullscreenChangeObserver()) … … 444 436 445 437 if (mode() == HTMLMediaElementEnums::VideoFullscreenModePictureInPicture) { 438 m_videoFullscreenModel->willEnterPictureInPicture(); 446 439 [m_webVideoFullscreenInterfaceObjC enterPIP]; 447 440 … … 450 443 #endif 451 444 445 // FIXME(rdar://problem/42250952): Move this call into a completion handler or delegate callback. 446 m_videoFullscreenModel->didEnterPictureInPicture(); 452 447 if (m_fullscreenChangeObserver) 453 448 m_fullscreenChangeObserver->didEnterFullscreen(); … … 462 457 [m_playbackSessionInterface->playBackControlsManager() setPictureInPictureActive:NO]; 463 458 #endif 464 465 if ([m_webVideoFullscreenInterfaceObjC didRequestExitingPIP])466 return;467 459 468 460 if (finalRect.isEmpty()) … … 479 471 [m_playbackSessionInterface->playBackControlsManager() setPictureInPictureActive:NO]; 480 472 #endif 481 482 if ([m_webVideoFullscreenInterfaceObjC didRequestExitingPIP])483 return;484 473 485 474 bool isExitingToStandardFullscreen = mode == HTMLMediaElementEnums::VideoFullscreenModeStandard; … … 518 507 } 519 508 509 void VideoFullscreenInterfaceMac::requestHideAndExitFullscreen() 510 { 511 if (!m_videoFullscreenModel) 512 return; 513 514 m_videoFullscreenModel->requestFullscreenMode(HTMLMediaElementEnums::VideoFullscreenModeNone); 515 m_videoFullscreenModel->willExitPictureInPicture(); 516 } 517 520 518 #if !LOG_DISABLED 521 519 static const char* boolString(bool val) -
trunk/Source/WebKit/ChangeLog
r233925 r233926 1 2018-07-18 Jer Noble <jer.noble@apple.com> 2 3 PiP from Element Fullscreen should match AVKit's behavior 4 https://bugs.webkit.org/show_bug.cgi?id=187623 5 6 Reviewed by Jon Lee. 7 8 * UIProcess/Cocoa/PlaybackSessionManagerProxy.h: 9 (WebKit::PlaybackSessionManagerProxy::controlsManagerContextId const): 10 * UIProcess/Cocoa/VideoFullscreenManagerProxy.h: 11 * UIProcess/Cocoa/VideoFullscreenManagerProxy.mm: 12 (WebKit::VideoFullscreenModelContext::willEnterPictureInPicture): 13 (WebKit::VideoFullscreenModelContext::didEnterPictureInPicture): 14 (WebKit::VideoFullscreenModelContext::failedToEnterPictureInPicture): 15 (WebKit::VideoFullscreenModelContext::willExitPictureInPicture): 16 (WebKit::VideoFullscreenModelContext::didExitPictureInPicture): 17 (WebKit::VideoFullscreenModelContext::failedToExitPictureInPicture): 18 (WebKit::VideoFullscreenManagerProxy::controlsManagerInterface): 19 * UIProcess/ios/fullscreen/WKFullScreenViewController.mm: 20 (WKFullScreenViewControllerVideoFullscreenModelClient::setParent): 21 (WKFullScreenViewControllerVideoFullscreenModelClient::setInterface): 22 (WKFullScreenViewControllerVideoFullscreenModelClient::interface const): 23 (-[WKFullScreenViewController initWithWebView:]): 24 (-[WKFullScreenViewController dealloc]): 25 (-[WKFullScreenViewController videoControlsManagerDidChange]): 26 (-[WKFullScreenViewController ensurePiPAnimator]): 27 (-[WKFullScreenViewController willEnterPictureInPicture]): 28 (-[WKFullScreenViewController didEnterPictureInPicture]): 29 (-[WKFullScreenViewController failedToEnterPictureInPicture]): 30 (-[WKFullScreenViewController loadView]): 31 (-[WKFullScreenViewController viewWillAppear:]): 32 * UIProcess/Cocoa/WebViewImpl.mm: 33 (WebKit::WebViewImpl::videoControlsManagerDidChange): 34 * UIProcess/mac/WKFullScreenWindowController.h: 35 * UIProcess/mac/WKFullScreenWindowController.mm: 36 (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::setParent): 37 (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::setInterface): 38 (WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient::interface const): 39 (-[WKFullScreenWindowController initWithWindow:webView:page:]): 40 (-[WKFullScreenWindowController dealloc]): 41 (-[WKFullScreenWindowController videoControlsManagerDidChange]): 42 (-[WKFullScreenWindowController willEnterPictureInPicture]): 43 1 44 2018-07-18 Jer Noble <jer.noble@apple.com> 2 45 -
trunk/Source/WebKit/UIProcess/Cocoa/PlaybackSessionManagerProxy.h
r231231 r233926 191 191 void removeClientForContext(uint64_t contextId); 192 192 193 uint64_t controlsManagerContextId() const { return m_controlsManagerContextId; } 194 193 195 // Messages from PlaybackSessionManager 194 196 void setUpPlaybackControlsManagerWithID(uint64_t contextId); -
trunk/Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.h
r230194 r233926 90 90 UIViewController *createVideoFullscreenViewController(AVPlayerViewController*) final; 91 91 #endif 92 void willEnterPictureInPicture() final; 93 void didEnterPictureInPicture() final; 94 void failedToEnterPictureInPicture() final; 95 void willExitPictureInPicture() final; 96 void didExitPictureInPicture() final; 92 97 93 98 // VideoFullscreenChangeObserver … … 127 132 bool isPlayingVideoInEnhancedFullscreen() const; 128 133 #endif 134 135 PlatformVideoFullscreenInterface* controlsManagerInterface(); 129 136 130 137 private: -
trunk/Source/WebKit/UIProcess/Cocoa/VideoFullscreenManagerProxy.mm
r233925 r233926 283 283 } 284 284 285 void VideoFullscreenModelContext::willEnterPictureInPicture() 286 { 287 for (auto& client : m_clients) 288 client->willEnterPictureInPicture(); 289 } 290 291 void VideoFullscreenModelContext::didEnterPictureInPicture() 292 { 293 for (auto& client : m_clients) 294 client->didEnterPictureInPicture(); 295 } 296 297 void VideoFullscreenModelContext::failedToEnterPictureInPicture() 298 { 299 for (auto& client : m_clients) 300 client->failedToEnterPictureInPicture(); 301 } 302 303 void VideoFullscreenModelContext::willExitPictureInPicture() 304 { 305 for (auto& client : m_clients) 306 client->willExitPictureInPicture(); 307 } 308 309 void VideoFullscreenModelContext::didExitPictureInPicture() 310 { 311 for (auto& client : m_clients) 312 client->didExitPictureInPicture(); 313 } 314 285 315 #pragma mark - VideoFullscreenManagerProxy 286 316 … … 358 388 } 359 389 #endif 390 391 PlatformVideoFullscreenInterface* VideoFullscreenManagerProxy::controlsManagerInterface() 392 { 393 if (auto contextId = m_playbackSessionManagerProxy->controlsManagerContextId()) 394 return &ensureInterface(contextId); 395 return nullptr; 396 } 360 397 361 398 void VideoFullscreenManagerProxy::applicationDidBecomeActive() -
trunk/Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm
r233713 r233926 3284 3284 updateTouchBar(); 3285 3285 #endif 3286 3287 #if ENABLE(FULLSCREEN_API) 3288 if (hasFullScreenWindowController()) 3289 [fullScreenWindowController() videoControlsManagerDidChange]; 3290 #endif 3286 3291 } 3287 3292 -
trunk/Source/WebKit/UIProcess/ios/fullscreen/WKFullScreenViewController.mm
r233756 r233926 32 32 #import "PlaybackSessionManagerProxy.h" 33 33 #import "UIKitSPI.h" 34 #import "VideoFullscreenManagerProxy.h" 34 35 #import "WKFullscreenStackView.h" 35 36 #import "WKWebViewInternal.h" … … 44 45 45 46 static const NSTimeInterval showHideAnimationDuration = 0.1; 47 static const NSTimeInterval pipHideAnimationDuration = 0.2; 46 48 static const NSTimeInterval autoHideDelay = 4.0; 47 49 static const double requiredScore = 0.1; 48 50 49 51 @class WKFullscreenStackView; 52 53 @interface WKFullScreenViewController (VideoFullscreenClientCallbacks) 54 - (void)willEnterPictureInPicture; 55 - (void)didEnterPictureInPicture; 56 - (void)failedToEnterPictureInPicture; 57 @end 50 58 51 59 class WKFullScreenViewControllerPlaybackSessionModelClient : PlaybackSessionModelClient { … … 80 88 }; 81 89 90 class WKFullScreenViewControllerVideoFullscreenModelClient : VideoFullscreenModelClient { 91 public: 92 void setParent(WKFullScreenViewController *parent) { m_parent = parent; } 93 94 void setInterface(VideoFullscreenInterfaceAVKit* interface) 95 { 96 if (m_interface == interface) 97 return; 98 99 if (m_interface && m_interface->videoFullscreenModel()) 100 m_interface->videoFullscreenModel()->removeClient(*this); 101 m_interface = interface; 102 if (m_interface && m_interface->videoFullscreenModel()) 103 m_interface->videoFullscreenModel()->addClient(*this); 104 } 105 106 VideoFullscreenInterfaceAVKit* interface() const { return m_interface.get(); } 107 108 void willEnterPictureInPicture() final 109 { 110 [m_parent willEnterPictureInPicture]; 111 } 112 113 void didEnterPictureInPicture() final 114 { 115 [m_parent didEnterPictureInPicture]; 116 } 117 118 void failedToEnterPictureInPicture() final 119 { 120 [m_parent failedToEnterPictureInPicture]; 121 } 122 123 private: 124 WKFullScreenViewController *m_parent { nullptr }; 125 RefPtr<VideoFullscreenInterfaceAVKit> m_interface; 126 }; 127 82 128 #pragma mark - _WKExtrinsicButton 83 129 … … 109 155 @implementation WKFullScreenViewController { 110 156 RetainPtr<UILongPressGestureRecognizer> _touchGestureRecognizer; 157 RetainPtr<UIView> _animatingView; 111 158 RetainPtr<WKFullscreenStackView> _stackView; 112 159 RetainPtr<_WKExtrinsicButton> _cancelButton; … … 117 164 WebKit::FullscreenTouchSecheuristic _secheuristic; 118 165 WKFullScreenViewControllerPlaybackSessionModelClient _playbackClient; 166 WKFullScreenViewControllerVideoFullscreenModelClient _videoFullscreenClient; 119 167 CGFloat _nonZeroStatusBarHeight; 120 168 } … … 142 190 143 191 _playbackClient.setParent(self); 192 _videoFullscreenClient.setParent(self); 144 193 145 194 return self; … … 152 201 153 202 _playbackClient.setInterface(nullptr); 203 _videoFullscreenClient.setParent(nullptr); 204 _videoFullscreenClient.setInterface(nullptr); 154 205 155 206 [_target release]; … … 206 257 { 207 258 WebPageProxy* page = [self._webView _page]; 208 PlaybackSessionManagerProxy* playbackSessionManager = page ? page->playbackSessionManager() : nullptr; 209 PlatformPlaybackSessionInterface* playbackSessionInterface = playbackSessionManager ? playbackSessionManager->controlsManagerInterface() : nullptr; 259 auto* videoFullscreenManager = page ? page->videoFullscreenManager() : nullptr; 260 auto* videoFullscreenInterface = videoFullscreenManager ? videoFullscreenManager->controlsManagerInterface() : nullptr; 261 auto* playbackSessionInterface = videoFullscreenInterface ? &videoFullscreenInterface->playbackSessionInterface() : nullptr; 262 210 263 _playbackClient.setInterface(playbackSessionInterface); 264 _videoFullscreenClient.setInterface(videoFullscreenInterface); 211 265 212 266 PlaybackSessionModel* playbackSessionModel = playbackSessionInterface ? playbackSessionInterface->playbackSessionModel() : nullptr; … … 265 319 } 266 320 321 - (void)willEnterPictureInPicture 322 { 323 auto* interface = _videoFullscreenClient.interface(); 324 if (!interface || !interface->pictureInPictureWasStartedWhenEnteringBackground()) 325 return; 326 327 [UIView animateWithDuration:pipHideAnimationDuration animations:^{ 328 _animatingView.get().alpha = 0; 329 }]; 330 } 331 332 - (void)didEnterPictureInPicture 333 { 334 [self _cancelAction:self]; 335 } 336 337 - (void)failedToEnterPictureInPicture 338 { 339 auto* interface = _videoFullscreenClient.interface(); 340 if (!interface || !interface->pictureInPictureWasStartedWhenEnteringBackground()) 341 return; 342 343 [UIView animateWithDuration:pipHideAnimationDuration animations:^{ 344 _animatingView.get().alpha = 1; 345 }]; 346 } 347 267 348 #pragma mark - UIViewController Overrides 268 349 … … 271 352 [self setView:adoptNS([[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)]).get()]; 272 353 self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 354 self.view.backgroundColor = [UIColor blackColor]; 355 356 _animatingView = adoptNS([[UIView alloc] initWithFrame:self.view.bounds]); 357 _animatingView.get().autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 358 [self.view addSubview:_animatingView.get()]; 273 359 274 360 _cancelButton = [_WKExtrinsicButton buttonWithType:UIButtonTypeSystem]; … … 299 385 [_stackView addArrangedSubview:_cancelButton.get() applyingMaterialStyle:AVBackgroundViewMaterialStyleSecondary tintEffectStyle:AVBackgroundViewTintEffectStyleSecondary]; 300 386 [_stackView addArrangedSubview:_pipButton.get() applyingMaterialStyle:AVBackgroundViewMaterialStylePrimary tintEffectStyle:AVBackgroundViewTintEffectStyleSecondary]; 301 [ [self view]addSubview:_stackView.get()];387 [_animatingView addSubview:_stackView.get()]; 302 388 303 389 UILayoutGuide *safeArea = self.view.safeAreaLayoutGuide; … … 329 415 self._webView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; 330 416 self._webView.frame = self.view.bounds; 331 [ self.view insertSubview:self._webView atIndex:0];417 [_animatingView insertSubview:self._webView atIndex:0]; 332 418 333 419 if (auto* manager = self._manager) -
trunk/Source/WebKit/UIProcess/mac/WKFullScreenWindowController.h
r229487 r233926 32 32 class LayerTreeContext; 33 33 class WebPageProxy; 34 class WKFullScreenWindowControllerVideoFullscreenModelClient; 34 35 } 35 36 … … 60 61 double _savedScale; 61 62 RefPtr<WebKit::VoidCallback> _repaintCallback; 63 std::unique_ptr<WebKit::WKFullScreenWindowControllerVideoFullscreenModelClient> _videoFullscreenClient; 62 64 float _savedTopContentInset; 63 65 } … … 80 82 - (void)beganExitFullScreenWithInitialFrame:(NSRect)initialFrame finalFrame:(NSRect)finalFrame; 81 83 84 - (void)videoControlsManagerDidChange; 85 - (void)didEnterPictureInPicture; 86 82 87 @end 83 88 -
trunk/Source/WebKit/UIProcess/mac/WKFullScreenWindowController.mm
r232520 r233926 31 31 32 32 #import "LayerTreeContext.h" 33 #import "VideoFullscreenManagerProxy.h" 33 34 #import "WKAPICast.h" 34 35 #import "WKViewInternal.h" … … 41 42 #import <WebCore/IntRect.h> 42 43 #import <WebCore/LocalizedStrings.h> 44 #import <WebCore/VideoFullscreenInterfaceMac.h> 45 #import <WebCore/VideoFullscreenModel.h> 43 46 #import <WebCore/WebCoreFullScreenPlaceholderView.h> 44 47 #import <WebCore/WebCoreFullScreenWindow.h> … … 46 49 #import <wtf/BlockObjCExceptions.h> 47 50 51 using namespace WebCore; 52 53 static const NSTimeInterval DefaultWatchdogTimerInterval = 1; 54 55 namespace WebKit { 56 57 class WKFullScreenWindowControllerVideoFullscreenModelClient : VideoFullscreenModelClient { 58 public: 59 void setParent(WKFullScreenWindowController *parent) { m_parent = parent; } 60 61 void setInterface(VideoFullscreenInterfaceMac* interface) 62 { 63 if (m_interface == interface) 64 return; 65 66 if (m_interface && m_interface->videoFullscreenModel()) 67 m_interface->videoFullscreenModel()->removeClient(*this); 68 m_interface = interface; 69 if (m_interface && m_interface->videoFullscreenModel()) 70 m_interface->videoFullscreenModel()->addClient(*this); 71 } 72 73 VideoFullscreenInterfaceMac* interface() const { return m_interface.get(); } 74 75 void didEnterPictureInPicture() final 76 { 77 [m_parent didEnterPictureInPicture]; 78 } 79 80 private: 81 WKFullScreenWindowController *m_parent { nullptr }; 82 RefPtr<VideoFullscreenInterfaceMac> m_interface; 83 }; 84 85 } 86 48 87 using namespace WebKit; 49 using namespace WebCore;50 51 static const NSTimeInterval DefaultWatchdogTimerInterval = 1;52 88 53 89 enum FullScreenState : NSInteger { … … 114 150 _webView = webView; 115 151 _page = &page; 116 152 153 _videoFullscreenClient = std::make_unique<WKFullScreenWindowControllerVideoFullscreenModelClient>(); 154 _videoFullscreenClient->setParent(self); 155 156 [self videoControlsManagerDidChange]; 157 117 158 return self; 118 159 } … … 132 173 ASSERT(!_repaintCallback); 133 174 } 175 176 _videoFullscreenClient->setParent(nil); 177 _videoFullscreenClient->setInterface(nullptr); 134 178 135 179 [super dealloc]; … … 507 551 } 508 552 553 - (void)videoControlsManagerDidChange 554 { 555 auto* videoFullscreenManager = _page ? _page->videoFullscreenManager() : nullptr; 556 auto* videoFullscreenInterface = videoFullscreenManager ? videoFullscreenManager->controlsManagerInterface() : nullptr; 557 558 _videoFullscreenClient->setInterface(videoFullscreenInterface); 559 } 560 561 - (void)didEnterPictureInPicture 562 { 563 [self requestExitFullScreen]; 564 } 565 509 566 #pragma mark - 510 567 #pragma mark Custom NSWindow Full Screen Animation -
trunk/Tools/ChangeLog
r233921 r233926 1 2018-07-18 Jer Noble <jer.noble@apple.com> 2 3 PiP from Element Fullscreen should match AVKit's behavior 4 https://bugs.webkit.org/show_bug.cgi?id=187623 5 <rdar://problem/41212379> 6 7 Reviewed by Jon Lee. 8 9 * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: 10 * TestWebKitAPI/Tests/WebKitCocoa/ExitFullscreenOnEnterPiP.html: Added. 11 * TestWebKitAPI/Tests/WebKitCocoa/ExitFullscreenOnEnterPiP.mm: Added. 12 (-[ExitFullscreenOnEnterPiPUIDelegate _webView:hasVideoInPictureInPictureDidChange:]): 13 (-[ExitFullscreenOnEnterPiPUIDelegate _webViewDidEnterFullscreen:]): 14 (-[ExitFullscreenOnEnterPiPUIDelegate _webViewDidExitFullscreen:]): 15 (TestWebKitAPI::TEST): 16 1 17 2018-07-18 Aakash Jain <aakash_jain@apple.com> 2 18 -
trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
r233915 r233926 721 721 CD78E11E1DB7EE2A0014A2DE /* FullscreenDelegate.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = CD78E11B1DB7EA360014A2DE /* FullscreenDelegate.html */; }; 722 722 CD9E292E1C90C33F000BB800 /* audio-only.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = CD9E292D1C90C1BA000BB800 /* audio-only.html */; }; 723 CDA29B2920FD2A9900F15CED /* ExitFullscreenOnEnterPiP.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDA29B2820FD2A9900F15CED /* ExitFullscreenOnEnterPiP.mm */; }; 724 CDA29B2B20FD358400F15CED /* ExitFullscreenOnEnterPiP.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = CDA29B2A20FD344E00F15CED /* ExitFullscreenOnEnterPiP.html */; }; 723 725 CDA315981ED53651009F60D3 /* MediaPlaybackSleepAssertion.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDA315961ED53651009F60D3 /* MediaPlaybackSleepAssertion.mm */; }; 724 726 CDA3159A1ED548F1009F60D3 /* MediaPlaybackSleepAssertion.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = CDA315991ED540A5009F60D3 /* MediaPlaybackSleepAssertion.html */; }; … … 982 984 07492B3C1DF8B86600633DE1 /* enumerateMediaDevices.html in Copy Resources */, 983 985 C5E1AFFE16B221F1006CC1F2 /* execCopy.html in Copy Resources */, 986 CDA29B2B20FD358400F15CED /* ExitFullscreenOnEnterPiP.html in Copy Resources */, 984 987 F41AB9A31EF4696B0083FA08 /* file-uploading.html in Copy Resources */, 985 988 BC2D006412AA04CE00E732A3 /* file-with-anchor.html in Copy Resources */, … … 1909 1912 CD9E292B1C90A71F000BB800 /* RequiresUserActionForPlayback.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RequiresUserActionForPlayback.mm; sourceTree = "<group>"; }; 1910 1913 CD9E292D1C90C1BA000BB800 /* audio-only.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "audio-only.html"; sourceTree = "<group>"; }; 1914 CDA29B2820FD2A9900F15CED /* ExitFullscreenOnEnterPiP.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ExitFullscreenOnEnterPiP.mm; sourceTree = "<group>"; }; 1915 CDA29B2A20FD344E00F15CED /* ExitFullscreenOnEnterPiP.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = ExitFullscreenOnEnterPiP.html; sourceTree = "<group>"; }; 1911 1916 CDA315961ED53651009F60D3 /* MediaPlaybackSleepAssertion.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MediaPlaybackSleepAssertion.mm; sourceTree = "<group>"; }; 1912 1917 CDA315991ED540A5009F60D3 /* MediaPlaybackSleepAssertion.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = MediaPlaybackSleepAssertion.html; sourceTree = "<group>"; }; … … 2254 2259 A15502281E05020B00A24C57 /* DuplicateCompletionHandlerCalls.mm */, 2255 2260 F44D06461F395C4D001A0E29 /* EditorStateTests.mm */, 2261 CDA29B2820FD2A9900F15CED /* ExitFullscreenOnEnterPiP.mm */, 2256 2262 2D8104CB1BEC13E70020DA46 /* FindInPage.mm */, 2257 2263 2D1FE0AF1AD465C1006CD9E6 /* FixedLayoutSize.mm */, … … 2569 2575 F44D06441F395C0D001A0E29 /* editor-state-test-harness.html */, 2570 2576 51C8E1A81F27F47300BF731B /* EmptyGrandfatheredResourceLoadStatistics.plist */, 2577 CDA29B2A20FD344E00F15CED /* ExitFullscreenOnEnterPiP.html */, 2571 2578 F4C2AB211DD6D94100E06D5B /* enormous-video-with-sound.html */, 2572 2579 F407FE381F1D0DE60017CF25 /* enormous.svg */, … … 3808 3815 7C83E0C11D0A652F00FEBCF3 /* ProvisionalURLNotChange.mm in Sources */, 3809 3816 7CCE7EC81A411A7E00447C4C /* PublicSuffix.mm in Sources */, 3817 CDA29B2920FD2A9900F15CED /* ExitFullscreenOnEnterPiP.mm in Sources */, 3810 3818 7C83E0C21D0A653500FEBCF3 /* QuickLook.mm in Sources */, 3811 3819 7CCE7F0D1A411AE600447C4C /* ReloadPageAfterCrash.cpp in Sources */,
Note: See TracChangeset
for help on using the changeset viewer.