Bug 1191250 - Defer showing the default browser prompt to 2nd run (and only show it a maximum of three times). r=jimm
This commit is contained in:
@@ -976,17 +976,61 @@ nsWindowsShellService::SetDefaultBrowser(bool aClaimAllTypes, bool aForAllUsers)
|
||||
nsCOMPtr<nsIPrefBranch> prefs(do_GetService(NS_PREFSERVICE_CONTRACTID));
|
||||
if (prefs) {
|
||||
(void) prefs->SetBoolPref(PREF_CHECKDEFAULTBROWSER, true);
|
||||
// Reset the number of times the dialog should be shown
|
||||
// before it is silenced.
|
||||
(void) prefs->SetIntPref(PREF_DEFAULTBROWSERCHECKCOUNT, 0);
|
||||
}
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsWindowsShellService::GetShouldSkipCheckDefaultBrowser(bool* aResult)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aResult);
|
||||
|
||||
nsresult rv;
|
||||
nsCOMPtr<nsIPrefBranch> prefs(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv));
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
|
||||
rv = prefs->GetBoolPref(PREF_SKIPDEFAULTBROWSERCHECK, aResult);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
if (*aResult) {
|
||||
// Only skip the default browser check once. The next attempt in
|
||||
// a new session should proceed.
|
||||
return prefs->SetBoolPref(PREF_SKIPDEFAULTBROWSERCHECK, false);
|
||||
}
|
||||
|
||||
int32_t defaultBrowserCheckCount;
|
||||
rv = prefs->GetIntPref(PREF_DEFAULTBROWSERCHECKCOUNT,
|
||||
&defaultBrowserCheckCount);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
if (defaultBrowserCheckCount < 3) {
|
||||
*aResult = false;
|
||||
return prefs->SetIntPref(PREF_DEFAULTBROWSERCHECKCOUNT,
|
||||
defaultBrowserCheckCount + 1);
|
||||
}
|
||||
|
||||
// Disable the default browser check after three attempts.
|
||||
// Don't modify PREF_CHECKDEFAULTBROWSER since that is a
|
||||
// user-initiated action and it shouldn't get re-enabled
|
||||
// if it has been user disabled.
|
||||
*aResult = true;
|
||||
return rv;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsWindowsShellService::GetShouldCheckDefaultBrowser(bool* aResult)
|
||||
{
|
||||
NS_ENSURE_ARG_POINTER(aResult);
|
||||
|
||||
// If we've already checked, the browser has been started and this is a
|
||||
// If we've already checked, the browser has been started and this is a
|
||||
// new window open, and we don't want to check again.
|
||||
if (mCheckedThisSession) {
|
||||
*aResult = false;
|
||||
@@ -994,6 +1038,18 @@ nsWindowsShellService::GetShouldCheckDefaultBrowser(bool* aResult)
|
||||
}
|
||||
|
||||
nsresult rv;
|
||||
#ifndef RELEASE_BUILD
|
||||
bool skipDefaultBrowserCheck;
|
||||
rv = GetShouldSkipCheckDefaultBrowser(&skipDefaultBrowserCheck);
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
}
|
||||
if (skipDefaultBrowserCheck) {
|
||||
*aResult = false;
|
||||
return rv;
|
||||
}
|
||||
#endif
|
||||
|
||||
nsCOMPtr<nsIPrefBranch> prefs(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv));
|
||||
if (NS_FAILED(rv)) {
|
||||
return rv;
|
||||
|
||||
Reference in New Issue
Block a user