toolkit/content/aboutNetworking.js

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this
     3  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     5 'use strict';
     7 const Ci = Components.interfaces;
     8 const Cc = Components.classes;
     9 const Cu = Components.utils;
    11 const gDashboard = Cc['@mozilla.org/network/dashboard;1'].
    12   getService(Ci.nsIDashboard);
    13 const gPrefs = Cc["@mozilla.org/preferences-service;1"].
    14   getService(Ci.nsIPrefService).getBranch("network.");
    15 const gRequestNetworkingData = {
    16   "http": gDashboard.requestHttpConnections,
    17   "sockets": gDashboard.requestSockets,
    18   "dns": gDashboard.requestDNSInfo,
    19   "websockets": gDashboard.requestWebsocketConnections
    20 };
    21 const gDashboardCallbacks = {
    22   "http": displayHttp,
    23   "sockets": displaySockets,
    24   "dns": displayDns,
    25   "websockets": displayWebsockets
    26 };
    28 const REFRESH_INTERVAL_MS = 3000;
    30 function col(element) {
    31   let col = document.createElement('td');
    32   let content = document.createTextNode(element);
    33   col.appendChild(content);
    34   return col;
    35 }
    37 function displayHttp(data) {
    38   let cont = document.getElementById('http_content');
    39   let parent = cont.parentNode;
    40   let new_cont = document.createElement('tbody');
    41   new_cont.setAttribute('id', 'http_content');
    43   for (let i = 0; i < data.connections.length; i++) {
    44     let row = document.createElement('tr');
    45     row.appendChild(col(data.connections[i].host));
    46     row.appendChild(col(data.connections[i].port));
    47     row.appendChild(col(data.connections[i].spdy));
    48     row.appendChild(col(data.connections[i].ssl));
    49     row.appendChild(col(data.connections[i].active.length));
    50     row.appendChild(col(data.connections[i].idle.length));
    51     new_cont.appendChild(row);
    52   }
    54   parent.replaceChild(new_cont, cont);
    55 }
    57 function displaySockets(data) {
    58   let cont = document.getElementById('sockets_content');
    59   let parent = cont.parentNode;
    60   let new_cont = document.createElement('tbody');
    61   new_cont.setAttribute('id', 'sockets_content');
    63   for (let i = 0; i < data.sockets.length; i++) {
    64     let row = document.createElement('tr');
    65     row.appendChild(col(data.sockets[i].host));
    66     row.appendChild(col(data.sockets[i].port));
    67     row.appendChild(col(data.sockets[i].tcp));
    68     row.appendChild(col(data.sockets[i].active));
    69     row.appendChild(col(data.sockets[i].sent));
    70     row.appendChild(col(data.sockets[i].received));
    71     new_cont.appendChild(row);
    72   }
    74   parent.replaceChild(new_cont, cont);
    75 }
    77 function displayDns(data) {
    78   let cont = document.getElementById('dns_content');
    79   let parent = cont.parentNode;
    80   let new_cont = document.createElement('tbody');
    81   new_cont.setAttribute('id', 'dns_content');
    83   for (let i = 0; i < data.entries.length; i++) {
    84     let row = document.createElement('tr');
    85     row.appendChild(col(data.entries[i].hostname));
    86     row.appendChild(col(data.entries[i].family));
    87     let column = document.createElement('td');
    89     for (let j = 0; j < data.entries[i].hostaddr.length; j++) {
    90       column.appendChild(document.createTextNode(data.entries[i].hostaddr[j]));
    91       column.appendChild(document.createElement('br'));
    92     }
    94     row.appendChild(column);
    95     row.appendChild(col(data.entries[i].expiration));
    96     new_cont.appendChild(row);
    97   }
    99   parent.replaceChild(new_cont, cont);
   100 }
   102 function displayWebsockets(data) {
   103   let cont = document.getElementById('websockets_content');
   104   let parent = cont.parentNode;
   105   let new_cont = document.createElement('tbody');
   106   new_cont.setAttribute('id', 'websockets_content');
   108   for (let i = 0; i < data.websockets.length; i++) {
   109     let row = document.createElement('tr');
   110     row.appendChild(col(data.websockets[i].hostport));
   111     row.appendChild(col(data.websockets[i].encrypted));
   112     row.appendChild(col(data.websockets[i].msgsent));
   113     row.appendChild(col(data.websockets[i].msgreceived));
   114     row.appendChild(col(data.websockets[i].sentsize));
   115     row.appendChild(col(data.websockets[i].receivedsize));
   116     new_cont.appendChild(row);
   117   }
   119   parent.replaceChild(new_cont, cont);
   120 }
   122 function requestAllNetworkingData() {
   123   for (let id in gRequestNetworkingData)
   124     requestNetworkingDataForTab(id);
   125 }
   127 function requestNetworkingDataForTab(id) {
   128   gRequestNetworkingData[id](gDashboardCallbacks[id]);
   129 }
   131 function init() {
   132   gDashboard.enableLogging = true;
   133   if (gPrefs.getBoolPref("warnOnAboutNetworking")) {
   134     let div = document.getElementById("warning_message");
   135     div.classList.add("active");
   136     document.getElementById("confpref").addEventListener("click", confirm);
   137   }
   139   requestAllNetworkingData();
   141   let autoRefresh = document.getElementById("autorefcheck");
   142   if (autoRefresh.checked)
   143     setAutoRefreshInterval(autoRefresh);
   145   autoRefresh.addEventListener("click", function() {
   146     let refrButton = document.getElementById("refreshButton");
   147     if (this.checked) {
   148       setAutoRefreshInterval(this);
   149       refrButton.disabled = "disabled";
   150     } else {
   151       clearInterval(this.interval);
   152       refrButton.disabled = null;
   153     }
   154   });
   156   let refr = document.getElementById("refreshButton");
   157   refr.addEventListener("click", requestAllNetworkingData);
   158   if (document.getElementById("autorefcheck").checked)
   159     refr.disabled = "disabled";
   161   // Event delegation on #menu element
   162   let menu = document.getElementById("menu");
   163   menu.addEventListener("click", function click(e) {
   164     if (e.target && e.target.parentNode == menu)
   165       show(e.target);
   166   });
   167 }
   169 function confirm () {
   170   let div = document.getElementById("warning_message");
   171   div.classList.remove("active");
   172   let warnBox = document.getElementById("warncheck");
   173   gPrefs.setBoolPref("warnOnAboutNetworking", warnBox.checked);
   174 }
   176 function show(button) {
   177   let current_tab = document.querySelector(".active");
   178   let content = document.getElementById(button.value);
   179   if (current_tab == content)
   180     return;
   181   current_tab.classList.remove("active");
   182   content.classList.add("active");
   184   let current_button = document.querySelector(".selected");
   185   current_button.classList.remove("selected");
   186   button.classList.add("selected");
   188   let autoRefresh = document.getElementById("autorefcheck");
   189   if (autoRefresh.checked) {
   190     clearInterval(autoRefresh.interval);
   191     setAutoRefreshInterval(autoRefresh);
   192   }
   193 }
   195 function setAutoRefreshInterval(checkBox) {
   196   let active_tab = document.querySelector(".active");
   197   checkBox.interval = setInterval(function() {
   198     requestNetworkingDataForTab(active_tab.id);
   199   }, REFRESH_INTERVAL_MS);
   200 }
   202 window.addEventListener("DOMContentLoaded", function load() {
   203   window.removeEventListener("DOMContentLoaded", load);
   204   init();
   205 });

mercurial