summaryrefslogtreecommitdiffstats
path: root/chrome/browser/url_fixer_upper.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/url_fixer_upper.cc')
-rw-r--r--chrome/browser/url_fixer_upper.cc41
1 files changed, 24 insertions, 17 deletions
diff --git a/chrome/browser/url_fixer_upper.cc b/chrome/browser/url_fixer_upper.cc
index a62694d..39fcafc 100644
--- a/chrome/browser/url_fixer_upper.cc
+++ b/chrome/browser/url_fixer_upper.cc
@@ -3,7 +3,6 @@
// found in the LICENSE file.
#include <algorithm>
-#include <windows.h>
#include "chrome/browser/url_fixer_upper.h"
@@ -32,8 +31,8 @@ static void PrepareStringForFileOps(const wstring& text, wstring* output) {
// file exists, returns true and sets |full_path| to the result. Otherwise,
// returns false and leaves |full_path| unchanged.
static bool ValidPathForFile(const wstring& text, wstring* full_path) {
- wchar_t file_path[MAX_PATH];
- if (!_wfullpath(file_path, text.c_str(), MAX_PATH))
+ wstring file_path(text);
+ if (!file_util::AbsolutePath(&file_path))
return false;
if (!file_util::PathExists(file_path))
@@ -255,6 +254,7 @@ wstring URLFixerUpper::SegmentURL(const wstring& text,
// Initialize the result.
*parts = url_parse::Parsed();
+#if defined(OS_WIN)
wstring trimmed;
TrimWhitespace(text, TRIM_ALL, &trimmed);
if (trimmed.empty())
@@ -264,11 +264,13 @@ wstring URLFixerUpper::SegmentURL(const wstring& text,
if (url_parse::DoesBeginWindowsDriveSpec(trimmed.data(), 0, trimmed_length)
|| url_parse::DoesBeginUNCPath(trimmed.data(), 0, trimmed_length, false))
return L"file";
+#endif
// Otherwise, we need to look at things carefully.
wstring scheme;
- if (url_parse::ExtractScheme(text.data(),
- static_cast<int>(text.length()),
+ string text_utf8 = WideToUTF8(text);
+ if (url_parse::ExtractScheme(text_utf8.c_str(),
+ static_cast<int>(text_utf8.length()),
&parts->scheme)) {
// We were able to extract a scheme. Remember what we have, but we may
// decide to change our minds later.
@@ -302,14 +304,18 @@ wstring URLFixerUpper::SegmentURL(const wstring& text,
StringToLowerASCII(&scheme);
// Not segmenting file schemes or nonstandard schemes.
+ string scheme_utf8 = WideToUTF8(scheme);
if ((scheme == L"file") ||
- !url_util::IsStandard(scheme.c_str(), static_cast<int>(scheme.length()),
- url_parse::Component(0, static_cast<int>(scheme.length()))))
+ !url_util::IsStandard(scheme_utf8.c_str(),
+ static_cast<int>(scheme_utf8.length()),
+ url_parse::Component(0, static_cast<int>(scheme_utf8.length()))))
return scheme;
if (parts->scheme.is_valid()) {
// Have the GURL parser do the heavy lifting for us.
- url_parse::ParseStandardURL(text.data(), static_cast<int>(text.length()),
+ string text_utf8 = WideToUTF8(text);
+ url_parse::ParseStandardURL(text_utf8.c_str(),
+ static_cast<int>(text_utf8.length()),
parts);
return scheme;
}
@@ -328,8 +334,9 @@ wstring URLFixerUpper::SegmentURL(const wstring& text,
text_to_parse.append(first_nonwhite, text.end());
// Have the GURL parser do the heavy lifting for us.
- url_parse::ParseStandardURL(text_to_parse.data(),
- static_cast<int>(text_to_parse.length()),
+ string text_to_parse_utf8 = WideToUTF8(text_to_parse);
+ url_parse::ParseStandardURL(text_to_parse_utf8.c_str(),
+ static_cast<int>(text_to_parse_utf8.length()),
parts);
// Offset the results of the parse to match the original text.
@@ -362,8 +369,9 @@ std::wstring URLFixerUpper::FixupURL(const wstring& text,
return (parts.scheme.is_valid() ? text : FixupPath(text));
// For some schemes whose layouts we understand, we rebuild it.
- if (url_util::IsStandard(scheme.c_str(), static_cast<int>(scheme.length()),
- url_parse::Component(0, static_cast<int>(scheme.length())))) {
+ if (url_util::IsStandard(
+ WideToUTF8(scheme).c_str(), static_cast<int>(scheme.length()),
+ url_parse::Component(0, static_cast<int>(scheme.length())))) {
wstring url(scheme);
url.append(L"://");
@@ -402,12 +410,11 @@ std::wstring URLFixerUpper::FixupURL(const wstring& text,
// regular fixup.
wstring URLFixerUpper::FixupRelativeFile(const wstring& base_dir,
const wstring& text) {
- wchar_t old_cur_directory[MAX_PATH];
+ wstring old_cur_directory;
if (!base_dir.empty()) {
// save the old current directory before we move to the new one
- // TODO: in the future, we may want to handle paths longer than MAX_PATH
- GetCurrentDirectory(MAX_PATH, old_cur_directory);
- SetCurrentDirectory(base_dir.c_str());
+ file_util::GetCurrentDirectory(&old_cur_directory);
+ file_util::SetCurrentDirectory(base_dir);
}
// allow funny input with extra whitespace and the wrong kind of slashes
@@ -429,7 +436,7 @@ wstring URLFixerUpper::FixupRelativeFile(const wstring& base_dir,
// Put back the current directory if we saved it.
if (!base_dir.empty())
- SetCurrentDirectory(old_cur_directory);
+ file_util::SetCurrentDirectory(old_cur_directory);
if (is_file) {
GURL file_url = net::FilePathToFileURL(full_path);