summaryrefslogtreecommitdiffstats
path: root/toolkit/components/aboutcache/content/aboutCache.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/aboutcache/content/aboutCache.js')
-rw-r--r--toolkit/components/aboutcache/content/aboutCache.js44
1 files changed, 44 insertions, 0 deletions
diff --git a/toolkit/components/aboutcache/content/aboutCache.js b/toolkit/components/aboutcache/content/aboutCache.js
new file mode 100644
index 000000000..07067cce3
--- /dev/null
+++ b/toolkit/components/aboutcache/content/aboutCache.js
@@ -0,0 +1,44 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+// First, parse and save the incoming arguments ("?storage=name&context=key")
+// Note: window.location.search doesn't work with nsSimpleURIs used for about:* addresses.
+var search = window.location.href.match(/^.*\?(.*)$/);
+var searchParams = new URLSearchParams(search ? search[1] : '');
+var storage = searchParams.get('storage');
+var cacheContext = searchParams.get('context');
+
+// The context is in a format as used by the HTTP cache v2 back end
+if (cacheContext)
+ var [context, isAnon, isInBrowser, appId, isPrivate] = cacheContext.match(/(a,)?(b,)?(i\d+,)?(p,)?/);
+if (appId)
+ appId = appId.match(/i(\d+),/)[1];
+
+
+function $(id) { return document.getElementById(id) || {}; }
+
+// Initialize the context UI controls at the start according what we got in the "context=" argument
+addEventListener('DOMContentLoaded', function() {
+ $('anon').checked = !!isAnon;
+ $('inbrowser').checked = !!isInBrowser;
+ $('appid').value = appId || '';
+ $('priv').checked = !!isPrivate;
+}, false);
+
+// When user presses the [Update] button, we build a new context key according the UI control
+// values and navigate to a new about:cache?storage=<name>&context=<key> URL.
+function navigate()
+{
+ context = '';
+ if ($('anon').checked)
+ context += 'a,';
+ if ($('inbrowser').checked)
+ context += 'b,';
+ if ($('appid').value)
+ context += 'i' + $('appid').value + ',';
+ if ($('priv').checked)
+ context += 'p,';
+
+ window.location.href = 'about:cache?storage=' + storage + '&context=' + context;
+}