mirror of
https://github.com/servo/servo.git
synced 2025-08-03 12:40:06 +01:00
Rust upgrade for new master rebase
This commit is contained in:
parent
fe22598c56
commit
a6100563a6
39 changed files with 115 additions and 165 deletions
|
@ -103,7 +103,7 @@ impl FontHandleMethods for FontHandle {
|
||||||
let face_index = 0 as FT_Long;
|
let face_index = 0 as FT_Long;
|
||||||
let result = FT_New_Memory_Face(lib, cbuf, cbuflen as FT_Long,
|
let result = FT_New_Memory_Face(lib, cbuf, cbuflen as FT_Long,
|
||||||
face_index, &mut face);
|
face_index, &mut face);
|
||||||
|
|
||||||
if !result.succeeded() || face.is_null() {
|
if !result.succeeded() || face.is_null() {
|
||||||
return Err(());
|
return Err(());
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,7 +103,7 @@ impl FontHandleMethods for FontHandle {
|
||||||
let face_index = 0 as FT_Long;
|
let face_index = 0 as FT_Long;
|
||||||
let result = FT_New_Memory_Face(lib, cbuf, cbuflen as FT_Long,
|
let result = FT_New_Memory_Face(lib, cbuf, cbuflen as FT_Long,
|
||||||
face_index, &mut face);
|
face_index, &mut face);
|
||||||
|
|
||||||
if !result.succeeded() || face.is_null() {
|
if !result.succeeded() || face.is_null() {
|
||||||
return Err(());
|
return Err(());
|
||||||
}
|
}
|
||||||
|
|
|
@ -191,11 +191,9 @@ impl<C: RenderListener + Send,T:Send+Freeze> RenderTask<C,T> {
|
||||||
render_task.start();
|
render_task.start();
|
||||||
|
|
||||||
// Destroy all the buffers.
|
// Destroy all the buffers.
|
||||||
{
|
match render_task.native_graphics_context.as_ref() {
|
||||||
match render_task.native_graphics_context.as_ref() {
|
Some(ctx) => render_task.buffer_map.clear(ctx),
|
||||||
Some(ctx) => render_task.buffer_map.clear(ctx),
|
None => (),
|
||||||
None => (),
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@ use servo_util::geometry;
|
||||||
use std::cmp::{Ord, Eq};
|
use std::cmp::{Ord, Eq};
|
||||||
use std::num::NumCast;
|
use std::num::NumCast;
|
||||||
use std::mem;
|
use std::mem;
|
||||||
use std::uint;
|
use std::u16;
|
||||||
use std::vec;
|
use std::vec;
|
||||||
use std::iter;
|
use std::iter;
|
||||||
use geom::point::Point2D;
|
use geom::point::Point2D;
|
||||||
|
@ -54,7 +54,7 @@ impl GlyphEntry {
|
||||||
// Create a GlyphEntry for uncommon case; should be accompanied by
|
// Create a GlyphEntry for uncommon case; should be accompanied by
|
||||||
// initialization of the actual DetailedGlyph data in DetailedGlyphStore
|
// initialization of the actual DetailedGlyph data in DetailedGlyphStore
|
||||||
fn complex(starts_cluster: bool, starts_ligature: bool, glyph_count: uint) -> GlyphEntry {
|
fn complex(starts_cluster: bool, starts_ligature: bool, glyph_count: uint) -> GlyphEntry {
|
||||||
assert!(glyph_count <= uint::MAX);
|
assert!(glyph_count <= u16::MAX as uint);
|
||||||
|
|
||||||
debug!("creating complex glyph entry: starts_cluster={}, starts_ligature={}, \
|
debug!("creating complex glyph entry: starts_cluster={}, starts_ligature={}, \
|
||||||
glyph_count={}",
|
glyph_count={}",
|
||||||
|
@ -78,7 +78,7 @@ impl GlyphEntry {
|
||||||
/// Create a GlyphEntry for the case where glyphs couldn't be found for the specified
|
/// Create a GlyphEntry for the case where glyphs couldn't be found for the specified
|
||||||
/// character.
|
/// character.
|
||||||
fn missing(glyph_count: uint) -> GlyphEntry {
|
fn missing(glyph_count: uint) -> GlyphEntry {
|
||||||
assert!(glyph_count <= uint::MAX);
|
assert!(glyph_count <= u16::MAX as uint);
|
||||||
|
|
||||||
GlyphEntry::new((glyph_count as u32) << GLYPH_COUNT_SHIFT)
|
GlyphEntry::new((glyph_count as u32) << GLYPH_COUNT_SHIFT)
|
||||||
}
|
}
|
||||||
|
|
|
@ -228,7 +228,7 @@ impl IOCompositor {
|
||||||
loop {
|
loop {
|
||||||
match (self.port.try_recv(), self.shutting_down) {
|
match (self.port.try_recv(), self.shutting_down) {
|
||||||
(Empty, _) => break,
|
(Empty, _) => break,
|
||||||
|
|
||||||
(Disconnected, _) => break,
|
(Disconnected, _) => break,
|
||||||
|
|
||||||
(Data(Exit(chan)), _) => {
|
(Data(Exit(chan)), _) => {
|
||||||
|
|
|
@ -540,8 +540,7 @@ impl Constellation {
|
||||||
already_sent.insert(pipeline.id);
|
already_sent.insert(pipeline.id);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// If the subframe is in the current frame tree, the compositor needs the new size
|
// If the subframe is in the current frame tree, the compositor needs the new size
|
||||||
for current_frame in self.current_frame().iter() {
|
for current_frame in self.current_frame().iter() {
|
||||||
debug!("Constellation: Sending size for frame in current frame tree.");
|
debug!("Constellation: Sending size for frame in current frame tree.");
|
||||||
|
|
|
@ -122,7 +122,7 @@ impl<'a> Hash for ApplicableDeclarationsCacheQuery<'a> {
|
||||||
for declaration in self.declarations.iter() {
|
for declaration in self.declarations.iter() {
|
||||||
let ptr: uint = unsafe {
|
let ptr: uint = unsafe {
|
||||||
cast::transmute_copy(declaration)
|
cast::transmute_copy(declaration)
|
||||||
};
|
};
|
||||||
ptr.hash(state);
|
ptr.hash(state);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -147,7 +147,7 @@ impl WindowMethods<Application> for Window {
|
||||||
if !self.event_queue.with_mut(|queue| queue.is_empty()) {
|
if !self.event_queue.with_mut(|queue| queue.is_empty()) {
|
||||||
return self.event_queue.with_mut(|queue| queue.shift().unwrap())
|
return self.event_queue.with_mut(|queue| queue.shift().unwrap())
|
||||||
}
|
}
|
||||||
|
|
||||||
glfw::poll_events();
|
glfw::poll_events();
|
||||||
for (_, event) in self.glfw_window.flush_events() {
|
for (_, event) in self.glfw_window.flush_events() {
|
||||||
self.handle_window_event(&self.glfw_window, event);
|
self.handle_window_event(&self.glfw_window, event);
|
||||||
|
|
|
@ -113,9 +113,6 @@ pub mod windowing;
|
||||||
#[path="platform/mod.rs"]
|
#[path="platform/mod.rs"]
|
||||||
pub mod platform;
|
pub mod platform;
|
||||||
|
|
||||||
#[path = "util/mod.rs"]
|
|
||||||
pub mod util;
|
|
||||||
|
|
||||||
#[cfg(not(test), target_os="linux")]
|
#[cfg(not(test), target_os="linux")]
|
||||||
#[cfg(not(test), target_os="macos")]
|
#[cfg(not(test), target_os="macos")]
|
||||||
#[start]
|
#[start]
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
/* 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/. */
|
|
||||||
|
|
||||||
pub use servo_util::cache;
|
|
||||||
|
|
||||||
pub mod task;
|
|
||||||
|
|
|
@ -1,24 +0,0 @@
|
||||||
/* 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 servo_util::task::spawn_named;
|
|
||||||
/*
|
|
||||||
pub fn spawn_listener<'a, A: Send, S: IntoMaybeOwned<'a>>(name: S, f: proc(Port<A>)) -> Chan<A> {
|
|
||||||
let (setup_po, setup_ch) = Chan::new();
|
|
||||||
spawn_named(name, proc() {
|
|
||||||
let (po, ch) = Chan::new();
|
|
||||||
setup_ch.send(ch);
|
|
||||||
f(po);
|
|
||||||
});
|
|
||||||
setup_po.recv()
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn spawn_conversation<'a, A: Send, B: Send, S: IntoMaybeOwned<'a>>(name: S, f: proc(Port<A>, Chan<B>)) -> (Port<B>, Chan<A>) {
|
|
||||||
let (from_child, to_parent) = Chan::new();
|
|
||||||
let to_child = spawn_listener(name, |from_parent| {
|
|
||||||
f(from_parent, to_parent)
|
|
||||||
});
|
|
||||||
(from_child, to_child)
|
|
||||||
}
|
|
||||||
*/
|
|
|
@ -61,7 +61,7 @@ pub fn load_from_memory(buffer: &[u8]) -> Option<Image> {
|
||||||
Some(Image(image.width as u32, image.height as u32, png::RGBA8, image.data))
|
Some(Image(image.width as u32, image.height as u32, png::RGBA8, image.data))
|
||||||
}
|
}
|
||||||
stb_image::ImageF32(_image) => fail!(~"HDR images not implemented"),
|
stb_image::ImageF32(_image) => fail!(~"HDR images not implemented"),
|
||||||
stb_image::Error => None
|
stb_image::Error(_) => None
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,7 +74,7 @@ impl ImageHolder {
|
||||||
// If this is the first time we've called this function, load
|
// If this is the first time we've called this function, load
|
||||||
// the image and store it for the future
|
// the image and store it for the future
|
||||||
if self.image.is_none() {
|
if self.image.is_none() {
|
||||||
let port =
|
let port =
|
||||||
self.local_image_cache.access(|local_image_cache| {
|
self.local_image_cache.access(|local_image_cache| {
|
||||||
local_image_cache.get_image(&self.url)
|
local_image_cache.get_image(&self.url)
|
||||||
});
|
});
|
||||||
|
|
|
@ -481,6 +481,18 @@ fn load_image_data(url: Url, resource_task: ResourceTask) -> Result<~[u8], ()> {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
pub fn spawn_listener<A: Send>(f: proc(Port<A>)) -> Chan<A> {
|
||||||
|
let (setup_port, setup_chan) = Chan::new();
|
||||||
|
|
||||||
|
spawn(proc() {
|
||||||
|
let (port, chan) = Chan::new();
|
||||||
|
setup_chan.send(chan);
|
||||||
|
f(port);
|
||||||
|
});
|
||||||
|
setup_port.recv()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
@ -488,11 +500,11 @@ mod tests {
|
||||||
use resource_task;
|
use resource_task;
|
||||||
use resource_task::{ResourceTask, Metadata, start_sending};
|
use resource_task::{ResourceTask, Metadata, start_sending};
|
||||||
use image::base::test_image_bin;
|
use image::base::test_image_bin;
|
||||||
use util::spawn_listener;
|
|
||||||
use servo_util::url::parse_url;
|
use servo_util::url::parse_url;
|
||||||
|
use std::comm::{Empty, Data, Disconnected};
|
||||||
|
|
||||||
fn mock_resource_task(on_load: proc(resource: Chan<resource_task::ProgressMsg>)) -> ResourceTask {
|
fn mock_resource_task(on_load: proc(resource: Chan<resource_task::ProgressMsg>)) -> ResourceTask {
|
||||||
spawn_listener("mock_resource_task", proc(port: Port<resource_task::ControlMsg>) {
|
spawn_listener(proc(port: Port<resource_task::ControlMsg>) {
|
||||||
loop {
|
loop {
|
||||||
match port.recv() {
|
match port.recv() {
|
||||||
resource_task::Load(_, response) => {
|
resource_task::Load(_, response) => {
|
||||||
|
@ -564,7 +576,10 @@ mod tests {
|
||||||
url_requested.recv();
|
url_requested.recv();
|
||||||
image_cache_task.exit();
|
image_cache_task.exit();
|
||||||
mock_resource_task.send(resource_task::Exit);
|
mock_resource_task.send(resource_task::Exit);
|
||||||
assert!(url_requested.try_recv().is_none())
|
match url_requested.try_recv() {
|
||||||
|
Empty | Disconnected => (),
|
||||||
|
Data(_) => assert!(false),
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -658,7 +673,7 @@ mod tests {
|
||||||
|
|
||||||
let (resource_task_exited, resource_task_exited_chan) = Chan::new();
|
let (resource_task_exited, resource_task_exited_chan) = Chan::new();
|
||||||
|
|
||||||
let mock_resource_task = spawn_listener("should_not...already_available", proc(port: Port<resource_task::ControlMsg>) {
|
let mock_resource_task = spawn_listener(proc(port: Port<resource_task::ControlMsg>) {
|
||||||
loop {
|
loop {
|
||||||
match port.recv() {
|
match port.recv() {
|
||||||
resource_task::Load(_, response) => {
|
resource_task::Load(_, response) => {
|
||||||
|
@ -692,7 +707,10 @@ mod tests {
|
||||||
|
|
||||||
// Our resource task should not have received another request for the image
|
// Our resource task should not have received another request for the image
|
||||||
// because it's already cached
|
// because it's already cached
|
||||||
assert!(image_bin_sent.try_recv().is_none());
|
match image_bin_sent.try_recv() {
|
||||||
|
Empty | Disconnected => (),
|
||||||
|
Data(_) => assert!(false),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
@ -701,7 +719,7 @@ mod tests {
|
||||||
|
|
||||||
let (resource_task_exited, resource_task_exited_chan) = Chan::new();
|
let (resource_task_exited, resource_task_exited_chan) = Chan::new();
|
||||||
|
|
||||||
let mock_resource_task = spawn_listener("should_not...already_failed", proc(port: Port<resource_task::ControlMsg>) {
|
let mock_resource_task = spawn_listener(proc(port: Port<resource_task::ControlMsg>) {
|
||||||
loop {
|
loop {
|
||||||
match port.recv() {
|
match port.recv() {
|
||||||
resource_task::Load(_, response) => {
|
resource_task::Load(_, response) => {
|
||||||
|
@ -737,7 +755,10 @@ mod tests {
|
||||||
|
|
||||||
// Our resource task should not have received another request for the image
|
// Our resource task should not have received another request for the image
|
||||||
// because it's already cached
|
// because it's already cached
|
||||||
assert!(image_bin_sent.try_recv().is_none());
|
match image_bin_sent.try_recv() {
|
||||||
|
Empty | Disconnected => (),
|
||||||
|
Data(_) => assert!(false),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
|
@ -33,5 +33,4 @@ pub mod data_loader;
|
||||||
pub mod image_cache_task;
|
pub mod image_cache_task;
|
||||||
pub mod local_image_cache;
|
pub mod local_image_cache;
|
||||||
pub mod resource_task;
|
pub mod resource_task;
|
||||||
pub mod util;
|
|
||||||
|
|
||||||
|
|
|
@ -143,18 +143,6 @@ fn create_resource_task_with_loaders(loaders: ~[(~str, LoaderTaskFactory)]) -> R
|
||||||
ResourceManager(port, loaders).start();
|
ResourceManager(port, loaders).start();
|
||||||
});
|
});
|
||||||
setup_port.recv()
|
setup_port.recv()
|
||||||
|
|
||||||
// FIXME: code cloned from spawn_listener due to:
|
|
||||||
// error: internal compiler error: cannot relate bound region: ReLateBound(6270, BrNamed(syntax::ast::DefId{krate: 0u32, node: 6294u32}, a)) <= ReInfer(1)
|
|
||||||
//This message reflects a bug in the Rust compiler.
|
|
||||||
|
|
||||||
/*
|
|
||||||
let chan = spawn_listener("ResourceManager", proc(from_client) {
|
|
||||||
// TODO: change copy to move once we can move out of closures
|
|
||||||
ResourceManager(from_client, loaders).start()
|
|
||||||
});
|
|
||||||
chan
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct ResourceManager {
|
pub struct ResourceManager {
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
/* 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 std::comm::{Chan, Port};
|
|
||||||
use servo_util::task::spawn_named;*/
|
|
||||||
|
|
||||||
|
|
||||||
// FIXME: code cloned from spawn_listener due to:
|
|
||||||
// error: internal compiler error: cannot relate bound region: ReLateBound(6270, BrNamed(syntax::ast::DefId{krate: 0u32, node: 6294u32}, a)) <= ReInfer(1)
|
|
||||||
//This message reflects a bug in the Rust compiler.
|
|
||||||
|
|
||||||
/*
|
|
||||||
pub fn spawn_listener<'a, A: Send, S: IntoMaybeOwned<'a>>(name: S, f: proc(Port<A>)) -> Chan<A> {
|
|
||||||
let (setup_port, setup_chan) = Chan::new();
|
|
||||||
spawn_named(name, proc() {
|
|
||||||
let (port, chan) = Chan::new();
|
|
||||||
setup_chan.send(chan);
|
|
||||||
f(port);
|
|
||||||
});
|
|
||||||
setup_port.recv()
|
|
||||||
}
|
|
||||||
*/
|
|
|
@ -370,7 +370,7 @@ class CGMethodCall(CGThing):
|
||||||
|
|
||||||
overloadCGThings = []
|
overloadCGThings = []
|
||||||
overloadCGThings.append(
|
overloadCGThings.append(
|
||||||
CGGeneric("let argcount = cmp::min(argc,%d);" %
|
CGGeneric("let argcount = cmp::min(argc, %d);" %
|
||||||
maxArgCount))
|
maxArgCount))
|
||||||
overloadCGThings.append(
|
overloadCGThings.append(
|
||||||
CGSwitch("argcount",
|
CGSwitch("argcount",
|
||||||
|
@ -3894,7 +3894,7 @@ class CGProxyUnwrap(CGAbstractMethod):
|
||||||
}*/
|
}*/
|
||||||
//MOZ_ASSERT(IsProxy(obj));
|
//MOZ_ASSERT(IsProxy(obj));
|
||||||
let box_: *%s = cast::transmute(GetProxyPrivate(obj).to_private());
|
let box_: *%s = cast::transmute(GetProxyPrivate(obj).to_private());
|
||||||
return cast::transmute(&*box_);""" % (self.descriptor.concreteType)
|
return box_;""" % (self.descriptor.concreteType)
|
||||||
|
|
||||||
class CGDOMJSProxyHandler_getOwnPropertyDescriptor(CGAbstractExternMethod):
|
class CGDOMJSProxyHandler_getOwnPropertyDescriptor(CGAbstractExternMethod):
|
||||||
def __init__(self, descriptor):
|
def __init__(self, descriptor):
|
||||||
|
@ -4203,7 +4203,7 @@ class CGAbstractClassHook(CGAbstractExternMethod):
|
||||||
|
|
||||||
def definition_body_prologue(self):
|
def definition_body_prologue(self):
|
||||||
return """
|
return """
|
||||||
let this: *%s = &*unwrap::<*%s>(obj);
|
let this: *%s = unwrap::<*%s>(obj);
|
||||||
""" % (self.descriptor.concreteType, self.descriptor.concreteType)
|
""" % (self.descriptor.concreteType, self.descriptor.concreteType)
|
||||||
|
|
||||||
def definition_body(self):
|
def definition_body(self):
|
||||||
|
|
|
@ -732,6 +732,8 @@ enum CloneChildrenFlag {
|
||||||
DoNotCloneChildren
|
DoNotCloneChildren
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn as_uintptr<T>(t: &T) -> uintptr_t { t as *T as uintptr_t }
|
||||||
|
|
||||||
impl Node {
|
impl Node {
|
||||||
pub fn ancestors(&self) -> AncestorIterator {
|
pub fn ancestors(&self) -> AncestorIterator {
|
||||||
AncestorIterator {
|
AncestorIterator {
|
||||||
|
@ -1564,7 +1566,7 @@ impl Node {
|
||||||
match prev_text {
|
match prev_text {
|
||||||
Some(ref text_node) => {
|
Some(ref text_node) => {
|
||||||
let mut prev_characterdata: JS<CharacterData> = CharacterDataCast::to(text_node);
|
let mut prev_characterdata: JS<CharacterData> = CharacterDataCast::to(text_node);
|
||||||
prev_characterdata.get_mut().AppendData(characterdata.get().Data());
|
let _ = prev_characterdata.get_mut().AppendData(characterdata.get().Data());
|
||||||
abstract_self.remove_child(&mut child);
|
abstract_self.remove_child(&mut child);
|
||||||
},
|
},
|
||||||
None => prev_text = Some(child)
|
None => prev_text = Some(child)
|
||||||
|
@ -1685,20 +1687,18 @@ impl Node {
|
||||||
}
|
}
|
||||||
|
|
||||||
if lastself != lastother {
|
if lastself != lastother {
|
||||||
unsafe {
|
let abstract_uint: uintptr_t = as_uintptr(&abstract_self.get());
|
||||||
let abstract_uint: uintptr_t = cast::transmute(abstract_self.get());
|
let other_uint: uintptr_t = as_uintptr(&other.get());
|
||||||
let other_uint: uintptr_t = cast::transmute(other.get());
|
|
||||||
|
let random = if abstract_uint < other_uint {
|
||||||
let random = if abstract_uint < other_uint {
|
NodeConstants::DOCUMENT_POSITION_FOLLOWING
|
||||||
NodeConstants::DOCUMENT_POSITION_FOLLOWING
|
} else {
|
||||||
} else {
|
NodeConstants::DOCUMENT_POSITION_PRECEDING
|
||||||
NodeConstants::DOCUMENT_POSITION_PRECEDING
|
};
|
||||||
};
|
// step 3.
|
||||||
// step 3.
|
return random +
|
||||||
return random +
|
NodeConstants::DOCUMENT_POSITION_DISCONNECTED +
|
||||||
NodeConstants::DOCUMENT_POSITION_DISCONNECTED +
|
NodeConstants::DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;
|
||||||
NodeConstants::DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for child in lastself.traverse_preorder() {
|
for child in lastself.traverse_preorder() {
|
||||||
|
|
|
@ -893,7 +893,7 @@ impl ScriptTask {
|
||||||
// "load" event as soon as we've finished executing all scripts parsed during
|
// "load" event as soon as we've finished executing all scripts parsed during
|
||||||
// the initial load.
|
// the initial load.
|
||||||
let mut event = Event::new(&window);
|
let mut event = Event::new(&window);
|
||||||
let _ = event.get_mut().InitEvent(~"load", false, false);
|
event.get_mut().InitEvent(~"load", false, false);
|
||||||
let doctarget = EventTargetCast::from(&document);
|
let doctarget = EventTargetCast::from(&document);
|
||||||
let mut wintarget: JS<EventTarget> = EventTargetCast::from(&window);
|
let mut wintarget: JS<EventTarget> = EventTargetCast::from(&window);
|
||||||
let winclone = wintarget.clone();
|
let winclone = wintarget.clone();
|
||||||
|
@ -1131,7 +1131,7 @@ impl ScriptTask {
|
||||||
} else {
|
} else {
|
||||||
let ConstellationChan(ref chan) = self.constellation_chan;
|
let ConstellationChan(ref chan) = self.constellation_chan;
|
||||||
chan.send(LoadUrlMsg(page.id, url));
|
chan.send(LoadUrlMsg(page.id, url));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
|
|
||||||
#[allow(non_camel_case_types)];
|
#[allow(non_camel_case_types)];
|
||||||
|
|
||||||
use std::ascii::StrAsciiExt;
|
|
||||||
pub use servo_util::url::parse_url;
|
pub use servo_util::url::parse_url;
|
||||||
use sync::Arc;
|
use sync::Arc;
|
||||||
pub use extra::url::Url;
|
pub use extra::url::Url;
|
||||||
|
@ -340,7 +339,7 @@ pub mod longhands {
|
||||||
&Dimension(ref value, ref unit) if value.value >= 0.
|
&Dimension(ref value, ref unit) if value.value >= 0.
|
||||||
=> specified::Length::parse_dimension(value.value, unit.as_slice())
|
=> specified::Length::parse_dimension(value.value, unit.as_slice())
|
||||||
.map(SpecifiedLength),
|
.map(SpecifiedLength),
|
||||||
&Ident(ref value) if unsafe { value.to_ascii_nocheck().to_lower().eq_ignore_case("normal".to_ascii_nocheck())}
|
&Ident(ref value) if unsafe { value.to_ascii_nocheck().eq_ignore_case("normal".to_ascii_nocheck())}
|
||||||
=> Some(SpecifiedNormal),
|
=> Some(SpecifiedNormal),
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
|
@ -472,7 +471,7 @@ pub mod longhands {
|
||||||
|
|
||||||
"normal" => return Some(normal),
|
"normal" => return Some(normal),
|
||||||
"none" => return Some(none),
|
"none" => return Some(none),
|
||||||
_ => ()
|
_ => ()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -514,7 +513,7 @@ pub mod longhands {
|
||||||
let image_url = parse_url(url.as_slice(), Some(base_url.clone()));
|
let image_url = parse_url(url.as_slice(), Some(base_url.clone()));
|
||||||
Some(Some(image_url))
|
Some(Some(image_url))
|
||||||
},
|
},
|
||||||
&ast::Ident(ref value) if "none" == value.to_ascii_lower() => Some(None),
|
&ast::Ident(ref value) if unsafe {value.to_ascii_nocheck()}.eq_ignore_case(unsafe {"none".to_ascii_nocheck()}) => Some(None),
|
||||||
_ => None,
|
_ => None,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -978,7 +977,7 @@ pub mod shorthands {
|
||||||
// font-style, font-weight and font-variant.
|
// font-style, font-weight and font-variant.
|
||||||
// Leaves the values to None, 'normal' is the initial value for each of them.
|
// Leaves the values to None, 'normal' is the initial value for each of them.
|
||||||
if get_ident_lower(component_value).filtered(
|
if get_ident_lower(component_value).filtered(
|
||||||
|v| unsafe { v.to_ascii_nocheck() }.to_lower().eq_ignore_case(unsafe {"normal".to_ascii_nocheck()})).is_some() {
|
|v| unsafe { v.to_ascii_nocheck() }.eq_ignore_case(unsafe {"normal".to_ascii_nocheck()})).is_some() {
|
||||||
nb_normals += 1;
|
nb_normals += 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -1131,7 +1130,8 @@ impl PropertyDeclaration {
|
||||||
result_list: &mut ~[PropertyDeclaration],
|
result_list: &mut ~[PropertyDeclaration],
|
||||||
base_url: &Url) -> PropertyDeclarationParseResult {
|
base_url: &Url) -> PropertyDeclarationParseResult {
|
||||||
// FIXME: local variable to work around Rust #10683
|
// FIXME: local variable to work around Rust #10683
|
||||||
let name_lower = name.to_ascii_lower();
|
let tmp_for_lifetime = unsafe {name.to_ascii_nocheck()}.to_lower();
|
||||||
|
let name_lower = tmp_for_lifetime.as_str_ascii();
|
||||||
match name_lower.as_slice() {
|
match name_lower.as_slice() {
|
||||||
% for property in LONGHANDS:
|
% for property in LONGHANDS:
|
||||||
"${property.name}" => result_list.push(${property.ident}_declaration(
|
"${property.name}" => result_list.push(${property.ident}_declaration(
|
||||||
|
|
|
@ -869,7 +869,7 @@ fn matches_last_child<E:TElement,N:TNode<E>>(element: &N) -> bool {
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use extra::arc::Arc;
|
use sync::Arc;
|
||||||
use super::{MatchedProperty, Rule, SelectorMap};
|
use super::{MatchedProperty, Rule, SelectorMap};
|
||||||
|
|
||||||
/// Helper method to get some Rules from selector strings.
|
/// Helper method to get some Rules from selector strings.
|
||||||
|
|
|
@ -577,7 +577,7 @@ fn skip_whitespace(iter: &mut Iter) -> bool {
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use extra::arc::Arc;
|
use sync::Arc;
|
||||||
use cssparser;
|
use cssparser;
|
||||||
use servo_util::namespace;
|
use servo_util::namespace;
|
||||||
use namespaces::NamespaceMap;
|
use namespaces::NamespaceMap;
|
||||||
|
|
|
@ -9,6 +9,9 @@ use std::rand;
|
||||||
use std::vec::Items;
|
use std::vec::Items;
|
||||||
use std::vec;
|
use std::vec;
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
use std::cell::Cell;
|
||||||
|
|
||||||
pub trait Cache<K: Eq, V: Clone> {
|
pub trait Cache<K: Eq, V: Clone> {
|
||||||
fn insert(&mut self, key: K, value: V);
|
fn insert(&mut self, key: K, value: V);
|
||||||
fn find(&mut self, key: &K) -> Option<V>;
|
fn find(&mut self, key: &K) -> Option<V>;
|
||||||
|
@ -57,8 +60,8 @@ impl<K: Clone + Eq, V: Clone> Cache<K,V> for MonoCache<K,V> {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_monocache() {
|
fn test_monocache() {
|
||||||
let mut cache = MonoCache::new(10);
|
let mut cache = MonoCache::new(10);
|
||||||
let one = ~"one";
|
let one = Cell::new("one");
|
||||||
let two = ~"two";
|
let two = Cell::new("two");
|
||||||
cache.insert(1, one);
|
cache.insert(1, one);
|
||||||
|
|
||||||
assert!(cache.find(&1).is_some());
|
assert!(cache.find(&1).is_some());
|
||||||
|
@ -104,8 +107,8 @@ impl<K: Clone + Eq + Hash, V: Clone> Cache<K,V> for HashCache<K,V> {
|
||||||
#[test]
|
#[test]
|
||||||
fn test_hashcache() {
|
fn test_hashcache() {
|
||||||
let mut cache = HashCache::new();
|
let mut cache = HashCache::new();
|
||||||
let one = ~"one";
|
let one = Cell::new("one");
|
||||||
let two = ~"two";
|
let two = Cell::new("two");
|
||||||
|
|
||||||
cache.insert(1, one);
|
cache.insert(1, one);
|
||||||
assert!(cache.find(&1).is_some());
|
assert!(cache.find(&1).is_some());
|
||||||
|
@ -244,10 +247,10 @@ impl<K:Clone+Eq+Hash,V:Clone> Cache<K,V> for SimpleHashCache<K,V> {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_lru_cache() {
|
fn test_lru_cache() {
|
||||||
let one = ~"one";
|
let one = Cell::new("one");
|
||||||
let two = ~"two";
|
let two = Cell::new("two");
|
||||||
let three = ~"three";
|
let three = Cell::new("three");
|
||||||
let four = ~"four";
|
let four = Cell::new("four");
|
||||||
|
|
||||||
// Test normal insertion.
|
// Test normal insertion.
|
||||||
let mut cache = LRUCache::new(2); // (_, _) (cache is empty)
|
let mut cache = LRUCache::new(2); // (_, _) (cache is empty)
|
||||||
|
|
|
@ -482,7 +482,7 @@ impl<'a,K,V> Iterator<(&'a K, &'a V)> for ConcurrentHashMapIterator<'a,K,V> {
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
pub mod test {
|
pub mod test {
|
||||||
use extra::arc::Arc;
|
use sync::Arc;
|
||||||
use native;
|
use native;
|
||||||
|
|
||||||
use concurrentmap::ConcurrentHashMap;
|
use concurrentmap::ConcurrentHashMap;
|
||||||
|
@ -490,7 +490,7 @@ pub mod test {
|
||||||
#[test]
|
#[test]
|
||||||
pub fn smoke() {
|
pub fn smoke() {
|
||||||
let m = Arc::new(ConcurrentHashMap::new());
|
let m = Arc::new(ConcurrentHashMap::new());
|
||||||
let (port, chan) = SharedChan::new();
|
let (port, chan) = Chan::new();
|
||||||
|
|
||||||
// Big enough to make it resize once.
|
// Big enough to make it resize once.
|
||||||
for i in range(0, 5) {
|
for i in range(0, 5) {
|
||||||
|
|
|
@ -34,13 +34,13 @@ impl Eq for Au {
|
||||||
fn eq(&self, other: &Au) -> bool {
|
fn eq(&self, other: &Au) -> bool {
|
||||||
let Au(s) = *self;
|
let Au(s) = *self;
|
||||||
let Au(o) = *other;
|
let Au(o) = *other;
|
||||||
s==o
|
s == o
|
||||||
}
|
}
|
||||||
#[inline]
|
#[inline]
|
||||||
fn ne(&self, other: &Au) -> bool {
|
fn ne(&self, other: &Au) -> bool {
|
||||||
let Au(s) = *self;
|
let Au(s) = *self;
|
||||||
let Au(o) = *other;
|
let Au(o) = *other;
|
||||||
s!=o
|
s != o
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ impl Add<Au,Au> for Au {
|
||||||
fn add(&self, other: &Au) -> Au {
|
fn add(&self, other: &Au) -> Au {
|
||||||
let Au(s) = *self;
|
let Au(s) = *self;
|
||||||
let Au(o) = *other;
|
let Au(o) = *other;
|
||||||
Au(s+o)
|
Au(s + o)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ impl Sub<Au,Au> for Au {
|
||||||
fn sub(&self, other: &Au) -> Au {
|
fn sub(&self, other: &Au) -> Au {
|
||||||
let Au(s) = *self;
|
let Au(s) = *self;
|
||||||
let Au(o) = *other;
|
let Au(o) = *other;
|
||||||
Au(s-o)
|
Au(s - o)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ impl Mul<Au,Au> for Au {
|
||||||
fn mul(&self, other: &Au) -> Au {
|
fn mul(&self, other: &Au) -> Au {
|
||||||
let Au(s) = *self;
|
let Au(s) = *self;
|
||||||
let Au(o) = *other;
|
let Au(o) = *other;
|
||||||
Au(s*o)
|
Au(s * o)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ impl Div<Au,Au> for Au {
|
||||||
fn div(&self, other: &Au) -> Au {
|
fn div(&self, other: &Au) -> Au {
|
||||||
let Au(s) = *self;
|
let Au(s) = *self;
|
||||||
let Au(o) = *other;
|
let Au(o) = *other;
|
||||||
Au(s/o)
|
Au(s / o)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,7 +86,7 @@ impl Rem<Au,Au> for Au {
|
||||||
fn rem(&self, other: &Au) -> Au {
|
fn rem(&self, other: &Au) -> Au {
|
||||||
let Au(s) = *self;
|
let Au(s) = *self;
|
||||||
let Au(o) = *other;
|
let Au(o) = *other;
|
||||||
Au(s%o)
|
Au(s % o)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,25 +103,25 @@ impl Ord for Au {
|
||||||
fn lt(&self, other: &Au) -> bool {
|
fn lt(&self, other: &Au) -> bool {
|
||||||
let Au(s) = *self;
|
let Au(s) = *self;
|
||||||
let Au(o) = *other;
|
let Au(o) = *other;
|
||||||
s<o
|
s < o
|
||||||
}
|
}
|
||||||
#[inline]
|
#[inline]
|
||||||
fn le(&self, other: &Au) -> bool {
|
fn le(&self, other: &Au) -> bool {
|
||||||
let Au(s) = *self;
|
let Au(s) = *self;
|
||||||
let Au(o) = *other;
|
let Au(o) = *other;
|
||||||
s<=o
|
s <= o
|
||||||
}
|
}
|
||||||
#[inline]
|
#[inline]
|
||||||
fn ge(&self, other: &Au) -> bool {
|
fn ge(&self, other: &Au) -> bool {
|
||||||
let Au(s) = *self;
|
let Au(s) = *self;
|
||||||
let Au(o) = *other;
|
let Au(o) = *other;
|
||||||
s>=o
|
s >= o
|
||||||
}
|
}
|
||||||
#[inline]
|
#[inline]
|
||||||
fn gt(&self, other: &Au) -> bool {
|
fn gt(&self, other: &Au) -> bool {
|
||||||
let Au(s) = *self;
|
let Au(s) = *self;
|
||||||
let Au(o) = *other;
|
let Au(o) = *other;
|
||||||
s>o
|
s > o
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,7 +136,7 @@ impl Zero for Au {
|
||||||
#[inline]
|
#[inline]
|
||||||
fn is_zero(&self) -> bool {
|
fn is_zero(&self) -> bool {
|
||||||
let Au(s) = *self;
|
let Au(s) = *self;
|
||||||
s==0
|
s == 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -239,7 +239,7 @@ impl Au {
|
||||||
let Au(yi) = y;
|
let Au(yi) = y;
|
||||||
if xi < yi { x } else { y }
|
if xi < yi { x } else { y }
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn max(x: Au, y: Au) -> Au {
|
pub fn max(x: Au, y: Au) -> Au {
|
||||||
let Au(xi) = x;
|
let Au(xi) = x;
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 27bd48201ba241704b65f808b703b688a53af18d
|
Subproject commit fbbb7c93c09ba20e827bdb20506da2b6c9d901c4
|
|
@ -1 +1 @@
|
||||||
Subproject commit cac56f2e41ee8c9473f5ef59963ff5ea5b3e93e5
|
Subproject commit 1c583b83da60bf4bb1a002075282d6918441929c
|
|
@ -1 +1 @@
|
||||||
Subproject commit c993ff32e12b37cc3c4559d2442aa497a8f1c312
|
Subproject commit 520b19313f4a684caf3c519d685a93d83479ee65
|
|
@ -1 +1 @@
|
||||||
Subproject commit 3b1f121175faccc05cd60387b06cbe2cd4355ec4
|
Subproject commit 8c1cbd6817241e7f13a985a79a904f1cfac7899e
|
|
@ -1 +1 @@
|
||||||
Subproject commit b03ed6b97ddc489690c58b057e508c41f2ed59bc
|
Subproject commit eb5dd25933f521b0a1bfdd26da1f9e7fff27a26a
|
|
@ -1 +1 @@
|
||||||
Subproject commit beb749916d07c16892cdc18f188bbc8fc2f22e76
|
Subproject commit 71e97b1e9f5f93d0f4aa3ec4b6d271b55e1055f2
|
|
@ -1 +1 @@
|
||||||
Subproject commit 91a8a1a967e55ba03e710f6eaa56cf91e702dff1
|
Subproject commit c29c94e8e14a87e3184d0273e025308d5d0a316e
|
|
@ -1 +1 @@
|
||||||
Subproject commit b52d5496184a99a329f4eee96b9d57b810acbb0c
|
Subproject commit 3c4f326b0ddd7bf47966facb56c40d76bfb6cec3
|
|
@ -1 +1 @@
|
||||||
Subproject commit 4c25d24081ceb22f36244843e5e506bfaa481d08
|
Subproject commit b19f248d8ef71f2c762ec41d8ed6b67cd330926c
|
|
@ -1 +1 @@
|
||||||
Subproject commit 0dc0704215de008081d96a2a82dd5cc2143d7b72
|
Subproject commit c94949f8c567e17c1594931ec62c7857ed24b047
|
|
@ -1 +1 @@
|
||||||
Subproject commit 626605f83c3451e8458de04c1c516d6fc7069690
|
Subproject commit fb4c04ac4caf9406b117f31df04fe8567f56b663
|
|
@ -36,7 +36,7 @@
|
||||||
is_not(new_div, null, "test4-0, append an invalid element to a new document");
|
is_not(new_div, null, "test4-0, append an invalid element to a new document");
|
||||||
|
|
||||||
should_throw(function() {
|
should_throw(function() {
|
||||||
new_document.body = new_div;
|
new_document.body = new_div;
|
||||||
});
|
});
|
||||||
is(new_document.body, null, "test4-1, append an invalid element to a new document");
|
is(new_document.body, null, "test4-1, append an invalid element to a new document");
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,13 +69,13 @@ fn parse_lists(filenames: &[~str], servo_args: &[~str]) -> ~[TestDescAndFn] {
|
||||||
let mut next_id = 0;
|
let mut next_id = 0;
|
||||||
for file in filenames.iter() {
|
for file in filenames.iter() {
|
||||||
let file_path = Path::new(file.clone());
|
let file_path = Path::new(file.clone());
|
||||||
let contents = match File::open_mode(&file_path, io::Open, io::Read) {
|
let contents = match File::open_mode(&file_path, io::Open, io::Read)
|
||||||
Ok(mut f) => str::from_utf8_owned(match f.read_to_end() {
|
.and_then(|mut f| {
|
||||||
Ok(s) => s,
|
f.read_to_end()
|
||||||
|
}) {
|
||||||
|
Ok(s) => str::from_utf8_owned(s),
|
||||||
_ => fail!("Could not read file"),
|
_ => fail!("Could not read file"),
|
||||||
}),
|
};
|
||||||
_ => fail!("Could not convert file")
|
|
||||||
};
|
|
||||||
|
|
||||||
for line in contents.unwrap().lines() {
|
for line in contents.unwrap().lines() {
|
||||||
// ignore comments
|
// ignore comments
|
||||||
|
@ -149,7 +149,7 @@ fn check_reftest(reftest: Reftest) {
|
||||||
let right = capture(&reftest, 1);
|
let right = capture(&reftest, 1);
|
||||||
|
|
||||||
let pixels: ~[u8] = left.pixels.iter().zip(right.pixels.iter()).map(|(&a, &b)| {
|
let pixels: ~[u8] = left.pixels.iter().zip(right.pixels.iter()).map(|(&a, &b)| {
|
||||||
if (a as i8 - b as i8 == 0) {
|
if a as i8 - b as i8 == 0 {
|
||||||
// White for correct
|
// White for correct
|
||||||
0xFF
|
0xFF
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue