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

Unified Diff: trunk/src/net/base/net_util_posix.cc

Issue 228763004: Revert 262487 "Add net/base/filename_util.h." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 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 | « trunk/src/net/base/net_util.cc ('k') | trunk/src/net/base/net_util_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: trunk/src/net/base/net_util_posix.cc
===================================================================
--- trunk/src/net/base/net_util_posix.cc (revision 262497)
+++ trunk/src/net/base/net_util_posix.cc (working copy)
@@ -85,6 +85,40 @@
} // namespace
+bool FileURLToFilePath(const GURL& url, base::FilePath* path) {
+ *path = base::FilePath();
+ std::string& file_path_str = const_cast<std::string&>(path->value());
+ file_path_str.clear();
+
+ if (!url.is_valid())
+ return false;
+
+ // Firefox seems to ignore the "host" of a file url if there is one. That is,
+ // file://foo/bar.txt maps to /bar.txt.
+ // TODO(dhg): This should probably take into account UNCs which could
+ // include a hostname other than localhost or blank
+ std::string old_path = url.path();
+
+ if (old_path.empty())
+ return false;
+
+ // GURL stores strings as percent-encoded 8-bit, this will undo if possible.
+ old_path = UnescapeURLComponent(old_path,
+ UnescapeRule::SPACES | UnescapeRule::URL_SPECIAL_CHARS);
+
+ // Collapse multiple path slashes into a single path slash.
+ std::string new_path;
+ do {
+ new_path = old_path;
+ ReplaceSubstringsAfterOffset(&new_path, 0, "//", "/");
+ old_path.swap(new_path);
+ } while (new_path != old_path);
+
+ file_path_str.assign(old_path);
+
+ return !file_path_str.empty();
+}
+
bool GetNetworkList(NetworkInterfaceList* networks, int policy) {
#if defined(OS_ANDROID)
std::string network_list = android::GetNetworkList();
« no previous file with comments | « trunk/src/net/base/net_util.cc ('k') | trunk/src/net/base/net_util_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698