#include "chrome/browser/extensions/api/desktop_capture/desktop_capture_base.h"
#include <memory>
#include <tuple>
#include <utility>
#include "base/command_line.h"
#include "base/containers/contains.h"
#include "base/functional/bind.h"
#include "base/strings/utf_string_conversions.h"
#include "build/build_config.h"
#include "chrome/browser/extensions/extension_tab_util.h"
#include "chrome/browser/media/webrtc/capture_policy_utils.h"
#include "chrome/browser/media/webrtc/desktop_media_picker_factory_impl.h"
#include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h"
#include "chrome/browser/media/webrtc/native_desktop_media_list.h"
#include "chrome/browser/media/webrtc/tab_desktop_media_list.h"
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser_finder.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/grit/branded_strings.h"
#include "content/public/browser/desktop_capture.h"
#include "content/public/browser/desktop_streams_registry.h"
#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/web_contents.h"
#include "extensions/common/manifest.h"
#include "extensions/common/switches.h"
#include "ui/base/l10n/l10n_util.h"
#include "url/origin.h"
DesktopMediaID;
Options;
namespace extensions {
namespace {
const char kTargetNotActiveError[] = …;
const char kInvalidSourceNameError[] = …;
DesktopMediaPickerFactory* g_picker_factory = …;
}
void DesktopCaptureChooseDesktopMediaFunctionBase::SetPickerFactoryForTests(
DesktopMediaPickerFactory* factory) { … }
const char
DesktopCaptureChooseDesktopMediaFunctionBase::kTargetNotFoundError[] = …;
DesktopCaptureChooseDesktopMediaFunctionBase::
DesktopCaptureChooseDesktopMediaFunctionBase() = default;
DesktopCaptureChooseDesktopMediaFunctionBase::
~DesktopCaptureChooseDesktopMediaFunctionBase() { … }
void DesktopCaptureChooseDesktopMediaFunctionBase::Cancel() { … }
ExtensionFunction::ResponseAction
DesktopCaptureChooseDesktopMediaFunctionBase::Execute(
const std::vector<api::desktop_capture::DesktopCaptureSourceType>& sources,
bool exclude_system_audio,
bool exclude_self_browser_surface,
bool suppress_local_audio_playback_intended,
content::RenderFrameHost* render_frame_host,
const GURL& origin,
const std::u16string target_name) { … }
std::string DesktopCaptureChooseDesktopMediaFunctionBase::GetCallerDisplayName()
const { … }
void DesktopCaptureChooseDesktopMediaFunctionBase::OnPickerDialogResults(
const GURL& origin,
const content::GlobalRenderFrameHostId& render_frame_host_id,
const std::string& err,
DesktopMediaID source) { … }
DesktopCaptureRequestsRegistry::RequestId::RequestId(int process_id,
int request_id)
: … { … }
bool DesktopCaptureRequestsRegistry::RequestId::operator<(
const RequestId& other) const { … }
DesktopCaptureCancelChooseDesktopMediaFunctionBase::
DesktopCaptureCancelChooseDesktopMediaFunctionBase() { … }
DesktopCaptureCancelChooseDesktopMediaFunctionBase::
~DesktopCaptureCancelChooseDesktopMediaFunctionBase() { … }
ExtensionFunction::ResponseAction
DesktopCaptureCancelChooseDesktopMediaFunctionBase::Run() { … }
DesktopCaptureRequestsRegistry::DesktopCaptureRequestsRegistry() { … }
DesktopCaptureRequestsRegistry::~DesktopCaptureRequestsRegistry() { … }
DesktopCaptureRequestsRegistry* DesktopCaptureRequestsRegistry::GetInstance() { … }
void DesktopCaptureRequestsRegistry::AddRequest(
int process_id,
int request_id,
DesktopCaptureChooseDesktopMediaFunctionBase* handler) { … }
void DesktopCaptureRequestsRegistry::RemoveRequest(int process_id,
int request_id) { … }
void DesktopCaptureRequestsRegistry::CancelRequest(int process_id,
int request_id) { … }
}