Home | History | Annotate | Download | only in live-headers
      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 }