Changeset 279912 in webkit
- Timestamp:
- Jul 14, 2021, 11:06:28 AM (4 years ago)
- Location:
- trunk/Source
- Files:
-
- 5 added
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r279906 r279912 1 2021-07-14 Eric Carlson <eric.carlson@apple.com> 2 3 [iOS] Dynamically set capture attribution 4 https://bugs.webkit.org/show_bug.cgi?id=227871 5 rdar://70241665 6 7 Reviewed by Jer Noble. 8 9 No new tests, tested manually. 10 11 * en.lproj/Localizable.strings: 12 1 13 2021-07-14 Said Abou-Hallawa <said@apple.com> 2 14 -
trunk/Source/WebCore/PAL/ChangeLog
r279786 r279912 1 2021-07-14 Eric Carlson <eric.carlson@apple.com> 2 3 [iOS] Dynamically set capture attribution 4 https://bugs.webkit.org/show_bug.cgi?id=227871 5 rdar://70241665 6 7 Reviewed by Jer Noble. 8 9 * PAL.xcodeproj/project.pbxproj: 10 * pal/ios/SystemStatusSoftLink.h: Added. 11 * pal/ios/SystemStatusSoftLink.mm: Added. 12 1 13 2021-07-09 Jer Noble <jer.noble@apple.com> 2 14 -
trunk/Source/WebCore/PAL/PAL.xcodeproj/project.pbxproj
r279491 r279912 26 26 077E87B1226A460200A2AFF0 /* AVFoundationSoftLink.mm in Sources */ = {isa = PBXBuildFile; fileRef = 077E87AF226A460200A2AFF0 /* AVFoundationSoftLink.mm */; }; 27 27 077E87B2226A460300A2AFF0 /* AVFoundationSoftLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 077E87B0226A460200A2AFF0 /* AVFoundationSoftLink.h */; }; 28 079D1D9726950DD700883577 /* SystemStatusSoftLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 079D1D9526950DD700883577 /* SystemStatusSoftLink.h */; }; 29 079D1D9826950DD700883577 /* SystemStatusSoftLink.mm in Sources */ = {isa = PBXBuildFile; fileRef = 079D1D9626950DD700883577 /* SystemStatusSoftLink.mm */; }; 28 30 0C00CFD41F68CE4600AAC26D /* MediaTimeAVFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C00CFD21F68CE4600AAC26D /* MediaTimeAVFoundation.h */; }; 29 31 0C2D9E731EEF5AF600DBC317 /* ExportMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C2D9E721EEF5AF600DBC317 /* ExportMacros.h */; }; … … 237 239 077E87AF226A460200A2AFF0 /* AVFoundationSoftLink.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AVFoundationSoftLink.mm; sourceTree = "<group>"; }; 238 240 077E87B0226A460200A2AFF0 /* AVFoundationSoftLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AVFoundationSoftLink.h; sourceTree = "<group>"; }; 241 079D1D9526950DD700883577 /* SystemStatusSoftLink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SystemStatusSoftLink.h; sourceTree = "<group>"; }; 242 079D1D9626950DD700883577 /* SystemStatusSoftLink.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SystemStatusSoftLink.mm; sourceTree = "<group>"; }; 239 243 0C00CFD11F68CE4600AAC26D /* MediaTimeAVFoundation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaTimeAVFoundation.cpp; sourceTree = "<group>"; }; 240 244 0C00CFD21F68CE4600AAC26D /* MediaTimeAVFoundation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaTimeAVFoundation.h; sourceTree = "<group>"; }; … … 765 769 4450FC9E21F5F602004DFA56 /* QuickLookSoftLink.h */, 766 770 4450FC9D21F5F602004DFA56 /* QuickLookSoftLink.mm */, 771 079D1D9526950DD700883577 /* SystemStatusSoftLink.h */, 772 079D1D9626950DD700883577 /* SystemStatusSoftLink.mm */, 767 773 2E1342CA215AA10A007199D2 /* UIKitSoftLink.h */, 768 774 2E1342CB215AA10A007199D2 /* UIKitSoftLink.mm */, … … 998 1004 A3AB6E581F3D1DDB009C14B1 /* SystemSleepListener.h in Headers */, 999 1005 A3AB6E641F3D217F009C14B1 /* SystemSleepListenerMac.h in Headers */, 1006 079D1D9726950DD700883577 /* SystemStatusSoftLink.h in Headers */, 1000 1007 0C7785A11F45130F00F4EBB6 /* TelephonyUtilitiesSPI.h in Headers */, 1001 1008 2E1342CC215AA10A007199D2 /* UIKitSoftLink.h in Headers */, … … 1135 1142 A3AB6E571F3D1DDB009C14B1 /* SystemSleepListener.cpp in Sources */, 1136 1143 A3AB6E651F3D217F009C14B1 /* SystemSleepListenerMac.mm in Sources */, 1144 079D1D9826950DD700883577 /* SystemStatusSoftLink.mm in Sources */, 1137 1145 2E1342CD215AA10A007199D2 /* UIKitSoftLink.mm in Sources */, 1138 1146 07611DB7243FA5BF00D80704 /* UsageTrackingSoftLink.mm in Sources */, -
trunk/Source/WebCore/en.lproj/Localizable.strings
r279164 r279912 1637 1637 "•" = "•"; 1638 1638 1639 /* The domain and application using the camera and/or microphone. The first argument is domain, the second is the application name (iOS only). */ 1640 "“%@” in “%%@”" = "“%@” in “%%@”"; -
trunk/Source/WebKit/ChangeLog
r279902 r279912 1 2021-07-14 Eric Carlson <eric.carlson@apple.com> 2 3 [iOS] Dynamically set capture attribution 4 https://bugs.webkit.org/show_bug.cgi?id=227871 5 rdar://70241665 6 7 Reviewed by Jer Noble. 8 9 * GPUProcess/GPUConnectionToWebProcess.cpp: 10 (WebKit::GPUConnectionToWebProcess::GPUConnectionToWebProcess): Initialize m_captureOrigin. 11 (WebKit::GPUConnectionToWebProcess::updateCaptureOrigin): Update. 12 (WebKit::GPUConnectionToWebProcess::setCaptureAttributionString const): Non-Cocoa stub. 13 * GPUProcess/GPUConnectionToWebProcess.h: 14 15 * GPUProcess/GPUProcess.cpp: 16 (WebKit::GPUProcess::updateCaptureOrigin): Call same method in WebProcessConnection, 17 if it exists. 18 * GPUProcess/GPUProcess.h: 19 * GPUProcess/GPUProcess.messages.in: 20 21 * GPUProcess/cocoa/GPUConnectionToWebProcessCocoa.mm: Added. 22 (WebKit::GPUConnectionToWebProcess::setCaptureAttributionString): Set the attribution 23 string to "[domain] in [application]". 24 25 * Platform/spi/ios/SystemStatusSPI.h: Added. 26 * Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb: Allow "com.apple.systemstatus.activityattribution" 27 to be looked up. 28 29 * Scripts/process-entitlements.sh: Add the entitlements required to use the 30 SystemStatus SPI. 31 32 * SourcesCocoa.txt: 33 * UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp: 34 (WebKit::UserMediaCaptureManagerProxy::startProducingData): Fail capture 35 if setCaptureAttributionString returns false. 36 * UIProcess/Cocoa/UserMediaCaptureManagerProxy.h: 37 (WebKit::UserMediaCaptureManagerProxy::ConnectionProxy::setCaptureAttributionString): 38 39 * UIProcess/GPU/GPUProcessProxy.cpp: 40 (WebKit::GPUProcessProxy::updateCaptureOrigin): Call gpuProcess.updateCaptureOrigin 41 so the capture origin is correct when capture begins. 42 * UIProcess/GPU/GPUProcessProxy.h: 43 44 * UIProcess/WebPageProxy.cpp: 45 (WebKit::WebPageProxy::didChangeMainDocument): Update the capture origin. 46 (WebKit::WebPageProxy::willStartCapture): Ditto. 47 (WebKit::WebPageProxy::gpuProcessExited): Drive-by - update local variable names 48 to make their purpose clearer. 49 * WebKit.xcodeproj/project.pbxproj: 50 1 51 2021-07-13 Wenson Hsieh <wenson_hsieh@apple.com> 2 52 -
trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.cpp
r279366 r279912 140 140 #endif 141 141 142 #if ENABLE(MEDIA_STREAM) 143 #include <WebCore/SecurityOrigin.h> 144 #endif 145 142 146 namespace WebKit { 143 147 using namespace WebCore; … … 179 183 } 180 184 } 185 186 bool setCaptureAttributionString() final 187 { 188 return m_process.setCaptureAttributionString(); 189 } 181 190 182 191 GPUConnectionToWebProcess& m_process; 183 192 }; 193 184 194 #endif 185 195 … … 204 214 , m_sampleBufferDisplayLayerManager(RemoteSampleBufferDisplayLayerManager::create(*this)) 205 215 #endif 216 #if ENABLE(MEDIA_STREAM) 217 , m_captureOrigin(SecurityOrigin::createUnique()) 218 #endif 206 219 #if ENABLE(ROUTING_ARBITRATION) && HAVE(AVAUDIO_ROUTING_ARBITER) 207 220 , m_routingArbitrator(LocalAudioSessionRoutingArbitrator::create(*this)) … … 821 834 m_allowsDisplayCapture |= allowDisplayCapture; 822 835 } 823 #endif 836 837 void GPUConnectionToWebProcess::updateCaptureOrigin(const WebCore::SecurityOriginData& originData) 838 { 839 m_captureOrigin = originData.securityOrigin(); 840 } 841 842 #if !PLATFORM(COCOA) 843 bool GPUConnectionToWebProcess::setCaptureAttributionString() const 844 { 845 } 846 #endif 847 #endif // ENABLE(MEDIA_STREAM) 824 848 825 849 #if PLATFORM(MAC) -
trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h
r279366 r279912 38 38 #include <WebCore/LibWebRTCEnumTraits.h> 39 39 #include <WebCore/NowPlayingManager.h> 40 #include <WebCore/PageIdentifier.h> 40 41 #include <WebCore/ProcessIdentifier.h> 41 42 #include <pal/SessionID.h> … … 52 53 #include <CoreGraphics/CGDisplayConfiguration.h> 53 54 #endif 55 56 namespace WebCore { 57 class SecurityOrigin; 58 struct SecurityOriginData; 59 } 54 60 55 61 namespace WebKit { … … 112 118 void setOrientationForMediaCapture(uint64_t orientation); 113 119 void updateCaptureAccess(bool allowAudioCapture, bool allowVideoCapture, bool allowDisplayCapture); 120 void updateCaptureOrigin(const WebCore::SecurityOriginData&); 121 bool setCaptureAttributionString(); 114 122 bool allowsAudioCapture() const { return m_allowsAudioCapture; } 115 123 bool allowsVideoCapture() const { return m_allowsVideoCapture; } … … 249 257 #endif 250 258 #if ENABLE(MEDIA_STREAM) 259 Ref<WebCore::SecurityOrigin> m_captureOrigin; 251 260 bool m_allowsAudioCapture { false }; 252 261 bool m_allowsVideoCapture { false }; -
trunk/Source/WebKit/GPUProcess/GPUProcess.cpp
r279366 r279912 313 313 } 314 314 315 void GPUProcess::updateCaptureOrigin(const WebCore::SecurityOriginData& originData, ProcessIdentifier processID) 316 { 317 if (auto* connection = webProcessConnection(processID)) 318 connection->updateCaptureOrigin(originData); 319 } 320 315 321 void GPUProcess::updateSandboxAccess(const Vector<SandboxExtension::Handle>& extensions) 316 322 { -
trunk/Source/WebKit/GPUProcess/GPUProcess.h
r279366 r279912 1 1 /* 2 * Copyright (C) 2019 Apple Inc. All rights reserved.2 * Copyright (C) 2019-2021 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 46 46 class NowPlayingManager; 47 47 struct MockMediaDevice; 48 struct SecurityOriginData; 48 49 } 49 50 … … 125 126 void setOrientationForMediaCapture(uint64_t orientation); 126 127 void updateCaptureAccess(bool allowAudioCapture, bool allowVideoCapture, bool allowDisplayCapture, WebCore::ProcessIdentifier, CompletionHandler<void()>&&); 128 void updateCaptureOrigin(const WebCore::SecurityOriginData&, WebCore::ProcessIdentifier); 127 129 void updateSandboxAccess(const Vector<SandboxExtension::Handle>&); 128 130 void addMockMediaDevice(const WebCore::MockMediaDevice&); … … 130 132 void removeMockMediaDevice(const String& persistentId); 131 133 void resetMockMediaDevices(); 134 bool setCaptureAttributionString(const String&); 132 135 #endif 133 136 #if PLATFORM(MAC) -
trunk/Source/WebKit/GPUProcess/GPUProcess.messages.in
r278913 r279912 42 42 UpdateSandboxAccess(Vector<WebKit::SandboxExtension::Handle> extensions); 43 43 UpdateCaptureAccess(bool allowAudioCapture, bool allowVideoCapture, bool allowDisplayCapture, WebCore::ProcessIdentifier processID) -> () Async 44 UpdateCaptureOrigin(struct WebCore::SecurityOriginData originData, WebCore::ProcessIdentifier processID) 44 45 AddMockMediaDevice(struct WebCore::MockMediaDevice device); 45 46 ClearMockMediaDevices(); -
trunk/Source/WebKit/Resources/SandboxProfiles/ios/com.apple.WebKit.GPU.sb
r279230 r279912 1004 1004 ) 1005 1005 1006 (allow mach-lookup 1007 (global-name "com.apple.systemstatus.activityattribution") 1008 ) 1006 1009 1007 1010 (allow mach-lookup -
trunk/Source/WebKit/Scripts/process-entitlements.sh
r278966 r279912 310 310 plistbuddy Add :seatbelt-profiles array 311 311 plistbuddy Add :seatbelt-profiles:0 string com.apple.WebKit.GPU 312 313 plistbuddy Add :com.apple.systemstatus.activityattribution bool YES 314 plistbuddy Add :com.apple.security.exception.mach-lookup.global-name array 315 plistbuddy Add :com.apple.security.exception.mach-lookup.global-name:0 string com.apple.systemstatus.activityattribution 312 316 } 313 317 -
trunk/Source/WebKit/SourcesCocoa.txt
r279822 r279912 59 59 60 60 GPUProcess/EntryPoint/Cocoa/XPCService/GPUServiceEntryPoint.mm 61 GPUProcess/cocoa/GPUConnectionToWebProcessCocoa.mm 61 62 GPUProcess/graphics/RemoteGraphicsContextGLCocoa.cpp 62 63 GPUProcess/graphics/ScopedRenderingResourcesRequestCocoa.mm @no-unify -
trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.cpp
r279577 r279912 327 327 void UserMediaCaptureManagerProxy::startProducingData(RealtimeMediaSourceIdentifier id) 328 328 { 329 if (auto* proxy = m_proxies.get(id)) 330 proxy->start(); 329 auto* proxy = m_proxies.get(id); 330 if (!proxy) 331 return; 332 333 if (!m_connectionProxy->setCaptureAttributionString()) { 334 RELEASE_LOG_ERROR(WebRTC, "Unable to set capture attribution, failing capture."); 335 return; 336 } 337 338 proxy->start(); 331 339 } 332 340 -
trunk/Source/WebKit/UIProcess/Cocoa/UserMediaCaptureManagerProxy.h
r276148 r279912 58 58 virtual bool willStartCapture(WebCore::CaptureDevice::DeviceType) const = 0; 59 59 virtual Logger& logger() = 0; 60 virtual bool setCaptureAttributionString() { return true; } 60 61 }; 61 62 explicit UserMediaCaptureManagerProxy(UniqueRef<ConnectionProxy>&&); -
trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.cpp
r279796 r279912 281 281 } 282 282 283 void GPUProcessProxy::updateCaptureOrigin(const WebCore::SecurityOriginData& originData, WebCore::ProcessIdentifier processID) 284 { 285 send(Messages::GPUProcess::UpdateCaptureOrigin { originData, processID }, 0); 286 } 283 287 284 288 void GPUProcessProxy::addMockMediaDevice(const WebCore::MockMediaDevice& device) -
trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.h
r279796 r279912 50 50 namespace WebCore { 51 51 struct MockMediaDevice; 52 struct SecurityOriginData; 52 53 } 53 54 … … 77 78 void setOrientationForMediaCapture(uint64_t orientation); 78 79 void updateCaptureAccess(bool allowAudioCapture, bool allowVideoCapture, bool allowDisplayCapture, WebCore::ProcessIdentifier, CompletionHandler<void()>&&); 79 80 void updateCaptureOrigin(const WebCore::SecurityOriginData&, WebCore::ProcessIdentifier); 80 81 void addMockMediaDevice(const WebCore::MockMediaDevice&); 81 82 void clearMockMediaDevices(); -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r279822 r279912 111 111 #include "WebEditCommandProxy.h" 112 112 #include "WebEventConversion.h" 113 #include "WebFrame.h" 113 114 #include "WebFramePolicyListenerProxy.h" 114 115 #include "WebFullScreenManagerProxy.h" … … 137 138 #include "WebPreferences.h" 138 139 #include "WebPreferencesKeys.h" 140 #include "WebProcess.h" 139 141 #include "WebProcessMessages.h" 140 142 #include "WebProcessPool.h" … … 5102 5104 { 5103 5105 #if ENABLE(MEDIA_STREAM) 5104 if (m_userMediaPermissionRequestManager) 5106 if (m_userMediaPermissionRequestManager) { 5105 5107 m_userMediaPermissionRequestManager->resetAccess(frameID); 5108 5109 #if ENABLE(GPU_PROCESS) 5110 if (auto* gpuProcess = m_process->processPool().gpuProcess()) { 5111 if (auto* frame = m_process->webFrame(frameID)) 5112 gpuProcess->updateCaptureOrigin(SecurityOriginData::fromURL(frame->url()), m_process->coreProcessIdentifier()); 5113 } 5114 #endif 5115 } 5116 5106 5117 #else 5107 5118 UNUSED_PARAM(frameID); 5108 5119 #endif 5120 5109 5121 m_isQuotaIncreaseDenied = false; 5110 5122 … … 8419 8431 auto& gpuProcess = process().processPool().ensureGPUProcess(); 8420 8432 gpuProcess.updateCaptureAccess(request.requiresAudioCapture(), request.requiresVideoCapture(), request.requiresDisplayCapture(), m_process->coreProcessIdentifier(), WTFMove(callback)); 8433 gpuProcess.updateCaptureOrigin(request.topLevelDocumentSecurityOrigin().data(), m_process->coreProcessIdentifier()); 8421 8434 #if PLATFORM(IOS_FAMILY) 8422 8435 gpuProcess.setOrientationForMediaCapture(m_deviceOrientation); … … 10603 10616 10604 10617 #if ENABLE(MEDIA_STREAM) 10605 bool shouldAllowAudioCapture = isCapturingAudio() && preferences().captureAudioInGPUProcessEnabled();10606 bool shouldAllowVideoCapture = isCapturingVideo() && preferences().captureVideoInGPUProcessEnabled();10607 bool shouldAllowDisplayCapture = false;10608 if ( shouldAllowAudioCapture || shouldAllowVideoCapture) {10618 bool activeAudioCapture = isCapturingAudio() && preferences().captureAudioInGPUProcessEnabled(); 10619 bool activeVideoCapture = isCapturingVideo() && preferences().captureVideoInGPUProcessEnabled(); 10620 bool activeDisplayCapture = false; 10621 if (activeAudioCapture || activeVideoCapture) { 10609 10622 auto& gpuProcess = process().processPool().ensureGPUProcess(); 10610 gpuProcess.updateCaptureAccess( shouldAllowAudioCapture, shouldAllowVideoCapture, shouldAllowDisplayCapture, m_process->coreProcessIdentifier(), [] { });10623 gpuProcess.updateCaptureAccess(activeAudioCapture, activeVideoCapture, activeDisplayCapture, m_process->coreProcessIdentifier(), [] { }); 10611 10624 } 10612 10625 #endif -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r279860 r279912 125 125 0792314B239CBCB8009598E2 /* RemoteMediaPlayerManagerProxyMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07923145239CBCB7009598E2 /* RemoteMediaPlayerManagerProxyMessageReceiver.cpp */; }; 126 126 0792314C239CBCB8009598E2 /* RemoteMediaPlayerManagerProxyMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 07923146239CBCB7009598E2 /* RemoteMediaPlayerManagerProxyMessages.h */; }; 127 079D1D9A26960CD300883577 /* SystemStatusSPI.h in Headers */ = {isa = PBXBuildFile; fileRef = 079D1D9926960CD300883577 /* SystemStatusSPI.h */; }; 127 128 07A5EBBC1C7BA43E00B9CA69 /* WKFrameHandleRef.h in Headers */ = {isa = PBXBuildFile; fileRef = 07A5EBBA1C7BA43E00B9CA69 /* WKFrameHandleRef.h */; settings = {ATTRIBUTES = (Private, ); }; }; 128 129 07E19EFB23D401F10094FFB4 /* MediaPlayerPrivateRemoteMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 07E19EF823D401F00094FFB4 /* MediaPlayerPrivateRemoteMessageReceiver.cpp */; }; … … 2450 2451 0794B4AE244524B00001B9C4 /* MediaUsageManager.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = MediaUsageManager.cpp; sourceTree = "<group>"; }; 2451 2452 0794B4AF24452A2C0001B9C4 /* MediaUsageManagerCocoa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MediaUsageManagerCocoa.h; sourceTree = "<group>"; }; 2453 079D1D9926960CD300883577 /* SystemStatusSPI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SystemStatusSPI.h; sourceTree = "<group>"; }; 2454 079D1D9C2698DBD000883577 /* cocoa */ = {isa = PBXFileReference; lastKnownFileType = folder; path = cocoa; sourceTree = "<group>"; }; 2452 2455 07A5EBB91C7BA43E00B9CA69 /* WKFrameHandleRef.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKFrameHandleRef.cpp; sourceTree = "<group>"; }; 2453 2456 07A5EBBA1C7BA43E00B9CA69 /* WKFrameHandleRef.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKFrameHandleRef.h; sourceTree = "<group>"; }; … … 7681 7684 isa = PBXGroup; 7682 7685 children = ( 7686 079D1D9C2698DBD000883577 /* cocoa */, 7683 7687 2D9FB20D2375209D0049F936 /* EntryPoint */, 7684 7688 550640A124071A2900AAE045 /* graphics */, … … 11580 11584 2D279E1826955768004B3EEB /* PrototypeToolsSPI.h */, 11581 11585 46F38E8B2416E66D0059375A /* RunningBoardServicesSPI.h */, 11586 079D1D9926960CD300883577 /* SystemStatusSPI.h */, 11582 11587 CE1A0BD01A48E6C60054EF74 /* TCCSPI.h */, 11583 11588 CE1A0BD11A48E6C60054EF74 /* TextInputSPI.h */, … … 12417 12422 4459984222833E8700E61373 /* SyntheticEditingCommandType.h in Headers */, 12418 12423 3157135F2040A9B20084F9CF /* SystemPreviewController.h in Headers */, 12424 079D1D9A26960CD300883577 /* SystemStatusSPI.h in Headers */, 12419 12425 F4D985CB2691096600BBCCBE /* TapHandlingResult.h in Headers */, 12420 12426 44C51844266BE8C4006DD522 /* TCCSoftLink.h in Headers */,
Note:
See TracChangeset
for help on using the changeset viewer.