Skip to content

Commit 13d6b07

Browse files
cdmarinaMarcos Cáceres
authored and
Marcos Cáceres
committedJul 23, 2019
Update RTCDataChannel bufferedamountlow implementation.
Maintain bufferedamount value in blink layer. Increase bufferedamount on send and decrease it on OnBufferedAmountChange updates from webrtc layer. Fire bufferedamountlow when bufferedamount goes below bufferedamountlowthreshold. This change builds upon the corresponding webrtc change: https://webrtc-review.googlesource.com/c/src/+/123237 Design doc: http://doc/1lorHBn-GMn5U0T0RQANxrsW0pXhw8XGZM-xZyVUOW90 Standard: https://w3c.github.io/webrtc-pc/#event-datachannel-bufferedamountlow Bug: 878682 Change-Id: Ifebc79f71f924ecb5cedce1c94e18440663337f5 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1474764 Commit-Queue: Marina Ciocea <marinaciocea@chromium.org> Reviewed-by: Henrik Boström <hbos@chromium.org> Cr-Commit-Position: refs/heads/master@{#639846}
1 parent 398098e commit 13d6b07

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed
 

‎webrtc/RTCDataChannel-bufferedAmount.html

+55
Original file line numberDiff line numberDiff line change
@@ -166,4 +166,59 @@
166166
assert_unreached(`Unexpected promise rejection: ${err}`)));
167167
}, 'bufferedAmount should increase by byte length for each message sent');
168168

169+
promise_test(async t => {
170+
const [channel1, channel2] = await createDataChannelPair();
171+
channel1.addEventListener('bufferedamountlow', t.step_func_done(() => {
172+
assert_true(channel1.bufferedAmount <= channel1.bufferedAmountLowThreshold);
173+
}));
174+
const eventWatcher = new EventWatcher(t, channel1, ['bufferedamountlow']);
175+
channel1.send(helloString);
176+
await eventWatcher.wait_for(['bufferedamountlow']);
177+
}, 'Data channel bufferedamountlow event fires after send() is complete');
178+
179+
promise_test(async t => {
180+
const [channel1, channel2] = await createDataChannelPair();
181+
channel1.send(helloString);
182+
assert_equals(channel1.bufferedAmount, helloString.length);
183+
await awaitMessage(channel2);
184+
assert_equals(channel1.bufferedAmount, 0);
185+
}, 'Data channel bufferedamount is data.length on send(data)');
186+
187+
promise_test(async t => {
188+
const [channel1, channel2] = await createDataChannelPair();
189+
channel1.send(helloString);
190+
assert_equals(channel1.bufferedAmount, helloString.length);
191+
assert_equals(channel1.bufferedAmount, helloString.length);
192+
}, 'Data channel bufferedamount returns the same amount if no more data is' +
193+
' sent on the channel');
194+
195+
promise_test(async t => {
196+
const [channel1, channel2] = await createDataChannelPair();
197+
let eventFireCount = 0;
198+
channel1.addEventListener('bufferedamountlow', t.step_func(() => {
199+
assert_true(channel1.bufferedAmount <= channel1.bufferedAmountLowThreshold);
200+
assert_equals(++eventFireCount, 1);
201+
}));
202+
const eventWatcher = new EventWatcher(t, channel1, ['bufferedamountlow']);
203+
channel1.send(helloString);
204+
assert_equals(channel1.bufferedAmount, helloString.length);
205+
channel1.send(helloString);
206+
assert_equals(channel1.bufferedAmount, 2 * helloString.length);
207+
await eventWatcher.wait_for(['bufferedamountlow']);
208+
}, 'Data channel bufferedamountlow event fires only once after multiple' +
209+
' consecutive send() calls');
210+
211+
promise_test(async t => {
212+
const [channel1, channel2] = await createDataChannelPair();
213+
const eventWatcher = new EventWatcher(t, channel1, ['bufferedamountlow']);
214+
channel1.send(helloString);
215+
assert_equals(channel1.bufferedAmount, helloString.length);
216+
await eventWatcher.wait_for(['bufferedamountlow']);
217+
assert_equals(await awaitMessage(channel2), helloString);
218+
channel1.send(helloString);
219+
assert_equals(channel1.bufferedAmount, helloString.length);
220+
await eventWatcher.wait_for(['bufferedamountlow']);
221+
assert_equals(await awaitMessage(channel2), helloString);
222+
}, 'Data channel bufferedamountlow event fires after each sent message');
223+
169224
</script>

0 commit comments

Comments
 (0)
Please sign in to comment.