Commit aa87cb3c authored by Florent Castelli's avatar Florent Castelli Committed by Commit Bot

Import updated WebIDL for RTCRtpSendParameters and related types

Extracts RTCRtpSendParameters from RTCRtpParameters.
Extracts RTCRtpEncodingParameters from RTCRtpCodingParameters.
Adds required to many fields and update tests accordindly.

Bug: 803494
Change-Id: I416c0884abf15ab8d55ce5ae481f15ac8012c73d
Reviewed-on: https://chromium-review.googlesource.com/1114844Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarHenrik Boström <hbos@chromium.org>
Commit-Queue: Florent Castelli <orphis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#570820}
parent a22bb954
...@@ -4,65 +4,59 @@ FAIL setParameters() with large maxBitrate changes getParameters() returned valu ...@@ -4,65 +4,59 @@ FAIL setParameters() with large maxBitrate changes getParameters() returned valu
PASS setParameters() with multiple calls after single getParameters() PASS setParameters() with multiple calls after single getParameters()
PASS setParameters() fails without getParameters() PASS setParameters() fails without getParameters()
PASS video setParameters() check for transactionId modification PASS video setParameters() check for transactionId modification
PASS video setParameters() check for transactionId removed
PASS video setParameters() check for codecs remove one PASS video setParameters() check for codecs remove one
PASS video setParameters() check for codecs add one PASS video setParameters() check for codecs add one
PASS video setParameters() check for codecs reorder PASS video setParameters() check for codecs reorder
PASS video setParameters() check for codecs removed
PASS video setParameters() check for codecs.payloadtype modification PASS video setParameters() check for codecs.payloadtype modification
PASS video setParameters() check for codecs.payloadtype removed
PASS video setParameters() check for codecs.mimeType modification PASS video setParameters() check for codecs.mimeType modification
PASS video setParameters() check for codecs.mimeType remove
PASS video setParameters() check for codecs.clockRate modification PASS video setParameters() check for codecs.clockRate modification
PASS video setParameters() check for codecs.clockRate removed
PASS video setParameters() check for codecs.channels modification PASS video setParameters() check for codecs.channels modification
PASS video setParameters() check for codecs.channels removed PASS video setParameters() check for codecs.channels removed
PASS video setParameters() check for codecs.sdpFmtpLine modification PASS video setParameters() check for codecs.sdpFmtpLine modification
PASS video setParameters() check for codecs.sdpFmtpLine removed PASS video setParameters() check for codecs.sdpFmtpLine removed
PASS video setParameters() check for encodings removed
PASS video setParameters() check for encodings remove one PASS video setParameters() check for encodings remove one
PASS video setParameters() check for encodings add one PASS video setParameters() check for encodings add one
FAIL video setParameters() check for encodings.rid modification assert_unreached: Should have rejected: undefined Reached unreachable code FAIL video setParameters() check for encodings.rid modification assert_unreached: Should have rejected: undefined Reached unreachable code
PASS video setParameters() check for headerExtensions remove one PASS video setParameters() check for headerExtensions remove one
PASS video setParameters() check for headerExtensions add one PASS video setParameters() check for headerExtensions add one
PASS video setParameters() check for headerExtensions.uri modification PASS video setParameters() check for headerExtensions.uri modification
PASS video setParameters() check for headerExtensions.uri removed
PASS video setParameters() check for headerExtensions.id modification PASS video setParameters() check for headerExtensions.id modification
PASS video setParameters() check for headerExtensions.id removed
PASS video setParameters() check for headerExtensions.encrypted modification PASS video setParameters() check for headerExtensions.encrypted modification
PASS video setParameters() check for headerExtensions.encrypted removed PASS video setParameters() check for headerExtensions.encrypted removed
PASS video setParameters() check for rtcp.cname modification PASS video setParameters() check for rtcp.cname modification
PASS video setParameters() check for rtcp.reducedSize modification PASS video setParameters() check for rtcp.reducedSize modification
PASS audio setParameters() check for transactionId modification PASS audio setParameters() check for transactionId modification
PASS audio setParameters() check for transactionId removed
PASS audio setParameters() check for codecs remove one PASS audio setParameters() check for codecs remove one
PASS audio setParameters() check for codecs add one PASS audio setParameters() check for codecs add one
PASS audio setParameters() check for codecs reorder PASS audio setParameters() check for codecs reorder
PASS audio setParameters() check for codecs removed
PASS audio setParameters() check for codecs.payloadtype modification PASS audio setParameters() check for codecs.payloadtype modification
PASS audio setParameters() check for codecs.payloadtype removed
PASS audio setParameters() check for codecs.mimeType modification PASS audio setParameters() check for codecs.mimeType modification
PASS audio setParameters() check for codecs.mimeType remove
PASS audio setParameters() check for codecs.clockRate modification PASS audio setParameters() check for codecs.clockRate modification
PASS audio setParameters() check for codecs.clockRate removed
PASS audio setParameters() check for codecs.channels modification PASS audio setParameters() check for codecs.channels modification
PASS audio setParameters() check for codecs.channels removed PASS audio setParameters() check for codecs.channels removed
PASS audio setParameters() check for codecs.sdpFmtpLine modification PASS audio setParameters() check for codecs.sdpFmtpLine modification
PASS audio setParameters() check for codecs.sdpFmtpLine removed PASS audio setParameters() check for codecs.sdpFmtpLine removed
PASS audio setParameters() check for encodings removed
PASS audio setParameters() check for encodings remove one PASS audio setParameters() check for encodings remove one
PASS audio setParameters() check for encodings add one PASS audio setParameters() check for encodings add one
FAIL audio setParameters() check for encodings.rid modification assert_unreached: Should have rejected: undefined Reached unreachable code FAIL audio setParameters() check for encodings.rid modification assert_unreached: Should have rejected: undefined Reached unreachable code
PASS audio setParameters() check for headerExtensions remove one PASS audio setParameters() check for headerExtensions remove one
PASS audio setParameters() check for headerExtensions add one PASS audio setParameters() check for headerExtensions add one
PASS audio setParameters() check for headerExtensions.uri modification PASS audio setParameters() check for headerExtensions.uri modification
PASS audio setParameters() check for headerExtensions.uri removed
PASS audio setParameters() check for headerExtensions.id modification PASS audio setParameters() check for headerExtensions.id modification
PASS audio setParameters() check for headerExtensions.id removed
PASS audio setParameters() check for headerExtensions.encrypted modification PASS audio setParameters() check for headerExtensions.encrypted modification
PASS audio setParameters() check for headerExtensions.encrypted removed PASS audio setParameters() check for headerExtensions.encrypted removed
PASS audio setParameters() check for rtcp.cname modification PASS audio setParameters() check for rtcp.cname modification
PASS audio setParameters() check for rtcp.reducedSize modification PASS audio setParameters() check for rtcp.reducedSize modification
PASS video setParameters() check for transactionId is required
PASS video setParameters() check for codecs is required
PASS video setParameters() check for codecs.payloadType is required
PASS video setParameters() check for codecs.mimeType is required
PASS video setParameters() check for codecs.clockRate is required
PASS video setParameters() check for encodings is required
PASS video setParameters() check for headerExtensions is required
PASS video setParameters() check for headerExtensions.uri is required
PASS video setParameters() check for headerExtensions.id is required
PASS video setParameters() check for rtcp is required
PASS setParameters() set low maxBitrate value PASS setParameters() set low maxBitrate value
Harness: the test ran to completion. Harness: the test ran to completion.
...@@ -81,7 +81,13 @@ promise_test(async (t) => { ...@@ -81,7 +81,13 @@ promise_test(async (t) => {
new DOMException( new DOMException(
"getParameters() needs to be called before setParameters().", "getParameters() needs to be called before setParameters().",
"InvalidStateError"), "InvalidStateError"),
videoSender.setParameters({ rtcp: {}, headerExtensions: []})); videoSender.setParameters({
transactionId: "",
codecs: [],
encodings: [],
rtcp: {},
headerExtensions: []
}));
}, 'setParameters() fails without getParameters()'); }, 'setParameters() fails without getParameters()');
/** /**
...@@ -97,10 +103,6 @@ var readOnlyParameters = [ ...@@ -97,10 +103,6 @@ var readOnlyParameters = [
name: "transactionId modification", name: "transactionId modification",
transform: (p) => { p.transactionId = "foo"; }, transform: (p) => { p.transactionId = "foo"; },
}, },
{
name: "transactionId removed",
transform: (p) => { delete p.transactionId; },
},
{ {
name: "codecs remove one", name: "codecs remove one",
transform: (p) => { p.codecs.pop(); }, transform: (p) => { p.codecs.pop(); },
...@@ -119,36 +121,20 @@ var readOnlyParameters = [ ...@@ -119,36 +121,20 @@ var readOnlyParameters = [
}, },
{ {
name: "codecs reorder", name: "codecs reorder",
transform: (p) => { p.codecs.push(p.codecs.splice(-1, 1)); }, transform: (p) => { p.codecs.concat(p.codecs.splice(0, 1)); },
},
{
name: "codecs removed",
transform: (p) => { delete p.codecs; },
}, },
{ {
name: "codecs.payloadtype modification", name: "codecs.payloadtype modification",
transform: (p) => { p.codecs[0].payloadType = 1337; }, transform: (p) => { p.codecs[0].payloadType = 1337; },
}, },
{
name: "codecs.payloadtype removed",
transform: (p) => { delete p.codecs[0].payloadType; },
},
{ {
name: "codecs.mimeType modification", name: "codecs.mimeType modification",
transform: (p) => { p.codecs[0].mimeType = "mime"; }, transform: (p) => { p.codecs[0].mimeType = "mime"; },
}, },
{
name: "codecs.mimeType remove",
transform: (p) => { delete p.codecs[0].mimeType; },
},
{ {
name: "codecs.clockRate modification", name: "codecs.clockRate modification",
transform: (p) => { p.codecs[0].clockRate = 42; }, transform: (p) => { p.codecs[0].clockRate = 42; },
}, },
{
name: "codecs.clockRate removed",
transform: (p) => { delete p.codecs[0].clockRate; },
},
{ {
name: "codecs.channels modification", name: "codecs.channels modification",
transform: (p) => { p.codecs[0].channels = 16; }, transform: (p) => { p.codecs[0].channels = 16; },
...@@ -167,10 +153,6 @@ var readOnlyParameters = [ ...@@ -167,10 +153,6 @@ var readOnlyParameters = [
transform: (p) => { delete p.codecs[0].sdpFmtpLine; }, transform: (p) => { delete p.codecs[0].sdpFmtpLine; },
check: (p) => { return p.codecs[0].sdpFmtpLine !== undefined; }, check: (p) => { return p.codecs[0].sdpFmtpLine !== undefined; },
}, },
{
name: "encodings removed",
transform: (p) => { delete p.encodings; },
},
{ {
name: "encodings remove one", name: "encodings remove one",
transform: (p) => { p.encodings.pop(); }, transform: (p) => { p.encodings.pop(); },
...@@ -203,11 +185,6 @@ var readOnlyParameters = [ ...@@ -203,11 +185,6 @@ var readOnlyParameters = [
transform: (p) => { p.headerExtensions[0].uri = "uri"; }, transform: (p) => { p.headerExtensions[0].uri = "uri"; },
check: (p) => { return p.headerExtensions.length != 0; }, check: (p) => { return p.headerExtensions.length != 0; },
}, },
{
name: "headerExtensions.uri removed",
transform: (p) => { delete p.headerExtensions[0].uri; },
check: (p) => { return p.headerExtensions.length != 0; },
},
{ {
name: "headerExtensions.id modification", name: "headerExtensions.id modification",
transform: (p) => { transform: (p) => {
...@@ -217,11 +194,6 @@ var readOnlyParameters = [ ...@@ -217,11 +194,6 @@ var readOnlyParameters = [
return p.headerExtensions.length != 0; return p.headerExtensions.length != 0;
}, },
}, },
{
name: "headerExtensions.id removed",
transform: (p) => { delete p.headerExtensions[0].id; },
check: (p) => { return p.headerExtensions.length != 0; },
},
{ {
name: "headerExtensions.encrypted modification", name: "headerExtensions.encrypted modification",
transform: (p) => { transform: (p) => {
...@@ -293,6 +265,67 @@ for (testCase of readOnlyParameters) { ...@@ -293,6 +265,67 @@ for (testCase of readOnlyParameters) {
'audio setParameters() check for ' + testCase.name); 'audio setParameters() check for ' + testCase.name);
} }
var requiredParameters = [
{
name: "transactionId is required",
transform: (p) => { delete p.transactionId; },
},
{
name: "codecs is required",
transform: (p) => { delete p.codecs; },
},
{
name: "codecs.payloadType is required",
transform: (p) => { delete p.codecs[0].payloadType; },
},
{
name: "codecs.mimeType is required",
transform: (p) => { delete p.codecs[0].mimeType; },
},
{
name: "codecs.clockRate is required",
transform: (p) => { delete p.codecs[0].clockRate; },
},
{
name: "encodings is required",
transform: (p) => { delete p.encodings; },
},
{
name: "headerExtensions is required",
transform: (p) => { delete p.headerExtensions; },
},
{
name: "headerExtensions.uri is required",
transform: (p) => { delete p.headerExtensions[0].uri; },
},
{
name: "headerExtensions.id is required",
transform: (p) => { delete p.headerExtensions[0].id; },
},
{
name: "rtcp is required",
transform: (p) => { delete p.rtcp; },
},
];
for (testCase of requiredParameters) {
promise_test((async (name, transform, check, t) => {
let pc1 = new RTCPeerConnection();
let pc2 = new RTCPeerConnection();
let stream = await navigator.mediaDevices.getUserMedia({ video: true }, 1);
let videoSender = pc1.addTrack(stream.getVideoTracks()[0], stream);
await doSignalingHandshake(pc1, pc2);
let videoParameters = videoSender.getParameters();
transform(videoParameters);
return promise_rejects(t,
new TypeError(),
videoSender.setParameters(videoParameters));
}).bind(undefined, testCase.name, testCase.transform, testCase.check),
'video setParameters() check for ' + testCase.name);
}
promise_test(async function() { promise_test(async function() {
let pc1 = new RTCPeerConnection(); let pc1 = new RTCPeerConnection();
let pc2 = new RTCPeerConnection(); let pc2 = new RTCPeerConnection();
......
...@@ -581,9 +581,11 @@ modules_dictionary_idl_files = ...@@ -581,9 +581,11 @@ modules_dictionary_idl_files =
"peerconnection/rtc_peer_connection_ice_event_init.idl", "peerconnection/rtc_peer_connection_ice_event_init.idl",
"peerconnection/rtc_rtcp_parameters.idl", "peerconnection/rtc_rtcp_parameters.idl",
"peerconnection/rtc_rtp_codec_parameters.idl", "peerconnection/rtc_rtp_codec_parameters.idl",
"peerconnection/rtc_rtp_coding_parameters.idl",
"peerconnection/rtc_rtp_encoding_parameters.idl", "peerconnection/rtc_rtp_encoding_parameters.idl",
"peerconnection/rtc_rtp_header_extension_parameters.idl", "peerconnection/rtc_rtp_header_extension_parameters.idl",
"peerconnection/rtc_rtp_parameters.idl", "peerconnection/rtc_rtp_parameters.idl",
"peerconnection/rtc_rtp_send_parameters.idl",
"peerconnection/rtc_session_description_init.idl", "peerconnection/rtc_session_description_init.idl",
"peerconnection/rtc_track_event_init.idl", "peerconnection/rtc_track_event_init.idl",
"permissions/clipboard_permission_descriptor.idl", "permissions/clipboard_permission_descriptor.idl",
......
...@@ -4,9 +4,9 @@ ...@@ -4,9 +4,9 @@
// https://w3c.github.io/webrtc-pc/#rtcrtpcodecparameters* // https://w3c.github.io/webrtc-pc/#rtcrtpcodecparameters*
dictionary RTCRtpCodecParameters { dictionary RTCRtpCodecParameters {
octet payloadType; required octet payloadType;
DOMString mimeType; required DOMString mimeType;
unsigned long clockRate; required unsigned long clockRate;
unsigned short channels; unsigned short channels;
DOMString sdpFmtpLine; DOMString sdpFmtpLine;
}; };
\ No newline at end of file
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// https://w3c.github.io/webrtc-pc/#rtcrtpcodingparameters
dictionary RTCRtpCodingParameters {
//TODO(orphis): Missing rid. https://crbug.com/857034
};
\ No newline at end of file
...@@ -11,8 +11,13 @@ enum RTCPriorityType { ...@@ -11,8 +11,13 @@ enum RTCPriorityType {
}; };
// https://w3c.github.io/webrtc-pc/#rtcrtpencodingparameters* // https://w3c.github.io/webrtc-pc/#rtcrtpencodingparameters*
dictionary RTCRtpEncodingParameters { dictionary RTCRtpEncodingParameters : RTCRtpCodingParameters {
//TODO(orphis): Missing codecPayloadType. https://crbug.com/857042
//TODO(orphis): Missing dtx. https://crbug.com/857044
boolean active = true; boolean active = true;
RTCPriorityType priority = "low"; RTCPriorityType priority = "low";
//TODO(orphis): Missing ptime. https://crbug.com/857046
unsigned long maxBitrate; unsigned long maxBitrate;
//TODO(orphis): Missing maxFramerate. https://crbug.com/857047
//TODO(orphis): Missing scaleResolutionDownBy. https://crbug.com/857048
}; };
\ No newline at end of file
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
// https://w3c.github.io/webrtc-pc/#rtcrtpheaderextensionparameters* // https://w3c.github.io/webrtc-pc/#rtcrtpheaderextensionparameters*
dictionary RTCRtpHeaderExtensionParameters { dictionary RTCRtpHeaderExtensionParameters {
DOMString uri; required DOMString uri;
unsigned short id; required unsigned short id;
boolean encrypted; boolean encrypted = false;
}; };
\ No newline at end of file
...@@ -4,9 +4,7 @@ ...@@ -4,9 +4,7 @@
// https://w3c.github.io/webrtc-pc/#rtcrtpparameters* // https://w3c.github.io/webrtc-pc/#rtcrtpparameters*
dictionary RTCRtpParameters { dictionary RTCRtpParameters {
DOMString transactionId;
sequence<RTCRtpEncodingParameters> encodings;
required sequence<RTCRtpHeaderExtensionParameters> headerExtensions; required sequence<RTCRtpHeaderExtensionParameters> headerExtensions;
required RTCRtcpParameters rtcp; required RTCRtcpParameters rtcp;
sequence<RTCRtpCodecParameters> codecs; required sequence<RTCRtpCodecParameters> codecs;
}; };
\ No newline at end of file
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
// https://w3c.github.io/webrtc-pc/#rtcsendrtpparameters
dictionary RTCRtpSendParameters : RTCRtpParameters {
required DOMString transactionId;
required sequence<RTCRtpEncodingParameters> encodings;
//TODO(orphis): Missing degradationPrerence. https://crbug.com/857041
};
\ No newline at end of file
...@@ -82,8 +82,8 @@ class SetParametersRequest : public RTCVoidRequestScriptPromiseResolverImpl { ...@@ -82,8 +82,8 @@ class SetParametersRequest : public RTCVoidRequestScriptPromiseResolverImpl {
Member<RTCRtpSender> sender_; Member<RTCRtpSender> sender_;
}; };
bool HasInvalidModification(const RTCRtpParameters& parameters, bool HasInvalidModification(const RTCRtpSendParameters& parameters,
const RTCRtpParameters& new_parameters) { const RTCRtpSendParameters& new_parameters) {
if (parameters.hasTransactionId() != new_parameters.hasTransactionId() || if (parameters.hasTransactionId() != new_parameters.hasTransactionId() ||
(parameters.hasTransactionId() && (parameters.hasTransactionId() &&
parameters.transactionId() != new_parameters.transactionId())) { parameters.transactionId() != new_parameters.transactionId())) {
...@@ -215,7 +215,7 @@ double PriorityToDouble(const WTF::String& priority) { ...@@ -215,7 +215,7 @@ double PriorityToDouble(const WTF::String& priority) {
std::tuple<std::vector<webrtc::RtpEncodingParameters>, std::tuple<std::vector<webrtc::RtpEncodingParameters>,
webrtc::DegradationPreference> webrtc::DegradationPreference>
ToRtpParameters(const RTCRtpParameters& parameters) { ToRtpParameters(const RTCRtpSendParameters& parameters) {
std::vector<webrtc::RtpEncodingParameters> encodings; std::vector<webrtc::RtpEncodingParameters> encodings;
if (parameters.hasEncodings()) { if (parameters.hasEncodings()) {
encodings.reserve(parameters.encodings().size()); encodings.reserve(parameters.encodings().size());
...@@ -275,9 +275,9 @@ ScriptPromise RTCRtpSender::replaceTrack(ScriptState* script_state, ...@@ -275,9 +275,9 @@ ScriptPromise RTCRtpSender::replaceTrack(ScriptState* script_state,
return promise; return promise;
} }
void RTCRtpSender::getParameters(RTCRtpParameters& parameters) { void RTCRtpSender::getParameters(RTCRtpSendParameters& parameters) {
// TODO(orphis): Forward missing fields from the WebRTC library: // TODO(orphis): Forward missing fields from the WebRTC library:
// rtcp, headerExtensions, degradationPreference // degradationPreference
std::unique_ptr<webrtc::RtpParameters> webrtc_parameters = std::unique_ptr<webrtc::RtpParameters> webrtc_parameters =
sender_->GetParameters(); sender_->GetParameters();
...@@ -340,8 +340,9 @@ void RTCRtpSender::getParameters(RTCRtpParameters& parameters) { ...@@ -340,8 +340,9 @@ void RTCRtpSender::getParameters(RTCRtpParameters& parameters) {
last_returned_parameters_ = parameters; last_returned_parameters_ = parameters;
} }
ScriptPromise RTCRtpSender::setParameters(ScriptState* script_state, ScriptPromise RTCRtpSender::setParameters(
const RTCRtpParameters& parameters) { ScriptState* script_state,
const RTCRtpSendParameters& parameters) {
ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state); ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state);
ScriptPromise promise = resolver->Promise(); ScriptPromise promise = resolver->Promise();
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#include "third_party/blink/public/platform/web_rtc_rtp_sender.h" #include "third_party/blink/public/platform/web_rtc_rtp_sender.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise.h" #include "third_party/blink/renderer/bindings/core/v8/script_promise.h"
#include "third_party/blink/renderer/modules/mediastream/media_stream.h" #include "third_party/blink/renderer/modules/mediastream/media_stream.h"
#include "third_party/blink/renderer/modules/peerconnection/rtc_rtp_parameters.h" #include "third_party/blink/renderer/modules/peerconnection/rtc_rtp_send_parameters.h"
#include "third_party/blink/renderer/platform/bindings/script_wrappable.h" #include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
#include "third_party/blink/renderer/platform/heap/garbage_collected.h" #include "third_party/blink/renderer/platform/heap/garbage_collected.h"
#include "third_party/blink/renderer/platform/heap/member.h" #include "third_party/blink/renderer/platform/heap/member.h"
...@@ -20,7 +20,6 @@ namespace blink { ...@@ -20,7 +20,6 @@ namespace blink {
class MediaStreamTrack; class MediaStreamTrack;
class RTCDTMFSender; class RTCDTMFSender;
class RTCPeerConnection; class RTCPeerConnection;
class RTCRtpParameters;
// https://w3c.github.io/webrtc-pc/#rtcrtpsender-interface // https://w3c.github.io/webrtc-pc/#rtcrtpsender-interface
class RTCRtpSender final : public ScriptWrappable { class RTCRtpSender final : public ScriptWrappable {
...@@ -37,8 +36,8 @@ class RTCRtpSender final : public ScriptWrappable { ...@@ -37,8 +36,8 @@ class RTCRtpSender final : public ScriptWrappable {
MediaStreamTrack* track(); MediaStreamTrack* track();
ScriptPromise replaceTrack(ScriptState*, MediaStreamTrack*); ScriptPromise replaceTrack(ScriptState*, MediaStreamTrack*);
RTCDTMFSender* dtmf(); RTCDTMFSender* dtmf();
void getParameters(RTCRtpParameters&); void getParameters(RTCRtpSendParameters&);
ScriptPromise setParameters(ScriptState*, const RTCRtpParameters&); ScriptPromise setParameters(ScriptState*, const RTCRtpSendParameters&);
ScriptPromise getStats(ScriptState*); ScriptPromise getStats(ScriptState*);
WebRTCRtpSender* web_sender(); WebRTCRtpSender* web_sender();
...@@ -59,7 +58,7 @@ class RTCRtpSender final : public ScriptWrappable { ...@@ -59,7 +58,7 @@ class RTCRtpSender final : public ScriptWrappable {
String kind_; String kind_;
Member<RTCDTMFSender> dtmf_; Member<RTCDTMFSender> dtmf_;
MediaStreamVector streams_; MediaStreamVector streams_;
base::Optional<RTCRtpParameters> last_returned_parameters_; base::Optional<RTCRtpSendParameters> last_returned_parameters_;
}; };
} // namespace blink } // namespace blink
......
...@@ -6,8 +6,8 @@ ...@@ -6,8 +6,8 @@
[Exposed=Window] [Exposed=Window]
interface RTCRtpSender { interface RTCRtpSender {
readonly attribute MediaStreamTrack? track; readonly attribute MediaStreamTrack? track;
[RuntimeEnabled=RTCRtpSenderParameters, CallWith=ScriptState] Promise<void> setParameters(optional RTCRtpParameters parameters); [RuntimeEnabled=RTCRtpSenderParameters, CallWith=ScriptState] Promise<void> setParameters(optional RTCRtpSendParameters parameters);
[RuntimeEnabled=RTCRtpSenderParameters] RTCRtpParameters getParameters(); [RuntimeEnabled=RTCRtpSenderParameters] RTCRtpSendParameters getParameters();
[Measure, CallWith=ScriptState] Promise<void> replaceTrack(MediaStreamTrack? withTrack); [Measure, CallWith=ScriptState] Promise<void> replaceTrack(MediaStreamTrack? withTrack);
[Measure] readonly attribute RTCDTMFSender? dtmf; [Measure] readonly attribute RTCDTMFSender? dtmf;
[CallWith=ScriptState] Promise<RTCStatsReport> getStats(); [CallWith=ScriptState] Promise<RTCStatsReport> getStats();
......
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