mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 766808 - Resolve icon urls for apps using relative urls. r=mfinkle
This commit is contained in:
parent
52c0fe6ac0
commit
3cf70e4ab5
@ -44,7 +44,8 @@ function onLoad(aEvent) {
|
|||||||
AppsUI.shortcut = contextmenus.add(gStrings.GetStringFromName("appsContext.shortcut"), contextmenus.SelectorContext("div[mozApp]"),
|
AppsUI.shortcut = contextmenus.add(gStrings.GetStringFromName("appsContext.shortcut"), contextmenus.SelectorContext("div[mozApp]"),
|
||||||
function(aTarget) {
|
function(aTarget) {
|
||||||
let manifest = aTarget.manifest;
|
let manifest = aTarget.manifest;
|
||||||
gChromeWin.WebappsUI.createShortcut(manifest.name, manifest.fullLaunchPath(), gChromeWin.WebappsUI.getBiggestIcon(manifest.icons), "webapp");
|
let origin = Services.io.newURI(app.origin, null, null);
|
||||||
|
gChromeWin.WebappsUI.createShortcut(manifest.name, manifest.fullLaunchPath(), gChromeWin.WebappsUI.getBiggestIcon(manifest.icons, origin), "webapp");
|
||||||
});
|
});
|
||||||
AppsUI.uninstall = contextmenus.add(gStrings.GetStringFromName("appsContext.uninstall"), contextmenus.SelectorContext("div[mozApp]"),
|
AppsUI.uninstall = contextmenus.add(gStrings.GetStringFromName("appsContext.uninstall"), contextmenus.SelectorContext("div[mozApp]"),
|
||||||
function(aTarget) {
|
function(aTarget) {
|
||||||
@ -97,7 +98,8 @@ function addApplication(aApp) {
|
|||||||
container.setAttribute("title", manifest.name);
|
container.setAttribute("title", manifest.name);
|
||||||
|
|
||||||
let img = document.createElement("img");
|
let img = document.createElement("img");
|
||||||
img.src = gChromeWin.WebappsUI.getBiggestIcon(manifest.icons);
|
let origin = Services.io.newURI(aApp.origin, null, null);
|
||||||
|
img.src = gChromeWin.WebappsUI.getBiggestIcon(manifest.icons, origin);
|
||||||
img.setAttribute("title", manifest.name);
|
img.setAttribute("title", manifest.name);
|
||||||
|
|
||||||
let title = document.createElement("div");
|
let title = document.createElement("div");
|
||||||
|
@ -5851,7 +5851,7 @@ var WebappsUI = {
|
|||||||
|
|
||||||
// Add a homescreen shortcut -- we can't use createShortcut, since we need to pass
|
// Add a homescreen shortcut -- we can't use createShortcut, since we need to pass
|
||||||
// a unique ID for Android webapp allocation
|
// a unique ID for Android webapp allocation
|
||||||
this.makeBase64Icon(this.getBiggestIcon(manifest.icons),
|
this.makeBase64Icon(this.getBiggestIcon(manifest.icons, Services.io.newURI(data.origin, null, null)),
|
||||||
function(icon) {
|
function(icon) {
|
||||||
sendMessageToJava({
|
sendMessageToJava({
|
||||||
gecko: {
|
gecko: {
|
||||||
@ -5888,15 +5888,37 @@ var WebappsUI = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
getBiggestIcon: function getBiggestIcon(aIcons) {
|
getBiggestIcon: function getBiggestIcon(aIcons, aOrigin) {
|
||||||
|
const DEFAULT_ICON = "chrome://browser/skin/images/default-app-icon.png";
|
||||||
if (!aIcons)
|
if (!aIcons)
|
||||||
return "chrome://browser/skin/images/default-app-icon.png";
|
return DEFAULT_ICON;
|
||||||
|
|
||||||
let iconSizes = Object.keys(aIcons);
|
let iconSizes = Object.keys(aIcons);
|
||||||
if (iconSizes.length == 0)
|
if (iconSizes.length == 0)
|
||||||
return "chrome://browser/skin/images/default-app-icon.png";
|
return DEFAULT_ICON;
|
||||||
iconSizes.sort(function(a, b) a - b);
|
iconSizes.sort(function(a, b) a - b);
|
||||||
return aIcons[iconSizes.pop()];
|
|
||||||
|
let biggestIcon = aIcons[iconSizes.pop()];
|
||||||
|
let iconURI = null;
|
||||||
|
try {
|
||||||
|
iconURI = Services.io.newURI(biggestIcon, null, null);
|
||||||
|
if (iconURI.scheme == "data") {
|
||||||
|
return iconURI.spec;
|
||||||
|
}
|
||||||
|
} catch (ex) {
|
||||||
|
// we don't have a biggestIcon or its not a valid url
|
||||||
|
}
|
||||||
|
|
||||||
|
// if we have an origin, try to resolve biggestIcon as a relative url
|
||||||
|
if (!iconURI && aOrigin) {
|
||||||
|
try {
|
||||||
|
iconURI = Services.io.newURI(aOrigin.resolve(biggestIcon), null, null);
|
||||||
|
} catch (ex) {
|
||||||
|
console.log("Could not resolve url: " + aOrigin.spec + " " + biggestIcon + " - " + ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return iconURI ? iconURI.spec : DEFAULT_ICON;
|
||||||
},
|
},
|
||||||
|
|
||||||
doInstall: function doInstall(aData) {
|
doInstall: function doInstall(aData) {
|
||||||
|
Loading…
Reference in New Issue
Block a user