summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chromium/content/browser/renderer_host/media/media_stream_dispatcher_host.cc3
-rw-r--r--chromium/content/browser/renderer_host/media/media_stream_manager.cc39
-rw-r--r--chromium/third_party/blink/common/features.cc3
-rw-r--r--chromium/third_party/blink/public/common/features.h3
-rw-r--r--chromium/third_party/blink/renderer/modules/mediastream/user_media_processor.cc6
5 files changed, 41 insertions, 13 deletions
diff --git a/chromium/content/browser/renderer_host/media/media_stream_dispatcher_host.cc b/chromium/content/browser/renderer_host/media/media_stream_dispatcher_host.cc
index 2f359be49d3..ba730b67353 100644
--- a/chromium/content/browser/renderer_host/media/media_stream_dispatcher_host.cc
+++ b/chromium/content/browser/renderer_host/media/media_stream_dispatcher_host.cc
@@ -26,6 +26,7 @@
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/self_owned_receiver.h"
#include "services/service_manager/public/cpp/interface_provider.h"
+#include "third_party/blink/public/common/features.h"
#include "third_party/blink/public/mojom/mediastream/media_stream.mojom.h"
#include "url/origin.h"
@@ -528,6 +529,8 @@ void MediaStreamDispatcherHost::SetCapturingLinkSecured(
void MediaStreamDispatcherHost::OnStreamStarted(const std::string& label) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
+ DCHECK(!base::FeatureList::IsEnabled(
+ blink::features::kStartMediaStreamCaptureIndicatorInBrowser));
media_stream_manager_->OnStreamStarted(label);
}
diff --git a/chromium/content/browser/renderer_host/media/media_stream_manager.cc b/chromium/content/browser/renderer_host/media/media_stream_manager.cc
index afb3978a94b..c0473e4fca4 100644
--- a/chromium/content/browser/renderer_host/media/media_stream_manager.cc
+++ b/chromium/content/browser/renderer_host/media/media_stream_manager.cc
@@ -810,8 +810,8 @@ class MediaStreamManager::DeviceRequest {
}
void RunMojoCallbacks() {
- if (generate_stream_cb) {
- std::move(generate_stream_cb)
+ if (generate_streams_cb_) {
+ std::move(generate_streams_cb_)
.Run(MediaStreamRequestResult::FAILED_DUE_TO_SHUTDOWN, std::string(),
MediaStreamDevices(), MediaStreamDevices(),
/*pan_tilt_zoom_allowed=*/false);
@@ -823,6 +823,18 @@ class MediaStreamManager::DeviceRequest {
}
}
+ void SetGenerateStreamsCallback(GenerateStreamCallback callback) {
+ generate_streams_cb_ = std::move(callback);
+ }
+
+ GenerateStreamCallback&& MoveGenerateStreamsCallback() {
+ return std::move(generate_streams_cb_);
+ }
+
+ bool HasGenerateStreamsCallback() const {
+ return !generate_streams_cb_.is_null();
+ }
+
// The render process id that requested this stream to be generated and that
// will receive a handle to the MediaStream. This may be different from
// MediaStreamRequest::render_process_id which in the tab capture case
@@ -863,8 +875,6 @@ class MediaStreamManager::DeviceRequest {
// Currently it is only used by |DEVICE_ACCESS| type.
MediaAccessRequestCallback media_access_request_cb;
- GenerateStreamCallback generate_stream_cb;
-
// This callback is used by transferred MediaStreamTracks to access and clone
// an existing open MediaStreamDevice (identified by its session_id). If the
// device is found, it is returned to this callback along with a
@@ -902,6 +912,7 @@ class MediaStreamManager::DeviceRequest {
MediaStreamType video_type_;
int target_process_id_;
int target_frame_id_;
+ GenerateStreamCallback generate_streams_cb_;
};
// static
@@ -1113,7 +1124,7 @@ void MediaStreamManager::GenerateStream(
MediaDeviceSaltAndOrigin salt_and_origin,
bool user_gesture,
StreamSelectionInfoPtr audio_stream_selection_info_ptr,
- GenerateStreamCallback generate_stream_cb,
+ GenerateStreamCallback generate_streams_cb,
DeviceStoppedCallback device_stopped_cb,
DeviceChangedCallback device_changed_cb,
DeviceRequestStateChangeCallback device_request_state_change_cb,
@@ -1128,7 +1139,7 @@ void MediaStreamManager::GenerateStream(
std::move(device_stopped_cb), std::move(device_changed_cb),
std::move(device_request_state_change_cb),
std::move(device_capture_handle_change_cb));
- request->generate_stream_cb = std::move(generate_stream_cb);
+ request->SetGenerateStreamsCallback(std::move(generate_streams_cb));
DeviceRequest* const request_ptr = request.get();
const std::string label = AddRequest(std::move(request));
@@ -2165,7 +2176,7 @@ void MediaStreamManager::FinalizeGenerateStream(const std::string& label,
DeviceRequest* request) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
DCHECK(request);
- DCHECK(request->generate_stream_cb);
+ DCHECK(request->HasGenerateStreamsCallback());
SendLogMessage(
base::StringPrintf("FinalizeGenerateStream({label=%s}, {requester_id="
"%d}, {request_type=%s})",
@@ -2199,7 +2210,7 @@ void MediaStreamManager::FinalizeGenerateStream(const std::string& label,
request->requesting_frame_id),
base::BindOnce(&MediaStreamManager::PanTiltZoomPermissionChecked,
base::Unretained(this), label, video_devices,
- base::BindOnce(std::move(request->generate_stream_cb),
+ base::BindOnce(request->MoveGenerateStreamsCallback(),
MediaStreamRequestResult::OK, label,
audio_devices, video_devices)));
}
@@ -2315,10 +2326,10 @@ void MediaStreamManager::FinalizeRequestFailed(
switch (request->request_type()) {
case blink::MEDIA_GENERATE_STREAM: {
- DCHECK(request->generate_stream_cb);
- std::move(request->generate_stream_cb)
- .Run(result, std::string(), MediaStreamDevices(),
- MediaStreamDevices(), /*pan_tilt_zoom_allowed=*/false);
+ DCHECK(request->HasGenerateStreamsCallback());
+ request->MoveGenerateStreamsCallback().Run(
+ result, std::string(), MediaStreamDevices(),
+ MediaStreamDevices(), /*pan_tilt_zoom_allowed=*/false);
break;
}
case blink::MEDIA_GET_OPEN_DEVICE: {
@@ -2540,6 +2551,10 @@ void MediaStreamManager::HandleRequestDone(const std::string& label,
break;
case blink::MEDIA_GENERATE_STREAM: {
FinalizeGenerateStream(label, request);
+ if (base::FeatureList::IsEnabled(
+ blink::features::kStartMediaStreamCaptureIndicatorInBrowser)) {
+ OnStreamStarted(label);
+ }
break;
}
case blink::MEDIA_GET_OPEN_DEVICE: {
diff --git a/chromium/third_party/blink/common/features.cc b/chromium/third_party/blink/common/features.cc
index dfb2b8044e5..c9face230dc 100644
--- a/chromium/third_party/blink/common/features.cc
+++ b/chromium/third_party/blink/common/features.cc
@@ -1437,5 +1437,8 @@ const base::FeatureParam<base::TimeDelta> kRecentBeginMainFrameCutoff = {
&kDeferBeginMainFrameDuringLoading, "recent_begin_main_frame_cutoff",
base::Milliseconds(150)};
+const base::Feature kStartMediaStreamCaptureIndicatorInBrowser("StartMediaStreamCaptureIndicatorInBrowser",
+ base::FEATURE_ENABLED_BY_DEFAULT);
+
} // namespace features
} // namespace blink
diff --git a/chromium/third_party/blink/public/common/features.h b/chromium/third_party/blink/public/common/features.h
index e36e6b3bdbb..33707e02866 100644
--- a/chromium/third_party/blink/public/common/features.h
+++ b/chromium/third_party/blink/public/common/features.h
@@ -723,6 +723,9 @@ BLINK_COMMON_EXPORT extern const base::Feature
BLINK_COMMON_EXPORT extern const base::FeatureParam<base::TimeDelta>
kRecentBeginMainFrameCutoff;
+// Make the browser decide when to turn on the capture indicator (red button)
+BLINK_COMMON_EXPORT extern const base::Feature
+ kStartMediaStreamCaptureIndicatorInBrowser;
} // namespace features
} // namespace blink
diff --git a/chromium/third_party/blink/renderer/modules/mediastream/user_media_processor.cc b/chromium/third_party/blink/renderer/modules/mediastream/user_media_processor.cc
index 03d0d8e2cf8..ad5e7764f0e 100644
--- a/chromium/third_party/blink/renderer/modules/mediastream/user_media_processor.cc
+++ b/chromium/third_party/blink/renderer/modules/mediastream/user_media_processor.cc
@@ -22,6 +22,7 @@
#include "media/capture/video_capture_types.h"
#include "media/webrtc/constants.h"
#include "third_party/blink/public/common/browser_interface_broker_proxy.h"
+#include "third_party/blink/public/common/features.h"
#include "third_party/blink/public/common/mediastream/media_stream_controls.h"
#include "third_party/blink/public/common/mediastream/media_stream_request.h"
#include "third_party/blink/public/platform/modules/mediastream/web_media_stream_source.h"
@@ -1582,7 +1583,10 @@ void UserMediaProcessor::OnCreateNativeTracksCompleted(
if (result == MediaStreamRequestResult::OK) {
GetUserMediaRequestSucceeded(request_info->descriptor(),
request_info->request());
- GetMediaStreamDispatcherHost()->OnStreamStarted(label);
+ if (!base::FeatureList::IsEnabled(
+ blink::features::kStartMediaStreamCaptureIndicatorInBrowser)) {
+ GetMediaStreamDispatcherHost()->OnStreamStarted(label);
+ }
} else {
GetUserMediaRequestFailed(result, constraint_name);