mirror of
https://github.com/servo/servo.git
synced 2025-10-16 16:29:18 +01:00
auto merge of #1270 : evilpie/servo/url, r=jdm
I wasn't sure how to store @window in Location, so I just made it use @Page for now. I was going to implement stringifier, but sadly some of the webidl stuff is like 1 year out of sync.
This commit is contained in:
commit
f6646e17bf
8 changed files with 229 additions and 22 deletions
|
@ -280,6 +280,9 @@ DOMInterfaces = {
|
|||
'workers': True,
|
||||
}],
|
||||
|
||||
'Location': {
|
||||
},
|
||||
|
||||
'MozChannel': [
|
||||
{
|
||||
'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;*/
|
||||
[Unforgeable] readonly attribute Document document;
|
||||
attribute DOMString name;
|
||||
/*[PutForwards=href, Unforgeable] readonly attribute Location location;
|
||||
readonly attribute History history;
|
||||
/* [PutForwards=href, Unforgeable] */ readonly attribute Location location;
|
||||
/* readonly attribute History history;
|
||||
[Replaceable] readonly attribute BarProp locationbar;
|
||||
[Replaceable] readonly attribute BarProp menubar;
|
||||
[Replaceable] readonly attribute BarProp personalbar;
|
||||
|
|
|
@ -29,7 +29,7 @@ use js::jsapi::{JS_ValueToString, JS_GetReservedSlot, JS_SetReservedSlot};
|
|||
use js::jsapi::{JSContext, JSObject, JSBool, jsid, JSClass, JSNative, JSTracer};
|
||||
use js::jsapi::{JSFunctionSpec, JSPropertySpec, JSVal, JSPropertyDescriptor};
|
||||
use js::jsapi::{JSPropertyOp, JSStrictPropertyOp, JS_NewGlobalObject, JS_InitStandardClasses};
|
||||
use js::jsapi::{JSString};
|
||||
use js::jsapi::{JSString, JS_CallTracer, JSTRACE_OBJECT};
|
||||
use js::jsfriendapi::bindgen::JS_NewObjectWithUniqueType;
|
||||
use js::{JSPROP_ENUMERATE, JSVAL_NULL, JSCLASS_IS_GLOBAL, JSCLASS_IS_DOMJSCLASS};
|
||||
use js::{JSPROP_PERMANENT, JSID_VOID, JSPROP_NATIVE_ACCESSORS, JSPROP_GETTER};
|
||||
|
@ -588,6 +588,24 @@ pub trait Traceable {
|
|||
fn trace(&self, trc: *mut JSTracer);
|
||||
}
|
||||
|
||||
#[fixed_stack_segment]
|
||||
pub fn trace_reflector(tracer: *mut JSTracer, description: &str, reflector: &Reflector) {
|
||||
unsafe {
|
||||
do description.to_c_str().with_ref |name| {
|
||||
(*tracer).debugPrinter = ptr::null();
|
||||
(*tracer).debugPrintIndex = -1;
|
||||
(*tracer).debugPrintArg = name as *libc::c_void;
|
||||
debug!("tracing {:s}", description);
|
||||
JS_CallTracer(tracer as *JSTracer, reflector.get_jsobject(),
|
||||
JSTRACE_OBJECT as u32);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn trace_option<T: Reflectable>(tracer: *mut JSTracer, description: &str, option: Option<@mut T>) {
|
||||
option.map(|some| trace_reflector(tracer, description, some.reflector()));
|
||||
}
|
||||
|
||||
#[fixed_stack_segment]
|
||||
pub fn initialize_global(global: *JSObject) {
|
||||
let protoArray = @mut ([0 as *JSObject, ..PrototypeList::id::_ID_Count as uint]);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue