2
|
1 const Cc = Components.classes;
|
|
2 const Ci = Components.interfaces;
|
|
3
|
|
4 var gOS = null;
|
|
5
|
|
6 var observer = {
|
|
7 observe: function(subject, topic, data) {
|
|
8 window.focus();
|
|
9 }
|
|
10 }
|
|
11
|
|
12 function init() {
|
|
13 var bundle = document.getElementById("bundle");
|
|
14 setLabelForButton(document.documentElement.getButton("accept"), bundle.getString("Yes"));
|
|
15 setLabelForButton(document.documentElement.getButton("cancel"), bundle.getString("No"));
|
|
16
|
|
17 gOS = Cc["@mozilla.org/observer-service;1"].
|
|
18 getService(Ci.nsIObserverService);
|
|
19 gOS.addObserver(observer, "xul-window-visible", false);
|
|
20 }
|
|
21
|
|
22 function unload() {
|
|
23 gOS.removeObserver(observer, "xul-window-visible");
|
|
24 gOS = null;
|
|
25 }
|
|
26
|
|
27 function setLabelForButton(button, label)
|
|
28 {
|
|
29 var accessKey = null;
|
|
30 if (/ *\(\&([^&])\)(:)?$/.test(label)) {
|
|
31 label = RegExp.leftContext + RegExp.$2;
|
|
32 accessKey = RegExp.$1;
|
|
33 } else if (/^(.*[^&])?\&(([^&]).*$)/.test(label)) {
|
|
34 label = RegExp.$1 + RegExp.$2;
|
|
35 accessKey = RegExp.$3;
|
|
36 }
|
|
37 // && is the magic sequence to embed an & in your label.
|
|
38 label = label.replace(/\&\&/g, "&");
|
|
39 button.label = label;
|
|
40 if (accessKey)
|
|
41 button.accessKey = accessKey;
|
|
42 }
|
|
43
|
|
44 function accept() {
|
|
45 var cs = Cc["@oxymoronical.com/nightly/addoncompatibility;1"].
|
|
46 createInstance(Ci.nttIAddonCompatibilityService);
|
|
47 var em = Cc["@mozilla.org/extensions/manager;1"].
|
|
48 getService(Ci.nsIExtensionManager);
|
|
49 var items = em.getItemList(Ci.nsIUpdateItem.TYPE_ADDON, {});
|
|
50 for (var i = 0; i < items.length; i++) {
|
|
51 var addon = cs.getAddonForID(items[i].id);
|
|
52 if (!addon.isValid())
|
|
53 continue;
|
|
54 if (!addon.needsOverride(false) && addon.needsOverride(true))
|
|
55 addon.overrideCompatibility(true);
|
|
56 }
|
|
57
|
|
58 var prefs = Cc["@mozilla.org/preferences-service;1"].
|
|
59 getService(Ci.nsIPrefBranch);
|
|
60 if (prefs.prefHasUserValue("extensions.checkCompatibility"))
|
|
61 prefs.clearUserPref("extensions.checkCompatibility");
|
|
62 if (prefs.prefHasUserValue("extensions.checkUpdateSecurity"))
|
|
63 prefs.clearUserPref("extensions.checkUpdateSecurity");
|
|
64 }
|