chromium/remoting/host/linux/remote_desktop_portal.h

// 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 REMOTING_HOST_LINUX_REMOTE_DESKTOP_PORTAL_H_
#define REMOTING_HOST_LINUX_REMOTE_DESKTOP_PORTAL_H_

#include <gio/gio.h>

#include <memory>
#include <string>

#include "base/memory/raw_ptr.h"
#include "base/memory/scoped_refptr.h"
#include "base/sequence_checker.h"
#include "remoting/host/linux/clipboard_portal.h"
#include "third_party/webrtc/modules/desktop_capture/desktop_capture_options.h"
#include "third_party/webrtc/modules/desktop_capture/linux/wayland/screen_capture_portal_interface.h"
#include "third_party/webrtc/modules/desktop_capture/linux/wayland/screencast_portal.h"
#include "third_party/webrtc/modules/portal/portal_request_response.h"
#include "third_party/webrtc/modules/portal/scoped_glib.h"
#include "third_party/webrtc/modules/portal/xdg_desktop_portal_utils.h"
#include "third_party/webrtc/modules/portal/xdg_session_details.h"

namespace remoting::xdg_portal {

// Helper class to setup an XDG remote desktop portal session. An instance of
// this class is owned by the wayland capturer. The methods on this class are
// called from the capturer thread.
class RemoteDesktopPortal
    : public webrtc::xdg_portal::ScreenCapturePortalInterface,
      public webrtc::ScreenCastPortal::PortalNotifier,
      public xdg_portal::ClipboardPortal::PortalNotifier {};

}  // namespace remoting::xdg_portal

#endif  // REMOTING_HOST_LINUX_REMOTE_DESKTOP_PORTAL_H_