Bug 1181038 - Add performance timing worker. r=jgraham

This adds the file and fixes the path to make the test run. We do not support
performance timing on workers yet. I filed Bug 1203749 for that.

Update web-platform-tests expected data
This commit is contained in:
Nikhil Marathe 2015-09-10 15:33:44 -07:00
parent 39992da3c8
commit 4486a197c7
4 changed files with 59 additions and 2 deletions

View File

@ -1,5 +1,5 @@
[performance-timeline.https.html]
type: testharness
[Test Performance Timeline API in Service Worker]
[Resource Timing]
expected: FAIL

View File

@ -5,7 +5,7 @@
<script>
service_worker_test(
'../workers/resources/performance-timeline-worker.js',
'resources/performance-timeline-worker.js',
'Test Performance Timeline API in Service Worker');
</script>

View File

@ -0,0 +1,56 @@
importScripts('/resources/testharness.js');
promise_test(function(test) {
var durationMsec = 100;
return new Promise(function(resolve) {
performance.mark('startMark');
setTimeout(resolve, durationMsec);
}).then(function() {
performance.mark('endMark');
performance.measure('measure', 'startMark', 'endMark');
var startMark = performance.getEntriesByName('startMark')[0];
var endMark = performance.getEntriesByName('endMark')[0];
var measure = performance.getEntriesByType('measure')[0];
assert_equals(measure.startTime, startMark.startTime);
assert_approx_equals(endMark.startTime - startMark.startTime,
measure.duration, 0.001);
//XXXnsm: Timers aren't always precise. on treeherder sometimes the
//measured duration is like 99.5 something. Let's just measure the
//ballpark.
assert_greater_than(measure.duration, durationMsec - 1);
assert_equals(performance.getEntriesByType('mark').length, 2);
assert_equals(performance.getEntriesByType('measure').length, 1);
performance.clearMarks('startMark');
performance.clearMeasures('measure');
assert_equals(performance.getEntriesByType('mark').length, 1);
assert_equals(performance.getEntriesByType('measure').length, 0);
});
}, 'User Timing');
promise_test(function(test) {
return fetch('dummy.txt')
.then(function(resp) {
return resp.text();
})
.then(function(text) {
var expectedResources = ['testharness.js', 'dummy.txt'];
assert_equals(performance.getEntriesByType('resource').length, expectedResources.length);
for (var i = 0; i < expectedResources.length; i++) {
var entry = performance.getEntriesByType('resource')[i];
assert_true(entry.name.endsWith(expectedResources[i]));
assert_equals(entry.workerStart, 0);
assert_greater_than(entry.startTime, 0);
assert_greater_than(entry.responseEnd, entry.startTime);
}
return new Promise(function(resolve) {
performance.onresourcetimingbufferfull = resolve;
performance.setResourceTimingBufferSize(expectedResources.length);
});
})
.then(function() {
performance.clearResourceTimings();
assert_equals(performance.getEntriesByType('resource').length, 0);
})
}, 'Resource Timing');
done();