diff options
Diffstat (limited to 'chrome/browser/shell_integration_win.cc')
-rw-r--r-- | chrome/browser/shell_integration_win.cc | 28 |
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, |