Changeset 285922 in webkit
- Timestamp:
- Nov 17, 2021, 2:38:22 AM (5 years ago)
- Location:
- trunk/Source
- Files:
-
- 1 added
- 14 edited
- 4 copied
- 2 moved
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/Modules/model-element/HTMLModelElement.cpp (modified) (6 diffs)
-
WebCore/Modules/model-element/HTMLModelElement.h (modified) (2 diffs)
-
WebCore/Modules/model-element/ModelPlayer.h (modified) (1 diff)
-
WebCore/Modules/model-element/ModelPlayerClient.h (modified) (2 diffs)
-
WebCore/Modules/model-element/dummy/DummyModelPlayer.cpp (modified) (1 diff)
-
WebCore/Modules/model-element/dummy/DummyModelPlayer.h (modified) (1 diff)
-
WebCore/Modules/model-element/scenekit/SceneKitModelPlayer.h (modified) (1 diff)
-
WebCore/Modules/model-element/scenekit/SceneKitModelPlayer.mm (modified) (1 diff)
-
WebKit/ChangeLog (modified) (1 diff)
-
WebKit/SourcesCocoa.txt (modified) (1 diff)
-
WebKit/WebKit.xcodeproj/project.pbxproj (modified) (5 diffs)
-
WebKit/WebProcess/Model/ARKitInlinePreviewModelPlayer.h (copied) (copied from trunk/Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayer.h ) (1 diff)
-
WebKit/WebProcess/Model/ARKitInlinePreviewModelPlayer.mm (copied) (copied from trunk/Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.h ) (1 diff)
-
WebKit/WebProcess/Model/WebModelPlayerProvider.cpp (modified) (3 diffs)
-
WebKit/WebProcess/Model/ios (added)
-
WebKit/WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.h (copied) (copied from trunk/Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.h ) (1 diff)
-
WebKit/WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.mm (copied) (copied from trunk/Source/WebKit/WebProcess/Model/WebModelPlayerProvider.cpp ) (1 diff)
-
WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.h (moved) (moved from trunk/Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayer.h ) (2 diffs)
-
WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.mm (moved) (moved from trunk/Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayer.mm ) (7 diffs)
-
WebKit/WebProcess/WebProcess.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r285920 r285922 1 2021-11-17 Antoine Quint <graouts@webkit.org> 2 3 [Model] Create iOS ModelPlayer implementation 4 https://bugs.webkit.org/show_bug.cgi?id=233192 5 6 Reviewed by Dean Jackson. 7 8 Bug 232848 factored platform-specific code out of HTMLModelElement with the use of a new ModelPlayer 9 abstraction with a concrete ARKitInlinePreviewModelPlayer implementation. This first patch moved the 10 macOS code, and this patch moves the remaining iOS code. 11 12 To do so we make ARKitInlinePreviewModelPlayer a parent class of two platform-specific subclasses: 13 ARKitInlinePreviewModelPlayerMac and ARKitInlinePreviewModelPlayerIOS. We add a new enterFullscreen() 14 method to ModelPlayer, with an implementation in the iOS subclass. To support this new method, we 15 add a new platformLayerID() on ModelPlayerClient. 16 17 * Modules/model-element/HTMLModelElement.cpp: 18 (WebCore::HTMLModelElement::modelDidChange): 19 (WebCore::HTMLModelElement::usesPlatformLayer const): 20 (WebCore::HTMLModelElement::platformLayerID): 21 (WebCore::HTMLModelElement::enterFullscreen): 22 * Modules/model-element/HTMLModelElement.h: 23 * Modules/model-element/ModelPlayer.h: 24 * Modules/model-element/ModelPlayerClient.h: 25 * Modules/model-element/ModelPlayerProvider.h: 26 * Modules/model-element/dummy/DummyModelPlayer.cpp: 27 (WebCore::DummyModelPlayer::enterFullscreen): 28 * Modules/model-element/dummy/DummyModelPlayer.h: 29 * Modules/model-element/scenekit/SceneKitModelPlayer.h: 30 * Modules/model-element/scenekit/SceneKitModelPlayer.mm: 31 (WebCore::SceneKitModelPlayer::enterFullscreen): 32 1 33 2021-11-17 Rob Buis <rbuis@igalia.com> 2 34 -
trunk/Source/WebCore/Modules/model-element/HTMLModelElement.cpp
r285637 r285922 31 31 #include "CachedResourceLoader.h" 32 32 #include "DOMPromiseProxy.h" 33 #include "Document.h" 33 34 #include "ElementChildIterator.h" 34 35 #include "ElementInlines.h" 36 #include "GraphicsLayer.h" 37 #include "GraphicsLayerCA.h" 35 38 #include "HTMLNames.h" 36 39 #include "HTMLParserIdioms.h" … … 41 44 #include "ModelPlayer.h" 42 45 #include "ModelPlayerProvider.h" 46 #include "Page.h" 47 #include "RenderLayer.h" 48 #include "RenderLayerBacking.h" 43 49 #include "RenderLayerModelObject.h" 44 50 #include "RenderModel.h" 45 51 #include <wtf/IsoMallocInlines.h> 46 52 #include <wtf/URL.h> 47 48 #if ENABLE(ARKIT_INLINE_PREVIEW_IOS)49 #include "Chrome.h"50 #include "ChromeClient.h"51 #include "Document.h"52 #include "GraphicsLayer.h"53 #include "GraphicsLayerCA.h"54 #include "Page.h"55 #include "RenderLayer.h"56 #include "RenderLayerBacking.h"57 #endif58 53 59 54 namespace WebCore { … … 235 230 return; 236 231 237 // NOTE: For now, createModelPlayer returning nullptr means that the GraphicsLayer::setContentsToModel() path238 // is being used, but that needs to be phased out to allow bidirectional communication between the model player239 // and the HTMLModelElement. Once that is phased out, createModelPlayer() should be updated to return a Ref<>.240 232 m_modelPlayer = page->modelPlayerProvider().createModelPlayer(*this); 241 233 if (!m_modelPlayer) … … 245 237 // in with load probably doesn't make sense. 246 238 auto size = renderer->absoluteBoundingBoxRect(false).size(); 247 248 239 m_modelPlayer->load(*m_model, size); 249 240 } … … 251 242 bool HTMLModelElement::usesPlatformLayer() const 252 243 { 253 return m_modelPlayer != nullptr;244 return m_modelPlayer && m_modelPlayer->layer(); 254 245 } 255 246 … … 272 263 } 273 264 274 // MARK: - Fullscreen support. 275 276 void HTMLModelElement::enterFullscreen() 277 { 278 // FIXME: Add a new method to ModelPlayer for entering fullscreen and move this into the iOS ARKit inline preview ModelPlayer implementation. 279 #if ENABLE(ARKIT_INLINE_PREVIEW_IOS) 265 GraphicsLayer::PlatformLayerID HTMLModelElement::platformLayerID() 266 { 280 267 auto* page = document().page(); 281 268 if (!page) 282 return ;269 return 0; 283 270 284 271 if (!is<RenderLayerModelObject>(this->renderer())) 285 return ;272 return 0; 286 273 287 274 auto& renderLayerModelObject = downcast<RenderLayerModelObject>(*this->renderer()); 288 275 if (!renderLayerModelObject.isComposited() || !renderLayerModelObject.layer() || !renderLayerModelObject.layer()->backing()) 289 return ;276 return 0; 290 277 291 278 auto* graphicsLayer = renderLayerModelObject.layer()->backing()->graphicsLayer(); 292 279 if (!graphicsLayer) 293 return; 294 295 if (auto contentLayerId = graphicsLayer->contentsLayerIDForModel()) 296 page->chrome().client().takeModelElementFullscreen(contentLayerId); 297 #endif 280 return 0; 281 282 return graphicsLayer->contentsLayerIDForModel(); 283 } 284 285 // MARK: - Fullscreen support. 286 287 void HTMLModelElement::enterFullscreen() 288 { 289 m_modelPlayer->enterFullscreen(); 298 290 } 299 291 -
trunk/Source/WebCore/Modules/model-element/HTMLModelElement.h
r285637 r285922 31 31 #include "CachedRawResourceClient.h" 32 32 #include "CachedResourceHandle.h" 33 #include "GraphicsLayer.h" 33 34 #include "HTMLElement.h" 34 35 #include "IDLTypes.h" … … 90 91 void didFinishLoading(ModelPlayer&) final; 91 92 void didFailLoading(ModelPlayer&, const ResourceError&) final; 93 GraphicsLayer::PlatformLayerID platformLayerID() final; 92 94 93 95 URL m_sourceURL; -
trunk/Source/WebCore/Modules/model-element/ModelPlayer.h
r285637 r285922 41 41 virtual void load(Model&, LayoutSize) = 0; 42 42 virtual PlatformLayer* layer() = 0; 43 virtual void enterFullscreen() = 0; 43 44 }; 44 45 -
trunk/Source/WebCore/Modules/model-element/ModelPlayerClient.h
r285637 r285922 26 26 #pragma once 27 27 28 #include "GraphicsLayer.h" 28 29 #include <wtf/Forward.h> 29 30 #include <wtf/WeakPtr.h> … … 40 41 virtual void didFinishLoading(ModelPlayer&) = 0; 41 42 virtual void didFailLoading(ModelPlayer&, const ResourceError&) = 0; 43 virtual GraphicsLayer::PlatformLayerID platformLayerID() = 0; 42 44 }; 43 45 -
trunk/Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.cpp
r285637 r285922 55 55 } 56 56 57 void DummyModelPlayer::enterFullscreen() 58 { 57 59 } 60 61 } -
trunk/Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.h
r285637 r285922 42 42 43 43 // ModelPlayer overrides. 44 virtual void load(Model&, LayoutSize) override; 45 virtual PlatformLayer* layer() override; 44 void load(Model&, LayoutSize) override; 45 PlatformLayer* layer() override; 46 void enterFullscreen() override; 46 47 47 48 WeakPtr<ModelPlayerClient> m_client; -
trunk/Source/WebCore/Modules/model-element/scenekit/SceneKitModelPlayer.h
r285846 r285922 56 56 57 57 // ModelPlayer overrides. 58 virtual void load(Model&, LayoutSize) override; 59 virtual CALayer *layer() override; 58 void load(Model&, LayoutSize) override; 59 CALayer *layer() override; 60 void enterFullscreen() override; 60 61 61 62 // SceneKitModelLoaderClient overrides. -
trunk/Source/WebCore/Modules/model-element/scenekit/SceneKitModelPlayer.mm
r285846 r285922 73 73 } 74 74 75 void SceneKitModelPlayer::enterFullscreen() 76 { 77 } 78 75 79 // MARK: - SceneKitModelLoaderClient overrides. 76 80 -
trunk/Source/WebKit/ChangeLog
r285919 r285922 1 2021-11-17 Antoine Quint <graouts@webkit.org> 2 3 [Model] Create iOS ModelPlayer implementation 4 https://bugs.webkit.org/show_bug.cgi?id=233192 5 6 Reviewed by Dean Jackson. 7 8 Bug 232848 factored platform-specific code out of HTMLModelElement with the use of a new ModelPlayer 9 abstraction with a concrete ARKitInlinePreviewModelPlayer implementation. This first patch moved the 10 macOS code, and this patch moves the remaining iOS code. 11 12 To do so we make ARKitInlinePreviewModelPlayer a parent class of two platform-specific subclasses: 13 ARKitInlinePreviewModelPlayerMac and ARKitInlinePreviewModelPlayerIOS. We add a new enterFullscreen() 14 method to ModelPlayer, with an implementation in the iOS subclass. To support this new method, we 15 add a new platformLayerID() on ModelPlayerClient. 16 17 * SourcesCocoa.txt: 18 * WebKit.xcodeproj/project.pbxproj: 19 * WebProcess/Model/ARKitInlinePreviewModelPlayer.h: Added. 20 (WebKit::ARKitInlinePreviewModelPlayer::page): 21 (WebKit::ARKitInlinePreviewModelPlayer::client): 22 * WebProcess/Model/ARKitInlinePreviewModelPlayer.mm: Added. 23 (WebKit::ARKitInlinePreviewModelPlayer::ARKitInlinePreviewModelPlayer): 24 (WebKit::ARKitInlinePreviewModelPlayer::~ARKitInlinePreviewModelPlayer): 25 (WebKit::ARKitInlinePreviewModelPlayer::load): 26 (WebKit::ARKitInlinePreviewModelPlayer::layer): 27 (WebKit::ARKitInlinePreviewModelPlayer::enterFullscreen): 28 * WebProcess/Model/WebModelPlayerProvider.cpp: 29 (WebKit::WebModelPlayerProvider::createModelPlayer): 30 * WebProcess/Model/WebModelPlayerProvider.h: 31 * WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.h: Added. 32 * WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.mm: Added. 33 (WebKit::ARKitInlinePreviewModelPlayerIOS::create): 34 (WebKit::ARKitInlinePreviewModelPlayerIOS::ARKitInlinePreviewModelPlayerIOS): 35 (WebKit::ARKitInlinePreviewModelPlayerIOS::~ARKitInlinePreviewModelPlayerIOS): 36 (WebKit::ARKitInlinePreviewModelPlayerIOS::enterFullscreen): 37 * WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.h: Renamed from Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayer.h. 38 * WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.mm: Renamed from Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayer.mm. 39 (WebKit::ARKitInlinePreviewModelPlayerMac::create): 40 (WebKit::ARKitInlinePreviewModelPlayerMac::ARKitInlinePreviewModelPlayerMac): 41 (WebKit::ARKitInlinePreviewModelPlayerMac::~ARKitInlinePreviewModelPlayerMac): 42 (WebKit::ARKitInlinePreviewModelPlayerMac::setModelElementCacheDirectory): 43 (WebKit::ARKitInlinePreviewModelPlayerMac::createFile): 44 (WebKit::ARKitInlinePreviewModelPlayerMac::clearFile): 45 (WebKit::ARKitInlinePreviewModelPlayerMac::load): 46 (WebKit::ARKitInlinePreviewModelPlayerMac::layer): 47 * WebProcess/WebProcess.cpp: 48 (WebKit::WebProcess::setWebsiteDataStoreParameters): 49 1 50 2021-11-17 Zixing Liu <liushuyu011@gmail.com> 2 51 -
trunk/Source/WebKit/SourcesCocoa.txt
r285737 r285922 656 656 WebProcess/MediaCache/WebMediaKeyStorageManager.cpp 657 657 658 WebProcess/Model/mac/ARKitInlinePreviewModelPlayer.mm 658 WebProcess/Model/ARKitInlinePreviewModelPlayer.mm 659 WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.mm 660 WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.mm 659 661 660 662 WebProcess/Plugins/PDF/PDFPlugin.mm -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r285881 r285922 4621 4621 7137BA7E25F1540B00914EE3 /* ModelElementController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ModelElementController.cpp; sourceTree = "<group>"; }; 4622 4622 7137BA7F25F1540C00914EE3 /* ModelElementController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModelElementController.h; sourceTree = "<group>"; }; 4623 7177AD5B2743D7A9002F103B /* ARKitInlinePreviewModelPlayer.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ARKitInlinePreviewModelPlayer.mm; sourceTree = "<group>"; }; 4624 7177AD5C2743D7A9002F103B /* ARKitInlinePreviewModelPlayer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARKitInlinePreviewModelPlayer.h; sourceTree = "<group>"; }; 4625 7177AD662743F66C002F103B /* ARKitInlinePreviewModelPlayerIOS.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ARKitInlinePreviewModelPlayerIOS.mm; sourceTree = "<group>"; }; 4626 7177AD672743F66C002F103B /* ARKitInlinePreviewModelPlayerIOS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARKitInlinePreviewModelPlayerIOS.h; sourceTree = "<group>"; }; 4623 4627 71A676A422C62318007D6295 /* WKTouchActionGestureRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKTouchActionGestureRecognizer.h; path = ios/WKTouchActionGestureRecognizer.h; sourceTree = "<group>"; }; 4624 4628 71A676A522C62318007D6295 /* WKTouchActionGestureRecognizer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKTouchActionGestureRecognizer.mm; path = ios/WKTouchActionGestureRecognizer.mm; sourceTree = "<group>"; }; … … 5328 5332 BC2652121182608100243E12 /* DrawingAreaProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DrawingAreaProxy.cpp; sourceTree = "<group>"; }; 5329 5333 BC2652131182608100243E12 /* DrawingAreaProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DrawingAreaProxy.h; sourceTree = "<group>"; }; 5330 BC2B410C2732EF9600A2D191 /* ARKitInlinePreviewModelPlayer .h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARKitInlinePreviewModelPlayer.h; sourceTree = "<group>"; };5331 BC2B410D2732EF9600A2D191 /* ARKitInlinePreviewModelPlayer .mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ARKitInlinePreviewModelPlayer.mm; sourceTree = "<group>"; };5334 BC2B410C2732EF9600A2D191 /* ARKitInlinePreviewModelPlayerMac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ARKitInlinePreviewModelPlayerMac.h; sourceTree = "<group>"; }; 5335 BC2B410D2732EF9600A2D191 /* ARKitInlinePreviewModelPlayerMac.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ARKitInlinePreviewModelPlayerMac.mm; sourceTree = "<group>"; }; 5332 5336 BC2B411A2732F66E00A2D191 /* WebModelPlayerProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebModelPlayerProvider.h; sourceTree = "<group>"; }; 5333 5337 BC2B411B2732F66E00A2D191 /* WebModelPlayerProvider.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebModelPlayerProvider.cpp; sourceTree = "<group>"; }; … … 9520 9524 sourceTree = "<group>"; 9521 9525 }; 9526 7177AD652743F66C002F103B /* ios */ = { 9527 isa = PBXGroup; 9528 children = ( 9529 7177AD672743F66C002F103B /* ARKitInlinePreviewModelPlayerIOS.h */, 9530 7177AD662743F66C002F103B /* ARKitInlinePreviewModelPlayerIOS.mm */, 9531 ); 9532 path = ios; 9533 sourceTree = "<group>"; 9534 }; 9522 9535 727A7F3324078527004D2931 /* cocoa */ = { 9523 9536 isa = PBXGroup; … … 10841 10854 isa = PBXGroup; 10842 10855 children = ( 10856 7177AD652743F66C002F103B /* ios */, 10843 10857 BC2B410B2732EF7500A2D191 /* mac */, 10858 7177AD5C2743D7A9002F103B /* ARKitInlinePreviewModelPlayer.h */, 10859 7177AD5B2743D7A9002F103B /* ARKitInlinePreviewModelPlayer.mm */, 10844 10860 BC2B411B2732F66E00A2D191 /* WebModelPlayerProvider.cpp */, 10845 10861 BC2B411A2732F66E00A2D191 /* WebModelPlayerProvider.h */, … … 10851 10867 isa = PBXGroup; 10852 10868 children = ( 10853 BC2B410C2732EF9600A2D191 /* ARKitInlinePreviewModelPlayer .h */,10854 BC2B410D2732EF9600A2D191 /* ARKitInlinePreviewModelPlayer .mm */,10869 BC2B410C2732EF9600A2D191 /* ARKitInlinePreviewModelPlayerMac.h */, 10870 BC2B410D2732EF9600A2D191 /* ARKitInlinePreviewModelPlayerMac.mm */, 10855 10871 ); 10856 10872 path = mac; -
trunk/Source/WebKit/WebProcess/Model/ARKitInlinePreviewModelPlayer.h
r285921 r285922 26 26 #pragma once 27 27 28 #if ENABLE(ARKIT_INLINE_PREVIEW _MAC)28 #if ENABLE(ARKIT_INLINE_PREVIEW) 29 29 30 30 #include <WebCore/ModelPlayer.h> 31 31 #include <WebCore/ModelPlayerClient.h> 32 32 #include <wtf/Compiler.h> 33 #include <wtf/RetainPtr.h>34 35 OBJC_CLASS ASVInlinePreview;36 33 37 34 namespace WebKit { 38 35 39 class ARKitInlinePreviewModelPlayer final: public WebCore::ModelPlayer, public CanMakeWeakPtr<ARKitInlinePreviewModelPlayer> {36 class ARKitInlinePreviewModelPlayer : public WebCore::ModelPlayer, public CanMakeWeakPtr<ARKitInlinePreviewModelPlayer> { 40 37 public: 41 static Ref<ARKitInlinePreviewModelPlayer> create(WebPage&, WebCore::ModelPlayerClient&);42 38 virtual ~ARKitInlinePreviewModelPlayer(); 43 39 44 static void setModelElementCacheDirectory(const String&); 40 protected: 41 explicit ARKitInlinePreviewModelPlayer(WebPage&, WebCore::ModelPlayerClient&); 42 43 WebPage* page() { return m_page.get(); } 44 WebCore::ModelPlayerClient* client() { return m_client.get(); } 45 45 46 46 private: 47 ARKitInlinePreviewModelPlayer(WebPage&, WebCore::ModelPlayerClient&);48 49 47 // WebCore::ModelPlayer overrides. 50 virtual void load(WebCore::Model&, WebCore::LayoutSize) override; 51 virtual PlatformLayer* layer() override; 52 53 void createFile(WebCore::Model&); 54 void clearFile(); 48 void load(WebCore::Model&, WebCore::LayoutSize) override; 49 PlatformLayer* layer() override; 50 void enterFullscreen() override; 55 51 56 52 WeakPtr<WebPage> m_page; 57 53 WeakPtr<WebCore::ModelPlayerClient> m_client; 58 59 String m_filePath;60 RetainPtr<ASVInlinePreview> m_inlinePreview;61 54 }; 62 55 -
trunk/Source/WebKit/WebProcess/Model/ARKitInlinePreviewModelPlayer.mm
r285921 r285922 24 24 */ 25 25 26 #pragma once 26 #import "config.h" 27 #import "ARKitInlinePreviewModelPlayer.h" 27 28 28 #include "ModelPlayer.h" 29 #include "ModelPlayerClient.h" 30 #include <wtf/Forward.h> 31 #include <wtf/WeakPtr.h> 29 #if ENABLE(ARKIT_INLINE_PREVIEW) 32 30 33 namespace WebCore { 31 #import "WebPage.h" 34 32 35 class WEBCORE_EXPORT DummyModelPlayer final : public ModelPlayer { 36 public: 37 static Ref<DummyModelPlayer> create(ModelPlayerClient&); 38 virtual ~DummyModelPlayer(); 33 namespace WebKit { 39 34 40 private: 41 DummyModelPlayer(ModelPlayerClient&); 35 ARKitInlinePreviewModelPlayer::ARKitInlinePreviewModelPlayer(WebPage& page, WebCore::ModelPlayerClient& client) 36 : m_page { page } 37 , m_client { client } 38 { 39 } 42 40 43 // ModelPlayer overrides. 44 virtual void load(Model&, LayoutSize) override; 45 virtual PlatformLayer* layer() override; 41 ARKitInlinePreviewModelPlayer::~ARKitInlinePreviewModelPlayer() 42 { 43 } 46 44 47 WeakPtr<ModelPlayerClient> m_client; 48 }; 45 void ARKitInlinePreviewModelPlayer::load(WebCore::Model&, WebCore::LayoutSize) 46 { 47 } 48 49 PlatformLayer* ARKitInlinePreviewModelPlayer::layer() 50 { 51 return nullptr; 52 } 53 54 void ARKitInlinePreviewModelPlayer::enterFullscreen() 55 { 56 } 49 57 50 58 } 59 60 #endif -
trunk/Source/WebKit/WebProcess/Model/WebModelPlayerProvider.cpp
r285846 r285922 31 31 32 32 #if ENABLE(ARKIT_INLINE_PREVIEW_MAC) 33 #include "ARKitInlinePreviewModelPlayer.h" 33 #include "ARKitInlinePreviewModelPlayerMac.h" 34 #endif 35 36 #if ENABLE(ARKIT_INLINE_PREVIEW_IOS) 37 #include "ARKitInlinePreviewModelPlayerIOS.h" 34 38 #endif 35 39 … … 52 56 RefPtr<WebCore::ModelPlayer> WebModelPlayerProvider::createModelPlayer(WebCore::ModelPlayerClient& client) 53 57 { 54 UNUSED_PARAM(client);55 56 58 #if ENABLE(ARKIT_INLINE_PREVIEW_MAC) 57 59 if (m_page.useARKitForModel()) 58 return ARKitInlinePreviewModelPlayer ::create(m_page, client);60 return ARKitInlinePreviewModelPlayerMac::create(m_page, client); 59 61 #endif 60 62 #if HAVE(SCENEKIT) … … 62 64 return WebCore::SceneKitModelPlayer::create(client); 63 65 #endif 66 #if ENABLE(ARKIT_INLINE_PREVIEW_IOS) 67 return ARKitInlinePreviewModelPlayerIOS::create(m_page, client); 68 #endif 64 69 70 UNUSED_PARAM(client); 65 71 return nullptr; 66 72 } -
trunk/Source/WebKit/WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.h
r285921 r285922 26 26 #pragma once 27 27 28 #include "ModelPlayer.h" 29 #include "ModelPlayerClient.h" 30 #include <wtf/Forward.h> 31 #include <wtf/WeakPtr.h> 28 #if ENABLE(ARKIT_INLINE_PREVIEW_IOS) 32 29 33 namespace WebCore { 30 #include "ARKitInlinePreviewModelPlayer.h" 31 #include <WebCore/ModelPlayer.h> 32 #include <WebCore/ModelPlayerClient.h> 34 33 35 class WEBCORE_EXPORT DummyModelPlayer final : public ModelPlayer { 34 namespace WebKit { 35 36 class ARKitInlinePreviewModelPlayerIOS final : public ARKitInlinePreviewModelPlayer { 36 37 public: 37 static Ref< DummyModelPlayer> create(ModelPlayerClient&);38 virtual ~ DummyModelPlayer();38 static Ref<ARKitInlinePreviewModelPlayerIOS> create(WebPage&, WebCore::ModelPlayerClient&); 39 virtual ~ARKitInlinePreviewModelPlayerIOS(); 39 40 40 41 private: 41 DummyModelPlayer(ModelPlayerClient&);42 ARKitInlinePreviewModelPlayerIOS(WebPage&, WebCore::ModelPlayerClient&); 42 43 43 // ModelPlayer overrides. 44 virtual void load(Model&, LayoutSize) override; 45 virtual PlatformLayer* layer() override; 46 47 WeakPtr<ModelPlayerClient> m_client; 44 // WebCore::ModelPlayer overrides. 45 void enterFullscreen() override; 48 46 }; 49 47 50 48 } 49 50 #endif -
trunk/Source/WebKit/WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.mm
r285921 r285922 24 24 */ 25 25 26 #i nclude"config.h"27 #i nclude "WebModelPlayerProvider.h"26 #import "config.h" 27 #import "ARKitInlinePreviewModelPlayerIOS.h" 28 28 29 #include "WebPage.h" 30 #include <WebCore/ModelPlayer.h> 29 #if ENABLE(ARKIT_INLINE_PREVIEW_IOS) 31 30 32 #if ENABLE(ARKIT_INLINE_PREVIEW_MAC) 33 #include "ARKitInlinePreviewModelPlayer.h" 34 #endif 35 36 #if HAVE(SCENEKIT) 37 #include <WebCore/SceneKitModelPlayer.h> 38 #endif 31 #import "WebPage.h" 32 #import "WebPageProxyMessages.h" 33 #import <WebCore/GraphicsLayer.h> 39 34 40 35 namespace WebKit { 41 36 42 WebModelPlayerProvider::WebModelPlayerProvider(WebPage& page) 43 : m_page { page } 37 Ref<ARKitInlinePreviewModelPlayerIOS> ARKitInlinePreviewModelPlayerIOS::create(WebPage& page, WebCore::ModelPlayerClient& client) 44 38 { 45 UNUSED_PARAM(m_page);39 return adoptRef(*new ARKitInlinePreviewModelPlayerIOS(page, client)); 46 40 } 47 41 48 WebModelPlayerProvider::~WebModelPlayerProvider() = default; 42 ARKitInlinePreviewModelPlayerIOS::ARKitInlinePreviewModelPlayerIOS(WebPage& page, WebCore::ModelPlayerClient& client) 43 : ARKitInlinePreviewModelPlayer(page, client) 44 { 45 } 49 46 50 // MARK: - WebCore::ModelPlayerProvider overrides. 47 ARKitInlinePreviewModelPlayerIOS::~ARKitInlinePreviewModelPlayerIOS() 48 { 49 } 51 50 52 RefPtr<WebCore::ModelPlayer> WebModelPlayerProvider::createModelPlayer(WebCore::ModelPlayerClient& client) 51 // MARK: - WebCore::ModelPlayer overrides. 52 53 void ARKitInlinePreviewModelPlayerIOS::enterFullscreen() 53 54 { 54 UNUSED_PARAM(client); 55 if (!client() || !page()) 56 return; 55 57 56 #if ENABLE(ARKIT_INLINE_PREVIEW_MAC) 57 if (m_page.useARKitForModel()) 58 return ARKitInlinePreviewModelPlayer::create(m_page, client); 59 #endif 60 #if HAVE(SCENEKIT) 61 if (m_page.useSceneKitForModel()) 62 return WebCore::SceneKitModelPlayer::create(client); 63 #endif 64 65 return nullptr; 58 if (auto layerId = client()->platformLayerID()) 59 page()->takeModelElementFullscreen(layerId); 66 60 } 67 61 68 62 } 63 64 #endif -
trunk/Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.h
r285921 r285922 28 28 #if ENABLE(ARKIT_INLINE_PREVIEW_MAC) 29 29 30 #include "ARKitInlinePreviewModelPlayer.h" 30 31 #include <WebCore/ModelPlayer.h> 31 32 #include <WebCore/ModelPlayerClient.h> … … 37 38 namespace WebKit { 38 39 39 class ARKitInlinePreviewModelPlayer final : public WebCore::ModelPlayer, public CanMakeWeakPtr<ARKitInlinePreviewModelPlayer>{40 class ARKitInlinePreviewModelPlayerMac final : public ARKitInlinePreviewModelPlayer { 40 41 public: 41 static Ref<ARKitInlinePreviewModelPlayer > create(WebPage&, WebCore::ModelPlayerClient&);42 virtual ~ARKitInlinePreviewModelPlayer ();42 static Ref<ARKitInlinePreviewModelPlayerMac> create(WebPage&, WebCore::ModelPlayerClient&); 43 virtual ~ARKitInlinePreviewModelPlayerMac(); 43 44 44 45 static void setModelElementCacheDirectory(const String&); 45 46 46 47 private: 47 ARKitInlinePreviewModelPlayer (WebPage&, WebCore::ModelPlayerClient&);48 ARKitInlinePreviewModelPlayerMac(WebPage&, WebCore::ModelPlayerClient&); 48 49 49 50 // WebCore::ModelPlayer overrides. 50 v irtual void load(WebCore::Model&, WebCore::LayoutSize) override;51 virtualPlatformLayer* layer() override;51 void load(WebCore::Model&, WebCore::LayoutSize) override; 52 PlatformLayer* layer() override; 52 53 53 54 void createFile(WebCore::Model&); 54 55 void clearFile(); 55 56 WeakPtr<WebPage> m_page;57 WeakPtr<WebCore::ModelPlayerClient> m_client;58 56 59 57 String m_filePath; -
trunk/Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.mm
r285921 r285922 25 25 26 26 #import "config.h" 27 #import "ARKitInlinePreviewModelPlayerMac.h" 27 28 28 29 #if ENABLE(ARKIT_INLINE_PREVIEW_MAC) 29 30 #import "ARKitInlinePreviewModelPlayer.h"31 30 32 31 #import "WebPage.h" … … 42 41 namespace WebKit { 43 42 44 Ref<ARKitInlinePreviewModelPlayer > ARKitInlinePreviewModelPlayer::create(WebPage& page, WebCore::ModelPlayerClient& client)43 Ref<ARKitInlinePreviewModelPlayerMac> ARKitInlinePreviewModelPlayerMac::create(WebPage& page, WebCore::ModelPlayerClient& client) 45 44 { 46 return adoptRef(*new ARKitInlinePreviewModelPlayer (page, client));45 return adoptRef(*new ARKitInlinePreviewModelPlayerMac(page, client)); 47 46 } 48 47 49 ARKitInlinePreviewModelPlayer::ARKitInlinePreviewModelPlayer(WebPage& page, WebCore::ModelPlayerClient& client) 50 : m_page { page } 51 , m_client { client } 48 ARKitInlinePreviewModelPlayerMac::ARKitInlinePreviewModelPlayerMac(WebPage& page, WebCore::ModelPlayerClient& client) 49 : ARKitInlinePreviewModelPlayer(page, client) 52 50 { 53 51 } 54 52 55 ARKitInlinePreviewModelPlayer ::~ARKitInlinePreviewModelPlayer()53 ARKitInlinePreviewModelPlayerMac::~ARKitInlinePreviewModelPlayerMac() 56 54 { 57 55 clearFile(); … … 69 67 } 70 68 71 void ARKitInlinePreviewModelPlayer ::setModelElementCacheDirectory(const String& path)69 void ARKitInlinePreviewModelPlayerMac::setModelElementCacheDirectory(const String& path) 72 70 { 73 71 sharedModelElementCacheDirectory() = path; 74 72 } 75 73 76 void ARKitInlinePreviewModelPlayer ::createFile(WebCore::Model& modelSource)74 void ARKitInlinePreviewModelPlayerMac::createFile(WebCore::Model& modelSource) 77 75 { 78 76 // The need for a file is only temporary due to the nature of ASVInlinePreview, … … 107 105 } 108 106 109 void ARKitInlinePreviewModelPlayer ::clearFile()107 void ARKitInlinePreviewModelPlayerMac::clearFile() 110 108 { 111 109 if (m_filePath.isEmpty()) … … 118 116 // MARK: - WebCore::ModelPlayer overrides. 119 117 120 void ARKitInlinePreviewModelPlayer ::load(WebCore::Model& modelSource, WebCore::LayoutSize size)118 void ARKitInlinePreviewModelPlayerMac::load(WebCore::Model& modelSource, WebCore::LayoutSize size) 121 119 { 122 auto strongClient = m_client.get();120 auto strongClient = client(); 123 121 if (!strongClient) 124 122 return; 125 123 126 auto* strongPage = m_page.get();124 auto* strongPage = page(); 127 125 if (!strongPage) { 128 126 strongClient->didFailLoading(*this, WebCore::ResourceError { WebCore::errorDomainWebKitInternal, 0, modelSource.url(), "WebPage destroyed"_s }); … … 140 138 return; 141 139 142 auto strongClient = strongSelf-> m_client.get();140 auto strongClient = strongSelf->client(); 143 141 if (!strongClient) 144 142 return; … … 168 166 } 169 167 170 PlatformLayer* ARKitInlinePreviewModelPlayer ::layer()168 PlatformLayer* ARKitInlinePreviewModelPlayerMac::layer() 171 169 { 172 170 return [m_inlinePreview layer]; -
trunk/Source/WebKit/WebProcess/WebProcess.cpp
r285648 r285922 147 147 148 148 #if ENABLE(ARKIT_INLINE_PREVIEW_MAC) 149 #include "ARKitInlinePreviewModelPlayer .h"149 #include "ARKitInlinePreviewModelPlayerMac.h" 150 150 #endif 151 151 … … 606 606 #if ENABLE(ARKIT_INLINE_PREVIEW_MAC) 607 607 if (!parameters.modelElementCacheDirectory.isEmpty()) 608 ARKitInlinePreviewModelPlayer ::setModelElementCacheDirectory(parameters.modelElementCacheDirectory);608 ARKitInlinePreviewModelPlayerMac::setModelElementCacheDirectory(parameters.modelElementCacheDirectory); 609 609 #endif 610 610
Note:
See TracChangeset
for help on using the changeset viewer.