Diff
Modified: trunk/Source/WebCore/ChangeLog (285985 => 285986)
--- trunk/Source/WebCore/ChangeLog 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebCore/ChangeLog 2021-11-18 07:58:23 UTC (rev 285986)
@@ -1,3 +1,35 @@
+2021-11-18 Antoine Quint <[email protected]>
+
+ [Model] [macOS] Add support for interaction on macOS
+ https://bugs.webkit.org/show_bug.cgi?id=233105
+ <rdar://problem/80079386>
+
+ Reviewed by Wenson Hsieh.
+
+ Capture mouse events after the mouse button is pressed over a <model> element,
+ unless preventDefault() is called, and forward those events through ModelPlayer
+ to the UI process.
+
+ * Modules/model-element/HTMLModelElement.cpp:
+ (WebCore::HTMLModelElement::defaultEventHandler):
+ (WebCore::HTMLModelElement::dragDidStart):
+ (WebCore::HTMLModelElement::dragDidChange):
+ (WebCore::HTMLModelElement::dragDidEnd):
+ * Modules/model-element/HTMLModelElement.h:
+ * Modules/model-element/ModelPlayer.cpp:
+ (WebCore::ModelPlayer::supportsMouseInteraction):
+ * Modules/model-element/ModelPlayer.h:
+ * Modules/model-element/dummy/DummyModelPlayer.cpp:
+ (WebCore::DummyModelPlayer::handleMouseDown):
+ (WebCore::DummyModelPlayer::handleMouseMove):
+ (WebCore::DummyModelPlayer::handleMouseUp):
+ * Modules/model-element/dummy/DummyModelPlayer.h:
+ * Modules/model-element/scenekit/SceneKitModelPlayer.h:
+ * Modules/model-element/scenekit/SceneKitModelPlayer.mm:
+ (WebCore::SceneKitModelPlayer::handleMouseDown):
+ (WebCore::SceneKitModelPlayer::handleMouseMove):
+ (WebCore::SceneKitModelPlayer::handleMouseUp):
+
2021-11-17 Youenn Fablet <[email protected]>
Audio Rate Gets Messed up With Safari WebRTC and Bluetooth Switching
Modified: trunk/Source/WebCore/Modules/model-element/HTMLModelElement.cpp (285985 => 285986)
--- trunk/Source/WebCore/Modules/model-element/HTMLModelElement.cpp 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebCore/Modules/model-element/HTMLModelElement.cpp 2021-11-18 07:58:23 UTC (rev 285986)
@@ -33,6 +33,8 @@
#include "Document.h"
#include "ElementChildIterator.h"
#include "ElementInlines.h"
+#include "EventHandler.h"
+#include "EventNames.h"
#include "GraphicsLayer.h"
#include "GraphicsLayerCA.h"
#include "HTMLNames.h"
@@ -43,7 +45,9 @@
#include "Model.h"
#include "ModelPlayer.h"
#include "ModelPlayerProvider.h"
+#include "MouseEvent.h"
#include "Page.h"
+#include "PlatformMouseEvent.h"
#include "RenderLayer.h"
#include "RenderLayerBacking.h"
#include "RenderLayerModelObject.h"
@@ -289,6 +293,73 @@
m_modelPlayer->enterFullscreen();
}
+// MARK: - Interaction support.
+
+void HTMLModelElement::defaultEventHandler(Event& event)
+{
+ if (!m_modelPlayer || !m_modelPlayer->supportsMouseInteraction())
+ return;
+
+ auto type = event.type();
+ if (type != eventNames().mousedownEvent && type != eventNames().mousemoveEvent && type != eventNames().mouseupEvent)
+ return;
+
+ ASSERT(is<MouseEvent>(event));
+ auto& mouseEvent = downcast<MouseEvent>(event);
+
+ if (mouseEvent.button() != LeftButton)
+ return;
+
+ if (type == eventNames().mousedownEvent && !m_isDragging && !event.defaultPrevented())
+ dragDidStart(mouseEvent);
+ else if (type == eventNames().mousemoveEvent && m_isDragging)
+ dragDidChange(mouseEvent);
+ else if (type == eventNames().mouseupEvent && m_isDragging)
+ dragDidEnd(mouseEvent);
}
+void HTMLModelElement::dragDidStart(MouseEvent& event)
+{
+ ASSERT(!m_isDragging);
+
+ RefPtr frame = document().frame();
+ if (!frame)
+ return;
+
+ frame->eventHandler().setCapturingMouseEventsElement(this);
+ event.setDefaultHandled();
+ m_isDragging = true;
+
+ if (m_modelPlayer)
+ m_modelPlayer->handleMouseDown(event.pageLocation(), event.timeStamp());
+}
+
+void HTMLModelElement::dragDidChange(MouseEvent& event)
+{
+ ASSERT(m_isDragging);
+
+ event.setDefaultHandled();
+
+ if (m_modelPlayer)
+ m_modelPlayer->handleMouseMove(event.pageLocation(), event.timeStamp());
+}
+
+void HTMLModelElement::dragDidEnd(MouseEvent& event)
+{
+ ASSERT(m_isDragging);
+
+ RefPtr frame = document().frame();
+ if (!frame)
+ return;
+
+ frame->eventHandler().setCapturingMouseEventsElement(nullptr);
+ event.setDefaultHandled();
+ m_isDragging = false;
+
+ if (m_modelPlayer)
+ m_modelPlayer->handleMouseUp(event.pageLocation(), event.timeStamp());
+}
+
+}
+
#endif // ENABLE(MODEL_ELEMENT)
Modified: trunk/Source/WebCore/Modules/model-element/HTMLModelElement.h (285985 => 285986)
--- trunk/Source/WebCore/Modules/model-element/HTMLModelElement.h 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebCore/Modules/model-element/HTMLModelElement.h 2021-11-18 07:58:23 UTC (rev 285986)
@@ -40,8 +40,10 @@
namespace WebCore {
+class Event;
class Model;
class ModelPlayer;
+class MouseEvent;
template<typename IDLType> class DOMPromiseProxyWithResolveCallback;
@@ -92,6 +94,11 @@
void didFailLoading(ModelPlayer&, const ResourceError&) final;
GraphicsLayer::PlatformLayerID platformLayerID() final;
+ void defaultEventHandler(Event&) final;
+ void dragDidStart(MouseEvent&);
+ void dragDidChange(MouseEvent&);
+ void dragDidEnd(MouseEvent&);
+
URL m_sourceURL;
CachedResourceHandle<CachedRawResource> m_resource;
RefPtr<SharedBuffer> m_data;
@@ -98,6 +105,7 @@
RefPtr<Model> m_model;
UniqueRef<ReadyPromise> m_readyPromise;
bool m_dataComplete { false };
+ bool m_isDragging { false };
RefPtr<ModelPlayer> m_modelPlayer;
};
Modified: trunk/Source/WebCore/Modules/model-element/ModelPlayer.cpp (285985 => 285986)
--- trunk/Source/WebCore/Modules/model-element/ModelPlayer.cpp 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebCore/Modules/model-element/ModelPlayer.cpp 2021-11-18 07:58:23 UTC (rev 285986)
@@ -30,4 +30,9 @@
ModelPlayer::~ModelPlayer() = default;
+bool ModelPlayer::supportsMouseInteraction()
+{
+ return false;
}
+
+}
Modified: trunk/Source/WebCore/Modules/model-element/ModelPlayer.h (285985 => 285986)
--- trunk/Source/WebCore/Modules/model-element/ModelPlayer.h 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebCore/Modules/model-element/ModelPlayer.h 2021-11-18 07:58:23 UTC (rev 285986)
@@ -25,9 +25,11 @@
#pragma once
+#include "LayoutPoint.h"
#include "LayoutSize.h"
#include "PlatformLayer.h"
#include <wtf/Forward.h>
+#include <wtf/MonotonicTime.h>
namespace WebCore {
@@ -41,6 +43,11 @@
virtual void load(Model&, LayoutSize) = 0;
virtual PlatformLayer* layer() = 0;
virtual void enterFullscreen() = 0;
+ virtual bool supportsMouseInteraction();
+ virtual void handleMouseDown(const LayoutPoint&, MonotonicTime) = 0;
+ virtual void handleMouseMove(const LayoutPoint&, MonotonicTime) = 0;
+ virtual void handleMouseUp(const LayoutPoint&, MonotonicTime) = 0;
+
};
}
Modified: trunk/Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.cpp (285985 => 285986)
--- trunk/Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.cpp 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.cpp 2021-11-18 07:58:23 UTC (rev 285986)
@@ -58,4 +58,16 @@
{
}
+void DummyModelPlayer::handleMouseDown(const LayoutPoint&, MonotonicTime)
+{
}
+
+void DummyModelPlayer::handleMouseMove(const LayoutPoint&, MonotonicTime)
+{
+}
+
+void DummyModelPlayer::handleMouseUp(const LayoutPoint&, MonotonicTime)
+{
+}
+
+}
Modified: trunk/Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.h (285985 => 285986)
--- trunk/Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.h 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.h 2021-11-18 07:58:23 UTC (rev 285986)
@@ -44,6 +44,9 @@
void load(Model&, LayoutSize) override;
PlatformLayer* layer() override;
void enterFullscreen() override;
+ void handleMouseDown(const LayoutPoint&, MonotonicTime) override;
+ void handleMouseMove(const LayoutPoint&, MonotonicTime) override;
+ void handleMouseUp(const LayoutPoint&, MonotonicTime) override;
WeakPtr<ModelPlayerClient> m_client;
};
Modified: trunk/Source/WebCore/Modules/model-element/scenekit/SceneKitModelPlayer.h (285985 => 285986)
--- trunk/Source/WebCore/Modules/model-element/scenekit/SceneKitModelPlayer.h 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebCore/Modules/model-element/scenekit/SceneKitModelPlayer.h 2021-11-18 07:58:23 UTC (rev 285986)
@@ -58,6 +58,9 @@
void load(Model&, LayoutSize) override;
CALayer *layer() override;
void enterFullscreen() override;
+ void handleMouseDown(const LayoutPoint&, MonotonicTime) override;
+ void handleMouseMove(const LayoutPoint&, MonotonicTime) override;
+ void handleMouseUp(const LayoutPoint&, MonotonicTime) override;
// SceneKitModelLoaderClient overrides.
virtual void didFinishLoading(SceneKitModelLoader&, Ref<SceneKitModel>) override;
Modified: trunk/Source/WebCore/Modules/model-element/scenekit/SceneKitModelPlayer.mm (285985 => 285986)
--- trunk/Source/WebCore/Modules/model-element/scenekit/SceneKitModelPlayer.mm 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebCore/Modules/model-element/scenekit/SceneKitModelPlayer.mm 2021-11-18 07:58:23 UTC (rev 285986)
@@ -76,6 +76,18 @@
{
}
+void SceneKitModelPlayer::handleMouseDown(const LayoutPoint&, MonotonicTime)
+{
+}
+
+void SceneKitModelPlayer::handleMouseMove(const LayoutPoint&, MonotonicTime)
+{
+}
+
+void SceneKitModelPlayer::handleMouseUp(const LayoutPoint&, MonotonicTime)
+{
+}
+
// MARK: - SceneKitModelLoaderClient overrides.
void SceneKitModelPlayer::didFinishLoading(SceneKitModelLoader& loader, Ref<SceneKitModel> model)
Modified: trunk/Source/WebCore/PAL/ChangeLog (285985 => 285986)
--- trunk/Source/WebCore/PAL/ChangeLog 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebCore/PAL/ChangeLog 2021-11-18 07:58:23 UTC (rev 285986)
@@ -1,3 +1,15 @@
+2021-11-18 Antoine Quint <[email protected]>
+
+ [Model] [macOS] Add support for interaction on macOS
+ https://bugs.webkit.org/show_bug.cgi?id=233105
+ <rdar://problem/80079386>
+
+ Reviewed by Wenson Hsieh.
+
+ Add new ARQL SPIs.
+
+ * pal/spi/mac/SystemPreviewSPI.h:
+
2021-11-17 Myles C. Maxfield <[email protected]>
[WebGPU] Add IPC message handlers for WebGPU
Modified: trunk/Source/WebCore/PAL/pal/spi/mac/SystemPreviewSPI.h (285985 => 285986)
--- trunk/Source/WebCore/PAL/pal/spi/mac/SystemPreviewSPI.h 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebCore/PAL/pal/spi/mac/SystemPreviewSPI.h 2021-11-18 07:58:23 UTC (rev 285986)
@@ -48,6 +48,10 @@
- (void)preparePreviewOfFileAtURL:(NSURL *)url completionHandler:(void (^)(NSError * _Nullable error))handler;
- (void)setRemoteContext:(uint32_t)contextId;
+- (void)mouseDownAtLocation:(CGPoint)location timestamp:(NSTimeInterval)timestamp;
+- (void)mouseDraggedAtLocation:(CGPoint)location timestamp:(NSTimeInterval)timestamp;
+- (void)mouseUpAtLocation:(CGPoint)location timestamp:(NSTimeInterval)timestamp;
+
@end
#endif // ENABLE(ARKIT_INLINE_PREVIEW_MAC)
Modified: trunk/Source/WebKit/ChangeLog (285985 => 285986)
--- trunk/Source/WebKit/ChangeLog 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebKit/ChangeLog 2021-11-18 07:58:23 UTC (rev 285986)
@@ -1,3 +1,37 @@
+2021-11-18 Antoine Quint <[email protected]>
+
+ [Model] [macOS] Add support for interaction on macOS
+ https://bugs.webkit.org/show_bug.cgi?id=233105
+ <rdar://problem/80079386>
+
+ Reviewed by Wenson Hsieh.
+
+ Forward mouse events captured in the Web process to the matching ASVInlinePreview.
+
+ * UIProcess/Cocoa/ModelElementControllerCocoa.mm:
+ (WebKit::ModelElementController::previewForUUID):
+ (WebKit::ModelElementController::handleMouseDownForModelElement):
+ (WebKit::ModelElementController::handleMouseMoveForModelElement):
+ (WebKit::ModelElementController::handleMouseUpForModelElement):
+ * UIProcess/ModelElementController.h:
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::handleMouseDownForModelElement):
+ (WebKit::WebPageProxy::handleMouseMoveForModelElement):
+ (WebKit::WebPageProxy::handleMouseUpForModelElement):
+ * UIProcess/WebPageProxy.h:
+ * UIProcess/WebPageProxy.messages.in:
+ * WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.h:
+ * WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.mm:
+ (WebKit::ARKitInlinePreviewModelPlayerIOS::handleMouseDown):
+ (WebKit::ARKitInlinePreviewModelPlayerIOS::handleMouseMove):
+ (WebKit::ARKitInlinePreviewModelPlayerIOS::handleMouseUp):
+ * WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.h:
+ * WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.mm:
+ (WebKit::ARKitInlinePreviewModelPlayerMac::supportsMouseInteraction):
+ (WebKit::ARKitInlinePreviewModelPlayerMac::handleMouseDown):
+ (WebKit::ARKitInlinePreviewModelPlayerMac::handleMouseMove):
+ (WebKit::ARKitInlinePreviewModelPlayerMac::handleMouseUp):
+
2021-11-17 Youenn Fablet <[email protected]>
Add support for more rvfc metadata
Modified: trunk/Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm (285985 => 285986)
--- trunk/Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebKit/UIProcess/Cocoa/ModelElementControllerCocoa.mm 2021-11-18 07:58:23 UTC (rev 285986)
@@ -42,9 +42,12 @@
#endif
#if ENABLE(ARKIT_INLINE_PREVIEW_MAC)
+#import <WebCore/LayoutPoint.h>
+#import <WebCore/LayoutUnit.h>
#import <WebCore/ResourceError.h>
#import <pal/spi/mac/SystemPreviewSPI.h>
#import <wtf/MainThread.h>
+#import <wtf/MonotonicTime.h>
#endif
SOFT_LINK_PRIVATE_FRAMEWORK(AssetViewer);
@@ -188,6 +191,29 @@
}).get()];
}
+RetainPtr<ASVInlinePreview> ModelElementController::previewForUUID(const String& uuid)
+{
+ return m_inlinePreviews.get(uuid);
+}
+
+void ModelElementController::handleMouseDownForModelElement(const String& uuid, const WebCore::LayoutPoint& locationInPageCoordinates, MonotonicTime timestamp)
+{
+ if (auto preview = previewForUUID(uuid))
+ [preview mouseDownAtLocation:CGPointMake(locationInPageCoordinates.x().toFloat(), locationInPageCoordinates.y().toFloat()) timestamp:timestamp.secondsSinceEpoch().value()];
+}
+
+void ModelElementController::handleMouseMoveForModelElement(const String& uuid, const WebCore::LayoutPoint& locationInPageCoordinates, MonotonicTime timestamp)
+{
+ if (auto preview = previewForUUID(uuid))
+ [preview mouseDraggedAtLocation:CGPointMake(locationInPageCoordinates.x().toFloat(), locationInPageCoordinates.y().toFloat()) timestamp:timestamp.secondsSinceEpoch().value()];
+}
+
+void ModelElementController::handleMouseUpForModelElement(const String& uuid, const WebCore::LayoutPoint& locationInPageCoordinates, MonotonicTime timestamp)
+{
+ if (auto preview = previewForUUID(uuid))
+ [preview mouseUpAtLocation:CGPointMake(locationInPageCoordinates.x().toFloat(), locationInPageCoordinates.y().toFloat()) timestamp:timestamp.secondsSinceEpoch().value()];
+}
+
#endif
}
Modified: trunk/Source/WebKit/UIProcess/ModelElementController.h (285985 => 285986)
--- trunk/Source/WebKit/UIProcess/ModelElementController.h 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebKit/UIProcess/ModelElementController.h 2021-11-18 07:58:23 UTC (rev 285986)
@@ -53,11 +53,15 @@
#endif
#if ENABLE(ARKIT_INLINE_PREVIEW_MAC)
void modelElementDidCreatePreview(URL, String, WebCore::FloatSize, CompletionHandler<void(Expected<std::pair<String, uint32_t>, WebCore::ResourceError>)>&&);
+ void handleMouseDownForModelElement(const String&, const WebCore::LayoutPoint&, MonotonicTime);
+ void handleMouseMoveForModelElement(const String&, const WebCore::LayoutPoint&, MonotonicTime);
+ void handleMouseUpForModelElement(const String&, const WebCore::LayoutPoint&, MonotonicTime);
#endif
private:
WebPageProxy& m_webPageProxy;
#if ENABLE(ARKIT_INLINE_PREVIEW_MAC)
+ RetainPtr<ASVInlinePreview> previewForUUID(const String&);
HashMap<String, RetainPtr<ASVInlinePreview>> m_inlinePreviews;
#endif
};
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.cpp (285985 => 285986)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.cpp 2021-11-18 07:58:23 UTC (rev 285986)
@@ -10844,6 +10844,21 @@
{
modelElementController()->modelElementDidCreatePreview(url, uuid, size, WTFMove(completionHandler));
}
+
+void WebPageProxy::handleMouseDownForModelElement(const String& uuid, const WebCore::LayoutPoint& locationInPageCoordinates, MonotonicTime timestamp)
+{
+ modelElementController()->handleMouseDownForModelElement(uuid, locationInPageCoordinates, timestamp);
+}
+
+void WebPageProxy::handleMouseMoveForModelElement(const String& uuid, const WebCore::LayoutPoint& locationInPageCoordinates, MonotonicTime timestamp)
+{
+ modelElementController()->handleMouseMoveForModelElement(uuid, locationInPageCoordinates, timestamp);
+}
+
+void WebPageProxy::handleMouseUpForModelElement(const String& uuid, const WebCore::LayoutPoint& locationInPageCoordinates, MonotonicTime timestamp)
+{
+ modelElementController()->handleMouseUpForModelElement(uuid, locationInPageCoordinates, timestamp);
+}
#endif
#if !PLATFORM(COCOA)
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (285985 => 285986)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.h 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h 2021-11-18 07:58:23 UTC (rev 285986)
@@ -593,6 +593,9 @@
#endif
#if ENABLE(ARKIT_INLINE_PREVIEW_MAC)
void modelElementDidCreatePreview(const URL&, const String&, const WebCore::FloatSize&, CompletionHandler<void(Expected<std::pair<String, uint32_t>, WebCore::ResourceError>)>&&);
+ void handleMouseDownForModelElement(const String&, const WebCore::LayoutPoint&, MonotonicTime);
+ void handleMouseMoveForModelElement(const String&, const WebCore::LayoutPoint&, MonotonicTime);
+ void handleMouseUpForModelElement(const String&, const WebCore::LayoutPoint&, MonotonicTime);
#endif
#if ENABLE(APPLE_PAY_AMS_UI)
Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in (285985 => 285986)
--- trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in 2021-11-18 07:58:23 UTC (rev 285986)
@@ -590,6 +590,9 @@
#endif
#if ENABLE(ARKIT_INLINE_PREVIEW_MAC)
ModelElementDidCreatePreview(URL url, String uuid, WebCore::FloatSize size) -> (Expected<std::pair<String, uint32_t>, WebCore::ResourceError> result) Async
+ HandleMouseDownForModelElement(String uuid, WebCore::LayoutPoint locationInPageCoordinates, MonotonicTime timestamp)
+ HandleMouseMoveForModelElement(String uuid, WebCore::LayoutPoint locationInPageCoordinates, MonotonicTime timestamp)
+ HandleMouseUpForModelElement(String uuid, WebCore::LayoutPoint locationInPageCoordinates, MonotonicTime timestamp)
#endif
requestPermission(struct WebCore::ClientOrigin origin, struct WebCore::PermissionDescriptor descriptor) -> (enum:uint8_t WebCore::PermissionState state) Async
Modified: trunk/Source/WebKit/WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.h (285985 => 285986)
--- trunk/Source/WebKit/WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.h 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebKit/WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.h 2021-11-18 07:58:23 UTC (rev 285986)
@@ -43,6 +43,9 @@
// WebCore::ModelPlayer overrides.
void enterFullscreen() override;
+ void handleMouseDown(const WebCore::LayoutPoint&, MonotonicTime) override;
+ void handleMouseMove(const WebCore::LayoutPoint&, MonotonicTime) override;
+ void handleMouseUp(const WebCore::LayoutPoint&, MonotonicTime) override;
};
}
Modified: trunk/Source/WebKit/WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.mm (285985 => 285986)
--- trunk/Source/WebKit/WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.mm 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebKit/WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.mm 2021-11-18 07:58:23 UTC (rev 285986)
@@ -59,6 +59,20 @@
page()->takeModelElementFullscreen(layerId);
}
+void ARKitInlinePreviewModelPlayerIOS::handleMouseDown(const WebCore::LayoutPoint&, MonotonicTime)
+{
+ ASSERT_NOT_REACHED();
}
+void ARKitInlinePreviewModelPlayerIOS::handleMouseMove(const WebCore::LayoutPoint&, MonotonicTime)
+{
+ ASSERT_NOT_REACHED();
+}
+
+void ARKitInlinePreviewModelPlayerIOS::handleMouseUp(const WebCore::LayoutPoint&, MonotonicTime)
+{
+ ASSERT_NOT_REACHED();
+}
+
+}
#endif
Modified: trunk/Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.h (285985 => 285986)
--- trunk/Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.h 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.h 2021-11-18 07:58:23 UTC (rev 285986)
@@ -50,6 +50,10 @@
// WebCore::ModelPlayer overrides.
void load(WebCore::Model&, WebCore::LayoutSize) override;
PlatformLayer* layer() override;
+ bool supportsMouseInteraction() override;
+ void handleMouseDown(const WebCore::LayoutPoint&, MonotonicTime) override;
+ void handleMouseMove(const WebCore::LayoutPoint&, MonotonicTime) override;
+ void handleMouseUp(const WebCore::LayoutPoint&, MonotonicTime) override;
void createFile(WebCore::Model&);
void clearFile();
Modified: trunk/Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.mm (285985 => 285986)
--- trunk/Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.mm 2021-11-18 07:53:25 UTC (rev 285985)
+++ trunk/Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.mm 2021-11-18 07:58:23 UTC (rev 285986)
@@ -170,6 +170,32 @@
return [m_inlinePreview layer];
}
+bool ARKitInlinePreviewModelPlayerMac::supportsMouseInteraction()
+{
+#if ENABLE(ARKIT_INLINE_PREVIEW_MAC)
+ return true;
+#endif
+ return false;
}
+void ARKitInlinePreviewModelPlayerMac::handleMouseDown(const LayoutPoint& locationInPageCoordinates, MonotonicTime timestamp)
+{
+ if (auto* page = this->page())
+ page->send(Messages::WebPageProxy::HandleMouseDownForModelElement([m_inlinePreview uuid].UUIDString, locationInPageCoordinates, timestamp));
+}
+
+void ARKitInlinePreviewModelPlayerMac::handleMouseMove(const LayoutPoint& locationInPageCoordinates, MonotonicTime timestamp)
+{
+ if (auto* page = this->page())
+ page->send(Messages::WebPageProxy::HandleMouseMoveForModelElement([m_inlinePreview uuid].UUIDString, locationInPageCoordinates, timestamp));
+}
+
+void ARKitInlinePreviewModelPlayerMac::handleMouseUp(const LayoutPoint& locationInPageCoordinates, MonotonicTime timestamp)
+{
+ if (auto* page = this->page())
+ page->send(Messages::WebPageProxy::HandleMouseUpForModelElement([m_inlinePreview uuid].UUIDString, locationInPageCoordinates, timestamp));
+}
+
+}
+
#endif