blob: 7f5a7e6c4a1f399ea8dcb8a721e0717169d0d2ba [file] [log] [blame]
// Copyright 2018 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 CHROME_BROWSER_VR_SCHEDULER_DELEGATE_H_
#define CHROME_BROWSER_VR_SCHEDULER_DELEGATE_H_
#include "base/callback.h"
#include "base/time/time.h"
#include "chrome/browser/vr/frame_type.h"
#include "chrome/browser/vr/vr_export.h"
#include "device/vr/public/mojom/isolated_xr_service.mojom.h"
#include "device/vr/public/mojom/vr_service.mojom.h"
namespace gfx {
class Transform;
}
namespace vr {
class SchedulerBrowserRendererInterface;
// The SchedulerDelegate is responsible for starting the draw calls of the
// BrowserRenderer, given different signals, such as WebXR frames submitted or
// VSync events.
class VR_EXPORT SchedulerDelegate {
public:
virtual ~SchedulerDelegate() {}
virtual void OnPause() = 0;
virtual void OnResume() = 0;
virtual void OnExitPresent() = 0;
virtual void SetWebXrMode(bool enabled) = 0;
virtual void SetShowingVrDialog(bool showing) = 0;
virtual void SetBrowserRenderer(
SchedulerBrowserRendererInterface* browser_renderer) = 0;
virtual void SubmitDrawnFrame(FrameType frame_type,
const gfx::Transform& head_pose) = 0;
virtual void AddInputSourceState(
device::mojom::XRInputSourceStatePtr state) = 0;
virtual void ConnectPresentingService(
device::mojom::VRDisplayInfoPtr display_info,
device::mojom::XRRuntimeSessionOptionsPtr options) = 0;
};
} // namespace vr
#endif // CHROME_BROWSER_VR_SCHEDULER_DELEGATE_H_