зеркало из https://github.com/mozilla/pjs.git
413 строки
10 KiB
JavaScript
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;
|
|
}
|
|
|
|
|
|
|
|
|