diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-06 12:48:11 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-10-13 09:33:43 +0000 |
commit | 7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (patch) | |
tree | fa14ba0ca8d2683ba2efdabd246dc9b18a1229c6 /chromium/third_party/blink/renderer/modules/mediastream/media_devices.cc | |
parent | 79b4f909db1049fca459c07cca55af56a9b54fe3 (diff) | |
download | qtwebengine-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.cc | 34 |
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( |