• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html>
2<!-- much of this is stolen from omahaproxy.appspot.com/viewer -->
3<html>
4  <head>
5    <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
6    <title>NaCl SDK Manifest Viewer</title>
7  </head>
8  <style type="text/css" media="screen">
9    body {
10      font-family: monospace;
11      font-size: 10pt;
12    }
13
14    table {
15      border-collapse: collapse;
16      border-color: rgb(100, 100, 100);
17      border-style: solid;
18      border-width: 1px 0px 1px 0px;
19    }
20
21    table td {
22      padding: 3px;
23      border-color: rgb(100, 100, 100);
24      border-style: solid;
25      border-width: 0px 1px 0px 1px;
26    }
27
28    thead {
29      background-color: lightblue;
30      font-weight: bold;
31      border-style: solid;
32      border-color: rgb(100, 100, 100);
33      border-width: 0px 0px 2px 0px;
34      text-align: center;
35    }
36
37    tbody tr:nth-child(odd) {
38      background-color: rgb(230, 230, 230);
39    }
40
41    tbody tr:hover {
42      background-color: orange;
43    }
44
45    td a {
46      padding: 3px;
47    }
48  </style>
49  <body>
50    <h1>NaCl SDK Manifest Viewer</h1>
51    <table>
52      <thead id="columns">
53      </thead>
54      <tbody id="rows">
55      </tbody>
56    </table>
57    <h2>Most recent upload log:</h2>
58    <pre id="log">
59    </pre>
60    <script type="application/javascript">
61      function loadText(url, callback) {
62        var xhr = new XMLHttpRequest();
63        xhr.open('GET', url, true);
64        xhr.onreadystatechange = function (e) {
65          if (xhr.readyState == 4) {
66            if (xhr.status == 200) {
67              callback(xhr.responseText);
68            } else {
69              alert("Failed to load: error " + xhr.status);
70            }
71          }
72        }
73        xhr.send(null);
74      }
75
76      function loadJson(url, callback) {
77        loadText(url, function (text) {
78          callback(JSON.parse(text));
79        });
80      }
81
82      function removeAllChildren(elm) {
83        while (elm.childNodes.length) {
84          elm.removeChild(elm.firstChild);
85        }
86      }
87
88      function display(data) {
89        data = data.bundles;
90
91        var columnsElm = document.getElementById('columns');
92        var rowsElm = document.getElementById('rows');
93        removeAllChildren(columnsElm);
94        removeAllChildren(rowsElm);
95
96        // Create the column headers.
97        var tr = document.createElement('tr');
98        var columns = [
99          'name', 'version', 'revision', 'win', 'mac', 'linux', 'all'
100        ];
101        for (var i = 0; i < columns.length; ++i) {
102          var td = document.createElement('td');
103          var text = document.createTextNode(columns[i]);
104          td.appendChild(text);
105          tr.appendChild(td);
106        }
107        columnsElm.appendChild(tr);
108
109        var platforms = ['win', 'mac', 'linux', 'all'];
110
111        for (var i = 0; i < data.length; ++i) {
112          var tr = document.createElement('tr');
113          for (var j = 0; j < columns.length; ++j) {
114            var td = document.createElement('td');
115            var node;
116            if (platforms.indexOf(columns[j]) != -1) {
117              var archives = data[i].archives;
118              for (var k = 0; k < archives.length; ++k) {
119                if (columns[j] == archives[k].host_os) {
120                  var url = archives[k].url;
121                  var lastSlash = url.lastIndexOf('/');
122                  var nextDot = url.indexOf('.', lastSlash);
123                  name = url.substr(lastSlash + 1, nextDot - lastSlash - 1);
124                  node = document.createElement('a');
125                  node.setAttribute('href', url);
126                  node.appendChild(document.createTextNode(name));
127                  td.appendChild(node);
128                }
129              }
130            } else {
131              node = document.createTextNode(data[i][columns[j]]);
132              td.appendChild(node);
133            }
134            tr.appendChild(td);
135          }
136          rowsElm.appendChild(tr);
137        }
138      }
139
140      function displayLog(text) {
141        document.getElementById('log').textContent = text;
142      }
143
144      loadJson('naclsdk_manifest2.json', display);
145      loadText('naclsdk_manifest2.json.log', displayLog);
146    </script>
147  </body>
148</html>
149