Diff
Modified: trunk/Source/WebKit/CMakeLists.txt (229375 => 229376)
--- trunk/Source/WebKit/CMakeLists.txt 2018-03-07 22:09:49 UTC (rev 229375)
+++ trunk/Source/WebKit/CMakeLists.txt 2018-03-07 22:37:42 UTC (rev 229376)
@@ -303,6 +303,7 @@
UIProcess/ResponsivenessTimer.cpp
UIProcess/ServiceWorkerProcessProxy.cpp
UIProcess/StatisticsRequest.cpp
+ UIProcess/SystemPreviewController.cpp
UIProcess/TextCheckerCompletion.cpp
UIProcess/UIMessagePortChannelProvider.cpp
UIProcess/UserMediaPermissionCheckProxy.cpp
Modified: trunk/Source/WebKit/ChangeLog (229375 => 229376)
--- trunk/Source/WebKit/ChangeLog 2018-03-07 22:09:49 UTC (rev 229375)
+++ trunk/Source/WebKit/ChangeLog 2018-03-07 22:37:42 UTC (rev 229376)
@@ -1,3 +1,38 @@
+2018-03-07 Dean Jackson <d...@apple.com>
+
+ Add SystemPreviewController for showing system-level views of special file types
+ https://bugs.webkit.org/show_bug.cgi?id=183413
+ <rdar://problem/37800834>
+
+ Reviewed by Tim Horton.
+
+ Add a new controller class that hangs off WebPageProxy, with the goal
+ of providing system-level viewing of some some file types. Specifically
+ those that can't be shown by WebKit.
+
+ This is the initial implementation which is quite simple. The controller
+ can be queried about whether it supports a MIME type, then it can be
+ asked to show a URL.
+
+ * UIProcess/Cocoa/SystemPreviewControllerCocoa.mm: Added.
+ (-[_WKPreviewControllerDataSource initWithURL:]):
+ (-[_WKPreviewControllerDataSource numberOfPreviewItemsInPreviewController:]):
+ (-[_WKPreviewControllerDataSource previewController:previewItemAtIndex:]):
+ (WebKit::SystemPreviewController::canPreview const):
+ (WebKit::SystemPreviewController::showPreview):
+ * UIProcess/SystemPreviewController.cpp: Added.
+ (WebKit::SystemPreviewController::SystemPreviewController):
+ (WebKit::SystemPreviewController::canPreview const):
+ (WebKit::SystemPreviewController::showPreview):
+ * UIProcess/SystemPreviewController.h: Added.
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::m_configurationPreferenceValues):
+ (WebKit::WebPageProxy::reattachToWebProcess):
+ (WebKit::WebPageProxy::resetState):
+ * UIProcess/WebPageProxy.h:
+ (WebKit::WebPageProxy::systemPreviewController):
+ * WebKit.xcodeproj/project.pbxproj:
+
2018-03-07 Alejandro G. Castro <a...@igalia.com>
Make NetworkRTCResolver port agnostic
Added: trunk/Source/WebKit/UIProcess/Cocoa/SystemPreviewControllerCocoa.mm (0 => 229376)
--- trunk/Source/WebKit/UIProcess/Cocoa/SystemPreviewControllerCocoa.mm (rev 0)
+++ trunk/Source/WebKit/UIProcess/Cocoa/SystemPreviewControllerCocoa.mm 2018-03-07 22:37:42 UTC (rev 229376)
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2018 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.
+ */
+
+#import "config.h"
+#import "SystemPreviewController.h"
+
+#if PLATFORM(IOS)
+
+#import "APIUIClient.h"
+#import "WebPageProxy.h"
+
+#import <QuickLook/QuickLook.h>
+#import <UIKit/UIViewController.h>
+#import <wtf/SoftLinking.h>
+
+#if USE(APPLE_INTERNAL_SDK)
+#import <WebKitAdditions/SystemPreviewTypes.cpp>
+#endif
+
+SOFT_LINK_FRAMEWORK(QuickLook)
+SOFT_LINK_CLASS(QuickLook, QLPreviewController);
+
+@interface _WKPreviewControllerDataSource : NSObject <QLPreviewControllerDataSource> {
+ WebCore::URL _url;
+};
+@end
+
+@implementation _WKPreviewControllerDataSource
+
+- (id)initWithURL:(const WebCore::URL&)url
+{
+ if (!(self = [super init]))
+ return nil;
+
+ _url = url;
+ return self;
+}
+
+- (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller
+{
+ return 1;
+}
+
+- (id<QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index
+{
+ return (NSURL*)self->_url;
+}
+
+@end
+
+namespace WebKit {
+
+bool SystemPreviewController::canPreview(const String& mimeType) const
+{
+#if USE(APPLE_INTERNAL_SDK)
+ return canShowSystemPreviewForMIMEType(mimeType);
+#else
+ UNUSED_PARAM(mimeType);
+ return false;
+#endif
+}
+
+void SystemPreviewController::showPreview(const WebCore::URL& url)
+{
+ // FIXME: Make sure you can't show a preview if we're already previewing.
+
+ UIViewController *presentingViewController = m_webPageProxy.uiClient().presentingViewController();
+
+ if (!presentingViewController)
+ return;
+
+ RetainPtr<QLPreviewController> qlPreviewController = adoptNS([allocQLPreviewControllerInstance() init]);
+ RetainPtr<_WKPreviewControllerDataSource> dataSource = adoptNS([[_WKPreviewControllerDataSource alloc] initWithURL:url]);
+
+ [qlPreviewController setDataSource:dataSource.get()];
+
+ [presentingViewController presentViewController:qlPreviewController.get() animated:YES completion:nullptr];
+}
+
+}
+
+#endif
Added: trunk/Source/WebKit/UIProcess/SystemPreviewController.cpp (0 => 229376)
--- trunk/Source/WebKit/UIProcess/SystemPreviewController.cpp (rev 0)
+++ trunk/Source/WebKit/UIProcess/SystemPreviewController.cpp 2018-03-07 22:37:42 UTC (rev 229376)
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2018 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.
+ */
+
+#import "config.h"
+#import "SystemPreviewController.h"
+
+namespace WebKit {
+
+SystemPreviewController::SystemPreviewController(WebPageProxy& webPageProxy)
+ : m_webPageProxy(webPageProxy)
+{
+ (void)m_webPageProxy; // This will be used eventually. Using it here to keep the compiler from complaining.
+}
+
+#if !PLATFORM(IOS)
+bool SystemPreviewController::canPreview(const String&) const
+{
+ return false;
+}
+
+void SystemPreviewController::showPreview(const WebCore::URL&)
+{
+}
+#endif
+
+}
Property changes on: trunk/Source/WebKit/UIProcess/SystemPreviewController.cpp
___________________________________________________________________
Added: svn:eol-style
+native
\ No newline at end of property
Added: svn:keywords
+Date Author Id Revision HeadURL
\ No newline at end of property
Added: trunk/Source/WebKit/UIProcess/SystemPreviewController.h (0 => 229376)
--- trunk/Source/WebKit/UIProcess/SystemPreviewController.h (rev 0)
+++ trunk/Source/WebKit/UIProcess/SystemPreviewController.h 2018-03-07 22:37:42 UTC (rev 229376)
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2018 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
+
+#include <WebCore/URL.h>
+
+namespace WebKit {
+
+class WebPageProxy;
+
+class SystemPreviewController {
+public:
+ explicit SystemPreviewController(WebPageProxy&);
+
+ bool canPreview(const String& mimeType) const;
+ void showPreview(const WebCore::URL&);
+
+private:
+ WebPageProxy& m_webPageProxy;
+};
+
+}
+
Property changes on: trunk/Source/WebKit/UIProcess/SystemPreviewController.h
___________________________________________________________________
Added: svn:eol-style
+native
\ No newline at end of property
Added: svn:keywords
+Date Author Id Revision HeadURL
\ No newline at end of property
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (229375 => 229376)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2018-03-07 22:09:49 UTC (rev 229375)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2018-03-07 22:37:42 UTC (rev 229376)
@@ -412,6 +412,8 @@
m_paymentCoordinator = std::make_unique<WebPaymentCoordinatorProxy>(*this);
#endif
+ m_systemPreviewController = std::make_unique<SystemPreviewController>(*this);
+
#if ENABLE(WEB_AUTHN)
m_credentialsMessenger = std::make_unique<WebCredentialsMessengerProxy>(*this);
#endif
@@ -669,6 +671,8 @@
m_paymentCoordinator = std::make_unique<WebPaymentCoordinatorProxy>(*this);
#endif
+ m_systemPreviewController = std::make_unique<SystemPreviewController>(*this);
+
#if ENABLE(WEB_AUTHN)
m_credentialsMessenger = std::make_unique<WebCredentialsMessengerProxy>(*this);
#endif
@@ -5714,6 +5718,8 @@
m_paymentCoordinator = nullptr;
#endif
+ m_systemPreviewController = nullptr;
+
#if ENABLE(WEB_AUTHN)
m_credentialsMessenger = nullptr;
#endif
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (229375 => 229376)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2018-03-07 22:09:49 UTC (rev 229375)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2018-03-07 22:37:42 UTC (rev 229376)
@@ -44,6 +44,7 @@
#include "ProcessThrottler.h"
#include "SandboxExtension.h"
#include "ShareableBitmap.h"
+#include "SystemPreviewController.h"
#include "UserMediaPermissionRequestManagerProxy.h"
#include "VisibleContentRectUpdateInfo.h"
#include "VisibleWebPageCounter.h"
@@ -378,6 +379,8 @@
void setAllowsMediaDocumentInlinePlayback(bool);
#endif
+ SystemPreviewController* systemPreviewController() { return m_systemPreviewController.get(); }
+
#if ENABLE(CONTEXT_MENUS)
API::ContextMenuClient& contextMenuClient() { return *m_contextMenuClient; }
void setContextMenuClient(std::unique_ptr<API::ContextMenuClient>&&);
@@ -1791,6 +1794,8 @@
std::unique_ptr<WebPaymentCoordinatorProxy> m_paymentCoordinator;
#endif
+ std::unique_ptr<SystemPreviewController> m_systemPreviewController;
+
#if ENABLE(WEB_AUTHN)
std::unique_ptr<WebCredentialsMessengerProxy> m_credentialsMessenger;
#endif
Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (229375 => 229376)
--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2018-03-07 22:09:49 UTC (rev 229375)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2018-03-07 22:37:42 UTC (rev 229376)
@@ -758,11 +758,14 @@
3131261F148FF82C00BA2A39 /* NotificationPermissionRequestManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3131261A148FF82B00BA2A39 /* NotificationPermissionRequestManager.h */; };
31312620148FF82C00BA2A39 /* WebNotificationManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3131261B148FF82B00BA2A39 /* WebNotificationManager.cpp */; };
31312621148FF82C00BA2A39 /* WebNotificationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3131261C148FF82B00BA2A39 /* WebNotificationManager.h */; };
+ 3157135E2040A9B20084F9CF /* SystemPreviewControllerCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3157135C2040A9B20084F9CF /* SystemPreviewControllerCocoa.mm */; };
+ 3157135F2040A9B20084F9CF /* SystemPreviewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3157135D2040A9B20084F9CF /* SystemPreviewController.h */; };
317FE7C51C487A6C00A0CA89 /* APIExperimentalFeature.h in Headers */ = {isa = PBXBuildFile; fileRef = 317FE7C21C487A6600A0CA89 /* APIExperimentalFeature.h */; };
317FE7C61C487A7100A0CA89 /* APIExperimentalFeature.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 317FE7C11C487A6600A0CA89 /* APIExperimentalFeature.cpp */; };
317FE7CD1C487DAE00A0CA89 /* _WKExperimentalFeatureInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 317FE7C91C487D9D00A0CA89 /* _WKExperimentalFeatureInternal.h */; };
317FE7CE1C487DB800A0CA89 /* _WKExperimentalFeature.mm in Sources */ = {isa = PBXBuildFile; fileRef = 317FE7C81C487D9D00A0CA89 /* _WKExperimentalFeature.mm */; };
317FE7CF1C487DBD00A0CA89 /* _WKExperimentalFeature.h in Headers */ = {isa = PBXBuildFile; fileRef = 317FE7C71C487D9D00A0CA89 /* _WKExperimentalFeature.h */; settings = {ATTRIBUTES = (Private, ); }; };
+ 318A1F05204F4764003480BC /* SystemPreviewController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 318A1F04204F4764003480BC /* SystemPreviewController.cpp */; };
318BE17114743DB100A8FBB2 /* WKNotificationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 318BE17014743DB100A8FBB2 /* WKNotificationManager.h */; settings = {ATTRIBUTES = (Private, ); }; };
318BE17514743DD700A8FBB2 /* WKNotificationManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 318BE17414743DD600A8FBB2 /* WKNotificationManager.cpp */; };
318BE17714743E6000A8FBB2 /* WKNotification.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 318BE17614743E6000A8FBB2 /* WKNotification.cpp */; };
@@ -3136,6 +3139,8 @@
3131261D148FF82C00BA2A39 /* WebNotificationManager.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebNotificationManager.messages.in; sourceTree = "<group>"; };
314888FE1D91B11D00377042 /* WKTextChecker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKTextChecker.cpp; sourceTree = "<group>"; };
314888FF1D91B11D00377042 /* WKTextChecker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKTextChecker.h; sourceTree = "<group>"; };
+ 3157135C2040A9B20084F9CF /* SystemPreviewControllerCocoa.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = SystemPreviewControllerCocoa.mm; sourceTree = "<group>"; };
+ 3157135D2040A9B20084F9CF /* SystemPreviewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SystemPreviewController.h; sourceTree = "<group>"; };
31607F3819627002009B87DA /* LegacySessionStateCoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LegacySessionStateCoding.h; sourceTree = "<group>"; };
317FE7C11C487A6600A0CA89 /* APIExperimentalFeature.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = APIExperimentalFeature.cpp; sourceTree = "<group>"; };
317FE7C21C487A6600A0CA89 /* APIExperimentalFeature.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = APIExperimentalFeature.h; sourceTree = "<group>"; };
@@ -3142,6 +3147,7 @@
317FE7C71C487D9D00A0CA89 /* _WKExperimentalFeature.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKExperimentalFeature.h; sourceTree = "<group>"; };
317FE7C81C487D9D00A0CA89 /* _WKExperimentalFeature.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = _WKExperimentalFeature.mm; sourceTree = "<group>"; };
317FE7C91C487D9D00A0CA89 /* _WKExperimentalFeatureInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = _WKExperimentalFeatureInternal.h; sourceTree = "<group>"; };
+ 318A1F04204F4764003480BC /* SystemPreviewController.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = SystemPreviewController.cpp; sourceTree = "<group>"; };
318BE17014743DB100A8FBB2 /* WKNotificationManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKNotificationManager.h; sourceTree = "<group>"; };
318BE17414743DD600A8FBB2 /* WKNotificationManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKNotificationManager.cpp; sourceTree = "<group>"; };
318BE17614743E6000A8FBB2 /* WKNotification.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKNotification.cpp; sourceTree = "<group>"; };
@@ -5488,6 +5494,7 @@
CDA29A1F1CBEB5FB00901CCF /* PlaybackSessionManagerProxy.mm */,
1A002D47196B345D00B9AD44 /* SessionStateCoding.h */,
1A002D46196B345D00B9AD44 /* SessionStateCoding.mm */,
+ 3157135C2040A9B20084F9CF /* SystemPreviewControllerCocoa.mm */,
1AFE436418B6C081009C7A48 /* UIDelegate.h */,
1AFE436318B6C081009C7A48 /* UIDelegate.mm */,
E4E8648E1B1673FB00C82F40 /* VersionChecks.h */,
@@ -7223,6 +7230,8 @@
414DEDD51F9EDDDF0047C40D /* ServiceWorkerProcessProxy.h */,
51A4D5A816CAC4FF000E615E /* StatisticsRequest.cpp */,
514BDED216C98EDD00E4E25E /* StatisticsRequest.h */,
+ 318A1F04204F4764003480BC /* SystemPreviewController.cpp */,
+ 3157135D2040A9B20084F9CF /* SystemPreviewController.h */,
1AA417C912C00CCA002BE67B /* TextChecker.h */,
1BB417C912C00CCA002BE67B /* TextCheckerCompletion.cpp */,
1CC417C912C00CCA002BE67B /* TextCheckerCompletion.h */,
@@ -9116,6 +9125,7 @@
5118E9AD1F295977003EF9F5 /* StorageToWebProcessConnectionMessages.h in Headers */,
1AE00D6C18327C1200087DD7 /* StringReference.h in Headers */,
296BD85D15019BC30071F424 /* StringUtilities.h in Headers */,
+ 3157135F2040A9B20084F9CF /* SystemPreviewController.h in Headers */,
CE1A0BD61A48E6C60054EF74 /* TCCSPI.h in Headers */,
1AA417CB12C00CCA002BE67B /* TextChecker.h in Headers */,
1QQ417CB12C00CCA002BE67B /* TextCheckerCompletion.h in Headers */,
@@ -10791,6 +10801,8 @@
5118E9AC1F295977003EF9F5 /* StorageToWebProcessConnectionMessageReceiver.cpp in Sources */,
1AE00D6B18327C1200087DD7 /* StringReference.cpp in Sources */,
296BD85E15019BC30071F424 /* StringUtilities.mm in Sources */,
+ 318A1F05204F4764003480BC /* SystemPreviewController.cpp in Sources */,
+ 3157135E2040A9B20084F9CF /* SystemPreviewControllerCocoa.mm in Sources */,
1ZZ417EF12C00D87002BE67B /* TextCheckerCompletion.cpp in Sources */,
2DA944AD1884E9BA00ED86DB /* TextCheckerIOS.mm in Sources */,
1AA417EF12C00D87002BE67B /* TextCheckerMac.mm in Sources */,