Commit 98a21bb9 authored by Chandan Padhi's avatar Chandan Padhi Committed by Commit Bot

Clone MediaStreamTrack's constraints

MediaStreamTrack's clone should have same constraints.
This CL ensures that MediaStreamTrack.clone().getConstraints()
returns the same value as MediaStreamTrack.getConstraints().

Bug: 669212
Change-Id: I305a3e3e831d8355576201dada5f1ef81072bab5
Reviewed-on: https://chromium-review.googlesource.com/997319Reviewed-by: default avatarGuido Urdaneta <guidou@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Commit-Queue: Chandan Padhi <c.padhi@samsung.com>
Cr-Commit-Position: refs/heads/master@{#548647}
parent d7588992
<!DOCTYPE HTML>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<canvas id="canvas"/>
<script>
createTrack = function() {
......@@ -33,6 +32,42 @@ test(t => {
"Tracks enabled status should not be linked.");
}, "Clones of disabled MediaStreamTracks are still disabled.");
promise_test(function() {
return navigator.mediaDevices.getUserMedia({audio: { echoCancellation: true }})
.then(function(s) {
track = s.getAudioTracks()[0];
constraints = track.getConstraints();
assert_equals(Object.keys(constraints).length, 1);
assert_true(constraints.hasOwnProperty('echoCancellation'));
assert_true(constraints.echoCancellation);
cloned_track = track.clone();
cloned_track_constraints = cloned_track.getConstraints();
assert_equals(Object.keys(cloned_track_constraints).length, Object.keys(constraints).length);
assert_true(constraints.hasOwnProperty('echoCancellation'));
assert_equals(cloned_track_constraints.echoCancellation, constraints.echoCancellation);
});
}, 'Cloned audio MediaStreamTrack has same constraints');
promise_test(function() {
return navigator.mediaDevices.getUserMedia({video: { width: 800, height: 600 }})
.then(function(s) {
track = s.getVideoTracks()[0];
constraints = track.getConstraints();
assert_equals(Object.keys(constraints).length, 2);
assert_true(constraints.hasOwnProperty('width'));
assert_equals(constraints.width, 800);
assert_true(constraints.hasOwnProperty('height'));
assert_equals(constraints.height, 600);
cloned_track = track.clone();
cloned_track_constraints = cloned_track.getConstraints();
assert_equals(Object.keys(cloned_track_constraints).length, Object.keys(constraints).length);
assert_true(constraints.hasOwnProperty('width'));
assert_equals(cloned_track_constraints.width, constraints.width);
assert_true(constraints.hasOwnProperty('height'));
assert_equals(cloned_track_constraints.height, constraints.height);
});
}, 'Cloned video MediaStreamTrack has same constraints');
// TODO(pbos): Add tests that make sure muted and stopped properties are
// carried over. Part of crbug:669212.
......
......@@ -62,35 +62,17 @@ MediaStreamComponent* MediaStreamComponent::Create(const String& id,
MediaStreamComponent::MediaStreamComponent(const String& id,
MediaStreamSource* source)
: MediaStreamComponent(id,
source,
true,
false,
WebMediaStreamTrack::ContentHintType::kNone) {}
MediaStreamComponent::MediaStreamComponent(
const String& id,
MediaStreamSource* source,
bool enabled,
bool muted,
WebMediaStreamTrack::ContentHintType content_hint)
: source_(source),
id_(id),
unique_id_(GenerateUniqueId()),
enabled_(enabled),
muted_(muted),
content_hint_(content_hint),
constraints_() {
: source_(source), id_(id), unique_id_(GenerateUniqueId()) {
DCHECK(id_.length());
}
MediaStreamComponent* MediaStreamComponent::Clone() const {
MediaStreamComponent* cloned_component = new MediaStreamComponent(
CreateCanonicalUUIDString(), Source(), enabled_, muted_, content_hint_);
// TODO(pbos): Clone |m_trackData| as well.
// TODO(pbos): Move properties from MediaStreamTrack here so that they are
// also cloned. Part of crbug:669212 since stopped is currently not carried
// over, nor is ended().
MediaStreamComponent* cloned_component =
new MediaStreamComponent(CreateCanonicalUUIDString(), Source());
cloned_component->SetEnabled(enabled_);
cloned_component->SetMuted(muted_);
cloned_component->SetContentHint(content_hint_);
cloned_component->SetConstraints(constraints_);
return cloned_component;
}
......
......@@ -111,11 +111,6 @@ class PLATFORM_EXPORT MediaStreamComponent final
private:
MediaStreamComponent(const String& id, MediaStreamSource*);
MediaStreamComponent(const String& id,
MediaStreamSource*,
bool enabled,
bool muted,
WebMediaStreamTrack::ContentHintType);
// AudioSourceProviderImpl wraps a WebAudioSourceProvider::provideInput()
// calls into chromium to get a rendered audio stream.
......@@ -143,9 +138,10 @@ class PLATFORM_EXPORT MediaStreamComponent final
Member<MediaStreamSource> source_;
String id_;
int unique_id_;
bool enabled_;
bool muted_;
WebMediaStreamTrack::ContentHintType content_hint_;
bool enabled_ = true;
bool muted_ = false;
WebMediaStreamTrack::ContentHintType content_hint_ =
WebMediaStreamTrack::ContentHintType::kNone;
WebMediaConstraints constraints_;
std::unique_ptr<TrackData> track_data_;
};
......
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