зеркало из https://github.com/mozilla/pjs.git
Bug 702868 - AddonInternal.hasBinaryComponents doesn't affect AddonInternal.appDisabled until after initial install. r=dtownsend
This commit is contained in:
Родитель
b6f0e4cace
Коммит
d87e8494fb
|
@ -809,8 +809,6 @@ function loadManifestFromRDF(aUri, aStream) {
|
||||||
addon.softDisabled = addon.blocklistState == Ci.nsIBlocklistService.STATE_SOFTBLOCKED;
|
addon.softDisabled = addon.blocklistState == Ci.nsIBlocklistService.STATE_SOFTBLOCKED;
|
||||||
}
|
}
|
||||||
|
|
||||||
addon.appDisabled = !isUsableAddon(addon);
|
|
||||||
|
|
||||||
addon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DEFAULT;
|
addon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DEFAULT;
|
||||||
|
|
||||||
return addon;
|
return addon;
|
||||||
|
@ -865,6 +863,7 @@ function loadManifestFromDir(aDir) {
|
||||||
addon.hasBinaryComponents = ChromeManifestParser.hasType(chromeManifest,
|
addon.hasBinaryComponents = ChromeManifestParser.hasType(chromeManifest,
|
||||||
"binary-component");
|
"binary-component");
|
||||||
|
|
||||||
|
addon.appDisabled = !isUsableAddon(addon);
|
||||||
return addon;
|
return addon;
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
|
@ -907,6 +906,7 @@ function loadManifestFromZipReader(aZipReader) {
|
||||||
addon.hasBinaryComponents = false;
|
addon.hasBinaryComponents = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addon.appDisabled = !isUsableAddon(addon);
|
||||||
return addon;
|
return addon;
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
binary-component components/mycomponent.so
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0"?>
|
||||||
|
|
||||||
|
<!-- An extension that is incompatible with the XPCShell test suite and
|
||||||
|
has binary components, so won't be compatible-by-default. -->
|
||||||
|
<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:em="http://www.mozilla.org/2004/em-rdf#">
|
||||||
|
|
||||||
|
<Description about="urn:mozilla:install-manifest">
|
||||||
|
<em:id>addon5@tests.mozilla.org</em:id>
|
||||||
|
<em:version>1.0</em:version>
|
||||||
|
|
||||||
|
<!-- Front End MetaData -->
|
||||||
|
<em:name>Real Test 5</em:name>
|
||||||
|
<em:description>Test Description</em:description>
|
||||||
|
<em:unpack>true</em:unpack>
|
||||||
|
|
||||||
|
<em:targetApplication>
|
||||||
|
<Description>
|
||||||
|
<em:id>xpcshell@tests.mozilla.org</em:id>
|
||||||
|
<em:minVersion>0</em:minVersion>
|
||||||
|
<em:maxVersion>0</em:maxVersion>
|
||||||
|
</Description>
|
||||||
|
</em:targetApplication>
|
||||||
|
|
||||||
|
</Description>
|
||||||
|
</RDF>
|
|
@ -842,7 +842,11 @@ const InstallListener = {
|
||||||
},
|
},
|
||||||
|
|
||||||
onInstallCancelled: function(install) {
|
onInstallCancelled: function(install) {
|
||||||
do_check_eq(install.state, AddonManager.STATE_CANCELLED);
|
// If the install was cancelled by a listener returning false from
|
||||||
|
// onInstallStarted, then the state will revert to STATE_DOWNLOADED.
|
||||||
|
let possibleStates = [AddonManager.STATE_CANCELLED,
|
||||||
|
AddonManager.STATE_DOWNLOADED];
|
||||||
|
do_check_true(possibleStates.indexOf(install.state) != -1);
|
||||||
do_check_eq(install.error, 0);
|
do_check_eq(install.error, 0);
|
||||||
do_check_eq("onInstallCancelled", getExpectedInstall(install.addon));
|
do_check_eq("onInstallCancelled", getExpectedInstall(install.addon));
|
||||||
return check_test_completed(arguments);
|
return check_test_completed(arguments);
|
||||||
|
|
|
@ -1618,5 +1618,58 @@ function finish_test_27(aInstall) {
|
||||||
|
|
||||||
ensure_test_completed();
|
ensure_test_completed();
|
||||||
|
|
||||||
do_test_finished();
|
run_test_28();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Tests that an install that isn't strictly compatible and has
|
||||||
|
// binary components correctly has appDisabled set (see bug 702868).
|
||||||
|
function run_test_28() {
|
||||||
|
prepare_test({ }, [
|
||||||
|
"onNewInstall"
|
||||||
|
]);
|
||||||
|
|
||||||
|
let url = "http://localhost:4444/addons/test_install5.xpi";
|
||||||
|
AddonManager.getInstallForURL(url, function(install) {
|
||||||
|
ensure_test_completed();
|
||||||
|
|
||||||
|
do_check_neq(install, null);
|
||||||
|
do_check_eq(install.version, "1.0");
|
||||||
|
do_check_eq(install.name, "Real Test 5");
|
||||||
|
do_check_eq(install.state, AddonManager.STATE_AVAILABLE);
|
||||||
|
|
||||||
|
AddonManager.getInstallsByTypes(null, function(activeInstalls) {
|
||||||
|
do_check_eq(activeInstalls.length, 1);
|
||||||
|
do_check_eq(activeInstalls[0], install);
|
||||||
|
|
||||||
|
prepare_test({}, [
|
||||||
|
"onDownloadStarted",
|
||||||
|
"onDownloadEnded",
|
||||||
|
"onInstallStarted"
|
||||||
|
], check_test_28);
|
||||||
|
install.install();
|
||||||
|
});
|
||||||
|
}, "application/x-xpinstall", null, "Real Test 5", null, "1.0");
|
||||||
|
}
|
||||||
|
|
||||||
|
function check_test_28(install) {
|
||||||
|
ensure_test_completed();
|
||||||
|
do_check_eq(install.version, "1.0");
|
||||||
|
do_check_eq(install.name, "Real Test 5");
|
||||||
|
do_check_eq(install.state, AddonManager.STATE_INSTALLING);
|
||||||
|
do_check_eq(install.existingAddon, null);
|
||||||
|
do_check_false(install.addon.isCompatible);
|
||||||
|
do_check_true(install.addon.appDisabled);
|
||||||
|
|
||||||
|
prepare_test({}, [
|
||||||
|
"onInstallCancelled"
|
||||||
|
], finish_test_28);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function finish_test_28(install) {
|
||||||
|
prepare_test({}, [
|
||||||
|
"onDownloadCancelled"
|
||||||
|
], do_test_finished);
|
||||||
|
|
||||||
|
install.cancel();
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче