Skip to content

Commit

Permalink
REGRESSION (272448.703@safari-7618-branch): [iOS] <input type=file> c…
Browse files Browse the repository at this point in the history
…amera capture instantly dismisses

rdar://125046135

Reviewed by Abrar Rahman Protyasha and Wenson Hsieh.

272448.703@safari-7618-branch added logic to dismiss presented pickers, such as
the file upload panel, when the `WKWebView` was removed from the hierarchy. The
behavior is necessary to avoid scenarios where a picker can be displayed over a
site that's unrelated to the one requesting the information.

While that solution is correct for modal presentations, it is incorrect for
fullscreen presentations, which remove views from the hierarchy following
presentation. The camera view controller uses a fullscreen presentation.
Consequently, once it gets presented, the web view is removed from the
hierarchy, and following 272448.703@safari-7618-branch, it is instantly
dismissed.

To fix, reduce the scope of the previous fix to exclude fullscreen presentations.
In this case, there is no need to dismiss presented view controllers, as the
web view content is already hidden.

Note that there is no way to detect whether a view was removed from the hierarchy
due to a fullscreen presentation. Consequently, the solution checks the status
of various presented pickers.

* Source/WebKit/UIProcess/Cocoa/PickerDismissalReason.h:

Introduce `PickerDismissalReason`s to control the dimissal behavior.

In particular, `ViewRemoved` now checks for fullscreen presentations, to avoid
instant dismissal.

* Source/WebKit/UIProcess/Cocoa/WKContactPicker.h:
* Source/WebKit/UIProcess/Cocoa/WKContactPicker.mm:
(-[WKContactPicker dismissIfNeededWithReason:]):
* Source/WebKit/UIProcess/Cocoa/WKShareSheet.h:
* Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm:
(-[WKShareSheet dismissIfNeededWithReason:]):
* Source/WebKit/UIProcess/ios/UIKitUtilities.h:
* Source/WebKit/UIProcess/ios/UIKitUtilities.mm:
(-[UIViewController _wk_isInFullscreenPresentation]):
* Source/WebKit/UIProcess/ios/WKContentView.mm:
(-[WKContentView willMoveToWindow:]):
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.h:
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView cleanUpInteraction]):
(-[WKContentView dismissFilePicker]):
(-[WKContentView _showShareSheet:inRect:completionHandler:]):
(-[WKContentView dismissPickersIfNeededWithReason:]):
(-[WKContentView dismissPickers]): Deleted.
* Source/WebKit/UIProcess/ios/WKPDFView.mm:
(-[WKPDFView dealloc]):

`ProcessExited` is used here, since it has the desired semantics.

In effect, the remote process of the host view controller is exited here.

(-[WKPDFView actionSheetAssistant:shareElementWithURL:rect:]):
* Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.h:
* Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.mm:
(-[WKFileUploadPanel dismissIfNeededWithReason:]):
* Source/WebKit/UIProcess/mac/WebViewImpl.mm:
(WebKit::WebViewImpl::showShareSheet):
* Source/WebKit/WebKit.xcodeproj/project.pbxproj:

Canonical link: https://commits.webkit.org/272448.818@safari-7618-branch
  • Loading branch information
pxlcoder committed Mar 28, 2024
1 parent a734205 commit 1db2f6a
Show file tree
Hide file tree
Showing 15 changed files with 143 additions and 26 deletions.
37 changes: 37 additions & 0 deletions Source/WebKit/UIProcess/Cocoa/PickerDismissalReason.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
/*
* Copyright (C) 2024 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

namespace WebKit {

enum class PickerDismissalReason : uint8_t {
ResetState,
ViewRemoved,
ProcessExited,
Testing,
};

} // namespace WebKit
6 changes: 5 additions & 1 deletion Source/WebKit/UIProcess/Cocoa/WKContactPicker.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,17 @@ struct ContactInfo;
struct ContactsRequestData;
}

namespace WebKit {
enum class PickerDismissalReason : uint8_t;
}

@interface WKContactPicker : NSObject

- (instancetype)initWithView:(WKWebView *)view;

- (void)presentWithRequestData:(const WebCore::ContactsRequestData&)requestData completionHandler:(WTF::CompletionHandler<void(std::optional<Vector<WebCore::ContactInfo>>&&)>&&)completionHandler;

- (void)dismiss;
- (BOOL)dismissIfNeededWithReason:(WebKit::PickerDismissalReason)reason;

@property (nonatomic, weak) id<WKContactPickerDelegate> delegate;

Expand Down
17 changes: 17 additions & 0 deletions Source/WebKit/UIProcess/Cocoa/WKContactPicker.mm
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#if HAVE(CONTACTSUI)

#import "ContactsUISPI.h"
#import "PickerDismissalReason.h"
#import <Contacts/Contacts.h>
#import <WebCore/ContactInfo.h>
#import <WebCore/ContactsRequestData.h>
Expand Down Expand Up @@ -184,6 +185,22 @@ - (void)dismiss
[self dismissWithContacts:nil];
}

- (BOOL)dismissIfNeededWithReason:(WebKit::PickerDismissalReason)reason
{
#if HAVE(CNCONTACTPICKERVIEWCONTROLLER)
if (reason == WebKit::PickerDismissalReason::ViewRemoved) {
if ([_contactPickerViewController _wk_isInFullscreenPresentation])
return NO;
}
#endif

if (reason == WebKit::PickerDismissalReason::ProcessExited || reason == WebKit::PickerDismissalReason::ViewRemoved)
[self setDelegate:nil];

[self dismiss];
return YES;
}

#pragma mark - Completion

#if HAVE(CNCONTACTPICKERVIEWCONTROLLER)
Expand Down
7 changes: 6 additions & 1 deletion Source/WebKit/UIProcess/Cocoa/WKShareSheet.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,17 @@ namespace WebCore {
struct ShareDataWithParsedURL;
}

namespace WebKit {
enum class PickerDismissalReason : uint8_t;
}

@interface WKShareSheet : NSObject

- (instancetype)initWithView:(WKWebView *)view;

- (void)presentWithParameters:(const WebCore::ShareDataWithParsedURL&)data inRect:(std::optional<WebCore::FloatRect>)rect completionHandler:(WTF::CompletionHandler<void(bool)>&&)completionHandler;
- (void)dismiss;

- (BOOL)dismissIfNeededWithReason:(WebKit::PickerDismissalReason)reason;

@property (nonatomic, weak) id <WKShareSheetDelegate> delegate;
@end
Expand Down
17 changes: 17 additions & 0 deletions Source/WebKit/UIProcess/Cocoa/WKShareSheet.mm
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@

#if PLATFORM(COCOA) && !PLATFORM(WATCHOS) && !PLATFORM(APPLETV)

#import "PickerDismissalReason.h"
#import "WKWebViewInternal.h"
#import "WebPageProxy.h"
#import <WebCore/NSURLUtilities.h>
Expand Down Expand Up @@ -425,6 +426,22 @@ - (void)dismiss
#endif
}

- (BOOL)dismissIfNeededWithReason:(WebKit::PickerDismissalReason)reason
{
#if PLATFORM(IOS_FAMILY)
if (reason == WebKit::PickerDismissalReason::ViewRemoved) {
if ([_shareSheetViewController _wk_isInFullscreenPresentation])
return NO;
}
#endif

if (reason == WebKit::PickerDismissalReason::ProcessExited || reason == WebKit::PickerDismissalReason::ViewRemoved)
[self setDelegate:nil];

[self dismiss];
return YES;
}

#if PLATFORM(MAC)
+ (BOOL)setQuarantineInformationForFilePath:(NSURL *)fileURL
{
Expand Down
4 changes: 4 additions & 0 deletions Source/WebKit/UIProcess/ios/UIKitUtilities.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,10 @@
@property (nonatomic, readonly) UIViewController *_wk_viewControllerForFullScreenPresentation;
@end

@interface UIViewController (WebKitInternal)
@property (nonatomic, readonly) BOOL _wk_isInFullscreenPresentation;
@end

namespace WebKit {

RetainPtr<UIAlertController> createUIAlertController(NSString *title, NSString *message);
Expand Down
9 changes: 9 additions & 0 deletions Source/WebKit/UIProcess/ios/UIKitUtilities.mm
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,15 @@ - (UIViewController *)_wk_viewControllerForFullScreenPresentation

@end

@implementation UIViewController (WebKitInternal)

- (BOOL)_wk_isInFullscreenPresentation
{
return self.activePresentationController && self.modalPresentationStyle == UIModalPresentationFullScreen;
}

@end

@implementation UIGestureRecognizer (WebKitInternal)

- (BOOL)_wk_isTextInteractionLoupeGesture
Expand Down
3 changes: 2 additions & 1 deletion Source/WebKit/UIProcess/ios/WKContentView.mm
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
#import "GPUProcessProxy.h"
#import "Logging.h"
#import "PageClientImplIOS.h"
#import "PickerDismissalReason.h"
#import "PrintInfo.h"
#import "RemoteLayerTreeDrawingAreaProxyIOS.h"
#import "SmartMagnificationController.h"
Expand Down Expand Up @@ -472,7 +473,7 @@ - (void)willMoveToWindow:(UIWindow *)newWindow
}

if (window && !newWindow)
[self dismissPickers];
[self dismissPickersIfNeededWithReason:WebKit::PickerDismissalReason::ViewRemoved];
}

- (void)didMoveToWindow
Expand Down
3 changes: 2 additions & 1 deletion Source/WebKit/UIProcess/ios/WKContentViewInteraction.h
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,7 @@ class NativeWebTouchEvent;
class SmartMagnificationController;
class WebOpenPanelResultListenerProxy;
class WebPageProxy;
enum class PickerDismissalReason : uint8_t;
}

@class AVPlayerViewController;
Expand Down Expand Up @@ -655,7 +656,7 @@ struct ImageAnalysisContextMenuActionData {
- (void)cleanUpInteraction;
- (void)cleanUpInteractionPreviewContainers;

- (void)dismissPickers;
- (void)dismissPickersIfNeededWithReason:(WebKit::PickerDismissalReason)reason;

- (void)scrollViewWillStartPanOrPinchGesture;

Expand Down
26 changes: 9 additions & 17 deletions Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
#import "NativeWebKeyboardEvent.h"
#import "NativeWebTouchEvent.h"
#import "PageClient.h"
#import "PickerDismissalReason.h"
#import "RemoteLayerTreeDrawingAreaProxy.h"
#import "RemoteLayerTreeViews.h"
#import "RemoteScrollingCoordinatorProxyIOS.h"
Expand Down Expand Up @@ -1580,7 +1581,7 @@ - (void)cleanUpInteraction
[self _unregisterPreview];
#endif

[self dismissPickers];
[self dismissPickersIfNeededWithReason:WebKit::PickerDismissalReason::ProcessExited];

[self stopDeferringInputViewUpdatesForAllSources];
_focusedElementInformation = { };
Expand Down Expand Up @@ -7381,7 +7382,7 @@ - (BOOL)_interpretKeyEvent:(::WebEvent *)event isCharEvent:(BOOL)isCharEvent

- (void)dismissFilePicker
{
[_fileUploadPanel dismiss];
[_fileUploadPanel dismissIfNeededWithReason:WebKit::PickerDismissalReason::Testing];
}

- (BOOL)isScrollableForKeyboardScrollViewAnimator:(WKKeyboardScrollViewAnimator *)animator
Expand Down Expand Up @@ -9104,8 +9105,8 @@ - (void)_showShareSheet:(const WebCore::ShareDataWithParsedURL&)data inRect:(std
{
#if !PLATFORM(WATCHOS) && !PLATFORM(APPLETV)
if (_shareSheet)
[_shareSheet dismiss];
[_shareSheet dismissIfNeededWithReason:WebKit::PickerDismissalReason::ResetState];

_shareSheet = adoptNS([[WKShareSheet alloc] initWithView:self.webView]);
[_shareSheet setDelegate:self];

Expand Down Expand Up @@ -9172,28 +9173,19 @@ - (void)contactPickerDidDismiss:(WKContactPicker *)contactPicker
}
#endif

- (void)dismissPickers
- (void)dismissPickersIfNeededWithReason:(WebKit::PickerDismissalReason)reason
{
if (_fileUploadPanel) {
[_fileUploadPanel setDelegate:nil];
[_fileUploadPanel dismiss];
if ([_fileUploadPanel dismissIfNeededWithReason:reason])
_fileUploadPanel = nil;
}

#if !PLATFORM(WATCHOS) && !PLATFORM(APPLETV)
if (_shareSheet) {
[_shareSheet setDelegate:nil];
[_shareSheet dismiss];
if ([_shareSheet dismissIfNeededWithReason:reason])
_shareSheet = nil;
}
#endif

#if HAVE(CONTACTSUI)
if (_contactPicker) {
[_contactPicker setDelegate:nil];
[_contactPicker dismiss];
if ([_contactPicker dismissIfNeededWithReason:reason])
_contactPicker = nil;
}
#endif
}

Expand Down
6 changes: 3 additions & 3 deletions Source/WebKit/UIProcess/ios/WKPDFView.mm
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
#import "APIUIClient.h"
#import "FindClient.h"
#import "PDFKitSPI.h"
#import "PickerDismissalReason.h"
#import "UIKitSPI.h"
#import "WKActionSheetAssistant.h"
#import "WKKeyboardScrollingAnimator.h"
Expand Down Expand Up @@ -145,8 +146,7 @@ @implementation WKPDFView {
- (void)dealloc
{
if (_shareSheet) {
[_shareSheet setDelegate:nil];
[_shareSheet dismiss];
[_shareSheet dismissIfNeededWithReason:WebKit::PickerDismissalReason::ProcessExited];
_shareSheet = nil;
}
[_actionSheetAssistant cleanupSheet];
Expand Down Expand Up @@ -671,7 +671,7 @@ - (void)actionSheetAssistant:(WKActionSheetAssistant *)assistant shareElementWit
shareData.url = { url };
shareData.originator = WebCore::ShareDataOriginator::User;

[_shareSheet dismiss];
[_shareSheet dismissIfNeededWithReason:WebKit::PickerDismissalReason::ResetState];

_shareSheet = adoptNS([[WKShareSheet alloc] initWithView:webView]);
[_shareSheet setDelegate:self];
Expand Down
4 changes: 3 additions & 1 deletion Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,15 @@ class OpenPanelParameters;

namespace WebKit {
class WebOpenPanelResultListenerProxy;
enum class PickerDismissalReason : uint8_t;
}

@interface WKFileUploadPanel : UIViewController
@property (nonatomic, weak) id <WKFileUploadPanelDelegate> delegate;
- (instancetype)initWithView:(WKContentView *)view;
- (void)presentWithParameters:(API::OpenPanelParameters*)parameters resultListener:(WebKit::WebOpenPanelResultListenerProxy*)listener;
- (void)dismiss;

- (BOOL)dismissIfNeededWithReason:(WebKit::PickerDismissalReason)reason;

#if USE(UICONTEXTMENU)
- (void)repositionContextMenuIfNeeded;
Expand Down
23 changes: 23 additions & 0 deletions Source/WebKit/UIProcess/ios/forms/WKFileUploadPanel.mm
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
#import "APIString.h"
#import "CompactContextMenuPresenter.h"
#import "PhotosUISPI.h"
#import "PickerDismissalReason.h"
#import "UIKitUtilities.h"
#import "WKContentViewInteraction.h"
#import "WKData.h"
Expand Down Expand Up @@ -552,6 +553,28 @@ - (void)dismiss
[self _cancel];
}

- (BOOL)dismissIfNeededWithReason:(WebKit::PickerDismissalReason)reason
{
if (reason == WebKit::PickerDismissalReason::ViewRemoved) {
if ([_documentPickerController _wk_isInFullscreenPresentation])
return NO;

#if HAVE(PHOTOS_UI)
if ([_photoPicker _wk_isInFullscreenPresentation])
return NO;
#endif

if ([_cameraPicker _wk_isInFullscreenPresentation])
return NO;
}

if (reason == WebKit::PickerDismissalReason::ProcessExited || reason == WebKit::PickerDismissalReason::ViewRemoved)
[self setDelegate:nil];

[self dismiss];
return YES;
}

- (void)_dismissDisplayAnimated:(BOOL)animated
{
if (_presentationViewController) {
Expand Down
3 changes: 2 additions & 1 deletion Source/WebKit/UIProcess/mac/WebViewImpl.mm
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
#import "PageClient.h"
#import "PageClientImplMac.h"
#import "PasteboardTypes.h"
#import "PickerDismissalReason.h"
#import "PlaybackSessionManagerProxy.h"
#import "RemoteLayerTreeDrawingAreaProxyMac.h"
#import "RemoteObjectRegistry.h"
Expand Down Expand Up @@ -2748,7 +2749,7 @@ static String commandNameForSelector(SEL selector)
void WebViewImpl::showShareSheet(const WebCore::ShareDataWithParsedURL& data, WTF::CompletionHandler<void(bool)>&& completionHandler, WKWebView *view)
{
if (_shareSheet)
[_shareSheet dismiss];
[_shareSheet dismissIfNeededWithReason:WebKit::PickerDismissalReason::ResetState];

ASSERT([view respondsToSelector:@selector(shareSheetDidDismiss:)]);
_shareSheet = adoptNS([[WKShareSheet alloc] initWithView:view]);
Expand Down
4 changes: 4 additions & 0 deletions Source/WebKit/WebKit.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -2351,6 +2351,7 @@
E568B91F20A3AB2F00E3C856 /* WebDataListSuggestionsDropdown.h in Headers */ = {isa = PBXBuildFile; fileRef = E568B91E20A3AB2F00E3C856 /* WebDataListSuggestionsDropdown.h */; };
E568B92220A3AC6A00E3C856 /* WebDataListSuggestionsDropdownMac.h in Headers */ = {isa = PBXBuildFile; fileRef = E568B92020A3AC6A00E3C856 /* WebDataListSuggestionsDropdownMac.h */; };
E596DD6A251E71D400C275A7 /* WKContactPicker.h in Headers */ = {isa = PBXBuildFile; fileRef = E596DD68251E71D300C275A7 /* WKContactPicker.h */; };
E5AF80FD2BB4F05F00726F63 /* PickerDismissalReason.h in Headers */ = {isa = PBXBuildFile; fileRef = E5AF80FC2BB4F00A00726F63 /* PickerDismissalReason.h */; };
E5BEF6822130C48000F31111 /* WebDataListSuggestionsDropdownIOS.h in Headers */ = {isa = PBXBuildFile; fileRef = E5BEF6802130C47F00F31111 /* WebDataListSuggestionsDropdownIOS.h */; };
E5CB07DC20E1678F0022C183 /* WKFormColorControl.h in Headers */ = {isa = PBXBuildFile; fileRef = E5CB07DA20E1678F0022C183 /* WKFormColorControl.h */; };
E5CBA76427A318E100DF7858 /* UnifiedSource120.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E5CBA75F27A3187800DF7858 /* UnifiedSource120.cpp */; };
Expand Down Expand Up @@ -7706,6 +7707,7 @@
E568B92120A3AC6A00E3C856 /* WebDataListSuggestionsDropdownMac.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = WebDataListSuggestionsDropdownMac.mm; sourceTree = "<group>"; };
E596DD68251E71D300C275A7 /* WKContactPicker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKContactPicker.h; sourceTree = "<group>"; };
E596DD69251E71D400C275A7 /* WKContactPicker.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WKContactPicker.mm; sourceTree = "<group>"; };
E5AF80FC2BB4F00A00726F63 /* PickerDismissalReason.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PickerDismissalReason.h; sourceTree = "<group>"; };
E5BEF6802130C47F00F31111 /* WebDataListSuggestionsDropdownIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebDataListSuggestionsDropdownIOS.h; path = ios/WebDataListSuggestionsDropdownIOS.h; sourceTree = "<group>"; };
E5BEF6812130C47F00F31111 /* WebDataListSuggestionsDropdownIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WebDataListSuggestionsDropdownIOS.mm; path = ios/WebDataListSuggestionsDropdownIOS.mm; sourceTree = "<group>"; };
E5CB07DA20E1678F0022C183 /* WKFormColorControl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = WKFormColorControl.h; path = ios/forms/WKFormColorControl.h; sourceTree = "<group>"; };
Expand Down Expand Up @@ -9044,6 +9046,7 @@
1ABC3DF31899E437004F0626 /* NavigationState.mm */,
5C6CE6D31F59EA350007C6CB /* PageClientImplCocoa.h */,
5C6CE6D01F59BC460007C6CB /* PageClientImplCocoa.mm */,
E5AF80FC2BB4F00A00726F63 /* PickerDismissalReason.h */,
1185025E2673B0A700A6425E /* PlatformXRCoordinator.mm */,
CDA29A1E1CBEB5FB00901CCF /* PlaybackSessionManagerProxy.h */,
CDA29A221CBEB61A00901CCF /* PlaybackSessionManagerProxy.messages.in */,
Expand Down Expand Up @@ -15707,6 +15710,7 @@
832ED18C1E2FE157006BA64A /* PerActivityStateCPUUsageSampler.h in Headers */,
7AFBD36F21E546F8005DBACB /* PersistencyUtils.h in Headers */,
E5DEFA6826F8F42600AB68DB /* PhotosUISPI.h in Headers */,
E5AF80FD2BB4F05F00726F63 /* PickerDismissalReason.h in Headers */,
5CE85B201C88E64B0070BFCE /* PingLoad.h in Headers */,
0F5E200418E77051003EC3E5 /* PlatformCAAnimationRemote.h in Headers */,
46D246262AFE956500F24C94 /* PlatformCAAnimationRemoteProperties.h in Headers */,
Expand Down

0 comments on commit 1db2f6a

Please sign in to comment.