Adding most commonly used parts of window.console. Fixes Issue#506. r=Ms2ger

This commit is contained in:
Austin King 2014-02-10 23:13:59 -08:00
parent f26cdcf235
commit b1b481f3f3
7 changed files with 102 additions and 0 deletions

View file

@ -136,6 +136,9 @@ DOMInterfaces = {
'nativeType': 'ClientRectList',
}],
'Console': {
},
'CSS2Properties': {
'nativeType': 'nsDOMCSSDeclaration',
'prefable': True,

View file

@ -0,0 +1,54 @@
/* 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};
use dom::bindings::codegen::ConsoleBinding;
use dom::window::Window;
pub struct Console {
reflector_: Reflector
}
impl Console {
pub fn new_inherited() -> Console {
Console {
reflector_: Reflector::new()
}
}
pub fn new(window: &Window) -> @mut Console {
reflect_dom_object(@mut Console::new_inherited(), window, ConsoleBinding::Wrap)
}
pub fn Log(&self, message: DOMString) {
println!("{:s}", message);
}
pub fn Debug(&self, message: DOMString) {
println!("{:s}", message);
}
pub fn Info(&self, message: DOMString) {
println!("{:s}", message);
}
pub fn Warn(&self, message: DOMString) {
println!("{:s}", message);
}
pub fn Error(&self, message: DOMString) {
println!("{:s}", message);
}
}
impl Reflectable for Console {
fn reflector<'a>(&'a self) -> &'a Reflector {
&self.reflector_
}
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
&mut self.reflector_
}
}

View file

@ -0,0 +1,20 @@
/* -*- 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/.
*
* References:
* MDN Docs - https://developer.mozilla.org/en-US/docs/Web/API/console
* Draft Spec - http://sideshowbarker.github.io/console-spec/
*
* © Copyright 2014 Mozilla Foundation.
*/
interface Console {
// These should be DOMString message, DOMString message2, ...
void log(DOMString message);
void debug(DOMString message);
void info(DOMString message);
void warn(DOMString message);
void error(DOMString message);
};

View file

@ -55,6 +55,13 @@
};
// Not part of any spec
partial interface Window {
// web developer niceties
readonly attribute Console console;
};
/*Window implements GlobalEventHandlers;
Window implements WindowEventHandlers;*/

View file

@ -9,6 +9,7 @@ use dom::bindings::utils::DOMString;
use dom::document::AbstractDocument;
use dom::eventtarget::{EventTarget, WindowTypeId};
use dom::node::AbstractNode;
use dom::console::Console;
use dom::location::Location;
use dom::navigator::Navigator;
@ -65,6 +66,7 @@ pub struct Window {
page: @mut Page,
script_chan: ScriptChan,
compositor: @ScriptListener,
console: Option<@mut Console>,
timer_chan: SharedChan<TimerControlMsg>,
location: Option<@mut Location>,
navigator: Option<@mut Navigator>,
@ -150,6 +152,13 @@ impl Window {
self.location.unwrap()
}
pub fn Console(&mut self) -> @mut Console {
if self.console.is_none() {
self.console = Some(Console::new(self));
}
self.console.unwrap()
}
pub fn Navigator(&mut self) -> @mut Navigator {
if self.navigator.is_none() {
self.navigator = Some(Navigator::new(self));
@ -246,6 +255,7 @@ impl Window {
page: page,
script_chan: script_chan.clone(),
compositor: compositor,
console: None,
timer_chan: {
let (timer_port, timer_chan): (Port<TimerControlMsg>, SharedChan<TimerControlMsg>) = SharedChan::new();
let id = page.id.clone();

View file

@ -52,6 +52,7 @@ pub mod dom {
pub mod clientrect;
pub mod clientrectlist;
pub mod comment;
pub mod console;
pub mod document;
pub mod documentfragment;
pub mod documenttype;