[WebXR] Introducing XRLayer
authorsvillar@igalia.com <svillar@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 23 Jun 2020 16:36:02 +0000 (16:36 +0000)
committersvillar@igalia.com <svillar@igalia.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 23 Jun 2020 16:36:02 +0000 (16:36 +0000)
https://bugs.webkit.org/show_bug.cgi?id=213462

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

* web-platform-tests/webxr/idlharness.https.window-expected.txt: Replace FAIL by PASS expectations
for XRLayer interface.

Source/WebCore:

The most recent drafts of the WebXR spec have added a new object called XRLayer which is the base class
of the already known XRWebGLLayer. The spec only defines the latter but future extensions might define
some other layer subclasses.

This patch fixes several checks in the IDL tests.

* CMakeLists.txt: Added new files.
* DerivedSources.make: Ditto.
* WebCore.xcodeproj/project.pbxproj: Ditto.
* Modules/webxr/WebXRLayer.cpp: Added.
(WebCore::WebXRLayer::WebXRLayer):
* Modules/webxr/WebXRLayer.h: Ditto.
* Modules/webxr/WebXRLayer.idl:  Ditto.
* Modules/webxr/WebXRSession.h: Export scriptExecutionContext() so it could be used from the outside.
* Modules/webxr/WebXRWebGLLayer.cpp:
(WebCore::WebXRWebGLLayer::WebXRWebGLLayer): Call the superclass.
* Modules/webxr/WebXRWebGLLayer.h: Inherit from WebXRLayer.
* Modules/webxr/WebXRWebGLLayer.idl: Ditto.
* Sources.txt: Added new files.
* bindings/js/WebCoreBuiltinNames.h: Added XRLayer.
* dom/EventTargetFactory.in: Ditto.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@263403 268f45cc-cd09-0410-ab3c-d52691b4dbfc

16 files changed:
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/webxr/idlharness.https.window-expected.txt
Source/WebCore/CMakeLists.txt
Source/WebCore/ChangeLog
Source/WebCore/DerivedSources.make
Source/WebCore/Modules/webxr/WebXRLayer.cpp [new file with mode: 0644]
Source/WebCore/Modules/webxr/WebXRLayer.h [new file with mode: 0644]
Source/WebCore/Modules/webxr/WebXRLayer.idl [new file with mode: 0644]
Source/WebCore/Modules/webxr/WebXRSession.h
Source/WebCore/Modules/webxr/WebXRWebGLLayer.cpp
Source/WebCore/Modules/webxr/WebXRWebGLLayer.h
Source/WebCore/Modules/webxr/WebXRWebGLLayer.idl
Source/WebCore/Sources.txt
Source/WebCore/WebCore.xcodeproj/project.pbxproj
Source/WebCore/bindings/js/WebCoreBuiltinNames.h
Source/WebCore/dom/EventTargetFactory.in

index 48f5f73..b83ac4d 100644 (file)
@@ -1,3 +1,13 @@
+2020-06-22  Sergio Villar Senin  <svillar@igalia.com>
+
+        [WebXR] Introducing XRLayer
+        https://bugs.webkit.org/show_bug.cgi?id=213462
+
+        Reviewed by Youenn Fablet.
+
+        * web-platform-tests/webxr/idlharness.https.window-expected.txt: Replace FAIL by PASS expectations
+        for XRLayer interface.
+
 2020-06-23  Sergio Villar Senin  <svillar@igalia.com>
 
         [css-flex] Allow indefinite size flex items to be definite wrt resolving percentages inside them
index 9aeeed3..7c39c1d 100644 (file)
@@ -153,16 +153,16 @@ PASS XRInputSourceArray interface: existence and properties of interface prototy
 PASS XRInputSourceArray interface: existence and properties of interface prototype object's @@unscopables property 
 PASS XRInputSourceArray interface: iterable<XRInputSource> 
 PASS XRInputSourceArray interface: attribute length 
-FAIL XRLayer interface: existence and properties of interface object assert_own_property: self does not have own property "XRLayer" expected property "XRLayer" missing
-FAIL XRLayer interface object length assert_own_property: self does not have own property "XRLayer" expected property "XRLayer" missing
-FAIL XRLayer interface object name assert_own_property: self does not have own property "XRLayer" expected property "XRLayer" missing
-FAIL XRLayer interface: existence and properties of interface prototype object assert_own_property: self does not have own property "XRLayer" expected property "XRLayer" missing
-FAIL XRLayer interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "XRLayer" expected property "XRLayer" missing
-FAIL XRLayer interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "XRLayer" expected property "XRLayer" missing
-FAIL XRWebGLLayer interface: existence and properties of interface object assert_own_property: self does not have own property "XRLayer" expected property "XRLayer" missing
+PASS XRLayer interface: existence and properties of interface object 
+PASS XRLayer interface object length 
+PASS XRLayer interface object name 
+PASS XRLayer interface: existence and properties of interface prototype object 
+PASS XRLayer interface: existence and properties of interface prototype object's "constructor" property 
+PASS XRLayer interface: existence and properties of interface prototype object's @@unscopables property 
+PASS XRWebGLLayer interface: existence and properties of interface object 
 PASS XRWebGLLayer interface object length 
 PASS XRWebGLLayer interface object name 
-FAIL XRWebGLLayer interface: existence and properties of interface prototype object assert_own_property: self does not have own property "XRLayer" expected property "XRLayer" missing
+PASS XRWebGLLayer interface: existence and properties of interface prototype object 
 PASS XRWebGLLayer interface: existence and properties of interface prototype object's "constructor" property 
 PASS XRWebGLLayer interface: existence and properties of interface prototype object's @@unscopables property 
 PASS XRWebGLLayer interface: attribute antialias 
index 0227f80..5aa5ffe 100644 (file)
@@ -1215,6 +1215,7 @@ if (ENABLE_WEBXR)
         Modules/webxr/WebXRFrame.idl
         Modules/webxr/WebXRInputSource.idl
         Modules/webxr/WebXRInputSourceArray.idl
+        Modules/webxr/WebXRLayer.idl
         Modules/webxr/WebXRPose.idl
         Modules/webxr/WebXRReferenceSpace.idl
         Modules/webxr/WebXRRenderState.idl
index 57e171b..635a4e2 100644 (file)
@@ -1,3 +1,32 @@
+2020-06-22  Sergio Villar Senin  <svillar@igalia.com>
+
+        [WebXR] Introducing XRLayer
+        https://bugs.webkit.org/show_bug.cgi?id=213462
+
+        Reviewed by Youenn Fablet.
+
+        The most recent drafts of the WebXR spec have added a new object called XRLayer which is the base class
+        of the already known XRWebGLLayer. The spec only defines the latter but future extensions might define
+        some other layer subclasses.
+
+        This patch fixes several checks in the IDL tests.
+
+        * CMakeLists.txt: Added new files.
+        * DerivedSources.make: Ditto.
+        * WebCore.xcodeproj/project.pbxproj: Ditto.
+        * Modules/webxr/WebXRLayer.cpp: Added.
+        (WebCore::WebXRLayer::WebXRLayer):
+        * Modules/webxr/WebXRLayer.h: Ditto.
+        * Modules/webxr/WebXRLayer.idl:  Ditto.
+        * Modules/webxr/WebXRSession.h: Export scriptExecutionContext() so it could be used from the outside.
+        * Modules/webxr/WebXRWebGLLayer.cpp:
+        (WebCore::WebXRWebGLLayer::WebXRWebGLLayer): Call the superclass.
+        * Modules/webxr/WebXRWebGLLayer.h: Inherit from WebXRLayer.
+        * Modules/webxr/WebXRWebGLLayer.idl: Ditto.
+        * Sources.txt: Added new files.
+        * bindings/js/WebCoreBuiltinNames.h: Added XRLayer.
+        * dom/EventTargetFactory.in: Ditto.
+
 2020-06-23  Devin Rousso  <drousso@apple.com>
 
         Keyframe animation doesn't 't show up in the Animations timeline
index f3f9a41..63d5b16 100644 (file)
@@ -506,6 +506,7 @@ JS_BINDING_IDLS = \
     $(WebCore)/Modules/webxr/WebXRFrame.idl \
     $(WebCore)/Modules/webxr/WebXRInputSourceArray.idl \
     $(WebCore)/Modules/webxr/WebXRInputSource.idl \
+    $(WebCore)/Modules/webxr/WebXRLayer.idl \
     $(WebCore)/Modules/webxr/WebXRPose.idl \
     $(WebCore)/Modules/webxr/WebXRReferenceSpace.idl \
     $(WebCore)/Modules/webxr/WebXRRenderState.idl \
diff --git a/Source/WebCore/Modules/webxr/WebXRLayer.cpp b/Source/WebCore/Modules/webxr/WebXRLayer.cpp
new file mode 100644 (file)
index 0000000..2bc3315
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2020 Igalia S.L. 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. AND ITS CONTRIBUTORS ``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 ITS 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.
+ */
+
+#include "config.h"
+#include "WebXRLayer.h"
+
+#if ENABLE(WEBXR)
+
+#include <wtf/IsoMallocInlines.h>
+
+namespace WebCore {
+
+WTF_MAKE_ISO_ALLOCATED_IMPL(WebXRLayer);
+
+WebXRLayer::WebXRLayer(ScriptExecutionContext* context)
+    : ContextDestructionObserver(context)
+{
+    ASSERT(context);
+}
+
+WebXRLayer::~WebXRLayer() = default;
+
+} // namespace WebCore
+
+#endif // ENABLE(WEBXR)
diff --git a/Source/WebCore/Modules/webxr/WebXRLayer.h b/Source/WebCore/Modules/webxr/WebXRLayer.h
new file mode 100644 (file)
index 0000000..003f56c
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2020 Igalia S.L. 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. AND ITS CONTRIBUTORS ``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 ITS 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.
+ */
+
+#pragma once
+
+#if ENABLE(WEBXR)
+
+#include "ContextDestructionObserver.h"
+#include "EventTarget.h"
+#include <wtf/IsoMalloc.h>
+#include <wtf/RefCounted.h>
+
+namespace WebCore {
+
+class ScriptExecutionContext;
+
+class WebXRLayer : public RefCounted<WebXRLayer>, public EventTargetWithInlineData, public ContextDestructionObserver {
+    WTF_MAKE_ISO_ALLOCATED(WebXRLayer);
+public:
+    ~WebXRLayer();
+
+    using RefCounted<WebXRLayer>::ref;
+    using RefCounted<WebXRLayer>::deref;
+
+protected:
+    explicit WebXRLayer(ScriptExecutionContext*);
+
+    // EventTarget
+    ScriptExecutionContext* scriptExecutionContext() const final { return ContextDestructionObserver::scriptExecutionContext(); }
+
+private:
+    // EventTarget
+    EventTargetInterface eventTargetInterface() const final { return WebXRLayerEventTargetInterfaceType; }
+    void refEventTarget() final { ref(); }
+    void derefEventTarget() final { deref(); }
+};
+
+} // namespace WebCore
+
+#endif // ENABLE(WEBXR)
diff --git a/Source/WebCore/Modules/webxr/WebXRLayer.idl b/Source/WebCore/Modules/webxr/WebXRLayer.idl
new file mode 100644 (file)
index 0000000..8e2f710
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2020 Igalia S.L. 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. AND ITS CONTRIBUTORS ``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 ITS 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.
+ */
+
+[
+    EnabledAtRuntime=WebXR,
+    Conditional=WEBXR,
+    SecureContext,
+    Exposed=Window,
+    InterfaceName=XRLayer,
+] interface WebXRLayer : EventTarget {
+};
\ No newline at end of file
index 23d3400..98b9293 100644 (file)
@@ -76,6 +76,9 @@ public:
     unsigned requestAnimationFrame(Ref<XRFrameRequestCallback>&&);
     void cancelAnimationFrame(unsigned callbackId);
 
+    // EventTarget.
+    ScriptExecutionContext* scriptExecutionContext() const final { return ActiveDOMObject::scriptExecutionContext(); }
+
     void end(EndPromise&&);
 
     bool ended() const { return m_ended; }
@@ -87,7 +90,6 @@ private:
 
     // EventTarget
     EventTargetInterface eventTargetInterface() const override { return WebXRSessionEventTargetInterfaceType; }
-    ScriptExecutionContext* scriptExecutionContext() const override { return ActiveDOMObject::scriptExecutionContext(); }
     void refEventTarget() override { ref(); }
     void derefEventTarget() override { deref(); }
 
index 2381d81..d92cf08 100644 (file)
 #include "WebXRSession.h"
 #include "WebXRViewport.h"
 #include "XRWebGLLayerInit.h"
+#include <wtf/IsoMallocInlines.h>
 #include <wtf/Scope.h>
 
 namespace WebCore {
 
+WTF_MAKE_ISO_ALLOCATED_IMPL(WebXRWebGLLayer);
+
 // https://immersive-web.github.io/webxr/#dom-xrwebgllayer-xrwebgllayer
-ExceptionOr<Ref<WebXRWebGLLayer>> WebXRWebGLLayer::create(WebXRSession& session, WebXRRenderingContext&& context, const XRWebGLLayerInit& init)
+ExceptionOr<Ref<WebXRWebGLLayer>> WebXRWebGLLayer::create(Ref<WebXRSession>&& session, WebXRRenderingContext&& context, const XRWebGLLayerInit& init)
 {
     // 1. Let layer be a new XRWebGLLayer
     // 2. If session’s ended value is true, throw an InvalidStateError and abort these steps.
-    if (session.ended())
+    if (session->ended())
         return Exception { InvalidStateError };
 
     // 3. If context is lost, throw an InvalidStateError and abort these steps.
@@ -59,7 +62,7 @@ ExceptionOr<Ref<WebXRWebGLLayer>> WebXRWebGLLayer::create(WebXRSession& session,
             if (baseContext->isContextLost())
                 return Exception { InvalidStateError };
 
-            auto mode = session.mode();
+            auto mode = session->mode();
             if ((mode == XRSessionMode::ImmersiveAr || mode == XRSessionMode::ImmersiveVr) && !baseContext->isXRCompatible())
                 return Exception { InvalidStateError };
 
@@ -69,7 +72,7 @@ ExceptionOr<Ref<WebXRWebGLLayer>> WebXRWebGLLayer::create(WebXRSession& session,
             // 7. Initialize layer’s ignoreDepthValues as follows. (see constructor)
             // 8. Initialize layer’s composition disabled boolean as follows. (see constructor)
             // 9. (see constructor except for the resources initialization step which is handled in the if block below)
-            auto layer = adoptRef(*new WebXRWebGLLayer(session, WTFMove(context), init));
+            auto layer = adoptRef(*new WebXRWebGLLayer(WTFMove(session), WTFMove(context), init));
 
             if (layer->m_isCompositionDisabled) {
                 // 9.4. Allocate and initialize resources compatible with session’s XR device, including GPU accessible memory buffers,
@@ -101,8 +104,9 @@ IntSize WebXRWebGLLayer::computeRecommendedWebGLFramebufferResolution()
     return computeNativeWebGLFramebufferResolution();
 }
 
-WebXRWebGLLayer::WebXRWebGLLayer(WebXRSession& session, WebXRRenderingContext&& context, const XRWebGLLayerInit& init)
-    : m_session(makeRef(session))
+WebXRWebGLLayer::WebXRWebGLLayer(Ref<WebXRSession>&& session, WebXRRenderingContext&& context, const XRWebGLLayerInit& init)
+    : WebXRLayer(session->scriptExecutionContext())
+    , m_session(WTFMove(session))
     , m_context(WTFMove(context))
 {
     // 7. Initialize layer’s ignoreDepthValues as follows:
index 5c05393..bb3ea76 100644 (file)
@@ -28,9 +28,9 @@
 #if ENABLE(WEBXR)
 
 #include "ExceptionOr.h"
+#include "WebXRLayer.h"
 #include <wtf/IsoMalloc.h>
 #include <wtf/Ref.h>
-#include <wtf/RefCounted.h>
 #include <wtf/RefPtr.h>
 #include <wtf/Variant.h>
 
@@ -47,7 +47,8 @@ class WebXRView;
 class WebXRViewport;
 struct XRWebGLLayerInit;
 
-class WebXRWebGLLayer : public RefCounted<WebXRWebGLLayer> {
+class WebXRWebGLLayer : public WebXRLayer {
+    WTF_MAKE_ISO_ALLOCATED(WebXRWebGLLayer);
 public:
 
     using WebXRRenderingContext = WTF::Variant<
@@ -57,7 +58,7 @@ public:
 #endif
     >;
 
-    static ExceptionOr<Ref<WebXRWebGLLayer>> create(WebXRSession&, WebXRRenderingContext&&, const XRWebGLLayerInit&);
+    static ExceptionOr<Ref<WebXRWebGLLayer>> create(Ref<WebXRSession>&&, WebXRRenderingContext&&, const XRWebGLLayerInit&);
     ~WebXRWebGLLayer();
 
     bool antialias() const;
@@ -72,7 +73,7 @@ public:
     static double getNativeFramebufferScaleFactor(const WebXRSession&);
 
 private:
-    WebXRWebGLLayer(WebXRSession&, WebXRRenderingContext&&, const XRWebGLLayerInit&);
+    WebXRWebGLLayer(Ref<WebXRSession>&&, WebXRRenderingContext&&, const XRWebGLLayerInit&);
 
     static IntSize computeNativeWebGLFramebufferResolution();
     static IntSize computeRecommendedWebGLFramebufferResolution();
index 727d43f..610097c 100644 (file)
@@ -34,9 +34,10 @@ typedef (WebGLRenderingContext) WebXRWebGLRenderingContext;
     Conditional=WEBXR,
     SecureContext,
     Exposed=Window,
-    ImplementationLacksVTable,
+    JSGenerateToJSObject,
+    JSGenerateToNativeObject,
     InterfaceName=XRWebGLLayer
-] interface WebXRWebGLLayer {
+] interface WebXRWebGLLayer : WebXRLayer {
     [MayThrowException] constructor(WebXRSession session, WebXRWebGLRenderingContext context, optional XRWebGLLayerInit layerInit);
 
     // Attributes
index 063f8e0..d5c4e72 100644 (file)
@@ -424,6 +424,7 @@ Modules/webxr/WebXRBoundedReferenceSpace.cpp @no-unify
 Modules/webxr/WebXRFrame.cpp @no-unify
 Modules/webxr/WebXRInputSourceArray.cpp @no-unify
 Modules/webxr/WebXRInputSource.cpp @no-unify
+Modules/webxr/WebXRLayer.cpp @no-unify
 Modules/webxr/WebXRPose.cpp @no-unify
 Modules/webxr/WebXRReferenceSpace.cpp @no-unify
 Modules/webxr/WebXRRenderState.cpp @no-unify
@@ -3640,6 +3641,7 @@ JSWebXRView.cpp
 JSWebXRViewerPose.cpp
 JSWebXRViewport.cpp
 JSXRVisibilityState.cpp
+JSWebXRLayer.cpp
 JSWebXRWebGLLayer.cpp
 JSXRWebGLLayerInit.cpp
 
index 21528f2..4e4fedc 100644 (file)
                E12A9F4A248A99E2003F06C8 /* XRInteractionMode.h in Headers */ = {isa = PBXBuildFile; fileRef = E12A9F48248A99E0003F06C8 /* XRInteractionMode.h */; };
                E12DE7181E4B74A600F9ACCF /* GridTrackSizingAlgorithm.h in Headers */ = {isa = PBXBuildFile; fileRef = E12DE7161E4B748700F9ACCF /* GridTrackSizingAlgorithm.h */; };
                E12EDB7B0B308A78002704B6 /* EventTarget.h in Headers */ = {isa = PBXBuildFile; fileRef = E12EDB7A0B308A78002704B6 /* EventTarget.h */; settings = {ATTRIBUTES = (Private, ); }; };
+               E12FDAFF24A0FD200070236E /* WebXRLayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E12FDAFB24A0FD1C0070236E /* WebXRLayer.cpp */; };
+               E12FDB0024A0FD200070236E /* WebXRLayer.h in Headers */ = {isa = PBXBuildFile; fileRef = E12FDAFD24A0FD1E0070236E /* WebXRLayer.h */; };
                E134F5AB12EE343F004EC58D /* IntRectHash.h in Headers */ = {isa = PBXBuildFile; fileRef = E134F5AA12EE343F004EC58D /* IntRectHash.h */; settings = {ATTRIBUTES = (Private, ); }; };
                E139866415478474001E3F65 /* StyleResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = E139866215478474001E3F65 /* StyleResolver.h */; };
                E13EF3441684ECF40034C83F /* NetworkStorageSession.h in Headers */ = {isa = PBXBuildFile; fileRef = E13EF3421684ECF40034C83F /* NetworkStorageSession.h */; settings = {ATTRIBUTES = (Private, ); }; };
                E12DE7161E4B748700F9ACCF /* GridTrackSizingAlgorithm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GridTrackSizingAlgorithm.h; sourceTree = "<group>"; };
                E12EDB7A0B308A78002704B6 /* EventTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventTarget.h; sourceTree = "<group>"; };
                E12EDBE90B308E0B002704B6 /* EventTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventTarget.cpp; sourceTree = "<group>"; };
+               E12FDAFB24A0FD1C0070236E /* WebXRLayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebXRLayer.cpp; sourceTree = "<group>"; };
+               E12FDAFD24A0FD1E0070236E /* WebXRLayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebXRLayer.h; sourceTree = "<group>"; };
+               E12FDAFE24A0FD1F0070236E /* WebXRLayer.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebXRLayer.idl; sourceTree = "<group>"; };
                E134F5AA12EE343F004EC58D /* IntRectHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IntRectHash.h; sourceTree = "<group>"; };
                E139866115478474001E3F65 /* StyleResolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = StyleResolver.cpp; sourceTree = "<group>"; };
                E139866215478474001E3F65 /* StyleResolver.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StyleResolver.h; sourceTree = "<group>"; };
                                E1EE8AE62412B17000E794D6 /* WebXRInputSourceArray.cpp */,
                                E1EE8ADD2412B17000E794D6 /* WebXRInputSourceArray.h */,
                                E19490932434F16000416A99 /* WebXRInputSourceArray.idl */,
+                               E12FDAFB24A0FD1C0070236E /* WebXRLayer.cpp */,
+                               E12FDAFD24A0FD1E0070236E /* WebXRLayer.h */,
+                               E12FDAFE24A0FD1F0070236E /* WebXRLayer.idl */,
                                E1EE8AE52412B17000E794D6 /* WebXRPose.cpp */,
                                E1EE8AE12412B17000E794D6 /* WebXRPose.h */,
                                E19490A12434F16800416A99 /* WebXRPose.idl */,
                                E1EE8B8A2413191F00E794D6 /* WebXRFrame.h in Headers */,
                                E1EE8BA82413196300E794D6 /* WebXRInputSource.h in Headers */,
                                E1EE8B862413191F00E794D6 /* WebXRInputSourceArray.h in Headers */,
+                               E12FDB0024A0FD200070236E /* WebXRLayer.h in Headers */,
                                E1EE8B882413191F00E794D6 /* WebXRPose.h in Headers */,
                                E1EE8BA62413196300E794D6 /* WebXRReferenceSpace.h in Headers */,
                                E1EE8B812413191F00E794D6 /* WebXRRenderState.h in Headers */,
                                E1EE8B932413195000E794D6 /* WebXRFrame.cpp in Sources */,
                                E1EE8BA12413196300E794D6 /* WebXRInputSource.cpp in Sources */,
                                E1EE8B8C2413191F00E794D6 /* WebXRInputSourceArray.cpp in Sources */,
+                               E12FDAFF24A0FD200070236E /* WebXRLayer.cpp in Sources */,
                                E1EE8B8B2413191F00E794D6 /* WebXRPose.cpp in Sources */,
                                E1EE8B7F2413191F00E794D6 /* WebXRReferenceSpace.cpp in Sources */,
                                E1EE8B7C2413191F00E794D6 /* WebXRRenderState.cpp in Sources */,
index 84c98e6..fc90bb2 100644 (file)
@@ -252,6 +252,7 @@ namespace WebCore {
     macro(XRInputSourceArray) \
     macro(XRInputSourceEvent) \
     macro(XRInputSourcesChangeEvent) \
+    macro(XRLayer) \
     macro(XRPose) \
     macro(XRReferenceSpace) \
     macro(XRReferenceSpaceEvent) \
index e5b4aed..e5ae5d6 100644 (file)
@@ -60,6 +60,7 @@ Worker
 WorkletGlobalScope conditional=CSS_PAINTING_API
 XMLHttpRequest
 XMLHttpRequestUpload
+WebXRLayer conditional=WEBXR
 WebXRSession conditional=WEBXR
 WebXRSpace conditional=WEBXR
 WebXRSystem conditional=WEBXR