Changeset 171288 in webkit
- Timestamp:
- Jul 20, 2014 8:08:25 PM (10 years ago)
- Location:
- trunk/Source
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r171287 r171288 1 2014-07-20 Jeremy Jones <jeremyj@apple.com> 2 3 Disable ff/rw based on canPlayFastForward and canPlayFastRewind. 4 https://bugs.webkit.org/show_bug.cgi?id=134894 5 6 Reviewed by Darin Adler. 7 8 * WebCore.exp.in: add symbol for canPlayFastReverse 9 * html/HTMLMediaElement.cpp: Add two new accessors 10 (WebCore::HTMLMediaElement::nextScanRate): possibly limit scanRate 11 (WebCore::HTMLMediaElement::canPlayFastForward): added 12 (WebCore::HTMLMediaElement::canPlayFastReverse): added 13 * html/HTMLMediaElement.h: declare two new methods 14 * platform/graphics/MediaPlayer.cpp: Plumb through two new accessors 15 (WebCore::MediaPlayer::maxFastForwardRate): added 16 (WebCore::MediaPlayer::minFastReverseRate): added 17 * platform/graphics/MediaPlayer.h: Declare new methods 18 * platform/graphics/MediaPlayerPrivate.h: Added two new methods. 19 (WebCore::MediaPlayerPrivateInterface::maxFastForwardRate): added 20 (WebCore::MediaPlayerPrivateInterface::minFastReverseRate): added 21 * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h: member to cache ff/rw enabled state 22 * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm: 23 (WebCore::MediaPlayerPrivateAVFoundationObjC::createAVPlayer): observe on item canPlayFastForward canPlayFastReverse 24 (WebCore::MediaPlayerPrivateAVFoundationObjC::canPlayFastForwardDidChange): added 25 (WebCore::MediaPlayerPrivateAVFoundationObjC::canPlayFastReverseDidChange): added 26 (WebCore::itemKVOProperties): observe canPlayFastForward canPlayFastRewind 27 (-[WebCoreAVFMovieObserver observeValueForKeyPath:ofObject:change:context:]): ditto 28 * platform/ios/WebVideoFullscreenInterface.h: add new method 29 * platform/ios/WebVideoFullscreenInterfaceAVKit.h: ditto 30 * platform/ios/WebVideoFullscreenInterfaceAVKit.mm: ditto 31 (WebVideoFullscreenInterfaceAVKit::setCanPlayFastReverse): Set value on WebAVPlayerController. 32 (-[WebAVPlayerController canScanBackward]): Deleted. 33 (+[WebAVPlayerController keyPathsForValuesAffectingCanScanBackward]): Deleted. 34 * platform/ios/WebVideoFullscreenModelMediaElement.mm: 35 (WebVideoFullscreenModelMediaElement::updateForEventName): update canPlayFastReverse. 36 1 37 2014-07-18 Gavin Barraclough <baraclough@apple.com> 2 38 -
trunk/Source/WebCore/WebCore.exp.in
r171252 r171288 3446 3446 __ZN7WebCore32WebVideoFullscreenInterfaceAVKit18setVideoDimensionsEbff 3447 3447 __ZN7WebCore32WebVideoFullscreenInterfaceAVKit19setExternalPlaybackEbNS_27WebVideoFullscreenInterface26ExternalPlaybackTargetTypeEN3WTF6StringE 3448 __ZN7WebCore32WebVideoFullscreenInterfaceAVKit21setCanPlayFastReverseEb 3448 3449 __ZN7WebCore32WebVideoFullscreenInterfaceAVKit26setWebVideoFullscreenModelEPNS_23WebVideoFullscreenModelE 3449 3450 __ZN7WebCore32WebVideoFullscreenInterfaceAVKit28requestHideAndExitFullscreenEv -
trunk/Source/WebCore/html/HTMLMediaElement.cpp
r171287 r171288 3104 3104 if (m_scanDirection == Backward) 3105 3105 rate *= -1; 3106 #if PLATFORM(IOS) 3107 rate = std::min(std::max(rate, minFastReverseRate()), maxFastForwardRate()); 3108 #endif 3106 3109 return rate; 3107 3110 } … … 4857 4860 #endif 4858 4861 4862 double HTMLMediaElement::minFastReverseRate() const 4863 { 4864 return m_player ? m_player->minFastReverseRate() : 0; 4865 } 4866 4867 double HTMLMediaElement::maxFastForwardRate() const 4868 { 4869 return m_player ? m_player->maxFastForwardRate() : 0; 4870 } 4871 4859 4872 bool HTMLMediaElement::isFullscreen() const 4860 4873 { -
trunk/Source/WebCore/html/HTMLMediaElement.h
r171081 r171288 189 189 virtual void setShouldBufferData(bool) override; 190 190 void fastSeek(double); 191 double minFastReverseRate() const; 192 double maxFastForwardRate() const; 191 193 192 194 // captions -
trunk/Source/WebCore/platform/graphics/MediaPlayer.cpp
r169596 r171288 894 894 #endif 895 895 896 double MediaPlayer::maxFastForwardRate() const 897 { 898 return m_private->maxFastForwardRate(); 899 } 900 901 double MediaPlayer::minFastReverseRate() const 902 { 903 return m_private->minFastReverseRate(); 904 } 905 896 906 #if USE(NATIVE_FULLSCREEN_VIDEO) 897 907 bool MediaPlayer::canEnterFullscreen() const -
trunk/Source/WebCore/platform/graphics/MediaPlayer.h
r169596 r171288 481 481 #endif 482 482 483 double minFastReverseRate() const; 484 double maxFastForwardRate() const; 485 483 486 #if USE(NATIVE_FULLSCREEN_VIDEO) 484 487 bool canEnterFullscreen() const; -
trunk/Source/WebCore/platform/graphics/MediaPlayerPrivate.h
r169568 r171288 117 117 virtual void setClosedCaptionsVisible(bool) { } 118 118 119 virtual double maxFastForwardRate() const { return std::numeric_limits<double>::infinity(); } 120 virtual double minFastReverseRate() const { return -std::numeric_limits<double>::infinity(); } 121 119 122 virtual MediaPlayer::NetworkState networkState() const = 0; 120 123 virtual MediaPlayer::ReadyState readyState() const = 0; -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h
r171286 r171288 109 109 void firstFrameAvailableDidChange(bool); 110 110 void trackEnabledDidChange(bool); 111 void canPlayFastReverseDidChange(bool); 112 void canPlayFastForwardDidChange(bool); 111 113 112 114 virtual void setShouldBufferData(bool); … … 265 267 void updateDisableExternalPlayback(); 266 268 #endif 269 270 virtual double maxFastForwardRate() const override { return m_cachedCanPlayFastForward ? std::numeric_limits<double>::infinity() : 2.0; } 271 virtual double minFastReverseRate() const override { return m_cachedCanPlayFastReverse ? -std::numeric_limits<double>::infinity() : 0.0; } 267 272 268 273 WeakPtrFactory<MediaPlayerPrivateAVFoundationObjC> m_weakPtrFactory; … … 337 342 bool m_cachedIsReadyForDisplay; 338 343 bool m_haveBeenAskedToCreateLayer; 344 bool m_cachedCanPlayFastForward; 345 bool m_cachedCanPlayFastReverse; 339 346 #if ENABLE(IOS_AIRPLAY) 340 347 mutable bool m_allowsWirelessVideoPlayback; -
trunk/Source/WebCore/platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm
r171286 r171288 2573 2573 #endif 2574 2574 2575 void MediaPlayerPrivateAVFoundationObjC::canPlayFastForwardDidChange(bool newValue) 2576 { 2577 m_cachedCanPlayFastForward = newValue; 2578 } 2579 2580 void MediaPlayerPrivateAVFoundationObjC::canPlayFastReverseDidChange(bool newValue) 2581 { 2582 m_cachedCanPlayFastReverse = newValue; 2583 } 2584 2575 2585 NSArray* assetMetadataKeyNames() 2576 2586 { … … 2606 2616 @"hasEnabledAudio", 2607 2617 @"timedMetadata", 2618 @"canPlayFastForward", 2619 @"canPlayFastReverse", 2608 2620 nil]; 2609 2621 } … … 2715 2727 now = std::max(narrowPrecisionToFloat(CMTimeGetSeconds(itemTime)), 0.0f); 2716 2728 function = WTF::bind(&MediaPlayerPrivateAVFoundationObjC::metadataDidArrive, m_callback, RetainPtr<NSArray>(newValue), now); 2717 } 2729 } else if ([keyPath isEqualToString:@"canPlayFastReverse"]) 2730 function = WTF::bind(&MediaPlayerPrivateAVFoundationObjC::canPlayFastReverseDidChange, m_callback, [newValue boolValue]); 2731 else if ([keyPath isEqualToString:@"canPlayFastForward"]) 2732 function = WTF::bind(&MediaPlayerPrivateAVFoundationObjC::canPlayFastForwardDidChange, m_callback, [newValue boolValue]); 2718 2733 } 2719 2734 -
trunk/Source/WebCore/platform/ios/WebVideoFullscreenInterface.h
r169545 r171288 50 50 virtual void setVideoDimensions(bool hasVideo, float width, float height) = 0; 51 51 virtual void setSeekableRanges(const TimeRanges&) = 0; 52 virtual void setCanPlayFastReverse(bool) = 0; 52 53 virtual void setAudioMediaSelectionOptions(const Vector<String>& options, uint64_t selectedIndex) = 0; 53 54 virtual void setLegibleMediaSelectionOptions(const Vector<String>& options, uint64_t selectedIndex) = 0; -
trunk/Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.h
r170083 r171288 84 84 virtual void setVideoDimensions(bool hasVideo, float width, float height) override; 85 85 virtual void setSeekableRanges(const TimeRanges&) override; 86 virtual void setCanPlayFastReverse(bool) override; 86 87 virtual void setAudioMediaSelectionOptions(const Vector<String>& options, uint64_t selectedIndex) override; 87 88 virtual void setLegibleMediaSelectionOptions(const Vector<String>& options, uint64_t selectedIndex) override; -
trunk/Source/WebCore/platform/ios/WebVideoFullscreenInterfaceAVKit.mm
r171286 r171288 92 92 93 93 @property (readonly) BOOL canScanForward; 94 @property (readonly)BOOL canScanBackward;94 @property BOOL canScanBackward; 95 95 @property (readonly) BOOL canSeekToBeginning; 96 96 @property (readonly) BOOL canSeekToEnd; … … 302 302 } 303 303 304 - (BOOL)canScanBackward305 {306 return [self canPlay];307 }308 309 + (NSSet *)keyPathsForValuesAffectingCanScanBackward310 {311 return [NSSet setWithObject:@"canPlay"];312 }313 314 304 - (void)beginScanningBackward:(id)sender 315 305 { … … 677 667 protect.clear(); 678 668 }); 669 } 670 671 void WebVideoFullscreenInterfaceAVKit::setCanPlayFastReverse(bool canPlayFastReverse) 672 { 673 playerController().canScanBackward = canPlayFastReverse; 679 674 } 680 675 -
trunk/Source/WebCore/platform/ios/WebVideoFullscreenModelMediaElement.mm
r169545 r171288 107 107 108 108 if (all 109 || eventName == eventNames().durationchangeEvent) 109 || eventName == eventNames().durationchangeEvent) { 110 110 m_videoFullscreenInterface->setDuration(m_mediaElement->duration()); 111 // These is no standard event for minFastReverseRateChange; duration change is a reasonable proxy for it. 112 // It happens every time a new item becomes ready to play. 113 m_videoFullscreenInterface->setCanPlayFastReverse(m_mediaElement->minFastReverseRate() < 0.0); 114 } 111 115 112 116 if (all -
trunk/Source/WebKit2/ChangeLog
r171286 r171288 1 2014-07-20 Jeremy Jones <jeremyj@apple.com> 2 3 Disable ff/rw based on canPlayFastForward and canPlayFastRewind. 4 https://bugs.webkit.org/show_bug.cgi?id=134894 5 6 Reviewed by Darin Adler. 7 8 Add setCanPlayFastReverse 9 10 * UIProcess/ios/WebVideoFullscreenManagerProxy.messages.in: ditto 11 * WebProcess/ios/WebVideoFullscreenManager.h: ditto 12 * WebProcess/ios/WebVideoFullscreenManager.mm: ditto 13 (WebKit::WebVideoFullscreenManager::setCanPlayFastReverse): ditto 14 1 15 2014-07-20 Jeremy Jones <jeremyj@apple.com> 2 16 -
trunk/Source/WebKit2/UIProcess/ios/WebVideoFullscreenManagerProxy.messages.in
r170083 r171288 26 26 SetVideoDimensions(bool hasVideo, unsigned width, unsigned height) 27 27 SetSeekableRangesVector(Vector<std::pair<double, double>> ranges); 28 SetCanPlayFastReverse(bool value); 28 29 SetAudioMediaSelectionOptions(Vector<String> options, uint64_t selectedIndex); 29 30 SetLegibleMediaSelectionOptions(Vector<String> options, uint64_t selectedIndex); -
trunk/Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.h
r170083 r171288 72 72 virtual void setVideoDimensions(bool hasVideo, float width, float height) override; 73 73 virtual void setSeekableRanges(const WebCore::TimeRanges&) override; 74 virtual void setCanPlayFastReverse(bool value) override; 75 74 76 virtual void setAudioMediaSelectionOptions(const Vector<String>& options, uint64_t selectedIndex) override; 75 77 virtual void setLegibleMediaSelectionOptions(const Vector<String>& options, uint64_t selectedIndex) override; -
trunk/Source/WebKit2/WebProcess/ios/WebVideoFullscreenManager.mm
r171286 r171288 147 147 } 148 148 149 void WebVideoFullscreenManager::setCanPlayFastReverse(bool value) 150 { 151 m_page->send(Messages::WebVideoFullscreenManagerProxy::SetCanPlayFastReverse(value), m_page->pageID()); 152 } 153 149 154 void WebVideoFullscreenManager::setAudioMediaSelectionOptions(const Vector<String>& options, uint64_t selectedIndex) 150 155 {
Note: See TracChangeset
for help on using the changeset viewer.