mirror of
https://github.com/servo/servo.git
synced 2025-06-25 01:24:37 +01:00
basic location
This commit is contained in:
parent
94df5d1cba
commit
ccc7fa7be0
7 changed files with 203 additions and 2 deletions
|
@ -280,6 +280,9 @@ DOMInterfaces = {
|
||||||
'workers': True,
|
'workers': True,
|
||||||
}],
|
}],
|
||||||
|
|
||||||
|
'Location': {
|
||||||
|
},
|
||||||
|
|
||||||
'MozChannel': [
|
'MozChannel': [
|
||||||
{
|
{
|
||||||
'nativeType': 'nsIChannel',
|
'nativeType': 'nsIChannel',
|
||||||
|
|
21
src/components/script/dom/bindings/codegen/Location.webidl
Normal file
21
src/components/script/dom/bindings/codegen/Location.webidl
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||||
|
* You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
*
|
||||||
|
* The origin of this IDL file is
|
||||||
|
* http://www.whatwg.org/specs/web-apps/current-work/#the-location-interface
|
||||||
|
*
|
||||||
|
* © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and
|
||||||
|
* Opera Software ASA. You are granted a license to use, reproduce
|
||||||
|
* and create derivative works of this document.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// No support for [Unforgeable] on interfaces yet
|
||||||
|
//[Unforgeable]
|
||||||
|
interface Location {
|
||||||
|
void assign(DOMString url);
|
||||||
|
void replace(DOMString url);
|
||||||
|
void reload();
|
||||||
|
};
|
||||||
|
Location implements URLUtils;
|
32
src/components/script/dom/bindings/codegen/URLUtils.webidl
Normal file
32
src/components/script/dom/bindings/codegen/URLUtils.webidl
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||||
|
* You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||||
|
*
|
||||||
|
* The origin of this IDL file is
|
||||||
|
* http://url.spec.whatwg.org/#urlutils
|
||||||
|
*
|
||||||
|
* To the extent possible under law, the editors have waived all copyright
|
||||||
|
* and related or neighboring rights to this work. In addition, as of 17
|
||||||
|
* February 2013, the editors have made this specification available under
|
||||||
|
* the Open Web Foundation Agreement Version 1.0, which is available at
|
||||||
|
* http://www.openwebfoundation.org/legal/the-owf-1-0-agreements/owfa-1-0.
|
||||||
|
*/
|
||||||
|
|
||||||
|
[NoInterfaceObject]
|
||||||
|
interface URLUtils {
|
||||||
|
[SetterThrows]
|
||||||
|
/* stringifier */ attribute DOMString href;
|
||||||
|
readonly attribute DOMString origin;
|
||||||
|
|
||||||
|
attribute DOMString protocol;
|
||||||
|
attribute DOMString username;
|
||||||
|
attribute DOMString password;
|
||||||
|
attribute DOMString host;
|
||||||
|
attribute DOMString hostname;
|
||||||
|
attribute DOMString port;
|
||||||
|
attribute DOMString pathname;
|
||||||
|
attribute DOMString search;
|
||||||
|
// attribute URLQuery? query;
|
||||||
|
attribute DOMString hash;
|
||||||
|
};
|
|
@ -14,8 +14,8 @@
|
||||||
[Replaceable] readonly attribute WindowProxy self;*/
|
[Replaceable] readonly attribute WindowProxy self;*/
|
||||||
[Unforgeable] readonly attribute Document document;
|
[Unforgeable] readonly attribute Document document;
|
||||||
attribute DOMString name;
|
attribute DOMString name;
|
||||||
/*[PutForwards=href, Unforgeable] readonly attribute Location location;
|
/* [PutForwards=href, Unforgeable] */ readonly attribute Location location;
|
||||||
readonly attribute History history;
|
/* readonly attribute History history;
|
||||||
[Replaceable] readonly attribute BarProp locationbar;
|
[Replaceable] readonly attribute BarProp locationbar;
|
||||||
[Replaceable] readonly attribute BarProp menubar;
|
[Replaceable] readonly attribute BarProp menubar;
|
||||||
[Replaceable] readonly attribute BarProp personalbar;
|
[Replaceable] readonly attribute BarProp personalbar;
|
||||||
|
|
134
src/components/script/dom/location.rs
Normal file
134
src/components/script/dom/location.rs
Normal file
|
@ -0,0 +1,134 @@
|
||||||
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||||
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||||
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
||||||
|
use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object};
|
||||||
|
use dom::bindings::utils::{DOMString, Fallible};
|
||||||
|
use dom::bindings::codegen::LocationBinding;
|
||||||
|
use dom::window::Window;
|
||||||
|
|
||||||
|
use script_task::{Page};
|
||||||
|
|
||||||
|
pub struct Location {
|
||||||
|
reflector_: Reflector, //XXXjdm cycle: window->Location->window
|
||||||
|
page: @mut Page
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Location {
|
||||||
|
pub fn new_inherited(page: @mut Page) -> Location {
|
||||||
|
Location {
|
||||||
|
reflector_: Reflector::new(),
|
||||||
|
page: page
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn new(window: &Window, page: @mut Page) -> @mut Location {
|
||||||
|
reflect_dom_object(@mut Location::new_inherited(page), window, LocationBinding::Wrap)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Assign(&self, _url: DOMString) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Replace(&self, _url: DOMString) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Reload(&self) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Href(&self) -> DOMString {
|
||||||
|
self.page.url.get_ref().first().to_str()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetHref(&self, _href: DOMString) -> Fallible<()> {
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Origin(&self) -> DOMString {
|
||||||
|
~""
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Protocol(&self) -> DOMString {
|
||||||
|
~""
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetProtocol(&self, _protocol: DOMString) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Username(&self) -> DOMString {
|
||||||
|
~""
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetUsername(&self, _username: DOMString) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Password(&self) -> DOMString {
|
||||||
|
~""
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetPassword(&self, _password: DOMString) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Host(&self) -> DOMString {
|
||||||
|
~""
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetHost(&self, _host: DOMString) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Hostname(&self) -> DOMString {
|
||||||
|
~""
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetHostname(&self, _hostname: DOMString) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Port(&self) -> DOMString {
|
||||||
|
~""
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetPort(&self, _port: DOMString) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Pathname(&self) -> DOMString {
|
||||||
|
~""
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetPathname(&self, _pathname: DOMString) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Search(&self) -> DOMString {
|
||||||
|
~""
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetSearch(&self, _search: DOMString) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn Hash(&self) -> DOMString {
|
||||||
|
~""
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn SetHash(&self, _hash: DOMString) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Reflectable for Location {
|
||||||
|
fn reflector<'a>(&'a self) -> &'a Reflector {
|
||||||
|
&self.reflector_
|
||||||
|
}
|
||||||
|
|
||||||
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
|
&mut self.reflector_
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,6 +8,7 @@ use dom::bindings::utils::DOMString;
|
||||||
use dom::document::AbstractDocument;
|
use dom::document::AbstractDocument;
|
||||||
use dom::eventtarget::{EventTarget, WindowTypeId};
|
use dom::eventtarget::{EventTarget, WindowTypeId};
|
||||||
use dom::node::{AbstractNode, ScriptView};
|
use dom::node::{AbstractNode, ScriptView};
|
||||||
|
use dom::location::Location;
|
||||||
use dom::navigator::Navigator;
|
use dom::navigator::Navigator;
|
||||||
|
|
||||||
use layout_interface::ReflowForDisplay;
|
use layout_interface::ReflowForDisplay;
|
||||||
|
@ -43,6 +44,7 @@ pub struct Window {
|
||||||
script_chan: ScriptChan,
|
script_chan: ScriptChan,
|
||||||
compositor: @ScriptListener,
|
compositor: @ScriptListener,
|
||||||
timer_chan: SharedChan<TimerControlMsg>,
|
timer_chan: SharedChan<TimerControlMsg>,
|
||||||
|
location: Option<@mut Location>,
|
||||||
navigator: Option<@mut Navigator>,
|
navigator: Option<@mut Navigator>,
|
||||||
image_cache_task: ImageCacheTask,
|
image_cache_task: ImageCacheTask,
|
||||||
active_timers: ~HashSet<i32>,
|
active_timers: ~HashSet<i32>,
|
||||||
|
@ -116,6 +118,13 @@ impl Window {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn Location(&mut self) -> @mut Location {
|
||||||
|
if self.location.is_none() {
|
||||||
|
self.location = Some(Location::new(self, self.page));
|
||||||
|
}
|
||||||
|
self.location.unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
pub fn Navigator(&mut self) -> @mut Navigator {
|
pub fn Navigator(&mut self) -> @mut Navigator {
|
||||||
if self.navigator.is_none() {
|
if self.navigator.is_none() {
|
||||||
self.navigator = Some(Navigator::new(self));
|
self.navigator = Some(Navigator::new(self));
|
||||||
|
@ -215,6 +224,7 @@ impl Window {
|
||||||
}
|
}
|
||||||
SharedChan::new(timer_chan)
|
SharedChan::new(timer_chan)
|
||||||
},
|
},
|
||||||
|
location: None,
|
||||||
navigator: None,
|
navigator: None,
|
||||||
image_cache_task: image_cache_task,
|
image_cache_task: image_cache_task,
|
||||||
active_timers: ~HashSet::new(),
|
active_timers: ~HashSet::new(),
|
||||||
|
|
|
@ -130,6 +130,7 @@ pub mod dom {
|
||||||
pub mod htmlulistelement;
|
pub mod htmlulistelement;
|
||||||
pub mod htmlvideoelement;
|
pub mod htmlvideoelement;
|
||||||
pub mod htmlunknownelement;
|
pub mod htmlunknownelement;
|
||||||
|
pub mod location;
|
||||||
pub mod mouseevent;
|
pub mod mouseevent;
|
||||||
pub mod namespace;
|
pub mod namespace;
|
||||||
pub mod navigator;
|
pub mod navigator;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue