Bug 1445026: Don't try to decode a binary hash blob as UTF-8. r?rpl
MozReview-Commit-ID: 91QNBYVQgQU
--- a/toolkit/components/extensions/ExtensionContent.jsm
+++ b/toolkit/components/extensions/ExtensionContent.jsm
@@ -29,17 +29,17 @@ const DocumentEncoder = Components.Const
"nsIDocumentEncoder", "init");
const Timer = Components.Constructor("@mozilla.org/timer;1", "nsITimer", "initWithCallback");
ChromeUtils.import("resource://gre/modules/ExtensionChild.jsm");
ChromeUtils.import("resource://gre/modules/ExtensionCommon.jsm");
ChromeUtils.import("resource://gre/modules/ExtensionUtils.jsm");
-Cu.importGlobalProperties(["crypto", "TextDecoder", "TextEncoder"]);
+Cu.importGlobalProperties(["crypto", "TextEncoder"]);
const {
DefaultMap,
DefaultWeakMap,
defineLazyGetter,
getInnerWindowID,
getWinUtils,
promiseDocumentIdle,
@@ -308,17 +308,17 @@ class Script {
async addCSSCode(cssCode) {
if (!cssCode) {
return;
}
// Store the hash of the cssCode.
const buffer = await crypto.subtle.digest("SHA-1", new TextEncoder().encode(cssCode));
- this.cssCodeHash = new TextDecoder().decode(buffer);
+ this.cssCodeHash = String.fromCharCode(...new Uint16Array(buffer));
// Cache and preload the cssCode stylesheet.
this.cssCodeCache.addCSSCode(this.cssCodeHash, cssCode);
}
compileScripts() {
return this.js.map(url => this.scriptCache.get(url));
}