// 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(`
      function performActions()
      {
        var script = document.createElement('script');
        script.type = 'module';
        script.text = 'window.finishTest()';
        document.body.appendChild(script);
        return new Promise(resolve => window.finishTest = resolve);
      }
  `);

  await PerformanceTestRunner.invokeAsyncWithTimeline('performActions');

  const events = new Set([TimelineModel.TimelineModel.RecordType.CompileModule, TimelineModel.TimelineModel.RecordType.EvaluateModule]);
  const tracingModel = PerformanceTestRunner.tracingModel();
  tracingModel.sortedProcesses().forEach(p => p.sortedThreads().forEach(t =>
      t.events().filter(event => events.has(event.name)).forEach(PerformanceTestRunner.printTraceEventPropertiesWithDetails)));

  TestRunner.completeTest();
})();
