gecko-dev/testing/sisyphus/tests/mozilla.org/download-page/userhook.js

413 строки
10 KiB
JavaScript

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
function userOnStart()
{
dlog('userOnStart()');
debugger;
loadBundle('chrome://browser-region/locale/region.properties');
loadBundle('chrome://branding/content/searchconfig.properties');
loadBundle('resource:/browserconfig.properties');
}
function userOnBeforePage()
{
dlog('userOnBeforePage()');
}
function userOnPause()
{
dlog('userOnPause()');
}
function userOnAfterPage()
{
dlog('userOnAfterPage()');
var win = gSpider.mDocument.defaultView;
if (win.wrappedJSObject)
{
win = win.wrappedJSObject;
}
cdump('win.location.href =' + win.location.href);
cdump('win.appInfo.toSource() = ' + win.appInfo.toSource());
var xmlhttp = new XMLHttpRequest();
var date = new Date();
if (!('toLocalFormat' in Date.prototype))
{
date.toLocaleFormat = function(fmt) {
var year = this.getFullYear().toString();
var mon = (this.getMonth() + 1).toString()
var day = (this.getDate()).toString();
if (mon.length < 2)
{
mon = '0' + mon;
}
if (day.length < 2)
{
day = '0' + day;
}
return year + mon + day;
};
}
xmlhttp.open('get', 'http://test.mozilla.com/credentials/builds.xml', false);
xmlhttp.send(null);
if (!xmlhttp.responseXML)
{
cdump('Unable to retrieve credentials');
gPageCompleted = true;
return;
}
var password = xmlhttp.responseXML.documentElement.getAttribute('password');
xmlhttp.open('post',
'http://bclary.com/log/2006/02/24/update/index.pl',
false,
'buildid',
password);
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
var preferencesList = [
'app.distributor',
'app.distributor.channel',
'app.releaseNotesURL',
'app.update.channel',
'app.update.url',
'app.update.url.details',
'app.update.url.manual',
'browser.contentHandlers.types.0.title',
'browser.contentHandlers.types.0.uri',
'browser.contentHandlers.types.1.title',
'browser.contentHandlers.types.1.uri',
'browser.contentHandlers.types.2.title',
'browser.contentHandlers.types.2.uri',
'browser.search.defaultenginename',
'browser.search.order.1',
'browser.search.order.2',
'browser.search.order.3',
'browser.search.order.4',
'browser.search.order.5',
'browser.search.order.6',
'browser.search.order.7',
'browser.search.order.8',
'browser.search.order.Yahoo',
'browser.search.order.Yahoo.1',
'browser.search.order.Yahoo.2',
'browser.search.param.Google.1.custom',
'browser.search.param.Google.1.default',
'browser.search.param.Google.release',
'browser.search.param.Yahoo.release',
'browser.search.param.yahoo-f-CN',
'browser.search.param.yahoo-fr',
'browser.search.param.yahoo-fr-cjkt',
'browser.search.searchEnginesURL',
'browser.search.selectedEngine',
'browser.search.suggest.enabled',
'browser.search.useDBForOrder',
'browser.startup.homepage',
'keyword.URL',
'mozilla.partner.id',
'startup.homepage_override_url',
'startup.homepage_welcome_url'
];
var preferences = new Preferences('');
var data = {};
for (var i = 0; i < preferencesList.length; i++)
{
var prefName = preferencesList[i];
var prefValue = preferences.getPref(prefName);
if (/^(chrome:\/\/|resource:\/)/.test(prefValue))
{
debugger;
var override = getOverridePref(prefName, prefValue);
prefValue += '->' + override;
}
cdump('preference ' + prefName + '=' + prefValue);
data[prefName] = prefValue;
}
data['000 runDate'] = date.toLocaleFormat('%Y%c%d');
data['001 appInfo.vendor'] = win.appInfo.vendor;
data['002 appInfo.name'] = win.appInfo.name;
data['003 appInfo.version'] = win.appInfo.version;
data['004 appInfo.platformVersion'] = win.appInfo.platformVersion;
data['005 navigator.language'] = navigator.language;
data['006 navigator.platform'] = navigator.platform;
data['007 appInfo.platformBuildID'] = win.appInfo.platformBuildID;
data['008 appInfo.buildID'] = win.appInfo.appBuildID;
data['009 navigator.buildID'] = navigator.buildID;
data['010 appInfo.ID'] = win.appInfo.ID;
var qs = '';
for (var n in data)
{
qs += n + '=' + encodeURIComponent(data[n]) + '&';
}
qs = qs.substring(0, qs.length - 1);
cdump(qs);
xmlhttp.send(qs);
gPageCompleted = true;
}
function userOnStop()
{
dlog('userOnStop()');
}
function Preferences(aPrefRoot)
{
this.privs = 'UniversalXPConnect UniversalPreferencesRead UniversalPreferencesWrite';
if (typeof netscape != 'undefined' &&
'security' in netscape &&
'PrivilegeManager' in netscape.security &&
'enablePrivilege' in netscape.security.PrivilegeManager)
{
netscape.security.PrivilegeManager.enablePrivilege(this.privs);
}
const nsIPrefService = Components.interfaces.nsIPrefService;
const nsIPrefBranch = Components.interfaces.nsIPrefBranch;
const nsPrefService_CONTRACTID = "@mozilla.org/preferences-service;1";
this.prefRoot = aPrefRoot;
this.prefService = Components.classes[nsPrefService_CONTRACTID].getService(nsIPrefService);
this.prefBranch = this.prefService.getBranch(aPrefRoot).QueryInterface(Components.interfaces.nsIPrefBranch2);
}
function Preferences_getPrefRoot()
{
if (typeof netscape != 'undefined' &&
'security' in netscape &&
'PrivilegeManager' in netscape.security &&
'enablePrivilege' in netscape.security.PrivilegeManager)
{
netscape.security.PrivilegeManager.enablePrivilege(this.privs);
}
return this.prefBranch.root;
}
function Preferences_getPrefType(aPrefName)
{
if (typeof netscape != 'undefined' &&
'security' in netscape &&
'PrivilegeManager' in netscape.security &&
'enablePrivilege' in netscape.security.PrivilegeManager)
{
netscape.security.PrivilegeManager.enablePrivilege(this.privs);
}
return this.prefBranch.getPrefType(aPrefName);
}
function Preferences_getPref(aPrefName)
{
if (typeof netscape != 'undefined' &&
'security' in netscape &&
'PrivilegeManager' in netscape.security &&
'enablePrivilege' in netscape.security.PrivilegeManager)
{
netscape.security.PrivilegeManager.enablePrivilege(this.privs);
}
var prefType = this.prefBranch.getPrefType(aPrefName);
var value;
if (prefType == this.prefBranch.PREF_INVALID)
{
cdump('Preferences.prototype.getPref: ' + aPrefName + ' invalid type ' + prefType);
cdump('Assuming string');
prefType = this.prefBranch.PREF_STRING;
}
switch(prefType)
{
case this.prefBranch.PREF_STRING:
try
{
value = this.prefBranch.getCharPref(aPrefName);
}
catch(ex)
{
cdump('Ignoring ' + ex);
}
break;
case this.prefBranch.PREF_INT:
try
{
value = this.prefBranch.getIntPref(aPrefName);
}
catch(ex)
{
cdump('Ignoring ' + ex);
}
break;
case this.prefBranch.PREF_BOOL:
try
{ value = this.prefBranch.getBoolPref(aPrefName);
}
catch(ex)
{
cdump('Ignoring ' + ex);
}
break;
default:
cdump('Preferences.prototype.getPref: ' + aPrefName + ' unknown type ' + prefType);
break;
}
return value;
}
function Preferences_setPref(aPrefName, aPrefValue)
{
if (typeof netscape != 'undefined' &&
'security' in netscape &&
'PrivilegeManager' in netscape.security &&
'enablePrivilege' in netscape.security.PrivilegeManager)
{
netscape.security.PrivilegeManager.enablePrivilege(this.privs);
}
var prefType = this.getPrefType(aPrefName);
if (prefType == this.prefBranch.PREF_INVALID)
{
cdump('Preferences.prototype.getPref: ' + aPrefName + ' invalid type ' + prefType);
cdump('Assuming string');
prefType = this.prefBranch.PREF_STRING;
}
switch(prefType)
{
case this.prefBranch.PREF_INVALID:
cdump('Preferences.prototype.setPref: ' + aPrefName + ' invalid type ' + prefType);
break;
case this.prefBranch.PREF_STRING:
if (typeof aPrefValue != 'string')
{
cdump('Preferences.prototype.setPref: ' + aPrefName + ' invalid value for type string ' + aPrefValue);
}
else
{
try
{
value = this.prefBranch.setCharPref(aPrefName, aPrefValue);
}
catch(ex)
{
cdump('Ignoring ' + ex);
}
}
break;
case this.prefBranch.PREF_INT:
if (typeof aPrefValue != 'number')
{
cdump('Preferences.prototype.setPref: ' + aPrefName + ' invalid value for type number ' + aPrefValue);
}
else
{
try
{
value = this.prefBranch.setIntPref(aPrefName, aPrefValue);
}
catch(ex)
{
cdump('Ignoring ' + ex);
}
}
break;
case this.prefBranch.PREF_BOOL:
if (typeof aPrefValue != 'boolean')
{
cdump('Preferences.prototype.setPref: ' + aPrefName + ' invalid value for type boolean ' + aPrefValue);
}
else
{
try
{
value = this.prefBranch.setBoolPref(aPrefName, aPrefValue);
}
catch(ex)
{
cdump('Ignoring ' + ex);
}
}
break;
default:
cdump('Preferences.prototype.setPref: ' + aPrefName + ' unknown type ' + prefType);
break;
}
}
Preferences.prototype.getPref = Preferences_getPref;
Preferences.prototype.setPref = Preferences_setPref;
function loadBundle(uri)
{
try
{
var bundleService = Components.classes["@mozilla.org/intl/stringbundle;1"].
getService(Components.interfaces.nsIStringBundleService);
var bundle = bundleService.createBundle(uri);
var enumBundle = bundle.getSimpleEnumeration();
while (enumBundle.hasMoreElements())
{
var item = enumBundle.getNext().QueryInterface(Components.interfaces.nsIPropertyElement);
cdump('bundle ' + uri + ' key : ' + item.key + ', value : ' + item.value);
}
}
catch(ex)
{
cdump('Error loading bundle ' + uri + ': ' + ex);
}
}
function getOverridePref(prefName, uri)
{
var bundleService = Components.classes["@mozilla.org/intl/stringbundle;1"].
getService(Components.interfaces.nsIStringBundleService);
var bundle = bundleService.createBundle(uri);
var value;
try
{
value = bundle.GetStringFromName(prefName);
}
catch(ex)
{
cdump('Ignoring ' + ex);
}
return value;
}