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]"),
|
||||
function(aTarget) {
|
||||
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]"),
|
||||
function(aTarget) {
|
||||
@ -97,7 +98,8 @@ function addApplication(aApp) {
|
||||
container.setAttribute("title", manifest.name);
|
||||
|
||||
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);
|
||||
|
||||
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
|
||||
// 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) {
|
||||
sendMessageToJava({
|
||||
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)
|
||||
return "chrome://browser/skin/images/default-app-icon.png";
|
||||
return DEFAULT_ICON;
|
||||
|
||||
let iconSizes = Object.keys(aIcons);
|
||||
if (iconSizes.length == 0)
|
||||
return "chrome://browser/skin/images/default-app-icon.png";
|
||||
return DEFAULT_ICON;
|
||||
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) {
|
||||
|
Loading…
Reference in New Issue
Block a user