зеркало из https://github.com/mozilla/pjs.git
Bug 342606 - Compatibility Wizard is broken in oh so many ways (unreachable code paths, messages not shown, etc.). r=sspizter
This commit is contained in:
Родитель
b56f2ac584
Коммит
9a35ff3dc2
|
@ -14,4 +14,6 @@ installingPrefix=Installing: %S
|
|||
closeButton=Close
|
||||
updateTypeAddons=Add-ons (%S)
|
||||
foundInstructions=Choose the ones you want to install and click Install Now to install them.
|
||||
installErrorDesc=%S was unable to install the updates for the following add-ons:
|
||||
checkingErrorDesc=%S was unable to successfully check for updates for the following add-ons (either the update server(s) did not respond, or the update service(s) were not found):
|
||||
installErrorItemFormat=%S (%S)
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#
|
||||
# Contributor(s):
|
||||
# Ben Goodger <ben@bengoodger.com>
|
||||
# Robert Strong <robert.bugzilla@gmail.com>
|
||||
#
|
||||
# Alternatively, the contents of this file may be used under the terms of
|
||||
# either the GNU General Public License Version 2 or later (the "GPL"), or
|
||||
|
@ -35,41 +36,25 @@
|
|||
#
|
||||
# ***** END LICENSE BLOCK *****
|
||||
|
||||
//
|
||||
// This UI can be opened from the following places, and in the following modes:
|
||||
//
|
||||
// - from the Version Compatibility Checker at startup
|
||||
// as the application starts a check is done to see if the application being
|
||||
// started is the same version that was started last time. If it isn't, a
|
||||
// list of UpdateItems that are incompatible with the verison being
|
||||
// started is generated and this UI opened with that list. This UI then
|
||||
// offers to check for updates to those UpdateItems that are compatible
|
||||
// with the version of the application being started.
|
||||
//
|
||||
// In this mode, the wizard is opened to panel 'mismatch'.
|
||||
// This UI is only opened from the Extension Manager when the app is upgraded.
|
||||
|
||||
const nsIUpdateItem = Components.interfaces.nsIUpdateItem;
|
||||
const nsIAUCL = Components.interfaces.nsIAddonUpdateCheckListener;
|
||||
|
||||
const PREF_UPDATE_EXTENSIONS_ENABLED = "extensions.update.enabled";
|
||||
const PREF_UPDATE_EXTENSIONS_AUTOUPDATEENABLED = "extensions.update.autoUpdateEnabled";
|
||||
const PREF_XPINSTALL_ENABLED = "xpinstall.enabled";
|
||||
|
||||
var gShowMismatch = null;
|
||||
|
||||
var gUpdateWizard = {
|
||||
// The items to check for updates for (e.g. an extension, some subset of extensions,
|
||||
// all extensions, a list of compatible extensions, etc...)
|
||||
// When synchronizing app compatibility info this contains all installed
|
||||
// add-ons. When checking for compatible versions this contains only
|
||||
// incompatible add-ons.
|
||||
items: [],
|
||||
// The items that we found updates available for
|
||||
itemsToUpdate: [],
|
||||
// The items that we successfully installed updates for
|
||||
updatedCount: 0,
|
||||
shouldSuggestAutoChecking: false,
|
||||
shouldAutoCheck: false,
|
||||
xpinstallEnabled: false,
|
||||
xpinstallLocked: false,
|
||||
remainingExtensionUpdateCount: 0,
|
||||
|
||||
init: function ()
|
||||
{
|
||||
|
@ -80,9 +65,14 @@ var gUpdateWizard = {
|
|||
var pref =
|
||||
Components.classes["@mozilla.org/preferences-service;1"].
|
||||
getService(Components.interfaces.nsIPrefBranch);
|
||||
this.shouldSuggestAutoChecking =
|
||||
gShowMismatch &&
|
||||
!pref.getBoolPref(PREF_UPDATE_EXTENSIONS_AUTOUPDATEENABLED);
|
||||
|
||||
try {
|
||||
this.shouldSuggestAutoChecking =
|
||||
!pref.getBoolPref(PREF_UPDATE_EXTENSIONS_ENABLED);
|
||||
}
|
||||
catch (e) {
|
||||
}
|
||||
|
||||
try {
|
||||
this.xpinstallEnabled = pref.getBoolPref(PREF_XPINSTALL_ENABLED);
|
||||
this.xpinstallLocked = pref.prefIsLocked(PREF_XPINSTALL_ENABLED);
|
||||
|
@ -104,7 +94,7 @@ var gUpdateWizard = {
|
|||
var pref = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefBranch);
|
||||
if (this.shouldSuggestAutoChecking)
|
||||
pref.setBoolPref(PREF_UPDATE_EXTENSIONS_ENABLED, this.shouldAutoCheck);
|
||||
pref.setBoolPref(PREF_UPDATE_EXTENSIONS_ENABLED, this.shouldAutoCheck);
|
||||
},
|
||||
|
||||
_setUpButton: function (aButtonID, aButtonKey, aDisabled)
|
||||
|
@ -140,18 +130,20 @@ var gUpdateWizard = {
|
|||
"modal", { state: aState, errors: aErrors });
|
||||
},
|
||||
|
||||
// Displays a list of items that had an error during the update check. We
|
||||
// don't display the actual error that occured since
|
||||
// nsIAddonUpdateCheckListener doesn't return the error details.
|
||||
showUpdateCheckErrors: function ()
|
||||
{
|
||||
var errors = [];
|
||||
for (var i = 0; i < this.errorItems.length; ++i)
|
||||
errors.push({ name: this.errorItems[i].name, error: true,
|
||||
item: this.errorItems[i] });
|
||||
errors.push({ name: this.errorItems[i].name, error: true });
|
||||
this.showErrors("checking", errors);
|
||||
},
|
||||
|
||||
checkForErrors: function (aElementIDToShow)
|
||||
{
|
||||
if (this.errorOnGeneric || this.errorItems.length > 0)
|
||||
if (this.errorItems.length > 0)
|
||||
document.getElementById(aElementIDToShow).hidden = false;
|
||||
},
|
||||
|
||||
|
@ -275,6 +267,7 @@ var gMismatchPage = {
|
|||
};
|
||||
|
||||
var gUpdatePage = {
|
||||
_totalCount: 0,
|
||||
_completeCount: 0,
|
||||
onPageShow: function ()
|
||||
{
|
||||
|
@ -290,9 +283,10 @@ var gUpdatePage = {
|
|||
|
||||
gUpdateWizard.errorItems = [];
|
||||
|
||||
this._totalCount = gUpdateWizard.items.length;
|
||||
var em = Components.classes["@mozilla.org/extensions/manager;1"]
|
||||
.getService(Components.interfaces.nsIExtensionManager);
|
||||
em.update(gUpdateWizard.items, gUpdateWizard.items.length, false, this);
|
||||
em.update(gUpdateWizard.items, this._totalCount, false, this);
|
||||
},
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -325,7 +319,7 @@ var gUpdatePage = {
|
|||
status.setAttribute("value", statusString);
|
||||
|
||||
var progress = document.getElementById("checking.progress");
|
||||
progress.value = Math.ceil((this._completeCount / gUpdateWizard.items.length) * 100);
|
||||
progress.value = Math.ceil((this._completeCount / this._totalCount) * 100);
|
||||
},
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -339,69 +333,39 @@ var gUpdatePage = {
|
|||
};
|
||||
|
||||
var gFoundPage = {
|
||||
_nonAppItems: [],
|
||||
|
||||
_newestInfo: null,
|
||||
|
||||
buildAddons: function ()
|
||||
{
|
||||
var hasExtensions = false;
|
||||
var foundAddonsList = document.getElementById("found.addons.list");
|
||||
var uri = Components.classes["@mozilla.org/network/standard-url;1"]
|
||||
.createInstance(Components.interfaces.nsIURI);
|
||||
var itemCount = gUpdateWizard.itemsToUpdate.length;
|
||||
for (var i = 0; i < itemCount; ++i) {
|
||||
var item = gUpdateWizard.itemsToUpdate[i];
|
||||
var checkbox = document.createElement("checkbox");
|
||||
foundAddonsList.appendChild(checkbox);
|
||||
checkbox.setAttribute("type", "update");
|
||||
checkbox.label = item.name + " " + item.version;
|
||||
checkbox.setAttribute("URL", item.xpiURL);
|
||||
checkbox.setAttribute("hash", item.xpiHash);
|
||||
checkbox.infoURL = "";
|
||||
checkbox.internalName = "";
|
||||
uri.spec = item.xpiURL;
|
||||
checkbox.setAttribute("source", uri.host);
|
||||
checkbox.checked = true;
|
||||
hasExtensions = true;
|
||||
}
|
||||
|
||||
if (hasExtensions) {
|
||||
var addonsHeader = document.getElementById("addons");
|
||||
var strings = document.getElementById("updateStrings");
|
||||
addonsHeader.label = strings.getFormattedString("updateTypeAddons", [itemCount]);
|
||||
addonsHeader.collapsed = false;
|
||||
}
|
||||
},
|
||||
|
||||
_initialized: false,
|
||||
onPageShow: function ()
|
||||
{
|
||||
gUpdateWizard.setButtonLabels(null, true,
|
||||
"installButtonText", false,
|
||||
null, false);
|
||||
|
||||
var foundUpdates = document.getElementById("found.updates");
|
||||
var itemCount = gUpdateWizard.itemsToUpdate.length;
|
||||
for (var i = 0; i < itemCount; ++i) {
|
||||
var item = gUpdateWizard.itemsToUpdate[i];
|
||||
var listItem = foundUpdates.appendItem(item.name + " " + item.version,
|
||||
item.xpiURL);
|
||||
listItem.setAttribute("type", "checkbox");
|
||||
listItem.setAttribute("checked", "true");
|
||||
listItem.setAttribute("URL", item.xpiURL);
|
||||
listItem.setAttribute("hash", item.xpiHash);
|
||||
}
|
||||
|
||||
if (!gUpdateWizard.xpinstallEnabled) {
|
||||
document.documentElement.getButton("next").disabled = true;
|
||||
document.getElementById("xpinstallDisabledAlert").hidden = false;
|
||||
document.getElementById("enableXPInstall").focus();
|
||||
}
|
||||
else
|
||||
else {
|
||||
//XXXrstrong - this string should be set in update.xul from update.dtd
|
||||
// for Gecko Version 1.9.
|
||||
var strings = document.getElementById("updateStrings");
|
||||
var text = strings.getString("foundInstructions");
|
||||
var foundInstructions = document.getElementById("foundInstructions");
|
||||
foundInstructions.hidden = false;
|
||||
foundInstructions.appendChild(document.createTextNode(text));
|
||||
document.documentElement.getButton("next").focus();
|
||||
|
||||
var updates = document.getElementById("found.updates");
|
||||
if (!this._initialized) {
|
||||
this._initialized = true;
|
||||
updates.computeSizes();
|
||||
this.buildAddons();
|
||||
}
|
||||
|
||||
var kids = updates._getRadioChildren();
|
||||
for (var i = 0; i < kids.length; ++i) {
|
||||
if (kids[i].collapsed == false) {
|
||||
updates.selectedIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
this.updateNextButton();
|
||||
},
|
||||
|
||||
toggleXPInstallEnable: function(aEvent)
|
||||
|
@ -411,44 +375,39 @@ var gFoundPage = {
|
|||
var pref = Components.classes["@mozilla.org/preferences-service;1"]
|
||||
.getService(Components.interfaces.nsIPrefBranch);
|
||||
pref.setBoolPref(PREF_XPINSTALL_ENABLED, enabled);
|
||||
document.documentElement.getButton("next").disabled = !enabled;
|
||||
this.updateNextButton();
|
||||
},
|
||||
|
||||
onSelect: function (aEvent)
|
||||
updateNextButton: function ()
|
||||
{
|
||||
if (!gUpdateWizard.xpinstallEnabled)
|
||||
if (!gUpdateWizard.xpinstallEnabled) {
|
||||
document.documentElement.getButton("next").disabled = true;
|
||||
return;
|
||||
|
||||
var updates = document.getElementById("found.updates");
|
||||
var oneChecked = false;
|
||||
var items = updates.selectedItem.getElementsByTagName("checkbox");
|
||||
for (var i = 0; i < items.length; ++i) {
|
||||
if (items[i].checked) {
|
||||
oneChecked = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
var strings = document.getElementById("updateStrings");
|
||||
var oneChecked = false;
|
||||
var foundUpdates = document.getElementById("found.updates");
|
||||
var updates = foundUpdates.getElementsByTagName("listitem");;
|
||||
for (var i = 0; i < updates.length; ++i) {
|
||||
if (!updates[i].checked)
|
||||
continue;
|
||||
oneChecked = true;
|
||||
break;
|
||||
}
|
||||
|
||||
gUpdateWizard.setButtonLabels(null, true,
|
||||
"installButtonText", true,
|
||||
null, false);
|
||||
var text = strings.getString("foundInstructions");
|
||||
document.getElementById("found").setAttribute("next", "installing");
|
||||
document.documentElement.getButton("next").disabled = !oneChecked;
|
||||
|
||||
var foundInstructions = document.getElementById("foundInstructions");
|
||||
while (foundInstructions.hasChildNodes())
|
||||
foundInstructions.removeChild(foundInstructions.firstChild);
|
||||
foundInstructions.appendChild(document.createTextNode(text));
|
||||
}
|
||||
};
|
||||
|
||||
var gInstallingPage = {
|
||||
_installing : false,
|
||||
_restartRequired : false,
|
||||
_objs : [],
|
||||
|
||||
_errors : [],
|
||||
|
||||
onPageShow: function ()
|
||||
{
|
||||
gUpdateWizard.setButtonLabels(null, true,
|
||||
|
@ -460,19 +419,16 @@ var gInstallingPage = {
|
|||
var items = [];
|
||||
var hashes = [];
|
||||
this._objs = [];
|
||||
|
||||
this._restartRequired = false;
|
||||
|
||||
gUpdateWizard.remainingExtensionUpdateCount = gUpdateWizard.itemsToUpdate.length;
|
||||
this._errors = [];
|
||||
|
||||
var updates = document.getElementById("found.updates");
|
||||
var checkboxes = updates.selectedItem.getElementsByTagName("checkbox");
|
||||
for (var i = 0; i < checkboxes.length; ++i) {
|
||||
if (checkboxes[i].type == "update" && checkboxes[i].checked) {
|
||||
items.push(checkboxes[i].URL);
|
||||
hashes.push(checkboxes[i].hash ? checkboxes[i].hash : null);
|
||||
this._objs.push({ name: checkboxes[i].label });
|
||||
}
|
||||
var foundUpdates = document.getElementById("found.updates");
|
||||
var updates = foundUpdates.getElementsByTagName("listitem");;
|
||||
for (var i = 0; i < updates.length; ++i) {
|
||||
if (!updates[i].checked)
|
||||
continue;
|
||||
items.push(updates[i].value);
|
||||
hashes.push(updates[i].getAttribute("hash") ? updates[i].getAttribute("hash") : null);
|
||||
this._objs.push({ name: updates[i].label });
|
||||
}
|
||||
|
||||
var xpimgr = Components.classes["@mozilla.org/xpinstall/install-manager;1"]
|
||||
|
@ -502,26 +458,22 @@ var gInstallingPage = {
|
|||
break;
|
||||
case nsIXPIProgressDialog.INSTALL_DONE:
|
||||
switch (aValue) {
|
||||
case 999:
|
||||
this._restartRequired = true;
|
||||
break;
|
||||
case 0:
|
||||
--gUpdateWizard.remainingExtensionUpdateCount;
|
||||
case 999:
|
||||
case 0:
|
||||
break;
|
||||
default:
|
||||
this._errors.push({ name: this._objs[aIndex].name, error: aValue });
|
||||
}
|
||||
break;
|
||||
case nsIXPIProgressDialog.DIALOG_CLOSE:
|
||||
this._installing = false;
|
||||
var nextPage = this._errors ? "errors" : (this._restartRequired ? "restart" : "finished");
|
||||
var nextPage = this._errors.length > 0 ? "errors" : "finished";
|
||||
document.getElementById("installing").setAttribute("next", nextPage);
|
||||
document.documentElement.advance();
|
||||
break;
|
||||
}
|
||||
},
|
||||
|
||||
_objs: [],
|
||||
_errors: false,
|
||||
|
||||
onProgress: function (aIndex, aValue, aMaxValue)
|
||||
{
|
||||
var downloadProgress = document.getElementById("downloadProgress");
|
||||
|
@ -537,7 +489,7 @@ var gErrorsPage = {
|
|||
|
||||
onShowErrors: function ()
|
||||
{
|
||||
gUpdateWizard.showErrors("install", gInstallingPage._objs);
|
||||
gUpdateWizard.showErrors("install", gInstallingPage._errors);
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -547,24 +499,21 @@ var gFinishedPage = {
|
|||
gUpdateWizard.setButtonLabels(null, true, null, true, null, true);
|
||||
document.documentElement.getButton("finish").focus();
|
||||
|
||||
if (gUpdateWizard.xpinstallLocked)
|
||||
{
|
||||
if (gUpdateWizard.xpinstallLocked) {
|
||||
document.getElementById("adminDisabled").hidden = false;
|
||||
document.getElementById("incompatibleRemainingLocked").hidden = false;
|
||||
document.getElementById("finishedMismatch").hidden = false;
|
||||
document.getElementById("incompatibleAlert").hidden = false;
|
||||
}
|
||||
else {
|
||||
document.getElementById("updated").hidden = false;
|
||||
document.getElementById("incompatibleRemaining").hidden = false;
|
||||
if (gUpdateWizard.shouldSuggestAutoChecking) {
|
||||
document.getElementById("finishedEnableCheckingDesc").hidden = false;
|
||||
document.getElementById("finishedEnableChecking").hidden = false;
|
||||
document.getElementById("finishedEnableChecking").click();
|
||||
}
|
||||
}
|
||||
|
||||
if (gShowMismatch || gUpdateWizard.xpinstallLocked) {
|
||||
document.getElementById("finishedMismatch").hidden = false;
|
||||
document.getElementById("incompatibleAlert").hidden = false;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -573,16 +522,15 @@ var gNoUpdatesPage = {
|
|||
{
|
||||
gUpdateWizard.setButtonLabels(null, true, null, true, null, true);
|
||||
document.documentElement.getButton("finish").focus();
|
||||
if (gShowMismatch) {
|
||||
document.getElementById("introUser").hidden = true;
|
||||
document.getElementById("introMismatch").hidden = false;
|
||||
document.getElementById("mismatchNoUpdates").hidden = false;
|
||||
document.getElementById("introUser").hidden = true;
|
||||
document.getElementById("introMismatch").hidden = false;
|
||||
document.getElementById("mismatchNoUpdates").hidden = false;
|
||||
|
||||
if (gUpdateWizard.shouldSuggestAutoChecking) {
|
||||
document.getElementById("mismatchIncompatibleRemaining").hidden = true;
|
||||
document.getElementById("mismatchIncompatibleRemaining2").hidden = false;
|
||||
document.getElementById("mismatchFinishedEnableChecking").hidden = false;
|
||||
}
|
||||
if (gUpdateWizard.shouldSuggestAutoChecking) {
|
||||
document.getElementById("mismatchIncompatibleRemaining").hidden = true;
|
||||
document.getElementById("mismatchIncompatibleRemaining2").hidden = false;
|
||||
document.getElementById("mismatchFinishedEnableChecking").hidden = false;
|
||||
document.getElementById("mismatchFinishedEnableChecking").click();
|
||||
}
|
||||
|
||||
gUpdateWizard.checkForErrors("updateCheckErrorNotFound");
|
||||
|
|
|
@ -38,7 +38,6 @@
|
|||
# ***** END LICENSE BLOCK *****
|
||||
|
||||
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://mozapps/content/extensions/update.css" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://mozapps/skin/extensions/update.css" type="text/css"?>
|
||||
|
||||
<!DOCTYPE wizard [
|
||||
|
@ -55,7 +54,6 @@
|
|||
onload="gUpdateWizard.init();"
|
||||
onwizardfinish="gUpdateWizard.onWizardFinish();"
|
||||
onclose="return gUpdateWizard.onWizardClose(event);"
|
||||
style="width: 47em; min-height: 35em;"
|
||||
buttons="accept,cancel">
|
||||
|
||||
<script type="application/x-javascript" src="chrome://mozapps/content/extensions/update.js"/>
|
||||
|
@ -161,25 +159,17 @@
|
|||
|
||||
<label>&found.intro.label;</label>
|
||||
<separator class="thin"/>
|
||||
<radiogroup type="update-types" id="found.updates" flex="1" _uninitialized="true"
|
||||
onselect="gFoundPage.onSelect(event);">
|
||||
<radio type="update-type" id="addons" accesskey="&updateFound.addons.accesskey;" collapsed="true">
|
||||
<description>&foundUpdates.addons.label;</description>
|
||||
<separator class="thin"/>
|
||||
<vbox id="found.addons.list"/>
|
||||
<label>.</label>
|
||||
</radio>
|
||||
</radiogroup>
|
||||
<listbox id="found.updates" flex="1" seltype="multiple"
|
||||
onclick="gFoundPage.updateNextButton();"/>
|
||||
<separator class="thin"/>
|
||||
<vbox align="left" id="xpinstallDisabledAlert">
|
||||
<vbox align="left" id="xpinstallDisabledAlert" hidden="true">
|
||||
<description flex="1">&found.disabledXPinstall.label;</description>
|
||||
<checkbox label="&found.enableXPInstall.label;"
|
||||
id="enableXPInstall"
|
||||
accesskey="&found.enableXPInstall.accesskey;"
|
||||
oncommand="gFoundPage.toggleXPInstallEnable(event);"/>
|
||||
<separator class="thin"/>
|
||||
</vbox>
|
||||
<label id="foundInstructions"/>
|
||||
<label id="foundInstructions" hidden="true"/>
|
||||
</wizardpage>
|
||||
|
||||
<wizardpage id="installing" pageid="installing" next="finished"
|
||||
|
@ -219,13 +209,16 @@
|
|||
<description id="incompatibleRemainingLocked" hidden="true"
|
||||
flex="1">&finished.xpinstallLocked.label;</description>
|
||||
</hbox>
|
||||
<description id="finishedEnableCheckingDesc" flex="1" hidden="true">
|
||||
&noupdates.intro3.mismatch.label;
|
||||
</description>
|
||||
<vbox align="left">
|
||||
<checkbox class="indent" label="&finished.enableChecking.label;" id="finishedEnableChecking"
|
||||
<checkbox label="&finished.enableChecking.label;" id="finishedEnableChecking"
|
||||
oncommand="gUpdateWizard.shouldAutoCheck = this.checked;" hidden="true"/>
|
||||
</vbox>
|
||||
<separator flex="1"/>
|
||||
<label id="finishedMismatch" hidden="true">&finished.mismatch.label;</label>
|
||||
|
||||
<spacer flex="1"/>
|
||||
</wizardpage>
|
||||
|
||||
</wizard>
|
||||
|
|
|
@ -10,6 +10,4 @@ toolkit.jar:
|
|||
* content/mozapps/extensions/list.js (content/list.js)
|
||||
* content/mozapps/extensions/update.xul (content/update.xul)
|
||||
* content/mozapps/extensions/update.js (content/update.js)
|
||||
* content/mozapps/extensions/update.xml (content/update.xml)
|
||||
content/mozapps/extensions/update.css (content/update.css)
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
title="&errors.title;"
|
||||
onload="init()"
|
||||
style="width: 28em;"
|
||||
style="width: 40em;"
|
||||
buttons="cancel">
|
||||
|
||||
<script type="application/x-javascript">
|
||||
|
@ -64,7 +64,7 @@
|
|||
var state = window.arguments[0].state;
|
||||
var brandShortName = document.getElementById("brandStrings").getString("brandShortName");
|
||||
var updateStrings = document.getElementById("updateStrings");
|
||||
var str = updateStrings.getFormattedString(state + "ErrorDescription", [brandShortName]);
|
||||
var str = updateStrings.getFormattedString(state + "ErrorDesc", [brandShortName]);
|
||||
document.getElementById("intro").appendChild(document.createTextNode(str));
|
||||
|
||||
var xpinstallStrings = document.getElementById("xpinstallStrings");
|
||||
|
@ -104,9 +104,9 @@
|
|||
</stringbundleset>
|
||||
|
||||
<description id="intro"/>
|
||||
<separator/>
|
||||
<separator class="thin"/>
|
||||
<listbox id="extensions" rows="7"/>
|
||||
<separator/>
|
||||
<separator class="thin"/>
|
||||
|
||||
</dialog>
|
||||
|
||||
|
|
|
@ -1,153 +1,22 @@
|
|||
/* Found Updates */
|
||||
|
||||
#foundList {
|
||||
-moz-appearance: listbox;
|
||||
margin: 10px 4px 10px 4px;
|
||||
}
|
||||
|
||||
updateitem {
|
||||
padding: 5px 0px 5px 5px;
|
||||
border-bottom: 1px dotted #C0C0C0;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.warning {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.updateItemIcon {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
max-width: 32px !important;
|
||||
max-height: 32px !important;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
.updateItemName {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.updateItemNameRow {
|
||||
padding-bottom: 3px;
|
||||
}
|
||||
|
||||
.updateItemURL {
|
||||
-moz-appearance: none;
|
||||
border: none;
|
||||
background-color: Window;
|
||||
}
|
||||
|
||||
.updateItemFromLabel {
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
.updateItemIcon {
|
||||
list-style-image: url("chrome://mozapps/skin/xpinstall/xpinstallItemGeneric.png");
|
||||
}
|
||||
|
||||
.updateItemChecked {
|
||||
margin: 20px 0px 3px 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.updateItemChecked .checkbox-label-box {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Update Wizard */
|
||||
#alert {
|
||||
list-style-image: url("chrome://mozapps/skin/update/warning.gif");
|
||||
}
|
||||
|
||||
/* Updates View */
|
||||
|
||||
radio[type="update-type"] {
|
||||
margin: 2px;
|
||||
-moz-appearance: none;
|
||||
}
|
||||
|
||||
.updateCategoryBox {
|
||||
background-color: #DFDFDF;
|
||||
padding: 3px;
|
||||
-moz-appearance: radio-container;
|
||||
}
|
||||
|
||||
.updateCategoryContent {
|
||||
padding: 5px 20px;
|
||||
}
|
||||
|
||||
.updateCategoryLabel[selected="true"] {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.updateCategoryIcon {
|
||||
|
||||
}
|
||||
|
||||
radiogroup[type="update-types"] {
|
||||
-moz-appearance: listbox;
|
||||
margin: 2px 4px;
|
||||
border: 2px solid;
|
||||
-moz-border-top-colors: ThreeDShadow ThreeDDarkShadow;
|
||||
-moz-border-right-colors: ThreeDHighlight ThreeDLightShadow;
|
||||
-moz-border-bottom-colors: ThreeDHighlight ThreeDLightShadow;
|
||||
-moz-border-left-colors: ThreeDShadow ThreeDDarkShadow;
|
||||
background-color: -moz-Field;
|
||||
color: -moz-FieldText;
|
||||
}
|
||||
|
||||
/* Inline Update Notifications */
|
||||
.updateIndicator[updateCount="0"] {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
/* Inline Update Notifications */
|
||||
toolbarbutton[type="updates"] {
|
||||
padding: 0px;
|
||||
-moz-appearance: none;
|
||||
border: none;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
-moz-box-align: center;
|
||||
}
|
||||
toolbarbutton[type="updates"][updateCount="0"] {
|
||||
visibility: collapse;
|
||||
}
|
||||
toolbarbutton[type="updates"] > .toolbarbutton-icon {
|
||||
list-style-image: url("chrome://mozapps/skin/update/update.png");
|
||||
-moz-image-region: rect(0px 16px 16px 0px);
|
||||
margin: 0px 2px;
|
||||
display: -moz-box !important;
|
||||
}
|
||||
toolbarbutton[type="updates"][severity="2"] > .toolbarbutton-icon {
|
||||
-moz-image-region: rect(0px 16px 16px 0px);
|
||||
}
|
||||
toolbarbutton[type="updates"][severity="1"] > .toolbarbutton-icon {
|
||||
-moz-image-region: rect(0px 32px 16px 16px);
|
||||
}
|
||||
toolbarbutton[type="updates"][severity="0"] > .toolbarbutton-icon {
|
||||
-moz-image-region: rect(0px 48px 16px 32px);
|
||||
}
|
||||
|
||||
.updateIcon {
|
||||
.throbber {
|
||||
list-style-image: url("chrome://global/skin/icons/loading_16.gif");
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
list-style-image: url("chrome://mozapps/skin/update/update.png");
|
||||
}
|
||||
.updateIcon[severity="0"] {
|
||||
-moz-image-region: rect(0px, 48px, 16px, 32px);
|
||||
}
|
||||
.updateIcon[severity="1"] {
|
||||
-moz-image-region: rect(0px, 32px, 16px, 16px);
|
||||
}
|
||||
.updateIcon[severity="2"] {
|
||||
-moz-image-region: rect(0px, 16px, 16px, 0px);
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
-moz-margin-start: 5px;
|
||||
-moz-margin-end: 2px;
|
||||
}
|
||||
|
||||
#statusbar-updates {
|
||||
padding: 0px 4px 0px 0px;
|
||||
}
|
||||
|
||||
.updateIndicator > label {
|
||||
margin-left: 2px !important;
|
||||
#incompatibleAlert {
|
||||
background-color: InfoBackground;
|
||||
color: InfoText;
|
||||
border: 1px outset InfoBackground;
|
||||
margin-left: 3px;
|
||||
margin-right: 3px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
|
|
@ -1,93 +1,7 @@
|
|||
/* Found Updates */
|
||||
|
||||
#foundList {
|
||||
-moz-appearance: listbox;
|
||||
margin: 10px 4px 10px 4px;
|
||||
}
|
||||
|
||||
updateitem {
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
-moz-padding-start: 5px;
|
||||
-moz-padding-end: 0px;
|
||||
border-bottom: 1px dotted #C0C0C0;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.warning {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.updateItemIcon {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
max-width: 32px !important;
|
||||
max-height: 32px !important;
|
||||
-moz-margin-end: 5px;
|
||||
}
|
||||
|
||||
.updateItemName {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.updateItemNameRow {
|
||||
padding-bottom: 3px;
|
||||
}
|
||||
|
||||
.updateItemURL {
|
||||
-moz-appearance: none;
|
||||
border: none;
|
||||
background-color: Window;
|
||||
}
|
||||
|
||||
.updateItemFromLabel {
|
||||
padding-top: 2px;
|
||||
}
|
||||
|
||||
.updateItemIcon {
|
||||
list-style-image: url("chrome://mozapps/skin/xpinstall/xpinstallItemGeneric.png");
|
||||
}
|
||||
|
||||
.updateItemChecked {
|
||||
margin: 20px 0px 3px 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.updateItemChecked .checkbox-label-box {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Update Wizard */
|
||||
#alert {
|
||||
list-style-image: url("chrome://mozapps/skin/update/update.png");
|
||||
}
|
||||
|
||||
/* Inline Update Notifications */
|
||||
toolbarbutton[type="updates"] {
|
||||
padding: 0px;
|
||||
-moz-appearance: none;
|
||||
border: none;
|
||||
}
|
||||
toolbarbutton[type="updates"][updateCount="0"] {
|
||||
visibility: collapse;
|
||||
}
|
||||
toolbarbutton[type="updates"] > .toolbarbutton-icon {
|
||||
list-style-image: url("chrome://mozapps/skin/update/extensionalert.png");
|
||||
-moz-image-region: rect(0px 16px 16px 0px);
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin: 0px 2px;
|
||||
}
|
||||
toolbarbutton[type="updates"][severity="0"] > .toolbarbutton-icon {
|
||||
-moz-image-region: rect(0px 16px 16px 0px);
|
||||
}
|
||||
toolbarbutton[type="updates"][severity="1"] > .toolbarbutton-icon {
|
||||
-moz-image-region: rect(0px 32px 16px 16px);
|
||||
}
|
||||
toolbarbutton[type="updates"][severity="2"] > .toolbarbutton-icon {
|
||||
-moz-image-region: rect(0px 48px 16px 32px);
|
||||
}
|
||||
|
||||
.throbber {
|
||||
list-style-image: url("chrome://global/skin/throbber/Throbber-small.gif");
|
||||
width: 16px;
|
||||
|
@ -106,77 +20,3 @@ toolbarbutton[type="updates"][severity="2"] > .toolbarbutton-icon {
|
|||
margin-right: 3px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
/* Updates View */
|
||||
|
||||
radio[type="update-type"] {
|
||||
margin: 2px;
|
||||
-moz-appearance: none;
|
||||
}
|
||||
|
||||
.updateCategoryBox {
|
||||
background-color: #DFDFDF;
|
||||
padding: 3px;
|
||||
-moz-appearance: radio-container;
|
||||
}
|
||||
|
||||
.updateCategoryContent {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.updateCategoryLabel[selected="true"] {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.updateCategoryIcon {
|
||||
|
||||
}
|
||||
|
||||
radiogroup[type="update-types"] {
|
||||
-moz-appearance: listbox;
|
||||
margin: 2px 4px;
|
||||
border: 2px solid;
|
||||
-moz-border-top-colors: ThreeDShadow ThreeDDarkShadow;
|
||||
-moz-border-right-colors: ThreeDHighlight ThreeDLightShadow;
|
||||
-moz-border-bottom-colors: ThreeDHighlight ThreeDLightShadow;
|
||||
-moz-border-left-colors: ThreeDShadow ThreeDDarkShadow;
|
||||
background-color: -moz-Field;
|
||||
color: -moz-FieldText;
|
||||
}
|
||||
|
||||
radio[type="update-type"][selected="true"] .updateCategoryBox {
|
||||
background-color: #C0C0C0;
|
||||
}
|
||||
|
||||
.foundSource {
|
||||
border-bottom: 1px dotted #000000;
|
||||
color: #000000;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
link {
|
||||
text-decoration: underline !important;
|
||||
color: #0000FF;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
link:active {
|
||||
color: #FF0000;
|
||||
}
|
||||
|
||||
.updateCategoryContent {
|
||||
-moz-margin-start: 12px;
|
||||
}
|
||||
|
||||
#optionalItemsList {
|
||||
-moz-appearance: listbox;
|
||||
margin: 2px 4px;
|
||||
border: 2px solid;
|
||||
-moz-border-top-colors: ThreeDShadow ThreeDDarkShadow;
|
||||
-moz-border-right-colors: ThreeDHighlight ThreeDLightShadow;
|
||||
-moz-border-bottom-colors: ThreeDHighlight ThreeDLightShadow;
|
||||
-moz-border-left-colors: ThreeDShadow ThreeDDarkShadow;
|
||||
background-color: -moz-Field;
|
||||
color: -moz-FieldText;
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче