Skip to content

Commit

Permalink
Replace error_state with exception_state in UMR::Create
Browse files Browse the repository at this point in the history
Bug: 1373398
Change-Id: Ifbc625e29abfec7e665ea077864b597d8c3d852a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4191819
Commit-Queue: Palak Agarwal <agpalak@chromium.org>
Reviewed-by: Guido Urdaneta <guidou@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1098524}
  • Loading branch information
palak8669 authored and Chromium LUCI CQ committed Jan 30, 2023
1 parent eedd180 commit a478cd9
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 31 deletions.
11 changes: 4 additions & 7 deletions third_party/blink/renderer/modules/mediastream/media_devices.cc
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,6 @@
#include "third_party/blink/renderer/modules/mediastream/crop_target.h"
#include "third_party/blink/renderer/modules/mediastream/identifiability_metrics.h"
#include "third_party/blink/renderer/modules/mediastream/input_device_info.h"
#include "third_party/blink/renderer/modules/mediastream/media_error_state.h"
#include "third_party/blink/renderer/modules/mediastream/media_stream.h"
#include "third_party/blink/renderer/modules/mediastream/navigator_media_stream.h"
#include "third_party/blink/renderer/modules/mediastream/user_media_client.h"
Expand Down Expand Up @@ -429,18 +428,16 @@ ScriptPromise MediaDevices::SendUserMediaRequest(
surface_type, TokenFromConstraints(options));
}
ScriptPromise promise = resolver->Promise();
MediaErrorState error_state;
UserMediaRequest* request =
UserMediaRequest::Create(window, user_media_client, media_type, options,
callbacks, error_state, surface);
callbacks, exception_state, surface);
if (!request) {
DCHECK(error_state.HadException());
resolver->RecordAndThrowTypeError(
exception_state, error_state.GetErrorMessage(),
DCHECK(exception_state.HadException());
resolver->RecordResultAndLatency(
UserMediaRequestResult::kInvalidConstraints);
RecordIdentifiabilityMetric(
surface, GetExecutionContext(),
IdentifiabilityBenignStringToken(error_state.GetErrorMessage()));
IdentifiabilityBenignStringToken(exception_state.Message()));
return ScriptPromise();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
#include "third_party/blink/renderer/core/frame/settings.h"
#include "third_party/blink/renderer/core/page/page.h"
#include "third_party/blink/renderer/modules/mediastream/identifiability_metrics.h"
#include "third_party/blink/renderer/modules/mediastream/media_error_state.h"
#include "third_party/blink/renderer/modules/mediastream/user_media_client.h"
#include "third_party/blink/renderer/modules/mediastream/user_media_request.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h"
Expand Down Expand Up @@ -105,18 +104,17 @@ void NavigatorMediaStream::getUserMedia(
surface = IdentifiableSurface::FromTypeAndToken(
surface_type, TokenFromConstraints(options));
}
MediaErrorState error_state;

UserMediaRequest* request = UserMediaRequest::Create(
navigator.DomWindow(), user_media, UserMediaRequestType::kUserMedia,
options,
MakeGarbageCollected<V8Callbacks>(success_callback, error_callback),
error_state, surface);
exception_state, surface);
if (!request) {
DCHECK(error_state.HadException());
error_state.Throw(exception_state);
DCHECK(exception_state.HadException());
RecordIdentifiabilityMetric(
surface, navigator.GetExecutionContext(),
IdentifiabilityBenignStringToken(error_state.GetErrorMessage()));
IdentifiabilityBenignStringToken(exception_state.Message()));
return;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -385,7 +385,7 @@ void RecordSuppressLocalAudioPlaybackConstraintUma(
MediaConstraints ParseOptions(
ExecutionContext* execution_context,
const V8UnionBooleanOrMediaTrackConstraints* options,
MediaErrorState& error_state) {
ExceptionState& exception_state) {
if (!options)
return MediaConstraints();
switch (options->GetContentType()) {
Expand All @@ -396,9 +396,14 @@ MediaConstraints ParseOptions(
return MediaConstraints();
case V8UnionBooleanOrMediaTrackConstraints::ContentType::
kMediaTrackConstraints:
return media_constraints_impl::Create(
MediaErrorState error_state;
auto constraints = media_constraints_impl::Create(
execution_context, options->GetAsMediaTrackConstraints(),
error_state);
if (error_state.HadException()) {
error_state.Throw(exception_state);
}
return constraints;
}
NOTREACHED();
return MediaConstraints();
Expand All @@ -412,29 +417,33 @@ UserMediaRequest* UserMediaRequest::Create(
UserMediaRequestType media_type,
const MediaStreamConstraints* options,
Callbacks* callbacks,
MediaErrorState& error_state,
ExceptionState& exception_state,
IdentifiableSurface surface) {
MediaConstraints audio = ParseOptions(context, options->audio(), error_state);
if (error_state.HadException())
MediaConstraints audio =
ParseOptions(context, options->audio(), exception_state);
if (exception_state.HadException()) {
return nullptr;
}

MediaConstraints video = ParseOptions(context, options->video(), error_state);
if (error_state.HadException())
MediaConstraints video =
ParseOptions(context, options->video(), exception_state);
if (exception_state.HadException()) {
return nullptr;
}

std::string display_surface_constraint;
absl::optional<bool> suppress_local_audio_playback;

if (media_type == UserMediaRequestType::kUserMedia) {
if (audio.IsNull() && video.IsNull()) {
error_state.MarkTypeError(
exception_state.ThrowTypeError(
"At least one of audio and video must be requested");
return nullptr;
} else if (!video.IsNull()) {
if (video.Basic().pan.HasMandatory() ||
video.Basic().tilt.HasMandatory() ||
video.Basic().zoom.HasMandatory()) {
error_state.MarkTypeError(
exception_state.ThrowTypeError(
"Mandatory pan-tilt-zoom constraints are not supported");
return nullptr;
}
Expand All @@ -456,33 +465,33 @@ UserMediaRequest* UserMediaRequest::Create(
// either a dictionary value or a value of true.
if (media_type == UserMediaRequestType::kDisplayMediaSet) {
if (!audio.IsNull()) {
error_state.MarkTypeError("Audio requests are not supported");
exception_state.ThrowTypeError("Audio requests are not supported");
return nullptr;
} else if (options->preferCurrentTab()) {
error_state.MarkTypeError("preferCurrentTab is not supported");
exception_state.ThrowTypeError("preferCurrentTab is not supported");
return nullptr;
}
}

if (video.IsNull()) {
error_state.MarkTypeError("video must be requested");
exception_state.ThrowTypeError("video must be requested");
return nullptr;
}

if ((!audio.IsNull() && !audio.Advanced().empty()) ||
!video.Advanced().empty()) {
error_state.MarkTypeError("Advanced constraints are not supported");
exception_state.ThrowTypeError("Advanced constraints are not supported");
return nullptr;
}

if ((!audio.IsNull() && audio.Basic().HasMin()) || video.Basic().HasMin()) {
error_state.MarkTypeError("min constraints are not supported");
exception_state.ThrowTypeError("min constraints are not supported");
return nullptr;
}

if ((!audio.IsNull() && audio.Basic().HasExact()) ||
video.Basic().HasExact()) {
error_state.MarkTypeError("exact constraints are not supported");
exception_state.ThrowTypeError("exact constraints are not supported");
return nullptr;
}

Expand Down Expand Up @@ -524,7 +533,7 @@ UserMediaRequest* UserMediaRequest::Create(
options->selfBrowserSurface().AsEnum() ==
V8SelfCapturePreferenceEnum::Enum::kExclude;
if (exclude_self_browser_surface && options->preferCurrentTab()) {
error_state.MarkTypeError(
exception_state.ThrowTypeError(
"Self-contradictory configuration (preferCurrentTab and "
"selfBrowserSurface=exclude).");
return nullptr;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@
namespace blink {

class LocalDOMWindow;
class MediaErrorState;
class MediaStreamConstraints;
class ScriptWrappable;
class TransferredMediaStreamTrack;
Expand Down Expand Up @@ -98,7 +97,7 @@ class MODULES_EXPORT UserMediaRequest final
UserMediaRequestType media_type,
const MediaStreamConstraints* options,
Callbacks*,
MediaErrorState&,
ExceptionState&,
IdentifiableSurface surface);
static UserMediaRequest* CreateForTesting(const MediaConstraints& audio,
const MediaConstraints& video);
Expand Down

0 comments on commit a478cd9

Please sign in to comment.