add readonly pathname function in location

pathname function implemented in UrlHelper
'url is null' check is skip for now
This commit is contained in:
yodalee 2015-03-27 22:42:56 +08:00
parent db104b738e
commit 77f3b25e65
3 changed files with 15 additions and 1 deletions

View file

@ -46,6 +46,10 @@ impl<'a> LocationMethods for JSRef<'a, Location> {
UrlHelper::Href(&self.get_url()) UrlHelper::Href(&self.get_url())
} }
fn Pathname(self) -> USVString {
UrlHelper::Pathname(&self.get_url())
}
fn Stringify(self) -> DOMString { fn Stringify(self) -> DOMString {
self.Href().0 self.Href().0
} }

View file

@ -4,7 +4,7 @@
use dom::bindings::str::USVString; use dom::bindings::str::USVString;
use url::Url; use url::{Url, SchemeData};
use std::borrow::ToOwned; use std::borrow::ToOwned;
@ -31,6 +31,15 @@ impl UrlHelper {
}) })
} }
pub fn Pathname(url: &Url) -> USVString {
// https://url.spec.whatwg.org/#dom-urlutils-pathname
// FIXME: Url null check is skipped for now
USVString(match url.scheme_data {
SchemeData::NonRelative(ref scheme_data) => scheme_data.clone(),
SchemeData::Relative(..) => url.serialize_path().unwrap()
})
}
/// https://html.spec.whatwg.org/multipage/browsers.html#same-origin /// https://html.spec.whatwg.org/multipage/browsers.html#same-origin
pub fn SameOrigin(urlA: &Url, urlB: &Url) -> bool { pub fn SameOrigin(urlA: &Url, urlB: &Url) -> bool {
if urlA.host() != urlB.host() { if urlA.host() != urlB.host() {

View file

@ -16,6 +16,7 @@ interface URLUtils {
// attribute USVString hostname; // attribute USVString hostname;
// attribute USVString port; // attribute USVString port;
// attribute USVString pathname; // attribute USVString pathname;
readonly attribute USVString pathname;
// attribute USVString search; // attribute USVString search;
readonly attribute USVString search; readonly attribute USVString search;
// attribute URLSearchParams searchParams; // attribute URLSearchParams searchParams;