Changeset 256844 in webkit


Ignore:
Timestamp:
Feb 18, 2020 11:42:31 AM (4 years ago)
Author:
youenn@apple.com
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:
Location:
trunk/Source/WebCore
Files:
13 edited
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r256840 r256844  
     12020-02-18  Youenn Fablet  <youenn@apple.com>
     2
     3        Remove PlatformMediaSessionClient dependency on Document
     4        https://bugs.webkit.org/show_bug.cgi?id=207892
     5
     6        Reviewed by Eric Carlson.
     7
     8        Move DocumentIdentifier to Platform folder.
     9        Use DocumentIdentifier instead of Document in PlatformMediaSession/Manager.
     10        No change of behavior.
     11
     12        * Headers.cmake:
     13        * Modules/mediastream/MediaStreamTrack.cpp:
     14        (WebCore::MediaStreamTrack::hostingDocumentIdentifier const):
     15        * Modules/mediastream/MediaStreamTrack.h:
     16        * Modules/webaudio/AudioContext.cpp:
     17        (WebCore::AudioContext::hostingDocumentIdentifier const):
     18        (WebCore::AudioContext::hostingDocument const): Deleted.
     19        * Modules/webaudio/AudioContext.h:
     20        * WebCore.xcodeproj/project.pbxproj:
     21        * dom/Document.cpp:
     22        (WebCore::Document::stopAllMediaPlayback):
     23        (WebCore::Document::suspendAllMediaPlayback):
     24        (WebCore::Document::resumeAllMediaPlayback):
     25        (WebCore::Document::suspendAllMediaBuffering):
     26        (WebCore::Document::resumeAllMediaBuffering):
     27        * html/HTMLMediaElement.h:
     28        * platform/DocumentIdentifier.h: Renamed from Source/WebCore/dom/DocumentIdentifier.h.
     29        * platform/audio/PlatformMediaSession.cpp:
     30        (WebCore::PlatformMediaSession::PlatformMediaSession):
     31        * platform/audio/PlatformMediaSession.h:
     32        * platform/audio/PlatformMediaSessionManager.cpp:
     33        (WebCore::PlatformMediaSessionManager::stopAllMediaPlaybackForDocument):
     34        (WebCore::PlatformMediaSessionManager::suspendAllMediaPlaybackForDocument):
     35        (WebCore::PlatformMediaSessionManager::resumeAllMediaPlaybackForDocument):
     36        (WebCore::PlatformMediaSessionManager::suspendAllMediaBufferingForDocument):
     37        (WebCore::PlatformMediaSessionManager::resumeAllMediaBufferingForDocument):
     38        (WebCore::PlatformMediaSessionManager::sessionsMatching const):
     39        (WebCore::PlatformMediaSessionManager::forEachDocumentSession):
     40        * platform/audio/PlatformMediaSessionManager.h:
     41
    1422020-02-18  Zalan Bujtas  <zalan@apple.com>
    243
  • trunk/Source/WebCore/Headers.cmake

    r256834 r256844  
    381381    dom/DocumentFragment.h
    382382    dom/DocumentFullscreen.h
    383     dom/DocumentIdentifier.h
    384383    dom/DocumentMarker.h
    385384    dom/DocumentMarkerController.h
     
    926925    platform/Decimal.h
    927926    platform/DeferrableTask.h
     927    platform/DocumentIdentifier.h
    928928    platform/DragData.h
    929929    platform/DragImage.h
  • trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp

    r253178 r256844  
    629629}
    630630
     631DocumentIdentifier MediaStreamTrack::hostingDocumentIdentifier() const
     632{
     633    auto* document = downcast<Document>(m_scriptExecutionContext);
     634    return document ? document->identifier() : DocumentIdentifier { };
     635}
     636
    631637#if !RELEASE_LOG_DISABLED
    632638WTFLogChannel& MediaStreamTrack::logChannel() const
  • trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h

    r252981 r256844  
    203203    String sourceApplicationIdentifier() const final;
    204204    bool canProduceAudio() const final;
    205     Document* hostingDocument() const final { return document(); }
     205    DocumentIdentifier hostingDocumentIdentifier() const final;
    206206    bool processingUserGestureForMedia() const final;
    207207    bool shouldOverridePauseDuringRouteChange() const final { return true; }
  • trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp

    r251537 r256844  
    367367}
    368368
    369 Document* AudioContext::hostingDocument() const
    370 {
    371     return downcast<Document>(m_scriptExecutionContext);
     369DocumentIdentifier AudioContext::hostingDocumentIdentifier() const
     370{
     371    auto* document = downcast<Document>(m_scriptExecutionContext);
     372    return document ? document->identifier() : DocumentIdentifier { };
    372373}
    373374
  • trunk/Source/WebCore/Modules/webaudio/AudioContext.h

    r256353 r256844  
    108108    Document* document() const; // ASSERTs if document no longer exists.
    109109
    110     Document* hostingDocument() const final;
     110    DocumentIdentifier hostingDocumentIdentifier() const final;
    111111
    112112    AudioDestinationNode* destination() { return m_destinationNode.get(); }
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r256839 r256844  
    11021102                41815C1F138319830057AAA4 /* WebCoreTestSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 41815C1D138319830057AAA4 /* WebCoreTestSupport.h */; settings = {ATTRIBUTES = (Private, ); }; };
    11031103                418205471E53E98C00D62207 /* RTCController.h in Headers */ = {isa = PBXBuildFile; fileRef = 418205451E53C8CD00D62207 /* RTCController.h */; settings = {ATTRIBUTES = (Private, ); }; };
     1104                41826BF223FB597700B922B1 /* DocumentIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 41826BF123FB597000B922B1 /* DocumentIdentifier.h */; settings = {ATTRIBUTES = (Private, ); }; };
    11041105                4184F5161EAF05A800F18BF0 /* OrientationNotifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 4184F5151EAF059800F18BF0 /* OrientationNotifier.h */; settings = {ATTRIBUTES = (Private, ); }; };
    11051106                4186BD3E213EE3400001826F /* LibWebRTCUtils.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41D1A049213EDDFD0063FB6B /* LibWebRTCUtils.cpp */; };
     
    12531254                46E0C0DE23C006E9005E47AE /* DragEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 46E0C0DA23C006B3005E47AE /* DragEvent.h */; settings = {ATTRIBUTES = (Private, ); }; };
    12541255                46E139F823D8B8EB0075848E /* HTTPCookieAcceptPolicyCocoa.h in Headers */ = {isa = PBXBuildFile; fileRef = 46E139F623D8B8E70075848E /* HTTPCookieAcceptPolicyCocoa.h */; settings = {ATTRIBUTES = (Private, ); }; };
    1255                 46E1666E1FCC86A200C9710B /* DocumentIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 46E1666C1FCC868700C9710B /* DocumentIdentifier.h */; settings = {ATTRIBUTES = (Private, ); }; };
    12561256                46E791491F97E01A00199739 /* JSVisibilityState.h in Headers */ = {isa = PBXBuildFile; fileRef = 46E791461F97E01700199739 /* JSVisibilityState.h */; };
    12571257                46EB37CA1F97CCD200B65523 /* JSServiceWorkerClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 46EB37C31F97CCCB00B65523 /* JSServiceWorkerClient.h */; };
     
    73797379                418205451E53C8CD00D62207 /* RTCController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCController.h; sourceTree = "<group>"; };
    73807380                418205481E53EAAD00D62207 /* RTCController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RTCController.cpp; sourceTree = "<group>"; };
     7381                41826BF123FB597000B922B1 /* DocumentIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentIdentifier.h; sourceTree = "<group>"; };
    73817382                4184F5151EAF059800F18BF0 /* OrientationNotifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OrientationNotifier.h; sourceTree = "<group>"; };
    73827383                4186BD3B213EDE380001826F /* LibWebRTCRtpReceiverBackend.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LibWebRTCRtpReceiverBackend.h; path = libwebrtc/LibWebRTCRtpReceiverBackend.h; sourceTree = "<group>"; };
     
    77437744                46E0C0DD23C006B4005E47AE /* DragEvent.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DragEvent.idl; sourceTree = "<group>"; };
    77447745                46E139F623D8B8E70075848E /* HTTPCookieAcceptPolicyCocoa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HTTPCookieAcceptPolicyCocoa.h; sourceTree = "<group>"; };
    7745                 46E1666C1FCC868700C9710B /* DocumentIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DocumentIdentifier.h; sourceTree = "<group>"; };
    77467746                46E791451F97E01700199739 /* JSVisibilityState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSVisibilityState.cpp; sourceTree = "<group>"; };
    77477747                46E791461F97E01700199739 /* JSVisibilityState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSVisibilityState.h; sourceTree = "<group>"; };
     
    2586425864                                45FEA5CE156DDE8C00654101 /* Decimal.h */,
    2586525865                                CD83D35A211110820076E11C /* DeferrableTask.h */,
     25866                                41826BF123FB597000B922B1 /* DocumentIdentifier.h */,
    2586625867                                A79546420B5C4CB4007B438F /* DragData.cpp */,
    2586725868                                A7B6E69D0B291A9600D0529F /* DragData.h */,
     
    2804528046                                CD92F5102260FFEE00F87BB3 /* DocumentFullscreen.h */,
    2804628047                                CD92F50F2260FFEE00F87BB3 /* DocumentFullscreen.idl */,
    28047                                 46E1666C1FCC868700C9710B /* DocumentIdentifier.h */,
    2804828048                                ED2BA83B09A24B91006C0AC4 /* DocumentMarker.h */,
    2804928049                                CE057FA31220731100A476D5 /* DocumentMarkerController.cpp */,
     
    2967229672                                A8185F3D09765766005826D9 /* DocumentFragment.h in Headers */,
    2967329673                                CD92F5132260FFEE00F87BB3 /* DocumentFullscreen.h in Headers */,
    29674                                 46E1666E1FCC86A200C9710B /* DocumentIdentifier.h in Headers */,
    2967529674                                656D37360ADBA5DE00A4554D /* DocumentLoader.h in Headers */,
    2967629675                                ED2BA83C09A24B91006C0AC4 /* DocumentMarker.h in Headers */,
     
    3054330542                                9479493A1E0459FA00018D85 /* JSDeprecatedCSSOMValueList.h in Headers */,
    3054430543                                31FB1A66120A5D3F00DC02A0 /* JSDeviceMotionEvent.h in Headers */,
     30544                                41826BF223FB597700B922B1 /* DocumentIdentifier.h in Headers */,
    3054530545                                59A86008119DAFA100DEF1EF /* JSDeviceOrientationEvent.h in Headers */,
    3054630546                                659DDC8309E198BA001BF3C6 /* JSDocument.h in Headers */,
  • trunk/Source/WebCore/dom/Document.cpp

    r256838 r256844  
    17741774{
    17751775    if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())
    1776         platformMediaSessionManager->stopAllMediaPlaybackForDocument(*this);
     1776        platformMediaSessionManager->stopAllMediaPlaybackForDocument(identifier());
    17771777}
    17781778
     
    17801780{
    17811781    if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())
    1782         platformMediaSessionManager->suspendAllMediaPlaybackForDocument(*this);
     1782        platformMediaSessionManager->suspendAllMediaPlaybackForDocument(identifier());
    17831783}
    17841784
     
    17861786{
    17871787    if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())
    1788         platformMediaSessionManager->resumeAllMediaPlaybackForDocument(*this);
     1788        platformMediaSessionManager->resumeAllMediaPlaybackForDocument(identifier());
    17891789}
    17901790
     
    17921792{
    17931793    if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())
    1794         platformMediaSessionManager->suspendAllMediaBufferingForDocument(*this);
     1794        platformMediaSessionManager->suspendAllMediaBufferingForDocument(identifier());
    17951795}
    17961796
     
    17981798{
    17991799    if (auto* platformMediaSessionManager = PlatformMediaSessionManager::sharedManagerIfExists())
    1800         platformMediaSessionManager->resumeAllMediaBufferingForDocument(*this);
     1800        platformMediaSessionManager->resumeAllMediaBufferingForDocument(identifier());
    18011801}
    18021802
  • trunk/Source/WebCore/html/HTMLMediaElement.h

    r254964 r256844  
    205205    bool inActiveDocument() const { return m_inActiveDocument; }
    206206
    207     Document* hostingDocument() const final { return &document(); }
     207    DocumentIdentifier hostingDocumentIdentifier() const final { return document().identifier(); }
    208208
    209209// DOM API
  • trunk/Source/WebCore/platform/audio/PlatformMediaSession.cpp

    r255116 r256844  
    119119    , m_notifyingClient(false)
    120120#if !RELEASE_LOG_DISABLED
    121     , m_logger(client.hostingDocument()->logger())
     121    , m_logger(client.logger())
    122122    , m_logIdentifier(uniqueLogIdentifier())
    123123#endif
  • trunk/Source/WebCore/platform/audio/PlatformMediaSession.h

    r255116 r256844  
    11/*
    2  * Copyright (C) 2014-2015 Apple Inc. All rights reserved.
     2 * Copyright (C) 2014-2020 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2424 */
    2525
    26 #ifndef PlatformMediaSession_h
    27 #define PlatformMediaSession_h
    28 
     26#pragma once
     27
     28#include "DocumentIdentifier.h"
    2929#include "Timer.h"
    3030#include <wtf/LoggerHelper.h>
     
    261261    virtual bool isPlayingOnSecondScreen() const { return false; }
    262262
    263     virtual Document* hostingDocument() const = 0;
     263    virtual DocumentIdentifier hostingDocumentIdentifier() const = 0;
    264264    virtual String sourceApplicationIdentifier() const = 0;
    265265
     
    271271
    272272    virtual bool shouldOverridePauseDuringRouteChange() const { return false; }
     273
     274#if !RELEASE_LOG_DISABLED
     275    virtual const Logger& logger() const = 0;
     276#endif
    273277
    274278protected:
     
    311315
    312316} // namespace WTF
    313 
    314 #endif // PlatformMediaSession_h
  • trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.cpp

    r255116 r256844  
    454454}
    455455
    456 void PlatformMediaSessionManager::stopAllMediaPlaybackForDocument(const Document& document)
    457 {
    458     forEachDocumentSession(document, [](auto& session) {
     456void PlatformMediaSessionManager::stopAllMediaPlaybackForDocument(DocumentIdentifier documentIdentifier)
     457{
     458    forEachDocumentSession(documentIdentifier, [](auto& session) {
    459459        session.pauseSession();
    460460    });
     
    468468}
    469469
    470 void PlatformMediaSessionManager::suspendAllMediaPlaybackForDocument(const Document& document)
    471 {
    472     forEachDocumentSession(document, [](auto& session) {
     470void PlatformMediaSessionManager::suspendAllMediaPlaybackForDocument(DocumentIdentifier documentIdentifier)
     471{
     472    forEachDocumentSession(documentIdentifier, [](auto& session) {
    473473        session.beginInterruption(PlatformMediaSession::PlaybackSuspended);
    474474    });
    475475}
    476476
    477 void PlatformMediaSessionManager::resumeAllMediaPlaybackForDocument(const Document& document)
    478 {
    479     forEachDocumentSession(document, [](auto& session) {
     477void PlatformMediaSessionManager::resumeAllMediaPlaybackForDocument(DocumentIdentifier documentIdentifier)
     478{
     479    forEachDocumentSession(documentIdentifier, [](auto& session) {
    480480        session.endInterruption(PlatformMediaSession::MayResumePlaying);
    481481    });
    482482}
    483483
    484 void PlatformMediaSessionManager::suspendAllMediaBufferingForDocument(const Document& document)
    485 {
    486     forEachDocumentSession(document, [](auto& session) {
     484void PlatformMediaSessionManager::suspendAllMediaBufferingForDocument(DocumentIdentifier documentIdentifier)
     485{
     486    forEachDocumentSession(documentIdentifier, [](auto& session) {
    487487        session.suspendBuffering();
    488488    });
    489489}
    490490
    491 void PlatformMediaSessionManager::resumeAllMediaBufferingForDocument(const Document& document)
    492 {
    493     forEachDocumentSession(document, [](auto& session) {
     491void PlatformMediaSessionManager::resumeAllMediaBufferingForDocument(DocumentIdentifier documentIdentifier)
     492{
     493    forEachDocumentSession(documentIdentifier, [](auto& session) {
    494494        session.resumeBuffering();
    495495    });
    496496}
    497497
    498 Vector<WeakPtr<PlatformMediaSession>> PlatformMediaSessionManager::sessionsMatching(const WTF::Function<bool(const PlatformMediaSession&)>& filter) const
     498Vector<WeakPtr<PlatformMediaSession>> PlatformMediaSessionManager::sessionsMatching(const Function<bool(const PlatformMediaSession&)>& filter) const
    499499{
    500500    Vector<WeakPtr<PlatformMediaSession>> matchingSessions;
     
    515515}
    516516
    517 void PlatformMediaSessionManager::forEachDocumentSession(const Document& document, const Function<void(PlatformMediaSession&)>& callback)
    518 {
    519     forEachMatchingSession([&document](auto& session) {
    520         return session.client().hostingDocument() == &document;
     517void PlatformMediaSessionManager::forEachDocumentSession(DocumentIdentifier documentIdentifier, const Function<void(PlatformMediaSession&)>& callback)
     518{
     519    forEachMatchingSession([documentIdentifier](auto& session) {
     520        return session.client().hostingDocumentIdentifier() == documentIdentifier;
    521521    }, [&callback](auto& session) {
    522522        callback(session);
  • trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h

    r255116 r256844  
    2828
    2929#include "AudioHardwareListener.h"
     30#include "DocumentIdentifier.h"
    3031#include "PlatformMediaSession.h"
    3132#include "RemoteCommandListener.h"
     
    3738namespace WebCore {
    3839
    39 class Document;
    40 class HTMLMediaElement;
    4140class PlatformMediaSession;
    4241class RemoteCommandListener;
     
    8988    WEBCORE_EXPORT void processDidResume();
    9089
    91     void stopAllMediaPlaybackForDocument(const Document&);
     90    void stopAllMediaPlaybackForDocument(DocumentIdentifier);
    9291    WEBCORE_EXPORT void stopAllMediaPlaybackForProcess();
    9392
    94     void suspendAllMediaPlaybackForDocument(const Document&);
    95     void resumeAllMediaPlaybackForDocument(const Document&);
    96     void suspendAllMediaBufferingForDocument(const Document&);
    97     void resumeAllMediaBufferingForDocument(const Document&);
     93    void suspendAllMediaPlaybackForDocument(DocumentIdentifier);
     94    void resumeAllMediaPlaybackForDocument(DocumentIdentifier);
     95    void suspendAllMediaBufferingForDocument(DocumentIdentifier);
     96    void resumeAllMediaBufferingForDocument(DocumentIdentifier);
    9897
    9998    enum SessionRestrictionFlags {
     
    146145
    147146    void forEachSession(const Function<void(PlatformMediaSession&)>&);
    148     void forEachDocumentSession(const Document&, const Function<void(PlatformMediaSession&)>&);
     147    void forEachDocumentSession(DocumentIdentifier, const Function<void(PlatformMediaSession&)>&);
    149148    bool anyOfSessions(const Function<bool(const PlatformMediaSession&)>&) const;
    150149
Note: See TracChangeset for help on using the changeset viewer.