Diff
Modified: trunk/Source/WTF/ChangeLog (279311 => 279312)
--- trunk/Source/WTF/ChangeLog 2021-06-27 05:42:32 UTC (rev 279311)
+++ trunk/Source/WTF/ChangeLog 2021-06-27 08:55:52 UTC (rev 279312)
@@ -1,3 +1,17 @@
+2021-06-27 Antoine Quint <[email protected]>
+
+ [Model] [iOS] Add support for rendering model resources
+ https://bugs.webkit.org/show_bug.cgi?id=227392
+ <rdar://problem/79770136>
+
+ Reviewed by Tim Horton.
+
+ Add a new compile-time flag indicating the availability of the ASVInlinePreview SPI on iOS.
+ We only define it when the header itself is present for now to avoid issues with older iOS
+ 15 SDKs, but ultimately we will only use the iOS version check.
+
+ * wtf/PlatformHave.h:
+
2021-06-25 Kenneth Russell <[email protected]>
Set ImageBitmap experimental feature flag to true
Modified: trunk/Source/WTF/wtf/PlatformHave.h (279311 => 279312)
--- trunk/Source/WTF/wtf/PlatformHave.h 2021-06-27 05:42:32 UTC (rev 279311)
+++ trunk/Source/WTF/wtf/PlatformHave.h 2021-06-27 08:55:52 UTC (rev 279312)
@@ -1010,6 +1010,12 @@
#define HAVE_IMAGE_RESTRICTED_DECODING 1
#endif
+#if defined __has_include && __has_include(<AssetViewer/ASVInlinePreview.h>)
+#if (PLATFORM(IOS) || PLATFORM(MACCATALYST)) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 150000
+#define HAVE_ARKIT_INLINE_PREVIEW_IOS 1
+#endif
+#endif
+
#if PLATFORM(IOS) || PLATFORM(MACCATALYST) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 110000)
#define HAVE_NSURLPROTOCOL_WITH_SKIPAPPSSO 1
#endif
Modified: trunk/Source/WebCore/ChangeLog (279311 => 279312)
--- trunk/Source/WebCore/ChangeLog 2021-06-27 05:42:32 UTC (rev 279311)
+++ trunk/Source/WebCore/ChangeLog 2021-06-27 08:55:52 UTC (rev 279312)
@@ -1,3 +1,17 @@
+2021-06-27 Antoine Quint <[email protected]>
+
+ [Model] [iOS] Add support for rendering model resources
+ https://bugs.webkit.org/show_bug.cgi?id=227392
+ <rdar://problem/79770136>
+
+ Reviewed by Tim Horton.
+
+ Ensure the anchor point is set correctly for model content layers, otherwise the preview layer shows
+ its center at the corner of the parent layer's origin.
+
+ * platform/graphics/ca/GraphicsLayerCA.cpp:
+ (WebCore::GraphicsLayerCA::setContentsToModel):
+
2021-06-26 Joonghun Park <[email protected]>
Unreviewed. Remove the build warnings below since r279050.
Modified: trunk/Source/WebCore/PAL/ChangeLog (279311 => 279312)
--- trunk/Source/WebCore/PAL/ChangeLog 2021-06-27 05:42:32 UTC (rev 279311)
+++ trunk/Source/WebCore/PAL/ChangeLog 2021-06-27 08:55:52 UTC (rev 279312)
@@ -1,3 +1,15 @@
+2021-06-27 Antoine Quint <[email protected]>
+
+ [Model] [iOS] Add support for rendering model resources
+ https://bugs.webkit.org/show_bug.cgi?id=227392
+ <rdar://problem/79770136>
+
+ Reviewed by Tim Horton.
+
+ Declare the ASVInlinePreview class.
+
+ * pal/spi/ios/SystemPreviewSPI.h:
+
2021-06-22 Dean Jackson <[email protected]>
Add support for MTLSharedTextures in WebXR
Modified: trunk/Source/WebCore/PAL/pal/spi/ios/SystemPreviewSPI.h (279311 => 279312)
--- trunk/Source/WebCore/PAL/pal/spi/ios/SystemPreviewSPI.h 2021-06-27 05:42:32 UTC (rev 279311)
+++ trunk/Source/WebCore/PAL/pal/spi/ios/SystemPreviewSPI.h 2021-06-27 08:55:52 UTC (rev 279312)
@@ -31,6 +31,10 @@
#import <AssetViewer/ASVThumbnailView.h>
+#if HAVE(ARKIT_INLINE_PREVIEW_IOS)
+#import <AssetViewer/ASVInlinePreview.h>
+#endif
+
#else
#import <UIKit/UIKit.h>
@@ -64,4 +68,20 @@
#endif
+#if HAVE(ARKIT_INLINE_PREVIEW_IOS)
+
+@class ASVInlinePreview;
+
+@interface ASVInlinePreview : NSObject
+@property (nonatomic, readonly) CALayer *layer;
+
+- (instancetype)initWithFrame:(CGRect)frame;
+- (void)setupRemoteConnectionWithCompletionHandler:(void (^)(NSError * _Nullable error))handler;
+- (void)preparePreviewOfFileAtURL:(NSURL *)url completionHandler:(void (^)(NSError * _Nullable error))handler;
+- (void)updateFrame:(CGRect)newFrame completionHandler:(void (^)(CAFenceHandle * _Nullable fenceHandle, NSError * _Nullable error))handler;
+
+@end
+
#endif
+
+#endif
Modified: trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp (279311 => 279312)
--- trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp 2021-06-27 05:42:32 UTC (rev 279311)
+++ trunk/Source/WebCore/platform/graphics/ca/GraphicsLayerCA.cpp 2021-06-27 08:55:52 UTC (rev 279312)
@@ -1285,6 +1285,7 @@
m_contentsLayer->setName(MAKE_STATIC_STRING_IMPL("contents model"));
#endif
+ m_contentsLayer->setAnchorPoint({ });
m_contentsLayerPurpose = ContentsLayerPurpose::Model;
contentsLayerChanged = true;
} else {
Modified: trunk/Source/WebKit/ChangeLog (279311 => 279312)
--- trunk/Source/WebKit/ChangeLog 2021-06-27 05:42:32 UTC (rev 279311)
+++ trunk/Source/WebKit/ChangeLog 2021-06-27 08:55:52 UTC (rev 279312)
@@ -1,3 +1,33 @@
+2021-06-27 Antoine Quint <[email protected]>
+
+ [Model] [iOS] Add support for rendering model resources
+ https://bugs.webkit.org/show_bug.cgi?id=227392
+ <rdar://problem/79770136>
+
+ Reviewed by Tim Horton.
+
+ Add a new WKModelView class which manages an ASVInlinePreview and displays its layer.
+ The current incarnation of the ASVInlinePreview SPI requires a URL to a file to specify
+ the resource, so we write a file to the temporary directory added in 279267 with the data
+ wrapped in the Model object passed through the remote layer tree. Ultimately we will be
+ able to use an SPI that does not require a file and instead will allow data to be passed
+ directly, this is purely for a temporary experimentation.
+
+ * Platform/Logging.h:
+ * SourcesCocoa.txt:
+ * UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm:
+ (WebKit::RemoteLayerTreeHost::makeNode):
+ * UIProcess/ios/WKModelView.h: Added.
+ * UIProcess/ios/WKModelView.mm: Added.
+ (-[WKModelView preview]):
+ (-[WKModelView initWithFrame:]):
+ (-[WKModelView initWithCoder:]):
+ (-[WKModelView initWithModel:]):
+ (-[WKModelView createFileForModel:]):
+ (-[WKModelView layoutSubviews]):
+ (-[WKModelView updateBounds]):
+ * WebKit.xcodeproj/project.pbxproj:
+
2021-06-26 Wenson Hsieh <[email protected]>
[iOS] Safari sometimes hangs under sync IPC in `-[WKWebView _setSuppressSoftwareKeyboard:]`
Modified: trunk/Source/WebKit/Platform/Logging.h (279311 => 279312)
--- trunk/Source/WebKit/Platform/Logging.h 2021-06-27 05:42:32 UTC (rev 279311)
+++ trunk/Source/WebKit/Platform/Logging.h 2021-06-27 08:55:52 UTC (rev 279312)
@@ -70,6 +70,7 @@
M(LocalStorageDatabaseTracker) \
M(Media) \
M(MemoryPressure) \
+ M(ModelElement) \
M(MouseHandling) \
M(Network) \
M(NetworkCache) \
Modified: trunk/Source/WebKit/SourcesCocoa.txt (279311 => 279312)
--- trunk/Source/WebKit/SourcesCocoa.txt 2021-06-27 05:42:32 UTC (rev 279311)
+++ trunk/Source/WebKit/SourcesCocoa.txt 2021-06-27 08:55:52 UTC (rev 279312)
@@ -489,6 +489,7 @@
UIProcess/ios/WKHighlightLongPressGestureRecognizer.mm
UIProcess/ios/WKImageAnalysisGestureRecognizer.mm
UIProcess/ios/WKKeyboardScrollingAnimator.mm
+UIProcess/ios/WKModelView.mm
UIProcess/ios/WKMouseDeviceObserver.mm
UIProcess/ios/WKMouseGestureRecognizer.mm
UIProcess/ios/WKPasswordView.mm
Modified: trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm (279311 => 279312)
--- trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm 2021-06-27 05:42:32 UTC (rev 279311)
+++ trunk/Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteLayerTreeHostIOS.mm 2021-06-27 08:55:52 UTC (rev 279312)
@@ -35,6 +35,10 @@
#import <UIKit/UIScrollView.h>
#import <pal/spi/cocoa/QuartzCoreSPI.h>
+#if HAVE(ARKIT_INLINE_PREVIEW_IOS)
+#import "WKModelView.h"
+#endif
+
namespace WebKit {
using namespace WebCore;
@@ -95,6 +99,8 @@
case PlatformCALayer::LayerTypeModelLayer:
#if ENABLE(SEPARATED_MODEL)
return makeWithView(adoptNS([[WKSeparatedModelView alloc] initWithModel:*properties.model]));
+#elif HAVE(ARKIT_INLINE_PREVIEW_IOS)
+ return makeWithView(adoptNS([[WKModelView alloc] initWithModel:*properties.model]));
#else
return makeWithView(adoptNS([[WKCompositingView alloc] init]));
#endif
Added: trunk/Source/WebKit/UIProcess/ios/WKModelView.h (0 => 279312)
--- trunk/Source/WebKit/UIProcess/ios/WKModelView.h (rev 0)
+++ trunk/Source/WebKit/UIProcess/ios/WKModelView.h 2021-06-27 08:55:52 UTC (rev 279312)
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 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. ``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
+ * 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 HAVE(ARKIT_INLINE_PREVIEW_IOS)
+
+#import "RemoteLayerTreeViews.h"
+
+namespace WebCore {
+class Model;
+}
+
+OBJC_CLASS ASVInlinePreview;
+
+@interface WKModelView : WKCompositingView
+
+- (instancetype)initWithModel:(WebCore::Model&)model NS_DESIGNATED_INITIALIZER;
+
+- (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE;
+- (instancetype)initWithCoder:(NSCoder *)coder NS_UNAVAILABLE;
+
+@property (nonatomic, readonly) ASVInlinePreview *preview;
+
+@end
+
+#endif
+
Added: trunk/Source/WebKit/UIProcess/ios/WKModelView.mm (0 => 279312)
--- trunk/Source/WebKit/UIProcess/ios/WKModelView.mm (rev 0)
+++ trunk/Source/WebKit/UIProcess/ios/WKModelView.mm 2021-06-27 08:55:52 UTC (rev 279312)
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 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. ``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
+ * 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 "WKModelView.h"
+
+#if HAVE(ARKIT_INLINE_PREVIEW_IOS)
+
+#import "Logging.h"
+#import "RemoteLayerTreeViews.h"
+#import "WebsiteDataStore.h"
+#import <WebCore/Model.h>
+#import <pal/spi/cocoa/QuartzCoreSPI.h>
+#import <pal/spi/ios/SystemPreviewSPI.h>
+#import <wtf/Assertions.h>
+#import <wtf/FileSystem.h>
+#import <wtf/RetainPtr.h>
+#import <wtf/SoftLinking.h>
+#import <wtf/UUID.h>
+
+SOFT_LINK_PRIVATE_FRAMEWORK(AssetViewer);
+SOFT_LINK_CLASS(AssetViewer, ASVInlinePreview);
+
+@implementation WKModelView {
+ RetainPtr<ASVInlinePreview> _preview;
+ String _filePath;
+ CGRect _lastBounds;
+}
+
+- (ASVInlinePreview *)preview
+{
+ return _preview.get();
+}
+
+- (instancetype)initWithFrame:(CGRect)frame
+{
+ return nil;
+}
+
+- (instancetype)initWithCoder:(NSCoder *)coder
+{
+ return nil;
+}
+
+- (instancetype)initWithModel:(WebCore::Model&)model
+{
+ self = [super initWithFrame:CGRectZero];
+ if (!self)
+ return nil;
+
+ if (![self createFileForModel:model])
+ return self;
+
+ _preview = adoptNS([allocASVInlinePreviewInstance() initWithFrame:self.bounds]);
+ [self.layer addSublayer:[_preview layer]];
+
+ auto url = "" alloc] initFileURLWithPath:_filePath]);
+
+ [_preview setupRemoteConnectionWithCompletionHandler:^(NSError *contextError) {
+ if (contextError) {
+ LOG(ModelElement, "Unable to create remote connection, error: %@", [contextError localizedDescription]);
+ return;
+ }
+
+ [_preview preparePreviewOfFileAtURL:url.get() completionHandler:^(NSError *loadError) {
+ if (loadError) {
+ LOG(ModelElement, "Unable to load file, error: %@", [loadError localizedDescription]);
+ return;
+ }
+
+ LOG(ModelElement, "File loaded successfully.");
+ [self updateBounds];
+ }];
+ }];
+
+ return self;
+}
+
+- (BOOL)createFileForModel:(WebCore::Model&)model
+{
+ auto pathToDirectory = WebKit::WebsiteDataStore::defaultModelElementCacheDirectory();
+ if (pathToDirectory.isEmpty())
+ return NO;
+
+ auto directoryExists = FileSystem::fileExists(pathToDirectory);
+ if (directoryExists && FileSystem::fileTypeFollowingSymlinks(pathToDirectory) != FileSystem::FileType::Directory) {
+ ASSERT_NOT_REACHED();
+ return NO;
+ }
+
+ if (!directoryExists && !FileSystem::makeAllDirectories(pathToDirectory)) {
+ ASSERT_NOT_REACHED();
+ return NO;
+ }
+
+ auto fileName = FileSystem::encodeForFileName(createCanonicalUUIDString()) + ".usdz";
+ auto filePath = FileSystem::pathByAppendingComponent(pathToDirectory, fileName);
+ auto file = FileSystem::openFile(filePath, FileSystem::FileOpenMode::Write);
+ if (file <= 0)
+ return NO;
+
+ auto byteCount = static_cast<std::size_t>(FileSystem::writeToFile(file, model.data()->data(), model.data()->size()));
+ ASSERT_UNUSED(byteCount, byteCount == model.data()->size());
+ FileSystem::closeFile(file);
+ _filePath = filePath;
+
+ return YES;
+}
+
+- (void)layoutSubviews
+{
+ [super layoutSubviews];
+ if (!CGRectEqualToRect(_lastBounds, CGRectZero))
+ [self updateBounds];
+}
+
+- (void)updateBounds
+{
+ auto bounds = self.bounds;
+ if (CGRectEqualToRect(_lastBounds, bounds))
+ return;
+
+ _lastBounds = bounds;
+
+ [_preview updateFrame:bounds completionHandler:^(CAFenceHandle *fenceHandle, NSError *error) {
+ if (error) {
+ LOG(ModelElement, "Unable to update frame, error: %@", [error localizedDescription]);
+ [fenceHandle invalidate];
+ return;
+ }
+
+ [self.layer.context addFence:fenceHandle];
+ [fenceHandle invalidate];
+ }];
+}
+
+@end
+
+#endif
+
Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (279311 => 279312)
--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2021-06-27 05:42:32 UTC (rev 279311)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj 2021-06-27 08:55:52 UTC (rev 279312)
@@ -1322,6 +1322,7 @@
6EE849C81368D9390038D481 /* WKInspectorPrivateMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EE849C61368D92D0038D481 /* WKInspectorPrivateMac.h */; settings = {ATTRIBUTES = (Private, ); }; };
711725A9228D564300018514 /* WebsiteLegacyOverflowScrollingTouchPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 711725A8228D563A00018514 /* WebsiteLegacyOverflowScrollingTouchPolicy.h */; };
71A676A622C62325007D6295 /* WKTouchActionGestureRecognizer.h in Headers */ = {isa = PBXBuildFile; fileRef = 71A676A422C62318007D6295 /* WKTouchActionGestureRecognizer.h */; };
+ 71BAA73325FFD09800D7CD5D /* WKModelView.h in Headers */ = {isa = PBXBuildFile; fileRef = 71BAA73125FFCCBA00D7CD5D /* WKModelView.h */; };
71FB810B2260627E00323677 /* WebsiteSimulatedMouseEventsDispatchPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 71FB810A2260627A00323677 /* WebsiteSimulatedMouseEventsDispatchPolicy.h */; };
728E86F11795188C0087879E /* WebColorPickerMac.h in Headers */ = {isa = PBXBuildFile; fileRef = 728E86EF1795188C0087879E /* WebColorPickerMac.h */; };
75A8D2C8187CCFAB00C39C9E /* WKWebsiteDataStore.h in Headers */ = {isa = PBXBuildFile; fileRef = 75A8D2C4187CCF9F00C39C9E /* WKWebsiteDataStore.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -4580,6 +4581,8 @@
711725A8228D563A00018514 /* WebsiteLegacyOverflowScrollingTouchPolicy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebsiteLegacyOverflowScrollingTouchPolicy.h; sourceTree = "<group>"; };
71A676A422C62318007D6295 /* WKTouchActionGestureRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKTouchActionGestureRecognizer.h; path = ios/WKTouchActionGestureRecognizer.h; sourceTree = "<group>"; };
71A676A522C62318007D6295 /* WKTouchActionGestureRecognizer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKTouchActionGestureRecognizer.mm; path = ios/WKTouchActionGestureRecognizer.mm; sourceTree = "<group>"; };
+ 71BAA73125FFCCBA00D7CD5D /* WKModelView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKModelView.h; path = ios/WKModelView.h; sourceTree = "<group>"; };
+ 71BAA73225FFCCBA00D7CD5D /* WKModelView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKModelView.mm; path = ios/WKModelView.mm; sourceTree = "<group>"; };
71FB810A2260627A00323677 /* WebsiteSimulatedMouseEventsDispatchPolicy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebsiteSimulatedMouseEventsDispatchPolicy.h; sourceTree = "<group>"; };
7227800B2408BD7D007D376B /* PlatformRemoteImageBufferProxy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlatformRemoteImageBufferProxy.h; sourceTree = "<group>"; };
726D56DD253A64810002EF90 /* RemoteResourceCache.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = RemoteResourceCache.cpp; sourceTree = "<group>"; };
@@ -7792,6 +7795,8 @@
933DF82F1B3BC0B400AEA9E3 /* WKImagePreviewViewController.mm */,
2DD5E127210ADC7A00DB6012 /* WKKeyboardScrollingAnimator.h */,
2DD5E126210ADC7A00DB6012 /* WKKeyboardScrollingAnimator.mm */,
+ 71BAA73125FFCCBA00D7CD5D /* WKModelView.h */,
+ 71BAA73225FFCCBA00D7CD5D /* WKModelView.mm */,
950F287E252414E900B74F1C /* WKMouseDeviceObserver.h */,
950F287F252414EA00B74F1C /* WKMouseDeviceObserver.mm */,
2DB94297234E7A7F00E776AD /* WKMouseGestureRecognizer.h */,
@@ -12845,6 +12850,7 @@
5CABDC8622C40FDE001EDE8E /* WKMessageListener.h in Headers */,
C11E1694212B87C500985FF6 /* WKMockDisplay.h in Headers */,
411A8DDB20DDD1AC0060D34F /* WKMockMediaDevice.h in Headers */,
+ 71BAA73325FFD09800D7CD5D /* WKModelView.h in Headers */,
950F2880252414EA00B74F1C /* WKMouseDeviceObserver.h in Headers */,
2DB94299234E7A7F00E776AD /* WKMouseGestureRecognizer.h in Headers */,
BC4075FE124FF0270068F20A /* WKMutableArray.h in Headers */,
@@ -14128,7 +14134,6 @@
CDA93DB122F8BCF400490A69 /* FullscreenTouchSecheuristicParameters.cpp in Sources */,
C1A152D724E5A29A00978C8B /* HandleXPCEndpointMessages.mm in Sources */,
2749F6442146561B008380BF /* InjectedBundleNodeHandle.cpp in Sources */,
- CDF1B91B267025550007EC10 /* WebKitSwiftSoftLink.mm in Sources */,
2749F6452146561E008380BF /* InjectedBundleRangeHandle.cpp in Sources */,
9BF5EC642541145600984E77 /* JSIPCBinding.cpp in Sources */,
2D913441212CF9F000128AFD /* JSNPMethod.cpp in Sources */,
@@ -14472,6 +14477,7 @@
1A6280F31919982A006AD9F9 /* WebKit.m in Sources */,
2D92A78B212B6AB100F493FD /* WebKit2Initialize.cpp in Sources */,
A181A79821ACC74B0059A316 /* WebKitAdditions.mm in Sources */,
+ CDF1B91B267025550007EC10 /* WebKitSwiftSoftLink.mm in Sources */,
51F060E11654318500F3282F /* WebMDNSRegisterMessageReceiver.cpp in Sources */,
2D92A78C212B6AB100F493FD /* WebMouseEvent.cpp in Sources */,
31BA924D148831260062EDB5 /* WebNotificationManagerMessageReceiver.cpp in Sources */,