Title: [283394] trunk/Source
Revision
283394
Author
katherine_che...@apple.com
Date
2021-10-01 13:32:42 -0700 (Fri, 01 Oct 2021)

Log 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:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (283393 => 283394)


--- trunk/Source/WebCore/ChangeLog	2021-10-01 20:25:48 UTC (rev 283393)
+++ trunk/Source/WebCore/ChangeLog	2021-10-01 20:32:42 UTC (rev 283394)
@@ -1,3 +1,18 @@
+2021-10-01  Kate Cheney  <katherine_che...@apple.com>
+
+        GPU Process microphone attribution SPI adoption
+        https://bugs.webkit.org/show_bug.cgi?id=231034
+        <rdar://problem/83732537>
+
+        Reviewed by Youenn Fablet.
+
+        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):
+
 2021-10-01  Simon Fraser  <simon.fra...@apple.com>
 
         Further cleanup of macOS rubberbanding code

Modified: trunk/Source/WebCore/PAL/ChangeLog (283393 => 283394)


--- trunk/Source/WebCore/PAL/ChangeLog	2021-10-01 20:25:48 UTC (rev 283393)
+++ trunk/Source/WebCore/PAL/ChangeLog	2021-10-01 20:32:42 UTC (rev 283394)
@@ -1,3 +1,13 @@
+2021-10-01  Kate Cheney  <katherine_che...@apple.com>
+
+        GPU Process microphone attribution SPI adoption
+        https://bugs.webkit.org/show_bug.cgi?id=231034
+        <rdar://problem/83732537>
+
+        Reviewed by Youenn Fablet.
+
+        * pal/spi/cocoa/LaunchServicesSPI.h:
+
 2021-09-30  Devin Rousso  <drou...@apple.com>
 
         [iOS][GPU Process] support `<attachment>`

Modified: trunk/Source/WebCore/PAL/pal/spi/cocoa/LaunchServicesSPI.h (283393 => 283394)


--- trunk/Source/WebCore/PAL/pal/spi/cocoa/LaunchServicesSPI.h	2021-10-01 20:25:48 UTC (rev 283393)
+++ trunk/Source/WebCore/PAL/pal/spi/cocoa/LaunchServicesSPI.h	2021-10-01 20:32:42 UTC (rev 283394)
@@ -55,6 +55,8 @@
 @end
 
 @interface LSBundleProxy : LSResourceProxy <NSSecureCoding>
++ (LSBundleProxy *)bundleProxyWithAuditToken:(audit_token_t)auditToken error:(NSError **)outError;
+@property (nonatomic, readonly) NSString *bundleIdentifier;
 @end
 
 #if HAVE(APP_LINKS)

Modified: trunk/Source/WebCore/platform/audio/AudioSession.h (283393 => 283394)


--- trunk/Source/WebCore/platform/audio/AudioSession.h	2021-10-01 20:25:48 UTC (rev 283393)
+++ trunk/Source/WebCore/platform/audio/AudioSession.h	2021-10-01 20:32:42 UTC (rev 283394)
@@ -130,6 +130,8 @@
     static bool shouldManageAudioSessionCategory() { return s_shouldManageAudioSessionCategory; }
     static void setShouldManageAudioSessionCategory(bool flag) { s_shouldManageAudioSessionCategory = flag; }
 
+    virtual void setHostProcessAttribution(audit_token_t) { };
+
 protected:
     friend class NeverDestroyed<AudioSession>;
     AudioSession();

Modified: trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.h (283393 => 283394)


--- trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.h	2021-10-01 20:25:48 UTC (rev 283393)
+++ trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.h	2021-10-01 20:32:42 UTC (rev 283394)
@@ -42,6 +42,8 @@
     AudioSessionIOS();
     virtual ~AudioSessionIOS();
 
+    void setHostProcessAttribution(audit_token_t) final;
+
 private:
     // AudioSession
     CategoryType category() const final;

Modified: trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm (283393 => 283394)


--- trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm	2021-10-01 20:25:48 UTC (rev 283393)
+++ trunk/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm	2021-10-01 20:32:42 UTC (rev 283394)
@@ -32,6 +32,7 @@
 #import <AVFoundation/AVAudioSession.h>
 #import <objc/runtime.h>
 #import <pal/spi/cocoa/AVFoundationSPI.h>
+#import <pal/spi/cocoa/LaunchServicesSPI.h>
 #import <wtf/BlockObjCExceptions.h>
 #import <wtf/RetainPtr.h>
 #import <wtf/WorkQueue.h>
@@ -136,6 +137,25 @@
     [m_interruptionObserverHelper clearCallback];
 }
 
+void AudioSessionIOS::setHostProcessAttribution(audit_token_t auditToken)
+{
+#if ENABLE(APP_PRIVACY_REPORT)
+    NSError *error = nil;
+    auto bundleProxy = [LSBundleProxy bundleProxyWithAuditToken:auditToken error:&error];
+    if (error) {
+        RELEASE_LOG_ERROR(WebRTC, "Failed to get attribution bundleID from audit token with error: %@.", error.localizedDescription);
+        return;
+    }
+
+    [[PAL::getAVAudioSessionClass() sharedInstance] setHostProcessAttribution:@[ bundleProxy.bundleIdentifier ] error:&error];
+    if (error)
+        RELEASE_LOG_ERROR(WebRTC, "Failed to set attribution bundleID with error: %@.", error.localizedDescription);
+#else
+    UNUSED_PARAM(auditToken);
+#endif
+};
+
+
 void AudioSessionIOS::setCategory(CategoryType newCategory, RouteSharingPolicy policy)
 {
 #if !HAVE(ROUTE_SHARING_POLICY_LONG_FORM_VIDEO)

Modified: trunk/Source/WebKit/ChangeLog (283393 => 283394)


--- trunk/Source/WebKit/ChangeLog	2021-10-01 20:25:48 UTC (rev 283393)
+++ trunk/Source/WebKit/ChangeLog	2021-10-01 20:32:42 UTC (rev 283394)
@@ -1,3 +1,21 @@
+2021-10-01  Kate Cheney  <katherine_che...@apple.com>
+
+        GPU Process microphone attribution SPI adoption
+        https://bugs.webkit.org/show_bug.cgi?id=231034
+        <rdar://problem/83732537>
+
+        Reviewed by Youenn Fablet.
+
+        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:
+
 2021-10-01  Brent Fulgham  <bfulg...@apple.com>
 
         Protect WebFrame during invalidatePolicyListener()

Modified: trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp (283393 => 283394)


--- trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp	2021-10-01 20:25:48 UTC (rev 283393)
+++ trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp	2021-10-01 20:32:42 UTC (rev 283394)
@@ -456,7 +456,9 @@
 {
     if (!m_audioSessionProxy) {
         m_audioSessionProxy = RemoteAudioSessionProxy::create(*this).moveToUniquePtr();
-        gpuProcess().audioSessionManager().addProxy(*m_audioSessionProxy);
+
+        auto auditToken = gpuProcess().parentProcessConnection()->getAuditToken();
+        gpuProcess().audioSessionManager().addProxy(*m_audioSessionProxy, auditToken);
     }
     return *m_audioSessionProxy;
 }

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp (283393 => 283394)


--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp	2021-10-01 20:25:48 UTC (rev 283393)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp	2021-10-01 20:32:42 UTC (rev 283394)
@@ -55,11 +55,14 @@
     AudioSession::sharedSession().removeConfigurationChangeObserver(*this);
 }
 
-void RemoteAudioSessionProxyManager::addProxy(RemoteAudioSessionProxy& proxy)
+void RemoteAudioSessionProxyManager::addProxy(RemoteAudioSessionProxy& proxy, std::optional<audit_token_t> auditToken)
 {
     ASSERT(!m_proxies.contains(proxy));
     m_proxies.add(proxy);
     updateCategory();
+
+    if (auditToken)
+        AudioSession::sharedSession().setHostProcessAttribution(*auditToken);
 }
 
 void RemoteAudioSessionProxyManager::removeProxy(RemoteAudioSessionProxy& proxy)

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.h (283393 => 283394)


--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.h	2021-10-01 20:25:48 UTC (rev 283393)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.h	2021-10-01 20:32:42 UTC (rev 283394)
@@ -44,7 +44,7 @@
     RemoteAudioSessionProxyManager();
     ~RemoteAudioSessionProxyManager();
 
-    void addProxy(RemoteAudioSessionProxy&);
+    void addProxy(RemoteAudioSessionProxy&, std::optional<audit_token_t>);
     void removeProxy(RemoteAudioSessionProxy&);
 
     void updateCategory();

Modified: trunk/Source/WebKit/Scripts/process-entitlements.sh (283393 => 283394)


--- trunk/Source/WebKit/Scripts/process-entitlements.sh	2021-10-01 20:25:48 UTC (rev 283393)
+++ trunk/Source/WebKit/Scripts/process-entitlements.sh	2021-10-01 20:32:42 UTC (rev 283394)
@@ -182,7 +182,7 @@
         plistbuddy Add :com.apple.private.pac.exception bool YES
         plistbuddy Add :com.apple.private.security.message-filter bool YES
         plistbuddy Add :com.apple.UIKit.view-service-wants-custom-idiom-and-scale bool YES
-        plistbuddy add :com.apple.QuartzCore.webkit-limited-types bool YES
+        plistbuddy Add :com.apple.QuartzCore.webkit-limited-types bool YES
     fi
 
     if [[ "${WK_USE_RESTRICTED_ENTITLEMENTS}" == YES ]]
@@ -206,7 +206,7 @@
     plistbuddy Add :com.apple.runningboard.assertions.webkit bool YES
     plistbuddy Add :com.apple.QuartzCore.webkit-end-points bool YES
     plistbuddy Add :com.apple.private.memory.ownership_transfer bool YES
-    plistbuddy add :com.apple.QuartzCore.webkit-limited-types bool YES
+    plistbuddy Add :com.apple.QuartzCore.webkit-limited-types bool YES
 
     if [[ "${WK_USE_RESTRICTED_ENTITLEMENTS}" == YES ]]
     then
@@ -320,6 +320,8 @@
     plistbuddy Add :com.apple.systemstatus.activityattribution bool YES
     plistbuddy Add :com.apple.security.exception.mach-lookup.global-name array
     plistbuddy Add :com.apple.security.exception.mach-lookup.global-name:0 string com.apple.systemstatus.activityattribution
+    plistbuddy Add :com.apple.private.attribution.explicitly-assumed-identities array
+    plistbuddy Add :com.apple.private.attribution.explicitly-assumed-identities:0:type string wildcard
 }
 
 function ios_family_process_webauthn_entitlements()
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to