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()