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
|
/* 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/. */
"use strict";
// This test makes sure that the style editor does not store any
// content CSS files in the permanent cache when opened from PB mode.
const TEST_URL = "http://" + TEST_HOST + "/browser/devtools/client/" +
"styleeditor/test/test_private.html";
const {LoadContextInfo} =
Cu.import("resource://gre/modules/LoadContextInfo.jsm", {});
const cache = Cc["@mozilla.org/netwerk/cache-storage-service;1"]
.getService(Ci.nsICacheStorageService);
add_task(function* () {
info("Opening a new private window");
let win = OpenBrowserWindow({private: true});
yield waitForDelayedStartupFinished(win);
info("Clearing the browser cache");
cache.clear();
let { toolbox, ui } = yield openStyleEditorForURL(TEST_URL, win);
is(ui.editors.length, 1, "The style editor contains one sheet.");
let editor = ui.editors[0];
yield editor.getSourceEditor();
yield checkDiskCacheFor(TEST_HOST);
yield toolbox.destroy();
let onUnload = new Promise(done => {
win.addEventListener("unload", function listener(event) {
if (event.target == win.document) {
win.removeEventListener("unload", listener);
done();
}
});
});
win.close();
yield onUnload;
});
function checkDiskCacheFor(host) {
let foundPrivateData = false;
let deferred = defer();
Visitor.prototype = {
onCacheStorageInfo: function (num) {
info("disk storage contains " + num + " entries");
},
onCacheEntryInfo: function (uri) {
let urispec = uri.asciiSpec;
info(urispec);
foundPrivateData |= urispec.includes(host);
},
onCacheEntryVisitCompleted: function () {
is(foundPrivateData, false, "web content present in disk cache");
deferred.resolve();
}
};
function Visitor() {}
let storage = cache.diskCacheStorage(LoadContextInfo.default, false);
storage.asyncVisitStorage(new Visitor(),
/* Do walk entries */
true);
return deferred.promise;
}
function waitForDelayedStartupFinished(win) {
let deferred = defer();
Services.obs.addObserver(function observer(subject, topic) {
if (win == subject) {
Services.obs.removeObserver(observer, topic);
deferred.resolve();
}
}, "browser-delayed-startup-finished", false);
return deferred.promise;
}
|