Commit 859383e2 authored by Antonio Gomes's avatar Antonio Gomes Committed by Commit Bot

Switch AudioDeviceCaptureCapability to operate over String and Vector

... from WTF, instead of std::string and std::vector, respectively.

Additionally, this CL also moves this file out of the Blink exposed
API.

Note that not all std::vector use from media_stream_constraints_util_audio.cc
used replaced, given that it, it requires unrelated changes to
media_stream_constraints_util_sets.h.

BUG=704136,919392
R=guidou@chromium.org, haraken@chromium.org

Change-Id: Ie2f5565fc0c320a16fc5afa4c71a27431e319881
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1737016
Commit-Queue: Antonio Gomes <tonikitoo@igalia.com>
Reviewed-by: default avatarGuido Urdaneta <guidou@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#684316}
parent befef663
......@@ -375,7 +375,6 @@ source_set("blink_headers") {
"web/modules/media/webmediaplayer_util.h",
"web/modules/mediastream/local_media_stream_audio_source.h",
"web/modules/mediastream/media_stream_constraints_util.h",
"web/modules/mediastream/media_stream_constraints_util_audio.h",
"web/modules/mediastream/media_stream_constraints_util_sets.h",
"web/modules/mediastream/media_stream_constraints_util_video_content.h",
"web/modules/mediastream/media_stream_video_capturer_source.h",
......
......@@ -27,6 +27,7 @@ blink_modules_sources("mediastream") {
"media_stream.h",
"media_stream_constraints_util.cc",
"media_stream_constraints_util_audio.cc",
"media_stream_constraints_util_audio.h",
"media_stream_constraints_util_sets.cc",
"media_stream_constraints_util_video_content.cc",
"media_stream_constraints_util_video_device.cc",
......
......@@ -14,10 +14,10 @@
#include "third_party/blink/public/platform/web_media_stream_source.h"
#include "third_party/blink/public/platform/web_media_stream_track.h"
#include "third_party/blink/public/platform/web_string.h"
#include "third_party/blink/public/web/modules/mediastream/media_stream_constraints_util_audio.h"
#include "third_party/blink/public/web/modules/mediastream/media_stream_constraints_util_video_content.h"
#include "third_party/blink/public/web/modules/mediastream/media_stream_video_source.h"
#include "third_party/blink/public/web/modules/mediastream/media_stream_video_track.h"
#include "third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_audio.h"
#include "third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_video_device.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
......
......@@ -2,10 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/public/web/modules/mediastream/media_stream_constraints_util_audio.h"
#include "third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_audio.h"
#include <algorithm>
#include <cmath>
#include <string>
#include <tuple>
#include <utility>
#include <vector>
......@@ -974,13 +975,15 @@ class DeviceContainer {
bool is_device_capture,
bool is_reconfiguration_allowed)
: device_parameters_(capability.Parameters()) {
if (!capability.DeviceID().empty()) {
if (!capability.DeviceID().IsEmpty()) {
device_id_container_ =
StringContainer(StringSet({capability.DeviceID()}));
StringContainer(StringSet({capability.DeviceID().Utf8()}));
}
if (!capability.GroupID().empty())
group_id_container_ = StringContainer(StringSet({capability.GroupID()}));
if (!capability.GroupID().IsEmpty()) {
group_id_container_ =
StringContainer(StringSet({capability.GroupID().Utf8()}));
}
// If the device is in use, a source will be provided and all containers
// must be initialized such that their only supported values correspond to
......@@ -1343,25 +1346,26 @@ AudioDeviceCaptureCapability::AudioDeviceCaptureCapability(
: source_(source) {}
AudioDeviceCaptureCapability::AudioDeviceCaptureCapability(
std::string device_id,
std::string group_id,
String device_id,
String group_id,
const media::AudioParameters& parameters)
: device_id_(std::move(device_id)),
group_id_(std::move(group_id)),
parameters_(parameters) {
DCHECK(!device_id_.empty());
DCHECK(!device_id_.IsEmpty());
}
AudioDeviceCaptureCapability::AudioDeviceCaptureCapability(
const AudioDeviceCaptureCapability& other) = default;
const std::string& AudioDeviceCaptureCapability::DeviceID() const {
return source_ ? source_->device().id : device_id_;
String AudioDeviceCaptureCapability::DeviceID() const {
return source_ ? String(source_->device().id.data()) : device_id_;
}
const std::string& AudioDeviceCaptureCapability::GroupID() const {
return source_ && source_->device().group_id ? *source_->device().group_id
: group_id_;
String AudioDeviceCaptureCapability::GroupID() const {
return source_ && source_->device().group_id
? String(source_->device().group_id->data())
: group_id_;
}
const media::AudioParameters& AudioDeviceCaptureCapability::Parameters() const {
......@@ -1373,14 +1377,14 @@ AudioCaptureSettings SelectSettingsAudioCapture(
const blink::WebMediaConstraints& constraints,
bool should_disable_hardware_noise_suppression,
bool is_reconfiguration_allowed) {
if (capabilities.empty())
if (capabilities.IsEmpty())
return AudioCaptureSettings();
std::string media_stream_source = GetMediaStreamSource(constraints);
std::string default_device_id;
bool is_device_capture = media_stream_source.empty();
if (is_device_capture)
default_device_id = capabilities.begin()->DeviceID();
default_device_id = capabilities.begin()->DeviceID().Utf8();
CandidatesContainer candidates(capabilities, media_stream_source,
default_device_id, is_reconfiguration_allowed);
......
......@@ -2,14 +2,13 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_MEDIASTREAM_MEDIA_STREAM_CONSTRAINTS_UTIL_AUDIO_H_
#define THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_MEDIASTREAM_MEDIA_STREAM_CONSTRAINTS_UTIL_AUDIO_H_
#ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASTREAM_MEDIA_STREAM_CONSTRAINTS_UTIL_AUDIO_H_
#define THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASTREAM_MEDIA_STREAM_CONSTRAINTS_UTIL_AUDIO_H_
#include <string>
#include <vector>
#include "third_party/blink/public/platform/web_common.h"
#include "third_party/blink/public/web/modules/mediastream/media_stream_constraints_util.h"
#include "third_party/blink/renderer/modules/modules_export.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
#include "third_party/blink/renderer/platform/wtf/vector.h"
namespace blink {
class MediaStreamAudioSource;
......@@ -30,7 +29,7 @@ namespace blink {
// acceptable values for the deviceId constraint, while in case (3) no such
// restriction is imposed and any requested deviceID value will be acceptable
// while processing constraints.
class BLINK_MODULES_EXPORT AudioDeviceCaptureCapability {
class MODULES_EXPORT AudioDeviceCaptureCapability {
public:
// This creates an AudioDeviceCaptureCapability that admits all possible
// device names and settings. This is intended to be used as the single
......@@ -43,8 +42,8 @@ class BLINK_MODULES_EXPORT AudioDeviceCaptureCapability {
// are limited by the given |parameters|. |device_id| must not be empty.
// Intended to be used by getUserMedia() with device capture for devices that
// are not currently in use.
AudioDeviceCaptureCapability(std::string device_id,
std::string group_id,
AudioDeviceCaptureCapability(String device_id,
String group_id,
const media::AudioParameters& parameters);
// This creates an AudioDeviceCaptureCapability where the device ID and other
......@@ -64,10 +63,10 @@ class BLINK_MODULES_EXPORT AudioDeviceCaptureCapability {
// it means that this capability is not associated with a known device and
// no restrictions are imposed on the deviceId or other constraints while
// processing constraints.
const std::string& DeviceID() const;
String DeviceID() const;
// Returns the group ID of the device associated with this capability.
const std::string& GroupID() const;
String GroupID() const;
// Returns the audio parameters for the device associated with this
// capability. If DeviceID() returns an empty string, these parameters contain
......@@ -76,13 +75,12 @@ class BLINK_MODULES_EXPORT AudioDeviceCaptureCapability {
private:
blink::MediaStreamAudioSource* source_ = nullptr;
std::string device_id_;
std::string group_id_;
String device_id_;
String group_id_;
media::AudioParameters parameters_;
};
using AudioDeviceCaptureCapabilities =
std::vector<AudioDeviceCaptureCapability>;
using AudioDeviceCaptureCapabilities = Vector<AudioDeviceCaptureCapability>;
// This function implements the SelectSettings algorithm for audio tracks as
// described in https://w3c.github.io/mediacapture-main/#dfn-selectsettings
......@@ -175,4 +173,4 @@ GetMinMaxLatenciesForAudioParameters(const media::AudioParameters& parameters);
} // namespace blink
#endif // THIRD_PARTY_BLINK_PUBLIC_WEB_MODULES_MEDIASTREAM_MEDIA_STREAM_CONSTRAINTS_UTIL_AUDIO_H_
#endif // THIRD_PARTY_BLINK_RENDERER_MODULES_MEDIASTREAM_MEDIA_STREAM_CONSTRAINTS_UTIL_AUDIO_H_
......@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "third_party/blink/public/web/modules/mediastream/media_stream_constraints_util_audio.h"
#include "third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_audio.h"
#include <algorithm>
#include <cmath>
......@@ -321,7 +321,7 @@ class MediaStreamConstraintsUtilAudioTestBase {
void CheckDevice(const AudioDeviceCaptureCapability& expected_device,
const AudioCaptureSettings& result) {
EXPECT_EQ(expected_device.DeviceID(), result.device_id());
EXPECT_EQ(expected_device.DeviceID().Utf8(), result.device_id());
}
void CheckDeviceDefaults(const AudioCaptureSettings& result) {
......@@ -381,7 +381,7 @@ class MediaStreamConstraintsUtilAudioTestBase {
double max_latency) {
constraint_factory_.Reset();
constraint_factory_.basic().device_id.SetExact(
blink::WebString::FromASCII(device->DeviceID()));
blink::WebString(device->DeviceID()));
constraint_factory_.basic().echo_cancellation.SetExact(false);
constraint_factory_.basic().latency.SetExact(0.0);
auto result = SelectSettings();
......@@ -389,7 +389,7 @@ class MediaStreamConstraintsUtilAudioTestBase {
constraint_factory_.Reset();
constraint_factory_.basic().device_id.SetExact(
blink::WebString::FromASCII(device->DeviceID()));
blink::WebString(device->DeviceID()));
constraint_factory_.basic().echo_cancellation.SetExact(false);
constraint_factory_.basic().latency.SetMin(max_latency + 0.001);
result = SelectSettings();
......@@ -397,7 +397,7 @@ class MediaStreamConstraintsUtilAudioTestBase {
constraint_factory_.Reset();
constraint_factory_.basic().device_id.SetExact(
blink::WebString::FromASCII(device->DeviceID()));
blink::WebString(device->DeviceID()));
constraint_factory_.basic().echo_cancellation.SetExact(false);
constraint_factory_.basic().latency.SetMax(min_latency - 0.001);
result = SelectSettings();
......@@ -415,7 +415,7 @@ class MediaStreamConstraintsUtilAudioTestBase {
int expected_buffer_size) {
constraint_factory_.Reset();
constraint_factory_.basic().device_id.SetExact(
blink::WebString::FromASCII(device->DeviceID()));
blink::WebString(device->DeviceID()));
constraint_factory_.basic().echo_cancellation.SetExact(false);
constraint_factory_.basic().latency.SetIdeal(requested_latency);
auto result = SelectSettings();
......@@ -1186,7 +1186,7 @@ TEST_P(MediaStreamConstraintsUtilAudioTest, IdealArbitraryDeviceID) {
TEST_P(MediaStreamConstraintsUtilAudioTest, ExactValidDeviceID) {
for (const auto& device : capabilities_) {
constraint_factory_.basic().device_id.SetExact(
blink::WebString::FromASCII(device.DeviceID()));
blink::WebString(device.DeviceID()));
auto result = SelectSettings();
EXPECT_TRUE(result.HasValue());
CheckDevice(device, result);
......@@ -1211,7 +1211,7 @@ TEST_P(MediaStreamConstraintsUtilAudioTest, ExactValidDeviceID) {
TEST_P(MediaStreamConstraintsUtilAudioTest, ExactGroupID) {
for (const auto& device : capabilities_) {
constraint_factory_.basic().group_id.SetExact(
blink::WebString::FromASCII(device.GroupID()));
blink::WebString(device.GroupID()));
auto result = SelectSettings();
EXPECT_TRUE(result.HasValue());
CheckDevice(device, result);
......@@ -1313,8 +1313,7 @@ TEST_P(MediaStreamConstraintsUtilAudioTest, EchoCancellationWithSystem) {
for (bool value : kBoolValues) {
ResetFactory();
constraint_factory_.basic().device_id.SetExact(
blink::WebString::FromASCII(
system_echo_canceller_device_->DeviceID()));
blink::WebString(system_echo_canceller_device_->DeviceID()));
((constraint_factory_.*accessor)().echo_cancellation.*
set_function)(value);
auto result = SelectSettings();
......@@ -1408,8 +1407,7 @@ TEST_P(MediaStreamConstraintsUtilAudioTest, GoogEchoCancellationWithSystem) {
for (bool value : kBoolValues) {
ResetFactory();
constraint_factory_.basic().device_id.SetExact(
blink::WebString::FromASCII(
system_echo_canceller_device_->DeviceID()));
blink::WebString(system_echo_canceller_device_->DeviceID()));
((constraint_factory_.*accessor)().goog_echo_cancellation.*
set_function)(value);
auto result = SelectSettings();
......@@ -1529,15 +1527,15 @@ TEST_P(MediaStreamConstraintsUtilAudioTest,
&capabilities[0];
constraint_factory_.Reset();
constraint_factory_.basic().device_id.SetExact(blink::WebString::FromASCII(
system_echo_canceller_with_source->DeviceID()));
constraint_factory_.basic().device_id.SetExact(
blink::WebString(system_echo_canceller_with_source->DeviceID()));
constraint_factory_.basic().echo_cancellation.SetExact(true);
auto result = SelectSettings(true, capabilities);
EXPECT_TRUE(result.HasValue());
constraint_factory_.Reset();
constraint_factory_.basic().device_id.SetExact(blink::WebString::FromASCII(
system_echo_canceller_with_source->DeviceID()));
constraint_factory_.basic().device_id.SetExact(
blink::WebString(system_echo_canceller_with_source->DeviceID()));
constraint_factory_.basic().echo_cancellation.SetExact(false);
result = SelectSettings(true, capabilities);
EXPECT_FALSE(result.HasValue());
......@@ -1860,8 +1858,8 @@ TEST_P(MediaStreamConstraintsUtilAudioTest, UsedAndUnusedSources) {
GetProcessedLocalAudioSource(properties, false /* disable_local_echo */,
false /* render_to_associated_sink */);
const std::string kUnusedDeviceID = "unused_device";
const std::string kGroupID = "fake_group";
const String kUnusedDeviceID = "unused_device";
const String kGroupID = "fake_group";
AudioDeviceCaptureCapabilities capabilities;
capabilities.emplace_back(processed_source.get());
capabilities.emplace_back(kUnusedDeviceID, kGroupID,
......@@ -1875,7 +1873,7 @@ TEST_P(MediaStreamConstraintsUtilAudioTest, UsedAndUnusedSources) {
capabilities, constraint_factory_.CreateWebMediaConstraints(),
false /* should_disable_hardware_noise_suppression */);
EXPECT_TRUE(result.HasValue());
EXPECT_EQ(result.device_id(), kUnusedDeviceID);
EXPECT_EQ(result.device_id(), kUnusedDeviceID.Utf8());
EXPECT_EQ(result.audio_processing_properties().echo_cancellation_type,
EchoCancellationType::kEchoCancellationDisabled);
}
......
......@@ -33,7 +33,6 @@
#include "third_party/blink/public/platform/web_string.h"
#include "third_party/blink/public/web/modules/mediastream/local_media_stream_audio_source.h"
#include "third_party/blink/public/web/modules/mediastream/media_stream_constraints_util.h"
#include "third_party/blink/public/web/modules/mediastream/media_stream_constraints_util_audio.h"
#include "third_party/blink/public/web/modules/mediastream/media_stream_constraints_util_video_content.h"
#include "third_party/blink/public/web/modules/mediastream/media_stream_video_capturer_source.h"
#include "third_party/blink/public/web/modules/mediastream/media_stream_video_track.h"
......@@ -42,6 +41,7 @@
#include "third_party/blink/public/web/web_local_frame.h"
#include "third_party/blink/renderer/core/frame/local_frame.h"
#include "third_party/blink/renderer/core/page/chrome_client.h"
#include "third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_audio.h"
#include "third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_video_device.h"
#include "third_party/blink/renderer/modules/mediastream/user_media_client_impl.h"
#include "third_party/blink/renderer/platform/wtf/wtf_size_t.h"
......@@ -568,10 +568,8 @@ void UserMediaProcessor::SelectAudioDeviceSettings(
if (audio_source) {
capabilities.emplace_back(audio_source);
} else {
// TODO(crbug.com/704136): Change AudioDeviceCaptureCapabilities to
// operate over WTF::String.
capabilities.emplace_back(device->device_id.Utf8(),
device->group_id.Utf8(), device->parameters);
capabilities.emplace_back(device->device_id, device->group_id,
device->parameters);
}
}
......@@ -580,7 +578,7 @@ void UserMediaProcessor::SelectAudioDeviceSettings(
void UserMediaProcessor::SelectAudioSettings(
const blink::WebUserMediaRequest& web_request,
const std::vector<blink::AudioDeviceCaptureCapability>& capabilities) {
const blink::AudioDeviceCaptureCapabilities& capabilities) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
// The frame might reload or |web_request| might be cancelled while
// capabilities are queried. Do nothing if a different request is being
......
......@@ -22,6 +22,7 @@
#include "third_party/blink/public/platform/modules/mediastream/web_platform_media_stream_source.h"
#include "third_party/blink/public/platform/web_vector.h"
#include "third_party/blink/public/web/web_user_media_request.h"
#include "third_party/blink/renderer/modules/mediastream/media_stream_constraints_util_audio.h"
#include "third_party/blink/renderer/modules/modules_export.h"
#include "third_party/blink/renderer/platform/wtf/text/wtf_string.h"
#include "third_party/blink/renderer/platform/wtf/vector.h"
......@@ -32,7 +33,6 @@ class Size;
namespace blink {
class AudioCaptureSettings;
class AudioDeviceCaptureCapability;
class LocalFrame;
class MediaStreamAudioSource;
class MediaStreamVideoSource;
......@@ -265,7 +265,7 @@ class MODULES_EXPORT UserMediaProcessor
audio_input_capabilities);
void SelectAudioSettings(
const blink::WebUserMediaRequest& web_request,
const std::vector<blink::AudioDeviceCaptureCapability>& capabilities);
const blink::AudioDeviceCaptureCapabilities& capabilities);
void SetupVideoInput();
void SelectVideoDeviceSettings(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment