Changeset 202918 in webkit
- Timestamp:
- Jul 7, 2016, 11:00:49 AM (10 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 3 edited
-
ChangeLog (modified) (1 diff)
-
html/HTMLMediaElement.cpp (modified) (9 diffs)
-
html/HTMLMediaElement.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r202917 r202918 1 2016-07-05 Jer Noble <jer.noble@apple.com> 2 3 Facebook videos without audio tracks will sometimes cause playback controls to appear. 4 https://bugs.webkit.org/show_bug.cgi?id=159437 5 6 Reviewed by Eric Carlson. 7 8 Because updatePlaybackControlsManager() will cause the session manager to walk through all 9 the outstanding sessions asking if it canControlControlsManager(), some sessions will say 10 they can control the controls manager if we are currently processing a user gesture. This is 11 obviously not intended (there may be a user gesture to un-mute video 1, but an unrelated 12 video 2 should not be allowed to use that use gesture to fulfill its own requirements.) 13 14 So in those situations where conditions may have changed and updatePlaybackControlsManager() 15 needs to be called, instead schedule the update for the next run loop. 16 17 * html/HTMLMediaElement.cpp: 18 (WebCore::HTMLMediaElement::setMuted): 19 (WebCore::HTMLMediaElement::layoutSizeChanged): 20 (WebCore::HTMLMediaElement::updatePlayState): 21 (WebCore::HTMLMediaElement::createMediaPlayer): 22 (WebCore::HTMLMediaElement::scheduleUpdatePlaybackControlsManager): 23 * html/HTMLMediaElement.h: 24 1 25 2016-07-07 Jer Noble <jer.noble@apple.com> 2 26 -
trunk/Source/WebCore/html/HTMLMediaElement.cpp
r202872 r202918 564 564 m_promiseTaskQueue.close(); 565 565 m_pauseAfterDetachedTaskQueue.close(); 566 m_updatePlaybackControlsManagerQueue.close(); 566 567 567 568 m_completelyLoaded = true; … … 3369 3370 } 3370 3371 3371 updatePlaybackControlsManager();3372 scheduleUpdatePlaybackControlsManager(); 3372 3373 } 3373 3374 … … 4014 4015 if (!m_receivedLayoutSizeChanged) { 4015 4016 m_receivedLayoutSizeChanged = true; 4016 updatePlaybackControlsManager();4017 scheduleUpdatePlaybackControlsManager(); 4017 4018 } 4018 4019 } … … 4862 4863 4863 4864 if (shouldBePlaying) { 4864 updatePlaybackControlsManager();4865 scheduleUpdatePlaybackControlsManager(); 4865 4866 4866 4867 setDisplayMode(Video); … … 4896 4897 setPlaying(true); 4897 4898 } else { 4898 updatePlaybackControlsManager();4899 scheduleUpdatePlaybackControlsManager(); 4899 4900 4900 4901 if (!playerPaused) … … 5094 5095 m_promiseTaskQueue.close(); 5095 5096 m_pauseAfterDetachedTaskQueue.close(); 5097 m_updatePlaybackControlsManagerQueue.close(); 5096 5098 5097 5099 ActiveDOMObject::contextDestroyed(); … … 5107 5109 m_asyncEventQueue.close(); 5108 5110 m_promiseTaskQueue.close(); 5111 m_updatePlaybackControlsManagerQueue.close(); 5109 5112 5110 5113 // Once an active DOM object has been stopped it can not be restarted, so we can deallocate … … 5957 5960 #endif 5958 5961 m_player = std::make_unique<MediaPlayer>(static_cast<MediaPlayerClient&>(*this)); 5959 updatePlaybackControlsManager();5962 scheduleUpdatePlaybackControlsManager(); 5960 5963 5961 5964 #if ENABLE(WEB_AUDIO) … … 7121 7124 } 7122 7125 7126 void HTMLMediaElement::scheduleUpdatePlaybackControlsManager() 7127 { 7128 if (!m_updatePlaybackControlsManagerQueue.hasPendingTasks()) 7129 m_updatePlaybackControlsManagerQueue.enqueueTask(std::bind(&HTMLMediaElement::updatePlaybackControlsManager, this)); 7130 } 7131 7123 7132 bool HTMLMediaElement::shouldOverrideBackgroundLoadingRestriction() const 7124 7133 { -
trunk/Source/WebCore/html/HTMLMediaElement.h
r202749 r202918 782 782 void pauseAfterDetachedTask(); 783 783 void updatePlaybackControlsManager(); 784 void scheduleUpdatePlaybackControlsManager(); 784 785 785 786 void updateRenderer(); … … 798 799 GenericTaskQueue<Timer> m_promiseTaskQueue; 799 800 GenericTaskQueue<Timer> m_pauseAfterDetachedTaskQueue; 801 GenericTaskQueue<Timer> m_updatePlaybackControlsManagerQueue; 800 802 RefPtr<TimeRanges> m_playedTimeRanges; 801 803 GenericEventQueue m_asyncEventQueue;
Note:
See TracChangeset
for help on using the changeset viewer.