⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 283394 in webkit


Ignore:
Timestamp:
Oct 1, 2021, 1:32:42 PM (5 years ago)
Author:
Kate Cheney
Message:

GPU Process microphone attribution SPI adoption
https://bugs.webkit.org/show_bug.cgi?id=231034
<rdar://problem/83732537>

Reviewed by Youenn Fablet.

Source/WebCore:

No new tests. Tested manually by inspecting APR JSON files.

  • platform/audio/AudioSession.h:
  • platform/audio/ios/AudioSessionIOS.h:
  • platform/audio/ios/AudioSessionIOS.mm:

(WebCore::AudioSessionIOS::setHostProcessAttribution):

Source/WebCore/PAL:

  • pal/spi/cocoa/LaunchServicesSPI.h:

Source/WebKit:

Adopt SPI for App Privacy Report that attributes mic capture to the
host app.

  • GPUProcess/GPUConnectionToWebProcess.cpp:

(WebKit::GPUConnectionToWebProcess::audioSessionProxy):

  • GPUProcess/media/RemoteAudioSessionProxyManager.cpp:

(WebKit::RemoteAudioSessionProxyManager::addProxy):

  • GPUProcess/media/RemoteAudioSessionProxyManager.h:
  • Scripts/process-entitlements.sh:
Location:
trunk/Source
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r283393 r283394  
     12021-10-01  Kate Cheney  <katherine_cheney@apple.com>
     2
     3        GPU Process microphone attribution SPI adoption
     4        https://bugs.webkit.org/show_bug.cgi?id=231034
     5        <rdar://problem/83732537>
     6
     7        Reviewed by Youenn Fablet.
     8
     9        No new tests. Tested manually by inspecting APR JSON files.
     10
     11        * platform/audio/AudioSession.h:
     12        * platform/audio/ios/AudioSessionIOS.h:
     13        * platform/audio/ios/AudioSessionIOS.mm:
     14        (WebCore::AudioSessionIOS::setHostProcessAttribution):
     15
    1162021-10-01  Simon Fraser  <simon.fraser@apple.com>
    217
  • trunk/Source/WebCore/PAL/ChangeLog

    r283339 r283394  
     12021-10-01  Kate Cheney  <katherine_cheney@apple.com>
     2
     3        GPU Process microphone attribution SPI adoption
     4        https://bugs.webkit.org/show_bug.cgi?id=231034
     5        <rdar://problem/83732537>
     6
     7        Reviewed by Youenn Fablet.
     8
     9        * pal/spi/cocoa/LaunchServicesSPI.h:
     10
    1112021-09-30  Devin Rousso  <drousso@apple.com>
    212
  • trunk/Source/WebCore/PAL/pal/spi/cocoa/LaunchServicesSPI.h

    r282842 r283394  
    5656
    5757@interface LSBundleProxy : LSResourceProxy <NSSecureCoding>
     58+ (LSBundleProxy *)bundleProxyWithAuditToken:(audit_token_t)auditToken error:(NSError **)outError;
     59@property (nonatomic, readonly) NSString *bundleIdentifier;
    5860@end
    5961
  • trunk/Source/WebCore/platform/audio/AudioSession.h

    r281597 r283394  
    131131    static void setShouldManageAudioSessionCategory(bool flag) { s_shouldManageAudioSessionCategory = flag; }
    132132
     133    virtual void setHostProcessAttribution(audit_token_t) { };
     134
    133135protected:
    134136    friend class NeverDestroyed<AudioSession>;
  • trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.h

    r281597 r283394  
    4343    virtual ~AudioSessionIOS();
    4444
     45    void setHostProcessAttribution(audit_token_t) final;
     46
    4547private:
    4648    // AudioSession
  • trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm

    r281597 r283394  
    3333#import <objc/runtime.h>
    3434#import <pal/spi/cocoa/AVFoundationSPI.h>
     35#import <pal/spi/cocoa/LaunchServicesSPI.h>
    3536#import <wtf/BlockObjCExceptions.h>
    3637#import <wtf/RetainPtr.h>
     
    136137    [m_interruptionObserverHelper clearCallback];
    137138}
     139
     140void AudioSessionIOS::setHostProcessAttribution(audit_token_t auditToken)
     141{
     142#if ENABLE(APP_PRIVACY_REPORT)
     143    NSError *error = nil;
     144    auto bundleProxy = [LSBundleProxy bundleProxyWithAuditToken:auditToken error:&error];
     145    if (error) {
     146        RELEASE_LOG_ERROR(WebRTC, "Failed to get attribution bundleID from audit token with error: %@.", error.localizedDescription);
     147        return;
     148    }
     149
     150    [[PAL::getAVAudioSessionClass() sharedInstance] setHostProcessAttribution:@[ bundleProxy.bundleIdentifier ] error:&error];
     151    if (error)
     152        RELEASE_LOG_ERROR(WebRTC, "Failed to set attribution bundleID with error: %@.", error.localizedDescription);
     153#else
     154    UNUSED_PARAM(auditToken);
     155#endif
     156};
     157
    138158
    139159void AudioSessionIOS::setCategory(CategoryType newCategory, RouteSharingPolicy policy)
  • trunk/Source/WebKit/ChangeLog

    r283386 r283394  
     12021-10-01  Kate Cheney  <katherine_cheney@apple.com>
     2
     3        GPU Process microphone attribution SPI adoption
     4        https://bugs.webkit.org/show_bug.cgi?id=231034
     5        <rdar://problem/83732537>
     6
     7        Reviewed by Youenn Fablet.
     8
     9        Adopt SPI for App Privacy Report that attributes mic capture to the
     10        host app.
     11
     12        * GPUProcess/GPUConnectionToWebProcess.cpp:
     13        (WebKit::GPUConnectionToWebProcess::audioSessionProxy):
     14        * GPUProcess/media/RemoteAudioSessionProxyManager.cpp:
     15        (WebKit::RemoteAudioSessionProxyManager::addProxy):
     16        * GPUProcess/media/RemoteAudioSessionProxyManager.h:
     17        * Scripts/process-entitlements.sh:
     18
    1192021-10-01  Brent Fulgham  <bfulgham@apple.com>
    220
  • trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp

    r283369 r283394  
    457457    if (!m_audioSessionProxy) {
    458458        m_audioSessionProxy = RemoteAudioSessionProxy::create(*this).moveToUniquePtr();
    459         gpuProcess().audioSessionManager().addProxy(*m_audioSessionProxy);
     459
     460        auto auditToken = gpuProcess().parentProcessConnection()->getAuditToken();
     461        gpuProcess().audioSessionManager().addProxy(*m_audioSessionProxy, auditToken);
    460462    }
    461463    return *m_audioSessionProxy;
  • trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp

    r280698 r283394  
    5656}
    5757
    58 void RemoteAudioSessionProxyManager::addProxy(RemoteAudioSessionProxy& proxy)
     58void RemoteAudioSessionProxyManager::addProxy(RemoteAudioSessionProxy& proxy, std::optional<audit_token_t> auditToken)
    5959{
    6060    ASSERT(!m_proxies.contains(proxy));
    6161    m_proxies.add(proxy);
    6262    updateCategory();
     63
     64    if (auditToken)
     65        AudioSession::sharedSession().setHostProcessAttribution(*auditToken);
    6366}
    6467
  • trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.h

    r280698 r283394  
    4545    ~RemoteAudioSessionProxyManager();
    4646
    47     void addProxy(RemoteAudioSessionProxy&);
     47    void addProxy(RemoteAudioSessionProxy&, std::optional<audit_token_t>);
    4848    void removeProxy(RemoteAudioSessionProxy&);
    4949
  • trunk/Source/WebKit/Scripts/process-entitlements.sh

    r283156 r283394  
    183183        plistbuddy Add :com.apple.private.security.message-filter bool YES
    184184        plistbuddy Add :com.apple.UIKit.view-service-wants-custom-idiom-and-scale bool YES
    185         plistbuddy add :com.apple.QuartzCore.webkit-limited-types bool YES
     185        plistbuddy Add :com.apple.QuartzCore.webkit-limited-types bool YES
    186186    fi
    187187
     
    207207    plistbuddy Add :com.apple.QuartzCore.webkit-end-points bool YES
    208208    plistbuddy Add :com.apple.private.memory.ownership_transfer bool YES
    209     plistbuddy add :com.apple.QuartzCore.webkit-limited-types bool YES
     209    plistbuddy Add :com.apple.QuartzCore.webkit-limited-types bool YES
    210210
    211211    if [[ "${WK_USE_RESTRICTED_ENTITLEMENTS}" == YES ]]
     
    321321    plistbuddy Add :com.apple.security.exception.mach-lookup.global-name array
    322322    plistbuddy Add :com.apple.security.exception.mach-lookup.global-name:0 string com.apple.systemstatus.activityattribution
     323    plistbuddy Add :com.apple.private.attribution.explicitly-assumed-identities array
     324    plistbuddy Add :com.apple.private.attribution.explicitly-assumed-identities:0:type string wildcard
    323325}
    324326
Note: See TracChangeset for help on using the changeset viewer.