<!DOCTYPE html>
<html>
  <head>
    <title>Chromium Analysis</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_analysis class="left_padded">
              <h2>Get data for analysis using Chromium / Telemetry patches</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-analysis-sk id="chromium_analysis"></chromium-analysis-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-analysis-sk').benchmarksToDoc = json["benchmarks"];
           $$$('chromium-analysis-sk').benchmarks = Object.keys(json["benchmarks"]);
           $$$('chromium-analysis-sk').platformsToDesc = json["platforms"];
           $$$('chromium-analysis-sk').platforms = Object.keys(json["platforms"]);
         }).catch(sk.errorMessage);
         sk.get('/_/task_priorities/').then(JSON.parse).then(function(json) {
           $$$('chromium-analysis-sk').taskPrioritiesToDesc = json["task_priorities"];
           $$$('chromium-analysis-sk').taskPriorities = Object.keys(json["task_priorities"]);
         }).catch(sk.errorMessage);
         ctfe.pageSets.getPageSets().then(function(pageSets) {
           $$$('chromium-analysis-sk').pageSets = pageSets;
         }).catch(sk.errorMessage);
       })();
    </script>

  </body>
</html>
