Changeset 258024 in webkit


Ignore:
Timestamp:
Mar 6, 2020 12:52:52 PM (4 years ago)
Author:
youenn@apple.com
Message:

Use ObjectIdentifier to identify media sessions
https://bugs.webkit.org/show_bug.cgi?id=208710

Reviewed by Eric Carlson.

Source/WebCore:

No change of behavior, except that the identifier is now stable over time and unique per process.

  • Headers.cmake:
  • WebCore.xcodeproj/project.pbxproj:
  • html/HTMLMediaElement.cpp:

(WebCore::HTMLMediaElement::HTMLMediaElement):
(WebCore::HTMLMediaElement::mediaSessionUniqueIdentifier const):

  • html/HTMLMediaElement.h:
  • platform/audio/NowPlayingInfo.h:

(WebCore::NowPlayingInfo::decode):

  • platform/audio/PlatformMediaSessionManager.h:

(WebCore::PlatformMediaSessionManager::lastUpdatedNowPlayingInfoUniqueIdentifier const):

  • platform/audio/cocoa/MediaSessionManagerCocoa.h:
  • platform/audio/cocoa/MediaSessionManagerCocoa.mm:

(MediaSessionManagerCocoa::setNowPlayingInfo):
(MediaSessionManagerCocoa::updateNowPlayingInfo):

  • testing/Internals.cpp:

(WebCore::Internals::nowPlayingState const):

Source/WebKit:

  • WebProcess/WebPage/Cocoa/WebPageCocoa.mm:

(WebKit::WebPage::requestActiveNowPlayingSessionInfo):

Location:
trunk/Source
Files:
1 added
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r258019 r258024  
     12020-03-06  Youenn Fablet  <youenn@apple.com>
     2
     3        Use ObjectIdentifier to identify media sessions
     4        https://bugs.webkit.org/show_bug.cgi?id=208710
     5
     6        Reviewed by Eric Carlson.
     7
     8        No change of behavior, except that the identifier is now stable over time and unique per process.
     9
     10        * Headers.cmake:
     11        * WebCore.xcodeproj/project.pbxproj:
     12        * html/HTMLMediaElement.cpp:
     13        (WebCore::HTMLMediaElement::HTMLMediaElement):
     14        (WebCore::HTMLMediaElement::mediaSessionUniqueIdentifier const):
     15        * html/HTMLMediaElement.h:
     16        * platform/audio/NowPlayingInfo.h:
     17        (WebCore::NowPlayingInfo::decode):
     18        * platform/audio/PlatformMediaSessionManager.h:
     19        (WebCore::PlatformMediaSessionManager::lastUpdatedNowPlayingInfoUniqueIdentifier const):
     20        * platform/audio/cocoa/MediaSessionManagerCocoa.h:
     21        * platform/audio/cocoa/MediaSessionManagerCocoa.mm:
     22        (MediaSessionManagerCocoa::setNowPlayingInfo):
     23        (MediaSessionManagerCocoa::updateNowPlayingInfo):
     24        * testing/Internals.cpp:
     25        (WebCore::Internals::nowPlayingState const):
     26
    1272020-03-06  Jason Lawrence  <lawrence.j@apple.com>
    228
  • trunk/Source/WebCore/Headers.cmake

    r258015 r258024  
    951951    platform/MediaSample.h
    952952    platform/MediaSelectionOption.h
     953    platform/MediaSessionIdentifier.h
    953954    platform/MediaStrategy.h
    954955    platform/NowPlayingManager.h
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r258015 r258024  
    10561056                413CCD4A20DE034F0065A21A /* MockMediaDevice.h in Headers */ = {isa = PBXBuildFile; fileRef = 413CCD4820DE013C0065A21A /* MockMediaDevice.h */; settings = {ATTRIBUTES = (Private, ); }; };
    10571057                413E00791DB0E4F2002341D2 /* MemoryRelease.h in Headers */ = {isa = PBXBuildFile; fileRef = 413E00781DB0E4DE002341D2 /* MemoryRelease.h */; settings = {ATTRIBUTES = (Private, ); }; };
     1058                414460A22412994500814BE7 /* MediaSessionIdentifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 414460A02412994100814BE7 /* MediaSessionIdentifier.h */; settings = {ATTRIBUTES = (Private, ); }; };
    10581059                414598C223C8D177002B9CC8 /* LocalSampleBufferDisplayLayer.mm in Sources */ = {isa = PBXBuildFile; fileRef = 414598C123C8AD79002B9CC8 /* LocalSampleBufferDisplayLayer.mm */; };
    10591060                414B82051D6DF0E50077EBE3 /* StructuredClone.h in Headers */ = {isa = PBXBuildFile; fileRef = 414B82031D6DF0D90077EBE3 /* StructuredClone.h */; };
     
    73187319                413E007B1DB0E707002341D2 /* MemoryReleaseCocoa.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MemoryReleaseCocoa.mm; sourceTree = "<group>"; };
    73197320                413FC4CD1FD1DD8C00541C4B /* ServiceWorkerClientQueryOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ServiceWorkerClientQueryOptions.h; sourceTree = "<group>"; };
     7321                414460A02412994100814BE7 /* MediaSessionIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaSessionIdentifier.h; sourceTree = "<group>"; };
    73207322                414598BE23C8AAB8002B9CC8 /* SampleBufferDisplayLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SampleBufferDisplayLayer.h; sourceTree = "<group>"; };
    73217323                414598C023C8AD78002B9CC8 /* LocalSampleBufferDisplayLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocalSampleBufferDisplayLayer.h; sourceTree = "<group>"; };
     
    2596925971                                CD641EC7181ED60100EE4C41 /* MediaSample.h */,
    2597025972                                A17D275D1EAC579800BF01E7 /* MediaSelectionOption.h */,
     25973                                414460A02412994100814BE7 /* MediaSessionIdentifier.h */,
    2597125974                                9B1229C623FE4D5F008CA751 /* MediaStrategy.h */,
    2597225975                                BC772C4C0C4EB3040083285F /* MIMETypeRegistry.cpp */,
     
    3279532798                                93F198F608245E59001E9ABC /* TextResourceDecoder.h in Headers */,
    3279632799                                A824B4650E2EF2EA0081A7B7 /* TextRun.h in Headers */,
     32800                                414460A22412994500814BE7 /* MediaSessionIdentifier.h in Headers */,
    3279732801                                448B1B7A0F3A2F9B0047A9E2 /* TextSizeAdjustment.h in Headers */,
    3279832802                                9759E94014EF1CF80026A2DD /* TextTrack.h in Headers */,
  • trunk/Source/WebCore/html/HTMLMediaElement.cpp

    r257997 r258024  
    465465    , m_logIdentifier(uniqueLogIdentifier())
    466466#endif
     467    , m_mediaSessionIdentifier(MediaSessionIdentifier::generate())
    467468{
    468469    allMediaElements().add(this);
     
    76487649}
    76497650
    7650 uint64_t HTMLMediaElement::mediaSessionUniqueIdentifier() const
    7651 {
    7652     auto& url = m_currentSrc.string();
    7653     return url.impl() ? url.impl()->hash() : 0;
     7651MediaSessionIdentifier HTMLMediaElement::mediaSessionUniqueIdentifier() const
     7652{
     7653    return m_mediaSessionIdentifier;
    76547654}
    76557655
  • trunk/Source/WebCore/html/HTMLMediaElement.h

    r257913 r258024  
    3939#include "MediaPlayer.h"
    4040#include "MediaProducer.h"
     41#include "MediaSessionIdentifier.h"
    4142#include "VisibilityChangeClient.h"
    4243#include <wtf/Function.h>
     
    593594    void applicationDidBecomeActive();
    594595
    595     uint64_t mediaSessionUniqueIdentifier() const;
     596    MediaSessionIdentifier mediaSessionUniqueIdentifier() const;
    596597    String mediaSessionTitle() const;
    597598    String sourceApplicationIdentifier() const;
     
    12121213    bool m_playingOnSecondScreen { false };
    12131214    bool m_removedBehaviorRestrictionsAfterFirstUserGesture { false };
     1215    MediaSessionIdentifier m_mediaSessionIdentifier;
    12141216};
    12151217
  • trunk/Source/WebCore/platform/audio/NowPlayingInfo.h

    r257913 r258024  
    2626#pragma once
    2727
     28#include "MediaSessionIdentifier.h"
    2829#include <wtf/text/WTFString.h>
    2930
     
    3637    double currentTime { 0 };
    3738    bool supportsSeeking { false };
    38     uint64_t uniqueIdentifier { 0 };
     39    MediaSessionIdentifier uniqueIdentifier;
    3940    bool isPlaying { false };
    4041    bool allowsNowPlayingControlsVisibility { false };
     
    7172        return { };
    7273
    73     uint64_t uniqueIdentifier;
     74    MediaSessionIdentifier uniqueIdentifier;
    7475    if (!decoder.decode(uniqueIdentifier))
    7576        return { };
  • trunk/Source/WebCore/platform/audio/PlatformMediaSessionManager.h

    r258015 r258024  
    2828
    2929#include "DocumentIdentifier.h"
     30#include "MediaSessionIdentifier.h"
    3031#include "PlatformMediaSession.h"
    3132#include "Timer.h"
     
    6970    virtual double lastUpdatedNowPlayingDuration() const { return NAN; }
    7071    virtual double lastUpdatedNowPlayingElapsedTime() const { return NAN; }
    71     virtual uint64_t lastUpdatedNowPlayingInfoUniqueIdentifier() const { return 0; }
     72    virtual MediaSessionIdentifier lastUpdatedNowPlayingInfoUniqueIdentifier() const { return { }; }
    7273    virtual bool registeredAsNowPlayingApplication() const { return false; }
    7374    virtual void prepareToSendUserMediaPermissionRequest() { }
  • trunk/Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.h

    r257913 r258024  
    5454    double lastUpdatedNowPlayingDuration() const final { return m_lastUpdatedNowPlayingDuration; }
    5555    double lastUpdatedNowPlayingElapsedTime() const final { return m_lastUpdatedNowPlayingElapsedTime; }
    56     uint64_t lastUpdatedNowPlayingInfoUniqueIdentifier() const final { return m_lastUpdatedNowPlayingInfoUniqueIdentifier; }
     56    MediaSessionIdentifier lastUpdatedNowPlayingInfoUniqueIdentifier() const final { return m_lastUpdatedNowPlayingInfoUniqueIdentifier; }
    5757    bool registeredAsNowPlayingApplication() const final { return m_registeredAsNowPlayingApplication; }
    5858    void prepareToSendUserMediaPermissionRequest() final;
     
    104104    double m_lastUpdatedNowPlayingDuration { NAN };
    105105    double m_lastUpdatedNowPlayingElapsedTime { NAN };
    106     uint64_t m_lastUpdatedNowPlayingInfoUniqueIdentifier { 0 };
     106    MediaSessionIdentifier m_lastUpdatedNowPlayingInfoUniqueIdentifier;
    107107
    108108    GenericTaskQueue<Timer> m_nowPlayingUpdateTaskQueue;
  • trunk/Source/WebCore/platform/audio/cocoa/MediaSessionManagerCocoa.mm

    r257913 r258024  
    244244    CFDictionarySetValue(info.get(), kMRMediaRemoteNowPlayingInfoPlaybackRate, cfRate.get());
    245245
    246     auto lastUpdatedNowPlayingInfoUniqueIdentifier = nowPlayingInfo.uniqueIdentifier;
     246    auto lastUpdatedNowPlayingInfoUniqueIdentifier = nowPlayingInfo.uniqueIdentifier.toUInt64();
    247247    auto cfIdentifier = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberLongLongType, &lastUpdatedNowPlayingInfoUniqueIdentifier));
    248248    CFDictionarySetValue(info.get(), kMRMediaRemoteNowPlayingInfoUniqueIdentifier, cfIdentifier.get());
     
    302302        m_lastUpdatedNowPlayingDuration = NAN;
    303303        m_lastUpdatedNowPlayingElapsedTime = NAN;
    304         m_lastUpdatedNowPlayingInfoUniqueIdentifier = 0;
     304        m_lastUpdatedNowPlayingInfoUniqueIdentifier = { };
    305305
    306306        return;
    307307    }
    308308
    309     ALWAYS_LOG(LOGIDENTIFIER, "title = \"", nowPlayingInfo->title, "\", isPlaying = ", nowPlayingInfo->isPlaying, ", duration = ", nowPlayingInfo->duration, ", now = ", nowPlayingInfo->currentTime, ", id = ", nowPlayingInfo->uniqueIdentifier, ", registered = ", m_registeredAsNowPlayingApplication);
     309    ALWAYS_LOG(LOGIDENTIFIER, "title = \"", nowPlayingInfo->title, "\", isPlaying = ", nowPlayingInfo->isPlaying, ", duration = ", nowPlayingInfo->duration, ", now = ", nowPlayingInfo->currentTime, ", id = ", nowPlayingInfo->uniqueIdentifier.toUInt64(), ", registered = ", m_registeredAsNowPlayingApplication);
    310310
    311311    platformStrategies()->mediaStrategy().setNowPlayingInfo(!m_registeredAsNowPlayingApplication, *nowPlayingInfo);
  • trunk/Source/WebCore/testing/Internals.cpp

    r257835 r258024  
    41664166        PlatformMediaSessionManager::sharedManager().lastUpdatedNowPlayingDuration(),
    41674167        PlatformMediaSessionManager::sharedManager().lastUpdatedNowPlayingElapsedTime(),
    4168         PlatformMediaSessionManager::sharedManager().lastUpdatedNowPlayingInfoUniqueIdentifier(),
     4168        PlatformMediaSessionManager::sharedManager().lastUpdatedNowPlayingInfoUniqueIdentifier().toUInt64(),
    41694169        PlatformMediaSessionManager::sharedManager().hasActiveNowPlayingSession(),
    41704170        PlatformMediaSessionManager::sharedManager().registeredAsNowPlayingApplication()
  • trunk/Source/WebKit/ChangeLog

    r258020 r258024  
     12020-03-06  Youenn Fablet  <youenn@apple.com>
     2
     3        Use ObjectIdentifier to identify media sessions
     4        https://bugs.webkit.org/show_bug.cgi?id=208710
     5
     6        Reviewed by Eric Carlson.
     7
     8        * WebProcess/WebPage/Cocoa/WebPageCocoa.mm:
     9        (WebKit::WebPage::requestActiveNowPlayingSessionInfo):
     10
    1112020-03-05  Jiewen Tan  <jiewen_tan@apple.com>
    212
  • trunk/Source/WebKit/WebProcess/WebPage/Cocoa/WebPageCocoa.mm

    r257592 r258024  
    7171        duration = sharedManager->lastUpdatedNowPlayingDuration();
    7272        elapsedTime = sharedManager->lastUpdatedNowPlayingElapsedTime();
    73         uniqueIdentifier = sharedManager->lastUpdatedNowPlayingInfoUniqueIdentifier();
     73        uniqueIdentifier = sharedManager->lastUpdatedNowPlayingInfoUniqueIdentifier().toUInt64();
    7474        registeredAsNowPlayingApplication = sharedManager->registeredAsNowPlayingApplication();
    7575    }
Note: See TracChangeset for help on using the changeset viewer.