| OLD | NEW |
| 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 "core/dom/Document.h" | 8 #include "core/dom/Document.h" |
| 9 #include "core/dom/FrameRequestCallback.h" | 9 #include "core/dom/FrameRequestCallback.h" |
| 10 #include "core/events/EventTarget.h" | 10 #include "core/events/EventTarget.h" |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 class VRStageParameters; | 34 class VRStageParameters; |
| 35 class VRPose; | 35 class VRPose; |
| 36 | 36 |
| 37 class WebGLRenderingContextBase; | 37 class WebGLRenderingContextBase; |
| 38 | 38 |
| 39 enum VREye { VREyeNone, VREyeLeft, VREyeRight }; | 39 enum VREye { VREyeNone, VREyeLeft, VREyeRight }; |
| 40 | 40 |
| 41 class VRDisplay final : public EventTargetWithInlineData, | 41 class VRDisplay final : public EventTargetWithInlineData, |
| 42 public ActiveScriptWrappable<VRDisplay>, | 42 public ActiveScriptWrappable<VRDisplay>, |
| 43 public ContextLifecycleObserver, | 43 public ContextLifecycleObserver, |
| 44 public device::mojom::blink::VRDisplayClient { | 44 public device::mojom::blink::VRDisplayClient, |
| 45 public device::mojom::blink::VRVSyncProviderClient { |
| 45 DEFINE_WRAPPERTYPEINFO(); | 46 DEFINE_WRAPPERTYPEINFO(); |
| 46 USING_GARBAGE_COLLECTED_MIXIN(VRDisplay); | 47 USING_GARBAGE_COLLECTED_MIXIN(VRDisplay); |
| 47 USING_PRE_FINALIZER(VRDisplay, dispose); | 48 USING_PRE_FINALIZER(VRDisplay, dispose); |
| 48 | 49 |
| 49 public: | 50 public: |
| 50 ~VRDisplay(); | 51 ~VRDisplay(); |
| 51 | 52 |
| 52 unsigned displayId() const { return m_displayId; } | 53 unsigned displayId() const { return m_displayId; } |
| 53 const String& displayName() const { return m_displayName; } | 54 const String& displayName() const { return m_displayName; } |
| 54 | 55 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 65 double depthNear() const { return m_depthNear; } | 66 double depthNear() const { return m_depthNear; } |
| 66 double depthFar() const { return m_depthFar; } | 67 double depthFar() const { return m_depthFar; } |
| 67 | 68 |
| 68 void setDepthNear(double value) { m_depthNear = value; } | 69 void setDepthNear(double value) { m_depthNear = value; } |
| 69 void setDepthFar(double value) { m_depthFar = value; } | 70 void setDepthFar(double value) { m_depthFar = value; } |
| 70 | 71 |
| 71 VREyeParameters* getEyeParameters(const String&); | 72 VREyeParameters* getEyeParameters(const String&); |
| 72 | 73 |
| 73 int requestAnimationFrame(FrameRequestCallback*); | 74 int requestAnimationFrame(FrameRequestCallback*); |
| 74 void cancelAnimationFrame(int id); | 75 void cancelAnimationFrame(int id); |
| 75 void serviceScriptedAnimations(double monotonicAnimationStartTime); | |
| 76 | 76 |
| 77 ScriptPromise requestPresent(ScriptState*, const HeapVector<VRLayer>& layers); | 77 ScriptPromise requestPresent(ScriptState*, const HeapVector<VRLayer>& layers); |
| 78 ScriptPromise exitPresent(ScriptState*); | 78 ScriptPromise exitPresent(ScriptState*); |
| 79 | 79 |
| 80 HeapVector<VRLayer> getLayers(); | 80 HeapVector<VRLayer> getLayers(); |
| 81 | 81 |
| 82 void submitFrame(); | 82 void submitFrame(); |
| 83 | 83 |
| 84 Document* document(); | 84 Document* document(); |
| 85 | 85 |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 | 123 |
| 124 void OnPresentChange(); | 124 void OnPresentChange(); |
| 125 | 125 |
| 126 // VRDisplayClient | 126 // VRDisplayClient |
| 127 void OnChanged(device::mojom::blink::VRDisplayInfoPtr) override; | 127 void OnChanged(device::mojom::blink::VRDisplayInfoPtr) override; |
| 128 void OnExitPresent() override; | 128 void OnExitPresent() override; |
| 129 void OnBlur() override; | 129 void OnBlur() override; |
| 130 void OnFocus() override; | 130 void OnFocus() override; |
| 131 void OnActivate(device::mojom::blink::VRDisplayEventReason) override; | 131 void OnActivate(device::mojom::blink::VRDisplayEventReason) override; |
| 132 void OnDeactivate(device::mojom::blink::VRDisplayEventReason) override; | 132 void OnDeactivate(device::mojom::blink::VRDisplayEventReason) override; |
| 133 void OnVRVsyncProviderReady(const OnVRVsyncProviderReadyCallback&) override; |
| 134 |
| 135 // VRVSyncProviderClient |
| 136 void OnVSync(device::mojom::blink::VRPosePtr, |
| 137 double timeSeconds, |
| 138 const OnVSyncCallback&) override; |
| 133 | 139 |
| 134 ScriptedAnimationController& ensureScriptedAnimationController(Document*); | 140 ScriptedAnimationController& ensureScriptedAnimationController(Document*); |
| 135 | 141 |
| 136 Member<NavigatorVR> m_navigatorVR; | 142 Member<NavigatorVR> m_navigatorVR; |
| 137 unsigned m_displayId; | 143 unsigned m_displayId = 0; |
| 138 String m_displayName; | 144 String m_displayName; |
| 139 bool m_isConnected; | 145 bool m_isConnected = false; |
| 140 bool m_isPresenting; | 146 bool m_isPresenting = false; |
| 141 bool m_isValidDeviceForPresenting; | 147 bool m_isValidDeviceForPresenting = true; |
| 142 bool m_canUpdateFramePose; | 148 bool m_canUpdateFramePose = true; |
| 143 Member<VRDisplayCapabilities> m_capabilities; | 149 Member<VRDisplayCapabilities> m_capabilities; |
| 144 Member<VRStageParameters> m_stageParameters; | 150 Member<VRStageParameters> m_stageParameters; |
| 145 Member<VREyeParameters> m_eyeParametersLeft; | 151 Member<VREyeParameters> m_eyeParametersLeft; |
| 146 Member<VREyeParameters> m_eyeParametersRight; | 152 Member<VREyeParameters> m_eyeParametersRight; |
| 147 device::mojom::blink::VRPosePtr m_framePose; | 153 device::mojom::blink::VRPosePtr m_framePose; |
| 148 VRLayer m_layer; | 154 VRLayer m_layer; |
| 149 double m_depthNear; | 155 double m_depthNear = 0.01; |
| 150 double m_depthFar; | 156 double m_depthFar = 10000.0; |
| 151 | 157 |
| 152 void dispose(); | 158 void dispose(); |
| 153 | 159 |
| 154 Timer<VRDisplay> m_fullscreenCheckTimer; | 160 Timer<VRDisplay> m_fullscreenCheckTimer; |
| 155 String m_fullscreenOrigWidth; | 161 String m_fullscreenOrigWidth; |
| 156 String m_fullscreenOrigHeight; | 162 String m_fullscreenOrigHeight; |
| 157 gpu::gles2::GLES2Interface* m_contextGL; | 163 gpu::gles2::GLES2Interface* m_contextGL = nullptr; |
| 158 Member<WebGLRenderingContextBase> m_renderingContext; | 164 Member<WebGLRenderingContextBase> m_renderingContext; |
| 159 | 165 |
| 160 Member<ScriptedAnimationController> m_scriptedAnimationController; | 166 Member<ScriptedAnimationController> m_scriptedAnimationController; |
| 161 bool m_animationCallbackRequested; | 167 bool m_inAnimationFrame = false; |
| 162 bool m_inAnimationFrame; | 168 bool m_displayBlurred = false; |
| 163 bool m_displayBlurred; | 169 bool m_reenteredFullscreen = false; |
| 164 bool m_reenteredFullscreen; | |
| 165 | 170 |
| 166 device::mojom::blink::VRDisplayPtr m_display; | 171 device::mojom::blink::VRDisplayPtr m_display; |
| 167 | 172 |
| 168 mojo::Binding<device::mojom::blink::VRDisplayClient> m_binding; | 173 mojo::Binding<device::mojom::blink::VRDisplayClient> m_displayClientBinding; |
| 174 mojo::Binding<device::mojom::blink::VRVSyncProviderClient> |
| 175 m_vsyncProviderClientBinding; |
| 169 | 176 |
| 170 HeapDeque<Member<ScriptPromiseResolver>> m_pendingPresentResolvers; | 177 HeapDeque<Member<ScriptPromiseResolver>> m_pendingPresentResolvers; |
| 171 }; | 178 }; |
| 172 | 179 |
| 173 using VRDisplayVector = HeapVector<Member<VRDisplay>>; | 180 using VRDisplayVector = HeapVector<Member<VRDisplay>>; |
| 174 | 181 |
| 175 enum class PresentationResult { | 182 enum class PresentationResult { |
| 176 Requested = 0, | 183 Requested = 0, |
| 177 Success = 1, | 184 Success = 1, |
| 178 SuccessAlreadyPresenting = 2, | 185 SuccessAlreadyPresenting = 2, |
| 179 VRDisplayCannotPresent = 3, | 186 VRDisplayCannotPresent = 3, |
| 180 PresentationNotSupportedByDisplay = 4, | 187 PresentationNotSupportedByDisplay = 4, |
| 181 VRDisplayNotFound = 5, | 188 VRDisplayNotFound = 5, |
| 182 NotInitiatedByUserGesture = 6, | 189 NotInitiatedByUserGesture = 6, |
| 183 InvalidNumberOfLayers = 7, | 190 InvalidNumberOfLayers = 7, |
| 184 InvalidLayerSource = 8, | 191 InvalidLayerSource = 8, |
| 185 LayerSourceMissingWebGLContext = 9, | 192 LayerSourceMissingWebGLContext = 9, |
| 186 InvalidLayerBounds = 10, | 193 InvalidLayerBounds = 10, |
| 187 ServiceInactive = 11, | 194 ServiceInactive = 11, |
| 188 RequestDenied = 12, | 195 RequestDenied = 12, |
| 189 PresentationResultMax, // Must be last member of enum. | 196 PresentationResultMax, // Must be last member of enum. |
| 190 }; | 197 }; |
| 191 | 198 |
| 192 void ReportPresentationResult(PresentationResult); | 199 void ReportPresentationResult(PresentationResult); |
| 193 | 200 |
| 194 } // namespace blink | 201 } // namespace blink |
| 195 | 202 |
| 196 #endif // VRDisplay_h | 203 #endif // VRDisplay_h |
| OLD | NEW |