Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
101 changes: 101 additions & 0 deletions webrtc/RTCDataChannelInit-maxPacketLifeTime-enforce-range.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>RTCDataChannelInit maxPacketLifeTime [EnforceRange] unsigned short tests</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
'use strict';

// Helper to create a basic RTCPeerConnection
function createPC() {
return new RTCPeerConnection();
}

// Test valid values within unsigned short range (0-65535)
test(() => {
const pc = createPC();
const channel = pc.createDataChannel('test', { maxPacketLifeTime: 0 });
assert_equals(channel.maxPacketLifeTime, 0);
pc.close();
}, 'maxPacketLifeTime with value 0 should succeed');

test(() => {
const pc = createPC();
const channel = pc.createDataChannel('test', { maxPacketLifeTime: 1 });
assert_equals(channel.maxPacketLifeTime, 1);
pc.close();
}, 'maxPacketLifeTime with value 1 should succeed');

test(() => {
const pc = createPC();
const channel = pc.createDataChannel('test', { maxPacketLifeTime: 1000 });
assert_equals(channel.maxPacketLifeTime, 1000);
pc.close();
}, 'maxPacketLifeTime with value 1000 should succeed');

test(() => {
const pc = createPC();
const channel = pc.createDataChannel('test', { maxPacketLifeTime: 65535 });
assert_equals(channel.maxPacketLifeTime, 65535);
pc.close();
}, 'maxPacketLifeTime with maximum value 65535 should succeed');

test(() => {
const pc = createPC();
const channel = pc.createDataChannel('test', { maxPacketLifeTime: 65534 });
assert_equals(channel.maxPacketLifeTime, 65534);
pc.close();
}, 'maxPacketLifeTime with value 65534 (max-1) should succeed');

test(() => {
const pc = createPC();
const channel = pc.createDataChannel('test', { maxPacketLifeTime: 3 });
assert_equals(channel.maxPacketLifeTime, 3);
pc.close();
}, 'maxPacketLifeTime with value 3 should succeed');

test(() => {
const pc = createPC();
const channel = pc.createDataChannel('test', { maxPacketLifeTime: 10 });
assert_equals(channel.maxPacketLifeTime, 10);
pc.close();
}, 'maxPacketLifeTime with value 10 should succeed');

// Test [EnforceRange] behavior - values outside range should throw TypeError
const badValues = [
{ value: -1, description: 'value -1' },
{ value: -100, description: 'value -100' },
{ value: 65536, description: 'value 65536' },
{ value: 100000, description: 'value 100000' },
{ value: Infinity, description: 'Infinity' },
{ value: -Infinity, description: '-Infinity' },
{ value: NaN, description: 'NaN' },
{ value: "65536", description: 'string "65536"' }
];

badValues.forEach(({ value, description }) => {
test(() => {
const pc = createPC();
assert_throws_js(TypeError, () => {
pc.createDataChannel('test', { maxPacketLifeTime: value });
});
pc.close();
}, `maxPacketLifeTime with ${description} should throw TypeError`);
});

// Test numeric strings (should be converted to numbers)
test(() => {
const pc = createPC();
const channel = pc.createDataChannel('test', { maxPacketLifeTime: "100" });
assert_equals(channel.maxPacketLifeTime, 100);
pc.close();
}, 'maxPacketLifeTime with numeric string "100" should be converted to 100');

test(() => {
const pc = createPC();
const channel = pc.createDataChannel('test', {});
assert_equals(channel.maxPacketLifeTime, null);
pc.close();
}, 'maxPacketLifeTime when omitted should be null');

</script>
101 changes: 101 additions & 0 deletions webrtc/RTCDataChannelInit-maxRetransmits-enforce-range.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>RTCDataChannelInit maxRetransmits [EnforceRange] unsigned short tests</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
'use strict';

// Helper to create a basic RTCPeerConnection
function createPC() {
return new RTCPeerConnection();
}

// Test valid values within unsigned short range (0-65535)
test(() => {
const pc = createPC();
const channel = pc.createDataChannel('test', { maxRetransmits: 0 });
assert_equals(channel.maxRetransmits, 0);
pc.close();
}, 'maxRetransmits with value 0 should succeed');

test(() => {
const pc = createPC();
const channel = pc.createDataChannel('test', { maxRetransmits: 1 });
assert_equals(channel.maxRetransmits, 1);
pc.close();
}, 'maxRetransmits with value 1 should succeed');

test(() => {
const pc = createPC();
const channel = pc.createDataChannel('test', { maxRetransmits: 1000 });
assert_equals(channel.maxRetransmits, 1000);
pc.close();
}, 'maxRetransmits with value 1000 should succeed');

test(() => {
const pc = createPC();
const channel = pc.createDataChannel('test', { maxRetransmits: 65535 });
assert_equals(channel.maxRetransmits, 65535);
pc.close();
}, 'maxRetransmits with maximum value 65535 should succeed');

test(() => {
const pc = createPC();
const channel = pc.createDataChannel('test', { maxRetransmits: 65534 });
assert_equals(channel.maxRetransmits, 65534);
pc.close();
}, 'maxRetransmits with value 65534 (max-1) should succeed');

test(() => {
const pc = createPC();
const channel = pc.createDataChannel('test', { maxRetransmits: 3 });
assert_equals(channel.maxRetransmits, 3);
pc.close();
}, 'maxRetransmits with value 3 should succeed');

test(() => {
const pc = createPC();
const channel = pc.createDataChannel('test', { maxRetransmits: 10 });
assert_equals(channel.maxRetransmits, 10);
pc.close();
}, 'maxRetransmits with value 10 should succeed');

// Test [EnforceRange] behavior - values outside range should throw TypeError
const badValues = [
{ value: -1, description: 'value -1' },
{ value: -100, description: 'value -100' },
{ value: 65536, description: 'value 65536' },
{ value: 100000, description: 'value 100000' },
{ value: Infinity, description: 'Infinity' },
{ value: -Infinity, description: '-Infinity' },
{ value: NaN, description: 'NaN' },
{ value: "65536", description: 'string "65536"' }
];

badValues.forEach(({ value, description }) => {
test(() => {
const pc = createPC();
assert_throws_js(TypeError, () => {
pc.createDataChannel('test', { maxRetransmits: value });
});
pc.close();
}, `maxRetransmits with ${description} should throw TypeError`);
});

// Test numeric strings (should be converted to numbers)
test(() => {
const pc = createPC();
const channel = pc.createDataChannel('test', { maxRetransmits: "100" });
assert_equals(channel.maxRetransmits, 100);
pc.close();
}, 'maxRetransmits with numeric string "100" should be converted to 100');

test(() => {
const pc = createPC();
const channel = pc.createDataChannel('test', {});
assert_equals(channel.maxRetransmits, null);
pc.close();
}, 'maxRetransmits when omitted should be null');

</script>