Index: chrome/browser/shell_integration_linux.cc |
=================================================================== |
--- chrome/browser/shell_integration_linux.cc (revision 21242) |
+++ chrome/browser/shell_integration_linux.cc (working copy) |
@@ -67,33 +67,34 @@ |
return success_code == EXIT_SUCCESS; |
} |
-static bool GetDefaultBrowser(std::string* result) { |
+bool ShellIntegration::IsDefaultBrowser() { |
std::vector<std::string> argv; |
argv.push_back("xdg-settings"); |
- argv.push_back("get"); |
+ argv.push_back("check"); |
argv.push_back("default-web-browser"); |
- return base::GetAppOutput(CommandLine(argv), result); |
-} |
+ argv.push_back(GetDesktopName()); |
-bool ShellIntegration::IsDefaultBrowser() { |
- std::string browser; |
- if (!GetDefaultBrowser(&browser)) { |
- // If GetDefaultBrowser() fails, we assume xdg-settings does not work for |
- // some reason, and that we should pretend we're the default browser to |
- // avoid giving repeated prompts to set ourselves as the default browser. |
- // TODO: Really, being the default browser should be a ternary query: yes, |
- // no, and "don't know" so that the UI can reflect this more accurately. |
+ std::string reply; |
+ if (!base::GetAppOutput(CommandLine(argv), &reply)) { |
+ // If xdg-settings fails, we assume that we should pretend we're the default |
+ // browser to avoid giving repeated prompts to set ourselves as the default. |
+ // TODO(mdm): Really, being the default browser should be a ternary query: |
+ // yes, no, and "don't know" so the UI can reflect this more accurately. |
return true; |
} |
- // Allow for an optional newline at the end. |
- if (browser.length() > 0 && browser[browser.length() - 1] == '\n') |
- browser.resize(browser.length() - 1); |
- return !browser.compare(GetDesktopName()); |
+ |
+ // Allow any reply that starts with "yes" |
Evan Stade
2009/07/22 01:36:33
. at end of comment
|
+ return reply.find("yes") == 0; |
} |
bool ShellIntegration::IsFirefoxDefaultBrowser() { |
+ std::vector<std::string> argv; |
+ argv.push_back("xdg-settings"); |
+ argv.push_back("get"); |
+ argv.push_back("default-web-browser"); |
+ |
std::string browser; |
// We don't care about the return value here. |
- GetDefaultBrowser(&browser); |
+ base::GetAppOutput(CommandLine(argv), &browser); |
return browser.find("irefox") != std::string::npos; |
} |