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 3 // found in the LICENSE file. 4 5 #ifndef DEVICE_VR_ORIENTATION_ORIENTATION_SESSION_H_ 6 #define DEVICE_VR_ORIENTATION_ORIENTATION_SESSION_H_ 7 8 #include <memory> 9 10 #include "base/macros.h" 11 #include "base/memory/weak_ptr.h" 12 #include "device/vr/public/mojom/isolated_xr_service.mojom.h" 13 #include "device/vr/public/mojom/vr_service.mojom.h" 14 #include "device/vr/vr_device.h" 15 #include "device/vr/vr_export.h" 16 #include "mojo/public/cpp/bindings/pending_associated_receiver.h" 17 #include "mojo/public/cpp/bindings/pending_associated_remote.h" 18 #include "mojo/public/cpp/bindings/pending_receiver.h" 19 #include "mojo/public/cpp/bindings/receiver.h" 20 #include "ui/display/display.h" 21 22 namespace device { 23 24 class VROrientationDevice; 25 26 // VR device process implementation of a XRFrameDataProvider within a session 27 // that exposes device orientation sensors. 28 // VROrientationSession objects are owned by their respective 29 // VROrientationDevice instances. 30 class DEVICE_VR_EXPORT VROrientationSession 31 : public mojom::XRFrameDataProvider, 32 public mojom::XRSessionController { 33 public: 34 VROrientationSession(VROrientationDevice* device, 35 mojo::PendingReceiver<mojom::XRFrameDataProvider>, 36 mojo::PendingReceiver<mojom::XRSessionController>); 37 ~VROrientationSession() override; 38 39 void GetEnvironmentIntegrationProvider( 40 mojo::PendingAssociatedReceiver<mojom::XREnvironmentIntegrationProvider> 41 environment_provider) override; 42 void SetInputSourceButtonListener( 43 mojo::PendingAssociatedRemote<device::mojom::XRInputSourceButtonListener>) 44 override; 45 46 // Accessible to tests. 47 protected: 48 // mojom::XRFrameDataProvider 49 void GetFrameData(mojom::XRFrameDataRequestOptionsPtr options, 50 GetFrameDataCallback callback) override; 51 52 // mojom::XRSessionController 53 void SetFrameDataRestricted(bool frame_data_restricted) override; 54 55 void OnMojoConnectionError(); 56 57 mojo::Receiver<mojom::XRFrameDataProvider> magic_window_receiver_; 58 mojo::Receiver<mojom::XRSessionController> session_controller_receiver_; 59 device::VROrientationDevice* device_; 60 bool restrict_frame_data_ = true; 61 62 // This must be the last member 63 base::WeakPtrFactory<VROrientationSession> weak_ptr_factory_{this}; 64 }; 65 66 } // namespace device 67 68 #endif // DEVICE_VR_ORIENTATION_ORIENTATION_SESSION_H_ 69