Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 <html> | 1 <html> |
| 2 <head> | 2 <head> |
| 3 <title>Headless remote debugging</title> | 3 <title>Headless remote debugging</title> |
| 4 <style> | 4 <style> |
| 5 </style> | 5 </style> |
| 6 | 6 |
| 7 <script> | 7 <script> |
| 8 function onLoad() { | 8 const fetchjson = (url) => fetch(url).then(r => r.json()); |
| 9 var tabs_list_request = new XMLHttpRequest(); | 9 |
| 10 tabs_list_request.open("GET", "/json/list?t=" + new Date().getTime(), true); | 10 function loadData() { |
| 11 tabs_list_request.onreadystatechange = onReady; | 11 const listPromise = fetchjson("/json/list?t=" + Date.now()); |
|
pfeldman
2016/07/20 18:13:14
/json/list does not cache.
paulirish
2016/07/20 19:38:47
confirmed. done.
| |
| 12 tabs_list_request.send(); | 12 const versionPromise = fetchjson('/json/version'); |
| 13 | |
| 14 Promise.all([listPromise, versionPromise]).then(_ => { | |
|
paulirish
2016/07/20 17:37:06
In essence:
Wait for both fetch's to finish. Then
pfeldman
2016/07/20 18:13:14
nit: _ => ()
| |
| 15 versionPromise.then(versionData => { | |
|
pfeldman
2016/07/20 18:13:14
No need for then, var versionData = result[1];
paulirish
2016/07/20 19:38:47
redid this mess to use the array of results via de
| |
| 16 const version = versionData['WebKit-Version']; | |
| 17 const hash = version.match(/\s\(@(\b[0-9a-f]{5,40}\b)/)[1]; | |
| 18 listPromise.then(responseJSON => { | |
|
pfeldman
2016/07/20 18:13:14
var responseJSON = result[0];
| |
| 19 responseJSON.forEach(appendItem, {hash}) | |
|
pfeldman
2016/07/20 18:13:14
Is {hash} intentional? Hate this feature :)
| |
| 20 }); | |
| 21 }); | |
| 22 }); | |
| 13 } | 23 } |
| 14 | 24 |
| 15 function onReady() { | 25 function appendItem(item) { |
| 16 if(this.readyState == 4 && this.status == 200) { | 26 let link; |
| 17 if(this.response != null) | 27 if (item.devtoolsFrontendUrl) { |
| 18 var responseJSON = JSON.parse(this.response); | 28 link = document.createElement("a"); |
| 19 for (var i = 0; i < responseJSON.length; ++i) | 29 var devtoolsFrontendUrl = item.devtoolsFrontendUrl.replace(/^\/devtools\//,' '); |
| 20 appendItem(responseJSON[i]); | 30 link.href = `http://frontend.chrome-dev.tools/serve_file/@${this.hash}/${dev toolsFrontendUrl}&remoteFrontend=true`; |
|
pfeldman
2016/07/20 18:13:14
We should use canonical url for those front-ends.
paulirish
2016/07/20 19:38:47
changed to https://chrome-devtools-frontend.appspo
| |
| 21 } | 31 link.title = item.title; |
| 22 } | |
| 23 | |
| 24 function appendItem(item_object) { | |
| 25 var frontend_ref; | |
| 26 if (item_object.devtoolsFrontendUrl) { | |
| 27 frontend_ref = document.createElement("a"); | |
| 28 frontend_ref.href = item_object.devtoolsFrontendUrl; | |
| 29 frontend_ref.title = item_object.title; | |
| 30 } else { | 32 } else { |
| 31 frontend_ref = document.createElement("div"); | 33 link = document.createElement("div"); |
| 32 frontend_ref.title = "The tab already has active debugging session"; | 34 link.title = "The tab already has active debugging session"; |
| 33 } | 35 } |
| 34 | 36 |
| 35 var text = document.createElement("div"); | 37 var text = document.createElement("div"); |
| 36 if (item_object.title) | 38 if (item.title) |
| 37 text.innerText = item_object.title; | 39 text.textContent = item.title; |
| 38 else | 40 else |
| 39 text.innerText = "(untitled tab)"; | 41 text.textContent = "(untitled tab)"; |
| 40 text.style.cssText = "background-image:url(" + item_object.faviconUrl + ")"; | 42 if (item.faviconUrl) |
| 41 frontend_ref.appendChild(text); | 43 text.style.cssText = "background-image:url(" + item.faviconUrl + ")"; |
| 44 link.appendChild(text); | |
| 42 | 45 |
| 43 var item = document.createElement("p"); | 46 var p = document.createElement("p"); |
| 44 item.appendChild(frontend_ref); | 47 p.appendChild(link); |
| 45 | 48 |
| 46 document.getElementById("items").appendChild(item); | 49 document.getElementById("items").appendChild(p); |
| 47 } | 50 } |
| 51 | |
| 48 </script> | 52 </script> |
| 49 </head> | 53 </head> |
| 50 <body onload='onLoad()'> | 54 <body onload='loadData()'> |
| 51 <div id='caption'>Inspectable WebContents</div> | 55 <div id='caption'>Inspectable WebContents</div> |
| 52 <div id='items'></div> | 56 <div id='items'></div> |
| 53 </body> | 57 </body> |
| 54 </html> | 58 </html> |
| OLD | NEW |