diff options
author | tc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-22 05:10:59 +0000 |
---|---|---|
committer | tc@google.com <tc@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-08-22 05:10:59 +0000 |
commit | a7e79591fd7db823cd278ff43616ba4a22108213 (patch) | |
tree | 512e2f2a282595c51cfa3bb48e0de9d2d5a46251 /net/base/net_util.cc | |
parent | 1ea9aac8836d5532c8d9ef5cf57f3653f0af1347 (diff) | |
download | chromium_src-a7e79591fd7db823cd278ff43616ba4a22108213.zip chromium_src-a7e79591fd7db823cd278ff43616ba4a22108213.tar.gz chromium_src-a7e79591fd7db823cd278ff43616ba4a22108213.tar.bz2 |
Move FileURLToFilePath into platform specific files. Most of the logic in this function is specific to windows' file system.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1211 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/net_util.cc')
-rw-r--r-- | net/base/net_util.cc | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/net/base/net_util.cc b/net/base/net_util.cc index 906c16a..4e7fab7 100644 --- a/net/base/net_util.cc +++ b/net/base/net_util.cc @@ -675,77 +675,6 @@ GURL FilePathToFileURL(const std::wstring& file_path) { #endif } -bool FileURLToFilePath(const GURL& url, std::wstring* file_path) { - file_path->clear(); - - if (!url.is_valid()) - return false; - - std::string path; - std::string host = url.host(); - if (host.empty()) { - // URL contains no host, the path is the filename. In this case, the path - // will probably be preceeded with a slash, as in "/C:/foo.txt", so we - // trim out that here. - path = url.path(); - size_t first_non_slash = path.find_first_not_of("/\\"); - if (first_non_slash != std::string::npos && first_non_slash > 0) - path.erase(0, first_non_slash); - } else { - // URL contains a host: this means it's UNC. We keep the preceeding slash - // on the path. - path = "\\\\"; - path.append(host); - path.append(url.path()); - } - - if (path.empty()) - return false; - std::replace(path.begin(), path.end(), '/', '\\'); - - // GURL stores strings as percent-encoded UTF-8, this will undo if possible. - path = UnescapeURLComponent(path, - UnescapeRule::SPACES | UnescapeRule::URL_SPECIAL_CHARS); - - if (!IsStringUTF8(path.c_str())) { - // Not UTF-8, assume encoding is native codepage and we're done. We know we - // are giving the conversion function a nonempty string, and it may fail if - // the given string is not in the current encoding and give us an empty - // string back. We detect this and report failure. - *file_path = base::SysNativeMBToWide(path); - return !file_path->empty(); - } - file_path->assign(UTF8ToWide(path)); - - // Now we have an unescaped filename, but are still not sure about its - // encoding. For example, each character could be part of a UTF-8 string. - if (file_path->empty() || !IsString8Bit(*file_path)) { - // assume our 16-bit encoding is correct if it won't fit into an 8-bit - // string - return true; - } - - // Convert our narrow string into the native wide path. - std::string narrow; - if (!WideToLatin1(*file_path, &narrow)) { - NOTREACHED() << "Should have filtered out non-8-bit strings above."; - return false; - } - if (IsStringUTF8(narrow.c_str())) { - // Our string actually looks like it could be UTF-8, convert to 8-bit - // UTF-8 and then to the corresponding wide string. - *file_path = UTF8ToWide(narrow); - } else { - // Our wide string contains only 8-bit characters and it's not UTF-8, so - // we assume it's in the native codepage. - *file_path = base::SysNativeMBToWide(narrow); - } - - // Fail if 8-bit -> wide conversion failed and gave us an empty string back - // (we already filtered out empty strings above). - return !file_path->empty(); -} - std::wstring GetSpecificHeader(const std::wstring& headers, const std::wstring& name) { return GetSpecificHeaderT(headers, name); |