chromium/device/vr/android/xr_activity_state_handler.h

// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef DEVICE_VR_ANDROID_XR_ACTIVITY_STATE_HANDLER_H_
#define DEVICE_VR_ANDROID_XR_ACTIVITY_STATE_HANDLER_H_

#include <memory>

#include "base/functional/callback_forward.h"

namespace device {

// The purpose of this interface is to allow for dependency injection to allow
// //device code to listen to calls to the ActivityLifecycleCallbacks interface,
// which has to be implemented in //components, because it needs to access the
// WebContents and Activity objects, which cannot be used in //device.
//  Unfortunately, the implementation in //components must have the same name as
// the java class for the jni headers to build properly; so we're left to come
// up with a slightly different name here.
class XrActivityStateHandler {
 public:
  virtual ~XrActivityStateHandler() = default;
  virtual void SetResumedHandler(base::RepeatingClosure resumed_handler) = 0;
};

class XrActivityStateHandlerFactory {
 public:
  virtual ~XrActivityStateHandlerFactory() = default;
  virtual std::unique_ptr<XrActivityStateHandler> Create(
      int render_process_id,
      int render_frame_id) = 0;
};

}  // namespace device

#endif  // DEVICE_VR_ANDROID_XR_ACTIVITY_STATE_HANDLER_H_