1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 var tabId = parseInt(window.location.search.substring(1)); 6 7 window.addEventListener("load", function() { 8 chrome.debugger.sendCommand({tabId:tabId}, "Network.enable"); 9 chrome.debugger.onEvent.addListener(onEvent); 10 }); 11 12 window.addEventListener("unload", function() { 13 chrome.debugger.detach({tabId:tabId}); 14 }); 15 16 var requests = {}; 17 18 function onEvent(debuggeeId, message, params) { 19 if (tabId != debuggeeId.tabId) 20 return; 21 22 if (message == "Network.requestWillBeSent") { 23 var requestDiv = requests[params.requestId]; 24 if (!requestDiv) { 25 var requestDiv = document.createElement("div"); 26 requestDiv.className = "request"; 27 requests[params.requestId] = requestDiv; 28 var urlLine = document.createElement("div"); 29 urlLine.textContent = params.request.url; 30 requestDiv.appendChild(urlLine); 31 } 32 33 if (params.redirectResponse) 34 appendResponse(params.requestId, params.redirectResponse); 35 36 var requestLine = document.createElement("div"); 37 requestLine.textContent = "\n" + params.request.method + " " + 38 parseURL(params.request.url).path + " HTTP/1.1"; 39 requestDiv.appendChild(requestLine); 40 document.getElementById("container").appendChild(requestDiv); 41 } else if (message == "Network.responseReceived") { 42 appendResponse(params.requestId, params.response); 43 } 44 } 45 46 function appendResponse(requestId, response) { 47 var requestDiv = requests[requestId]; 48 requestDiv.appendChild(formatHeaders(response.requestHeaders)); 49 50 var statusLine = document.createElement("div"); 51 statusLine.textContent = "\nHTTP/1.1 " + response.status + " " + 52 response.statusText; 53 requestDiv.appendChild(statusLine); 54 requestDiv.appendChild(formatHeaders(response.headers)); 55 } 56 57 function formatHeaders(headers) { 58 var text = ""; 59 for (name in headers) 60 text += name + ": " + headers[name] + "\n"; 61 var div = document.createElement("div"); 62 div.textContent = text; 63 return div; 64 } 65 66 function parseURL(url) { 67 var result = {}; 68 var match = url.match( 69 /^([^:]+):\/\/([^\/:]*)(?::([\d]+))?(?:(\/[^#]*)(?:#(.*))?)?$/i); 70 if (!match) 71 return result; 72 result.scheme = match[1].toLowerCase(); 73 result.host = match[2]; 74 result.port = match[3]; 75 result.path = match[4] || "/"; 76 result.fragment = match[5]; 77 return result; 78 }