<!DOCTYPE html>
<html>
  <head>
    <title>Chromium Perf</title>
    {{template "header.html" .}}
  </head>
  <body>

    <paper-header-panel class="fit">

      {{template "titlebar.html" .}}

      <div class="content">
        <paper-drawer-panel>
          <div drawer>
            <drawer-sk></drawer-sk>
          </div>
          <div main class="scrollable">
            <section id=chromium_perf class="left_padded">
              <h2>Test performance of Chromium / Skia patches on the top 10k webpages</h2>
              <p>
                <span style="text-align: center;">
                  Read <a href="https://docs.google.com/a/chromium.org/document/d/1GhqosQcwsy6F-eBAmFn_ITDF7_Iv_rY9FhCKwAnk9qQ/edit?pli=1#heading=h.lgvqzgu7bc4d" target="_blank">this</a> for an explanation of CT's accuracy of results.
                </span>
              </p>
              <br/><br/>
              <chromium-perf-sk id="chromium_perf"></chromium-perf-sk>
            </section>
          </div>
        </paper-drawer-panel>
      </div>

      <paper-toast id="confirm_toast" duration="5000"></paper-toast>
      <error-toast-sk></error-toast-sk>
    </paper-header-panel>

    <script type="text/javascript" charset="utf-8">
       (function() {
         sk.post('/_/benchmarks_platforms/').then(JSON.parse).then(function(json) {
           $$$('chromium-perf-sk').benchmarksToDoc = json["benchmarks"];
           $$$('chromium-perf-sk').benchmarks = Object.keys(json["benchmarks"]);
           $$$('chromium-perf-sk').platformsToDesc = json["platforms"];
           $$$('chromium-perf-sk').platforms = Object.keys(json["platforms"]);
         }).catch(sk.errorMessage);
         sk.get('/_/task_priorities/').then(JSON.parse).then(function(json) {
           $$$('chromium-perf-sk').taskPrioritiesToDesc = json["task_priorities"];
           $$$('chromium-perf-sk').taskPriorities = Object.keys(json["task_priorities"]);
         }).catch(sk.errorMessage);
         ctfe.pageSets.getPageSets().then(function(pageSets) {
           $$$('chromium-perf-sk').pageSets = pageSets;
         }).catch(sk.errorMessage);
       })();
    </script>

  </body>
</html>
