Bug 1411932 - rusturl_get_path should not depend on cannot-be-a-base r=baku draft
authorValentin Gosu <valentin.gosu@gmail.com>
Thu, 26 Oct 2017 14:46:25 +0200
changeset 686812 b6622e1c4270629f44f0d263847c47bc06ffb60f
parent 686801 0d1e55d87931fe70ec1d007e886bcd58015ff770
child 737478 2fd35854768ec4fe2de9ac912f5ed5ada1a5f645
push id86299
push uservalentin.gosu@gmail.com
push dateThu, 26 Oct 2017 12:57:13 +0000
reviewersbaku
bugs1411932
milestone58.0a1
Bug 1411932 - rusturl_get_path should not depend on cannot-be-a-base r=baku MozReview-Commit-ID: 7iwBooZWNxW
netwerk/base/rust-url-capi/src/lib.rs
netwerk/test/gtest/TestMozURL.cpp
--- a/netwerk/base/rust-url-capi/src/lib.rs
+++ b/netwerk/base/rust-url-capi/src/lib.rs
@@ -165,37 +165,29 @@ pub extern "C" fn rusturl_get_port(urlpt
 #[no_mangle]
 pub extern "C" fn rusturl_get_filepath(urlptr: Option<&Url>, cont: &mut nsACString) -> nsresult {
   let url = if let Some(url) = urlptr {
     url
   } else {
     return NS_ERROR_INVALID_ARG;
   };
 
-  if url.cannot_be_a_base() {
-      cont.assign("");
-  } else {
-      cont.assign(&url[Position::BeforePath..Position::AfterPath]);
-  }
+  cont.assign(&url.path());
   NS_OK
 }
 
 #[no_mangle]
 pub extern "C" fn rusturl_get_path(urlptr: Option<&Url>, cont: &mut nsACString) -> nsresult {
   let url = if let Some(url) = urlptr {
     url
   } else {
     return NS_ERROR_INVALID_ARG;
   };
 
-  if url.cannot_be_a_base() {
-      cont.assign("");
-  } else {
-      cont.assign(&url[Position::BeforePath..]);
-  }
+  cont.assign(&url[Position::BeforePath..]);
   NS_OK
 }
 
 #[no_mangle]
 pub extern "C" fn rusturl_get_query(urlptr: Option<&Url>, cont: &mut nsACString) -> nsresult {
   let url = if let Some(url) = urlptr {
     url
   } else {
--- a/netwerk/test/gtest/TestMozURL.cpp
+++ b/netwerk/test/gtest/TestMozURL.cpp
@@ -115,16 +115,33 @@ TEST(TestMozURL, InitWithBase)
   RefPtr<MozURL> url2;
   ASSERT_EQ(MozURL::Init(getter_AddRefs(url2), NS_LITERAL_CSTRING("c.png"),
                          url), NS_OK);
 
   ASSERT_EQ(url2->GetSpec(out), NS_OK);
   ASSERT_TRUE(out.EqualsLiteral("https://example.net/a/c.png"));
 }
 
+TEST(TestMozURL, Path)
+{
+  nsAutoCString href("about:blank");
+  RefPtr<MozURL> url;
+  ASSERT_EQ(MozURL::Init(getter_AddRefs(url), href), NS_OK);
+  nsAutoCString out;
+
+  ASSERT_EQ(url->GetSpec(out), NS_OK);
+  ASSERT_TRUE(out.EqualsLiteral("about:blank"));
+
+  ASSERT_EQ(url->GetScheme(out), NS_OK);
+  ASSERT_TRUE(out.EqualsLiteral("about"));
+
+  ASSERT_EQ(url->GetFilePath(out), NS_OK);
+  ASSERT_TRUE(out.EqualsLiteral("blank"));
+}
+
 TEST(TestMozURL, HostPort)
 {
   nsAutoCString href("https://user:pass@example.net:1234/path?query#ref");
   RefPtr<MozURL> url;
   ASSERT_EQ(MozURL::Init(getter_AddRefs(url), href), NS_OK);
   nsAutoCString out;
 
   ASSERT_EQ(url->GetHostPort(out), NS_OK);