diff --git a/toolkit/content/widgets/videocontrols.css b/toolkit/content/widgets/videocontrols.css index 75b5a8ab286b..d100682df41f 100644 --- a/toolkit/content/widgets/videocontrols.css +++ b/toolkit/content/widgets/videocontrols.css @@ -20,6 +20,7 @@ .mediaControlsFrame { direction: ltr; /* Prevent unwanted style inheritance. See bug 554717. */ + text-align: left; list-style-image: none !important; font: normal normal normal 100%/normal sans-serif !important; text-decoration: none !important; diff --git a/toolkit/mozapps/extensions/AddonRepository.jsm b/toolkit/mozapps/extensions/AddonRepository.jsm index c33eb2244b0a..11573851fcfc 100644 --- a/toolkit/mozapps/extensions/AddonRepository.jsm +++ b/toolkit/mozapps/extensions/AddonRepository.jsm @@ -1257,8 +1257,10 @@ var AddonRepository = { // Parses addon_compatibility nodes, that describe compatibility overrides. _parseAddonCompatElement: function(aResultObj, aElement) { let guid = this._getDescendantTextContent(aElement, "guid"); - if (!guid) + if (!guid) { + LOG("Compatibility override is missing guid."); return; + } let compat = {id: guid}; compat.hosted = aElement.getAttribute("hosted") != "false"; @@ -1292,21 +1294,31 @@ var AddonRepository = { function parseRangeNode(aNode) { let type = aNode.getAttribute("type"); // Only "incompatible" (blacklisting) is supported for now. - if (type != "incompatible") + if (type != "incompatible") { + LOG("Compatibility override of unsupported type found."); return null; + } let override = new AddonManagerPrivate.AddonCompatibilityOverride(type); override.minVersion = this._getDirectDescendantTextContent(aNode, "min_version"); override.maxVersion = this._getDirectDescendantTextContent(aNode, "max_version"); - if (!override.minVersion || !override.maxVersion) + if (!override.minVersion) { + LOG("Compatibility override is missing min_version."); return null; + } + if (!override.maxVersion) { + LOG("Compatibility override is missing max_version."); + return null; + } let appRanges = aNode.querySelectorAll("compatible_applications > application"); let appRange = findMatchingAppRange.bind(this)(appRanges); - if (!appRange) + if (!appRange) { + LOG("Compatibility override is missing a valid application range."); return null; + } override.appID = appRange.appID; override.appMinVersion = appRange.appMinVersion; diff --git a/toolkit/mozapps/extensions/XPIProvider.jsm b/toolkit/mozapps/extensions/XPIProvider.jsm index 0288121449d1..530add649a09 100644 --- a/toolkit/mozapps/extensions/XPIProvider.jsm +++ b/toolkit/mozapps/extensions/XPIProvider.jsm @@ -6148,6 +6148,7 @@ AddonInstall.prototype = { if (aRepoAddon) { aAddon._repositoryAddon = aRepoAddon; aAddon.compatibilityOverrides = aRepoAddon.compatibilityOverrides; + aAddon.appDisabled = !isUsableAddon(aAddon); aCallback(); return; } @@ -6159,6 +6160,7 @@ AddonInstall.prototype = { aAddon.compatibilityOverrides = aRepoAddon ? aRepoAddon.compatibilityOverrides : null; + aAddon.appDisabled = !isUsableAddon(aAddon); aCallback(); }); }); diff --git a/toolkit/mozapps/extensions/test/addons/test_install6/install.rdf b/toolkit/mozapps/extensions/test/addons/test_install6/install.rdf new file mode 100644 index 000000000000..b1f97c1fd47a --- /dev/null +++ b/toolkit/mozapps/extensions/test/addons/test_install6/install.rdf @@ -0,0 +1,24 @@ + + + + + + + addon6@tests.mozilla.org + 1.0 + + + Addon Test 6 + Test Description + + + + xpcshell@tests.mozilla.org + 1 + 1 + + + + + diff --git a/toolkit/mozapps/extensions/test/xpcshell/data/test_install.xml b/toolkit/mozapps/extensions/test/xpcshell/data/test_install.xml index 7c47f8a42bf4..33f14a2fdcff 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/data/test_install.xml +++ b/toolkit/mozapps/extensions/test/xpcshell/data/test_install.xml @@ -31,4 +31,23 @@ ALL http://example.com/browser/toolkit/mozapps/extensions/test/browser/addons/browser_install1_2.xpi + + + addon6@tests.mozilla.org + Addon Test 6 + + + 1.0 + 1.0 + + + XPCShell + 1.0 + 1.0 + xpcshell@tests.mozilla.org + + + + + diff --git a/toolkit/mozapps/extensions/test/xpcshell/test_install.js b/toolkit/mozapps/extensions/test/xpcshell/test_install.js index 21283692f8f4..bcc153a673a0 100644 --- a/toolkit/mozapps/extensions/test/xpcshell/test_install.js +++ b/toolkit/mozapps/extensions/test/xpcshell/test_install.js @@ -1678,7 +1678,52 @@ function check_test_28(install) { function finish_test_28(install) { prepare_test({}, [ "onDownloadCancelled" - ], do_test_finished); + ], run_test_29); install.cancel(); } + +// Tests that an install with a matching compatibility override has appDisabled +// set correctly. +function run_test_29() { + Services.prefs.setBoolPref("extensions.getAddons.cache.enabled", true); + + prepare_test({ }, [ + "onNewInstall" + ]); + + let url = "http://localhost:4444/addons/test_install6.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, "Addon Test 6"); + 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" + ], check_test_29); + install.install(); + }); + }, "application/x-xpinstall", null, "Addon Test 6", null, "1.0"); +} + +function check_test_29(install) { + //ensure_test_completed(); + do_check_eq(install.state, AddonManager.STATE_DOWNLOADED); + do_check_neq(install.addon, null); + do_check_false(install.addon.isCompatible); + do_check_true(install.addon.appDisabled); + + prepare_test({}, [ + "onDownloadCancelled" + ], do_test_finished); + install.cancel(); + return false; +}