blob: be2245b98b799f19232cead54939c1aa248336f0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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/. */
var {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
const {DownloadUtils} = ChromeUtils.import("resource://gre/modules/DownloadUtils.jsm");
var {AppConstants} = ChromeUtils.import(
"resource://gre/modules/AppConstants.jsm"
);
function Startup()
{
updateActualCacheSize();
}
// Needs to be global because the cache service only keeps a weak reference.
var CacheObserver = {
/* nsICacheStorageConsumptionObserver */
onNetworkCacheDiskConsumption: function(aConsumption) {
var actualSizeLabel = document.getElementById("cacheSizeInfo");
var sizeStrings = DownloadUtils.convertByteUnits(aConsumption);
var prefStrBundle = document.getElementById("bundle_prefutilities");
var sizeStr = prefStrBundle.getFormattedString("cacheSizeInfo",
sizeStrings);
actualSizeLabel.textContent = sizeStr;
},
/* nsISupports */
QueryInterface: XPCOMUtils.generateQI(
[Ci.nsICacheStorageConsumptionObserver,
Ci.nsISupportsWeakReference])
};
// because the cache is in kilobytes, and the UI is in megabytes.
function ReadCacheDiskCapacity()
{
var pref = document.getElementById("browser.cache.disk.capacity");
return pref.value >> 10;
}
function WriteCacheDiskCapacity(aField)
{
return aField.value << 10;
}
function ReadCacheFolder(aField)
{
var pref = document.getElementById("browser.cache.disk.parent_directory");
var file = pref.value;
if (!file)
{
try
{
// no disk cache folder pref set; default to profile directory
file = GetSpecialDirectory(Services.dirsvc.has("ProfLD") ? "ProfLD"
: "ProfD");
}
catch (ex) {}
}
if (file) {
aField.file = file;
aField.label = AppConstants.platform == "macosx" ? file.leafName : file.path;
}
}
function CacheSelectFolder()
{
let fp = Cc["@mozilla.org/filepicker;1"]
.createInstance(Ci.nsIFilePicker);
let title = document.getElementById("bundle_prefutilities")
.getString("cachefolder");
fp.init(window, title, Ci.nsIFilePicker.modeGetFolder);
fp.displayDirectory =
document.getElementById("browser.cache.disk.parent_directory").value;
fp.appendFilters(Ci.nsIFilePicker.filterAll);
fp.open(rv => {
if (rv != Ci.nsIFilePicker.returnOK || !fp.file) {
return;
}
document.getElementById("browser.cache.disk.parent_directory").value = fp.file;
});
}
function ClearDiskAndMemCache()
{
Services.cache2.clear();
updateActualCacheSize();
}
function updateCacheSizeUI(cacheSizeEnabled)
{
document.getElementById("browserCacheDiskCacheBefore").disabled = cacheSizeEnabled;
document.getElementById("browserCacheDiskCache").disabled = cacheSizeEnabled;
document.getElementById("browserCacheDiskCacheAfter").disabled = cacheSizeEnabled;
}
function ReadSmartSizeEnabled()
{
var enabled = document.getElementById("browser.cache.disk.smart_size.enabled").value;
updateCacheSizeUI(enabled);
return enabled;
}
function updateActualCacheSize()
{
Services.cache2.asyncGetDiskConsumption(CacheObserver);
}
|