<!DOCTYPE html>
<html>

<head>
  <title>Skia Fuzzer Demo </title>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
  <script src="/res/common/js/common.js"></script>
  <script src="/res/imp/bower_components/webcomponentsjs/webcomponents-lite.js"></script>
  <script src="/res/imp/sinon-1.17.2.js"></script>
  <!-- Makes a var called data-->
  <!-- <script type="text/javascript" src="commits-table-35-demo.json"></script> -->

  <script type="text/javascript" charset="utf-8">
    sinon.format = function(object) {return JSON.stringify(object);}
    sinon.log = function(message) {console.log(message);};

    // Sets the time to be Thu Mar 10 2016 12:13:20 GMT-0500 (EST)
    var clock = sinon.useFakeTimers(1457630000000, "Date");
    var server = sinon.fakeServer.create();
    server.autoRespond = true;

    var summary = [{"category":"api_image_filter","categoryDisplay":"API - SerializedImageFilter","totalBadCount":67,"totalGreyCount":322,"thisBadCount":3,"thisRegressionCount":0,"status":"experimental","groomer":"robertphillips"},{"category":"api_parse_path","categoryDisplay":"API - ParsePath","totalBadCount":0,"totalGreyCount":0,"thisBadCount":0,"thisRegressionCount":0,"status":"stable","groomer":"caryclark"},{"category":"color_deserialize","categoryDisplay":"SkColorSpace - Deserialize","totalBadCount":0,"totalGreyCount":0,"thisBadCount":0,"thisRegressionCount":0,"status":"experimental","groomer":"msarett"},{"category":"skcodec_mode","categoryDisplay":"SkCodec (Modes)","totalBadCount":0,"totalGreyCount":5,"thisBadCount":0,"thisRegressionCount":0,"status":"stable","groomer":"msarett"},{"category":"skcodec_scale","categoryDisplay":"SkCodec (Scaling)","totalBadCount":0,"totalGreyCount":66,"thisBadCount":0,"thisRegressionCount":0,"status":"stable","groomer":"msarett"},{"category":"skpicture","categoryDisplay":"SkPicture","totalBadCount":2258,"totalGreyCount":100,"thisBadCount":160,"thisRegressionCount":6,"status":"experimental","groomer":"\u003cunclaimed\u003e"}];
    server.respondWith("GET","/json/fuzz-summary", JSON.stringify(summary));

    var revisionStatus = {
      "lastUpdated": "2016-06-28T15:45:54-07:00",
      "current":{
        "hash": "deadbeef",
        "author": "youdontknow (John Snow)"
      },
      "pending": {
        "hash": "1234567890abcdef",
        "author": "winteriscoming (Ned Stark)"
      }
    };
    server.respondWith("GET","/json/status", JSON.stringify(revisionStatus));


    var login = {"Email":"test@google.com","LoginURL":"http://www.example.com","IsAGoogler":true};
    server.respondWith("GET","/loginstatus/", JSON.stringify(login));

    var version = {"commit":"3e0fcf9b99baf4256851a6767bc6955266fc2369","date":"2016-02-19T13:57:18-05:00"};
    server.respondWith("GET","/json/version", JSON.stringify(version));

  </script>

  <link rel="import" href="fuzzer-index-sk.html">
</head>

<body>
  <fuzzer-index-sk></fuzzer-index-sk>
</body>
</html>
