// Copyright 2016 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 DEVICE_VR_ANDROID_GVR_DEVICE_H
#define DEVICE_VR_ANDROID_GVR_DEVICE_H

#include "base/macros.h"
#include "device/vr/vr_device.h"

namespace gvr {
class GvrApi;
}  // namespace gvr

namespace device {

class GvrDeviceProvider;
class GvrDelegate;

class GvrDevice : public VRDevice {
 public:
  GvrDevice(GvrDeviceProvider* provider, GvrDelegate* delegate);
  ~GvrDevice() override;

  // VRDevice
  VRDisplayPtr GetVRDevice() override;
  VRPosePtr GetPose() override;
  void ResetPose() override;

  bool RequestPresent(bool secure_origin) override;
  void ExitPresent() override;

  void SubmitFrame(VRPosePtr pose) override;
  void UpdateLayerBounds(VRLayerBoundsPtr leftBounds,
                         VRLayerBoundsPtr rightBounds) override;

  void SetDelegate(GvrDelegate* delegate);

 private:
  gvr::GvrApi* GetGvrApi();

  GvrDelegate* delegate_;
  GvrDeviceProvider* gvr_provider_;
  bool secure_origin_;

  DISALLOW_COPY_AND_ASSIGN(GvrDevice);
};

}  // namespace device

#endif  // DEVICE_VR_ANDROID_GVR_DEVICE_H
