⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 285922 in webkit


Ignore:
Timestamp:
Nov 17, 2021, 2:38:22 AM (5 years ago)
Author:
graouts@webkit.org
Message:

[Model] Create iOS ModelPlayer implementation
https://bugs.webkit.org/show_bug.cgi?id=233192

Reviewed by Dean Jackson.

Bug 232848 factored platform-specific code out of HTMLModelElement with the use of a new ModelPlayer
abstraction with a concrete ARKitInlinePreviewModelPlayer implementation. This first patch moved the
macOS code, and this patch moves the remaining iOS code.

To do so we make ARKitInlinePreviewModelPlayer a parent class of two platform-specific subclasses:
ARKitInlinePreviewModelPlayerMac and ARKitInlinePreviewModelPlayerIOS. We add a new enterFullscreen()
method to ModelPlayer, with an implementation in the iOS subclass. To support this new method, we
add a new platformLayerID() on ModelPlayerClient.

Source/WebCore:

  • Modules/model-element/HTMLModelElement.cpp:

(WebCore::HTMLModelElement::modelDidChange):
(WebCore::HTMLModelElement::usesPlatformLayer const):
(WebCore::HTMLModelElement::platformLayerID):
(WebCore::HTMLModelElement::enterFullscreen):

  • Modules/model-element/HTMLModelElement.h:
  • Modules/model-element/ModelPlayer.h:
  • Modules/model-element/ModelPlayerClient.h:
  • Modules/model-element/ModelPlayerProvider.h:
  • Modules/model-element/dummy/DummyModelPlayer.cpp:

(WebCore::DummyModelPlayer::enterFullscreen):

  • Modules/model-element/dummy/DummyModelPlayer.h:
  • Modules/model-element/scenekit/SceneKitModelPlayer.h:
  • Modules/model-element/scenekit/SceneKitModelPlayer.mm:

(WebCore::SceneKitModelPlayer::enterFullscreen):

Source/WebKit:

  • SourcesCocoa.txt:
  • WebKit.xcodeproj/project.pbxproj:
  • WebProcess/Model/ARKitInlinePreviewModelPlayer.h: Added.

(WebKit::ARKitInlinePreviewModelPlayer::page):
(WebKit::ARKitInlinePreviewModelPlayer::client):

  • WebProcess/Model/ARKitInlinePreviewModelPlayer.mm: Added.

(WebKit::ARKitInlinePreviewModelPlayer::ARKitInlinePreviewModelPlayer):
(WebKit::ARKitInlinePreviewModelPlayer::~ARKitInlinePreviewModelPlayer):
(WebKit::ARKitInlinePreviewModelPlayer::load):
(WebKit::ARKitInlinePreviewModelPlayer::layer):
(WebKit::ARKitInlinePreviewModelPlayer::enterFullscreen):

  • WebProcess/Model/WebModelPlayerProvider.cpp:

(WebKit::WebModelPlayerProvider::createModelPlayer):

  • WebProcess/Model/WebModelPlayerProvider.h:
  • WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.h: Added.
  • WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.mm: Added.

(WebKit::ARKitInlinePreviewModelPlayerIOS::create):
(WebKit::ARKitInlinePreviewModelPlayerIOS::ARKitInlinePreviewModelPlayerIOS):
(WebKit::ARKitInlinePreviewModelPlayerIOS::~ARKitInlinePreviewModelPlayerIOS):
(WebKit::ARKitInlinePreviewModelPlayerIOS::enterFullscreen):

  • WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.h: Renamed from Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayer.h.
  • WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.mm: Renamed from Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayer.mm.

(WebKit::ARKitInlinePreviewModelPlayerMac::create):
(WebKit::ARKitInlinePreviewModelPlayerMac::ARKitInlinePreviewModelPlayerMac):
(WebKit::ARKitInlinePreviewModelPlayerMac::~ARKitInlinePreviewModelPlayerMac):
(WebKit::ARKitInlinePreviewModelPlayerMac::setModelElementCacheDirectory):
(WebKit::ARKitInlinePreviewModelPlayerMac::createFile):
(WebKit::ARKitInlinePreviewModelPlayerMac::clearFile):
(WebKit::ARKitInlinePreviewModelPlayerMac::load):
(WebKit::ARKitInlinePreviewModelPlayerMac::layer):

  • WebProcess/WebProcess.cpp:

(WebKit::WebProcess::setWebsiteDataStoreParameters):

Location:
trunk/Source
Files:
1 added
14 edited
4 copied
2 moved

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r285920 r285922  
     12021-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
    1332021-11-17  Rob Buis  <rbuis@igalia.com>
    234
  • trunk/Source/WebCore/Modules/model-element/HTMLModelElement.cpp

    r285637 r285922  
    3131#include "CachedResourceLoader.h"
    3232#include "DOMPromiseProxy.h"
     33#include "Document.h"
    3334#include "ElementChildIterator.h"
    3435#include "ElementInlines.h"
     36#include "GraphicsLayer.h"
     37#include "GraphicsLayerCA.h"
    3538#include "HTMLNames.h"
    3639#include "HTMLParserIdioms.h"
     
    4144#include "ModelPlayer.h"
    4245#include "ModelPlayerProvider.h"
     46#include "Page.h"
     47#include "RenderLayer.h"
     48#include "RenderLayerBacking.h"
    4349#include "RenderLayerModelObject.h"
    4450#include "RenderModel.h"
    4551#include <wtf/IsoMallocInlines.h>
    4652#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 #endif
    5853
    5954namespace WebCore {
     
    235230        return;
    236231
    237     // NOTE: For now, createModelPlayer returning nullptr means that the GraphicsLayer::setContentsToModel() path
    238     // is being used, but that needs to be phased out to allow bidirectional communication between the model player
    239     // and the HTMLModelElement. Once that is phased out, createModelPlayer() should be updated to return a Ref<>.
    240232    m_modelPlayer = page->modelPlayerProvider().createModelPlayer(*this);
    241233    if (!m_modelPlayer)
     
    245237    // in with load probably doesn't make sense.
    246238    auto size = renderer->absoluteBoundingBoxRect(false).size();
    247 
    248239    m_modelPlayer->load(*m_model, size);
    249240}
     
    251242bool HTMLModelElement::usesPlatformLayer() const
    252243{
    253     return m_modelPlayer != nullptr;
     244    return m_modelPlayer && m_modelPlayer->layer();
    254245}
    255246
     
    272263}
    273264
    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)
     265GraphicsLayer::PlatformLayerID HTMLModelElement::platformLayerID()
     266{
    280267    auto* page = document().page();
    281268    if (!page)
    282         return;
     269        return 0;
    283270
    284271    if (!is<RenderLayerModelObject>(this->renderer()))
    285         return;
     272        return 0;
    286273
    287274    auto& renderLayerModelObject = downcast<RenderLayerModelObject>(*this->renderer());
    288275    if (!renderLayerModelObject.isComposited() || !renderLayerModelObject.layer() || !renderLayerModelObject.layer()->backing())
    289         return;
     276        return 0;
    290277
    291278    auto* graphicsLayer = renderLayerModelObject.layer()->backing()->graphicsLayer();
    292279    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
     287void HTMLModelElement::enterFullscreen()
     288{
     289    m_modelPlayer->enterFullscreen();
    298290}
    299291
  • trunk/Source/WebCore/Modules/model-element/HTMLModelElement.h

    r285637 r285922  
    3131#include "CachedRawResourceClient.h"
    3232#include "CachedResourceHandle.h"
     33#include "GraphicsLayer.h"
    3334#include "HTMLElement.h"
    3435#include "IDLTypes.h"
     
    9091    void didFinishLoading(ModelPlayer&) final;
    9192    void didFailLoading(ModelPlayer&, const ResourceError&) final;
     93    GraphicsLayer::PlatformLayerID platformLayerID() final;
    9294
    9395    URL m_sourceURL;
  • trunk/Source/WebCore/Modules/model-element/ModelPlayer.h

    r285637 r285922  
    4141    virtual void load(Model&, LayoutSize) = 0;
    4242    virtual PlatformLayer* layer() = 0;
     43    virtual void enterFullscreen() = 0;
    4344};
    4445
  • trunk/Source/WebCore/Modules/model-element/ModelPlayerClient.h

    r285637 r285922  
    2626#pragma once
    2727
     28#include "GraphicsLayer.h"
    2829#include <wtf/Forward.h>
    2930#include <wtf/WeakPtr.h>
     
    4041    virtual void didFinishLoading(ModelPlayer&) = 0;
    4142    virtual void didFailLoading(ModelPlayer&, const ResourceError&) = 0;
     43    virtual GraphicsLayer::PlatformLayerID platformLayerID() = 0;
    4244};
    4345
  • trunk/Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.cpp

    r285637 r285922  
    5555}
    5656
     57void DummyModelPlayer::enterFullscreen()
     58{
    5759}
     60
     61}
  • trunk/Source/WebCore/Modules/model-element/dummy/DummyModelPlayer.h

    r285637 r285922  
    4242
    4343    // 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;
    4647
    4748    WeakPtr<ModelPlayerClient> m_client;
  • trunk/Source/WebCore/Modules/model-element/scenekit/SceneKitModelPlayer.h

    r285846 r285922  
    5656
    5757    // 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;
    6061
    6162    // SceneKitModelLoaderClient overrides.
  • trunk/Source/WebCore/Modules/model-element/scenekit/SceneKitModelPlayer.mm

    r285846 r285922  
    7373}
    7474
     75void SceneKitModelPlayer::enterFullscreen()
     76{
     77}
     78
    7579// MARK: - SceneKitModelLoaderClient overrides.
    7680
  • trunk/Source/WebKit/ChangeLog

    r285919 r285922  
     12021-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
    1502021-11-17  Zixing Liu  <liushuyu011@gmail.com>
    251
  • trunk/Source/WebKit/SourcesCocoa.txt

    r285737 r285922  
    656656WebProcess/MediaCache/WebMediaKeyStorageManager.cpp
    657657
    658 WebProcess/Model/mac/ARKitInlinePreviewModelPlayer.mm
     658WebProcess/Model/ARKitInlinePreviewModelPlayer.mm
     659WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.mm
     660WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.mm
    659661
    660662WebProcess/Plugins/PDF/PDFPlugin.mm
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r285881 r285922  
    46214621                7137BA7E25F1540B00914EE3 /* ModelElementController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ModelElementController.cpp; sourceTree = "<group>"; };
    46224622                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>"; };
    46234627                71A676A422C62318007D6295 /* WKTouchActionGestureRecognizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WKTouchActionGestureRecognizer.h; path = ios/WKTouchActionGestureRecognizer.h; sourceTree = "<group>"; };
    46244628                71A676A522C62318007D6295 /* WKTouchActionGestureRecognizer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKTouchActionGestureRecognizer.mm; path = ios/WKTouchActionGestureRecognizer.mm; sourceTree = "<group>"; };
     
    53285332                BC2652121182608100243E12 /* DrawingAreaProxy.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DrawingAreaProxy.cpp; sourceTree = "<group>"; };
    53295333                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>"; };
    53325336                BC2B411A2732F66E00A2D191 /* WebModelPlayerProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebModelPlayerProvider.h; sourceTree = "<group>"; };
    53335337                BC2B411B2732F66E00A2D191 /* WebModelPlayerProvider.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebModelPlayerProvider.cpp; sourceTree = "<group>"; };
     
    95209524                        sourceTree = "<group>";
    95219525                };
     9526                7177AD652743F66C002F103B /* ios */ = {
     9527                        isa = PBXGroup;
     9528                        children = (
     9529                                7177AD672743F66C002F103B /* ARKitInlinePreviewModelPlayerIOS.h */,
     9530                                7177AD662743F66C002F103B /* ARKitInlinePreviewModelPlayerIOS.mm */,
     9531                        );
     9532                        path = ios;
     9533                        sourceTree = "<group>";
     9534                };
    95229535                727A7F3324078527004D2931 /* cocoa */ = {
    95239536                        isa = PBXGroup;
     
    1084110854                        isa = PBXGroup;
    1084210855                        children = (
     10856                                7177AD652743F66C002F103B /* ios */,
    1084310857                                BC2B410B2732EF7500A2D191 /* mac */,
     10858                                7177AD5C2743D7A9002F103B /* ARKitInlinePreviewModelPlayer.h */,
     10859                                7177AD5B2743D7A9002F103B /* ARKitInlinePreviewModelPlayer.mm */,
    1084410860                                BC2B411B2732F66E00A2D191 /* WebModelPlayerProvider.cpp */,
    1084510861                                BC2B411A2732F66E00A2D191 /* WebModelPlayerProvider.h */,
     
    1085110867                        isa = PBXGroup;
    1085210868                        children = (
    10853                                 BC2B410C2732EF9600A2D191 /* ARKitInlinePreviewModelPlayer.h */,
    10854                                 BC2B410D2732EF9600A2D191 /* ARKitInlinePreviewModelPlayer.mm */,
     10869                                BC2B410C2732EF9600A2D191 /* ARKitInlinePreviewModelPlayerMac.h */,
     10870                                BC2B410D2732EF9600A2D191 /* ARKitInlinePreviewModelPlayerMac.mm */,
    1085510871                        );
    1085610872                        path = mac;
  • trunk/Source/WebKit/WebProcess/Model/ARKitInlinePreviewModelPlayer.h

    r285921 r285922  
    2626#pragma once
    2727
    28 #if ENABLE(ARKIT_INLINE_PREVIEW_MAC)
     28#if ENABLE(ARKIT_INLINE_PREVIEW)
    2929
    3030#include <WebCore/ModelPlayer.h>
    3131#include <WebCore/ModelPlayerClient.h>
    3232#include <wtf/Compiler.h>
    33 #include <wtf/RetainPtr.h>
    34 
    35 OBJC_CLASS ASVInlinePreview;
    3633
    3734namespace WebKit {
    3835
    39 class ARKitInlinePreviewModelPlayer final : public WebCore::ModelPlayer, public CanMakeWeakPtr<ARKitInlinePreviewModelPlayer> {
     36class ARKitInlinePreviewModelPlayer : public WebCore::ModelPlayer, public CanMakeWeakPtr<ARKitInlinePreviewModelPlayer> {
    4037public:
    41     static Ref<ARKitInlinePreviewModelPlayer> create(WebPage&, WebCore::ModelPlayerClient&);
    4238    virtual ~ARKitInlinePreviewModelPlayer();
    4339
    44     static void setModelElementCacheDirectory(const String&);
     40protected:
     41    explicit ARKitInlinePreviewModelPlayer(WebPage&, WebCore::ModelPlayerClient&);
     42
     43    WebPage* page() { return m_page.get(); }
     44    WebCore::ModelPlayerClient* client() { return m_client.get(); }
    4545
    4646private:
    47     ARKitInlinePreviewModelPlayer(WebPage&, WebCore::ModelPlayerClient&);
    48 
    4947    // 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;
    5551
    5652    WeakPtr<WebPage> m_page;
    5753    WeakPtr<WebCore::ModelPlayerClient> m_client;
    58 
    59     String m_filePath;
    60     RetainPtr<ASVInlinePreview> m_inlinePreview;
    6154};
    6255
  • trunk/Source/WebKit/WebProcess/Model/ARKitInlinePreviewModelPlayer.mm

    r285921 r285922  
    2424 */
    2525
    26 #pragma once
     26#import "config.h"
     27#import "ARKitInlinePreviewModelPlayer.h"
    2728
    28 #include "ModelPlayer.h"
    29 #include "ModelPlayerClient.h"
    30 #include <wtf/Forward.h>
    31 #include <wtf/WeakPtr.h>
     29#if ENABLE(ARKIT_INLINE_PREVIEW)
    3230
    33 namespace WebCore {
     31#import "WebPage.h"
    3432
    35 class WEBCORE_EXPORT DummyModelPlayer final : public ModelPlayer {
    36 public:
    37     static Ref<DummyModelPlayer> create(ModelPlayerClient&);
    38     virtual ~DummyModelPlayer();
     33namespace WebKit {
    3934
    40 private:
    41     DummyModelPlayer(ModelPlayerClient&);
     35ARKitInlinePreviewModelPlayer::ARKitInlinePreviewModelPlayer(WebPage& page, WebCore::ModelPlayerClient& client)
     36    : m_page { page }
     37    , m_client { client }
     38{
     39}
    4240
    43     // ModelPlayer overrides.
    44     virtual void load(Model&, LayoutSize) override;
    45     virtual PlatformLayer* layer() override;
     41ARKitInlinePreviewModelPlayer::~ARKitInlinePreviewModelPlayer()
     42{
     43}
    4644
    47     WeakPtr<ModelPlayerClient> m_client;
    48 };
     45void ARKitInlinePreviewModelPlayer::load(WebCore::Model&, WebCore::LayoutSize)
     46{
     47}
     48
     49PlatformLayer* ARKitInlinePreviewModelPlayer::layer()
     50{
     51    return nullptr;
     52}
     53
     54void ARKitInlinePreviewModelPlayer::enterFullscreen()
     55{
     56}
    4957
    5058}
     59
     60#endif
  • trunk/Source/WebKit/WebProcess/Model/WebModelPlayerProvider.cpp

    r285846 r285922  
    3131
    3232#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"
    3438#endif
    3539
     
    5256RefPtr<WebCore::ModelPlayer> WebModelPlayerProvider::createModelPlayer(WebCore::ModelPlayerClient& client)
    5357{
    54     UNUSED_PARAM(client);
    55 
    5658#if ENABLE(ARKIT_INLINE_PREVIEW_MAC)
    5759    if (m_page.useARKitForModel())
    58         return ARKitInlinePreviewModelPlayer::create(m_page, client);
     60        return ARKitInlinePreviewModelPlayerMac::create(m_page, client);
    5961#endif
    6062#if HAVE(SCENEKIT)
     
    6264        return WebCore::SceneKitModelPlayer::create(client);
    6365#endif
     66#if ENABLE(ARKIT_INLINE_PREVIEW_IOS)
     67    return ARKitInlinePreviewModelPlayerIOS::create(m_page, client);
     68#endif
    6469
     70    UNUSED_PARAM(client);
    6571    return nullptr;
    6672}
  • trunk/Source/WebKit/WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.h

    r285921 r285922  
    2626#pragma once
    2727
    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)
    3229
    33 namespace WebCore {
     30#include "ARKitInlinePreviewModelPlayer.h"
     31#include <WebCore/ModelPlayer.h>
     32#include <WebCore/ModelPlayerClient.h>
    3433
    35 class WEBCORE_EXPORT DummyModelPlayer final : public ModelPlayer {
     34namespace WebKit {
     35
     36class ARKitInlinePreviewModelPlayerIOS final : public ARKitInlinePreviewModelPlayer {
    3637public:
    37     static Ref<DummyModelPlayer> create(ModelPlayerClient&);
    38     virtual ~DummyModelPlayer();
     38    static Ref<ARKitInlinePreviewModelPlayerIOS> create(WebPage&, WebCore::ModelPlayerClient&);
     39    virtual ~ARKitInlinePreviewModelPlayerIOS();
    3940
    4041private:
    41     DummyModelPlayer(ModelPlayerClient&);
     42    ARKitInlinePreviewModelPlayerIOS(WebPage&, WebCore::ModelPlayerClient&);
    4243
    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;
    4846};
    4947
    5048}
     49
     50#endif
  • trunk/Source/WebKit/WebProcess/Model/ios/ARKitInlinePreviewModelPlayerIOS.mm

    r285921 r285922  
    2424 */
    2525
    26 #include "config.h"
    27 #include "WebModelPlayerProvider.h"
     26#import "config.h"
     27#import "ARKitInlinePreviewModelPlayerIOS.h"
    2828
    29 #include "WebPage.h"
    30 #include <WebCore/ModelPlayer.h>
     29#if ENABLE(ARKIT_INLINE_PREVIEW_IOS)
    3130
    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>
    3934
    4035namespace WebKit {
    4136
    42 WebModelPlayerProvider::WebModelPlayerProvider(WebPage& page)
    43     : m_page { page }
     37Ref<ARKitInlinePreviewModelPlayerIOS> ARKitInlinePreviewModelPlayerIOS::create(WebPage& page, WebCore::ModelPlayerClient& client)
    4438{
    45     UNUSED_PARAM(m_page);
     39    return adoptRef(*new ARKitInlinePreviewModelPlayerIOS(page, client));
    4640}
    4741
    48 WebModelPlayerProvider::~WebModelPlayerProvider() = default;
     42ARKitInlinePreviewModelPlayerIOS::ARKitInlinePreviewModelPlayerIOS(WebPage& page, WebCore::ModelPlayerClient& client)
     43    : ARKitInlinePreviewModelPlayer(page, client)
     44{
     45}
    4946
    50 // MARK: - WebCore::ModelPlayerProvider overrides.
     47ARKitInlinePreviewModelPlayerIOS::~ARKitInlinePreviewModelPlayerIOS()
     48{
     49}
    5150
    52 RefPtr<WebCore::ModelPlayer> WebModelPlayerProvider::createModelPlayer(WebCore::ModelPlayerClient& client)
     51// MARK: - WebCore::ModelPlayer overrides.
     52
     53void ARKitInlinePreviewModelPlayerIOS::enterFullscreen()
    5354{
    54     UNUSED_PARAM(client);
     55    if (!client() || !page())
     56        return;
    5557
    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);
    6660}
    6761
    6862}
     63
     64#endif
  • trunk/Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.h

    r285921 r285922  
    2828#if ENABLE(ARKIT_INLINE_PREVIEW_MAC)
    2929
     30#include "ARKitInlinePreviewModelPlayer.h"
    3031#include <WebCore/ModelPlayer.h>
    3132#include <WebCore/ModelPlayerClient.h>
     
    3738namespace WebKit {
    3839
    39 class ARKitInlinePreviewModelPlayer final : public WebCore::ModelPlayer, public CanMakeWeakPtr<ARKitInlinePreviewModelPlayer> {
     40class ARKitInlinePreviewModelPlayerMac final : public ARKitInlinePreviewModelPlayer {
    4041public:
    41     static Ref<ARKitInlinePreviewModelPlayer> create(WebPage&, WebCore::ModelPlayerClient&);
    42     virtual ~ARKitInlinePreviewModelPlayer();
     42    static Ref<ARKitInlinePreviewModelPlayerMac> create(WebPage&, WebCore::ModelPlayerClient&);
     43    virtual ~ARKitInlinePreviewModelPlayerMac();
    4344
    4445    static void setModelElementCacheDirectory(const String&);
    4546
    4647private:
    47     ARKitInlinePreviewModelPlayer(WebPage&, WebCore::ModelPlayerClient&);
     48    ARKitInlinePreviewModelPlayerMac(WebPage&, WebCore::ModelPlayerClient&);
    4849
    4950    // WebCore::ModelPlayer overrides.
    50     virtual void load(WebCore::Model&, WebCore::LayoutSize) override;
    51     virtual PlatformLayer* layer() override;
     51    void load(WebCore::Model&, WebCore::LayoutSize) override;
     52    PlatformLayer* layer() override;
    5253
    5354    void createFile(WebCore::Model&);
    5455    void clearFile();
    55 
    56     WeakPtr<WebPage> m_page;
    57     WeakPtr<WebCore::ModelPlayerClient> m_client;
    5856
    5957    String m_filePath;
  • trunk/Source/WebKit/WebProcess/Model/mac/ARKitInlinePreviewModelPlayerMac.mm

    r285921 r285922  
    2525
    2626#import "config.h"
     27#import "ARKitInlinePreviewModelPlayerMac.h"
    2728
    2829#if ENABLE(ARKIT_INLINE_PREVIEW_MAC)
    29 
    30 #import "ARKitInlinePreviewModelPlayer.h"
    3130
    3231#import "WebPage.h"
     
    4241namespace WebKit {
    4342
    44 Ref<ARKitInlinePreviewModelPlayer> ARKitInlinePreviewModelPlayer::create(WebPage& page, WebCore::ModelPlayerClient& client)
     43Ref<ARKitInlinePreviewModelPlayerMac> ARKitInlinePreviewModelPlayerMac::create(WebPage& page, WebCore::ModelPlayerClient& client)
    4544{
    46     return adoptRef(*new ARKitInlinePreviewModelPlayer(page, client));
     45    return adoptRef(*new ARKitInlinePreviewModelPlayerMac(page, client));
    4746}
    4847
    49 ARKitInlinePreviewModelPlayer::ARKitInlinePreviewModelPlayer(WebPage& page, WebCore::ModelPlayerClient& client)
    50     : m_page { page }
    51     , m_client { client }
     48ARKitInlinePreviewModelPlayerMac::ARKitInlinePreviewModelPlayerMac(WebPage& page, WebCore::ModelPlayerClient& client)
     49    : ARKitInlinePreviewModelPlayer(page, client)
    5250{
    5351}
    5452
    55 ARKitInlinePreviewModelPlayer::~ARKitInlinePreviewModelPlayer()
     53ARKitInlinePreviewModelPlayerMac::~ARKitInlinePreviewModelPlayerMac()
    5654{
    5755    clearFile();
     
    6967}
    7068
    71 void ARKitInlinePreviewModelPlayer::setModelElementCacheDirectory(const String& path)
     69void ARKitInlinePreviewModelPlayerMac::setModelElementCacheDirectory(const String& path)
    7270{
    7371    sharedModelElementCacheDirectory() = path;
    7472}
    7573
    76 void ARKitInlinePreviewModelPlayer::createFile(WebCore::Model& modelSource)
     74void ARKitInlinePreviewModelPlayerMac::createFile(WebCore::Model& modelSource)
    7775{
    7876    // The need for a file is only temporary due to the nature of ASVInlinePreview,
     
    107105}
    108106
    109 void ARKitInlinePreviewModelPlayer::clearFile()
     107void ARKitInlinePreviewModelPlayerMac::clearFile()
    110108{
    111109    if (m_filePath.isEmpty())
     
    118116// MARK: - WebCore::ModelPlayer overrides.
    119117
    120 void ARKitInlinePreviewModelPlayer::load(WebCore::Model& modelSource, WebCore::LayoutSize size)
     118void ARKitInlinePreviewModelPlayerMac::load(WebCore::Model& modelSource, WebCore::LayoutSize size)
    121119{
    122     auto strongClient = m_client.get();
     120    auto strongClient = client();
    123121    if (!strongClient)
    124122        return;
    125123
    126     auto* strongPage = m_page.get();
     124    auto* strongPage = page();
    127125    if (!strongPage) {
    128126        strongClient->didFailLoading(*this, WebCore::ResourceError { WebCore::errorDomainWebKitInternal, 0, modelSource.url(), "WebPage destroyed"_s });
     
    140138            return;
    141139
    142         auto strongClient = strongSelf->m_client.get();
     140        auto strongClient = strongSelf->client();
    143141        if (!strongClient)
    144142            return;
     
    168166}
    169167
    170 PlatformLayer* ARKitInlinePreviewModelPlayer::layer()
     168PlatformLayer* ARKitInlinePreviewModelPlayerMac::layer()
    171169{
    172170    return [m_inlinePreview layer];
  • trunk/Source/WebKit/WebProcess/WebProcess.cpp

    r285648 r285922  
    147147
    148148#if ENABLE(ARKIT_INLINE_PREVIEW_MAC)
    149 #include "ARKitInlinePreviewModelPlayer.h"
     149#include "ARKitInlinePreviewModelPlayerMac.h"
    150150#endif
    151151
     
    606606#if ENABLE(ARKIT_INLINE_PREVIEW_MAC)
    607607    if (!parameters.modelElementCacheDirectory.isEmpty())
    608         ARKitInlinePreviewModelPlayer::setModelElementCacheDirectory(parameters.modelElementCacheDirectory);
     608        ARKitInlinePreviewModelPlayerMac::setModelElementCacheDirectory(parameters.modelElementCacheDirectory);
    609609#endif
    610610
Note: See TracChangeset for help on using the changeset viewer.