Diff
Modified: trunk/Source/WebCore/ChangeLog (284219 => 284220)
--- trunk/Source/WebCore/ChangeLog 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebCore/ChangeLog 2021-10-15 00:39:52 UTC (rev 284220)
@@ -1,3 +1,19 @@
+2021-10-14 Kate Cheney <[email protected]>
+
+ Adopt attribution AVCaptureSession SPI for GPU process
+ https://bugs.webkit.org/show_bug.cgi?id=231621
+ <rdar://problem/80748535>
+
+ Reviewed by Eric Carlson.
+
+ No new tests. Manually tested by checking App Privacy Report data.
+
+ * SourcesCocoa.txt:
+ * WebCore.xcodeproj/project.pbxproj:
+ * platform/mediastream/RealtimeMediaSourceCenter.h:
+ * platform/mediastream/mac/AVVideoCaptureSource.mm:
+ (WebCore::AVVideoCaptureSource::setupSession):
+
2021-10-14 Alex Christensen <[email protected]>
Reduce memory use of AdAttributionDaemon
Modified: trunk/Source/WebCore/PAL/ChangeLog (284219 => 284220)
--- trunk/Source/WebCore/PAL/ChangeLog 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebCore/PAL/ChangeLog 2021-10-15 00:39:52 UTC (rev 284220)
@@ -1,3 +1,15 @@
+2021-10-14 Kate Cheney <[email protected]>
+
+ Adopt attribution AVCaptureSession SPI for GPU process
+ https://bugs.webkit.org/show_bug.cgi?id=231621
+ <rdar://problem/80748535>
+
+ Reviewed by Eric Carlson.
+
+ * PAL.xcodeproj/project.pbxproj:
+ * pal/spi/cocoa/AVFoundationSPI.h:
+ * pal/spi/cocoa/TCCSPI.h: Renamed from Source/WebKit/Platform/spi/ios/TCCSPI.h.
+
2021-10-14 Myles C. Maxfield <[email protected]>
All the SDKVariant.xcconfig files should match
Modified: trunk/Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj (284219 => 284220)
--- trunk/Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj 2021-10-15 00:39:52 UTC (rev 284220)
@@ -138,6 +138,7 @@
4450FCA021F5F602004DFA56 /* QuickLookSoftLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 4450FC9E21F5F602004DFA56 /* QuickLookSoftLink.h */; };
44E1A8AF21FA54E600C3048E /* LookupSoftLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 44E1A8AD21FA54DA00C3048E /* LookupSoftLink.h */; };
44E1A8B021FA54EB00C3048E /* LookupSoftLink.mm in Sources */ = {isa = PBXBuildFile; fileRef = 44E1A8AE21FA54DA00C3048E /* LookupSoftLink.mm */; };
+ 4996C0F32717644C002C125D /* TCCSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 4996C0F22717642B002C125D /* TCCSPI.h */; settings = {ATTRIBUTES = (Private, ); }; };
517E03F924B7C0070054895A /* IOKitSPIMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 517E03F824B7C0060054895A /* IOKitSPIMac.h */; };
570AB8F120AE2E8D00B8BE87 /* SecKeyProxySPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 570AB8F020AE2E8D00B8BE87 /* SecKeyProxySPI.h */; };
570AB8F920AF6E3D00B8BE87 /* NSXPCConnectionSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 570AB8F820AF6E3D00B8BE87 /* NSXPCConnectionSPI.h */; };
@@ -361,6 +362,7 @@
4450FC9E21F5F602004DFA56 /* QuickLookSoftLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QuickLookSoftLink.h; sourceTree = "<group>"; };
44E1A8AD21FA54DA00C3048E /* LookupSoftLink.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LookupSoftLink.h; sourceTree = "<group>"; };
44E1A8AE21FA54DA00C3048E /* LookupSoftLink.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = LookupSoftLink.mm; sourceTree = "<group>"; };
+ 4996C0F22717642B002C125D /* TCCSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TCCSPI.h; sourceTree = "<group>"; };
517E03F824B7C0060054895A /* IOKitSPIMac.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IOKitSPIMac.h; sourceTree = "<group>"; };
570AB8F020AE2E8D00B8BE87 /* SecKeyProxySPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SecKeyProxySPI.h; sourceTree = "<group>"; };
570AB8F820AF6E3D00B8BE87 /* NSXPCConnectionSPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NSXPCConnectionSPI.h; sourceTree = "<group>"; };
@@ -572,6 +574,7 @@
570AB8F020AE2E8D00B8BE87 /* SecKeyProxySPI.h */,
0C2DA13C1F3BEB4900DBC317 /* ServersSPI.h */,
93B38EC125821D2200198E63 /* SpeechSPI.h */,
+ 4996C0F22717642B002C125D /* TCCSPI.h */,
0C2DA12B1F3BEB4900DBC317 /* URLFormattingSPI.h */,
F46B8C4E26740AD8007A6554 /* VisionKitCoreSPI.h */,
0C2DA13D1F3BEB4900DBC317 /* WebFilterEvaluatorSPI.h */,
@@ -1009,6 +1012,7 @@
A3AB6E581F3D1DDB009C14B1 /* SystemSleepListener.h in Headers */,
A3AB6E641F3D217F009C14B1 /* SystemSleepListenerMac.h in Headers */,
079D1D9726950DD700883577 /* SystemStatusSoftLink.h in Headers */,
+ 4996C0F32717644C002C125D /* TCCSPI.h in Headers */,
0C7785A11F45130F00F4EBB6 /* TelephonyUtilitiesSPI.h in Headers */,
2E1342CC215AA10A007199D2 /* UIKitSoftLink.h in Headers */,
0C5AF9221F43A4C7002EAC02 /* UIKitSPI.h in Headers */,
Modified: trunk/Source/WebCore/PAL/pal/spi/cocoa/AVFoundationSPI.h (284219 => 284220)
--- trunk/Source/WebCore/PAL/pal/spi/cocoa/AVFoundationSPI.h 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebCore/PAL/pal/spi/cocoa/AVFoundationSPI.h 2021-10-15 00:39:52 UTC (rev 284220)
@@ -31,9 +31,12 @@
#import <AVFoundation/AVContentKeySession.h>
#endif
+#import <pal/spi/cocoa/TCCSPI.h>
+
#if USE(APPLE_INTERNAL_SDK)
#import <AVFoundation/AVAssetCache_Private.h>
+#import <AVFoundation/AVCaptureSession_Private.h>
#import <AVFoundation/AVOutputContext_Private.h>
#import <AVFoundation/AVOutputDevice.h>
#import <AVFoundation/AVPlayer_Private.h>
@@ -54,6 +57,7 @@
#else
+#import <AVFoundation/AVCaptureSession.h>
#import <AVFoundation/AVPlayer.h>
#import <AVFoundation/AVPlayerItem.h>
@@ -434,4 +438,14 @@
@end
#endif // USE(APPLE_INTERNAL_SDK)
+
+NS_ASSUME_NONNULL_BEGIN
+
+// FIXME: Move this inside the #if USE(APPLE_INTERNAL_SDK) once rdar://81297776 has been in the build for awhile.
+@interface AVCaptureSession (AVCaptureSessionPrivate)
+- (instancetype)initWithAssumedIdentity:(tcc_identity_t)tccIdentity SPI_AVAILABLE(ios(15.0)) API_UNAVAILABLE(macos, macCatalyst, watchos, tvos);
+@end
+
+NS_ASSUME_NONNULL_END
+
#endif // HAVE(AVSAMPLEBUFFERVIDEOOUTPUT)
Copied: trunk/Source/WebCore/PAL/pal/spi/cocoa/TCCSPI.h (from rev 284218, trunk/Source/WebKit/Platform/spi/ios/TCCSPI.h) (0 => 284220)
--- trunk/Source/WebCore/PAL/pal/spi/cocoa/TCCSPI.h (rev 0)
+++ trunk/Source/WebCore/PAL/pal/spi/cocoa/TCCSPI.h 2021-10-15 00:39:52 UTC (rev 284220)
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2014-2021 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if USE(APPLE_INTERNAL_SDK)
+
+#import <TCC/TCC.h>
+
+#else
+
+typedef enum {
+ kTCCAccessPreflightGranted,
+ kTCCAccessPreflightDenied,
+} TCCAccessPreflightResult;
+
+typedef uint64_t tcc_identity_type_t;
+typedef struct { } tcc_identity_t;
+
+#endif
Modified: trunk/Source/WebCore/SourcesCocoa.txt (284219 => 284220)
--- trunk/Source/WebCore/SourcesCocoa.txt 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebCore/SourcesCocoa.txt 2021-10-15 00:39:52 UTC (rev 284220)
@@ -527,7 +527,7 @@
platform/mediastream/ios/CoreAudioCaptureSourceIOS.mm
platform/mediastream/libwebrtc/LibWebRTCProviderCocoa.cpp
platform/mediastream/mac/AVCaptureDeviceManager.mm
-platform/mediastream/mac/AVVideoCaptureSource.mm
+platform/mediastream/mac/AVVideoCaptureSource.mm @no-unify
platform/mediastream/mac/BaseAudioSharedUnit.cpp
platform/mediastream/mac/CGDisplayStreamCaptureSource.cpp
platform/mediastream/mac/CGDisplayStreamScreenCaptureSource.mm
Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (284219 => 284220)
--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2021-10-15 00:39:52 UTC (rev 284220)
@@ -1388,6 +1388,7 @@
494BD7950F55C8EE00747828 /* WebKitPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 494BD7930F55C8EE00747828 /* WebKitPoint.h */; };
494BD79E0F55C94C00747828 /* JSWebKitPoint.h in Headers */ = {isa = PBXBuildFile; fileRef = 494BD79C0F55C94C00747828 /* JSWebKitPoint.h */; };
4969B0F313D0B33F00DF3521 /* HitTestingTransformState.h in Headers */ = {isa = PBXBuildFile; fileRef = 4969B0F113D0B33F00DF3521 /* HitTestingTransformState.h */; };
+ 4996C0F627177488002C125D /* AVVideoCaptureSource.mm in Sources */ = {isa = PBXBuildFile; fileRef = 070363DF181A1CDC00C074A5 /* AVVideoCaptureSource.mm */; };
4998AEC613F9D0EA0090B1AA /* RequestAnimationFrameCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 4998AEC413F9D0EA0090B1AA /* RequestAnimationFrameCallback.h */; };
4998AECE13F9D6C90090B1AA /* JSRequestAnimationFrameCallback.h in Headers */ = {isa = PBXBuildFile; fileRef = 4998AECC13F9D6C90090B1AA /* JSRequestAnimationFrameCallback.h */; };
4998AED213FB224D0090B1AA /* ScriptedAnimationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 4998AED013FB224D0090B1AA /* ScriptedAnimationController.h */; };
@@ -36842,6 +36843,7 @@
0FCA293526FC3917006B4AEB /* AVAudioSessionCaptureDeviceManager.mm in Sources */,
0738E5EC2499839000DA101C /* AVOutputDeviceMenuControllerTargetPicker.mm in Sources */,
CD336F6117F9F64700DDDCD0 /* AVTrackPrivateAVFObjCImpl.mm in Sources */,
+ 4996C0F627177488002C125D /* AVVideoCaptureSource.mm in Sources */,
CDF4B7151E00B7E500E235A2 /* CDM.cpp in Sources */,
CDB7045B1F7465A1003923DF /* CDMFairPlayStreaming.cpp in Sources */,
CDC224281F756966005F077B /* CDMInstanceFairPlayStreamingAVFObjC.mm in Sources */,
Modified: trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h (284219 => 284220)
--- trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebCore/platform/mediastream/RealtimeMediaSourceCenter.h 2021-10-15 00:39:52 UTC (rev 284220)
@@ -45,6 +45,10 @@
#include <wtf/RunLoop.h>
#include <wtf/text/WTFString.h>
+#if PLATFORM(COCOA)
+#include <pal/spi/cocoa/TCCSPI.h>
+#endif
+
namespace WebCore {
class CaptureDevice;
@@ -100,6 +104,11 @@
WEBCORE_EXPORT static bool shouldInterruptAudioOnPageVisibilityChange();
+#if ENABLE(APP_PRIVACY_REPORT)
+ void setIdentity(std::optional<tcc_identity_t> identity) { m_identity = identity; }
+ std::optional<tcc_identity_t> identity() const { return m_identity; }
+#endif
+
private:
RealtimeMediaSourceCenter();
friend class NeverDestroyed<RealtimeMediaSourceCenter>;
@@ -130,6 +139,10 @@
DisplayCaptureFactory* m_displayCaptureFactoryOverride { nullptr };
bool m_shouldInterruptAudioOnPageVisibilityChange { false };
+
+#if ENABLE(APP_PRIVACY_REPORT)
+ std::optional<tcc_identity_t> m_identity;
+#endif
};
} // namespace WebCore
Modified: trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm (284219 => 284220)
--- trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebCore/platform/mediastream/mac/AVVideoCaptureSource.mm 2021-10-15 00:39:52 UTC (rev 284220)
@@ -45,6 +45,7 @@
#import <AVFoundation/AVCaptureSession.h>
#import <AVFoundation/AVError.h>
#import <objc/runtime.h>
+#import <pal/spi/cocoa/AVFoundationSPI.h>
#import "CoreVideoSoftLink.h"
#import <pal/cocoa/AVFoundationSoftLink.h>
@@ -422,7 +423,15 @@
ALWAYS_LOG_IF(loggerPtr(), LOGIDENTIFIER);
+#if ENABLE(APP_PRIVACY_REPORT)
+ auto identity = RealtimeMediaSourceCenter::singleton().identity();
+ if (identity && [PAL::allocAVCaptureSessionInstance() respondsToSelector:@selector(initWithAssumedIdentity:)])
+ m_session = adoptNS([PAL::allocAVCaptureSessionInstance() initWithAssumedIdentity:*identity]);
+ else
+ m_session = adoptNS([PAL::allocAVCaptureSessionInstance() init]);
+#else
m_session = adoptNS([PAL::allocAVCaptureSessionInstance() init]);
+#endif
#if PLATFORM(IOS_FAMILY)
PAL::AVCaptureSessionSetAuthorizedToUseCameraInMultipleForegroundAppLayout(m_session.get());
#endif
Modified: trunk/Source/WebKit/ChangeLog (284219 => 284220)
--- trunk/Source/WebKit/ChangeLog 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebKit/ChangeLog 2021-10-15 00:39:52 UTC (rev 284220)
@@ -1,3 +1,25 @@
+2021-10-14 Kate Cheney <[email protected]>
+
+ Adopt attribution AVCaptureSession SPI for GPU process
+ https://bugs.webkit.org/show_bug.cgi?id=231621
+ <rdar://problem/80748535>
+
+ Reviewed by Eric Carlson.
+
+ Add SPI to attribute camera access to host app in the GPU process.
+
+ * GPUProcess/GPUConnectionToWebProcess.cpp:
+ * GPUProcess/GPUConnectionToWebProcess.h:
+ * GPUProcess/cocoa/GPUConnectionToWebProcessCocoa.mm:
+ (WebKit::GPUConnectionToWebProcess::setTCCIdentity):
+ * Shared/Cocoa/TCCSoftLink.h:
+ * Shared/Cocoa/TCCSoftLink.mm:
+ * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp:
+ (WebKit::UserMediaCaptureManagerProxy::startProducingData):
+ * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h:
+ (WebKit::UserMediaCaptureManagerProxy::ConnectionProxy::setTCCIdentity):
+ * WebKit.xcodeproj/project.pbxproj:
+
2021-10-14 John Pascoe <[email protected]>
Update deleteLocalAuthenticatorCredentialWithID and setUsernameForLocalCredentialWithID according to internal needs
Modified: trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp (284219 => 284220)
--- trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp 2021-10-15 00:39:52 UTC (rev 284220)
@@ -188,6 +188,13 @@
return m_process.setCaptureAttributionString();
}
+#if ENABLE(APP_PRIVACY_REPORT)
+ void setTCCIdentity() final
+ {
+ m_process.setTCCIdentity();
+ }
+#endif
+
#if HAVE(IOSURFACE_SET_OWNERSHIP_IDENTITY)
std::optional<task_id_token_t> webProcessIdentityToken() const final
{
Modified: trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h (284219 => 284220)
--- trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h 2021-10-15 00:39:52 UTC (rev 284220)
@@ -53,6 +53,10 @@
#include <CoreGraphics/CGDisplayConfiguration.h>
#endif
+#if PLATFORM(COCOA)
+#include <pal/spi/cocoa/TCCSPI.h>
+#endif
+
namespace WebCore {
class SecurityOrigin;
struct SecurityOriginData;
@@ -123,6 +127,11 @@
bool allowsVideoCapture() const { return m_allowsVideoCapture; }
bool allowsDisplayCapture() const { return m_allowsDisplayCapture; }
#endif
+
+#if ENABLE(APP_PRIVACY_REPORT)
+ void setTCCIdentity();
+#endif
+
#if PLATFORM(MAC)
void displayConfigurationChanged(CGDirectDisplayID, CGDisplayChangeSummaryFlags);
#endif
Modified: trunk/Source/WebKit/GPUProcess/cocoa/GPUConnectionToWebProcessCocoa.mm (284219 => 284220)
--- trunk/Source/WebKit/GPUProcess/cocoa/GPUConnectionToWebProcessCocoa.mm 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebKit/GPUProcess/cocoa/GPUConnectionToWebProcessCocoa.mm 2021-10-15 00:39:52 UTC (rev 284220)
@@ -31,8 +31,12 @@
#import "MediaPermissionUtilities.h"
#import "SystemStatusSPI.h"
#import <WebCore/LocalizedStrings.h>
+#import <WebCore/RealtimeMediaSourceCenter.h>
#import <WebCore/RegistrableDomain.h>
#import <WebCore/SecurityOrigin.h>
+#import <pal/spi/cocoa/LaunchServicesSPI.h>
+
+#import "TCCSoftLink.h"
#import <pal/ios/SystemStatusSoftLink.h>
namespace WebKit {
@@ -61,6 +65,26 @@
}
#endif // ENABLE(MEDIA_STREAM)
+#if ENABLE(APP_PRIVACY_REPORT)
+void GPUConnectionToWebProcess::setTCCIdentity()
+{
+ auto auditToken = gpuProcess().parentProcessConnection()->getAuditToken();
+ if (!auditToken)
+ return;
+
+ NSError *error = nil;
+ auto bundleProxy = [LSBundleProxy bundleProxyWithAuditToken:*auditToken error:&error];
+ if (error)
+ return;
+
+ tcc_identity_t identity = nil;
+ identity = tcc_identity_create(TCC_IDENTITY_CODE_BUNDLE_ID, [bundleProxy.bundleIdentifier UTF8String]);
+ if (!identity)
+ return;
+
+ WebCore::RealtimeMediaSourceCenter::singleton().setIdentity(identity);
+}
+#endif
} // namespace WebKit
#endif // ENABLE(GPU_PROCESS)
Deleted: trunk/Source/WebKit/Platform/spi/ios/TCCSPI.h (284219 => 284220)
--- trunk/Source/WebKit/Platform/spi/ios/TCCSPI.h 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebKit/Platform/spi/ios/TCCSPI.h 2021-10-15 00:39:52 UTC (rev 284220)
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2014-2020 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#if USE(APPLE_INTERNAL_SDK)
-
-#import <TCC/TCC.h>
-
-#else
-
-typedef enum {
- kTCCAccessPreflightGranted,
- kTCCAccessPreflightDenied,
-} TCCAccessPreflightResult;
-
-#endif
Modified: trunk/Source/WebKit/Shared/Cocoa/TCCSoftLink.h (284219 => 284220)
--- trunk/Source/WebKit/Shared/Cocoa/TCCSoftLink.h 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebKit/Shared/Cocoa/TCCSoftLink.h 2021-10-15 00:39:52 UTC (rev 284220)
@@ -25,7 +25,7 @@
#pragma once
-#import "TCCSPI.h"
+#import <pal/spi/cocoa/TCCSPI.h>
#import <wtf/SoftLinking.h>
@@ -43,3 +43,5 @@
#define TCCAccessPreflight WebKit::softLink_TCC_TCCAccessPreflight
SOFT_LINK_FUNCTION_FOR_HEADER(WebKit, TCC, TCCAccessPreflightWithAuditToken, TCCAccessPreflightResult, (CFStringRef service, audit_token_t token, CFDictionaryRef options), (service, token, options))
#define TCCAccessPreflightWithAuditToken WebKit::softLink_TCC_TCCAccessPreflightWithAuditToken
+SOFT_LINK_FUNCTION_FOR_HEADER(WebKit, TCC, tcc_identity_create, tcc_identity_t, (tcc_identity_type_t type, const char * identifier), (type, identifier));
+#define tcc_identity_create WebKit::softLink_TCC_tcc_identity_create
Modified: trunk/Source/WebKit/Shared/Cocoa/TCCSoftLink.mm (284219 => 284220)
--- trunk/Source/WebKit/Shared/Cocoa/TCCSoftLink.mm 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebKit/Shared/Cocoa/TCCSoftLink.mm 2021-10-15 00:39:52 UTC (rev 284220)
@@ -25,7 +25,7 @@
#import "config.h"
-#import "TCCSPI.h"
+#import <pal/spi/cocoa/TCCSPI.h>
#import <wtf/SoftLinking.h>
@@ -40,3 +40,4 @@
SOFT_LINK_FUNCTION_FOR_SOURCE(WebKit, TCC, TCCAccessCheckAuditToken, Boolean, (CFStringRef service, audit_token_t auditToken, CFDictionaryRef options), (service, auditToken, options))
SOFT_LINK_FUNCTION_FOR_SOURCE(WebKit, TCC, TCCAccessPreflight, TCCAccessPreflightResult, (CFStringRef service, CFDictionaryRef options), (service, options))
SOFT_LINK_FUNCTION_FOR_SOURCE(WebKit, TCC, TCCAccessPreflightWithAuditToken, TCCAccessPreflightResult, (CFStringRef service, audit_token_t token, CFDictionaryRef options), (service, token, options))
+SOFT_LINK_FUNCTION_FOR_SOURCE(WebKit, TCC, tcc_identity_create, tcc_identity_t, (tcc_identity_type_t type, const char * identifier), (type, identifier));
Modified: trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp (284219 => 284220)
--- trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp 2021-10-15 00:39:52 UTC (rev 284220)
@@ -347,6 +347,9 @@
return;
}
+#if ENABLE(APP_PRIVACY_REPORT)
+ m_connectionProxy->setTCCIdentity();
+#endif
proxy->start();
}
Modified: trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.h (284219 => 284220)
--- trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.h 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.h 2021-10-15 00:39:52 UTC (rev 284220)
@@ -34,6 +34,7 @@
#include <WebCore/OrientationNotifier.h>
#include <WebCore/RealtimeMediaSource.h>
#include <WebCore/RealtimeMediaSourceIdentifier.h>
+#include <pal/spi/cocoa/TCCSPI.h>
#include <wtf/UniqueRef.h>
namespace WebCore {
@@ -61,6 +62,9 @@
#if HAVE(IOSURFACE_SET_OWNERSHIP_IDENTITY)
virtual std::optional<task_id_token_t> webProcessIdentityToken() const { return { }; };
#endif
+#if ENABLE(APP_PRIVACY_REPORT)
+ virtual void setTCCIdentity() { }
+#endif
};
explicit UserMediaCaptureManagerProxy(UniqueRef<ConnectionProxy>&&);
~UserMediaCaptureManagerProxy();
Modified: trunk/Source/WebKit/UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm (284219 => 284220)
--- trunk/Source/WebKit/UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebKit/UIProcess/Cocoa/UserMediaPermissionRequestManagerProxy.mm 2021-10-15 00:39:52 UTC (rev 284220)
@@ -28,10 +28,10 @@
#import "MediaPermissionUtilities.h"
#import "SandboxUtilities.h"
-#import "TCCSPI.h"
#import "WebPageProxy.h"
#import "WebPreferences.h"
#import <WebCore/RuntimeApplicationChecks.h>
+#import <pal/spi/cocoa/TCCSPI.h>
#import <wtf/BlockPtr.h>
#import <wtf/cocoa/RuntimeApplicationChecksCocoa.h>
Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (284219 => 284220)
--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2021-10-15 00:39:52 UTC (rev 284220)
@@ -1992,7 +1992,6 @@
CDF1B915266F396A0007EC10 /* WKGroupSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDF1B90D266F395E0007EC10 /* WKGroupSession.swift */; };
CDF1B91B267025550007EC10 /* WebKitSwiftSoftLink.mm in Sources */ = {isa = PBXBuildFile; fileRef = CDF1B91A267021D60007EC10 /* WebKitSwiftSoftLink.mm */; };
CE11AD521CBC482F00681EE5 /* CodeSigning.h in Headers */ = {isa = PBXBuildFile; fileRef = CE11AD511CBC482F00681EE5 /* CodeSigning.h */; };
- CE1A0BD61A48E6C60054EF74 /* TCCSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = CE1A0BD01A48E6C60054EF74 /* TCCSPI.h */; };
CE1A0BD71A48E6C60054EF74 /* TextInputSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = CE1A0BD11A48E6C60054EF74 /* TextInputSPI.h */; };
CE21215F240EE571006ED443 /* WKTextPlaceholder.h in Headers */ = {isa = PBXBuildFile; fileRef = CE21215D240EE571006ED443 /* WKTextPlaceholder.h */; };
CE212160240EE571006ED443 /* WKTextPlaceholder.mm in Sources */ = {isa = PBXBuildFile; fileRef = CE21215E240EE571006ED443 /* WKTextPlaceholder.mm */; };
@@ -6026,7 +6025,6 @@
CDF1B91A267021D60007EC10 /* WebKitSwiftSoftLink.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WebKitSwiftSoftLink.mm; sourceTree = "<group>"; };
CE11AD4F1CBC47F800681EE5 /* CodeSigning.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CodeSigning.mm; sourceTree = "<group>"; };
CE11AD511CBC482F00681EE5 /* CodeSigning.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CodeSigning.h; sourceTree = "<group>"; };
- CE1A0BD01A48E6C60054EF74 /* TCCSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TCCSPI.h; sourceTree = "<group>"; };
CE1A0BD11A48E6C60054EF74 /* TextInputSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextInputSPI.h; sourceTree = "<group>"; };
CE21215D240EE571006ED443 /* WKTextPlaceholder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WKTextPlaceholder.h; path = ios/WKTextPlaceholder.h; sourceTree = "<group>"; };
CE21215E240EE571006ED443 /* WKTextPlaceholder.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = WKTextPlaceholder.mm; path = ios/WKTextPlaceholder.mm; sourceTree = "<group>"; };
@@ -11943,7 +11941,6 @@
2D279E1826955768004B3EEB /* PrototypeToolsSPI.h */,
46F38E8B2416E66D0059375A /* RunningBoardServicesSPI.h */,
079D1D9926960CD300883577 /* SystemStatusSPI.h */,
- CE1A0BD01A48E6C60054EF74 /* TCCSPI.h */,
CE1A0BD11A48E6C60054EF74 /* TextInputSPI.h */,
CEE4AE2A1A5DCF430002F49B /* UIKitSPI.h */,
);
@@ -12818,7 +12815,6 @@
079D1D9A26960CD300883577 /* SystemStatusSPI.h in Headers */,
F4D985CB2691096600BBCCBE /* TapHandlingResult.h in Headers */,
44C51844266BE8C4006DD522 /* TCCSoftLink.h in Headers */,
- CE1A0BD61A48E6C60054EF74 /* TCCSPI.h in Headers */,
1AA417CB12C00CCA002BE67B /* TextChecker.h in Headers */,
53CFBBC82224D1B500266546 /* TextCheckerCompletion.h in Headers */,
1A5E4DA412D3BD3D0099A2BB /* TextCheckerState.h in Headers */,
Modified: trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp (284219 => 284220)
--- trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp 2021-10-15 00:24:09 UTC (rev 284219)
+++ trunk/Source/WebKit/WebProcess/cocoa/UserMediaCaptureManager.cpp 2021-10-15 00:39:52 UTC (rev 284220)
@@ -71,6 +71,7 @@
void UserMediaCaptureManager::setupCaptureProcesses(bool shouldCaptureAudioInUIProcess, bool shouldCaptureAudioInGPUProcess, bool shouldCaptureVideoInUIProcess, bool shouldCaptureVideoInGPUProcess, bool shouldCaptureDisplayInUIProcess)
{
+ // FIXME(rdar://84278146): Adopt AVCaptureSession attribution API for camera access in the web process if shouldCaptureVideoInGPUProcess is false.
MockRealtimeMediaSourceCenter::singleton().setMockAudioCaptureEnabled(!shouldCaptureAudioInUIProcess && !shouldCaptureAudioInGPUProcess);
MockRealtimeMediaSourceCenter::singleton().setMockVideoCaptureEnabled(!shouldCaptureVideoInUIProcess && !shouldCaptureVideoInGPUProcess);
MockRealtimeMediaSourceCenter::singleton().setMockDisplayCaptureEnabled(!shouldCaptureDisplayInUIProcess);