blob: b46d2d65690a886837b8ea7621f3926081552d97 [file] [log] [blame]
Yoav Weiss79001b12018-12-12 17:16:561<!DOCTYPE HTML>
2<html>
3<head onload>
4<meta charset="utf-8" />
5<title>This test validates increasing the buffer size in onresourcetimingbufferfull callback of resource timing.</title>
6<link rel="help" href="http://www.w3.org/TR/resource-timing/#performanceresourcetiming"/>
7<script src="/resources/testharness.js"></script>
8<script src="/resources/testharnessreport.js"></script>
9<script src="resources/buffer-full-utilities.js"></script>
10</head>
11<body>
12<script>
13const resource_timing_buffer_size = 1;
14let eventFired = false;
15
16setup(() => {
17 // Get the browser into a consistent state.
18 clearBufferAndSetSize(resource_timing_buffer_size);
19 var increase = function() {
20 performance.setResourceTimingBufferSize(resource_timing_buffer_size * 2);
21 eventFired = true;
22 }
23 performance.addEventListener('resourcetimingbufferfull', increase);
24});
25
26let overflowTheBuffer = () => {
27 return new Promise(resolve => {
28 // This resource overflows the entry buffer, and goes into the secondary buffer.
29 appendScript('resources/empty_script.js', resolve);
30 });
31};
32
33let testThatBufferContainsTheRightResources = () => {
34 let entries = performance.getEntriesByType('resource');
35 assert_equals(entries.length, 2,
36 'Both entries should be stored in resource timing buffer since its increases size once it overflows.');
37 assert_true(entries[0].name.includes('empty.js'), "empty.js is in the entries buffer");
38 assert_true(entries[1].name.includes('empty_script.js'), "empty_script.js is in the entries buffer");
39};
40
41promise_test(async () => {
42 await fillUpTheBufferWithSingleResource("resources/empty.js");
43 await overflowTheBuffer();
44 await waitForEventToFire();
45 testThatBufferContainsTheRightResources();
46}, "Test that increasing the buffer during the callback is enough for entries not to be dropped");
47</script>
48</body>
49</html>