[Pkg-mozext-commits] [requestpolicy] 02/65: [add] experimental: allow to free memory

David Prévot taffit at moszumanska.debian.org
Fri Mar 25 22:59:45 UTC 2016


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository requestpolicy.

commit 1c3709d6a67357a92cc06f2d0eb0d584f116185f
Author: Martin Kimmerle <dev at 256k.de>
Date:   Sun Jan 3 14:31:25 2016 +0100

    [add] experimental: allow to free memory
    
    Resolves #673
---
 src/content/lib/request-processor.jsm  |   5 ++
 src/content/main/about-uri.jsm         |   3 +-
 src/content/settings/experimental.html |  75 +++++++++++++++++++++++++
 src/content/settings/experimental.js   | 100 +++++++++++++++++++++++++++++++++
 4 files changed, 182 insertions(+), 1 deletion(-)

diff --git a/src/content/lib/request-processor.jsm b/src/content/lib/request-processor.jsm
index ca105a1..766007a 100644
--- a/src/content/lib/request-processor.jsm
+++ b/src/content/lib/request-processor.jsm
@@ -470,6 +470,11 @@ var RequestProcessor = (function() {
   self._rejectedRequests = new RequestSet();
   self._allowedRequests = new RequestSet();
 
+  // needed to collect some memory usage information
+  self.clickedLinks = internal.clickedLinks;
+  self.clickedLinksReverse = internal.clickedLinksReverse;
+  self.faviconRequests = internal.faviconRequests;
+
   //----------------------------------------------------------------------------
   // public functions
   //----------------------------------------------------------------------------
diff --git a/src/content/main/about-uri.jsm b/src/content/main/about-uri.jsm
index 05a33e8..c6309d7 100644
--- a/src/content/main/about-uri.jsm
+++ b/src/content/main/about-uri.jsm
@@ -46,7 +46,8 @@ const FILENAMES = {
   "defaultpolicy": "defaultpolicy.html",
   "subscriptions": "subscriptions.html",
   "oldrules": "oldrules.html",
-  "setup": "setup.html"
+  "setup": "setup.html",
+  "experimental": "experimental.html",
 };
 
 function getURI(aURI) {
diff --git a/src/content/settings/experimental.html b/src/content/settings/experimental.html
new file mode 100644
index 0000000..33ac046
--- /dev/null
+++ b/src/content/settings/experimental.html
@@ -0,0 +1,75 @@
+<!doctype html>
+<html>
+<head>
+  <title>RequestPolicy - Experimental Features</title>
+  <script src="chrome://rpcontinued/content/settings/jquery.min.js"></script>
+  <script src="chrome://rpcontinued/content/settings/common.js"></script>
+  <script src="chrome://rpcontinued/content/settings/experimental.js"></script>
+  <link href="chrome://rpcontinued/content/settings/settings.css"
+        rel="stylesheet" type="text/css"/>
+</head>
+<body>
+<table>
+  <tr>
+    <td id="sidepad"></td>
+    <td id="side">
+      <div id="sidecontainer">
+        <div id="rpcontinued">
+          RequestPolicy
+          <br />  Continued
+        </div>
+        <div id="mainnav" class="nav">
+          <ul>
+            <li><a href="about:requestpolicy?basicprefs"
+                   data-string="preferences"></a></li>
+            <li><a href="about:requestpolicy?yourpolicy"
+                   data-string="managePolicies"></a></li>
+            <li><a href="https://github.com/RequestPolicyContinued/requestpolicy/wiki#help-and-support-for-users-and-developers"
+                   data-string="help" target="_blank"></a></li>
+            <li><a href="https://requestpolicycontinued.github.io/About.html"
+                   data-string="about" target="_blank"></a></li>
+            <li><a href="about:requestpolicy?experimental" selected="true">
+              Experimental
+            </a></li>
+          </ul>
+        </div>
+      </div>
+    </td>
+    <td id="contentpad"></td>
+    <td id="content">
+      <div id="contentcontainer" class="experimental">
+        <div id="pagetitle">
+          Experimental Features
+        </div>
+
+        <table class="settings">
+          <tr>
+            <td>
+              Memory Usage
+            </td>
+            <td id="memory-information">
+            </td>
+          </tr>
+            <tr>
+              <td>
+                Free Memory
+              </td>
+              <td>
+                <div>
+                  <button onclick="freeMemory()">
+                    Free Memory
+                  </button>
+                </div>
+                <div id="free-memory-results">
+                </div>
+              </td>
+            </tr>
+        </table>
+
+      </div>
+    </td>
+  </tr>
+</table>
+
+</body>
+</html>
diff --git a/src/content/settings/experimental.js b/src/content/settings/experimental.js
new file mode 100644
index 0000000..6f4ba97
--- /dev/null
+++ b/src/content/settings/experimental.js
@@ -0,0 +1,100 @@
+/* global window, $ */
+
+(function() {
+  /* global Components */
+  const {utils: Cu} = Components;
+
+  var {ScriptLoader: {importModule}} = Cu.import(
+      "chrome://rpcontinued/content/lib/script-loader.jsm", {});
+  var {RequestProcessor} = importModule("lib/request-processor");
+
+  //============================================================================
+
+  function getNRequestResultObjects(aRequestSet) {
+    var n = 0;
+    var origins = aRequestSet._origins;
+    for (var originURI in origins) {
+      var originUriRequests = origins[originURI];
+      for (var destBase in originUriRequests) {
+        var destBaseRequests = originUriRequests[destBase];
+        for (var destIdent in destBaseRequests) {
+          var destIdentRequests = destBaseRequests[destIdent];
+          for (var destURI in destIdentRequests) {
+            var destUriRequests = destIdentRequests[destURI];
+            n += Object.getOwnPropertyNames(destUriRequests).length;
+          }
+        }
+      }
+    }
+    return n;
+  }
+
+  function getMemoryInfo() {
+    var nRRAllowed = getNRequestResultObjects(
+        RequestProcessor._allowedRequests);
+    var nRRDenied = getNRequestResultObjects(
+        RequestProcessor._rejectedRequests);
+    return {
+      nRRAllowed: nRRAllowed,
+      nRRDenied: nRRDenied,
+      nRRTotal: nRRAllowed + nRRDenied,
+      nClickedLinks: Object.
+          getOwnPropertyNames(RequestProcessor.clickedLinks).length,
+      nFaviconRequests: Object.
+          getOwnPropertyNames(RequestProcessor.faviconRequests).length,
+    };
+  }
+
+  /**
+   * Delete all own properties of an object.
+   */
+  function deleteOwnProperties(obj) {
+    for (var key in obj) {
+      if (obj.hasOwnProperty(key)) {
+        delete obj[key];
+      }
+    }
+  }
+
+  function freeMemory() {
+    var memoryInfo = getMemoryInfo();
+
+    deleteOwnProperties(RequestProcessor._allowedRequests._origins);
+    deleteOwnProperties(RequestProcessor._rejectedRequests._origins);
+    deleteOwnProperties(RequestProcessor.clickedLinks);
+    deleteOwnProperties(RequestProcessor.clickedLinksReverse);
+    deleteOwnProperties(RequestProcessor.faviconRequests);
+
+    return memoryInfo;
+  }
+
+  window.onload = function() {
+    var info = $("#memory-information");
+    info.html("Some numbers:");
+    var list = $("<ul>");
+    info.append(list);
+
+    var {nRRAllowed, nRRDenied, nRRTotal, nClickedLinks, nFaviconRequests
+        } = getMemoryInfo();
+    list.append("<li>RequestResult objects: " + nRRTotal +
+        " (" + nRRAllowed + " allowed requests, " +
+        nRRDenied + " denied requests)</li>");
+    list.append("<li>Clicked links: " + nClickedLinks + "</li>");
+    list.append("<li>Favicon requests: " + nFaviconRequests + "</li>");
+  };
+
+  window.freeMemory = function() {
+    var results = $("#free-memory-results");
+    results.html("<br />Starting to free memory... ");
+
+    var {nRRTotal, nClickedLinks, nFaviconRequests} = freeMemory();
+
+    results.append(" DONE.<br />Successfully removed...");
+    var list = $("<ul>");
+    results.append(list);
+    list.append("<li>" + nRRTotal + " RequestResult objects</li>");
+    list.append("<li>" + nClickedLinks + " clicked links</li>");
+    list.append("<li>" + nFaviconRequests + " favicon requests</li>");
+  };
+
+}());

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-mozext/requestpolicy.git



More information about the Pkg-mozext-commits mailing list