Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(244)

Side by Side Diff: third_party/WebKit/Source/modules/vr/VRDisplay.h

Issue 2331553002: Update WebVR interface to match the 1.1 spec (Closed)
Patch Set: Addressed further feedback Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef VRDisplay_h 5 #ifndef VRDisplay_h
6 #define VRDisplay_h 6 #define VRDisplay_h
7 7
8 #include "bindings/core/v8/ScriptWrappable.h" 8 #include "bindings/core/v8/ScriptWrappable.h"
9 #include "core/dom/Document.h" 9 #include "core/dom/Document.h"
10 #include "core/dom/FrameRequestCallback.h" 10 #include "core/dom/FrameRequestCallback.h"
11 #include "device/vr/vr_service.mojom-blink.h" 11 #include "device/vr/vr_service.mojom-blink.h"
12 #include "modules/vr/VRDisplayCapabilities.h" 12 #include "modules/vr/VRDisplayCapabilities.h"
13 #include "modules/vr/VRLayer.h" 13 #include "modules/vr/VRLayer.h"
14 #include "platform/Timer.h" 14 #include "platform/Timer.h"
15 #include "platform/heap/Handle.h" 15 #include "platform/heap/Handle.h"
16 #include "public/platform/WebGraphicsContext3DProvider.h" 16 #include "public/platform/WebGraphicsContext3DProvider.h"
17 #include "public/platform/WebThread.h"
18 #include "wtf/Forward.h" 17 #include "wtf/Forward.h"
19 #include "wtf/text/WTFString.h" 18 #include "wtf/text/WTFString.h"
20 19
21 namespace gpu { 20 namespace gpu {
22 namespace gles2 { 21 namespace gles2 {
23 class GLES2Interface; 22 class GLES2Interface;
24 } 23 }
25 } 24 }
26 25
27 namespace blink { 26 namespace blink {
28 27
29 class NavigatorVR; 28 class NavigatorVR;
30 class VRController; 29 class VRController;
31 class VREyeParameters; 30 class VREyeParameters;
31 class VRFrameData;
32 class VRStageParameters; 32 class VRStageParameters;
33 class VRPose; 33 class VRPose;
34 34
35 class WebGLRenderingContextBase; 35 class WebGLRenderingContextBase;
36 36
37 enum VREye { 37 enum VREye {
38 VREyeNone, 38 VREyeNone,
39 VREyeLeft, 39 VREyeLeft,
40 VREyeRight 40 VREyeRight
41 }; 41 };
42 42
43 class VRDisplay final : public GarbageCollectedFinalized<VRDisplay>, public Scri ptWrappable, public WebThread::TaskObserver { 43 class VRDisplay final : public GarbageCollectedFinalized<VRDisplay>, public Scri ptWrappable {
44 DEFINE_WRAPPERTYPEINFO(); 44 DEFINE_WRAPPERTYPEINFO();
45 public: 45 public:
46 ~VRDisplay(); 46 ~VRDisplay();
47 47
48 unsigned displayId() const { return m_displayId; } 48 unsigned displayId() const { return m_displayId; }
49 const String& displayName() const { return m_displayName; } 49 const String& displayName() const { return m_displayName; }
50 50
51 VRDisplayCapabilities* capabilities() const { return m_capabilities; } 51 VRDisplayCapabilities* capabilities() const { return m_capabilities; }
52 VRStageParameters* stageParameters() const { return m_stageParameters; } 52 VRStageParameters* stageParameters() const { return m_stageParameters; }
53 53
54 bool isConnected() const { return m_isConnected; } 54 bool isConnected() const { return m_isConnected; }
55 bool isPresenting() const { return m_isPresenting; } 55 bool isPresenting() const { return m_isPresenting; }
56 56
57 bool getFrameData(VRFrameData*);
57 VRPose* getPose(); 58 VRPose* getPose();
58 VRPose* getImmediatePose();
59 void resetPose(); 59 void resetPose();
60 60
61 double depthNear() const { return m_depthNear; }
62 double depthFar() const { return m_depthFar; }
63
64 void setDepthNear(double value) { m_depthNear = value; }
65 void setDepthFar(double value) { m_depthFar = value; }
66
61 VREyeParameters* getEyeParameters(const String&); 67 VREyeParameters* getEyeParameters(const String&);
62 68
63 int requestAnimationFrame(FrameRequestCallback*); 69 int requestAnimationFrame(FrameRequestCallback*);
64 void cancelAnimationFrame(int id); 70 void cancelAnimationFrame(int id);
65 71
66 ScriptPromise requestPresent(ScriptState*, const HeapVector<VRLayer>& layers ); 72 ScriptPromise requestPresent(ScriptState*, const HeapVector<VRLayer>& layers );
67 ScriptPromise exitPresent(ScriptState*); 73 ScriptPromise exitPresent(ScriptState*);
68 74
69 HeapVector<VRLayer> getLayers(); 75 HeapVector<VRLayer> getLayers();
70 76
71 void submitFrame(VRPose*); 77 void submitFrame();
72 78
73 DECLARE_VIRTUAL_TRACE(); 79 DECLARE_VIRTUAL_TRACE();
74 80
75 protected: 81 protected:
76 friend class VRController; 82 friend class VRController;
77 83
78 VRDisplay(NavigatorVR*); 84 VRDisplay(NavigatorVR*);
79 85
80 void update(const device::blink::VRDisplayPtr&); 86 void update(const device::blink::VRDisplayPtr&);
87 void updatePose();
81 88
82 VRController* controller(); 89 VRController* controller();
83 90
84 private: 91 private:
85 // TaskObserver implementation.
86 void didProcessTask() override;
87 void willProcessTask() override { }
88
89 void onFullscreenCheck(TimerBase*); 92 void onFullscreenCheck(TimerBase*);
90 93
91 Member<NavigatorVR> m_navigatorVR; 94 Member<NavigatorVR> m_navigatorVR;
92 unsigned m_displayId; 95 unsigned m_displayId;
93 String m_displayName; 96 String m_displayName;
94 bool m_isConnected; 97 bool m_isConnected;
95 bool m_isPresenting; 98 bool m_isPresenting;
96 bool m_canUpdateFramePose; 99 bool m_canUpdateFramePose;
97 unsigned m_compositorHandle; 100 unsigned m_compositorHandle;
98 Member<VRDisplayCapabilities> m_capabilities; 101 Member<VRDisplayCapabilities> m_capabilities;
99 Member<VRStageParameters> m_stageParameters; 102 Member<VRStageParameters> m_stageParameters;
100 Member<VREyeParameters> m_eyeParametersLeft; 103 Member<VREyeParameters> m_eyeParametersLeft;
101 Member<VREyeParameters> m_eyeParametersRight; 104 Member<VREyeParameters> m_eyeParametersRight;
102 Member<VRPose> m_framePose; 105 device::blink::VRPosePtr m_framePose;
103 VRLayer m_layer; 106 VRLayer m_layer;
107 double m_depthNear;
108 double m_depthFar;
104 109
105 Timer<VRDisplay> m_fullscreenCheckTimer; 110 Timer<VRDisplay> m_fullscreenCheckTimer;
106 }; 111 };
107 112
108 using VRDisplayVector = HeapVector<Member<VRDisplay>>; 113 using VRDisplayVector = HeapVector<Member<VRDisplay>>;
109 114
110 } // namespace blink 115 } // namespace blink
111 116
112 #endif // VRDisplay_h 117 #endif // VRDisplay_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698