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

Unified Diff: chrome/app/chrome_dll_main.cc

Issue 67020: Merge 13384 - Fix for invocation over deprecated protocol handler... (Closed) Base URL: svn://chrome-svn.corp.google.com/chrome/branches/172/src/
Patch Set: Created 11 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/app/chrome_dll_main.cc
===================================================================
--- chrome/app/chrome_dll_main.cc (revision 13464)
+++ chrome/app/chrome_dll_main.cc (working copy)
@@ -124,36 +124,16 @@
#pragma optimize("", on)
-// Early versions of Chrome incorrectly registered a chromehtml: URL handler.
-// Later versions fixed the registration but in some cases (e.g. Vista and non-
-// admin installs) the fix could not be applied. This prevents Chrome to be
-// launched with the incorrect format.
-// CORRECT: <broser.exe> -- "chromehtml:<url>"
-// INVALID: <broser.exe> "chromehtml:<url>"
-bool IncorrectChromeHtmlArguments(const std::wstring& command_line) {
- const wchar_t kChromeHtml[] = L"-- \"chromehtml:";
- const wchar_t kOffset = 5; // Where chromehtml: starts in above
+// Early versions of Chrome incorrectly registered a chromehtml: URL handler,
+// which gives us nothing but trouble. Avoid launching chrome this way since
+// some apps fail to properly escape arguments.
+bool HasDeprecatedArguments(const std::wstring& command_line) {
+ const wchar_t kChromeHtml[] = L"chromehtml:";
std::wstring command_line_lower = command_line;
-
// We are only searching for ASCII characters so this is OK.
StringToLowerASCII(&command_line_lower);
-
- std::wstring::size_type pos = command_line_lower.find(
- kChromeHtml + kOffset);
-
- if (pos == std::wstring::npos)
- return false;
-
- // The browser is being launched with chromehtml: somewhere on the command
- // line. We will not launch unless it's preceded by the -- switch terminator.
- if (pos >= kOffset) {
- if (equal(kChromeHtml, kChromeHtml + arraysize(kChromeHtml) - 1,
- command_line_lower.begin() + pos - kOffset)) {
- return false;
- }
- }
-
- return true;
+ std::wstring::size_type pos = command_line_lower.find(kChromeHtml);
+ return (pos != std::wstring::npos);
}
#endif // OS_WIN
@@ -276,7 +256,7 @@
#if defined(OS_WIN)
// Must do this before any other usage of command line!
- if (::IncorrectChromeHtmlArguments(parsed_command_line.command_line_string()))
+ if (HasDeprecatedArguments(parsed_command_line.command_line_string()))
return 1;
#endif
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698