[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