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

Unified Diff: chrome/browser/shell_integration_win.cc

Issue 10453041: Support for interactive set-chrome-as-default in Windows. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 7 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_win.cc
diff --git a/chrome/browser/shell_integration_win.cc b/chrome/browser/shell_integration_win.cc
index 869b5b51311f5ff8019a259bc8d3301c07c44629..9921f40c26afaa955de1161e5edd0ba36575aa8a 100644
--- a/chrome/browser/shell_integration_win.cc
+++ b/chrome/browser/shell_integration_win.cc
@@ -389,8 +389,17 @@ void MigrateChromiumShortcutsCallback() {
} // namespace
-bool ShellIntegration::CanSetAsDefaultBrowser() {
- return BrowserDistribution::GetDistribution()->CanSetAsDefault();
+ShellIntegration::DefaultSettingsChangePermission
+ ShellIntegration::CanSetAsDefaultBrowser() {
+ if (!BrowserDistribution::GetDistribution()->CanSetAsDefault()) {
grt (UTC plus 2) 2012/05/25 20:27:38 no braces for these one-liners
motek. 2012/05/28 17:40:33 Done.
+ return CHANGE_DEFAULT_NOT_ALLOWED;
+ }
+
+ if (base::win::GetVersion() >= base::win::VERSION_WIN8) {
grt (UTC plus 2) 2012/05/25 20:27:38 no braces for these
motek. 2012/05/28 17:40:33 Done.
+ return CHANGE_DEFAULT_INTERACTIVE;
+ } else {
+ return CHANGE_DEFAULT_UNATTENDED;
+ }
}
bool ShellIntegration::SetAsDefaultBrowser() {
@@ -435,6 +444,24 @@ bool ShellIntegration::SetAsDefaultProtocolClient(const std::string& protocol) {
return true;
}
+bool ShellIntegration::StartSetAsDefaultBrowserInteractive() {
+ FilePath chrome_exe;
+ if (!PathService::Get(base::FILE_EXE, &chrome_exe)) {
+ LOG(ERROR) << "Error getting app exe path";
grt (UTC plus 2) 2012/05/25 20:27:38 i think NOTREACHED(); or LOG(DFATAL) << ...; would
motek. 2012/05/28 17:40:33 Fair enough. I just copied&pasted this without giv
+ return false;
+ }
+
+ BrowserDistribution* dist = BrowserDistribution::GetDistribution();
+ if (!ShellUtil::ShowMakeChromeDefaultSystemUI(dist, ShellUtil::CURRENT_USER,
+ chrome_exe.value(), true)) {
+ LOG(ERROR) << "Failed to launch the set-default-browser Windows UI.";
+ return false;
+ }
+
+ VLOG(1) << "Set-as-default Windows UI triggered.";
+ return true;
+}
+
ShellIntegration::DefaultWebClientState ShellIntegration::IsDefaultBrowser() {
// When we check for default browser we don't necessarily want to count file
// type handlers and icons as having changed the default browser status,
@@ -446,7 +473,6 @@ ShellIntegration::DefaultWebClientState ShellIntegration::IsDefaultBrowser() {
// flag. There is doubtless some other key we can hook into to cause "Repair"
// to show up in Add/Remove programs for us.
static const wchar_t* const kChromeProtocols[] = { L"http", L"https" };
-
grt (UTC plus 2) 2012/05/25 20:27:38 nit: please add this newline back. it was my favo
motek. 2012/05/28 17:40:33 Done.
return ProbeProtocolHandlers(kChromeProtocols, arraysize(kChromeProtocols));
}

Powered by Google App Engine
This is Rietveld 408576698