Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2343)

Unified Diff: chrome/browser/shell_integration.h

Issue 1832853003: DefaultBrowserWorker now fully supports opening the settings for Win10 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix mac compilation Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/shell_integration.h
diff --git a/chrome/browser/shell_integration.h b/chrome/browser/shell_integration.h
index e71dbfed73fc4b1031f31c99b648f8dc9751cb5e..a9861fb94a0ce22fc37adc60d0ad03f5c2829267 100644
--- a/chrome/browser/shell_integration.h
+++ b/chrome/browser/shell_integration.h
@@ -22,48 +22,37 @@ class CommandLine;
namespace shell_integration {
-// Sets Chrome as the default browser (only for the current user). Returns
-// false if this operation fails.
+// Sets Chrome as the default browser (only for the current user). Returns false
+// if this operation fails. This does not work on Windows version 8 or higher.
+// Prefer to use the DefaultBrowserWorker class below since it works on all OSs.
bool SetAsDefaultBrowser();
-// Initiates an OS shell flow which (if followed by the user) should set
-// Chrome as the default browser. Returns false if the flow cannot be
-// initialized, if it is not supported (introduced for Windows 8) or if the
-// user cancels the operation. This is a blocking call and requires a FILE
-// thread. If Chrome is already default browser, no interactive dialog will be
-// shown and this method returns true.
-bool SetAsDefaultBrowserInteractive();
-
// Sets Chrome as the default client application for the given protocol
// (only for the current user). Returns false if this operation fails.
+// Prefer to use the DefaultProtocolClientWorker class below since it works on
+// all OSs.
bool SetAsDefaultProtocolClient(const std::string& protocol);
-// Initiates an OS shell flow which (if followed by the user) should set
-// Chrome as the default handler for |protocol|. Returns false if the flow
-// cannot be initialized, if it is not supported (introduced for Windows 8)
-// or if the user cancels the operation. This is a blocking call and requires
-// a FILE thread. If Chrome is already default for |protocol|, no interactive
-// dialog will be shown and this method returns true.
-bool SetAsDefaultProtocolClientInteractive(const std::string& protocol);
-
-// Windows 8 and Windows 10 introduced different ways to set the default
-// browser.
+// The different types of permissions required to set a default web client.
enum DefaultWebClientSetPermission {
// The browser distribution is not permitted to be made default.
SET_DEFAULT_NOT_ALLOWED,
// No special permission or interaction is required to set the default
// browser. This is used in Linux, Mac and Windows 7 and under.
SET_DEFAULT_UNATTENDED,
- // On Windows 8, a browser can be made default only in an interactive flow.
+ // On Windows 8+, a browser can be made default only in an interactive flow.
SET_DEFAULT_INTERACTIVE,
};
-// Returns requirements for making the running browser the user's default.
-DefaultWebClientSetPermission CanSetAsDefaultBrowser();
+// Returns requirements for making the running browser either the default
+// browser or the default client application for a specific protocols for the
+// current user.
+DefaultWebClientSetPermission GetDefaultWebClientSetPermission();
-// Returns requirements for making the running browser the user's default
-// client application for specific protocols.
-DefaultWebClientSetPermission CanSetAsDefaultProtocolClient();
+// Returns true if the running browser can be set as the default browser,
+// whether user interaction is needed or not. Use
+// GetDefaultWebClientSetPermission() if this distinction is important.
+bool CanSetAsDefaultBrowser();
// Returns true if making the running browser the default client for any
// protocol requires elevated privileges.
@@ -232,7 +221,11 @@ class DefaultWebClientWorker
// Implementation of CheckIsDefault() and SetAsDefault() for subclasses.
virtual DefaultWebClientState CheckIsDefaultImpl() = 0;
- virtual void SetAsDefaultImpl() = 0;
+
+ // The callback may be run synchronously or at an arbitrary time later on this
+ // thread.
+ // Note: Subclasses MUST make sure |on_finished_callback| is executed.
+ virtual void SetAsDefaultImpl(const base::Closure& on_finished_callback) = 0;
// Reports the result for the set-as-default operation.
void ReportSetDefaultResult(DefaultWebClientState state);
@@ -268,7 +261,7 @@ class DefaultBrowserWorker : public DefaultWebClientWorker {
DefaultWebClientState CheckIsDefaultImpl() override;
// Set Chrome as the default browser.
- void SetAsDefaultImpl() override;
+ void SetAsDefaultImpl(const base::Closure& on_finished_callback) override;
DISALLOW_COPY_AND_ASSIGN(DefaultBrowserWorker);
};
@@ -292,7 +285,7 @@ class DefaultProtocolClientWorker : public DefaultWebClientWorker {
DefaultWebClientState CheckIsDefaultImpl() override;
// Set Chrome as the default handler for this protocol.
- void SetAsDefaultImpl() override;
+ void SetAsDefaultImpl(const base::Closure& on_finished_callback) override;
std::string protocol_;

Powered by Google App Engine
This is Rietveld 408576698