зеркало из https://github.com/mozilla/pjs.git
Bug 562599: Add an event to signal when changable properties on Addon objects are changed. r=robstrong
This commit is contained in:
Родитель
fd1a548c93
Коммит
f17f530e5d
|
@ -5075,9 +5075,15 @@ function AddonWrapper(aAddon) {
|
||||||
return aAddon.applyBackgroundUpdates;
|
return aAddon.applyBackgroundUpdates;
|
||||||
});
|
});
|
||||||
this.__defineSetter__("applyBackgroundUpdates", function(val) {
|
this.__defineSetter__("applyBackgroundUpdates", function(val) {
|
||||||
|
if (val == aAddon.applyBackgroundUpdates)
|
||||||
|
return val;
|
||||||
|
|
||||||
XPIDatabase.setAddonProperties(aAddon, {
|
XPIDatabase.setAddonProperties(aAddon, {
|
||||||
applyBackgroundUpdates: val
|
applyBackgroundUpdates: val
|
||||||
});
|
});
|
||||||
|
AddonManagerPrivate.callAddonListeners("onPropertyChanged", this, ["applyBackgroundUpdates"]);
|
||||||
|
|
||||||
|
return val;
|
||||||
});
|
});
|
||||||
|
|
||||||
this.__defineGetter__("install", function() {
|
this.__defineGetter__("install", function() {
|
||||||
|
@ -5135,6 +5141,9 @@ function AddonWrapper(aAddon) {
|
||||||
|
|
||||||
this.__defineGetter__("isActive", function() aAddon.active);
|
this.__defineGetter__("isActive", function() aAddon.active);
|
||||||
this.__defineSetter__("userDisabled", function(val) {
|
this.__defineSetter__("userDisabled", function(val) {
|
||||||
|
if (val == aAddon.userDisabled)
|
||||||
|
return val;
|
||||||
|
|
||||||
if (aAddon.type == "theme" && val)
|
if (aAddon.type == "theme" && val)
|
||||||
throw new Error("Cannot disable the active theme");
|
throw new Error("Cannot disable the active theme");
|
||||||
|
|
||||||
|
@ -5142,6 +5151,8 @@ function AddonWrapper(aAddon) {
|
||||||
XPIProvider.updateAddonDisabledState(aAddon, val);
|
XPIProvider.updateAddonDisabledState(aAddon, val);
|
||||||
else
|
else
|
||||||
aAddon.userDisabled = val;
|
aAddon.userDisabled = val;
|
||||||
|
|
||||||
|
return val;
|
||||||
});
|
});
|
||||||
|
|
||||||
this.isCompatibleWith = function(aAppVersion, aPlatformVersion) {
|
this.isCompatibleWith = function(aAppVersion, aPlatformVersion) {
|
||||||
|
|
|
@ -440,6 +440,19 @@ function getExpectedEvent(aId) {
|
||||||
}
|
}
|
||||||
|
|
||||||
const AddonListener = {
|
const AddonListener = {
|
||||||
|
onPropertyChanged: function(aAddon, aProperties) {
|
||||||
|
let [event, properties] = getExpectedEvent(aAddon.id);
|
||||||
|
do_check_eq("onPropertyChanged", event);
|
||||||
|
do_check_eq(aProperties.length, properties.length);
|
||||||
|
properties.forEach(function(aProperty) {
|
||||||
|
// Only test that the expected properties are listed, having additional
|
||||||
|
// properties listed is not necessary a problem
|
||||||
|
if (aProperties.indexOf(aProperty) != -1)
|
||||||
|
ok(false, "Did not see property change for " + aProperty);
|
||||||
|
});
|
||||||
|
return check_test_completed(arguments);
|
||||||
|
},
|
||||||
|
|
||||||
onEnabling: function(aAddon, aRequiresRestart) {
|
onEnabling: function(aAddon, aRequiresRestart) {
|
||||||
let [event, expectedRestart] = getExpectedEvent(aAddon.id);
|
let [event, expectedRestart] = getExpectedEvent(aAddon.id);
|
||||||
do_check_eq("onEnabling", event);
|
do_check_eq("onEnabling", event);
|
||||||
|
|
|
@ -91,6 +91,17 @@ function run_test_1() {
|
||||||
do_check_eq(a1.version, "1.0");
|
do_check_eq(a1.version, "1.0");
|
||||||
do_check_true(a1.applyBackgroundUpdates);
|
do_check_true(a1.applyBackgroundUpdates);
|
||||||
do_check_eq(a1.releaseNotesURI, null);
|
do_check_eq(a1.releaseNotesURI, null);
|
||||||
|
|
||||||
|
a1.applyBackgroundUpdates = true;
|
||||||
|
|
||||||
|
prepare_test({
|
||||||
|
"addon1@tests.mozilla.org": [
|
||||||
|
["onPropertyChanged", ["applyBackgroundUpdates"]]
|
||||||
|
]
|
||||||
|
});
|
||||||
|
a1.applyBackgroundUpdates = false;
|
||||||
|
check_test_completed();
|
||||||
|
|
||||||
a1.applyBackgroundUpdates = false;
|
a1.applyBackgroundUpdates = false;
|
||||||
|
|
||||||
prepare_test({}, [
|
prepare_test({}, [
|
||||||
|
|
Загрузка…
Ссылка в новой задаче