Title: [256844] trunk/Source/WebCore
Revision
256844
Author
you...@apple.com
Date
2020-02-18 11:42:31 -0800 (Tue, 18 Feb 2020)

Log Message

Remove PlatformMediaSessionClient dependency on Document
https://bugs.webkit.org/show_bug.cgi?id=207892

Reviewed by Eric Carlson.

Move DocumentIdentifier to Platform folder.
Use DocumentIdentifier instead of Document in PlatformMediaSession/Manager.
No change of behavior.

* Headers.cmake:
* Modules/mediastream/MediaStreamTrack.cpp:
(WebCore::MediaStreamTrack::hostingDocumentIdentifier const):
* Modules/mediastream/MediaStreamTrack.h:
* Modules/webaudio/AudioContext.cpp:
(WebCore::AudioContext::hostingDocumentIdentifier const):
(WebCore::AudioContext::hostingDocument const): Deleted.
* Modules/webaudio/AudioContext.h:
* WebCore.xcodeproj/project.pbxproj:
* dom/Document.cpp:
(WebCore::Document::stopAllMediaPlayback):
(WebCore::Document::suspendAllMediaPlayback):
(WebCore::Document::resumeAllMediaPlayback):
(WebCore::Document::suspendAllMediaBuffering):
(WebCore::Document::resumeAllMediaBuffering):
* html/HTMLMediaElement.h:
* platform/DocumentIdentifier.h: Renamed from Source/WebCore/dom/DocumentIdentifier.h.
* platform/audio/PlatformMediaSession.cpp:
(WebCore::PlatformMediaSession::PlatformMediaSession):
* platform/audio/PlatformMediaSession.h:
* platform/audio/PlatformMediaSessionManager.cpp:
(WebCore::PlatformMediaSessionManager::stopAllMediaPlaybackForDocument):
(WebCore::PlatformMediaSessionManager::suspendAllMediaPlaybackForDocument):
(WebCore::PlatformMediaSessionManager::resumeAllMediaPlaybackForDocument):
(WebCore::PlatformMediaSessionManager::suspendAllMediaBufferingForDocument):
(WebCore::PlatformMediaSessionManager::resumeAllMediaBufferingForDocument):
(WebCore::PlatformMediaSessionManager::sessionsMatching const):
(WebCore::PlatformMediaSessionManager::forEachDocumentSession):
* platform/audio/PlatformMediaSessionManager.h:

Modified Paths

Added Paths

Removed Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (256843 => 256844)


--- trunk/Source/WebCore/ChangeLog	2020-02-18 19:41:25 UTC (rev 256843)
+++ trunk/Source/WebCore/ChangeLog	2020-02-18 19:42:31 UTC (rev 256844)
@@ -1,3 +1,44 @@
+2020-02-18  Youenn Fablet  <you...@apple.com>
+
+        Remove PlatformMediaSessionClient dependency on Document
+        https://bugs.webkit.org/show_bug.cgi?id=207892
+
+        Reviewed by Eric Carlson.
+
+        Move DocumentIdentifier to Platform folder.
+        Use DocumentIdentifier instead of Document in PlatformMediaSession/Manager.
+        No change of behavior.
+
+        * Headers.cmake:
+        * Modules/mediastream/MediaStreamTrack.cpp:
+        (WebCore::MediaStreamTrack::hostingDocumentIdentifier const):
+        * Modules/mediastream/MediaStreamTrack.h:
+        * Modules/webaudio/AudioContext.cpp:
+        (WebCore::AudioContext::hostingDocumentIdentifier const):
+        (WebCore::AudioContext::hostingDocument const): Deleted.
+        * Modules/webaudio/AudioContext.h:
+        * WebCore.xcodeproj/project.pbxproj:
+        * dom/Document.cpp:
+        (WebCore::Document::stopAllMediaPlayback):
+        (WebCore::Document::suspendAllMediaPlayback):
+        (WebCore::Document::resumeAllMediaPlayback):
+        (WebCore::Document::suspendAllMediaBuffering):
+        (WebCore::Document::resumeAllMediaBuffering):
+        * html/HTMLMediaElement.h:
+        * platform/DocumentIdentifier.h: Renamed from Source/WebCore/dom/DocumentIdentifier.h.
+        * platform/audio/PlatformMediaSession.cpp:
+        (WebCore::PlatformMediaSession::PlatformMediaSession):
+        * platform/audio/PlatformMediaSession.h:
+        * platform/audio/PlatformMediaSessionManager.cpp:
+        (WebCore::PlatformMediaSessionManager::stopAllMediaPlaybackForDocument):
+        (WebCore::PlatformMediaSessionManager::suspendAllMediaPlaybackForDocument):
+        (WebCore::PlatformMediaSessionManager::resumeAllMediaPlaybackForDocument):
+        (WebCore::PlatformMediaSessionManager::suspendAllMediaBufferingForDocument):
+        (WebCore::PlatformMediaSessionManager::resumeAllMediaBufferingForDocument):
+        (WebCore::PlatformMediaSessionManager::sessionsMatching const):
+        (WebCore::PlatformMediaSessionManager::forEachDocumentSession):
+        * platform/audio/PlatformMediaSessionManager.h:
+
 2020-02-18  Zalan Bujtas  <za...@apple.com>
 
         [LFC][Quirk] Add additional escape reason to cover the case when body needs access to both the body and the ICB geometry

Modified: trunk/Source/WebCore/Headers.cmake (256843 => 256844)


--- trunk/Source/WebCore/Headers.cmake	2020-02-18 19:41:25 UTC (rev 256843)
+++ trunk/Source/WebCore/Headers.cmake	2020-02-18 19:42:31 UTC (rev 256844)
@@ -380,7 +380,6 @@
     dom/Document.h
     dom/DocumentFragment.h
     dom/DocumentFullscreen.h
-    dom/DocumentIdentifier.h
     dom/DocumentMarker.h
     dom/DocumentMarkerController.h
     dom/DocumentStorageAccess.h
@@ -925,6 +924,7 @@
     platform/DateComponents.h
     platform/Decimal.h
     platform/DeferrableTask.h
+    platform/DocumentIdentifier.h
     platform/DragData.h
     platform/DragImage.h
     platform/DragItem.h

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp (256843 => 256844)


--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp	2020-02-18 19:41:25 UTC (rev 256843)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp	2020-02-18 19:42:31 UTC (rev 256844)
@@ -628,6 +628,12 @@
     return document() ? document()->processingUserGestureForMedia() : false;
 }
 
+DocumentIdentifier MediaStreamTrack::hostingDocumentIdentifier() const
+{
+    auto* document = downcast<Document>(m_scriptExecutionContext);
+    return document ? document->identifier() : DocumentIdentifier { };
+}
+
 #if !RELEASE_LOG_DISABLED
 WTFLogChannel& MediaStreamTrack::logChannel() const
 {

Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h (256843 => 256844)


--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h	2020-02-18 19:41:25 UTC (rev 256843)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h	2020-02-18 19:42:31 UTC (rev 256844)
@@ -202,7 +202,7 @@
     bool shouldOverrideBackgroundPlaybackRestriction(PlatformMediaSession::InterruptionType) const final { return false; }
     String sourceApplicationIdentifier() const final;
     bool canProduceAudio() const final;
-    Document* hostingDocument() const final { return document(); }
+    DocumentIdentifier hostingDocumentIdentifier() const final;
     bool processingUserGestureForMedia() const final;
     bool shouldOverridePauseDuringRouteChange() const final { return true; }
 

Modified: trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp (256843 => 256844)


--- trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp	2020-02-18 19:41:25 UTC (rev 256843)
+++ trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp	2020-02-18 19:42:31 UTC (rev 256844)
@@ -366,9 +366,10 @@
     return downcast<Document>(m_scriptExecutionContext);
 }
 
-Document* AudioContext::hostingDocument() const
+DocumentIdentifier AudioContext::hostingDocumentIdentifier() const
 {
-    return downcast<Document>(m_scriptExecutionContext);
+    auto* document = downcast<Document>(m_scriptExecutionContext);
+    return document ? document->identifier() : DocumentIdentifier { };
 }
 
 String AudioContext::sourceApplicationIdentifier() const

Modified: trunk/Source/WebCore/Modules/webaudio/AudioContext.h (256843 => 256844)


--- trunk/Source/WebCore/Modules/webaudio/AudioContext.h	2020-02-18 19:41:25 UTC (rev 256843)
+++ trunk/Source/WebCore/Modules/webaudio/AudioContext.h	2020-02-18 19:42:31 UTC (rev 256844)
@@ -107,7 +107,7 @@
 
     Document* document() const; // ASSERTs if document no longer exists.
 
-    Document* hostingDocument() const final;
+    DocumentIdentifier hostingDocumentIdentifier() const final;
 
     AudioDestinationNode* destination() { return m_destinationNode.get(); }
     size_t currentSampleFrame() const { return m_destinationNode ? m_destinationNode->currentSampleFrame() : 0; }

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (256843 => 256844)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2020-02-18 19:41:25 UTC (rev 256843)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2020-02-18 19:42:31 UTC (rev 256844)
@@ -1101,6 +1101,7 @@
 		41815C1E138319830057AAA4 /* WebCoreTestSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41815C1C138319830057AAA4 /* WebCoreTestSupport.cpp */; };
 		41815C1F138319830057AAA4 /* WebCoreTestSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 41815C1D138319830057AAA4 /* WebCoreTestSupport.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		418205471E53E98C00D62207 /* RTCController.h in Headers */ = {isa = PBXBuildFile; fileRef = 418205451E53C8CD00D62207 /* RTCController.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		41826BF223FB597700B922B1 /* DocumentIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 41826BF123FB597000B922B1 /* DocumentIdentifier.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		4184F5161EAF05A800F18BF0 /* OrientationNotifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 4184F5151EAF059800F18BF0 /* OrientationNotifier.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		4186BD3E213EE3400001826F /* LibWebRTCUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41D1A049213EDDFD0063FB6B /* LibWebRTCUtils.cpp */; };
 		4186BD3F213EE3430001826F /* LibWebRTCRtpSenderBackend.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41D1A04B213EDDFE0063FB6B /* LibWebRTCRtpSenderBackend.cpp */; };
@@ -1252,7 +1253,6 @@
 		46DFF49C1DC2620B00B80B48 /* JSShadowRootMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 46DFF49A1DC261F900B80B48 /* JSShadowRootMode.h */; };
 		46E0C0DE23C006E9005E47AE /* DragEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 46E0C0DA23C006B3005E47AE /* DragEvent.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		46E139F823D8B8EB0075848E /* HTTPCookieAcceptPolicyCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 46E139F623D8B8E70075848E /* HTTPCookieAcceptPolicyCocoa.h */; settings = {ATTRIBUTES = (Private, ); }; };
-		46E1666E1FCC86A200C9710B /* DocumentIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 46E1666C1FCC868700C9710B /* DocumentIdentifier.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		46E791491F97E01A00199739 /* JSVisibilityState.h in Headers */ = {isa = PBXBuildFile; fileRef = 46E791461F97E01700199739 /* JSVisibilityState.h */; };
 		46EB37CA1F97CCD200B65523 /* JSServiceWorkerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 46EB37C31F97CCCB00B65523 /* JSServiceWorkerClient.h */; };
 		46EB37CC1F97CCD200B65523 /* JSServiceWorkerClients.h in Headers */ = {isa = PBXBuildFile; fileRef = 46EB37C51F97CCCB00B65523 /* JSServiceWorkerClients.h */; };
@@ -7378,6 +7378,7 @@
 		4181707D1386EDF20057AAA4 /* WebCoreTestSupport.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = WebCoreTestSupport.xcconfig; sourceTree = "<group>"; };
 		418205451E53C8CD00D62207 /* RTCController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCController.h; sourceTree = "<group>"; };
 		418205481E53EAAD00D62207 /* RTCController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RTCController.cpp; sourceTree = "<group>"; };
+		41826BF123FB597000B922B1 /* DocumentIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentIdentifier.h; sourceTree = "<group>"; };
 		4184F5151EAF059800F18BF0 /* OrientationNotifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OrientationNotifier.h; sourceTree = "<group>"; };
 		4186BD3B213EDE380001826F /* LibWebRTCRtpReceiverBackend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LibWebRTCRtpReceiverBackend.h; path = libwebrtc/LibWebRTCRtpReceiverBackend.h; sourceTree = "<group>"; };
 		4186BD3D213EDE390001826F /* LibWebRTCRtpSenderBackend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LibWebRTCRtpSenderBackend.h; path = libwebrtc/LibWebRTCRtpSenderBackend.h; sourceTree = "<group>"; };
@@ -7742,7 +7743,6 @@
 		46E0C0DC23C006B4005E47AE /* DragEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DragEvent.cpp; sourceTree = "<group>"; };
 		46E0C0DD23C006B4005E47AE /* DragEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DragEvent.idl; sourceTree = "<group>"; };
 		46E139F623D8B8E70075848E /* HTTPCookieAcceptPolicyCocoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPCookieAcceptPolicyCocoa.h; sourceTree = "<group>"; };
-		46E1666C1FCC868700C9710B /* DocumentIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentIdentifier.h; sourceTree = "<group>"; };
 		46E791451F97E01700199739 /* JSVisibilityState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSVisibilityState.cpp; sourceTree = "<group>"; };
 		46E791461F97E01700199739 /* JSVisibilityState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSVisibilityState.h; sourceTree = "<group>"; };
 		46EB37C21F97CCCB00B65523 /* JSServiceWorkerClient.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSServiceWorkerClient.cpp; sourceTree = "<group>"; };
@@ -25863,6 +25863,7 @@
 				45FEA5CD156DDE8C00654101 /* Decimal.cpp */,
 				45FEA5CE156DDE8C00654101 /* Decimal.h */,
 				CD83D35A211110820076E11C /* DeferrableTask.h */,
+				41826BF123FB597000B922B1 /* DocumentIdentifier.h */,
 				A79546420B5C4CB4007B438F /* DragData.cpp */,
 				A7B6E69D0B291A9600D0529F /* DragData.h */,
 				A7CFB3CF0B7ED10A0070C32D /* DragImage.cpp */,
@@ -28044,7 +28045,6 @@
 				1A494ED50A123F1A00FDAFC1 /* DocumentFragment.idl */,
 				CD92F5102260FFEE00F87BB3 /* DocumentFullscreen.h */,
 				CD92F50F2260FFEE00F87BB3 /* DocumentFullscreen.idl */,
-				46E1666C1FCC868700C9710B /* DocumentIdentifier.h */,
 				ED2BA83B09A24B91006C0AC4 /* DocumentMarker.h */,
 				CE057FA31220731100A476D5 /* DocumentMarkerController.cpp */,
 				CE057FA41220731100A476D5 /* DocumentMarkerController.h */,
@@ -29671,7 +29671,6 @@
 				A8185F4009765766005826D9 /* Document.h in Headers */,
 				A8185F3D09765766005826D9 /* DocumentFragment.h in Headers */,
 				CD92F5132260FFEE00F87BB3 /* DocumentFullscreen.h in Headers */,
-				46E1666E1FCC86A200C9710B /* DocumentIdentifier.h in Headers */,
 				656D37360ADBA5DE00A4554D /* DocumentLoader.h in Headers */,
 				ED2BA83C09A24B91006C0AC4 /* DocumentMarker.h in Headers */,
 				CE057FA61220731100A476D5 /* DocumentMarkerController.h in Headers */,
@@ -30542,6 +30541,7 @@
 				947949381E0459FA00018D85 /* JSDeprecatedCSSOMValue.h in Headers */,
 				9479493A1E0459FA00018D85 /* JSDeprecatedCSSOMValueList.h in Headers */,
 				31FB1A66120A5D3F00DC02A0 /* JSDeviceMotionEvent.h in Headers */,
+				41826BF223FB597700B922B1 /* DocumentIdentifier.h in Headers */,
 				59A86008119DAFA100DEF1EF /* JSDeviceOrientationEvent.h in Headers */,
 				659DDC8309E198BA001BF3C6 /* JSDocument.h in Headers */,
 				ADDA94C219687AA500453029 /* JSDocumentCustom.h in Headers */,

Modified: trunk/Source/WebCore/dom/Document.cpp (256843 => 256844)


--- trunk/Source/WebCore/dom/Document.cpp	2020-02-18 19:41:25 UTC (rev 256843)
+++ trunk/Source/WebCore/dom/Document.cpp	2020-02-18 19:42:31 UTC (rev 256844)
@@ -1773,31 +1773,31 @@
 void Document::stopAllMediaPlayback()
 {
     if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())
-        platformMediaSessionManager->stopAllMediaPlaybackForDocument(*this);
+        platformMediaSessionManager->stopAllMediaPlaybackForDocument(identifier());
 }
 
 void Document::suspendAllMediaPlayback()
 {
     if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())
-        platformMediaSessionManager->suspendAllMediaPlaybackForDocument(*this);
+        platformMediaSessionManager->suspendAllMediaPlaybackForDocument(identifier());
 }
 
 void Document::resumeAllMediaPlayback()
 {
     if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())
-        platformMediaSessionManager->resumeAllMediaPlaybackForDocument(*this);
+        platformMediaSessionManager->resumeAllMediaPlaybackForDocument(identifier());
 }
 
 void Document::suspendAllMediaBuffering()
 {
     if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())
-        platformMediaSessionManager->suspendAllMediaBufferingForDocument(*this);
+        platformMediaSessionManager->suspendAllMediaBufferingForDocument(identifier());
 }
 
 void Document::resumeAllMediaBuffering()
 {
     if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())
-        platformMediaSessionManager->resumeAllMediaBufferingForDocument(*this);
+        platformMediaSessionManager->resumeAllMediaBufferingForDocument(identifier());
 }
 
 #endif

Deleted: trunk/Source/WebCore/dom/DocumentIdentifier.h (256843 => 256844)


--- trunk/Source/WebCore/dom/DocumentIdentifier.h	2020-02-18 19:41:25 UTC (rev 256843)
+++ trunk/Source/WebCore/dom/DocumentIdentifier.h	2020-02-18 19:42:31 UTC (rev 256844)
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2017 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#include <wtf/ObjectIdentifier.h>
-
-namespace WebCore {
-
-enum DocumentIdentifierType { };
-using DocumentIdentifier = ObjectIdentifier<DocumentIdentifierType>;
-
-}

Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (256843 => 256844)


--- trunk/Source/WebCore/html/HTMLMediaElement.h	2020-02-18 19:41:25 UTC (rev 256843)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h	2020-02-18 19:42:31 UTC (rev 256844)
@@ -204,7 +204,7 @@
     
     bool inActiveDocument() const { return m_inActiveDocument; }
 
-    Document* hostingDocument() const final { return &document(); }
+    DocumentIdentifier hostingDocumentIdentifier() const final { return document().identifier(); }
 
 // DOM API
 // error state

Copied: trunk/Source/WebCore/platform/DocumentIdentifier.h (from rev 256842, trunk/Source/WebCore/dom/DocumentIdentifier.h) (0 => 256844)


--- trunk/Source/WebCore/platform/DocumentIdentifier.h	                        (rev 0)
+++ trunk/Source/WebCore/platform/DocumentIdentifier.h	2020-02-18 19:42:31 UTC (rev 256844)
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2017 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include <wtf/ObjectIdentifier.h>
+
+namespace WebCore {
+
+enum DocumentIdentifierType { };
+using DocumentIdentifier = ObjectIdentifier<DocumentIdentifierType>;
+
+}

Modified: trunk/Source/WebCore/platform/audio/PlatformMediaSession.cpp (256843 => 256844)


--- trunk/Source/WebCore/platform/audio/PlatformMediaSession.cpp	2020-02-18 19:41:25 UTC (rev 256843)
+++ trunk/Source/WebCore/platform/audio/PlatformMediaSession.cpp	2020-02-18 19:42:31 UTC (rev 256844)
@@ -118,7 +118,7 @@
     , m_stateToRestore(Idle)
     , m_notifyingClient(false)
 #if !RELEASE_LOG_DISABLED
-    , m_logger(client.hostingDocument()->logger())
+    , m_logger(client.logger())
     , m_logIdentifier(uniqueLogIdentifier())
 #endif
 {

Modified: trunk/Source/WebCore/platform/audio/PlatformMediaSession.h (256843 => 256844)


--- trunk/Source/WebCore/platform/audio/PlatformMediaSession.h	2020-02-18 19:41:25 UTC (rev 256843)
+++ trunk/Source/WebCore/platform/audio/PlatformMediaSession.h	2020-02-18 19:42:31 UTC (rev 256844)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2014-2015 Apple Inc. All rights reserved.
+ * Copyright (C) 2014-2020 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -23,9 +23,9 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#ifndef PlatformMediaSession_h
-#define PlatformMediaSession_h
+#pragma once
 
+#include "DocumentIdentifier.h"
 #include "Timer.h"
 #include <wtf/LoggerHelper.h>
 #include <wtf/Noncopyable.h>
@@ -260,7 +260,7 @@
 
     virtual bool isPlayingOnSecondScreen() const { return false; }
 
-    virtual Document* hostingDocument() const = 0;
+    virtual DocumentIdentifier hostingDocumentIdentifier() const = 0;
     virtual String sourceApplicationIdentifier() const = 0;
 
     virtual bool processingUserGestureForMedia() const = 0;
@@ -271,6 +271,10 @@
 
     virtual bool shouldOverridePauseDuringRouteChange() const { return false; }
 
+#if !RELEASE_LOG_DISABLED
+    virtual const Logger& logger() const = 0;
+#endif
+
 protected:
     virtual ~PlatformMediaSessionClient() = default;
 };
@@ -310,5 +314,3 @@
 };
 
 } // namespace WTF
-
-#endif // PlatformMediaSession_h

Modified: trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp (256843 => 256844)


--- trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp	2020-02-18 19:41:25 UTC (rev 256843)
+++ trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp	2020-02-18 19:42:31 UTC (rev 256844)
@@ -453,9 +453,9 @@
     updateSessionState();
 }
 
-void PlatformMediaSessionManager::stopAllMediaPlaybackForDocument(const Document& document)
+void PlatformMediaSessionManager::stopAllMediaPlaybackForDocument(DocumentIdentifier documentIdentifier)
 {
-    forEachDocumentSession(document, [](auto& session) {
+    forEachDocumentSession(documentIdentifier, [](auto& session) {
         session.pauseSession();
     });
 }
@@ -467,35 +467,35 @@
     });
 }
 
-void PlatformMediaSessionManager::suspendAllMediaPlaybackForDocument(const Document& document)
+void PlatformMediaSessionManager::suspendAllMediaPlaybackForDocument(DocumentIdentifier documentIdentifier)
 {
-    forEachDocumentSession(document, [](auto& session) {
+    forEachDocumentSession(documentIdentifier, [](auto& session) {
         session.beginInterruption(PlatformMediaSession::PlaybackSuspended);
     });
 }
 
-void PlatformMediaSessionManager::resumeAllMediaPlaybackForDocument(const Document& document)
+void PlatformMediaSessionManager::resumeAllMediaPlaybackForDocument(DocumentIdentifier documentIdentifier)
 {
-    forEachDocumentSession(document, [](auto& session) {
+    forEachDocumentSession(documentIdentifier, [](auto& session) {
         session.endInterruption(PlatformMediaSession::MayResumePlaying);
     });
 }
 
-void PlatformMediaSessionManager::suspendAllMediaBufferingForDocument(const Document& document)
+void PlatformMediaSessionManager::suspendAllMediaBufferingForDocument(DocumentIdentifier documentIdentifier)
 {
-    forEachDocumentSession(document, [](auto& session) {
+    forEachDocumentSession(documentIdentifier, [](auto& session) {
         session.suspendBuffering();
     });
 }
 
-void PlatformMediaSessionManager::resumeAllMediaBufferingForDocument(const Document& document)
+void PlatformMediaSessionManager::resumeAllMediaBufferingForDocument(DocumentIdentifier documentIdentifier)
 {
-    forEachDocumentSession(document, [](auto& session) {
+    forEachDocumentSession(documentIdentifier, [](auto& session) {
         session.resumeBuffering();
     });
 }
 
-Vector<WeakPtr<PlatformMediaSession>> PlatformMediaSessionManager::sessionsMatching(const WTF::Function<bool(const PlatformMediaSession&)>& filter) const
+Vector<WeakPtr<PlatformMediaSession>> PlatformMediaSessionManager::sessionsMatching(const Function<bool(const PlatformMediaSession&)>& filter) const
 {
     Vector<WeakPtr<PlatformMediaSession>> matchingSessions;
     for (auto& session : m_sessions) {
@@ -514,10 +514,10 @@
     }
 }
 
-void PlatformMediaSessionManager::forEachDocumentSession(const Document& document, const Function<void(PlatformMediaSession&)>& callback)
+void PlatformMediaSessionManager::forEachDocumentSession(DocumentIdentifier documentIdentifier, const Function<void(PlatformMediaSession&)>& callback)
 {
-    forEachMatchingSession([&document](auto& session) {
-        return session.client().hostingDocument() == &document;
+    forEachMatchingSession([documentIdentifier](auto& session) {
+        return session.client().hostingDocumentIdentifier() == documentIdentifier;
     }, [&callback](auto& session) {
         callback(session);
     });

Modified: trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h (256843 => 256844)


--- trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h	2020-02-18 19:41:25 UTC (rev 256843)
+++ trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h	2020-02-18 19:42:31 UTC (rev 256844)
@@ -27,6 +27,7 @@
 #define PlatformMediaSessionManager_h
 
 #include "AudioHardwareListener.h"
+#include "DocumentIdentifier.h"
 #include "PlatformMediaSession.h"
 #include "RemoteCommandListener.h"
 #include "Timer.h"
@@ -36,8 +37,6 @@
 
 namespace WebCore {
 
-class Document;
-class HTMLMediaElement;
 class PlatformMediaSession;
 class RemoteCommandListener;
 
@@ -88,13 +87,13 @@
     WEBCORE_EXPORT void processWillSuspend();
     WEBCORE_EXPORT void processDidResume();
 
-    void stopAllMediaPlaybackForDocument(const Document&);
+    void stopAllMediaPlaybackForDocument(DocumentIdentifier);
     WEBCORE_EXPORT void stopAllMediaPlaybackForProcess();
 
-    void suspendAllMediaPlaybackForDocument(const Document&);
-    void resumeAllMediaPlaybackForDocument(const Document&);
-    void suspendAllMediaBufferingForDocument(const Document&);
-    void resumeAllMediaBufferingForDocument(const Document&);
+    void suspendAllMediaPlaybackForDocument(DocumentIdentifier);
+    void resumeAllMediaPlaybackForDocument(DocumentIdentifier);
+    void suspendAllMediaBufferingForDocument(DocumentIdentifier);
+    void resumeAllMediaBufferingForDocument(DocumentIdentifier);
 
     enum SessionRestrictionFlags {
         NoRestrictions = 0,
@@ -145,7 +144,7 @@
     virtual void removeSession(PlatformMediaSession&);
 
     void forEachSession(const Function<void(PlatformMediaSession&)>&);
-    void forEachDocumentSession(const Document&, const Function<void(PlatformMediaSession&)>&);
+    void forEachDocumentSession(DocumentIdentifier, const Function<void(PlatformMediaSession&)>&);
     bool anyOfSessions(const Function<bool(const PlatformMediaSession&)>&) const;
 
     AudioHardwareListener* audioHardwareListener() { return m_audioHardwareListener.get(); }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to