xref: /aosp_15_r20/external/cronet/net/base/dir_header.html (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker<!DOCTYPE html>
2*6777b538SAndroid Build Coastguard Worker
3*6777b538SAndroid Build Coastguard Worker<html dir="$i18n{textdirection}" lang="$i18n{language}">
4*6777b538SAndroid Build Coastguard Worker
5*6777b538SAndroid Build Coastguard Worker<head>
6*6777b538SAndroid Build Coastguard Worker<meta charset="utf-8">
7*6777b538SAndroid Build Coastguard Worker<meta name="color-scheme" content="light dark">
8*6777b538SAndroid Build Coastguard Worker<meta name="google" value="notranslate">
9*6777b538SAndroid Build Coastguard Worker
10*6777b538SAndroid Build Coastguard Worker<script>
11*6777b538SAndroid Build Coastguard Workerfunction addRow(name, url, isdir,
12*6777b538SAndroid Build Coastguard Worker    size, size_string, date_modified, date_modified_string) {
13*6777b538SAndroid Build Coastguard Worker  if (name == "." || name == "..")
14*6777b538SAndroid Build Coastguard Worker    return;
15*6777b538SAndroid Build Coastguard Worker
16*6777b538SAndroid Build Coastguard Worker  var root = document.location.pathname;
17*6777b538SAndroid Build Coastguard Worker  if (root.substr(-1) !== "/")
18*6777b538SAndroid Build Coastguard Worker    root += "/";
19*6777b538SAndroid Build Coastguard Worker
20*6777b538SAndroid Build Coastguard Worker  var tbody = document.getElementById("tbody");
21*6777b538SAndroid Build Coastguard Worker  var row = document.createElement("tr");
22*6777b538SAndroid Build Coastguard Worker  var file_cell = document.createElement("td");
23*6777b538SAndroid Build Coastguard Worker  var link = document.createElement("a");
24*6777b538SAndroid Build Coastguard Worker
25*6777b538SAndroid Build Coastguard Worker  link.className = isdir ? "icon dir" : "icon file";
26*6777b538SAndroid Build Coastguard Worker
27*6777b538SAndroid Build Coastguard Worker  if (isdir) {
28*6777b538SAndroid Build Coastguard Worker    name = name + "/";
29*6777b538SAndroid Build Coastguard Worker    url = url + "/";
30*6777b538SAndroid Build Coastguard Worker    size = 0;
31*6777b538SAndroid Build Coastguard Worker    size_string = "";
32*6777b538SAndroid Build Coastguard Worker  } else {
33*6777b538SAndroid Build Coastguard Worker    link.draggable = "true";
34*6777b538SAndroid Build Coastguard Worker    link.addEventListener("dragstart", onDragStart, false);
35*6777b538SAndroid Build Coastguard Worker  }
36*6777b538SAndroid Build Coastguard Worker  link.innerText = name;
37*6777b538SAndroid Build Coastguard Worker  link.href = root + url;
38*6777b538SAndroid Build Coastguard Worker
39*6777b538SAndroid Build Coastguard Worker  file_cell.dataset.value = name;
40*6777b538SAndroid Build Coastguard Worker  file_cell.appendChild(link);
41*6777b538SAndroid Build Coastguard Worker
42*6777b538SAndroid Build Coastguard Worker  row.appendChild(file_cell);
43*6777b538SAndroid Build Coastguard Worker  row.appendChild(createCell(size, size_string));
44*6777b538SAndroid Build Coastguard Worker  row.appendChild(createCell(date_modified, date_modified_string));
45*6777b538SAndroid Build Coastguard Worker
46*6777b538SAndroid Build Coastguard Worker  tbody.appendChild(row);
47*6777b538SAndroid Build Coastguard Worker}
48*6777b538SAndroid Build Coastguard Worker
49*6777b538SAndroid Build Coastguard Workerfunction onDragStart(e) {
50*6777b538SAndroid Build Coastguard Worker  var el = e.srcElement;
51*6777b538SAndroid Build Coastguard Worker  var name = el.innerText.replace(":", "");
52*6777b538SAndroid Build Coastguard Worker  var download_url_data = "application/octet-stream:" + name + ":" + el.href;
53*6777b538SAndroid Build Coastguard Worker  e.dataTransfer.setData("DownloadURL", download_url_data);
54*6777b538SAndroid Build Coastguard Worker  e.dataTransfer.effectAllowed = "copy";
55*6777b538SAndroid Build Coastguard Worker}
56*6777b538SAndroid Build Coastguard Worker
57*6777b538SAndroid Build Coastguard Workerfunction createCell(value, text) {
58*6777b538SAndroid Build Coastguard Worker  var cell = document.createElement("td");
59*6777b538SAndroid Build Coastguard Worker  cell.setAttribute("class", "detailsColumn");
60*6777b538SAndroid Build Coastguard Worker  cell.dataset.value = value;
61*6777b538SAndroid Build Coastguard Worker  cell.innerText = text;
62*6777b538SAndroid Build Coastguard Worker  return cell;
63*6777b538SAndroid Build Coastguard Worker}
64*6777b538SAndroid Build Coastguard Worker
65*6777b538SAndroid Build Coastguard Workerfunction start(location) {
66*6777b538SAndroid Build Coastguard Worker  var header = document.getElementById("header");
67*6777b538SAndroid Build Coastguard Worker  header.innerText = header.innerText.replace("LOCATION", location);
68*6777b538SAndroid Build Coastguard Worker
69*6777b538SAndroid Build Coastguard Worker  document.getElementById("title").innerText = header.innerText;
70*6777b538SAndroid Build Coastguard Worker}
71*6777b538SAndroid Build Coastguard Worker
72*6777b538SAndroid Build Coastguard Workerfunction onHasParentDirectory() {
73*6777b538SAndroid Build Coastguard Worker  var box = document.getElementById("parentDirLinkBox");
74*6777b538SAndroid Build Coastguard Worker  box.style.display = "block";
75*6777b538SAndroid Build Coastguard Worker
76*6777b538SAndroid Build Coastguard Worker  var root = document.location.pathname;
77*6777b538SAndroid Build Coastguard Worker  if (!root.endsWith("/"))
78*6777b538SAndroid Build Coastguard Worker    root += "/";
79*6777b538SAndroid Build Coastguard Worker
80*6777b538SAndroid Build Coastguard Worker  var link = document.getElementById("parentDirLink");
81*6777b538SAndroid Build Coastguard Worker  link.href = root + "..";
82*6777b538SAndroid Build Coastguard Worker}
83*6777b538SAndroid Build Coastguard Worker
84*6777b538SAndroid Build Coastguard Workerfunction sortTable(column) {
85*6777b538SAndroid Build Coastguard Worker  var theader = document.getElementById("theader");
86*6777b538SAndroid Build Coastguard Worker  var oldOrder = theader.cells[column].dataset.order || '1';
87*6777b538SAndroid Build Coastguard Worker  oldOrder = parseInt(oldOrder, 10)
88*6777b538SAndroid Build Coastguard Worker  var newOrder = 0 - oldOrder;
89*6777b538SAndroid Build Coastguard Worker  theader.cells[column].dataset.order = newOrder;
90*6777b538SAndroid Build Coastguard Worker
91*6777b538SAndroid Build Coastguard Worker  var tbody = document.getElementById("tbody");
92*6777b538SAndroid Build Coastguard Worker  var rows = tbody.rows;
93*6777b538SAndroid Build Coastguard Worker  var list = [], i;
94*6777b538SAndroid Build Coastguard Worker  for (i = 0; i < rows.length; i++) {
95*6777b538SAndroid Build Coastguard Worker    list.push(rows[i]);
96*6777b538SAndroid Build Coastguard Worker  }
97*6777b538SAndroid Build Coastguard Worker
98*6777b538SAndroid Build Coastguard Worker  list.sort(function(row1, row2) {
99*6777b538SAndroid Build Coastguard Worker    var a = row1.cells[column].dataset.value;
100*6777b538SAndroid Build Coastguard Worker    var b = row2.cells[column].dataset.value;
101*6777b538SAndroid Build Coastguard Worker    if (column) {
102*6777b538SAndroid Build Coastguard Worker      a = parseInt(a, 10);
103*6777b538SAndroid Build Coastguard Worker      b = parseInt(b, 10);
104*6777b538SAndroid Build Coastguard Worker      return a > b ? newOrder : a < b ? oldOrder : 0;
105*6777b538SAndroid Build Coastguard Worker    }
106*6777b538SAndroid Build Coastguard Worker
107*6777b538SAndroid Build Coastguard Worker    // Column 0 is text.
108*6777b538SAndroid Build Coastguard Worker    if (a > b)
109*6777b538SAndroid Build Coastguard Worker      return newOrder;
110*6777b538SAndroid Build Coastguard Worker    if (a < b)
111*6777b538SAndroid Build Coastguard Worker      return oldOrder;
112*6777b538SAndroid Build Coastguard Worker    return 0;
113*6777b538SAndroid Build Coastguard Worker  });
114*6777b538SAndroid Build Coastguard Worker
115*6777b538SAndroid Build Coastguard Worker  // Appending an existing child again just moves it.
116*6777b538SAndroid Build Coastguard Worker  for (i = 0; i < list.length; i++) {
117*6777b538SAndroid Build Coastguard Worker    tbody.appendChild(list[i]);
118*6777b538SAndroid Build Coastguard Worker  }
119*6777b538SAndroid Build Coastguard Worker}
120*6777b538SAndroid Build Coastguard Worker
121*6777b538SAndroid Build Coastguard Worker// Add event handlers to column headers.
122*6777b538SAndroid Build Coastguard Workerfunction addHandlers(element, column) {
123*6777b538SAndroid Build Coastguard Worker  element.onclick = (e) => sortTable(column);
124*6777b538SAndroid Build Coastguard Worker  element.onkeydown = (e) => {
125*6777b538SAndroid Build Coastguard Worker    if (e.key == 'Enter' || e.key == ' ') {
126*6777b538SAndroid Build Coastguard Worker      sortTable(column);
127*6777b538SAndroid Build Coastguard Worker      e.preventDefault();
128*6777b538SAndroid Build Coastguard Worker    }
129*6777b538SAndroid Build Coastguard Worker  };
130*6777b538SAndroid Build Coastguard Worker}
131*6777b538SAndroid Build Coastguard Worker
132*6777b538SAndroid Build Coastguard Workerfunction onLoad() {
133*6777b538SAndroid Build Coastguard Worker  addHandlers(document.getElementById('nameColumnHeader'), 0);
134*6777b538SAndroid Build Coastguard Worker  addHandlers(document.getElementById('sizeColumnHeader'), 1);
135*6777b538SAndroid Build Coastguard Worker  addHandlers(document.getElementById('dateColumnHeader'), 2);
136*6777b538SAndroid Build Coastguard Worker}
137*6777b538SAndroid Build Coastguard Worker
138*6777b538SAndroid Build Coastguard Workerwindow.addEventListener('DOMContentLoaded', onLoad);
139*6777b538SAndroid Build Coastguard Worker</script>
140*6777b538SAndroid Build Coastguard Worker
141*6777b538SAndroid Build Coastguard Worker<style>
142*6777b538SAndroid Build Coastguard Worker
143*6777b538SAndroid Build Coastguard Worker  h1 {
144*6777b538SAndroid Build Coastguard Worker    border-bottom: 1px solid #c0c0c0;
145*6777b538SAndroid Build Coastguard Worker    margin-bottom: 10px;
146*6777b538SAndroid Build Coastguard Worker    padding-bottom: 10px;
147*6777b538SAndroid Build Coastguard Worker    white-space: nowrap;
148*6777b538SAndroid Build Coastguard Worker  }
149*6777b538SAndroid Build Coastguard Worker
150*6777b538SAndroid Build Coastguard Worker  table {
151*6777b538SAndroid Build Coastguard Worker    border-collapse: collapse;
152*6777b538SAndroid Build Coastguard Worker  }
153*6777b538SAndroid Build Coastguard Worker
154*6777b538SAndroid Build Coastguard Worker  th {
155*6777b538SAndroid Build Coastguard Worker    cursor: pointer;
156*6777b538SAndroid Build Coastguard Worker  }
157*6777b538SAndroid Build Coastguard Worker
158*6777b538SAndroid Build Coastguard Worker  td.detailsColumn {
159*6777b538SAndroid Build Coastguard Worker    padding-inline-start: 2em;
160*6777b538SAndroid Build Coastguard Worker    text-align: end;
161*6777b538SAndroid Build Coastguard Worker    white-space: nowrap;
162*6777b538SAndroid Build Coastguard Worker  }
163*6777b538SAndroid Build Coastguard Worker
164*6777b538SAndroid Build Coastguard Worker  a.icon {
165*6777b538SAndroid Build Coastguard Worker    padding-inline-start: 1.5em;
166*6777b538SAndroid Build Coastguard Worker    text-decoration: none;
167*6777b538SAndroid Build Coastguard Worker    user-select: auto;
168*6777b538SAndroid Build Coastguard Worker  }
169*6777b538SAndroid Build Coastguard Worker
170*6777b538SAndroid Build Coastguard Worker  a.icon:hover {
171*6777b538SAndroid Build Coastguard Worker    text-decoration: underline;
172*6777b538SAndroid Build Coastguard Worker  }
173*6777b538SAndroid Build Coastguard Worker
174*6777b538SAndroid Build Coastguard Worker  a.file {
175*6777b538SAndroid Build Coastguard Worker    background : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABnRSTlMAAAAAAABupgeRAAABEElEQVR42nRRx3HDMBC846AHZ7sP54BmWAyrsP588qnwlhqw/k4v5ZwWxM1hzmGRgV1cYqrRarXoH2w2m6qqiqKIR6cPtzc3xMSML2Te7XZZlnW7Pe/91/dX47WRBHuA9oyGmRknzGDjab1ePzw8bLfb6WRalmW4ip9FDVpYSWZgOp12Oh3nXJ7nxoJSGEciteP9y+fH52q1euv38WosqA6T2gGOT44vry7BEQtJkMAMMpa6JagAMcUfWYa4hkkzAc7fFlSjwqCoOUYAF5RjHZPVCFBOtSBGfgUDji3c3jpibeEMQhIMh8NwshqyRsBJgvF4jMs/YlVR5KhgNpuBLzk0OcUiR3CMhcPaOzsZiAAA/AjmaB3WZIkAAAAASUVORK5CYII=") left top no-repeat;
176*6777b538SAndroid Build Coastguard Worker  }
177*6777b538SAndroid Build Coastguard Worker
178*6777b538SAndroid Build Coastguard Worker  a.dir {
179*6777b538SAndroid Build Coastguard Worker    background : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABt0lEQVR42oxStZoWQRCs2cXdHTLcHZ6EjAwnQWIkJyQlRt4Cd3d3d1n5d7q7ju1zv/q+mh6taQsk8fn29kPDRo87SDMQcNAUJgIQkBjdAoRKdXjm2mOH0AqS+PlkP8sfp0h93iu/PDji9s2FzSSJVg5ykZqWgfGRr9rAAAQiDFoB1OfyESZEB7iAI0lHwLREQBcQQKqo8p+gNUCguwCNAAUQAcFOb0NNGjT+BbUC2YsHZpWLhC6/m0chqIoM1LKbQIIBwlTQE1xAo9QDGDPYf6rkTpPc92gCUYVJAZjhyZltJ95f3zuvLYRGWWCUNkDL2333McBh4kaLlxg+aTmyL7c2xTjkN4Bt7oE3DBP/3SRz65R/bkmBRPGzcRNHYuzMjaj+fdnaFoJUEdTSXfaHbe7XNnMPyqryPcmfY+zURaAB7SHk9cXSH4fQ5rojgCAVIuqCNWgRhLYLhJB4k3iZfIPtnQiCpjAzeBIRXMA6emAqoEbQSoDdGxFUrxS1AYcpaNbBgyQBGJEOnYOeENKR/iAd1npusI4C75/c3539+nbUjOgZV5CkAU27df40lH+agUdIuA/EAgDmZnwZlhDc0wAAAABJRU5ErkJggg==") left top no-repeat;
180*6777b538SAndroid Build Coastguard Worker  }
181*6777b538SAndroid Build Coastguard Worker
182*6777b538SAndroid Build Coastguard Worker  a.up {
183*6777b538SAndroid Build Coastguard Worker    background : url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACM0lEQVR42myTA+w1RxRHz+zftmrbdlTbtq04qRGrCmvbDWp9tq3a7tPcub8mj9XZ3eHOGQdJAHw77/LbZuvnWy+c/CIAd+91CMf3bo+bgcBiBAGIZKXb19/zodsAkFT+3px+ssYfyHTQW5tr05dCOf3xN49KaVX9+2zy1dX4XMk+5JflN5MBPL30oVsvnvEyp+18Nt3ZAErQMSFOfelCFvw0HcUloDayljZkX+MmamTAMTe+d+ltZ+1wEaRAX/MAnkJdcujzZyErIiVSzCEvIiq4O83AG7LAkwsfIgAnbncag82jfPPdd9RQyhPkpNJvKJWQBKlYFmQA315n4YPNjwMAZYy0TgAweedLmLzTJSTLIxkWDaVCVfAbbiKjytgmm+EGpMBYW0WwwbZ7lL8anox/UxekaOW544HO0ANAshxuORT/RG5YSrjlwZ3lM955tlQqbtVMlWIhjwzkAVFB8Q9EAAA3AFJ+DR3DO/Pnd3NPi7H117rAzWjpEs8vfIqsGZpaweOfEAAFJKuM0v6kf2iC5pZ9+fmLSZfWBVaKfLLNOXj6lYY0V2lfyVCIsVzmcRV9Y0fx02eTaEwhl2PDrXcjFdYRAohQmS8QEFLCLKGYA0AeEakhCCFDXqxsE0AQACgAQp5w96o0lAXuNASeDKWIvADiHwigfBINpWKtAXJvCEKWgSJNbRvxf4SmrnKDpvZavePu1K/zu/due1X/6Nj90MBd/J2Cic7WjBp/jUdIuA8AUtd65M+PzXIAAAAASUVORK5CYII=") left top no-repeat;
184*6777b538SAndroid Build Coastguard Worker  }
185*6777b538SAndroid Build Coastguard Worker
186*6777b538SAndroid Build Coastguard Worker  html[dir=rtl] a {
187*6777b538SAndroid Build Coastguard Worker    background-position-x: right;
188*6777b538SAndroid Build Coastguard Worker  }
189*6777b538SAndroid Build Coastguard Worker
190*6777b538SAndroid Build Coastguard Worker  #parentDirLinkBox {
191*6777b538SAndroid Build Coastguard Worker    margin-bottom: 10px;
192*6777b538SAndroid Build Coastguard Worker    padding-bottom: 10px;
193*6777b538SAndroid Build Coastguard Worker  }
194*6777b538SAndroid Build Coastguard Worker</style>
195*6777b538SAndroid Build Coastguard Worker
196*6777b538SAndroid Build Coastguard Worker<title id="title"></title>
197*6777b538SAndroid Build Coastguard Worker
198*6777b538SAndroid Build Coastguard Worker</head>
199*6777b538SAndroid Build Coastguard Worker
200*6777b538SAndroid Build Coastguard Worker<body>
201*6777b538SAndroid Build Coastguard Worker
202*6777b538SAndroid Build Coastguard Worker<h1 id="header">$i18n{header}</h1>
203*6777b538SAndroid Build Coastguard Worker
204*6777b538SAndroid Build Coastguard Worker<div id="parentDirLinkBox" style="display:none">
205*6777b538SAndroid Build Coastguard Worker  <a id="parentDirLink" class="icon up">
206*6777b538SAndroid Build Coastguard Worker    <span id="parentDirText">$i18n{parentDirText}</span>
207*6777b538SAndroid Build Coastguard Worker  </a>
208*6777b538SAndroid Build Coastguard Worker</div>
209*6777b538SAndroid Build Coastguard Worker
210*6777b538SAndroid Build Coastguard Worker<table>
211*6777b538SAndroid Build Coastguard Worker  <thead>
212*6777b538SAndroid Build Coastguard Worker    <tr class="header" id="theader">
213*6777b538SAndroid Build Coastguard Worker      <th id="nameColumnHeader" tabindex=0 role="button">$i18n{headerName}</th>
214*6777b538SAndroid Build Coastguard Worker      <th id="sizeColumnHeader" class="detailsColumn" tabindex=0 role="button">
215*6777b538SAndroid Build Coastguard Worker        $i18n{headerSize}
216*6777b538SAndroid Build Coastguard Worker      </th>
217*6777b538SAndroid Build Coastguard Worker      <th id="dateColumnHeader" class="detailsColumn" tabindex=0 role="button">
218*6777b538SAndroid Build Coastguard Worker        $i18n{headerDateModified}
219*6777b538SAndroid Build Coastguard Worker      </th>
220*6777b538SAndroid Build Coastguard Worker    </tr>
221*6777b538SAndroid Build Coastguard Worker  </thead>
222*6777b538SAndroid Build Coastguard Worker  <tbody id="tbody">
223*6777b538SAndroid Build Coastguard Worker  </tbody>
224*6777b538SAndroid Build Coastguard Worker</table>
225*6777b538SAndroid Build Coastguard Worker
226*6777b538SAndroid Build Coastguard Worker</body>
227*6777b538SAndroid Build Coastguard Worker
228*6777b538SAndroid Build Coastguard Worker</html>
229