зеркало из https://github.com/mozilla/pjs.git
More on 170006 - mismatch checking, create extensions dir in profile if it does not exist, etc...
This commit is contained in:
Родитель
0c5fe2e9d5
Коммит
c8c7ae8b5d
|
@ -169,6 +169,6 @@ function checkForUpdates()
|
|||
// XXXben - check for "all types" and the app itself here.
|
||||
var em = Components.classes["@mozilla.org/extension-manager;1"]
|
||||
.getService(Components.interfaces.nsIExtensionManager);
|
||||
em.update([], 0, true);
|
||||
em.update([], 0, Components.interfaces.nsIExtensionManager.UPDATE_TYPE_USERINVOKED);
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
// Globals
|
||||
|
||||
const kObserverServiceProgID = "@mozilla.org/observer-service;1";
|
||||
const nsIExtensionItem = Components.interfaces.nsIExtensionItem;
|
||||
|
||||
var gExtensionManager = null;
|
||||
var gDownloadListener = null;
|
||||
|
@ -365,44 +366,12 @@ var gExtensionsViewController = {
|
|||
|
||||
cmd_update: function ()
|
||||
{
|
||||
var items = this._getItemList(null);
|
||||
gExtensionManager.update(items, item.length,
|
||||
var id = stripPrefix(gExtensionsView.selected.id);
|
||||
var items = gExtensionManager.getItemList(id, nsIExtensionItem.TYPE_EXTENSION, { });
|
||||
gExtensionManager.update(items, items.length,
|
||||
Components.interfaces.nsIExtensionManager.UPDATE_TYPE_USERINVOKED);
|
||||
},
|
||||
|
||||
_getItemList: function (aItemID)
|
||||
{
|
||||
var items = [];
|
||||
if (aItemID) {
|
||||
var item = Components.classes["@mozilla.org/extensions/item;1"]
|
||||
.createInstance(Components.interfaces.nsIExtensionItem);
|
||||
item.init(aItemID, this.getExtensionProperty(aItemID, "version"),
|
||||
this.getExtensionProperty(aItemID, "name"),
|
||||
-1, "", "",
|
||||
Components.interfaces.nsIExtensionItem.TYPE_EXTENSION); // XXXben
|
||||
items.push(item);
|
||||
}
|
||||
else {
|
||||
var ctr = Components.classes["@mozilla.org/rdf/container;1"]
|
||||
.createInstance(Components.interfaces.nsIRDFContainer);
|
||||
ctr.Init(this, this._rdf.GetResource("urn:mozilla:extension:root"));
|
||||
|
||||
var elements = ctr.GetElements();
|
||||
while (elements.hasMoreElements()) {
|
||||
var e = elements.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
|
||||
var id = this._stripPrefix(e.Value);
|
||||
var item = Components.classes["@mozilla.org/extensions/item;1"]
|
||||
.createInstance(Components.interfaces.nsIExtensionItem);
|
||||
item.init(id, this.getExtensionProperty(id, "version"),
|
||||
this.getExtensionProperty(id, "name"),
|
||||
-1, "", "",
|
||||
Components.interfaces.nsIExtensionItem.TYPE_EXTENSION); // XXXben
|
||||
items.push(item);
|
||||
}
|
||||
}
|
||||
return items;
|
||||
},
|
||||
|
||||
cmd_uninstall: function ()
|
||||
{
|
||||
// Confirm the uninstall
|
||||
|
|
|
@ -85,6 +85,11 @@ interface nsIExtensionManager : nsISupports
|
|||
in unsigned long aItemCount,
|
||||
in unsigned short aUpdateType);
|
||||
|
||||
void getItemList(in string aItemID,
|
||||
in unsigned short aType,
|
||||
out unsigned long aItemCount,
|
||||
[retval, array, size_is(aItemCount)] out nsIExtensionItem aItems);
|
||||
|
||||
readonly attribute nsIRDFDataSource datasource;
|
||||
};
|
||||
|
||||
|
@ -92,5 +97,7 @@ interface nsIExtensionManager : nsISupports
|
|||
interface nsIExtensionItemUpdater : nsISupports
|
||||
{
|
||||
void checkForUpdates();
|
||||
|
||||
readonly attribute unsigned short updateType;
|
||||
};
|
||||
|
||||
|
|
|
@ -254,7 +254,7 @@ nsExtensionManager.prototype = {
|
|||
var appID = pref.getCharPref(PREF_EM_APP_ID);
|
||||
var appVersion = pref.getCharPref(PREF_EM_APP_VERSION);
|
||||
|
||||
var updater = new nsExtensionItemUpdater(aItems, appID, appVersion);
|
||||
var updater = new nsExtensionItemUpdater(aUpdateType, aItems, appID, appVersion);
|
||||
|
||||
switch (aUpdateType) {
|
||||
case Components.interfaces.nsIExtensionManager.UPDATE_TYPE_MISMATCH:
|
||||
|
@ -277,6 +277,12 @@ nsExtensionManager.prototype = {
|
|||
}
|
||||
},
|
||||
|
||||
getItemList: function (aItemID, aType, aCountRef)
|
||||
{
|
||||
this._ensureDS();
|
||||
return this._ds.getItemList(aItemID, aType, aCountRef);
|
||||
},
|
||||
|
||||
// Themes
|
||||
installTheme: function (aThemeID)
|
||||
{
|
||||
|
@ -321,8 +327,9 @@ nsExtensionManager.prototype = {
|
|||
}
|
||||
};
|
||||
|
||||
function nsExtensionItemUpdater(aItems, aTargetAppID, aTargetAppVersion)
|
||||
function nsExtensionItemUpdater(aUpdateType, aItems, aTargetAppID, aTargetAppVersion)
|
||||
{
|
||||
this._updateType = aUpdateType;
|
||||
this._items = aItems;
|
||||
this._count = aItems.length;
|
||||
this._appID = aTargetAppID;
|
||||
|
@ -344,6 +351,11 @@ nsExtensionItemUpdater.prototype = {
|
|||
"VersionCheck", "", true, this);
|
||||
},
|
||||
|
||||
get updateType()
|
||||
{
|
||||
return this._updateType;
|
||||
},
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// nsExtensionItemUpdater
|
||||
_proxy: null,
|
||||
|
@ -456,6 +468,38 @@ nsExtensionsDataSource.prototype = {
|
|||
return items;
|
||||
},
|
||||
|
||||
getItemList: function (aItemID, aType, aCountRef)
|
||||
{
|
||||
var items = [];
|
||||
if (aItemID) {
|
||||
var item = Components.classes["@mozilla.org/extensions/item;1"]
|
||||
.createInstance(Components.interfaces.nsIExtensionItem);
|
||||
item.init(aItemID, this.getExtensionProperty(aItemID, "version"),
|
||||
this.getExtensionProperty(aItemID, "name"),
|
||||
-1, "", "", aType);
|
||||
items.push(item);
|
||||
}
|
||||
else {
|
||||
var ctr = Components.classes["@mozilla.org/rdf/container;1"]
|
||||
.createInstance(Components.interfaces.nsIRDFContainer);
|
||||
ctr.Init(this, this._rdf.GetResource("urn:mozilla:extension:root"));
|
||||
|
||||
var elements = ctr.GetElements();
|
||||
while (elements.hasMoreElements()) {
|
||||
var e = elements.getNext().QueryInterface(Components.interfaces.nsIRDFResource);
|
||||
var id = this._stripPrefix(e.Value);
|
||||
var item = Components.classes["@mozilla.org/extensions/item;1"]
|
||||
.createInstance(Components.interfaces.nsIExtensionItem);
|
||||
item.init(id, this.getExtensionProperty(id, "version"),
|
||||
this.getExtensionProperty(id, "name"),
|
||||
-1, "", "", aType);
|
||||
items.push(item);
|
||||
}
|
||||
}
|
||||
aCountRef.value = items.length;
|
||||
return items;
|
||||
},
|
||||
|
||||
_setProperty: function (aDS, aSource, aProperty, aNewValue)
|
||||
{
|
||||
var oldValue = aDS.GetTarget(aSource, aProperty, true);
|
||||
|
@ -515,7 +559,11 @@ nsExtensionsDataSource.prototype = {
|
|||
var key = aProfile ? "ProfD" : "ProfD"; // XXXben - XCurProcDir
|
||||
var extensionsFile = fileLocator.get(key, Components.interfaces.nsIFile);
|
||||
extensionsFile.append("extensions");
|
||||
|
||||
var extensionsDir = extensionsFile.clone();
|
||||
if (!extensionsDir.exists())
|
||||
extensionsDir.create(Components.interfaces.nsIFile.DIRECTORY_TYPE, 0755);
|
||||
|
||||
extensionsFile.append("extensions.rdf");
|
||||
|
||||
if (!extensionsFile.exists()) {
|
||||
|
|
|
@ -47,6 +47,7 @@ classic.jar:
|
|||
skin/classic/mozapps/extensions/placeholder.gif (extensions/skin/placeholder.gif)
|
||||
skin/classic/mozapps/extensions/viewWatermark.png (extensions/skin/viewWatermark.png)
|
||||
skin/classic/mozapps/update/update.css (update/skin/update.css)
|
||||
skin/classic/mozapps/update/warning.gif (update/skin/warning.gif)
|
||||
skin/classic/mozapps/shared/richview.xml (shared/skin/richview.xml)
|
||||
skin/classic/mozapps/shared/richview.css (shared/skin/richview.css)
|
||||
skin/classic/mozapps/shared/viewFader.png (shared/skin/viewFader.png)
|
||||
|
|
|
@ -42,18 +42,39 @@
|
|||
//
|
||||
|
||||
const nsIExtensionItem = Components.interfaces.nsIExtensionItem;
|
||||
const MISMATCH = Components.interfaces.nsIExtensionManager.UPDATE_TYPE_MISMATCH;
|
||||
const USERINVOKED = Components.interfaces.nsIExtensionManager.UPDATE_TYPE_USERINVOKED;
|
||||
|
||||
var gExtensionItems = [];
|
||||
var gUpdater = null;
|
||||
|
||||
var gUpdateWizard = {
|
||||
_items: [],
|
||||
_itemsToUpdate: [],
|
||||
// The items to check for updates for (e.g. an extension, some subset of extensions,
|
||||
// all extensions, a list of compatible extensions, etc...)
|
||||
items: [],
|
||||
// The items that we found updates available for
|
||||
itemsToUpdate: [],
|
||||
// The items that we successfully installed updates for
|
||||
updatedCount: 0,
|
||||
|
||||
shouldSuggestAutoChecking: false,
|
||||
shouldAutoCheck: false,
|
||||
|
||||
init: function ()
|
||||
{
|
||||
gUpdater = window.arguments[0].QueryInterface(Components.interfaces.nsIExtensionItemUpdater);
|
||||
for (var i = 1; i < window.arguments.length; ++i)
|
||||
this._items.push(window.arguments[i].QueryInterface(nsIExtensionItem));
|
||||
this.items.push(window.arguments[i].QueryInterface(nsIExtensionItem));
|
||||
|
||||
var pref = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefBranch);
|
||||
this.shouldSuggestAutoChecking = (gUpdater.updateType == MISMATCH) &&
|
||||
!pref.getBoolPref("update.extensions.enabled");
|
||||
|
||||
if (gUpdater.updateType == USERINVOKED) {
|
||||
document.getElementById("mismatch").setAttribute("next", "checking");
|
||||
document.documentElement.advance();
|
||||
}
|
||||
|
||||
gMismatchPage.init();
|
||||
},
|
||||
|
@ -61,6 +82,37 @@ var gUpdateWizard = {
|
|||
uninit: function ()
|
||||
{
|
||||
gUpdatePage.uninit();
|
||||
},
|
||||
|
||||
onWizardFinish: function ()
|
||||
{
|
||||
if (this.shouldSuggestAutoChecking) {
|
||||
var pref = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefBranch);
|
||||
pref.setBoolPref("update.extensions.enabled", this.shouldAutoCheck);
|
||||
}
|
||||
},
|
||||
|
||||
setButtonLabels: function (aBackButton, aBackButtonIsDisabled,
|
||||
aNextButton, aNextButtonIsDisabled,
|
||||
aCancelButton, aCancelButtonIsDisabled)
|
||||
{
|
||||
var strings = document.getElementById("updateStrings");
|
||||
|
||||
var back = document.documentElement.getButton("back");
|
||||
if (aBackButton)
|
||||
back.label = strings.getString(aBackButton);
|
||||
back.disabled = aBackButtonIsDisabled;
|
||||
|
||||
var next = document.documentElement.getButton("next");
|
||||
if (aNextButton)
|
||||
next.label = strings.getString(aNextButton);
|
||||
next.disabled = aNextButtonIsDisabled;
|
||||
|
||||
var cancel = document.documentElement.getButton("cancel");
|
||||
if (aCancelButton)
|
||||
cancel.label = strings.getString(aCancelButton);
|
||||
cancel.disabled = aCancelButtonIsDisabled;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -69,24 +121,20 @@ var gMismatchPage = {
|
|||
init: function ()
|
||||
{
|
||||
var incompatible = document.getElementById("mismatch.incompatible");
|
||||
|
||||
for (var i = 0; i < gUpdateWizard._items.length; ++i) {
|
||||
var item = gUpdateWizard._items[i];
|
||||
for (var i = 0; i < gUpdateWizard.items.length; ++i) {
|
||||
var item = gUpdateWizard.items[i];
|
||||
var listitem = document.createElement("listitem");
|
||||
listitem.setAttribute("label", item.name + " " + item.version);
|
||||
incompatible.appendChild(listitem);
|
||||
}
|
||||
|
||||
var strings = document.getElementById("updateStrings");
|
||||
var next = document.documentElement.getButton("next");
|
||||
next.label = strings.getString("mismatchCheckNow");
|
||||
var cancel = document.documentElement.getButton("cancel");
|
||||
cancel.label = strings.getString("mismatchDontCheck");
|
||||
},
|
||||
|
||||
onPageAdvanced: function ()
|
||||
onPageShow: function ()
|
||||
{
|
||||
dump("*** mismatch page advanced\n");
|
||||
gUpdateWizard.setButtonLabels(null, true,
|
||||
"mismatchCheckNow", false,
|
||||
"mismatchDontCheck", false);
|
||||
document.documentElement.getButton("next").focus();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -100,15 +148,10 @@ var gUpdatePage = {
|
|||
|
||||
onPageShow: function ()
|
||||
{
|
||||
var strings = document.getElementById("updateStrings");
|
||||
var next = document.documentElement.getButton("next");
|
||||
next.label = strings.getString("nextButtonText");
|
||||
next.disabled = true;
|
||||
var cancel = document.documentElement.getButton("cancel");
|
||||
cancel.label = strings.getString("cancelButtonText");
|
||||
cancel.disabled = true;
|
||||
var back = document.documentElement.getButton("back");
|
||||
back.disabled = true;
|
||||
gUpdateWizard.setButtonLabels(null, true,
|
||||
"nextButtonText", true,
|
||||
"cancelButtonText", true);
|
||||
document.documentElement.getButton("next").focus();
|
||||
|
||||
var os = Components.classes["@mozilla.org/observer-service;1"]
|
||||
.getService(Components.interfaces.nsIObserverService);
|
||||
|
@ -134,17 +177,16 @@ var gUpdatePage = {
|
|||
case "update-item-started":
|
||||
break;
|
||||
case "update-item-ended":
|
||||
dump("*** update-item-ended\n");
|
||||
gUpdateWizard._itemsToUpdate.push(aSubject);
|
||||
gUpdateWizard.itemsToUpdate.push(aSubject);
|
||||
|
||||
++this._completeCount;
|
||||
|
||||
var progress = document.getElementById("checking.progress");
|
||||
progress.value = Math.ceil(this._completeCount / gUpdateWizard._itemsToUpdate.length) * 100;
|
||||
progress.value = Math.ceil(this._completeCount / gUpdateWizard.itemsToUpdate.length) * 100;
|
||||
|
||||
break;
|
||||
case "update-ended":
|
||||
if (gUpdateWizard._itemsToUpdate.length > 0)
|
||||
if (gUpdateWizard.itemsToUpdate.length > 0)
|
||||
document.getElementById("checking").setAttribute("next", "found");
|
||||
document.documentElement.advance();
|
||||
break;
|
||||
|
@ -156,27 +198,76 @@ var gFoundPage = {
|
|||
|
||||
onPageShow: function ()
|
||||
{
|
||||
var strings = document.getElementById("updateStrings");
|
||||
var next = document.documentElement.getButton("next");
|
||||
next.label = strings.getString("installButtonText");
|
||||
next.disabled = false;
|
||||
var back = document.documentElement.getButton("back");
|
||||
back.disabled = true;
|
||||
gUpdateWizard.setButtonLabels(null, true,
|
||||
"installButtonText", false,
|
||||
null, false);
|
||||
document.documentElement.getButton("next").focus();
|
||||
|
||||
var list = document.getElementById("foundList");
|
||||
for (var i = 0; i < gUpdateWizard._itemsToUpdate.length; ++i) {
|
||||
for (var i = 0; i < gUpdateWizard.itemsToUpdate.length; ++i) {
|
||||
var updateitem = document.createElement("updateitem");
|
||||
list.appendChild(updateitem);
|
||||
|
||||
var item = gUpdateWizard._itemsToUpdate[i];
|
||||
var item = gUpdateWizard.itemsToUpdate[i];
|
||||
updateitem.name = item.name + " " + item.version;
|
||||
updateitem.url = item.xpiURL;
|
||||
updateitem.checked = true;
|
||||
if (item.iconURL != "")
|
||||
updateitem.icon = item.iconURL;
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
var gInstallingPage = {
|
||||
|
||||
onPageShow: function ()
|
||||
{
|
||||
gUpdateWizard.setButtonLabels(null, true,
|
||||
"nextButtonText", true,
|
||||
null, true);
|
||||
|
||||
// Get XPInstallManager and kick off download/install
|
||||
// process, registering us as an observer.
|
||||
|
||||
//XXXben
|
||||
window.advance = function()
|
||||
{
|
||||
document.getElementById("installing").setAttribute("next", "finished");
|
||||
document.documentElement.advance();
|
||||
}
|
||||
setTimeout("advance()", 2000);
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
var gFinishedPage = {
|
||||
|
||||
onPageShow: function ()
|
||||
{
|
||||
gUpdateWizard.setButtonLabels(null, true, null, true, null, true);
|
||||
document.documentElement.getButton("finish").focus();
|
||||
|
||||
var iR = document.getElementById("incompatibleRemaining");
|
||||
var iR2 = document.getElementById("incompatibleRemaining2");
|
||||
var fEC = document.getElementById("finishedEnableChecking");
|
||||
|
||||
if (gUpdateWizard.shouldSuggestAutoChecking) {
|
||||
iR.hidden = true;
|
||||
iR2.hidden = false;
|
||||
fEC.hidden = false;
|
||||
fEC.click();
|
||||
}
|
||||
else {
|
||||
iR.hidden = false;
|
||||
iR2.hidden = true;
|
||||
fEC.hidden = true;
|
||||
}
|
||||
|
||||
if (gUpdater.updateType == MISMATCH) {
|
||||
document.getElementById("finishedMismatch").hidden = false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
# -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
title="&updateWizard.title;"
|
||||
onload="gUpdateWizard.init()"
|
||||
onunload="gUpdateWizard.uninit()"
|
||||
onwizardfinish="gUpdateWizard.onWizardFinish();"
|
||||
style="width: 40em;"
|
||||
buttons="accept,cancel">
|
||||
|
||||
|
@ -64,7 +65,7 @@
|
|||
|
||||
<wizardpage id="mismatch" pageid="mismatch" next="checking"
|
||||
label="&mismatch.title;"
|
||||
onpageadvanced="gMismatchPage.onPageAdvanced();">
|
||||
onpageshow="gMismatchPage.onPageShow();">
|
||||
|
||||
<label>&mismatch.intro1.label;</label>
|
||||
|
||||
|
@ -101,8 +102,7 @@
|
|||
|
||||
<wizardpage id="found" pageid="found" next="installing"
|
||||
label="&found.title;"
|
||||
onpageshow="gFoundPage.onPageShow();"
|
||||
onpageadvanced="gFoundPage.onPageAdvanced();">
|
||||
onpageshow="gFoundPage.onPageShow();">
|
||||
|
||||
<label>&found.intro.label;</label>
|
||||
|
||||
|
@ -114,16 +114,34 @@
|
|||
|
||||
<wizardpage id="installing" pageid="installing" next="finished"
|
||||
label="&installing.title;"
|
||||
onpageshow="UpdateWizard.onFinishedPageShow();"
|
||||
onpageadvanced="UpdateWizard.onFinishedPageAdvanced();">
|
||||
onpageshow="gInstallingPage.onPageShow();">
|
||||
<label>&installing.intro.label;</label>
|
||||
<label>&installing.disclaimer.label;</label>
|
||||
|
||||
<separator/>
|
||||
|
||||
</wizardpage>
|
||||
|
||||
<wizardpage id="finished" pageid="finished"
|
||||
label="&finished.title;"
|
||||
onpageshow="UpdateWizard.onFinishedPageShow();"
|
||||
onpageadvanced="UpdateWizard.onFinishedPageAdvanced();">
|
||||
onpageshow="gFinishedPage.onPageShow();">
|
||||
|
||||
<label id="updated">&finished.updated.label;</label>
|
||||
<separator/>
|
||||
<hbox align="top">
|
||||
<image id="alert"/>
|
||||
<description id="incompatibleRemaining" flex="1">&finished.remaining.label;</description>
|
||||
<description id="incompatibleRemaining2" flex="1">&finished.remaining2.label;</description>
|
||||
</hbox>
|
||||
<vbox align="left">
|
||||
<checkbox class="indent" label="&finished.enableChecking.label;" id="finishedEnableChecking"
|
||||
oncommand="gUpdateWizard.shouldAutoCheck = this.checked;"/>
|
||||
</vbox>
|
||||
<separator flex="1"/>
|
||||
<label id="finishedMismatch" hidden="true">&finished.mismatch.label;</label>
|
||||
|
||||
|
||||
</wizardpage>
|
||||
|
||||
</wizard>
|
||||
|
||||
|
|
@ -1,41 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!DOCTYPE bindings SYSTEM "chrome://mozapps/locale/update/update.dtd">
|
||||
|
||||
<bindings id="updateItemBindings"
|
||||
xmlns="http://www.mozilla.org/xbl"
|
||||
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
xmlns:xbl="http://www.mozilla.org/xbl">
|
||||
|
||||
<binding id="updateItem">
|
||||
<resources>
|
||||
<stylesheet src="chrome://mozapps/skin/update/update.css"/>
|
||||
</resources>
|
||||
<content>
|
||||
<xul:hbox flex="1">
|
||||
<xul:vbox align="center" pack="center">
|
||||
<xul:image class="installItemIcon" xbl:inherits="src=icon"/>
|
||||
</xul:vbox>
|
||||
<xul:vbox flex="1">
|
||||
<xul:hbox class="updateItemNameRow" align="center">
|
||||
<xul:label class="updateItemName" xbl:inherits="value=name" flex="1" crop="right"/>
|
||||
</xul:hbox>
|
||||
<xul:hbox class="updateItemDetailsRow" align="center">
|
||||
<xul:label class="updateItemFromLabel">&from.label;</xul:label>
|
||||
<xul:textbox class="updateItemURL" xbl:inherits="value=url" flex="1" readonly="true" crop="right"/>
|
||||
</xul:hbox>
|
||||
</xul:vbox>
|
||||
</xul:hbox>
|
||||
</content>
|
||||
<implementation>
|
||||
<property name="name" onset="this.setAttribute('name', val); return val;"
|
||||
onget="return this.getAttribute('name');"/>
|
||||
<property name="url" onset="this.setAttribute('url', val); return val;"
|
||||
onget="return this.getAttribute('url');"/>
|
||||
<property name="icon" onset="this.setAttribute('icon', val); return val;"
|
||||
onget="return this.getAttribute('icon');"/>
|
||||
</implementation>
|
||||
</binding>
|
||||
|
||||
</bindings>
|
||||
|
|
@ -11,15 +11,39 @@
|
|||
<!ENTITY checking.title "Checking for Updates">
|
||||
<!ENTITY checking.intro.label "&brandShortName; is now checking for available updates...">
|
||||
|
||||
<!ENTITY noupdates.title "No Updates Found">
|
||||
|
||||
<!ENTITY found.title "Updates Found">
|
||||
<!ENTITY found.intro.label "&brandShortName; found the following available updates:">
|
||||
<!ENTITY found.instructions.label "Choose the ones you want to install and click Install Now to install them.">
|
||||
|
||||
<!ENTITY from.label "from: ">
|
||||
|
||||
<!ENTITY installing.title "Installing Updates">
|
||||
<!ENTITY installing.intro.label "Now downloading and installing updates...">
|
||||
<!ENTITY installing.disclaimer.label "XXXben - this will not work until we have a scriptable API to XPInstall.">
|
||||
|
||||
<!ENTITY finished.title "Done">
|
||||
<!ENTITY noupdates.title "No Updates Found">
|
||||
<!ENTITY noupdates.intro.user.label "&brandShortName; was not able to find any available updates.">
|
||||
<!ENTITY noupdates.intro2.user.label "&brandShortName; will check periodically and inform you when
|
||||
updates become available.">
|
||||
<!ENTITY noupdates.intro3.user.label "&brandShortName; can check periodically and inform you when
|
||||
updates become available.">
|
||||
|
||||
<!ENTITY from.label "from: ">
|
||||
<!ENTITY noupdates.intro.mismatch.label "&brandShortName; was not able to find any available updates -
|
||||
compatible versions may not be available at this time.">
|
||||
<!ENTITY noupdates.intro2.mismatch.label "&brandShortName; will check periodically and inform you when
|
||||
compatible versions become available.">
|
||||
<!ENTITY noupdates.intro3.mismatch.label "&brandShortName; can check periodically and inform you when
|
||||
compatible versions become available.">
|
||||
<!ENTITY noupdates.enableChecking.label "Allow &brandShortName; to check for updates.">
|
||||
|
||||
<!ENTITY finished.title "Update Complete">
|
||||
<!ENTITY finished.updated.label "&brandShortName; has installed the available updates.">
|
||||
<!ENTITY finished.remaining.label "Some incompatible extensions could not be updated, perhaps
|
||||
because compatible versions are not available at this time.
|
||||
&brandShortName; will check periodically and inform you
|
||||
when updated versions become available.">
|
||||
<!ENTITY finished.remaining2.label "Some incompatible extensions could not be updated, perhaps
|
||||
because compatible versions are not available at this time.
|
||||
&brandShortName; can check periodically and inform you
|
||||
when updated versions become available.">
|
||||
<!ENTITY finished.enableChecking.label "Allow &brandShortName; to check for updates.">
|
||||
<!ENTITY finished.mismatch.label "Click Finish to continue starting &brandShortName;.">
|
||||
|
|
|
@ -35,7 +35,24 @@ updateitem {
|
|||
background-color: Window;
|
||||
}
|
||||
|
||||
.updateItemFromLabel {
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
.updateItemIcon {
|
||||
list-style-image: url("chrome://mozapps/skin/xpinstall/xpinstallItemGeneric.png");
|
||||
}
|
||||
|
||||
.updateItemChecked {
|
||||
margin: 0px 0px 3px 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.updateItemChecked .checkbox-label-box {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#alert {
|
||||
list-style-image: url("chrome://mozapps/skin/update/warning.gif");
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче