Title: [285275] branches/safari-612-branch/Source
Revision
285275
Author
[email protected]
Date
2021-11-04 12:38:52 -0700 (Thu, 04 Nov 2021)

Log Message

Cherry-pick r283394. rdar://problem/83732537

    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:

    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@283394 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Modified Paths

Diff

Modified: branches/safari-612-branch/Source/WebCore/ChangeLog (285274 => 285275)


--- branches/safari-612-branch/Source/WebCore/ChangeLog	2021-11-04 19:38:47 UTC (rev 285274)
+++ branches/safari-612-branch/Source/WebCore/ChangeLog	2021-11-04 19:38:52 UTC (rev 285275)
@@ -1,3 +1,56 @@
+2021-11-04  Russell Epstein  <[email protected]>
+
+        Cherry-pick r283394. rdar://problem/83732537
+
+    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:
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@283394 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-10-01  Kate Cheney  <[email protected]>
+
+            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-11-02  Russell Epstein  <[email protected]>
 
         Cherry-pick r283732. rdar://problem/84349027

Modified: branches/safari-612-branch/Source/WebCore/PAL/ChangeLog (285274 => 285275)


--- branches/safari-612-branch/Source/WebCore/PAL/ChangeLog	2021-11-04 19:38:47 UTC (rev 285274)
+++ branches/safari-612-branch/Source/WebCore/PAL/ChangeLog	2021-11-04 19:38:52 UTC (rev 285275)
@@ -1,5 +1,53 @@
 2021-11-04  Russell Epstein  <[email protected]>
 
+        Cherry-pick r283394. rdar://problem/83732537
+
+    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:
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@283394 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-10-01  Kate Cheney  <[email protected]>
+
+            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-11-04  Russell Epstein  <[email protected]>
+
         Cherry-pick r282313. rdar://problem/82987695
 
     CFNotificationCenterAddObserver() should use weak observers

Modified: branches/safari-612-branch/Source/WebCore/PAL/pal/spi/cocoa/LaunchServicesSPI.h (285274 => 285275)


--- branches/safari-612-branch/Source/WebCore/PAL/pal/spi/cocoa/LaunchServicesSPI.h	2021-11-04 19:38:47 UTC (rev 285274)
+++ branches/safari-612-branch/Source/WebCore/PAL/pal/spi/cocoa/LaunchServicesSPI.h	2021-11-04 19:38:52 UTC (rev 285275)
@@ -44,6 +44,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: branches/safari-612-branch/Source/WebCore/platform/audio/AudioSession.h (285274 => 285275)


--- branches/safari-612-branch/Source/WebCore/platform/audio/AudioSession.h	2021-11-04 19:38:47 UTC (rev 285274)
+++ branches/safari-612-branch/Source/WebCore/platform/audio/AudioSession.h	2021-11-04 19:38:52 UTC (rev 285275)
@@ -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: branches/safari-612-branch/Source/WebCore/platform/audio/ios/AudioSessionIOS.h (285274 => 285275)


--- branches/safari-612-branch/Source/WebCore/platform/audio/ios/AudioSessionIOS.h	2021-11-04 19:38:47 UTC (rev 285274)
+++ branches/safari-612-branch/Source/WebCore/platform/audio/ios/AudioSessionIOS.h	2021-11-04 19:38:52 UTC (rev 285275)
@@ -42,6 +42,8 @@
     AudioSessionIOS();
     virtual ~AudioSessionIOS();
 
+    void setHostProcessAttribution(audit_token_t) final;
+
 private:
     // AudioSession
     CategoryType category() const final;

Modified: branches/safari-612-branch/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm (285274 => 285275)


--- branches/safari-612-branch/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm	2021-11-04 19:38:47 UTC (rev 285274)
+++ branches/safari-612-branch/Source/WebCore/platform/audio/ios/AudioSessionIOS.mm	2021-11-04 19:38:52 UTC (rev 285275)
@@ -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: branches/safari-612-branch/Source/WebKit/ChangeLog (285274 => 285275)


--- branches/safari-612-branch/Source/WebKit/ChangeLog	2021-11-04 19:38:47 UTC (rev 285274)
+++ branches/safari-612-branch/Source/WebKit/ChangeLog	2021-11-04 19:38:52 UTC (rev 285275)
@@ -1,5 +1,61 @@
 2021-11-04  Russell Epstein  <[email protected]>
 
+        Cherry-pick r283394. rdar://problem/83732537
+
+    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:
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@283394 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2021-10-01  Kate Cheney  <[email protected]>
+
+            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-11-04  Russell Epstein  <[email protected]>
+
         Cherry-pick r282632. rdar://problem/83067708
 
     WebKit::WebProcessPool should use a weak observer with CFNotificationCenter

Modified: branches/safari-612-branch/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp (285274 => 285275)


--- branches/safari-612-branch/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp	2021-11-04 19:38:47 UTC (rev 285274)
+++ branches/safari-612-branch/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp	2021-11-04 19:38:52 UTC (rev 285275)
@@ -457,7 +457,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: branches/safari-612-branch/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp (285274 => 285275)


--- branches/safari-612-branch/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp	2021-11-04 19:38:47 UTC (rev 285274)
+++ branches/safari-612-branch/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.cpp	2021-11-04 19:38:52 UTC (rev 285275)
@@ -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: branches/safari-612-branch/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.h (285274 => 285275)


--- branches/safari-612-branch/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.h	2021-11-04 19:38:47 UTC (rev 285274)
+++ branches/safari-612-branch/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxyManager.h	2021-11-04 19:38:52 UTC (rev 285275)
@@ -44,7 +44,7 @@
     RemoteAudioSessionProxyManager();
     ~RemoteAudioSessionProxyManager();
 
-    void addProxy(RemoteAudioSessionProxy&);
+    void addProxy(RemoteAudioSessionProxy&, std::optional<audit_token_t>);
     void removeProxy(RemoteAudioSessionProxy&);
 
     void updateCategory();

Modified: branches/safari-612-branch/Source/WebKit/Scripts/process-entitlements.sh (285274 => 285275)


--- branches/safari-612-branch/Source/WebKit/Scripts/process-entitlements.sh	2021-11-04 19:38:47 UTC (rev 285274)
+++ branches/safari-612-branch/Source/WebKit/Scripts/process-entitlements.sh	2021-11-04 19:38:52 UTC (rev 285275)
@@ -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
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to