Title: [279312] trunk/Source
Revision
279312
Author
[email protected]
Date
2021-06-27 01:55:52 -0700 (Sun, 27 Jun 2021)

Log Message

[Model] [iOS] Add support for rendering model resources
https://bugs.webkit.org/show_bug.cgi?id=227392
<rdar://problem/79770136>

Reviewed by Tim Horton.

Source/WebCore:

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):

Source/WebCore/PAL:

Declare the ASVInlinePreview class.

* pal/spi/ios/SystemPreviewSPI.h:

Source/WebKit:

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:

Source/WTF:

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:

Modified Paths

Added Paths

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 */,
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to