Changeset 217311 in webkit
- Timestamp:
- May 23, 2017 5:07:21 PM (7 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r217310 r217311 1 2017-05-23 Eric Carlson <eric.carlson@apple.com> 2 3 [MediaStream] Allow transition from autoplay to play when a capture stream begins. 4 https://bugs.webkit.org/show_bug.cgi?id=172391 5 <rdar://problem/32304934> 6 7 Reviewed by Youenn Fablet. 8 9 Manual testing. Regression testing to be added as a follow-up. 10 11 * dom/Document.cpp: 12 (WebCore::Document::updateIsPlayingMedia): Call mediaStreamCaptureStateChanged when capture 13 state changes. 14 (WebCore::Document::registerForMediaStreamStateChangeCallbacks): 15 (WebCore::Document::unregisterForMediaStreamStateChangeCallbacks): 16 (WebCore::Document::mediaStreamCaptureStateChanged): Call all registered elements. 17 * dom/Document.h: 18 * html/HTMLMediaElement.cpp: 19 (WebCore::HTMLMediaElement::registerWithDocument): Register for capture state changes. 20 (WebCore::HTMLMediaElement::unregisterWithDocument): Unregister for capture state changes. 21 (WebCore::HTMLMediaElement::mediaStreamCaptureStateChanged): Attempt autoplay as necessary. 22 * html/HTMLMediaElement.h: 23 1 24 2017-05-15 Matt Rajca <mrajca@apple.com> 2 25 -
trunk/Source/WebCore/dom/Document.cpp
r217239 r217311 3484 3484 return; 3485 3485 3486 #if ENABLE(MEDIA_STREAM) 3487 bool captureStateChanged = MediaProducer::isCapturing(m_mediaState) != MediaProducer::isCapturing(state); 3488 #endif 3489 3486 3490 m_mediaState = state; 3487 3491 3488 3492 if (page()) 3489 3493 page()->updateIsPlayingMedia(sourceElementID); 3494 3495 #if ENABLE(MEDIA_STREAM) 3496 if (captureStateChanged) 3497 mediaStreamCaptureStateChanged(); 3498 #endif 3490 3499 } 3491 3500 … … 7012 7021 }); 7013 7022 } 7023 7024 void Document::registerForMediaStreamStateChangeCallbacks(HTMLMediaElement& element) 7025 { 7026 m_mediaStreamStateChangeElements.add(&element); 7027 } 7028 7029 void Document::unregisterForMediaStreamStateChangeCallbacks(HTMLMediaElement& element) 7030 { 7031 m_mediaStreamStateChangeElements.remove(&element); 7032 } 7033 7034 void Document::mediaStreamCaptureStateChanged() 7035 { 7036 for (auto* mediaElement : m_mediaStreamStateChangeElements) 7037 mediaElement->mediaStreamCaptureStateChanged(); 7038 } 7014 7039 #endif 7015 7040 -
trunk/Source/WebCore/dom/Document.h
r217054 r217311 1284 1284 String deviceIDHashSalt() const { return m_idHashSalt; } 1285 1285 void stopMediaCapture(); 1286 void registerForMediaStreamStateChangeCallbacks(HTMLMediaElement&); 1287 void unregisterForMediaStreamStateChangeCallbacks(HTMLMediaElement&); 1288 void mediaStreamCaptureStateChanged(); 1286 1289 #endif 1287 1290 … … 1766 1769 1767 1770 #if ENABLE(MEDIA_STREAM) 1771 HashSet<HTMLMediaElement*> m_mediaStreamStateChangeElements; 1768 1772 String m_idHashSalt; 1769 1773 bool m_hasHadActiveMediaStreamTrack { false }; -
trunk/Source/WebCore/html/HTMLMediaElement.cpp
r217310 r217311 687 687 document.addAudioProducer(this); 688 688 addElementToDocumentMap(*this, document); 689 690 #if ENABLE(MEDIA_STREAM) 691 document.registerForMediaStreamStateChangeCallbacks(*this); 692 #endif 689 693 } 690 694 … … 722 726 document.removeAudioProducer(this); 723 727 removeElementFromDocumentMap(*this, document); 728 729 #if ENABLE(MEDIA_STREAM) 730 document.unregisterForMediaStreamStateChangeCallbacks(*this); 731 #endif 732 724 733 } 725 734 … … 7478 7487 } 7479 7488 7480 } 7481 7482 #endif 7489 #if ENABLE(MEDIA_STREAM) 7490 void HTMLMediaElement::mediaStreamCaptureStateChanged() 7491 { 7492 resumeAutoplaying(); 7493 } 7494 #endif 7495 7496 } 7497 7498 #endif -
trunk/Source/WebCore/html/HTMLMediaElement.h
r216886 r217311 516 516 517 517 #if ENABLE(MEDIA_STREAM) 518 void mediaStreamCaptureStateChanged(); 518 519 bool hasMediaStreamSrcObject() const { return !!m_mediaStreamSrcObject; } 519 520 #endif
Note: See TracChangeset
for help on using the changeset viewer.