<!DOCTYPE html>
<html>
<!--
Copyright (c) 2012 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.
-->
<head>
<title>All Tracing Tests</title>
<script>
  tests = [
    'unittest_test.html',
    'overlay_test.html',
    'timeline_async_slice_group_test.html',
    'timeline_find_control_test.html',
    'timeline_slice_group_test.html',
    'timeline_stream_importer_test.html',
    'timeline_thread_test.html',
    'timeline_process_test.html',
    'timeline_category_filter_dialog_test.html',
    'timeline_counter_test.html',
    'timeline_cpu_test.html',
    'timeline_filter_test.html',
    'timeline_model_test.html',
    'linux_perf_importer_test.html',
    'linux_perf_android_parser_test.html',
    'linux_perf_bus_parser_test.html',
    'linux_perf_clock_parser_test.html',
    'linux_perf_cpufreq_parser_test.html',
    'linux_perf_drm_parser_test.html',
    'linux_perf_exynos_parser_test.html',
    'linux_perf_gesture_parser_test.html',
    'linux_perf_i915_parser_test.html',
    'linux_perf_mali_parser_test.html',
    'linux_perf_power_parser_test.html',
    'linux_perf_sched_parser_test.html',
    'linux_perf_workqueue_parser_test.html',
    'trace_event_importer_test.html',
    'profiling_view_test.html',
    'timeline_selection_test.html',
    'timeline_test.html',
    'timeline_view_test.html',
    'timeline_viewport_test.html',
    'timeline_analysis_test.html',
    'ui_test.html',
    'settings_test.html',
    'tracks/timeline_async_slice_group_track_test.html',
    'tracks/timeline_cpu_track_test.html',
    'tracks/timeline_counter_track_test.html',
    'tracks/timeline_slice_group_track_test.html',
    'tracks/timeline_slice_track_test.html',
    'tracks/timeline_thread_track_test.html',
    'tracks/timeline_viewport_track_test.html',
  ];
</script>
<style>
  h1 {
      font-family: sans-serif;
      font-size: 18pt;
  }
</style>
<script src="base.js"></script>
<script>
  base.require('unittest');
</script>
</head>
<body>
  <h1>Trace-Viewer Tests</h3>

  <div class="unittest">Interactive tests: <a href="interactive_tests.html" class="unittest-error-link">Run manually</a></div>
  <br>

  <script>
  function runTest(runner, testCaseEl, test) {
    testCaseEl.status = 'RUNNING'

    var iframe = document.createElement('iframe');
    iframe.src = test;
    iframe.style.position = 'fixed';
    iframe.style.visibility = 'hidden';
    document.body.appendChild(iframe);
    iframe.contentWindow.addEventListener('error', function(msg, url, lineNumber) {
      if (iframe.contentWindow.G_testRunner)
        return false;

      if (iframe.contentWindow.errorsCaughtByTestHarness)
        return false;

      iframe.contentWindow.errorsCaughtByTestHarness = [
          {msg: msg, url: url, lineNumber: lineNumber}];
      return false;
    });

    function checkForDone() {
      if (!iframe.contentWindow) {
        setTimeout(checkForDone, 100);
        return;
      }

      if (iframe.contentWindow.errorsCaughtByTestHarness &&
        iframe.contentWindow.errorsCaughtByTestHarness.length) {
        testCaseEl.status = 'FAILED'
        return;
      }

      if (!iframe.contentWindow.G_testRunner) {
        setTimeout(checkForDone, 100);
        return;
      }

      var runner = iframe.contentWindow.G_testRunner;
      if (!runner.done) {
        setTimeout(checkForDone, 100);
        return;
      }

      var stats = runner.computeResultStats();
      if (stats.numTestsRun && !stats.numTestsWithErrors)
        testCaseEl.status = 'PASSED'
      else
        testCaseEl.status = 'FAILED'
    }
    setTimeout(checkForDone, 0);
  }

  function run() {
    var resultsEl = document.createElement('div');
    resultsEl.className = 'unittest';
    document.body.appendChild(resultsEl);

    var numPassed = 0;
    var numFailures = 0;
    var runner = {
      addFailedTest: function() {
        numFailures++;
      },
      addPassedTest: function() {
        numPassed++;
      }
    };
    function begin() {
      for (var i = 0; i < tests.length; i++) {
        (function() {
          var testCaseEl = unittest.createTestCaseDiv_(tests[i], tests[i], true);
          resultsEl.appendChild(testCaseEl);
          runTest(runner, testCaseEl, tests[i]);
        })();
      }
    }
    begin();
  }
  document.addEventListener('DOMContentLoaded', run);
  </script>
</body>
</html>