summaryrefslogtreecommitdiffstats
path: root/chrome/browser/shell_integration_win.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/shell_integration_win.cc')
-rw-r--r--chrome/browser/shell_integration_win.cc28
1 files changed, 26 insertions, 2 deletions
diff --git a/chrome/browser/shell_integration_win.cc b/chrome/browser/shell_integration_win.cc
index f4c8609..429649f 100644
--- a/chrome/browser/shell_integration_win.cc
+++ b/chrome/browser/shell_integration_win.cc
@@ -425,8 +425,15 @@ bool ActivateApplication(const string16& app_id) {
} // namespace
-bool ShellIntegration::CanSetAsDefaultBrowser() {
- return BrowserDistribution::GetDistribution()->CanSetAsDefault();
+ShellIntegration::DefaultWebClientSetPermission
+ ShellIntegration::CanSetAsDefaultBrowser() {
+ if (!BrowserDistribution::GetDistribution()->CanSetAsDefault())
+ return SET_DEFAULT_NOT_ALLOWED;
+
+ if (base::win::GetVersion() >= base::win::VERSION_WIN8)
+ return SET_DEFAULT_INTERACTIVE;
+ else
+ return SET_DEFAULT_UNATTENDED;
}
bool ShellIntegration::SetAsDefaultBrowser() {
@@ -471,6 +478,23 @@ bool ShellIntegration::SetAsDefaultProtocolClient(const std::string& protocol) {
return true;
}
+bool ShellIntegration::SetAsDefaultBrowserInteractive() {
+ FilePath chrome_exe;
+ if (!PathService::Get(base::FILE_EXE, &chrome_exe)) {
+ NOTREACHED() << "Error getting app exe path";
+ return false;
+ }
+
+ BrowserDistribution* dist = BrowserDistribution::GetDistribution();
+ if (!ShellUtil::ShowMakeChromeDefaultSystemUI(dist, chrome_exe.value())) {
+ 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,