summaryrefslogtreecommitdiffstats
path: root/toolkit/mozapps/extensions/internal/LightweightThemeImageOptimizer.jsm
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/mozapps/extensions/internal/LightweightThemeImageOptimizer.jsm')
-rw-r--r--toolkit/mozapps/extensions/internal/LightweightThemeImageOptimizer.jsm58
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;
+ }
+};