#include "chrome/browser/media/webrtc/desktop_capture_devices_util.h"
#include <string>
#include <utility>
#include "base/check_op.h"
#include "base/ranges/algorithm.h"
#include "base/strings/strcat.h"
#include "base/strings/string_util.h"
#include "base/unguessable_token.h"
#include "build/build_config.h"
#include "chrome/browser/media/webrtc/media_capture_devices_dispatcher.h"
#include "chrome/browser/ui/screen_capture_notification_ui.h"
#include "chrome/browser/ui/tab_sharing/tab_sharing_ui.h"
#include "chrome/common/chrome_features.h"
#include "chrome/grit/generated_resources.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/host_zoom_map.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/web_contents_media_capture_id.h"
#include "content/public/common/content_features.h"
#include "media/audio/audio_device_description.h"
#include "media/mojo/mojom/capture_handle.mojom.h"
#include "media/mojo/mojom/display_media_information.mojom.h"
#include "third_party/blink/public/common/features_generated.h"
#include "third_party/blink/public/common/page/page_zoom.h"
#include "third_party/blink/public/mojom/media/capture_handle_config.mojom.h"
#include "third_party/blink/public/mojom/mediastream/media_stream.mojom.h"
#include "ui/base/l10n/l10n_util.h"
BASE_FEATURE(…);
BASE_FEATURE(…);
namespace {
media::mojom::CaptureHandlePtr CreateCaptureHandle(
content::WebContents* capturer,
const url::Origin& capturer_origin,
const content::DesktopMediaID& captured_id) { … }
std::optional<int> GetZoomLevel(content::WebContents* capturer,
const content::DesktopMediaID& captured_id) { … }
media::mojom::DisplayMediaInformationPtr
DesktopMediaIDToDisplayMediaInformation(
content::WebContents* capturer,
const url::Origin& capturer_origin,
const content::DesktopMediaID& media_id) { … }
std::u16string GetNotificationText(const std::u16string& application_title,
bool capture_audio,
content::DesktopMediaID::Type capture_type) { … }
std::string DeviceNamePrefix(
content::WebContents* web_contents,
blink::mojom::MediaStreamType requested_stream_type,
const content::DesktopMediaID& media_id) { … }
std::string DeviceName(content::WebContents* web_contents,
blink::mojom::MediaStreamType requested_stream_type,
const content::DesktopMediaID& media_id) { … }
}
std::unique_ptr<content::MediaStreamUI> GetDevicesForDesktopCapture(
const content::MediaStreamRequest& request,
content::WebContents* web_contents,
const content::DesktopMediaID& media_id,
bool capture_audio,
bool disable_local_echo,
bool suppress_local_audio_playback,
bool display_notification,
const std::u16string& application_title,
bool captured_surface_control_active,
blink::mojom::StreamDevices& out_devices) { … }