@@ -158,16 +158,27 @@ const OVERRIDE_NEW_MSTONE = 2;
158
158
const OVERRIDE_NEW_BUILD_ID = 3 ;
159
159
/**
160
160
* Determines whether a home page override is needed.
161
- * Returns:
162
- * OVERRIDE_NEW_PROFILE if this is the first run with a new profile.
163
- * OVERRIDE_NEW_MSTONE if this is the first run with a build with a different
164
- * Gecko milestone (i.e. right after an upgrade).
165
- * OVERRIDE_NEW_BUILD_ID if this is the first run with a new build ID of the
166
- * same Gecko milestone (i.e. after a nightly upgrade).
167
- * OVERRIDE_NONE otherwise.
161
+ * @param {boolean } [updateMilestones=true]
162
+ * True if we should update the milestone prefs after comparing those prefs
163
+ * with the current platform version and build ID.
164
+ *
165
+ * If updateMilestones is false, then this function has no side-effects.
166
+ *
167
+ * @returns {number }
168
+ * One of the following constants:
169
+ * OVERRIDE_NEW_PROFILE
170
+ * if this is the first run with a new profile.
171
+ * OVERRIDE_NEW_MSTONE
172
+ * if this is the first run with a build with a different Gecko milestone
173
+ * (i.e. right after an upgrade).
174
+ * OVERRIDE_NEW_BUILD_ID
175
+ * if this is the first run with a new build ID of the same Gecko
176
+ * milestone (i.e. after a nightly upgrade).
177
+ * OVERRIDE_NONE
178
+ * otherwise.
168
179
*/
169
- function needHomepageOverride ( prefb ) {
170
- var savedmstone = prefb . getCharPref (
180
+ function needHomepageOverride ( updateMilestones = true ) {
181
+ var savedmstone = Services . prefs . getCharPref (
171
182
"browser.startup.homepage_override.mstone" ,
172
183
""
173
184
) ;
@@ -178,7 +189,7 @@ function needHomepageOverride(prefb) {
178
189
179
190
var mstone = Services . appinfo . platformVersion ;
180
191
181
- var savedBuildID = prefb . getCharPref (
192
+ var savedBuildID = Services . prefs . getCharPref (
182
193
"browser.startup.homepage_override.buildID" ,
183
194
""
184
195
) ;
@@ -191,19 +202,32 @@ function needHomepageOverride(prefb) {
191
202
// about:rights we've removed the EULA stuff and default pref, but we need
192
203
// a way to make existing profiles retain the default that we removed.
193
204
if ( savedmstone ) {
194
- prefb . setBoolPref ( "browser.rights.3.shown" , true ) ;
205
+ Services . prefs . setBoolPref ( "browser.rights.3.shown" , true ) ;
195
206
196
207
// Remember that we saw a major version change.
197
208
gMajorUpgrade = true ;
198
209
}
199
210
200
- prefb . setCharPref ( "browser.startup.homepage_override.mstone" , mstone ) ;
201
- prefb . setCharPref ( "browser.startup.homepage_override.buildID" , buildID ) ;
211
+ if ( updateMilestones ) {
212
+ Services . prefs . setCharPref (
213
+ "browser.startup.homepage_override.mstone" ,
214
+ mstone
215
+ ) ;
216
+ Services . prefs . setCharPref (
217
+ "browser.startup.homepage_override.buildID" ,
218
+ buildID
219
+ ) ;
220
+ }
202
221
return savedmstone ? OVERRIDE_NEW_MSTONE : OVERRIDE_NEW_PROFILE ;
203
222
}
204
223
205
224
if ( buildID != savedBuildID ) {
206
- prefb . setCharPref ( "browser.startup.homepage_override.buildID" , buildID ) ;
225
+ if ( updateMilestones ) {
226
+ Services . prefs . setCharPref (
227
+ "browser.startup.homepage_override.buildID" ,
228
+ buildID
229
+ ) ;
230
+ }
207
231
return OVERRIDE_NEW_BUILD_ID ;
208
232
}
209
233
@@ -663,7 +687,14 @@ nsBrowserContentHandler.prototype = {
663
687
}
664
688
665
689
if ( cmdLine . handleFlag ( "first-startup" , false ) ) {
666
- lazy . FirstStartup . init ( ) ;
690
+ // We don't want subsequent calls to needHompageOverride to have different
691
+ // values because the milestones in prefs got updated, so we intentionally
692
+ // tell needHomepageOverride to leave the milestone prefs alone when doing
693
+ // this check.
694
+ let override = needHomepageOverride ( false /* updateMilestones */ ) ;
695
+ if ( override == OVERRIDE_NEW_PROFILE ) {
696
+ lazy . FirstStartup . init ( ) ;
697
+ }
667
698
}
668
699
669
700
var fileParam = cmdLine . handleFlagWithParam ( "file" , false ) ;
@@ -751,7 +782,7 @@ nsBrowserContentHandler.prototype = {
751
782
"browser.startup.homepage_override.buildID" ,
752
783
"unknown"
753
784
) ;
754
- override = needHomepageOverride ( prefb ) ;
785
+ override = needHomepageOverride ( ) ;
755
786
if ( override != OVERRIDE_NONE ) {
756
787
switch ( override ) {
757
788
case OVERRIDE_NEW_PROFILE :
0 commit comments