Title: [206368] branches/safari-602-branch/Source

Diff

Modified: branches/safari-602-branch/Source/WebCore/ChangeLog (206367 => 206368)


--- branches/safari-602-branch/Source/WebCore/ChangeLog	2016-09-26 05:35:55 UTC (rev 206367)
+++ branches/safari-602-branch/Source/WebCore/ChangeLog	2016-09-26 07:26:59 UTC (rev 206368)
@@ -1,3 +1,50 @@
+2016-09-26  Babak Shafiei  <[email protected]>
+
+        Merge r206350. rdar://problem/28115680
+
+    2016-09-23  Wenson Hsieh  <[email protected]>
+
+            Media controls playhead does not animate smoothly while playing
+            https://bugs.webkit.org/show_bug.cgi?id=162399
+            <rdar://problem/28115680>
+
+            Reviewed by Beth Dakin.
+
+            The media controls playhead currently does not animate smoothly during playback because we don't specify a
+            playback rate when updating the WebPlaybackControlsManager's timing value. However, simply setting this timing
+            value to the current playback rate (as known to the UI process) results in the UI process receiving multiple
+            updates from the web process where the current time is equal (or even less than) the time at which media began
+            to play, which results in the playhead seeking backwards to the start time multiple times when playing or
+            resuming media.
+
+            To address this, in WebCore, we inform the playback session model of the media time when playback begins (i.e.
+            a `playing` or `play` event is fired). This message precedes both the "rate changed" and "current time changed"
+            messages.
+
+            Unit tests to be added in a future patch.
+
+            * html/HTMLMediaElement.cpp:
+            (WebCore::HTMLMediaElement::notifyAboutPlaying):
+            (WebCore::HTMLMediaElement::setReadyState):
+            (WebCore::HTMLMediaElement::playInternal):
+            * html/HTMLMediaElement.h:
+            (WebCore::HTMLMediaElement::playbackStartedTime):
+            * platform/cocoa/WebPlaybackSessionModel.h:
+            (WebCore::WebPlaybackSessionModelClient::playbackStartedTimeChanged):
+            (WebCore::WebPlaybackSessionModelClient::bufferedTimeChanged): Deleted.
+            * platform/cocoa/WebPlaybackSessionModelMediaElement.h:
+            * platform/cocoa/WebPlaybackSessionModelMediaElement.mm:
+            (WebPlaybackSessionModelMediaElement::updateForEventName):
+            (WebPlaybackSessionModelMediaElement::playbackStartedTime):
+            * platform/ios/WebVideoFullscreenControllerAVKit.mm:
+            * platform/mac/WebPlaybackSessionInterfaceMac.h:
+            * platform/mac/WebPlaybackSessionInterfaceMac.mm:
+            (WebCore::WebPlaybackSessionInterfaceMac::currentTimeChanged):
+            (WebCore::WebPlaybackSessionInterfaceMac::rateChanged):
+            (WebCore::WebPlaybackSessionInterfaceMac::beginScrubbing):
+            (WebCore::WebPlaybackSessionInterfaceMac::endScrubbing):
+            (WebCore::WebPlaybackSessionInterfaceMac::updatePlaybackControlsManagerTiming):
+
 2016-09-23  Babak Shafiei  <[email protected]>
 
         Merge r206322. rdar://problem/28435352

Modified: branches/safari-602-branch/Source/WebCore/html/HTMLMediaElement.cpp (206367 => 206368)


--- branches/safari-602-branch/Source/WebCore/html/HTMLMediaElement.cpp	2016-09-26 05:35:55 UTC (rev 206367)
+++ branches/safari-602-branch/Source/WebCore/html/HTMLMediaElement.cpp	2016-09-26 07:26:59 UTC (rev 206368)
@@ -1028,6 +1028,7 @@
 
 void HTMLMediaElement::notifyAboutPlaying()
 {
+    m_playbackStartedTime = currentMediaTime().toDouble();
     dispatchEvent(Event::create(eventNames().playingEvent, false, true));
     resolvePendingPlayPromises();
 
@@ -2410,6 +2411,7 @@
         if (canTransitionFromAutoplayToPlay()) {
             m_paused = false;
             invalidateCachedTime();
+            m_playbackStartedTime = currentMediaTime().toDouble();
             scheduleEvent(eventNames().playEvent);
             scheduleNotifyAboutPlaying();
         }
@@ -3199,6 +3201,7 @@
     if (m_paused) {
         m_paused = false;
         invalidateCachedTime();
+        m_playbackStartedTime = currentMediaTime().toDouble();
         scheduleEvent(eventNames().playEvent);
 
         if (m_readyState <= HAVE_CURRENT_DATA)

Modified: branches/safari-602-branch/Source/WebCore/html/HTMLMediaElement.h (206367 => 206368)


--- branches/safari-602-branch/Source/WebCore/html/HTMLMediaElement.h	2016-09-26 05:35:55 UTC (rev 206367)
+++ branches/safari-602-branch/Source/WebCore/html/HTMLMediaElement.h	2016-09-26 07:26:59 UTC (rev 206368)
@@ -477,6 +477,8 @@
     bool hasEverHadAudio() const { return m_hasEverHadAudio; }
     bool hasEverHadVideo() const { return m_hasEverHadVideo; }
 
+    double playbackStartedTime() const { return m_playbackStartedTime; }
+
 protected:
     HTMLMediaElement(const QualifiedName&, Document&, bool createdByParser);
     virtual ~HTMLMediaElement();
@@ -858,6 +860,7 @@
     MediaTime m_lastSeekTime;
     
     double m_previousProgressTime;
+    double m_playbackStartedTime { 0 };
 
     // The last time a timeupdate event was sent (based on monotonic clock).
     double m_clockTimeAtLastUpdateEvent;

Modified: branches/safari-602-branch/Source/WebCore/platform/cocoa/WebPlaybackSessionModel.h (206367 => 206368)


--- branches/safari-602-branch/Source/WebCore/platform/cocoa/WebPlaybackSessionModel.h	2016-09-26 05:35:55 UTC (rev 206367)
+++ branches/safari-602-branch/Source/WebCore/platform/cocoa/WebPlaybackSessionModel.h	2016-09-26 07:26:59 UTC (rev 206368)
@@ -59,10 +59,12 @@
 
     enum ExternalPlaybackTargetType { TargetTypeNone, TargetTypeAirPlay, TargetTypeTVOut };
 
+    virtual double playbackStartedTime() const = 0;
     virtual double duration() const = 0;
     virtual double currentTime() const = 0;
     virtual double bufferedTime() const = 0;
     virtual bool isPlaying() const = 0;
+    virtual bool isScrubbing() const = 0;
     virtual float playbackRate() const = 0;
     virtual Ref<TimeRanges> seekableRanges() const = 0;
     virtual bool canPlayFastReverse() const = 0;
@@ -82,6 +84,7 @@
     virtual void durationChanged(double) { }
     virtual void currentTimeChanged(double /* currentTime */, double /* anchorTime */) { }
     virtual void bufferedTimeChanged(double) { }
+    virtual void playbackStartedTimeChanged(double /* playbackStartedTime */) { }
     virtual void rateChanged(bool /* isPlaying */, float /* playbackRate */) { }
     virtual void seekableRangesChanged(const TimeRanges&) { }
     virtual void canPlayFastReverseChanged(bool) { }

Modified: branches/safari-602-branch/Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.h (206367 => 206368)


--- branches/safari-602-branch/Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.h	2016-09-26 05:35:55 UTC (rev 206367)
+++ branches/safari-602-branch/Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.h	2016-09-26 07:26:59 UTC (rev 206368)
@@ -74,6 +74,7 @@
     double currentTime() const final;
     double bufferedTime() const final;
     bool isPlaying() const final;
+    bool isScrubbing() const final { return false; }
     float playbackRate() const final;
     Ref<TimeRanges> seekableRanges() const final;
     bool canPlayFastReverse() const final;
@@ -99,6 +100,7 @@
     Vector<RefPtr<TextTrack>> m_legibleTracksForMenu;
     Vector<RefPtr<AudioTrack>> m_audioTracksForMenu;
     
+    double playbackStartedTime() const;
     void updateLegibleOptions();
 };
     

Modified: branches/safari-602-branch/Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm (206367 => 206368)


--- branches/safari-602-branch/Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm	2016-09-26 05:35:55 UTC (rev 206367)
+++ branches/safari-602-branch/Source/WebCore/platform/cocoa/WebPlaybackSessionModelMediaElement.mm	2016-09-26 07:26:59 UTC (rev 206368)
@@ -109,6 +109,13 @@
     }
 
     if (all
+        || eventName == eventNames().playEvent
+        || eventName == eventNames().playingEvent) {
+        for (auto client : m_clients)
+            client->playbackStartedTimeChanged(playbackStartedTime());
+    }
+
+    if (all
         || eventName == eventNames().pauseEvent
         || eventName == eventNames().playEvent
         || eventName == eventNames().ratechangeEvent) {
@@ -290,6 +297,14 @@
     }
 }
 
+double WebPlaybackSessionModelMediaElement::playbackStartedTime() const
+{
+    if (!m_mediaElement)
+        return 0;
+
+    return m_mediaElement->playbackStartedTime();
+}
+
 const Vector<AtomicString>& WebPlaybackSessionModelMediaElement::observedEventNames()
 {
     // FIXME(157452): Remove the right-hand constructor notation once NeverDestroyed supports initializer_lists.

Modified: branches/safari-602-branch/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm (206367 => 206368)


--- branches/safari-602-branch/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm	2016-09-26 05:35:55 UTC (rev 206367)
+++ branches/safari-602-branch/Source/WebCore/platform/ios/WebVideoFullscreenControllerAVKit.mm	2016-09-26 07:26:59 UTC (rev 206368)
@@ -147,9 +147,11 @@
     void selectAudioMediaOption(uint64_t) override;
     void selectLegibleMediaOption(uint64_t) override;
     double duration() const override;
+    double playbackStartedTime() const override { return 0; }
     double currentTime() const override;
     double bufferedTime() const override;
     bool isPlaying() const override;
+    bool isScrubbing() const override { return false; }
     float playbackRate() const override;
     Ref<TimeRanges> seekableRanges() const override;
     bool canPlayFastReverse() const override;

Modified: branches/safari-602-branch/Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.h (206367 => 206368)


--- branches/safari-602-branch/Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.h	2016-09-26 05:35:55 UTC (rev 206367)
+++ branches/safari-602-branch/Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.h	2016-09-26 07:26:59 UTC (rev 206368)
@@ -63,6 +63,8 @@
     WEBCORE_EXPORT void invalidate();
     WEBCORE_EXPORT void ensureControlsManager();
     WEBCORE_EXPORT void setPlayBackControlsManager(WebPlaybackControlsManager *);
+    WEBCORE_EXPORT void beginScrubbing();
+    WEBCORE_EXPORT void endScrubbing();
     WEBCORE_EXPORT WebPlaybackControlsManager *playBackControlsManager();
 
 private:
@@ -69,6 +71,8 @@
     WebPlaybackSessionInterfaceMac(WebPlaybackSessionModel&);
     WebPlaybackSessionModel* m_playbackSessionModel { nullptr };
     WebPlaybackControlsManager *m_playbackControlsManager  { nullptr };
+
+    void updatePlaybackControlsManagerTiming(double currentTime, double anchorTime, double playbackRate, bool isPlaying);
 };
 
 }

Modified: branches/safari-602-branch/Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.mm (206367 => 206368)


--- branches/safari-602-branch/Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.mm	2016-09-26 05:35:55 UTC (rev 206367)
+++ branches/safari-602-branch/Source/WebCore/platform/mac/WebPlaybackSessionInterfaceMac.mm	2016-09-26 07:26:59 UTC (rev 206368)
@@ -76,12 +76,7 @@
 void WebPlaybackSessionInterfaceMac::currentTimeChanged(double currentTime, double anchorTime)
 {
     WebPlaybackControlsManager* controlsManager = playBackControlsManager();
-
-    NSTimeInterval anchorTimeStamp = ![controlsManager rate] ? NAN : anchorTime;
-    AVValueTiming *timing = [getAVValueTimingClass() valueTimingWithAnchorValue:currentTime
-        anchorTimeStamp:anchorTimeStamp rate:0];
-
-    [controlsManager setTiming:timing];
+    updatePlaybackControlsManagerTiming(currentTime, anchorTime, controlsManager.rate, controlsManager.playing);
 }
 
 void WebPlaybackSessionInterfaceMac::rateChanged(bool isPlaying, float playbackRate)
@@ -89,8 +84,20 @@
     WebPlaybackControlsManager* controlsManager = playBackControlsManager();
     [controlsManager setRate:isPlaying ? playbackRate : 0.];
     [controlsManager setPlaying:isPlaying];
+    updatePlaybackControlsManagerTiming(m_playbackSessionModel ? m_playbackSessionModel->currentTime() : 0, [[NSProcessInfo processInfo] systemUptime], playbackRate, isPlaying);
 }
 
+void WebPlaybackSessionInterfaceMac::beginScrubbing()
+{
+    updatePlaybackControlsManagerTiming(m_playbackSessionModel ? m_playbackSessionModel->currentTime() : 0, [[NSProcessInfo processInfo] systemUptime], 0, false);
+    webPlaybackSessionModel()->beginScrubbing();
+}
+
+void WebPlaybackSessionInterfaceMac::endScrubbing()
+{
+    webPlaybackSessionModel()->endScrubbing();
+}
+
 static RetainPtr<NSMutableArray> timeRangesToArray(const TimeRanges& timeRanges)
 {
     RetainPtr<NSMutableArray> rangeArray = adoptNS([[NSMutableArray alloc] init]);
@@ -163,6 +170,27 @@
     [manager setLegibleMediaSelectionOptions:m_playbackSessionModel->legibleMediaSelectionOptions() withSelectedIndex:static_cast<NSUInteger>(m_playbackSessionModel->legibleMediaSelectedIndex())];
 }
 
+void WebPlaybackSessionInterfaceMac::updatePlaybackControlsManagerTiming(double currentTime, double anchorTime, double playbackRate, bool isPlaying)
+{
+    WebPlaybackControlsManager *manager = playBackControlsManager();
+    if (!manager)
+        return;
+
+    WebPlaybackSessionModel *model = webPlaybackSessionModel();
+    if (!model)
+        return;
+
+    double effectiveAnchorTime = playbackRate ? anchorTime : NAN;
+    double effectivePlaybackRate = playbackRate;
+    if (!isPlaying
+        || model->isScrubbing()
+        || (manager.rate > 0 && model->playbackStartedTime() >= currentTime)
+        || (manager.rate < 0 && model->playbackStartedTime() <= currentTime))
+        effectivePlaybackRate = 0;
+
+    manager.timing = [getAVValueTimingClass() valueTimingWithAnchorValue:currentTime anchorTimeStamp:effectiveAnchorTime rate:effectivePlaybackRate];
 }
 
+}
+
 #endif // PLATFORM(MAC) && ENABLE(VIDEO_PRESENTATION_MODE)

Modified: branches/safari-602-branch/Source/WebKit2/ChangeLog (206367 => 206368)


--- branches/safari-602-branch/Source/WebKit2/ChangeLog	2016-09-26 05:35:55 UTC (rev 206367)
+++ branches/safari-602-branch/Source/WebKit2/ChangeLog	2016-09-26 07:26:59 UTC (rev 206368)
@@ -1,3 +1,38 @@
+2016-09-26  Babak Shafiei  <[email protected]>
+
+        Merge r206350. rdar://problem/28115680
+
+    2016-09-23  Wenson Hsieh  <[email protected]>
+
+            Media controls playhead does not animate smoothly while playing
+            https://bugs.webkit.org/show_bug.cgi?id=162399
+            <rdar://problem/28115680>
+
+            Reviewed by Beth Dakin.
+
+            See WebCore ChangeLog for more details.
+
+            In the UI process, we update the WebPlaybackSessionManager's timing value when the rate or current time changes.
+            Each AVValueTiming is generated from the current time, system anchor time, and playback rate. The behavior of
+            the first two properties is unaffected. However, the rate used to update the timing value is the effective
+            playback rate, which is equal to the playback rate unless we are (1) not playing, (2) interacting with the media
+            controls in such a way that the media is essentially not playing, or (3) the current time precedes the playback
+            start time, accounting for playback direction. In these cases, our effective playback rate is 0, which means
+            that we do not animate the playhead.
+
+            * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h:
+            * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in:
+            * UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm:
+            (WebKit::WebPlaybackSessionModelContext::beginScrubbing):
+            (WebKit::WebPlaybackSessionModelContext::endScrubbing):
+            (WebKit::WebPlaybackSessionModelContext::setPlaybackStartedTime):
+            (WebKit::WebPlaybackSessionModelContext::setCurrentTime):
+            (WebKit::WebPlaybackSessionManagerProxy::setPlaybackStartedTime):
+            * WebProcess/cocoa/WebPlaybackSessionManager.h:
+            * WebProcess/cocoa/WebPlaybackSessionManager.mm:
+            (WebKit::WebPlaybackSessionInterfaceContext::playbackStartedTimeChanged):
+            (WebKit::WebPlaybackSessionManager::playbackStartedTimeChanged):
+
 2016-09-22  Babak Shafiei  <[email protected]>
 
         Merge r206033. rdar://problem/28086237

Modified: branches/safari-602-branch/Source/WebKit2/UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h (206367 => 206368)


--- branches/safari-602-branch/Source/WebKit2/UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h	2016-09-26 05:35:55 UTC (rev 206367)
+++ branches/safari-602-branch/Source/WebKit2/UIProcess/Cocoa/WebPlaybackSessionManagerProxy.h	2016-09-26 07:26:59 UTC (rev 206368)
@@ -72,6 +72,7 @@
     void setDuration(double);
     void setCurrentTime(double);
     void setBufferedTime(double);
+    void setPlaybackStartedTime(double);
     void setRate(bool isPlaying, float playbackRate);
     void setSeekableRanges(WebCore::TimeRanges&);
     void setCanPlayFastReverse(bool);
@@ -103,10 +104,12 @@
     void selectAudioMediaOption(uint64_t) final;
     void selectLegibleMediaOption(uint64_t) final;
 
+    double playbackStartedTime() const final { return m_playbackStartedTime; }
     double duration() const final { return m_duration; }
     double currentTime() const final { return m_currentTime; }
     double bufferedTime() const final { return m_bufferedTime; }
     bool isPlaying() const final { return m_isPlaying; }
+    bool isScrubbing() const final { return m_isScrubbing; }
     float playbackRate() const final { return m_playbackRate; }
     Ref<WebCore::TimeRanges> seekableRanges() const final { return m_seekableRanges.copyRef(); }
     bool canPlayFastReverse() const final { return m_canPlayFastReverse; }
@@ -122,10 +125,13 @@
     WebPlaybackSessionManagerProxy* m_manager;
     uint64_t m_contextId;
     HashSet<WebCore::WebPlaybackSessionModelClient*> m_clients;
+    double m_playbackStartedTime { 0 };
+    bool m_playbackStartedTimeNeedsUpdate { false };
     double m_duration { 0 };
     double m_currentTime { 0 };
     double m_bufferedTime { 0 };
     bool m_isPlaying { false };
+    bool m_isScrubbing { false };
     float m_playbackRate { 0 };
     Ref<WebCore::TimeRanges> m_seekableRanges { WebCore::TimeRanges::create() };
     bool m_canPlayFastReverse { false };
@@ -177,6 +183,7 @@
     void setExternalPlaybackProperties(uint64_t contextId, bool enabled, uint32_t targetType, String localizedDeviceName);
     void setWirelessVideoPlaybackDisabled(uint64_t contextId, bool);
     void setDuration(uint64_t contextId, double duration);
+    void setPlaybackStartedTime(uint64_t contextId, double playbackStartedTime);
     void setRate(uint64_t contextId, bool isPlaying, double rate);
     void handleControlledElementIDResponse(uint64_t, String) const;
 

Modified: branches/safari-602-branch/Source/WebKit2/UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in (206367 => 206368)


--- branches/safari-602-branch/Source/WebKit2/UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in	2016-09-26 05:35:55 UTC (rev 206367)
+++ branches/safari-602-branch/Source/WebKit2/UIProcess/Cocoa/WebPlaybackSessionManagerProxy.messages.in	2016-09-26 07:26:59 UTC (rev 206368)
@@ -32,6 +32,7 @@
     SetExternalPlaybackProperties(uint64_t contextId, bool enabled, uint32_t targetType, String localizedDeviceName)
     SetWirelessVideoPlaybackDisabled(uint64_t contextId, bool disabled)
     SetDuration(uint64_t contextId, double duration)
+    SetPlaybackStartedTime(uint64_t contextId, double playbackStartedTime)
     SetRate(uint64_t contextId, bool isPlaying, double rate)
     SetUpPlaybackControlsManagerWithID(uint64_t contextId)
     ClearPlaybackControlsManager()

Modified: branches/safari-602-branch/Source/WebKit2/UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm (206367 => 206368)


--- branches/safari-602-branch/Source/WebKit2/UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm	2016-09-26 05:35:55 UTC (rev 206367)
+++ branches/safari-602-branch/Source/WebKit2/UIProcess/Cocoa/WebPlaybackSessionManagerProxy.mm	2016-09-26 07:26:59 UTC (rev 206368)
@@ -74,6 +74,8 @@
 {
     if (m_manager)
         m_manager->beginScrubbing(m_contextId);
+
+    m_isScrubbing = true;
 }
 
 void WebPlaybackSessionModelContext::endScrubbing()
@@ -80,6 +82,9 @@
 {
     if (m_manager)
         m_manager->endScrubbing(m_contextId);
+
+    m_isScrubbing = false;
+    m_playbackStartedTimeNeedsUpdate = isPlaying();
 }
 
 void WebPlaybackSessionModelContext::seekToTime(double time)
@@ -124,6 +129,12 @@
         m_manager->selectLegibleMediaOption(m_contextId, optionId);
 }
 
+void WebPlaybackSessionModelContext::setPlaybackStartedTime(double playbackStartedTime)
+{
+    m_playbackStartedTime = playbackStartedTime;
+    m_playbackStartedTimeNeedsUpdate = false;
+}
+
 void WebPlaybackSessionModelContext::setDuration(double duration)
 {
     m_duration = duration;
@@ -135,6 +146,8 @@
 {
     m_currentTime = currentTime;
     auto anchorTime = [[NSProcessInfo processInfo] systemUptime];
+    if (m_playbackStartedTimeNeedsUpdate)
+        setPlaybackStartedTime(currentTime);
 
     for (auto* client : m_clients)
         client->currentTimeChanged(currentTime, anchorTime);
@@ -389,6 +402,11 @@
     ensureModel(contextId).setDuration(duration);
 }
 
+void WebPlaybackSessionManagerProxy::setPlaybackStartedTime(uint64_t contextId, double playbackStartedTime)
+{
+    ensureModel(contextId).setPlaybackStartedTime(playbackStartedTime);
+}
+
 void WebPlaybackSessionManagerProxy::setRate(uint64_t contextId, bool isPlaying, double rate)
 {
     ensureModel(contextId).setRate(isPlaying, rate);

Modified: branches/safari-602-branch/Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.h (206367 => 206368)


--- branches/safari-602-branch/Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.h	2016-09-26 05:35:55 UTC (rev 206367)
+++ branches/safari-602-branch/Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.h	2016-09-26 07:26:59 UTC (rev 206368)
@@ -77,6 +77,7 @@
     void durationChanged(double) final;
     void currentTimeChanged(double currentTime, double anchorTime) final;
     void bufferedTimeChanged(double) final;
+    void playbackStartedTimeChanged(double playbackStartedTime) final;
     void rateChanged(bool isPlaying, float playbackRate) final;
     void seekableRangesChanged(const WebCore::TimeRanges&) final;
     void canPlayFastReverseChanged(bool value) final;
@@ -122,6 +123,7 @@
     void durationChanged(uint64_t contextId, double);
     void currentTimeChanged(uint64_t contextId, double currentTime, double anchorTime);
     void bufferedTimeChanged(uint64_t contextId, double bufferedTime);
+    void playbackStartedTimeChanged(uint64_t contextId, double playbackStartedTime);
     void rateChanged(uint64_t contextId, bool isPlaying, float playbackRate);
     void seekableRangesChanged(uint64_t contextId, const WebCore::TimeRanges&);
     void canPlayFastReverseChanged(uint64_t contextId, bool value);

Modified: branches/safari-602-branch/Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm (206367 => 206368)


--- branches/safari-602-branch/Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm	2016-09-26 05:35:55 UTC (rev 206367)
+++ branches/safari-602-branch/Source/WebKit2/WebProcess/cocoa/WebPlaybackSessionManager.mm	2016-09-26 07:26:59 UTC (rev 206368)
@@ -96,6 +96,12 @@
         m_manager->rateChanged(m_contextId, isPlaying, playbackRate);
 }
 
+void WebPlaybackSessionInterfaceContext::playbackStartedTimeChanged(double playbackStartedTime)
+{
+    if (m_manager)
+        m_manager->playbackStartedTimeChanged(m_contextId, playbackStartedTime);
+}
+
 void WebPlaybackSessionInterfaceContext::seekableRangesChanged(const WebCore::TimeRanges& ranges)
 {
     if (m_manager)
@@ -297,6 +303,11 @@
     m_page->send(Messages::WebPlaybackSessionManagerProxy::SetBufferedTime(contextId, bufferedTime), m_page->pageID());
 }
 
+void WebPlaybackSessionManager::playbackStartedTimeChanged(uint64_t contextId, double playbackStartedTime)
+{
+    m_page->send(Messages::WebPlaybackSessionManagerProxy::SetPlaybackStartedTime(contextId, playbackStartedTime), m_page->pageID());
+}
+
 void WebPlaybackSessionManager::rateChanged(uint64_t contextId, bool isPlaying, float playbackRate)
 {
     m_page->send(Messages::WebPlaybackSessionManagerProxy::SetRate(contextId, isPlaying, playbackRate), m_page->pageID());
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to