blob: 715ac1a78569c62c179a9e7c39a4ae5ad6afb010 (
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
|
// calculate the fullhash and send it to gethash server
function addCompletionToServer(list, url, mochitestUrl) {
return new Promise(function (resolve, reject) {
var listParam = "list=" + list;
var fullhashParam = "fullhash=" + hash(url);
var xhr = new XMLHttpRequest();
xhr.open("PUT", mochitestUrl + "?" + listParam + "&" + fullhashParam, true);
xhr.setRequestHeader("Content-Type", "text/plain");
xhr.onreadystatechange = function () {
if (this.readyState == this.DONE) {
resolve();
}
};
xhr.send();
});
}
function hash(str) {
function bytesFromString(str1) {
var converter = SpecialPowers.Cc[
"@mozilla.org/intl/scriptableunicodeconverter"
].createInstance(SpecialPowers.Ci.nsIScriptableUnicodeConverter);
converter.charset = "UTF-8";
return converter.convertToByteArray(str1);
}
var hasher = SpecialPowers.Cc["@mozilla.org/security/hash;1"].createInstance(
SpecialPowers.Ci.nsICryptoHash
);
var data = bytesFromString(str);
hasher.init(hasher.SHA256);
hasher.update(data, data.length);
return hasher.finish(true);
}
var pushPrefs = (...p) => SpecialPowers.pushPrefEnv({ set: p });
function whenDelayedStartupFinished(aWindow, aCallback) {
Services.obs.addObserver(function observer(aSubject, aTopic) {
if (aWindow == aSubject) {
Services.obs.removeObserver(observer, aTopic);
setTimeout(aCallback, 0);
}
}, "browser-delayed-startup-finished");
}
|