blob: aafccc103ceba5a942daf534cdbe031ac90c12ce [file] [log] [blame]
// Copyright 2022 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_ASH_VIDEO_CONFERENCE_VIDEO_CONFERENCE_CLIENT_WRAPPER_H_
#define CHROME_BROWSER_ASH_VIDEO_CONFERENCE_VIDEO_CONFERENCE_CLIENT_WRAPPER_H_
#include <cstdint>
#include "ash/system/video_conference/video_conference_common.h"
#include "base/memory/raw_ptr.h"
#include "chromeos/crosapi/mojom/video_conference.mojom.h"
namespace base {
class UnguessableToken;
} // namespace base
namespace ash {
// |VideoConferenceClientWrapper| adds a VideoConferenceMediaState member
// variable for use by VideoConferenceManagerAsh.
class VideoConferenceClientWrapper {
public:
explicit VideoConferenceClientWrapper(
crosapi::mojom::VideoConferenceManagerClient* client);
~VideoConferenceClientWrapper();
// API mirroring the one in `crosapi::mojom::VideoConferenceManagerClient`
void GetMediaApps(
crosapi::mojom::VideoConferenceManagerClient::GetMediaAppsCallback
callback);
void ReturnToApp(
const base::UnguessableToken& id,
crosapi::mojom::VideoConferenceManagerClient::ReturnToAppCallback
callback);
void SetSystemMediaDeviceStatus(
crosapi::mojom::VideoConferenceMediaDevice device,
bool disabled,
crosapi::mojom::VideoConferenceManagerClient::
SetSystemMediaDeviceStatusCallback callback);
void StopAllScreenShare();
VideoConferenceMediaState& state();
private:
VideoConferenceMediaState state_;
raw_ptr<crosapi::mojom::VideoConferenceManagerClient> cpp_client_{nullptr};
};
} // namespace ash
#endif // CHROME_BROWSER_ASH_VIDEO_CONFERENCE_VIDEO_CONFERENCE_CLIENT_WRAPPER_H_