#ifndef CONTENT_PUBLIC_BROWSER_DESKTOP_CAPTURE_H_
#define CONTENT_PUBLIC_BROWSER_DESKTOP_CAPTURE_H_
#include "base/functional/callback.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
#include "content/common/content_export.h"
#include "content/public/browser/desktop_media_id.h"
#include "third_party/webrtc/modules/desktop_capture/desktop_capture_options.h"
#include "third_party/webrtc/modules/desktop_capture/desktop_capturer.h"
#if BUILDFLAG(IS_CHROMEOS_ASH)
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "services/video_capture/public/mojom/device.mojom-forward.h"
#endif
namespace content {
#if BUILDFLAG(IS_CHROMEOS_ASH)
struct DesktopMediaID;
#endif
namespace desktop_capture {
CONTENT_EXPORT webrtc::DesktopCaptureOptions CreateDesktopCaptureOptions();
CONTENT_EXPORT std::unique_ptr<webrtc::DesktopCapturer> CreateScreenCapturer(
bool allow_wgc_screen_capturer = false);
CONTENT_EXPORT std::unique_ptr<webrtc::DesktopCapturer> CreateWindowCapturer();
#if BUILDFLAG(IS_CHROMEOS_ASH)
CONTENT_EXPORT void BindAuraWindowCapturer(
mojo::PendingReceiver<video_capture::mojom::Device> receiver,
const content::DesktopMediaID& id);
#endif
CONTENT_EXPORT bool CanUsePipeWire();
CONTENT_EXPORT bool ShouldEnumerateCurrentProcessWindows();
CONTENT_EXPORT void OpenNativeScreenCapturePicker(
content::DesktopMediaID::Type type,
base::OnceCallback<void(webrtc::DesktopCapturer::Source)> picker_callback,
base::OnceCallback<void()> cancel_callback,
base::OnceCallback<void()> error_callback);
}
}
#endif