mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
url: remove unused URL::ToFilePath()
PR-URL: https://github.com/nodejs/node/pull/46487 Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com> Reviewed-By: Robert Nagy <ronagy@icloud.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
@@ -1847,68 +1847,6 @@ void RegisterExternalReferences(ExternalReferenceRegistry* registry) {
|
||||
registry->Register(DomainToUnicode);
|
||||
}
|
||||
|
||||
std::string URL::ToFilePath() const {
|
||||
if (context_.scheme != "file:") {
|
||||
return "";
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
const char* slash = "\\";
|
||||
auto is_slash = [] (char ch) {
|
||||
return ch == '/' || ch == '\\';
|
||||
};
|
||||
#else
|
||||
const char* slash = "/";
|
||||
auto is_slash = [] (char ch) {
|
||||
return ch == '/';
|
||||
};
|
||||
if ((context_.flags & URL_FLAGS_HAS_HOST) &&
|
||||
context_.host.length() > 0) {
|
||||
return "";
|
||||
}
|
||||
#endif
|
||||
std::string decoded_path;
|
||||
for (const std::string& part : context_.path) {
|
||||
std::string decoded = PercentDecode(part.c_str(), part.length());
|
||||
for (char& ch : decoded) {
|
||||
if (is_slash(ch)) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
decoded_path += slash + decoded;
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
// TODO(TimothyGu): Use "\\?\" long paths on Windows.
|
||||
|
||||
// If hostname is set, then we have a UNC path. Pass the hostname through
|
||||
// ToUnicode just in case it is an IDN using punycode encoding. We do not
|
||||
// need to worry about percent encoding because the URL parser will have
|
||||
// already taken care of that for us. Note that this only causes IDNs with an
|
||||
// appropriate `xn--` prefix to be decoded.
|
||||
if ((context_.flags & URL_FLAGS_HAS_HOST) &&
|
||||
context_.host.length() > 0) {
|
||||
std::string unicode_host;
|
||||
if (!ToUnicode(context_.host, &unicode_host)) {
|
||||
return "";
|
||||
}
|
||||
return "\\\\" + unicode_host + decoded_path;
|
||||
}
|
||||
// Otherwise, it's a local path that requires a drive letter.
|
||||
if (decoded_path.length() < 3) {
|
||||
return "";
|
||||
}
|
||||
if (decoded_path[2] != ':' ||
|
||||
!IsASCIIAlpha(decoded_path[1])) {
|
||||
return "";
|
||||
}
|
||||
// Strip out the leading '\'.
|
||||
return decoded_path.substr(1);
|
||||
#else
|
||||
return decoded_path;
|
||||
#endif
|
||||
}
|
||||
|
||||
URL URL::FromFilePath(const std::string& file_path) {
|
||||
URL url("file://");
|
||||
std::string escaped_file_path;
|
||||
|
||||
@@ -177,9 +177,6 @@ class URL {
|
||||
return SerializeURL(context_, false);
|
||||
}
|
||||
|
||||
// Get the path of the file: URL in a format consumable by native file system
|
||||
// APIs. Returns an empty string if something went wrong.
|
||||
std::string ToFilePath() const;
|
||||
// Get the file URL from native file system path.
|
||||
static URL FromFilePath(const std::string& file_path);
|
||||
|
||||
|
||||
@@ -152,36 +152,6 @@ TEST_F(URLTest, TruncatedAfterProtocol2) {
|
||||
EXPECT_EQ(simple.path(), "");
|
||||
}
|
||||
|
||||
TEST_F(URLTest, ToFilePath) {
|
||||
#define T(url, path) EXPECT_EQ(path, URL(url).ToFilePath())
|
||||
T("http://example.org/foo/bar", "");
|
||||
|
||||
#ifdef _WIN32
|
||||
T("file:///C:/Program%20Files/", "C:\\Program Files\\");
|
||||
T("file:///C:/a/b/c?query#fragment", "C:\\a\\b\\c");
|
||||
T("file://host/path/a/b/c?query#fragment", "\\\\host\\path\\a\\b\\c");
|
||||
#if defined(NODE_HAVE_I18N_SUPPORT)
|
||||
T("file://xn--weird-prdj8vva.com/host/a", "\\\\wͪ͊eiͬ͋rd.com\\host\\a");
|
||||
#else
|
||||
T("file://xn--weird-prdj8vva.com/host/a",
|
||||
"\\\\xn--weird-prdj8vva.com\\host\\a");
|
||||
#endif
|
||||
T("file:///C:/a%2Fb", "");
|
||||
T("file:///", "");
|
||||
T("file:///home", "");
|
||||
#else
|
||||
T("file:///", "/");
|
||||
T("file:///home/user?query#fragment", "/home/user");
|
||||
T("file:///home/user/?query#fragment", "/home/user/");
|
||||
T("file:///home/user/%20space", "/home/user/ space");
|
||||
T("file:///home/us%5Cer", "/home/us\\er");
|
||||
T("file:///home/us%2Fer", "");
|
||||
T("file://host/path", "");
|
||||
#endif
|
||||
|
||||
#undef T
|
||||
}
|
||||
|
||||
TEST_F(URLTest, FromFilePath) {
|
||||
URL file_url;
|
||||
#ifdef _WIN32
|
||||
|
||||
Reference in New Issue
Block a user