summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/modules/mediastream/media_devices.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-06 12:48:11 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:33:43 +0000
commit7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (patch)
treefa14ba0ca8d2683ba2efdabd246dc9b18a1229c6 /chromium/third_party/blink/renderer/modules/mediastream/media_devices.cc
parent79b4f909db1049fca459c07cca55af56a9b54fe3 (diff)
downloadqtwebengine-chromium-7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3.tar.gz
BASELINE: Update Chromium to 84.0.4147.141
Change-Id: Ib85eb4cfa1cbe2b2b81e5022c8cad5c493969535 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/third_party/blink/renderer/modules/mediastream/media_devices.cc')
-rw-r--r--chromium/third_party/blink/renderer/modules/mediastream/media_devices.cc34
1 files changed, 15 insertions, 19 deletions
diff --git a/chromium/third_party/blink/renderer/modules/mediastream/media_devices.cc b/chromium/third_party/blink/renderer/modules/mediastream/media_devices.cc
index 1fc3e9ae1c5..323c7e42421 100644
--- a/chromium/third_party/blink/renderer/modules/mediastream/media_devices.cc
+++ b/chromium/third_party/blink/renderer/modules/mediastream/media_devices.cc
@@ -13,10 +13,10 @@
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_media_stream_constraints.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_media_track_supported_constraints.h"
-#include "third_party/blink/renderer/core/dom/document.h"
#include "third_party/blink/renderer/core/dom/dom_exception.h"
#include "third_party/blink/renderer/core/dom/events/event.h"
#include "third_party/blink/renderer/core/execution_context/execution_context.h"
+#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/frame/local_frame.h"
#include "third_party/blink/renderer/modules/mediastream/input_device_info.h"
#include "third_party/blink/renderer/modules/mediastream/media_error_state.h"
@@ -69,9 +69,7 @@ MediaDevices::~MediaDevices() = default;
ScriptPromise MediaDevices::enumerateDevices(ScriptState* script_state,
ExceptionState& exception_state) {
UpdateWebRTCMethodCount(RTCAPIName::kEnumerateDevices);
- LocalFrame* frame =
- Document::From(ExecutionContext::From(script_state))->GetFrame();
- if (!frame) {
+ if (!script_state->ContextIsValid()) {
exception_state.ThrowDOMException(DOMExceptionCode::kNotSupportedError,
"Current frame is detached.");
return ScriptPromise();
@@ -81,6 +79,7 @@ ScriptPromise MediaDevices::enumerateDevices(ScriptState* script_state,
ScriptPromise promise = resolver->Promise();
requests_.insert(resolver);
+ LocalFrame* frame = LocalDOMWindow::From(script_state)->GetFrame();
GetDispatcherHost(frame)->EnumerateDevices(
true /* audio input */, true /* video input */, true /* audio output */,
true /* request_video_input_capabilities */,
@@ -107,23 +106,21 @@ ScriptPromise MediaDevices::SendUserMediaRequest(
UserMediaRequest::MediaType media_type,
const MediaStreamConstraints* options,
ExceptionState& exception_state) {
- auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state);
- auto* callbacks = MakeGarbageCollected<PromiseResolverCallbacks>(resolver);
-
- Document* document = Document::From(ExecutionContext::From(script_state));
- UserMediaController* user_media =
- UserMediaController::From(document->GetFrame());
- if (!user_media) {
+ if (!script_state->ContextIsValid()) {
exception_state.ThrowDOMException(DOMExceptionCode::kNotSupportedError,
"No media device controller available; "
"is this a detached window?");
return ScriptPromise();
}
+ auto* resolver = MakeGarbageCollected<ScriptPromiseResolver>(script_state);
+ auto* callbacks = MakeGarbageCollected<PromiseResolverCallbacks>(resolver);
+
+ LocalDOMWindow* window = LocalDOMWindow::From(script_state);
+ UserMediaController* user_media = UserMediaController::From(window);
MediaErrorState error_state;
- UserMediaRequest* request =
- UserMediaRequest::Create(document->ToExecutionContext(), user_media,
- media_type, options, callbacks, error_state);
+ UserMediaRequest* request = UserMediaRequest::Create(
+ window, user_media, media_type, options, callbacks, error_state);
if (!request) {
DCHECK(error_state.HadException());
if (error_state.CanGenerateException()) {
@@ -203,8 +200,7 @@ void MediaDevices::ContextDestroyed() {
void MediaDevices::OnDevicesChanged(
MediaDeviceType type,
const Vector<WebMediaDeviceInfo>& device_infos) {
- Document* document = Document::From(GetExecutionContext());
- DCHECK(document);
+ DCHECK(GetExecutionContext());
if (RuntimeEnabledFeatures::OnDeviceChangeEnabled())
ScheduleDispatchEvent(Event::Create(event_type_names::kDevicechange));
@@ -239,11 +235,11 @@ void MediaDevices::StartObserving() {
if (receiver_.is_bound() || stopped_)
return;
- Document* document = Document::From(GetExecutionContext());
- if (!document || !document->GetFrame())
+ LocalDOMWindow* window = To<LocalDOMWindow>(GetExecutionContext());
+ if (!window)
return;
- GetDispatcherHost(document->GetFrame())
+ GetDispatcherHost(window->GetFrame())
->AddMediaDevicesListener(true /* audio input */, true /* video input */,
true /* audio output */,
receiver_.BindNewPipeAndPassRemote(