blob: 5f1fde8bb191080cb55d27fccac2b092f81c4785 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(async function() {
TestRunner.addResult(`Tests the Timeline events for module compile & evaluate.\n`);
await TestRunner.loadModule('performance_test_runner');
await TestRunner.showPanel('timeline');
await TestRunner.evaluateInPagePromise(`
async function performActions() {
const key = await window.crypto.subtle.generateKey({name: "AES-CBC", length: 256}, false, ["encrypt", "decrypt"]);
const data = new Uint8Array(512);
const iv = window.crypto.getRandomValues(new Uint8Array(16));
const crypted = await window.crypto.subtle.encrypt({name: "AES-CBC", iv}, key, data);
return window.crypto.subtle.decrypt({name: "AES-CBC", iv}, key, crypted);
}
`);
await PerformanceTestRunner.invokeAsyncWithTimeline('performActions');
const events = new Set([
TimelineModel.TimelineModel.RecordType.CryptoDoEncrypt,
TimelineModel.TimelineModel.RecordType.CryptoDoEncryptReply,
TimelineModel.TimelineModel.RecordType.CryptoDoDecrypt,
TimelineModel.TimelineModel.RecordType.CryptoDoDecryptReply
]);
const tracingModel = PerformanceTestRunner.tracingModel();
const eventsToPrint = [];
tracingModel.sortedProcesses().forEach(p => p.sortedThreads().forEach(t =>
eventsToPrint.push(...t.events().filter(event => events.has(event.name)))));
for (const event of eventsToPrint) {
await PerformanceTestRunner.printTraceEventPropertiesWithDetails(event);
}
TestRunner.completeTest();
})();