Alors... D'abord merci de votre aide mais sachez que ce n'était pas tout à fait satisfaisant.
J'explique, que vous ne ratez rien
.
1. D'abord la raison du bug chez moi: Gran Paradiso semble modifier les scripts de FF 2.x , ce qui fait que quand on repasse sur FF2, les upgrades déconnent. Comme précisé dans les précédents messages, il faut aller sur about
:config , changer les paramètres de mises à jour (app.update.url était à [chaine vide] quand j'ai posté ce sujet !), etc...
2a. L'astuce des propriétés de la connexion. La raison d'être de cette astuce est plus profonde que prévu. Grâce à Firebug j'ai pu repérer ceci dans les JS internes de Firefox 2.x :
Dans Mozilla Firefox\components\nsUpdateService.js
Code:
/**
* Only allow built-in certs for HTTPS connections. See bug 340198.
*/
function checkCert(channel) {
if (!channel.originalURI.schemeIs("https")) // bypass
return;
const Ci = Components.interfaces;
var cert =
channel.securityInfo.QueryInterface(Ci.nsISSLStatusProvider).
SSLStatus.QueryInterface(Ci.nsISSLStatus).serverCert; // Erreur !!
Ce que j'ai corrigé en ceci:
Code:
/**
* Only allow built-in certs for HTTPS connections. See bug 340198.
*/
function checkCert(channel) {
if (!channel.originalURI.schemeIs("https")) // bypass
return;
const Ci = Components.interfaces;
var cert = channel.securityInfo.QueryInterface(Ci.nsISSLStatusProvider).
SSLStatus.QueryInterface(Ci.nsISSLStatus).serverCert; // On supprime le retour à la ligne après 'var cert = '
Après ça, ça ne m'a plus jamais pondu des erreurs comme quoi l'XML était mal formé ou non trouvé. Par contre il y avait une erreur JS qui se déclenchait dès que je faisais quoi que ce soit comme action sur une page, même bouger la barre de défilement. Bref, étape suivante
2b. Toujours grâce à Firebug, l'erreur est déclenchée quelque part dans nsSessionStore.js
De ceci:
Code:
/**
* save state to disk
* @param aUpdateAll
* Bool update all windows
*/
saveState: function sss_saveState(aUpdateAll) {
// if crash recovery is disabled, only save session resuming information
if (!this._resume_from_crash && this._loadState == STATE_RUNNING)
return;
this._dirty = aUpdateAll;
var oState = this._getCurrentState();
oState.session = { state: ((this._loadState == STATE_RUNNING) ? STATE_RUNNING_STR : STATE_STOPPED_STR) };
this._writeFile(this._sessionFile, oState.toSource());
this._lastSaveTime = Date.now();
},
On passe à ça :
Code:
/**
* save state to disk
* @param aUpdateAll
* Bool update all windows
*/
saveState: function sss_saveState(aUpdateAll) {
// if crash recovery is disabled, only save session resuming information
if (!this._resume_from_crash && this._loadState == STATE_RUNNING)
return;
this._dirty = aUpdateAll;
try // On ajoute tout simplement un try/catch pour masquer l'erreur ^^
{
var oState = this._getCurrentState();
oState.session = { state: ((this._loadState == STATE_RUNNING) ? STATE_RUNNING_STR : STATE_STOPPED_STR) };
this._writeFile(this._sessionFile, oState.toSource());
this._lastSaveTime = Date.now();
}
catch(ee)
{
}
},
Simple pas vrai ? -hem-
Et pour éviter des complications ultérieures j'ai mis ces 2 fichiers en lecture seule, on n'est jamais trop prudent ^^
Sachez qu'avec ça c'est parfait. C'est un peu hardcore comme façon de faire mais du moment que ça marche
Testé avec FF 2.0.0.8 et 2.0.0.9 pour Windows. Encore merci à vous tous.