mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-11 05:39:41 +02:00
MozReview-Commit-ID: 3HXcvTYpAkA --HG-- rename : testing/web-platform/tests/fonts/matching/README.md => testing/web-platform/tests/css-fonts/matching/README.md rename : testing/web-platform/tests/fonts/matching/fixed-stretch-style-over-weight-ref.html => testing/web-platform/tests/css-fonts/matching/fixed-stretch-style-over-weight-ref.html rename : testing/web-platform/tests/fonts/matching/fixed-stretch-style-over-weight.html => testing/web-platform/tests/css-fonts/matching/fixed-stretch-style-over-weight.html rename : testing/web-platform/tests/fonts/matching/font-matching.css => testing/web-platform/tests/css-fonts/matching/font-matching.css rename : testing/web-platform/tests/fonts/matching/resources/variabletest_matching.ttf => testing/web-platform/tests/css-fonts/matching/resources/variabletest_matching.ttf rename : testing/web-platform/tests/fonts/matching/stretch-distance-over-weight-distance-ref.html => testing/web-platform/tests/css-fonts/matching/stretch-distance-over-weight-distance-ref.html rename : testing/web-platform/tests/fonts/matching/stretch-distance-over-weight-distance.html => testing/web-platform/tests/css-fonts/matching/stretch-distance-over-weight-distance.html rename : testing/web-platform/tests/fonts/matching/style-ranges-over-weight-direction-ref.html => testing/web-platform/tests/css-fonts/matching/style-ranges-over-weight-direction-ref.html rename : testing/web-platform/tests/fonts/matching/style-ranges-over-weight-direction.html => testing/web-platform/tests/css-fonts/matching/style-ranges-over-weight-direction.html rename : testing/web-platform/tests/payment-request/OWNERS => testing/web-platform/tests/payment-method-id/OWNERS rename : testing/web-platform/tests/storage/interfaces.worker.js => testing/web-platform/tests/storage/interfaces.https.worker.js rename : testing/web-platform/tests/tools/browserutils/requirements.txt => testing/web-platform/tests/tools/wpt/requirements.txt rename : testing/web-platform/tests/tools/browserutils/utils.py => testing/web-platform/tests/tools/wpt/utils.py rename : testing/web-platform/tests/tools/wptrunner/wptrunner/executors/reftest-wait.js => testing/web-platform/tests/tools/wptrunner/wptrunner/executors/reftest-wait_marionette.js rename : testing/web-platform/tests/uievents/keyboard/key-manual.css => testing/web-platform/tests/uievents/keyboard/key.css rename : testing/web-platform/tests/uievents/keyboard/key-manual.js => testing/web-platform/tests/uievents/keyboard/key.js
136 lines
4.8 KiB
HTML
136 lines
4.8 KiB
HTML
<!doctype html>
|
|
<meta charset=utf-8>
|
|
<title>RTCRtpTransceiver.prototype.setCodecPreferences</title>
|
|
<script src="/resources/testharness.js"></script>
|
|
<script src="/resources/testharnessreport.js"></script>
|
|
<script>
|
|
'use strict';
|
|
|
|
// Test is based on the following editor draft:
|
|
// https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
|
|
|
|
/*
|
|
5.4. RTCRtpTransceiver Interface
|
|
interface RTCRtpTransceiver {
|
|
...
|
|
void setCodecPreferences(sequence<RTCRtpCodecCapability> codecs);
|
|
};
|
|
|
|
setCodecPreferences
|
|
- Setting codecs to an empty sequence resets codec preferences to any
|
|
default value.
|
|
|
|
- The codecs sequence passed into setCodecPreferences can only contain
|
|
codecs that are returned by RTCRtpSender.getCapabilities(kind) or
|
|
RTCRtpReceiver.getCapabilities(kind), where kind is the kind of the
|
|
RTCRtpTransceiver on which the method is called. Additionally, the
|
|
RTCRtpCodecParameters dictionary members cannot be modified. If
|
|
codecs does not fulfill these requirements, the user agent MUST throw
|
|
an InvalidAccessError.
|
|
*/
|
|
|
|
test(() => {
|
|
const pc = new RTCPeerConnection();
|
|
const transceiver = pc.addTransceiver('audio');
|
|
const capabilities = RTCRtpSender.getCapabilities('audio');
|
|
transceiver.setCodecPreferences(capabilities.codecs);
|
|
|
|
}, `setCodecPreferences() on audio transceiver with codecs returned from RTCRtpSender.getCapabilities('audio') should succeed`);
|
|
|
|
test(() => {
|
|
const pc = new RTCPeerConnection();
|
|
const transceiver = pc.addTransceiver('video');
|
|
const capabilities = RTCRtpReceiver.getCapabilities('video');
|
|
transceiver.setCodecPreferences(capabilities.codecs);
|
|
|
|
}, `setCodecPreferences() on video transceiver with codecs returned from RTCRtpReceiver.getCapabilities('video') should succeed`);
|
|
|
|
test(() => {
|
|
const pc = new RTCPeerConnection();
|
|
const transceiver = pc.addTransceiver('audio');
|
|
const capabilities1 = RTCRtpSender.getCapabilities('audio');
|
|
const capabilities2 = RTCRtpReceiver.getCapabilities('audio');
|
|
transceiver.setCodecPreferences([...capabilities1.codecs, ... capabilities2.codecs]);
|
|
|
|
}, `setCodecPreferences() with both sender receiver codecs combined should succeed`);
|
|
|
|
test(() => {
|
|
const pc = new RTCPeerConnection();
|
|
const transceiver = pc.addTransceiver('audio');
|
|
transceiver.setCodecPreferences([]);
|
|
|
|
}, `setCodecPreferences([]) should succeed`);
|
|
|
|
test(() => {
|
|
const pc = new RTCPeerConnection();
|
|
const transceiver = pc.addTransceiver('audio');
|
|
const capabilities = RTCRtpSender.getCapabilities('audio');
|
|
const { codecs } = capabilities;
|
|
|
|
if(codecs.length >= 2) {
|
|
const tmp = codecs[0];
|
|
codecs[0] = codecs[1];
|
|
codecs[1] = tmp;
|
|
}
|
|
|
|
transceiver.setCodecPreferences(codecs);
|
|
|
|
}, `setCodecPreferences() with reordered codecs should succeed`);
|
|
|
|
test(() => {
|
|
const pc = new RTCPeerConnection();
|
|
const transceiver = pc.addTransceiver('audio');
|
|
const capabilities = RTCRtpSender.getCapabilities('video');
|
|
assert_throws(() => transceiver.setCodecPreferences(capabilities.codecs));
|
|
|
|
}, `setCodecPreferences() on audio transceiver with codecs returned from getCapabilities('video') should throw InvalidAccessError`);
|
|
|
|
test(() => {
|
|
const pc = new RTCPeerConnection();
|
|
const transceiver = pc.addTransceiver('audio');
|
|
const codecs = [{
|
|
mimeType: 'audio/piepiper',
|
|
clockRate: 2000,
|
|
channels: 2,
|
|
sdpFmtpLine: 'a=fmtp:98 0-15'
|
|
}];
|
|
|
|
assert_throws(() => transceiver.setCodecPreferences(codecs));
|
|
|
|
}, `setCodecPreferences() with user defined codec should throw InvalidAccessError`);
|
|
|
|
test(() => {
|
|
const pc = new RTCPeerConnection();
|
|
const transceiver = pc.addTransceiver('audio');
|
|
const capabilities = RTCRtpSender.getCapabilities('audio');
|
|
const codecs = [
|
|
...capabilities.codecs,
|
|
{
|
|
mimeType: 'audio/piepiper',
|
|
clockRate: 2000,
|
|
channels: 2,
|
|
sdpFmtpLine: 'a=fmtp:98 0-15'
|
|
}];
|
|
|
|
assert_throws(() => transceiver.setCodecPreferences(codecs));
|
|
|
|
}, `setCodecPreferences() with user defined codec together with codecs returned from getCapabilities() should throw InvalidAccessError`);
|
|
|
|
test(() => {
|
|
const pc = new RTCPeerConnection();
|
|
const transceiver = pc.addTransceiver('audio');
|
|
const capabilities = RTCRtpSender.getCapabilities('audio');
|
|
|
|
const { codecs } = capabilities;
|
|
assert_greater_than(codecs.length, 0,
|
|
'Expect at least one codec available');
|
|
|
|
const [ codec ] = codecs;
|
|
const { channels=2 } = codec;
|
|
codec.channels = channels+1;
|
|
|
|
assert_throws(() => transceiver.setCodecPreferences(codecs));
|
|
|
|
}, `setCodecPreferences() with modified codecs returned from getCapabilities() should throw InvalidAccessError`);
|
|
|
|
</script>
|