summaryrefslogtreecommitdiffstats
path: root/toolkit/modules/tests/xpcshell/test_UpdateUtils_url.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/modules/tests/xpcshell/test_UpdateUtils_url.js')
-rw-r--r--toolkit/modules/tests/xpcshell/test_UpdateUtils_url.js292
1 files changed, 0 insertions, 292 deletions
diff --git a/toolkit/modules/tests/xpcshell/test_UpdateUtils_url.js b/toolkit/modules/tests/xpcshell/test_UpdateUtils_url.js
deleted file mode 100644
index da5d868e3..000000000
--- a/toolkit/modules/tests/xpcshell/test_UpdateUtils_url.js
+++ /dev/null
@@ -1,292 +0,0 @@
-/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-var { classes: Cc, interfaces: Ci, utils: Cu } = Components;
-
-Cu.import("resource://gre/modules/UpdateUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-Cu.import("resource://gre/modules/AppConstants.jsm");
-Cu.import("resource://testing-common/AppInfo.jsm");
-Cu.import("resource://gre/modules/ctypes.jsm");
-
-const PREF_APP_UPDATE_CHANNEL = "app.update.channel";
-const PREF_APP_PARTNER_BRANCH = "app.partner.";
-const PREF_DISTRIBUTION_ID = "distribution.id";
-const PREF_DISTRIBUTION_VERSION = "distribution.version";
-
-const URL_PREFIX = "http://localhost/";
-
-const MSG_SHOULD_EQUAL = " should equal the expected value";
-
-updateAppInfo();
-const gAppInfo = getAppInfo();
-const gDefaultPrefBranch = Services.prefs.getDefaultBranch(null);
-
-function setUpdateChannel(aChannel) {
- gDefaultPrefBranch.setCharPref(PREF_APP_UPDATE_CHANNEL, aChannel);
-}
-
-function getServicePack() {
- // NOTE: This function is a helper function and not a test. Thus,
- // it uses throw() instead of do_throw(). Any tests that use this function
- // should catch exceptions thrown in this function and deal with them
- // appropriately (usually by calling do_throw).
- const BYTE = ctypes.uint8_t;
- const WORD = ctypes.uint16_t;
- const DWORD = ctypes.uint32_t;
- const WCHAR = ctypes.char16_t;
- const BOOL = ctypes.int;
-
- // This structure is described at:
- // http://msdn.microsoft.com/en-us/library/ms724833%28v=vs.85%29.aspx
- const SZCSDVERSIONLENGTH = 128;
- const OSVERSIONINFOEXW = new ctypes.StructType('OSVERSIONINFOEXW',
- [
- {dwOSVersionInfoSize: DWORD},
- {dwMajorVersion: DWORD},
- {dwMinorVersion: DWORD},
- {dwBuildNumber: DWORD},
- {dwPlatformId: DWORD},
- {szCSDVersion: ctypes.ArrayType(WCHAR, SZCSDVERSIONLENGTH)},
- {wServicePackMajor: WORD},
- {wServicePackMinor: WORD},
- {wSuiteMask: WORD},
- {wProductType: BYTE},
- {wReserved: BYTE}
- ]);
-
- let kernel32 = ctypes.open("kernel32");
- try {
- let GetVersionEx = kernel32.declare("GetVersionExW",
- ctypes.default_abi,
- BOOL,
- OSVERSIONINFOEXW.ptr);
- let winVer = OSVERSIONINFOEXW();
- winVer.dwOSVersionInfoSize = OSVERSIONINFOEXW.size;
-
- if (0 === GetVersionEx(winVer.address())) {
- // Using "throw" instead of "do_throw" (see NOTE above)
- throw ("Failure in GetVersionEx (returned 0)");
- }
-
- return winVer.wServicePackMajor + "." + winVer.wServicePackMinor;
- } finally {
- kernel32.close();
- }
-}
-
-function getProcArchitecture() {
- // NOTE: This function is a helper function and not a test. Thus,
- // it uses throw() instead of do_throw(). Any tests that use this function
- // should catch exceptions thrown in this function and deal with them
- // appropriately (usually by calling do_throw).
- const WORD = ctypes.uint16_t;
- const DWORD = ctypes.uint32_t;
-
- // This structure is described at:
- // http://msdn.microsoft.com/en-us/library/ms724958%28v=vs.85%29.aspx
- const SYSTEM_INFO = new ctypes.StructType('SYSTEM_INFO',
- [
- {wProcessorArchitecture: WORD},
- {wReserved: WORD},
- {dwPageSize: DWORD},
- {lpMinimumApplicationAddress: ctypes.voidptr_t},
- {lpMaximumApplicationAddress: ctypes.voidptr_t},
- {dwActiveProcessorMask: DWORD.ptr},
- {dwNumberOfProcessors: DWORD},
- {dwProcessorType: DWORD},
- {dwAllocationGranularity: DWORD},
- {wProcessorLevel: WORD},
- {wProcessorRevision: WORD}
- ]);
-
- let kernel32 = ctypes.open("kernel32");
- try {
- let GetNativeSystemInfo = kernel32.declare("GetNativeSystemInfo",
- ctypes.default_abi,
- ctypes.void_t,
- SYSTEM_INFO.ptr);
- let sysInfo = SYSTEM_INFO();
- // Default to unknown
- sysInfo.wProcessorArchitecture = 0xffff;
-
- GetNativeSystemInfo(sysInfo.address());
- switch (sysInfo.wProcessorArchitecture) {
- case 9:
- return "x64";
- case 6:
- return "IA64";
- case 0:
- return "x86";
- default:
- // Using "throw" instead of "do_throw" (see NOTE above)
- throw ("Unknown architecture returned from GetNativeSystemInfo: " + sysInfo.wProcessorArchitecture);
- }
- } finally {
- kernel32.close();
- }
-}
-
-// Helper function for formatting a url and getting the result we're
-// interested in
-function getResult(url) {
- url = UpdateUtils.formatUpdateURL(url);
- return url.substr(URL_PREFIX.length).split("/")[0];
-}
-
-// url constructed with %PRODUCT%
-add_task(function* test_product() {
- let url = URL_PREFIX + "%PRODUCT%/";
- Assert.equal(getResult(url), gAppInfo.name,
- "the url param for %PRODUCT%" + MSG_SHOULD_EQUAL);
-});
-
-// url constructed with %VERSION%
-add_task(function* test_version() {
- let url = URL_PREFIX + "%VERSION%/";
- Assert.equal(getResult(url), gAppInfo.version,
- "the url param for %VERSION%" + MSG_SHOULD_EQUAL);
-});
-
-// url constructed with %BUILD_ID%
-add_task(function* test_build_id() {
- let url = URL_PREFIX + "%BUILD_ID%/";
- Assert.equal(getResult(url), gAppInfo.appBuildID,
- "the url param for %BUILD_ID%" + MSG_SHOULD_EQUAL);
-});
-
-// url constructed with %BUILD_TARGET%
-// XXX TODO - it might be nice if we tested the actual ABI
-add_task(function* test_build_target() {
- let url = URL_PREFIX + "%BUILD_TARGET%/";
-
- let abi;
- try {
- abi = gAppInfo.XPCOMABI;
- } catch (e) {
- do_throw("nsIXULAppInfo:XPCOMABI not defined\n");
- }
-
- if (AppConstants.platform == "macosx") {
- // Mac universal build should report a different ABI than either macppc
- // or mactel. This is necessary since nsUpdateService.js will set the ABI to
- // Universal-gcc3 for Mac universal builds.
- let macutils = Cc["@mozilla.org/xpcom/mac-utils;1"].
- getService(Ci.nsIMacUtils);
-
- if (macutils.isUniversalBinary) {
- abi += "-u-" + macutils.architecturesInBinary;
- }
- } else if (AppConstants.platform == "win") {
- // Windows build should report the CPU architecture that it's running on.
- abi += "-" + getProcArchitecture();
- }
-
- Assert.equal(getResult(url), gAppInfo.OS + "_" + abi,
- "the url param for %BUILD_TARGET%" + MSG_SHOULD_EQUAL);
-});
-
-// url constructed with %LOCALE%
-// Bug 488936 added the update.locale file that stores the update locale
-add_task(function* test_locale() {
- // The code that gets the locale accesses the profile which is only available
- // after calling do_get_profile in xpcshell tests. This prevents an error from
- // being logged.
- do_get_profile();
-
- let url = URL_PREFIX + "%LOCALE%/";
- Assert.equal(getResult(url), AppConstants.INSTALL_LOCALE,
- "the url param for %LOCALE%" + MSG_SHOULD_EQUAL);
-});
-
-// url constructed with %CHANNEL%
-add_task(function* test_channel() {
- let url = URL_PREFIX + "%CHANNEL%/";
- setUpdateChannel("test_channel");
- Assert.equal(getResult(url), "test_channel",
- "the url param for %CHANNEL%" + MSG_SHOULD_EQUAL);
-});
-
-// url constructed with %CHANNEL% with distribution partners
-add_task(function* test_channel_distribution() {
- let url = URL_PREFIX + "%CHANNEL%/";
- gDefaultPrefBranch.setCharPref(PREF_APP_PARTNER_BRANCH + "test_partner1",
- "test_partner1");
- gDefaultPrefBranch.setCharPref(PREF_APP_PARTNER_BRANCH + "test_partner2",
- "test_partner2");
- Assert.equal(getResult(url),
- "test_channel-cck-test_partner1-test_partner2",
- "the url param for %CHANNEL%" + MSG_SHOULD_EQUAL);
-});
-
-// url constructed with %PLATFORM_VERSION%
-add_task(function* test_platform_version() {
- let url = URL_PREFIX + "%PLATFORM_VERSION%/";
- Assert.equal(getResult(url), gAppInfo.platformVersion,
- "the url param for %PLATFORM_VERSION%" + MSG_SHOULD_EQUAL);
-});
-
-// url constructed with %OS_VERSION%
-add_task(function* test_os_version() {
- let url = URL_PREFIX + "%OS_VERSION%/";
- let osVersion;
- let sysInfo = Cc["@mozilla.org/system-info;1"].getService(Ci.nsIPropertyBag2);
- osVersion = sysInfo.getProperty("name") + " " + sysInfo.getProperty("version");
-
- if (AppConstants.platform == "win") {
- try {
- let servicePack = getServicePack();
- osVersion += "." + servicePack;
- } catch (e) {
- do_throw("Failure obtaining service pack: " + e);
- }
-
- if ("5.0" === sysInfo.getProperty("version")) { // Win2K
- osVersion += " (unknown)";
- } else {
- try {
- osVersion += " (" + getProcArchitecture() + ")";
- } catch (e) {
- do_throw("Failed to obtain processor architecture: " + e);
- }
- }
- }
-
- if (osVersion) {
- try {
- osVersion += " (" + sysInfo.getProperty("secondaryLibrary") + ")";
- } catch (e) {
- // Not all platforms have a secondary widget library, so an error is
- // nothing to worry about.
- }
- osVersion = encodeURIComponent(osVersion);
- }
-
- Assert.equal(getResult(url), osVersion,
- "the url param for %OS_VERSION%" + MSG_SHOULD_EQUAL);
-});
-
-// url constructed with %DISTRIBUTION%
-add_task(function* test_distribution() {
- let url = URL_PREFIX + "%DISTRIBUTION%/";
- gDefaultPrefBranch.setCharPref(PREF_DISTRIBUTION_ID, "test_distro");
- Assert.equal(getResult(url), "test_distro",
- "the url param for %DISTRIBUTION%" + MSG_SHOULD_EQUAL);
-});
-
-// url constructed with %DISTRIBUTION_VERSION%
-add_task(function* test_distribution_version() {
- let url = URL_PREFIX + "%DISTRIBUTION_VERSION%/";
- gDefaultPrefBranch.setCharPref(PREF_DISTRIBUTION_VERSION, "test_distro_version");
- Assert.equal(getResult(url), "test_distro_version",
- "the url param for %DISTRIBUTION_VERSION%" + MSG_SHOULD_EQUAL);
-});
-
-add_task(function* test_custom() {
- Services.prefs.setCharPref("app.update.custom", "custom");
- let url = URL_PREFIX + "%CUSTOM%/";
- Assert.equal(getResult(url), "custom",
- "the url query string for %CUSTOM%" + MSG_SHOULD_EQUAL);
-});