Back out bug 311605 pending further testing.
git-svn-id: svn://10.0.0.236/trunk@185665 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -164,9 +164,12 @@ nsGNOMEShellService::KeyMatchesAppName(const char *aKeyValue) const
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsGNOMEShellService::IsDefaultBrowser(PRBool* aIsDefaultBrowser)
|
||||
nsGNOMEShellService::IsDefaultBrowser(PRBool aStartupCheck,
|
||||
PRBool* aIsDefaultBrowser)
|
||||
{
|
||||
*aIsDefaultBrowser = PR_FALSE;
|
||||
if (aStartupCheck)
|
||||
mCheckedThisSession = PR_TRUE;
|
||||
|
||||
nsCOMPtr<nsIGConfService> gconf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
|
||||
|
||||
@@ -307,6 +310,39 @@ nsGNOMEShellService::SetDefaultBrowser(PRBool aClaimAllTypes,
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsGNOMEShellService::GetShouldCheckDefaultBrowser(PRBool* aResult)
|
||||
{
|
||||
// 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 = PR_FALSE;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIPrefBranch> prefs;
|
||||
nsCOMPtr<nsIPrefService> pserve(do_GetService(NS_PREFSERVICE_CONTRACTID));
|
||||
if (pserve)
|
||||
pserve->GetBranch("", getter_AddRefs(prefs));
|
||||
|
||||
prefs->GetBoolPref(PREF_CHECKDEFAULTBROWSER, aResult);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsGNOMEShellService::SetShouldCheckDefaultBrowser(PRBool aShouldCheck)
|
||||
{
|
||||
nsCOMPtr<nsIPrefBranch> prefs;
|
||||
nsCOMPtr<nsIPrefService> pserve(do_GetService(NS_PREFSERVICE_CONTRACTID));
|
||||
if (pserve)
|
||||
pserve->GetBranch("", getter_AddRefs(prefs));
|
||||
|
||||
prefs->SetBoolPref(PREF_CHECKDEFAULTBROWSER, aShouldCheck);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
static nsresult
|
||||
WriteImage(const nsCString& aPath, gfxIImageFrame* aImage)
|
||||
{
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
class nsGNOMEShellService : public nsIShellService
|
||||
{
|
||||
public:
|
||||
nsGNOMEShellService() { }
|
||||
nsGNOMEShellService() : mCheckedThisSession(PR_FALSE) { }
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
NS_DECL_NSISHELLSERVICE
|
||||
@@ -55,7 +55,8 @@ private:
|
||||
|
||||
NS_HIDDEN_(PRBool) KeyMatchesAppName(const char *aKeyValue) const;
|
||||
|
||||
PRBool mUseLocaleFilenames;
|
||||
PRPackedBool mCheckedThisSession;
|
||||
PRPackedBool mUseLocaleFilenames;
|
||||
nsCString mAppPath;
|
||||
};
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ extern "C" {
|
||||
NS_IMPL_ISUPPORTS3(nsMacShellService, nsIMacShellService, nsIShellService, nsIWebProgressListener)
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMacShellService::IsDefaultBrowser(PRBool* aIsDefaultBrowser)
|
||||
nsMacShellService::IsDefaultBrowser(PRBool aStartupCheck, PRBool* aIsDefaultBrowser)
|
||||
{
|
||||
*aIsDefaultBrowser = PR_TRUE;
|
||||
|
||||
@@ -134,6 +134,12 @@ nsMacShellService::IsDefaultBrowser(PRBool* aIsDefaultBrowser)
|
||||
// release the idetifiers strings
|
||||
::CFRelease(firefoxID);
|
||||
|
||||
// If this is the first browser window, maintain internal state that we've
|
||||
// checked this session (so that subsequent window opens don't show the
|
||||
// default browser dialog).
|
||||
if (aStartupCheck)
|
||||
mCheckedThisSession = PR_TRUE;
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
@@ -164,6 +170,39 @@ nsMacShellService::SetDefaultBrowser(PRBool aClaimAllTypes, PRBool aForAllUsers)
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMacShellService::GetShouldCheckDefaultBrowser(PRBool* aResult)
|
||||
{
|
||||
// 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 = PR_FALSE;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIPrefBranch> prefs;
|
||||
nsCOMPtr<nsIPrefService> pserve(do_GetService(NS_PREFSERVICE_CONTRACTID));
|
||||
if (pserve)
|
||||
pserve->GetBranch("", getter_AddRefs(prefs));
|
||||
|
||||
prefs->GetBoolPref(PREF_CHECKDEFAULTBROWSER, aResult);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMacShellService::SetShouldCheckDefaultBrowser(PRBool aShouldCheck)
|
||||
{
|
||||
nsCOMPtr<nsIPrefBranch> prefs;
|
||||
nsCOMPtr<nsIPrefService> pserve(do_GetService(NS_PREFSERVICE_CONTRACTID));
|
||||
if (pserve)
|
||||
pserve->GetBranch("", getter_AddRefs(prefs));
|
||||
|
||||
prefs->SetBoolPref(PREF_CHECKDEFAULTBROWSER, aShouldCheck);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsMacShellService::SetDesktopBackground(nsIDOMElement* aElement,
|
||||
PRInt32 aPosition)
|
||||
|
||||
@@ -46,7 +46,7 @@ class nsMacShellService : public nsIMacShellService,
|
||||
public nsIWebProgressListener
|
||||
{
|
||||
public:
|
||||
nsMacShellService() {};
|
||||
nsMacShellService() : mCheckedThisSession(PR_FALSE) {};
|
||||
virtual ~nsMacShellService() {};
|
||||
|
||||
NS_DECL_ISUPPORTS
|
||||
@@ -58,6 +58,8 @@ protected:
|
||||
|
||||
private:
|
||||
nsCOMPtr<nsILocalFile> mBackgroundFile;
|
||||
|
||||
PRBool mCheckedThisSession;
|
||||
};
|
||||
|
||||
#endif // nsmacshellservice_h____
|
||||
|
||||
@@ -34,5 +34,8 @@
|
||||
*
|
||||
* ***** END LICENSE BLOCK ***** */
|
||||
|
||||
#define PREF_CHECKDEFAULTBROWSER "browser.shell.checkDefaultBrowser"
|
||||
|
||||
#define SHELLSERVICE_PROPERTIES "chrome://browser/locale/shellservice.properties"
|
||||
#define BRAND_PROPERTIES "chrome://branding/locale/brand.properties"
|
||||
|
||||
|
||||
@@ -291,6 +291,7 @@ nsWindowsShellService::Register(nsIComponentManager *aCompMgr, nsIFile *aPath, c
|
||||
}
|
||||
|
||||
nsWindowsShellService::nsWindowsShellService()
|
||||
:mCheckedThisSession(PR_FALSE)
|
||||
{
|
||||
nsCOMPtr<nsIObserverService> obsServ (do_GetService("@mozilla.org/observer-service;1"));
|
||||
obsServ->AddObserver(this, "quit-application", PR_FALSE);
|
||||
@@ -322,7 +323,7 @@ nsWindowsShellService::UnregisterDDESupport()
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsWindowsShellService::IsDefaultBrowser(PRBool* aIsDefaultBrowser)
|
||||
nsWindowsShellService::IsDefaultBrowser(PRBool aStartupCheck, PRBool* aIsDefaultBrowser)
|
||||
{
|
||||
SETTING* settings;
|
||||
SETTING* end = gSettings + sizeof(gSettings)/sizeof(SETTING);
|
||||
@@ -378,6 +379,12 @@ nsWindowsShellService::IsDefaultBrowser(PRBool* aIsDefaultBrowser)
|
||||
}
|
||||
}
|
||||
|
||||
// If this is the first browser window, maintain internal state that we've
|
||||
// checked this session (so that subsequent window opens don't show the
|
||||
// default browser dialog).
|
||||
if (aStartupCheck)
|
||||
mCheckedThisSession = PR_TRUE;
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@@ -601,6 +608,39 @@ nsWindowsShellService::SetRegKey(const char* aKeyName, const char* aValueName,
|
||||
::RegCloseKey(theKey);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsWindowsShellService::GetShouldCheckDefaultBrowser(PRBool* aResult)
|
||||
{
|
||||
// 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 = PR_FALSE;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIPrefBranch> prefs;
|
||||
nsCOMPtr<nsIPrefService> pserve(do_GetService(NS_PREFSERVICE_CONTRACTID));
|
||||
if (pserve)
|
||||
pserve->GetBranch("", getter_AddRefs(prefs));
|
||||
|
||||
prefs->GetBoolPref(PREF_CHECKDEFAULTBROWSER, aResult);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsWindowsShellService::SetShouldCheckDefaultBrowser(PRBool aShouldCheck)
|
||||
{
|
||||
nsCOMPtr<nsIPrefBranch> prefs;
|
||||
nsCOMPtr<nsIPrefService> pserve(do_GetService(NS_PREFSERVICE_CONTRACTID));
|
||||
if (pserve)
|
||||
pserve->GetBranch("", getter_AddRefs(prefs));
|
||||
|
||||
prefs->SetBoolPref(PREF_CHECKDEFAULTBROWSER, aShouldCheck);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
static nsresult
|
||||
WriteBitmap(nsIFile* aFile, gfxIImageFrame* aImage)
|
||||
{
|
||||
@@ -978,7 +1018,7 @@ nsWindowsShellService::Observe(nsISupports* aObject, const char* aTopic, const P
|
||||
{
|
||||
if (!nsCRT::strcmp("app-startup", aTopic)) {
|
||||
PRBool isDefault;
|
||||
IsDefaultBrowser(&isDefault);
|
||||
IsDefaultBrowser(PR_FALSE, &isDefault);
|
||||
if (!isDefault)
|
||||
return NS_OK;
|
||||
|
||||
@@ -986,7 +1026,7 @@ nsWindowsShellService::Observe(nsISupports* aObject, const char* aTopic, const P
|
||||
}
|
||||
else if (!nsCRT::strcmp("quit-application", aTopic)) {
|
||||
PRBool isDefault;
|
||||
IsDefaultBrowser(&isDefault);
|
||||
IsDefaultBrowser(PR_FALSE, &isDefault);
|
||||
if (!isDefault)
|
||||
return NS_OK;
|
||||
|
||||
|
||||
@@ -71,6 +71,8 @@ protected:
|
||||
nsresult RegisterDDESupport();
|
||||
nsresult UnregisterDDESupport();
|
||||
|
||||
private:
|
||||
PRBool mCheckedThisSession;
|
||||
};
|
||||
|
||||
#endif // nswindowsshellservice_h____
|
||||
|
||||
Reference in New Issue
Block a user