stdweb/webapi/location.rs
1use webcore::value::Reference;
2use webapi::dom_exception::SecurityError;
3
4/// The `Location` interface represents the location (URL) of the object it
5/// is linked to. Changes done on it are reflected on the object it relates
6/// to. Both the [Document](struct.Document.html) and [Window](struct.Window.html)
7/// interface have such a linked `Location`, accessible via [Document::location](struct.Document.html#method.location)
8/// and [Window::location](struct.Window.html#method.location) respectively.
9///
10/// Note that all `Location` methods can return a `SecurityError` if the `Location` object's
11/// relevant `Document`'s origin is not same origin-domain with the entry settings object's origin.
12/// See: https://html.spec.whatwg.org/#dom-location-href
13///
14/// [(JavaScript docs)](https://developer.mozilla.org/en-US/docs/Web/API/Location)
15// https://html.spec.whatwg.org/#location
16#[derive(Clone, Debug, PartialEq, Eq, ReferenceType)]
17#[reference(instance_of = "Location")]
18pub struct Location( Reference );
19
20impl Location {
21 /// The entire URL.
22 ///
23 /// [(JavaScript docs)](https://developer.mozilla.org/en-US/docs/Web/API/Location/href)
24 // https://html.spec.whatwg.org/#the-location-interface:dom-location-href
25 pub fn href( &self ) -> Result< String, SecurityError > {
26 js_try!( return @{self}.href; ).unwrap()
27 }
28
29 /// Returns a `String` containing the Unicode serialization of the origin of the represented
30 /// URL, that is:
31 ///
32 /// - For URL using the http or https, the scheme followed by `'://'`, followed by the domain,
33 /// followed by `':'`, followed by the port (the default port, 80 and 443 respectively, if
34 /// explicitely specified);
35 /// - For URL using `file: scheme`, the value is browser dependant.
36 /// - For URL using the blob: scheme, the origin of the URL following blob:. E.g
37 /// "blob:https://mozilla.org" will have "https://mozilla.org".
38 ///
39 /// [(JavaScript docs)](https://developer.mozilla.org/en-US/docs/Web/API/Location/origin)
40 // https://html.spec.whatwg.org/#the-location-interface:dom-location-origin
41 pub fn origin( &self ) -> Result< String, SecurityError > {
42 js_try!( return @{self}.origin; ).unwrap()
43 }
44
45 /// Returns a `String` representing the protocol scheme of the URL, including the final ':'.
46 ///
47 /// Example: `http:`
48 ///
49 /// [(JavaScript docs)](https://developer.mozilla.org/en-US/docs/Web/API/Location/protocol)
50 // https://html.spec.whatwg.org/#the-location-interface:dom-location-protocol
51 pub fn protocol( &self ) -> Result< String, SecurityError > {
52 js_try!( return @{self}.protocol; ).unwrap()
53 }
54
55 /// Returns a `String` containing the host (i.e. hostname) and then, if the port of the
56 /// URL is nonempty, a ':', and the port of the URL.
57 ///
58 /// Example: `hitchhikers.com:4242`
59 ///
60 /// [(JavaScript docs)](https://developer.mozilla.org/en-US/docs/Web/API/Location/host)
61 // https://html.spec.whatwg.org/#the-location-interface:dom-location-host
62 pub fn host( &self ) -> Result< String, SecurityError > {
63 js_try!( return @{self}.host; ).unwrap()
64 }
65
66 /// Returns a `String` which is the domain of the URL
67 ///
68 /// Example: `mozilla.com`
69 ///
70 /// [(JavaScript docs)](https://developer.mozilla.org/en-US/docs/Web/API/Location/hostname)
71 // https://html.spec.whatwg.org/#the-location-interface:dom-location-hostname
72 pub fn hostname( &self ) -> Result< String, SecurityError > {
73 js_try!( return @{self}.hostname; ).unwrap()
74 }
75
76 /// Returns a `String` containing the port number or `""` if there is no port.
77 ///
78 /// [(JavaScript docs)](https://developer.mozilla.org/en-US/docs/Web/API/Location/port)
79 // https://html.spec.whatwg.org/#the-location-interface:dom-location-port
80 pub fn port( &self ) -> Result< String, SecurityError > {
81 js_try!( return @{self}.port; ).unwrap()
82 }
83
84 /// Returns a `String` containing an initial '/' followed by the path of the URL.
85 ///
86 /// [(JavaScript docs)](https://developer.mozilla.org/en-US/docs/Web/API/Location/pathname)
87 // https://html.spec.whatwg.org/#the-location-interface:dom-location-pathname
88 pub fn pathname( &self ) -> Result< String, SecurityError > {
89 js_try!( return @{self}.pathname; ).unwrap()
90 }
91
92 /// Returns a `String` which is a search string, also called a query string, that is a `String`
93 /// containing a '?' followed by the parameters of the URL.
94 ///
95 /// These can then be further parsed via another library.
96 ///
97 /// [(JavaScript docs)](https://developer.mozilla.org/en-US/docs/Web/API/Location/search)
98 // https://html.spec.whatwg.org/#the-location-interface:dom-location-search
99 pub fn search( &self ) -> Result< String, SecurityError > {
100 js_try!( return @{self}.search; ).unwrap()
101 }
102
103 /// Returns a `String` containing a '#' followed by the fragment
104 /// identifier of the URL. The fragment is not percent-decoded.
105 ///
106 /// [(JavaScript docs)](https://developer.mozilla.org/en-US/docs/Web/API/Location/hash)
107 // https://html.spec.whatwg.org/#the-location-interface:dom-location-hash
108 pub fn hash( &self ) -> Result< String, SecurityError > {
109 js_try!( return @{self}.hash; ).unwrap()
110 }
111}