diff options
Diffstat (limited to 'toolkit/mozapps/extensions/internal/LightweightThemeImageOptimizer.jsm')
-rw-r--r-- | toolkit/mozapps/extensions/internal/LightweightThemeImageOptimizer.jsm | 58 |
1 files changed, 38 insertions, 20 deletions
diff --git a/toolkit/mozapps/extensions/internal/LightweightThemeImageOptimizer.jsm b/toolkit/mozapps/extensions/internal/LightweightThemeImageOptimizer.jsm index 49dfa237f..fccde9a81 100644 --- a/toolkit/mozapps/extensions/internal/LightweightThemeImageOptimizer.jsm +++ b/toolkit/mozapps/extensions/internal/LightweightThemeImageOptimizer.jsm @@ -21,8 +21,8 @@ const ORIGIN_TOP_RIGHT = 1; const ORIGIN_BOTTOM_LEFT = 2; this.LightweightThemeImageOptimizer = { - optimize: function(aThemeData, aScreen) { - let data = Object.assign({}, aThemeData); + optimize: function LWTIO_optimize(aThemeData, aScreen) { + let data = Utils.createCopy(aThemeData); if (!data.headerURL) { return data; } @@ -38,7 +38,7 @@ this.LightweightThemeImageOptimizer = { return data; }, - purge: function() { + purge: function LWTIO_purge() { let dir = FileUtils.getDir("ProfD", ["lwtheme"]); dir.followLinks = false; try { @@ -49,15 +49,21 @@ this.LightweightThemeImageOptimizer = { Object.freeze(LightweightThemeImageOptimizer); -var ImageCropper = { +let ImageCropper = { _inProgress: {}, - getCroppedImageURL: function(aImageURL, aScreen, aOrigin) { + getCroppedImageURL: + function ImageCropper_getCroppedImageURL(aImageURL, aScreen, aOrigin) { // We can crop local files, only. if (!aImageURL.startsWith("file://")) { return aImageURL; } + if (Services.prefs.getBoolPref("lightweightThemes.animation.enabled")) { + //Don't crop if animated + return aImageURL; + } + // Generate the cropped image's file name using its // base name and the current screen size. let uri = Services.io.newURI(aImageURL, null, null); @@ -88,7 +94,7 @@ var ImageCropper = { return aImageURL; }, - _crop: function(aURI, aTargetFile, aScreen, aOrigin) { + _crop: function ImageCropper_crop(aURI, aTargetFile, aScreen, aOrigin) { let inProgress = this._inProgress; inProgress[aTargetFile.path] = true; @@ -96,7 +102,7 @@ var ImageCropper = { delete inProgress[aTargetFile.path]; } - ImageFile.read(aURI, function(aInputStream, aContentType) { + ImageFile.read(aURI, function crop_readImageFile(aInputStream, aContentType) { if (aInputStream && aContentType) { let image = ImageTools.decode(aInputStream, aContentType); if (image && image.width && image.height) { @@ -113,25 +119,28 @@ var ImageCropper = { } }; -var ImageFile = { - read: function(aURI, aCallback) { - this._netUtil.asyncFetch({ - uri: aURI, - loadUsingSystemPrincipal: true, - contentPolicyType: Ci.nsIContentPolicy.TYPE_INTERNAL_IMAGE - }, function(aInputStream, aStatus, aRequest) { +let ImageFile = { + read: function ImageFile_read(aURI, aCallback) { + this._netUtil.asyncFetch2( + aURI, + function read_asyncFetch(aInputStream, aStatus, aRequest) { if (Components.isSuccessCode(aStatus) && aRequest instanceof Ci.nsIChannel) { let channel = aRequest.QueryInterface(Ci.nsIChannel); aCallback(aInputStream, channel.contentType); } else { aCallback(); } - }); + }, + null, // aLoadingNode + Services.scriptSecurityManager.getSystemPrincipal(), + null, // aTriggeringPrincipal + Ci.nsILoadInfo.SEC_NORMAL, + Ci.nsIContentPolicy.TYPE_IMAGE); }, - write: function(aFile, aInputStream, aCallback) { + write: function ImageFile_write(aFile, aInputStream, aCallback) { let fos = FileUtils.openSafeFileOutputStream(aFile); - this._netUtil.asyncCopy(aInputStream, fos, function(aResult) { + this._netUtil.asyncCopy(aInputStream, fos, function write_asyncCopy(aResult) { FileUtils.closeSafeFileOutputStream(fos); // Remove the file if writing was not successful. @@ -149,8 +158,8 @@ var ImageFile = { XPCOMUtils.defineLazyModuleGetter(ImageFile, "_netUtil", "resource://gre/modules/NetUtil.jsm", "NetUtil"); -var ImageTools = { - decode: function(aInputStream, aContentType) { +let ImageTools = { + decode: function ImageTools_decode(aInputStream, aContentType) { let outParam = {value: null}; try { @@ -160,7 +169,7 @@ var ImageTools = { return outParam.value; }, - encode: function(aImage, aScreen, aOrigin, aContentType) { + encode: function ImageTools_encode(aImage, aScreen, aOrigin, aContentType) { let stream; let width = Math.min(aImage.width, aScreen.width); let height = Math.min(aImage.height, aScreen.height); @@ -178,3 +187,12 @@ var ImageTools = { XPCOMUtils.defineLazyServiceGetter(ImageTools, "_imgTools", "@mozilla.org/image/tools;1", "imgITools"); +let Utils = { + createCopy: function Utils_createCopy(aData) { + let copy = {}; + for (let [k, v] in Iterator(aData)) { + copy[k] = v; + } + return copy; + } +}; |