Changeset 271643 in webkit
- Timestamp:
- Jan 20, 2021 2:43:59 AM (18 months ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 1 added
- 14 edited
-
ChangeLog (modified) (1 diff)
-
Headers.cmake (modified) (1 diff)
-
Modules/webaudio/AudioContext.cpp (modified) (1 diff)
-
Modules/webaudio/AudioContext.h (modified) (1 diff)
-
WebCore.xcodeproj/project.pbxproj (modified) (4 diffs)
-
dom/Document.cpp (modified) (2 diffs)
-
dom/Document.h (modified) (1 diff)
-
html/HTMLMediaElement.cpp (modified) (1 diff)
-
html/HTMLMediaElement.h (modified) (1 diff)
-
page/Page.cpp (modified) (7 diffs)
-
page/Page.h (modified) (3 diffs)
-
platform/MediaSessionGroupIdentifier.h (added)
-
platform/audio/PlatformMediaSession.h (modified) (2 diffs)
-
platform/audio/PlatformMediaSessionManager.cpp (modified) (4 diffs)
-
platform/audio/PlatformMediaSessionManager.h (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r271642 r271643 1 2021-01-20 Youenn Fablet <youenn@apple.com> 2 3 Introduce a MediaSessionGroupIdentifier 4 https://bugs.webkit.org/show_bug.cgi?id=220706 5 6 Reviewed by Eric Carlson. 7 8 Instead of going from page to document to media session, introduce a MediaSessionGroupIdentifier which groups sessions by page. 9 We can then directly go from page to media session to suspend/resume play back. 10 Update PlatformMediaSessionClient to implement mediaSessionGroupIdentifier instead of hostingDocumentIdentifier. 11 12 We remove pausing playback from Document::~Document, as related audio producers (AudioContext, HTMLMediaElement) 13 should be paused in their ActiveDOMObject stop method. 14 15 Covered by existing tests, this is a refactoring. 16 17 * Modules/webaudio/AudioContext.cpp: 18 (WebCore::AudioContext::mediaSessionGroupIdentifier const): 19 (WebCore::AudioContext::hostingDocumentIdentifier const): Deleted. 20 * Modules/webaudio/AudioContext.h: 21 * WebCore.xcodeproj/project.pbxproj: 22 * dom/Document.cpp: 23 (WebCore::Document::~Document): 24 (WebCore::Document::mediaPlaybackExists): Deleted. 25 (WebCore::Document::mediaPlaybackIsPaused): Deleted. 26 (WebCore::Document::pauseAllMediaPlayback): Deleted. 27 (WebCore::Document::suspendAllMediaPlayback): Deleted. 28 (WebCore::Document::resumeAllMediaPlayback): Deleted. 29 (WebCore::Document::suspendAllMediaBuffering): Deleted. 30 (WebCore::Document::resumeAllMediaBuffering): Deleted. 31 * dom/Document.h: 32 * html/HTMLMediaElement.cpp: 33 (WebCore::HTMLMediaElement::mediaSessionGroupIdentifier const): 34 * html/HTMLMediaElement.h: 35 * page/Page.cpp: 36 (WebCore::Page::mediaPlaybackExists): 37 (WebCore::Page::mediaPlaybackIsPaused): 38 (WebCore::Page::pauseAllMediaPlayback): 39 (WebCore::Page::suspendAllMediaPlayback): 40 (WebCore::Page::mediaSessionGroupIdentifier const): 41 (WebCore::Page::resumeAllMediaPlayback): 42 (WebCore::Page::suspendAllMediaBuffering): 43 (WebCore::Page::resumeAllMediaBuffering): 44 * page/Page.h: 45 * platform/MediaSessionGroupIdentifier.h: Added. 46 * platform/audio/PlatformMediaSession.h: 47 * platform/audio/PlatformMediaSessionManager.cpp: 48 (WebCore::PlatformMediaSessionManager::pauseAllMediaPlaybackForGroup): 49 (WebCore::PlatformMediaSessionManager::mediaPlaybackIsPaused): 50 (WebCore::PlatformMediaSessionManager::suspendAllMediaPlaybackForGroup): 51 (WebCore::PlatformMediaSessionManager::resumeAllMediaPlaybackForGroup): 52 (WebCore::PlatformMediaSessionManager::suspendAllMediaBufferingForGroup): 53 (WebCore::PlatformMediaSessionManager::resumeAllMediaBufferingForGroup): 54 (WebCore::PlatformMediaSessionManager::forEachSessionInGroup): 55 (WebCore::PlatformMediaSessionManager::pauseAllMediaPlaybackForDocument): Deleted. 56 (WebCore::PlatformMediaSessionManager::suspendAllMediaPlaybackForDocument): Deleted. 57 (WebCore::PlatformMediaSessionManager::resumeAllMediaPlaybackForDocument): Deleted. 58 (WebCore::PlatformMediaSessionManager::suspendAllMediaBufferingForDocument): Deleted. 59 (WebCore::PlatformMediaSessionManager::resumeAllMediaBufferingForDocument): Deleted. 60 (WebCore::PlatformMediaSessionManager::forEachDocumentSession): Deleted. 61 * platform/audio/PlatformMediaSessionManager.h: 62 1 63 2021-01-20 Youenn Fablet <youenn@apple.com> 2 64 -
trunk/Source/WebCore/Headers.cmake
r271111 r271643 1023 1023 platform/MediaSample.h 1024 1024 platform/MediaSelectionOption.h 1025 platform/MediaSessionGroupIdentifier.h 1025 1026 platform/MediaSessionIdentifier.h 1026 1027 platform/MediaStrategy.h -
trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp
r269475 r271643 456 456 } 457 457 458 DocumentIdentifier AudioContext::hostingDocumentIdentifier() const458 MediaSessionGroupIdentifier AudioContext::mediaSessionGroupIdentifier() const 459 459 { 460 460 auto* document = downcast<Document>(m_scriptExecutionContext); 461 return document ? document->identifier() : DocumentIdentifier { };461 return document && document->page() ? document->page()->mediaSessionGroupIdentifier() : MediaSessionGroupIdentifier { }; 462 462 } 463 463 -
trunk/Source/WebCore/Modules/webaudio/AudioContext.h
r269475 r271643 121 121 bool canProduceAudio() const final { return true; } 122 122 bool isSuspended() const final; 123 DocumentIdentifier hostingDocumentIdentifier() const final;123 MediaSessionGroupIdentifier mediaSessionGroupIdentifier() const final; 124 124 125 125 // MediaCanStartListener. -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r271559 r271643 1087 1087 416E6FE91BBD12E5000A6043 /* ReadableStreamBuiltins.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B03D8061BB3110D00B764D8 /* ReadableStreamBuiltins.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1088 1088 416E6FE91BBD12E5000A6053 /* WritableStreamBuiltins.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B03D8061BB3110D00B764E8 /* WritableStreamBuiltins.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1089 416ECAE525B58CC400B34DA5 /* MediaSessionGroupIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 416ECAE325B58CC400B34DA5 /* MediaSessionGroupIdentifier.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1089 1090 416FD25F240FA4E5006661D8 /* NowPlayingInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 416FD25D240EE1AE006661D8 /* NowPlayingInfo.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1090 1091 417253AB1354BBBC00360F2A /* MediaControlTextTrackContainerElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 417253A91354BBBC00360F2A /* MediaControlTextTrackContainerElement.h */; }; … … 7746 7747 416E0B37209BC3C2004A95D9 /* FetchIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FetchIdentifier.h; sourceTree = "<group>"; }; 7747 7748 416E29A5102FA962007FC14E /* WorkerReportingProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerReportingProxy.h; sourceTree = "<group>"; }; 7749 416ECAE325B58CC400B34DA5 /* MediaSessionGroupIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaSessionGroupIdentifier.h; sourceTree = "<group>"; }; 7748 7750 416F807924509F3200B68F02 /* WindowDisplayCapturerMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WindowDisplayCapturerMac.h; sourceTree = "<group>"; }; 7749 7751 416F807A24509F3200B68F02 /* ScreenDisplayCapturerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ScreenDisplayCapturerMac.mm; sourceTree = "<group>"; }; … … 27574 27576 CD641EC7181ED60100EE4C41 /* MediaSample.h */, 27575 27577 A17D275D1EAC579800BF01E7 /* MediaSelectionOption.h */, 27578 416ECAE325B58CC400B34DA5 /* MediaSessionGroupIdentifier.h */, 27576 27579 414460A02412994100814BE7 /* MediaSessionIdentifier.h */, 27577 27580 A31AC70A24340984007F00A2 /* MediaStrategy.cpp */, … … 33711 33714 CDBEAEAD19D92B6C00BEBA88 /* MediaSelectionGroupAVFObjC.h in Headers */, 33712 33715 A17D275E1EAC579800BF01E7 /* MediaSelectionOption.h in Headers */, 33716 416ECAE525B58CC400B34DA5 /* MediaSessionGroupIdentifier.h in Headers */, 33713 33717 CDA9593F2412BAE000910EEF /* MediaSessionHelperIOS.h in Headers */, 33714 33718 414460A22412994500814BE7 /* MediaSessionIdentifier.h in Headers */, -
trunk/Source/WebCore/dom/Document.cpp
r271636 r271643 757 757 m_cachedResourceLoader->setDocument(nullptr); 758 758 759 #if ENABLE(VIDEO)760 pauseAllMediaPlayback();761 #endif762 763 759 // We must call clearRareData() here since a Document class inherits TreeScope 764 760 // as well as Node. See a comment on TreeScope.h for the reason. … … 1859 1855 for (auto& element : elements) 1860 1856 function(element); 1861 }1862 1863 bool Document::mediaPlaybackExists()1864 {1865 if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())1866 return !platformMediaSessionManager->hasNoSession();1867 return false;1868 }1869 1870 bool Document::mediaPlaybackIsPaused()1871 {1872 if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())1873 return platformMediaSessionManager->mediaPlaybackIsPaused(identifier());1874 return false;1875 }1876 1877 void Document::pauseAllMediaPlayback()1878 {1879 if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())1880 platformMediaSessionManager->pauseAllMediaPlaybackForDocument(identifier());1881 }1882 1883 void Document::suspendAllMediaPlayback()1884 {1885 if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())1886 platformMediaSessionManager->suspendAllMediaPlaybackForDocument(identifier());1887 }1888 1889 void Document::resumeAllMediaPlayback()1890 {1891 if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())1892 platformMediaSessionManager->resumeAllMediaPlaybackForDocument(identifier());1893 }1894 1895 void Document::suspendAllMediaBuffering()1896 {1897 if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())1898 platformMediaSessionManager->suspendAllMediaBufferingForDocument(identifier());1899 }1900 1901 void Document::resumeAllMediaBuffering()1902 {1903 if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())1904 platformMediaSessionManager->resumeAllMediaBufferingForDocument(identifier());1905 1857 } 1906 1858 -
trunk/Source/WebCore/dom/Document.h
r271636 r271643 1121 1121 void unregisterForVisibilityStateChangedCallbacks(VisibilityChangeClient&); 1122 1122 1123 #if ENABLE(VIDEO)1124 bool mediaPlaybackExists();1125 bool mediaPlaybackIsPaused();1126 void pauseAllMediaPlayback();1127 void suspendAllMediaPlayback();1128 void resumeAllMediaPlayback();1129 void suspendAllMediaBuffering();1130 void resumeAllMediaBuffering();1131 #endif1132 1133 1123 WEBCORE_EXPORT void setShouldCreateRenderers(bool); 1134 1124 bool shouldCreateRenderers(); -
trunk/Source/WebCore/html/HTMLMediaElement.cpp
r271542 r271643 3064 3064 } 3065 3065 3066 MediaSessionGroupIdentifier HTMLMediaElement::mediaSessionGroupIdentifier() const 3067 { 3068 return document().page() ? document().page()->mediaSessionGroupIdentifier() : MediaSessionGroupIdentifier { }; 3069 } 3070 3066 3071 bool HTMLMediaElement::hasAudio() const 3067 3072 { -
trunk/Source/WebCore/html/HTMLMediaElement.h
r271245 r271643 198 198 bool inActiveDocument() const { return m_inActiveDocument; } 199 199 200 DocumentIdentifier hostingDocumentIdentifier() const final { return document().identifier(); }200 MediaSessionGroupIdentifier mediaSessionGroupIdentifier() const final; 201 201 202 202 // DOM API -
trunk/Source/WebCore/page/Page.cpp
r271440 r271643 2078 2078 { 2079 2079 #if ENABLE(VIDEO) 2080 bool mediaPlaybackExists = false; 2081 forEachDocument([&mediaPlaybackExists] (Document& document) { 2082 if (document.mediaPlaybackExists()) 2083 mediaPlaybackExists = true; 2084 }); 2085 return mediaPlaybackExists; 2086 #else 2080 if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists()) 2081 return !platformMediaSessionManager->hasNoSession(); 2082 #endif 2087 2083 return false; 2088 #endif2089 2084 } 2090 2085 … … 2092 2087 { 2093 2088 #if ENABLE(VIDEO) 2094 bool mediaPlaybackIsPaused = false; 2095 forEachDocument([&mediaPlaybackIsPaused] (Document& document) { 2096 if (document.mediaPlaybackIsPaused()) 2097 mediaPlaybackIsPaused = true; 2098 }); 2099 return mediaPlaybackIsPaused; 2100 #else 2089 if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists()) 2090 return platformMediaSessionManager->mediaPlaybackIsPaused(mediaSessionGroupIdentifier()); 2091 #endif 2101 2092 return false; 2102 #endif2103 2093 } 2104 2094 … … 2106 2096 { 2107 2097 #if ENABLE(VIDEO) 2108 forEachDocument([] (Document& document) { 2109 document.pauseAllMediaPlayback(); 2110 }); 2098 if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists()) 2099 platformMediaSessionManager->pauseAllMediaPlaybackForGroup(mediaSessionGroupIdentifier()); 2111 2100 #endif 2112 2101 } … … 2119 2108 return; 2120 2109 2121 forEachDocument([] (Document& document) {2122 document.suspendAllMediaPlayback();2123 }); 2124 2110 if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists()) 2111 platformMediaSessionManager->suspendAllMediaPlaybackForGroup(mediaSessionGroupIdentifier()); 2112 2113 // FIXME: We cannot set m_mediaPlaybackIsSuspended before, see https://bugs.webkit.org/show_bug.cgi?id=192829#c7. 2125 2114 m_mediaPlaybackIsSuspended = true; 2126 2115 #endif 2116 } 2117 2118 MediaSessionGroupIdentifier Page::mediaSessionGroupIdentifier() const 2119 { 2120 if (!m_mediaSessionGroupIdentifier) { 2121 if (auto identifier = m_mainFrame->loader().pageID()) 2122 m_mediaSessionGroupIdentifier = makeObjectIdentifier<MediaSessionGroupIdentifierType>(identifier->toUInt64()); 2123 } 2124 return m_mediaSessionGroupIdentifier; 2127 2125 } 2128 2126 … … 2135 2133 m_mediaPlaybackIsSuspended = false; 2136 2134 2137 forEachDocument([] (Document& document) { 2138 document.resumeAllMediaPlayback(); 2139 }); 2135 if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists()) 2136 platformMediaSessionManager->resumeAllMediaPlaybackForGroup(mediaSessionGroupIdentifier()); 2140 2137 #endif 2141 2138 } … … 2149 2146 m_mediaBufferingIsSuspended = true; 2150 2147 2151 forEachDocument([] (Document& document) { 2152 document.suspendAllMediaBuffering(); 2153 }); 2148 if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists()) 2149 platformMediaSessionManager->suspendAllMediaBufferingForGroup(mediaSessionGroupIdentifier()); 2154 2150 #endif 2155 2151 } … … 2162 2158 m_mediaBufferingIsSuspended = false; 2163 2159 2164 forEachDocument([] (Document& document) { 2165 document.resumeAllMediaBuffering(); 2166 }); 2160 if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists()) 2161 platformMediaSessionManager->resumeAllMediaBufferingForGroup(mediaSessionGroupIdentifier()); 2167 2162 #endif 2168 2163 } -
trunk/Source/WebCore/page/Page.h
r271440 r271643 31 31 #include "LengthBox.h" 32 32 #include "MediaProducer.h" 33 #include "MediaSessionGroupIdentifier.h" 33 34 #include "Pagination.h" 34 35 #include "PlaybackTargetClientContextIdentifier.h" … … 695 696 WEBCORE_EXPORT void stopMediaCapture(); 696 697 698 MediaSessionGroupIdentifier mediaSessionGroupIdentifier() const; 697 699 WEBCORE_EXPORT bool mediaPlaybackExists(); 698 700 WEBCORE_EXPORT bool mediaPlaybackIsPaused(); … … 1138 1140 1139 1141 bool m_textInteractionEnabled { true }; 1142 mutable MediaSessionGroupIdentifier m_mediaSessionGroupIdentifier; 1140 1143 }; 1141 1144 -
trunk/Source/WebCore/platform/audio/PlatformMediaSession.h
r267544 r271643 26 26 #pragma once 27 27 28 #include " DocumentIdentifier.h"28 #include "MediaSessionGroupIdentifier.h" 29 29 #include "MediaSessionIdentifier.h" 30 30 #include "Timer.h" … … 253 253 virtual bool isPlayingOnSecondScreen() const { return false; } 254 254 255 virtual DocumentIdentifier hostingDocumentIdentifier() const = 0;255 virtual MediaSessionGroupIdentifier mediaSessionGroupIdentifier() const = 0; 256 256 257 257 virtual bool hasMediaStreamSource() const { return false; } -
trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp
r271214 r271643 468 468 } 469 469 470 void PlatformMediaSessionManager::pauseAllMediaPlaybackFor Document(DocumentIdentifier documentIdentifier)471 { 472 forEach DocumentSession(documentIdentifier, [](auto& session) {470 void PlatformMediaSessionManager::pauseAllMediaPlaybackForGroup(MediaSessionGroupIdentifier mediaSessionGroupIdentifier) 471 { 472 forEachSessionInGroup(mediaSessionGroupIdentifier, [](auto& session) { 473 473 session.pauseSession(); 474 474 }); … … 476 476 477 477 478 bool PlatformMediaSessionManager::mediaPlaybackIsPaused( DocumentIdentifier documentIdentifier)478 bool PlatformMediaSessionManager::mediaPlaybackIsPaused(MediaSessionGroupIdentifier mediaSessionGroupIdentifier) 479 479 { 480 480 bool mediaPlaybackIsPaused = false; 481 forEach DocumentSession(documentIdentifier, [&mediaPlaybackIsPaused](auto& session) {481 forEachSessionInGroup(mediaSessionGroupIdentifier, [&mediaPlaybackIsPaused](auto& session) { 482 482 if (session.state() == PlatformMediaSession::Paused) 483 483 mediaPlaybackIsPaused = true; … … 493 493 } 494 494 495 void PlatformMediaSessionManager::suspendAllMediaPlaybackFor Document(DocumentIdentifier documentIdentifier)496 { 497 forEach DocumentSession(documentIdentifier, [](auto& session) {495 void PlatformMediaSessionManager::suspendAllMediaPlaybackForGroup(MediaSessionGroupIdentifier mediaSessionGroupIdentifier) 496 { 497 forEachSessionInGroup(mediaSessionGroupIdentifier, [](auto& session) { 498 498 session.beginInterruption(PlatformMediaSession::PlaybackSuspended); 499 499 }); 500 500 } 501 501 502 void PlatformMediaSessionManager::resumeAllMediaPlaybackFor Document(DocumentIdentifier documentIdentifier)503 { 504 forEach DocumentSession(documentIdentifier, [](auto& session) {502 void PlatformMediaSessionManager::resumeAllMediaPlaybackForGroup(MediaSessionGroupIdentifier mediaSessionGroupIdentifier) 503 { 504 forEachSessionInGroup(mediaSessionGroupIdentifier, [](auto& session) { 505 505 session.endInterruption(PlatformMediaSession::MayResumePlaying); 506 506 }); 507 507 } 508 508 509 void PlatformMediaSessionManager::suspendAllMediaBufferingFor Document(DocumentIdentifier documentIdentifier)510 { 511 forEach DocumentSession(documentIdentifier, [](auto& session) {509 void PlatformMediaSessionManager::suspendAllMediaBufferingForGroup(MediaSessionGroupIdentifier mediaSessionGroupIdentifier) 510 { 511 forEachSessionInGroup(mediaSessionGroupIdentifier, [](auto& session) { 512 512 session.suspendBuffering(); 513 513 }); 514 514 } 515 515 516 void PlatformMediaSessionManager::resumeAllMediaBufferingFor Document(DocumentIdentifier documentIdentifier)517 { 518 forEach DocumentSession(documentIdentifier, [](auto& session) {516 void PlatformMediaSessionManager::resumeAllMediaBufferingForGroup(MediaSessionGroupIdentifier mediaSessionGroupIdentifier) 517 { 518 forEachSessionInGroup(mediaSessionGroupIdentifier, [](auto& session) { 519 519 session.resumeBuffering(); 520 520 }); … … 540 540 } 541 541 542 void PlatformMediaSessionManager::forEachDocumentSession(DocumentIdentifier documentIdentifier, const Function<void(PlatformMediaSession&)>& callback) 543 { 544 forEachMatchingSession([documentIdentifier](auto& session) { 545 return session.client().hostingDocumentIdentifier() == documentIdentifier; 542 void PlatformMediaSessionManager::forEachSessionInGroup(MediaSessionGroupIdentifier mediaSessionGroupIdentifier, const Function<void(PlatformMediaSession&)>& callback) 543 { 544 if (!mediaSessionGroupIdentifier) 545 return; 546 547 forEachMatchingSession([mediaSessionGroupIdentifier](auto& session) { 548 return session.client().mediaSessionGroupIdentifier() == mediaSessionGroupIdentifier; 546 549 }, [&callback](auto& session) { 547 550 callback(session); -
trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h
r271488 r271643 27 27 #define PlatformMediaSessionManager_h 28 28 29 #include "DocumentIdentifier.h"30 29 #include "GenericTaskQueue.h" 31 30 #include "MediaSessionIdentifier.h" … … 95 94 WEBCORE_EXPORT void processDidResume(); 96 95 97 bool mediaPlaybackIsPaused( DocumentIdentifier);98 void pauseAllMediaPlaybackFor Document(DocumentIdentifier);96 bool mediaPlaybackIsPaused(MediaSessionGroupIdentifier); 97 void pauseAllMediaPlaybackForGroup(MediaSessionGroupIdentifier); 99 98 WEBCORE_EXPORT void stopAllMediaPlaybackForProcess(); 100 99 101 void suspendAllMediaPlaybackFor Document(DocumentIdentifier);102 void resumeAllMediaPlaybackFor Document(DocumentIdentifier);103 void suspendAllMediaBufferingFor Document(DocumentIdentifier);104 void resumeAllMediaBufferingFor Document(DocumentIdentifier);100 void suspendAllMediaPlaybackForGroup(MediaSessionGroupIdentifier); 101 void resumeAllMediaPlaybackForGroup(MediaSessionGroupIdentifier); 102 void suspendAllMediaBufferingForGroup(MediaSessionGroupIdentifier); 103 void resumeAllMediaBufferingForGroup(MediaSessionGroupIdentifier); 105 104 106 105 enum SessionRestrictionFlags { … … 162 161 163 162 void forEachSession(const Function<void(PlatformMediaSession&)>&); 164 void forEach DocumentSession(DocumentIdentifier, const Function<void(PlatformMediaSession&)>&);163 void forEachSessionInGroup(MediaSessionGroupIdentifier, const Function<void(PlatformMediaSession&)>&); 165 164 bool anyOfSessions(const Function<bool(const PlatformMediaSession&)>&) const; 166 165
Note: See TracChangeset
for help on using the changeset viewer.