summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/modules/xr/xr.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/xr/xr.h')
-rw-r--r--chromium/third_party/blink/renderer/modules/xr/xr.h72
1 files changed, 72 insertions, 0 deletions
diff --git a/chromium/third_party/blink/renderer/modules/xr/xr.h b/chromium/third_party/blink/renderer/modules/xr/xr.h
new file mode 100644
index 00000000000..777e54f98b2
--- /dev/null
+++ b/chromium/third_party/blink/renderer/modules/xr/xr.h
@@ -0,0 +1,72 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_XR_XR_H_
+#define THIRD_PARTY_BLINK_RENDERER_MODULES_XR_XR_H_
+
+#include "device/vr/public/mojom/vr_service.mojom-blink.h"
+#include "mojo/public/cpp/bindings/binding.h"
+#include "third_party/blink/public/platform/web_callbacks.h"
+#include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
+#include "third_party/blink/renderer/core/dom/context_lifecycle_observer.h"
+#include "third_party/blink/renderer/core/dom/events/event_target.h"
+#include "third_party/blink/renderer/core/page/focus_changed_observer.h"
+#include "third_party/blink/renderer/platform/heap/handle.h"
+#include "third_party/blink/renderer/platform/wtf/forward.h"
+
+namespace blink {
+
+class ScriptPromiseResolver;
+class XRDevice;
+
+class XR final : public EventTargetWithInlineData,
+ public ContextLifecycleObserver,
+ public device::mojom::blink::VRServiceClient,
+ public FocusChangedObserver {
+ DEFINE_WRAPPERTYPEINFO();
+ USING_GARBAGE_COLLECTED_MIXIN(XR);
+
+ public:
+ static XR* Create(LocalFrame& frame) { return new XR(frame); }
+
+ DEFINE_ATTRIBUTE_EVENT_LISTENER(devicechange);
+
+ ScriptPromise requestDevice(ScriptState*);
+
+ // XRServiceClient overrides.
+ void OnDisplayConnected(device::mojom::blink::VRMagicWindowProviderPtr,
+ device::mojom::blink::VRDisplayHostPtr,
+ device::mojom::blink::VRDisplayClientRequest,
+ device::mojom::blink::VRDisplayInfoPtr) override;
+
+ // EventTarget overrides.
+ ExecutionContext* GetExecutionContext() const override;
+ const AtomicString& InterfaceName() const override;
+
+ // ContextLifecycleObserver overrides.
+ void ContextDestroyed(ExecutionContext*) override;
+ void Trace(blink::Visitor*) override;
+
+ // FocusChangedObserver overrides.
+ void FocusedFrameChanged() override;
+ bool IsFrameFocused();
+
+ private:
+ explicit XR(LocalFrame& frame);
+
+ void OnDevicesSynced();
+ void ResolveRequestDevice();
+ void Dispose();
+
+ bool devices_synced_;
+
+ HeapVector<Member<XRDevice>> devices_;
+ Member<ScriptPromiseResolver> pending_devices_resolver_;
+ device::mojom::blink::VRServicePtr service_;
+ mojo::Binding<device::mojom::blink::VRServiceClient> binding_;
+};
+
+} // namespace blink
+
+#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_XR_XR_H_