servo: Merge #7203 - Add automated style nit checks to test-tidy (from jdm:style); r=Ms2ger

Expands on the work by @wilmoz and cleans up the existing errors. Closes #7180. Closes #7111.

Source-Repo: https://github.com/servo/servo
Source-Revision: e74825f9fde8e222f4ba9bb24b2c2a3864c73e5f
This commit is contained in:
Josh Matthews 2015-08-16 08:37:40 -06:00
Родитель 42e2e6ee91
Коммит 6a81d499fc
94 изменённых файлов: 489 добавлений и 405 удалений

Просмотреть файл

@ -66,13 +66,13 @@ pub enum FromPaintMsg {
} }
impl Serialize for FromPaintMsg { impl Serialize for FromPaintMsg {
fn serialize<S>(&self, _: &mut S) -> Result<(),S::Error> where S: Serializer { fn serialize<S>(&self, _: &mut S) -> Result<(), S::Error> where S: Serializer {
panic!("can't serialize a `FromPaintMsg`!") panic!("can't serialize a `FromPaintMsg`!")
} }
} }
impl Deserialize for FromPaintMsg { impl Deserialize for FromPaintMsg {
fn deserialize<D>(_: &mut D) -> Result<FromPaintMsg,D::Error> where D: Deserializer { fn deserialize<D>(_: &mut D) -> Result<FromPaintMsg, D::Error> where D: Deserializer {
panic!("can't deserialize a `FromPaintMsg`!") panic!("can't deserialize a `FromPaintMsg`!")
} }
} }

Просмотреть файл

@ -52,7 +52,7 @@ use url::Url;
use util::geometry::{Au, PagePx, ScreenPx, ViewportPx}; use util::geometry::{Au, PagePx, ScreenPx, ViewportPx};
use util::opts; use util::opts;
const BUFFER_MAP_SIZE : usize = 10000000; const BUFFER_MAP_SIZE: usize = 10000000;
/// Holds the state when running reftests that determines when it is /// Holds the state when running reftests that determines when it is
/// safe to save the output image. /// safe to save the output image.
@ -163,8 +163,8 @@ pub struct IOCompositor<Window: WindowMethods> {
} }
pub struct ScrollEvent { pub struct ScrollEvent {
delta: TypedPoint2D<DevicePixel,f32>, delta: TypedPoint2D<DevicePixel, f32>,
cursor: TypedPoint2D<DevicePixel,i32>, cursor: TypedPoint2D<DevicePixel, i32>,
} }
#[derive(PartialEq)] #[derive(PartialEq)]
@ -249,7 +249,7 @@ pub fn reporter_name() -> String {
impl<Window: WindowMethods> IOCompositor<Window> { impl<Window: WindowMethods> IOCompositor<Window> {
fn new(window: Rc<Window>, fn new(window: Rc<Window>,
sender: Box<CompositorProxy+Send>, sender: Box<CompositorProxy + Send>,
receiver: Box<CompositorReceiver>, receiver: Box<CompositorReceiver>,
constellation_chan: ConstellationChan, constellation_chan: ConstellationChan,
time_profiler_chan: time::ProfilerChan, time_profiler_chan: time::ProfilerChan,
@ -312,7 +312,7 @@ impl<Window: WindowMethods> IOCompositor<Window> {
} }
pub fn create(window: Rc<Window>, pub fn create(window: Rc<Window>,
sender: Box<CompositorProxy+Send>, sender: Box<CompositorProxy + Send>,
receiver: Box<CompositorReceiver>, receiver: Box<CompositorReceiver>,
constellation_chan: ConstellationChan, constellation_chan: ConstellationChan,
time_profiler_chan: time::ProfilerChan, time_profiler_chan: time::ProfilerChan,

Просмотреть файл

@ -365,7 +365,7 @@ impl CompositorLayer for Layer<CompositorData> {
let content_size = calculate_content_size_for_layer(self); let content_size = calculate_content_size_for_layer(self);
let min_x = (layer_size.width - content_size.width).get().min(0.0); let min_x = (layer_size.width - content_size.width).get().min(0.0);
let min_y = (layer_size.height - content_size.height).get().min(0.0); let min_y = (layer_size.height - content_size.height).get().min(0.0);
let new_offset : TypedPoint2D<LayerPixel, f32> = let new_offset: TypedPoint2D<LayerPixel, f32> =
Point2D::new(Length::new(new_offset.x.get().clamp(&min_x, &0.0)), Point2D::new(Length::new(new_offset.x.get().clamp(&min_x, &0.0)),
Length::new(new_offset.y.get().clamp(&min_y, &0.0))); Length::new(new_offset.y.get().clamp(&min_y, &0.0)));

Просмотреть файл

@ -37,7 +37,7 @@ pub trait CompositorProxy : 'static + Send {
/// Sends a message to the compositor. /// Sends a message to the compositor.
fn send(&self, msg: Msg); fn send(&self, msg: Msg);
/// Clones the compositor proxy. /// Clones the compositor proxy.
fn clone_compositor_proxy(&self) -> Box<CompositorProxy+'static+Send>; fn clone_compositor_proxy(&self) -> Box<CompositorProxy + 'static + Send>;
} }
/// The port that the compositor receives messages on. As above, this is a trait supplied by the /// The port that the compositor receives messages on. As above, this is a trait supplied by the
@ -88,7 +88,7 @@ pub fn run_script_listener_thread(compositor_proxy: Box<CompositorProxy + 'stati
} }
/// Implementation of the abstract `PaintListener` interface. /// Implementation of the abstract `PaintListener` interface.
impl PaintListener for Box<CompositorProxy+'static+Send> { impl PaintListener for Box<CompositorProxy + 'static + Send> {
fn native_display(&mut self) -> Option<NativeDisplay> { fn native_display(&mut self) -> Option<NativeDisplay> {
let (chan, port) = channel(); let (chan, port) = channel();
self.send(Msg::GetNativeDisplay(chan)); self.send(Msg::GetNativeDisplay(chan));
@ -204,7 +204,7 @@ pub enum Msg {
} }
impl Debug for Msg { impl Debug for Msg {
fn fmt(&self, f: &mut Formatter) -> Result<(),Error> { fn fmt(&self, f: &mut Formatter) -> Result<(), Error> {
match *self { match *self {
Msg::Exit(..) => write!(f, "Exit"), Msg::Exit(..) => write!(f, "Exit"),
Msg::ShutdownComplete(..) => write!(f, "ShutdownComplete"), Msg::ShutdownComplete(..) => write!(f, "ShutdownComplete"),
@ -240,7 +240,7 @@ pub struct CompositorTask;
impl CompositorTask { impl CompositorTask {
pub fn create<Window>(window: Option<Rc<Window>>, pub fn create<Window>(window: Option<Rc<Window>>,
sender: Box<CompositorProxy+Send>, sender: Box<CompositorProxy + Send>,
receiver: Box<CompositorReceiver>, receiver: Box<CompositorReceiver>,
constellation_chan: ConstellationChan, constellation_chan: ConstellationChan,
time_profiler_chan: time::ProfilerChan, time_profiler_chan: time::ProfilerChan,

Просмотреть файл

@ -219,7 +219,7 @@ enum ExitPipelineMode {
} }
impl<LTF: LayoutTaskFactory, STF: ScriptTaskFactory> Constellation<LTF, STF> { impl<LTF: LayoutTaskFactory, STF: ScriptTaskFactory> Constellation<LTF, STF> {
pub fn start(compositor_proxy: Box<CompositorProxy+Send>, pub fn start(compositor_proxy: Box<CompositorProxy + Send>,
resource_task: ResourceTask, resource_task: ResourceTask,
image_cache_task: ImageCacheTask, image_cache_task: ImageCacheTask,
font_cache_task: FontCacheTask, font_cache_task: FontCacheTask,
@ -1019,7 +1019,7 @@ impl<LTF: LayoutTaskFactory, STF: ScriptTaskFactory> Constellation<LTF, STF> {
fn load_url_for_webdriver(&mut self, fn load_url_for_webdriver(&mut self,
pipeline_id: PipelineId, pipeline_id: PipelineId,
load_data:LoadData, load_data: LoadData,
reply: IpcSender<webdriver_msg::LoadStatus>) { reply: IpcSender<webdriver_msg::LoadStatus>) {
let new_pipeline_id = self.load_url(pipeline_id, load_data); let new_pipeline_id = self.load_url(pipeline_id, load_data);
if let Some(id) = new_pipeline_id { if let Some(id) = new_pipeline_id {

Просмотреть файл

@ -67,23 +67,23 @@ impl Pipeline {
/// Starts a paint task, layout task, and possibly a script task. /// Starts a paint task, layout task, and possibly a script task.
/// Returns the channels wrapped in a struct. /// Returns the channels wrapped in a struct.
/// If script_pipeline is not None, then subpage_id must also be not None. /// If script_pipeline is not None, then subpage_id must also be not None.
pub fn create<LTF,STF>(id: PipelineId, pub fn create<LTF, STF>(id: PipelineId,
parent_info: Option<(PipelineId, SubpageId)>, parent_info: Option<(PipelineId, SubpageId)>,
constellation_chan: ConstellationChan, constellation_chan: ConstellationChan,
compositor_proxy: Box<CompositorProxy+'static+Send>, compositor_proxy: Box<CompositorProxy + 'static + Send>,
devtools_chan: Option<Sender<DevtoolsControlMsg>>, devtools_chan: Option<Sender<DevtoolsControlMsg>>,
image_cache_task: ImageCacheTask, image_cache_task: ImageCacheTask,
font_cache_task: FontCacheTask, font_cache_task: FontCacheTask,
resource_task: ResourceTask, resource_task: ResourceTask,
storage_task: StorageTask, storage_task: StorageTask,
time_profiler_chan: time::ProfilerChan, time_profiler_chan: time::ProfilerChan,
mem_profiler_chan: profile_mem::ProfilerChan, mem_profiler_chan: profile_mem::ProfilerChan,
window_rect: Option<TypedRect<PagePx, f32>>, window_rect: Option<TypedRect<PagePx, f32>>,
script_chan: Option<Sender<ConstellationControlMsg>>, script_chan: Option<Sender<ConstellationControlMsg>>,
load_data: LoadData, load_data: LoadData,
device_pixel_ratio: ScaleFactor<ViewportPx, DevicePixel, f32>) device_pixel_ratio: ScaleFactor<ViewportPx, DevicePixel, f32>)
-> (Pipeline, PipelineContent) -> (Pipeline, PipelineContent)
where LTF: LayoutTaskFactory, STF:ScriptTaskFactory { where LTF: LayoutTaskFactory, STF: ScriptTaskFactory {
let (layout_to_paint_chan, layout_to_paint_port) = util::ipc::optional_ipc_channel(); let (layout_to_paint_chan, layout_to_paint_port) = util::ipc::optional_ipc_channel();
let (chrome_to_paint_chan, chrome_to_paint_port) = channel(); let (chrome_to_paint_chan, chrome_to_paint_port) = channel();
let (paint_shutdown_chan, paint_shutdown_port) = channel(); let (paint_shutdown_chan, paint_shutdown_port) = channel();
@ -305,7 +305,7 @@ pub struct PipelineContent {
} }
impl PipelineContent { impl PipelineContent {
pub fn start_all<LTF,STF>(mut self) where LTF: LayoutTaskFactory, STF: ScriptTaskFactory { pub fn start_all<LTF, STF>(mut self) where LTF: LayoutTaskFactory, STF: ScriptTaskFactory {
let layout_pair = ScriptTaskFactory::create_layout_channel(None::<&mut STF>); let layout_pair = ScriptTaskFactory::create_layout_channel(None::<&mut STF>);
let (script_to_compositor_chan, script_to_compositor_port) = ipc::channel().unwrap(); let (script_to_compositor_chan, script_to_compositor_port) = ipc::channel().unwrap();

Просмотреть файл

@ -30,7 +30,7 @@ enum ToScrollingTimerMsg {
} }
impl ScrollingTimerProxy { impl ScrollingTimerProxy {
pub fn new(compositor_proxy: Box<CompositorProxy+Send>) -> ScrollingTimerProxy { pub fn new(compositor_proxy: Box<CompositorProxy + Send>) -> ScrollingTimerProxy {
let (to_scrolling_timer_sender, to_scrolling_timer_receiver) = channel(); let (to_scrolling_timer_sender, to_scrolling_timer_receiver) = channel();
Builder::new().spawn(move || { Builder::new().spawn(move || {
let mut scrolling_timer = ScrollingTimer { let mut scrolling_timer = ScrollingTimer {

Просмотреть файл

@ -75,7 +75,7 @@ pub enum WindowEvent {
} }
impl Debug for WindowEvent { impl Debug for WindowEvent {
fn fmt(&self, f: &mut Formatter) -> Result<(),Error> { fn fmt(&self, f: &mut Formatter) -> Result<(), Error> {
match *self { match *self {
WindowEvent::Idle => write!(f, "Idle"), WindowEvent::Idle => write!(f, "Idle"),
WindowEvent::Refresh => write!(f, "Refresh"), WindowEvent::Refresh => write!(f, "Refresh"),
@ -130,7 +130,7 @@ pub trait WindowMethods {
/// This is part of the windowing system because its implementation often involves OS-specific /// This is part of the windowing system because its implementation often involves OS-specific
/// magic to wake the up window's event loop. /// magic to wake the up window's event loop.
fn create_compositor_channel(_: &Option<Rc<Self>>) fn create_compositor_channel(_: &Option<Rc<Self>>)
-> (Box<CompositorProxy+Send>, Box<CompositorReceiver>); -> (Box<CompositorProxy + Send>, Box<CompositorReceiver>);
/// Requests that the window system prepare a composite. Typically this will involve making /// Requests that the window system prepare a composite. Typically this will involve making
/// some type of platform-specific graphics context current. Returns true if the composite may /// some type of platform-specific graphics context current. Returns true if the composite may

Просмотреть файл

@ -86,8 +86,8 @@ impl Actor + Send {
/// A list of known, owned actors. /// A list of known, owned actors.
pub struct ActorRegistry { pub struct ActorRegistry {
actors: HashMap<String, Box<Actor+Send>>, actors: HashMap<String, Box<Actor + Send>>,
new_actors: RefCell<Vec<Box<Actor+Send>>>, new_actors: RefCell<Vec<Box<Actor + Send>>>,
old_actors: RefCell<Vec<String>>, old_actors: RefCell<Vec<String>>,
script_actors: RefCell<HashMap<String, String>>, script_actors: RefCell<HashMap<String, String>>,
shareable: Option<Arc<Mutex<ActorRegistry>>>, shareable: Option<Arc<Mutex<ActorRegistry>>>,
@ -167,11 +167,11 @@ impl ActorRegistry {
} }
/// Add an actor to the registry of known actors that can receive messages. /// Add an actor to the registry of known actors that can receive messages.
pub fn register(&mut self, actor: Box<Actor+Send>) { pub fn register(&mut self, actor: Box<Actor + Send>) {
self.actors.insert(actor.name().to_string(), actor); self.actors.insert(actor.name().to_string(), actor);
} }
pub fn register_later(&self, actor: Box<Actor+Send>) { pub fn register_later(&self, actor: Box<Actor + Send>) {
let mut actors = self.new_actors.borrow_mut(); let mut actors = self.new_actors.borrow_mut();
actors.push(actor); actors.push(actor);
} }

Просмотреть файл

@ -93,7 +93,7 @@ impl Actor for HighlighterActor {
} }
#[derive(RustcEncodable)] #[derive(RustcEncodable)]
struct ModifyAttributeReply{ struct ModifyAttributeReply {
from: String, from: String,
} }
@ -119,7 +119,7 @@ impl Actor for NodeActor {
registry.actor_to_script(target.to_string()), registry.actor_to_script(target.to_string()),
modifications)) modifications))
.unwrap(); .unwrap();
let reply = ModifyAttributeReply{ let reply = ModifyAttributeReply {
from: self.name(), from: self.name(),
}; };
stream.write_json_packet(&reply); stream.write_json_packet(&reply);

Просмотреть файл

@ -471,11 +471,11 @@ impl StackingContext {
mut point: Point2D<Au>, mut point: Point2D<Au>,
result: &mut Vec<DisplayItemMetadata>, result: &mut Vec<DisplayItemMetadata>,
topmost_only: bool) { topmost_only: bool) {
fn hit_test_in_list<'a,I>(point: Point2D<Au>, fn hit_test_in_list<'a, I>(point: Point2D<Au>,
result: &mut Vec<DisplayItemMetadata>, result: &mut Vec<DisplayItemMetadata>,
topmost_only: bool, topmost_only: bool,
iterator: I) iterator: I)
where I: Iterator<Item=&'a DisplayItem> { where I: Iterator<Item=&'a DisplayItem> {
for item in iterator { for item in iterator {
// TODO(pcwalton): Use a precise algorithm here. This will allow us to properly hit // TODO(pcwalton): Use a precise algorithm here. This will allow us to properly hit
// test elements with `border-radius`, for example. // test elements with `border-radius`, for example.
@ -1016,7 +1016,7 @@ pub enum BoxShadowClipMode {
pub enum DisplayItemIterator<'a> { pub enum DisplayItemIterator<'a> {
Empty, Empty,
Parent(linked_list::Iter<'a,DisplayItem>), Parent(linked_list::Iter<'a, DisplayItem>),
} }
impl<'a> Iterator for DisplayItemIterator<'a> { impl<'a> Iterator for DisplayItemIterator<'a> {

Просмотреть файл

@ -45,10 +45,10 @@ impl DisplayListOptimizer {
} }
/// Adds display items that intersect the visible rect to `result_list`. /// Adds display items that intersect the visible rect to `result_list`.
fn add_in_bounds_display_items<'a,I>(&self, fn add_in_bounds_display_items<'a, I>(&self,
result_list: &mut LinkedList<DisplayItem>, result_list: &mut LinkedList<DisplayItem>,
display_items: I) display_items: I)
where I: Iterator<Item=&'a DisplayItem> { where I: Iterator<Item=&'a DisplayItem> {
for display_item in display_items { for display_item in display_items {
if self.visible_rect.intersects(&display_item.base().bounds) && if self.visible_rect.intersects(&display_item.base().bounds) &&
display_item.base().clip.might_intersect_rect(&self.visible_rect) { display_item.base().clip.might_intersect_rect(&self.visible_rect) {
@ -58,10 +58,10 @@ impl DisplayListOptimizer {
} }
/// Adds child stacking contexts whose boundaries intersect the visible rect to `result_list`. /// Adds child stacking contexts whose boundaries intersect the visible rect to `result_list`.
fn add_in_bounds_stacking_contexts<'a,I>(&self, fn add_in_bounds_stacking_contexts<'a, I>(&self,
result_list: &mut LinkedList<Arc<StackingContext>>, result_list: &mut LinkedList<Arc<StackingContext>>,
stacking_contexts: I) stacking_contexts: I)
where I: Iterator<Item=&'a Arc<StackingContext>> { where I: Iterator<Item=&'a Arc<StackingContext>> {
for stacking_context in stacking_contexts { for stacking_context in stacking_contexts {
if stacking_context.layer.is_none() { if stacking_context.layer.is_none() {
// Transform this stacking context to get it into the same space as // Transform this stacking context to get it into the same space as

Просмотреть файл

@ -95,8 +95,8 @@ pub struct Font {
pub requested_pt_size: Au, pub requested_pt_size: Au,
pub actual_pt_size: Au, pub actual_pt_size: Au,
pub shaper: Option<Shaper>, pub shaper: Option<Shaper>,
pub shape_cache: HashCache<ShapeCacheEntry,Arc<GlyphStore>>, pub shape_cache: HashCache<ShapeCacheEntry, Arc<GlyphStore>>,
pub glyph_advance_cache: HashCache<u32,FractionalPixel>, pub glyph_advance_cache: HashCache<u32, FractionalPixel>,
} }
bitflags! { bitflags! {

Просмотреть файл

@ -82,7 +82,7 @@ pub struct FontContext {
paint_font_cache: Vec<PaintFontCacheEntry>, paint_font_cache: Vec<PaintFontCacheEntry>,
layout_font_group_cache: layout_font_group_cache:
HashMap<LayoutFontGroupCacheKey,Rc<FontGroup>,DefaultState<FnvHasher>>, HashMap<LayoutFontGroupCacheKey, Rc<FontGroup>, DefaultState<FnvHasher>>,
} }
impl FontContext { impl FontContext {
@ -273,7 +273,7 @@ impl FontContext {
} }
let paint_font = Rc::new(RefCell::new(create_scaled_font(template, pt_size))); let paint_font = Rc::new(RefCell::new(create_scaled_font(template, pt_size)));
self.paint_font_cache.push(PaintFontCacheEntry{ self.paint_font_cache.push(PaintFontCacheEntry {
font: paint_font.clone(), font: paint_font.clone(),
pt_size: pt_size, pt_size: pt_size,
identifier: template.identifier.clone(), identifier: template.identifier.clone(),

Просмотреть файл

@ -751,11 +751,11 @@ impl<'a> PaintContext<'a> {
border: &SideOffsets2D<f32>, border: &SideOffsets2D<f32>,
radius: &BorderRadii<AzFloat>, radius: &BorderRadii<AzFloat>,
color: Color) { color: Color) {
let scaled_border = SideOffsets2D::new((1.0/3.0) * border.top, let scaled_border = SideOffsets2D::new((1.0 / 3.0) * border.top,
(1.0/3.0) * border.right, (1.0 / 3.0) * border.right,
(1.0/3.0) * border.bottom, (1.0 / 3.0) * border.bottom,
(1.0/3.0) * border.left); (1.0 / 3.0) * border.left);
let inner_scaled_bounds = self.compute_scaled_bounds(bounds, border, 2.0/3.0); let inner_scaled_bounds = self.compute_scaled_bounds(bounds, border, 2.0 / 3.0);
// draw the outer portion of the double border. // draw the outer portion of the double border.
self.draw_solid_border_segment(direction, bounds, &scaled_border, radius, color); self.draw_solid_border_segment(direction, bounds, &scaled_border, radius, color);
// draw the inner portion of the double border. // draw the inner portion of the double border.
@ -786,7 +786,7 @@ impl<'a> PaintContext<'a> {
let lighter_color; let lighter_color;
let mut darker_color = color::black(); let mut darker_color = color::black();
if color != darker_color { if color != darker_color {
darker_color = self.scale_color(color, if is_groove { 1.0/3.0 } else { 2.0/3.0 }); darker_color = self.scale_color(color, if is_groove { 1.0 / 3.0 } else { 2.0 / 3.0 });
lighter_color = color; lighter_color = color;
} else { } else {
// You can't scale black color (i.e. 'scaled = 0 * scale', equals black). // You can't scale black color (i.e. 'scaled = 0 * scale', equals black).
@ -832,10 +832,10 @@ impl<'a> PaintContext<'a> {
if color != scaled_color { if color != scaled_color {
scaled_color = match direction { scaled_color = match direction {
Direction::Top | Direction::Left => { Direction::Top | Direction::Left => {
self.scale_color(color, if is_inset { 2.0/3.0 } else { 1.0 }) self.scale_color(color, if is_inset { 2.0 / 3.0 } else { 1.0 })
} }
Direction::Right | Direction::Bottom => { Direction::Right | Direction::Bottom => {
self.scale_color(color, if is_inset { 1.0 } else { 2.0/3.0 }) self.scale_color(color, if is_inset { 1.0 } else { 2.0 / 3.0 })
} }
}; };
} else { } else {

Просмотреть файл

@ -659,12 +659,12 @@ enum MsgFromWorkerThread {
} }
pub static THREAD_TINT_COLORS: [Color; 8] = [ pub static THREAD_TINT_COLORS: [Color; 8] = [
Color { r: 6.0/255.0, g: 153.0/255.0, b: 198.0/255.0, a: 0.7 }, Color { r: 6.0 / 255.0, g: 153.0 / 255.0, b: 198.0 / 255.0, a: 0.7 },
Color { r: 255.0/255.0, g: 212.0/255.0, b: 83.0/255.0, a: 0.7 }, Color { r: 255.0 / 255.0, g: 212.0 / 255.0, b: 83.0 / 255.0, a: 0.7 },
Color { r: 116.0/255.0, g: 29.0/255.0, b: 109.0/255.0, a: 0.7 }, Color { r: 116.0 / 255.0, g: 29.0 / 255.0, b: 109.0 / 255.0, a: 0.7 },
Color { r: 204.0/255.0, g: 158.0/255.0, b: 199.0/255.0, a: 0.7 }, Color { r: 204.0 / 255.0, g: 158.0 / 255.0, b: 199.0 / 255.0, a: 0.7 },
Color { r: 242.0/255.0, g: 46.0/255.0, b: 121.0/255.0, a: 0.7 }, Color { r: 242.0 / 255.0, g: 46.0 / 255.0, b: 121.0 / 255.0, a: 0.7 },
Color { r: 116.0/255.0, g: 203.0/255.0, b: 196.0/255.0, a: 0.7 }, Color { r: 116.0 / 255.0, g: 203.0 / 255.0, b: 196.0 / 255.0, a: 0.7 },
Color { r: 255.0/255.0, g: 249.0/255.0, b: 201.0/255.0, a: 0.7 }, Color { r: 255.0 / 255.0, g: 249.0 / 255.0, b: 201.0 / 255.0, a: 0.7 },
Color { r: 137.0/255.0, g: 196.0/255.0, b: 78.0/255.0, a: 0.7 }, Color { r: 137.0 / 255.0, g: 196.0 / 255.0, b: 78.0 / 255.0, a: 0.7 },
]; ];

Просмотреть файл

@ -8,17 +8,11 @@ extern crate freetype;
extern crate fontconfig; extern crate fontconfig;
use fontconfig::fontconfig::{FcChar8, FcResultMatch, FcSetSystem}; use fontconfig::fontconfig::{FcChar8, FcResultMatch, FcSetSystem};
use fontconfig::fontconfig::{ use fontconfig::fontconfig::{FcConfigGetCurrent, FcConfigGetFonts, FcConfigSubstitute};
FcConfigGetCurrent, FcConfigGetFonts, use fontconfig::fontconfig::{FcDefaultSubstitute, FcFontMatch, FcNameParse, FcPatternGetString};
FcConfigSubstitute, FcDefaultSubstitute, use fontconfig::fontconfig::{FcPatternDestroy, FcFontSetDestroy, FcMatchPattern, FcPatternCreate};
FcFontMatch, use fontconfig::fontconfig::{FcPatternAddString, FcFontSetList, FcObjectSetCreate, FcObjectSetDestroy};
FcNameParse, FcPatternGetString, use fontconfig::fontconfig::{FcObjectSetAdd, FcPatternGetInteger};
FcPatternDestroy, FcFontSetDestroy,
FcMatchPattern,
FcPatternCreate, FcPatternAddString,
FcFontSetList, FcObjectSetCreate, FcObjectSetDestroy,
FcObjectSetAdd, FcPatternGetInteger
};
use util::str::c_str_to_string; use util::str::c_str_to_string;

Просмотреть файл

@ -89,7 +89,7 @@ impl Deserialize for CachedCTFont {
type Value = CachedCTFont; type Value = CachedCTFont;
#[inline] #[inline]
fn visit_none<E>(&mut self) -> Result<CachedCTFont,E> where E: Error { fn visit_none<E>(&mut self) -> Result<CachedCTFont, E> where E: Error {
Ok(CachedCTFont(Mutex::new(None))) Ok(CachedCTFont(Mutex::new(None)))
} }
} }

Просмотреть файл

@ -394,7 +394,7 @@ impl<'a> DetailedGlyphStore {
// Thar be dragons here. You have been warned. (Tips accepted.) // Thar be dragons here. You have been warned. (Tips accepted.)
let mut unsorted_records: Vec<DetailedGlyphRecord> = vec!(); let mut unsorted_records: Vec<DetailedGlyphRecord> = vec!();
mem::swap(&mut self.detail_lookup, &mut unsorted_records); mem::swap(&mut self.detail_lookup, &mut unsorted_records);
let mut mut_records : Vec<DetailedGlyphRecord> = unsorted_records; let mut mut_records: Vec<DetailedGlyphRecord> = unsorted_records;
mut_records.sort_by(|a, b| { mut_records.sort_by(|a, b| {
if a < b { if a < b {
Ordering::Less Ordering::Less

Просмотреть файл

@ -46,7 +46,7 @@ pub struct NaturalWordSliceIterator<'a> {
struct CharIndexComparator; struct CharIndexComparator;
impl Comparator<CharIndex,GlyphRun> for CharIndexComparator { impl Comparator<CharIndex, GlyphRun> for CharIndexComparator {
fn compare(&self, key: &CharIndex, value: &GlyphRun) -> Ordering { fn compare(&self, key: &CharIndex, value: &GlyphRun) -> Ordering {
if *key < value.range.begin() { if *key < value.range.begin() {
Ordering::Less Ordering::Less

Просмотреть файл

@ -93,7 +93,7 @@ pub fn process_new_animations(rw_data: &mut LayoutTaskData, pipeline_id: Pipelin
/// Recalculates style for a set of animations. This does *not* run with the DOM lock held. /// Recalculates style for a set of animations. This does *not* run with the DOM lock held.
pub fn recalc_style_for_animations(flow: &mut Flow, pub fn recalc_style_for_animations(flow: &mut Flow,
animations: &HashMap<OpaqueNode,Vec<Animation>>) { animations: &HashMap<OpaqueNode, Vec<Animation>>) {
let mut damage = RestyleDamage::empty(); let mut damage = RestyleDamage::empty();
flow.mutate_fragments(&mut |fragment| { flow.mutate_fragments(&mut |fragment| {
if let Some(ref animations) = animations.get(&OpaqueNode(fragment.node.id())) { if let Some(ref animations) = animations.get(&OpaqueNode(fragment.node.id())) {

Просмотреть файл

@ -124,7 +124,7 @@ pub struct SharedLayoutContext {
pub visible_rects: Arc<HashMap<LayerId, Rect<Au>, DefaultState<FnvHasher>>>, pub visible_rects: Arc<HashMap<LayerId, Rect<Au>, DefaultState<FnvHasher>>>,
/// The animations that are currently running. /// The animations that are currently running.
pub running_animations: Arc<HashMap<OpaqueNode,Vec<Animation>>>, pub running_animations: Arc<HashMap<OpaqueNode, Vec<Animation>>>,
/// Why is this reflow occurring /// Why is this reflow occurring
pub goal: ReflowGoal, pub goal: ReflowGoal,

Просмотреть файл

@ -139,7 +139,7 @@ impl<'a> Hash for ApplicableDeclarationsCacheQuery<'a> {
static APPLICABLE_DECLARATIONS_CACHE_SIZE: usize = 32; static APPLICABLE_DECLARATIONS_CACHE_SIZE: usize = 32;
pub struct ApplicableDeclarationsCache { pub struct ApplicableDeclarationsCache {
cache: SimpleHashCache<ApplicableDeclarationsCacheEntry,Arc<ComputedValues>>, cache: SimpleHashCache<ApplicableDeclarationsCacheEntry, Arc<ComputedValues>>,
} }
impl ApplicableDeclarationsCache { impl ApplicableDeclarationsCache {

Просмотреть файл

@ -45,10 +45,10 @@ use std::sync::Arc;
use std::sync::mpsc::channel; use std::sync::mpsc::channel;
use std::f32; use std::f32;
use style::computed_values::filter::Filter; use style::computed_values::filter::Filter;
use style::computed_values::{background_attachment, background_clip, background_origin, use style::computed_values::{background_attachment, background_clip, background_origin};
background_repeat, background_size}; use style::computed_values::{background_repeat, background_size};
use style::computed_values::{border_style, image_rendering, overflow_x, position, use style::computed_values::{border_style, image_rendering, overflow_x, position};
visibility, transform, transform_style}; use style::computed_values::{visibility, transform, transform_style};
use style::properties::ComputedValues; use style::properties::ComputedValues;
use style::properties::style_structs::Border; use style::properties::style_structs::Border;
use style::values::RGBA; use style::values::RGBA;
@ -1108,7 +1108,7 @@ impl FragmentDisplayListBuilding for Fragment {
}, },
None => IpcSharedMemory::from_byte(0xFFu8, width * height * 4), None => IpcSharedMemory::from_byte(0xFFu8, width * height * 4),
}; };
display_list.content.push_back(DisplayItem::ImageClass(box ImageDisplayItem{ display_list.content.push_back(DisplayItem::ImageClass(box ImageDisplayItem {
base: BaseDisplayItem::new(stacking_relative_content_box, base: BaseDisplayItem::new(stacking_relative_content_box,
DisplayItemMetadata::new(self.node, DisplayItemMetadata::new(self.node,
&*self.style, &*self.style,

Просмотреть файл

@ -468,10 +468,10 @@ pub trait MutableFlowUtils {
// Traversals // Traversals
/// Traverses the tree in preorder. /// Traverses the tree in preorder.
fn traverse_preorder<T:PreorderFlowTraversal>(self, traversal: &T); fn traverse_preorder<T: PreorderFlowTraversal>(self, traversal: &T);
/// Traverses the tree in postorder. /// Traverses the tree in postorder.
fn traverse_postorder<T:PostorderFlowTraversal>(self, traversal: &T); fn traverse_postorder<T: PostorderFlowTraversal>(self, traversal: &T);
/// Traverse the Absolute flow tree in preorder. /// Traverse the Absolute flow tree in preorder.
/// ///
@ -1301,7 +1301,7 @@ impl<'a> ImmutableFlowUtils for &'a (Flow + 'a) {
impl<'a> MutableFlowUtils for &'a mut (Flow + 'a) { impl<'a> MutableFlowUtils for &'a mut (Flow + 'a) {
/// Traverses the tree in preorder. /// Traverses the tree in preorder.
fn traverse_preorder<T:PreorderFlowTraversal>(self, traversal: &T) { fn traverse_preorder<T: PreorderFlowTraversal>(self, traversal: &T) {
if traversal.should_process(self) { if traversal.should_process(self) {
traversal.process(self); traversal.process(self);
} }
@ -1312,7 +1312,7 @@ impl<'a> MutableFlowUtils for &'a mut (Flow + 'a) {
} }
/// Traverses the tree in postorder. /// Traverses the tree in postorder.
fn traverse_postorder<T:PostorderFlowTraversal>(self, traversal: &T) { fn traverse_postorder<T: PostorderFlowTraversal>(self, traversal: &T) {
for kid in child_iter(self) { for kid in child_iter(self) {
kid.traverse_postorder(traversal); kid.traverse_postorder(traversal);
} }
@ -1446,7 +1446,7 @@ impl OpaqueFlow {
#[allow(unsafe_code)] #[allow(unsafe_code)]
pub fn from_flow(flow: &Flow) -> OpaqueFlow { pub fn from_flow(flow: &Flow) -> OpaqueFlow {
unsafe { unsafe {
let object = mem::transmute::<&Flow,raw::TraitObject>(flow); let object = mem::transmute::<&Flow, raw::TraitObject>(flow);
OpaqueFlow(object.data as usize) OpaqueFlow(object.data as usize)
} }
} }

Просмотреть файл

@ -1446,7 +1446,7 @@ impl Fragment {
/// A helper method that uses the breaking strategy described by `slice_iterator` (at present, /// A helper method that uses the breaking strategy described by `slice_iterator` (at present,
/// either natural word breaking or character breaking) to split this fragment. /// either natural word breaking or character breaking) to split this fragment.
fn calculate_split_position_using_breaking_strategy<'a,I>( fn calculate_split_position_using_breaking_strategy<'a, I>(
&self, &self,
slice_iterator: I, slice_iterator: I,
max_inline_size: Au, max_inline_size: Au,

Просмотреть файл

@ -101,7 +101,7 @@ pub struct ResolveGeneratedContent<'a> {
/// The counter representing an ordered list item. /// The counter representing an ordered list item.
list_item: Counter, list_item: Counter,
/// Named CSS counters. /// Named CSS counters.
counters: HashMap<String,Counter>, counters: HashMap<String, Counter>,
/// The level of quote nesting. /// The level of quote nesting.
quote: u32, quote: u32,
} }

Просмотреть файл

@ -309,11 +309,11 @@ impl LineBreaker {
} }
/// Reflows the given fragments, which have been plucked out of the inline flow. /// Reflows the given fragments, which have been plucked out of the inline flow.
fn reflow_fragments<'a,I>(&mut self, fn reflow_fragments<'a, I>(&mut self,
mut old_fragment_iter: I, mut old_fragment_iter: I,
flow: &'a InlineFlow, flow: &'a InlineFlow,
layout_context: &LayoutContext) layout_context: &LayoutContext)
where I: Iterator<Item=Fragment> { where I: Iterator<Item=Fragment> {
loop { loop {
// Acquire the next fragment to lay out from the work list or fragment list, as // Acquire the next fragment to lay out from the work list or fragment list, as
// appropriate. // appropriate.

Просмотреть файл

@ -139,7 +139,7 @@ pub struct LayoutTaskData {
pub offset_parent_response: OffsetParentResponse, pub offset_parent_response: OffsetParentResponse,
/// The list of currently-running animations. /// The list of currently-running animations.
pub running_animations: Arc<HashMap<OpaqueNode,Vec<Animation>>>, pub running_animations: Arc<HashMap<OpaqueNode, Vec<Animation>>>,
/// Receives newly-discovered animations. /// Receives newly-discovered animations.
pub new_animations_receiver: Receiver<Animation>, pub new_animations_receiver: Receiver<Animation>,
@ -708,7 +708,7 @@ impl LayoutTask {
url: Url, url: Url,
mq: MediaQueryList, mq: MediaQueryList,
pending: PendingAsyncLoad, pending: PendingAsyncLoad,
responder: Box<StylesheetLoadResponder+Send>, responder: Box<StylesheetLoadResponder + Send>,
possibly_locked_rw_data: possibly_locked_rw_data:
&mut Option<MutexGuard<'a, LayoutTaskData>>) { &mut Option<MutexGuard<'a, LayoutTaskData>>) {
// TODO: Get the actual value. http://dev.w3.org/csswg/css-syntax/#environment-encoding // TODO: Get the actual value. http://dev.w3.org/csswg/css-syntax/#environment-encoding

Просмотреть файл

@ -89,14 +89,14 @@ pub type UnsafeFlowList = (Box<Vec<UnsafeLayoutNode>>, usize);
pub type ChunkedDomTraversalFunction = pub type ChunkedDomTraversalFunction =
extern "Rust" fn(UnsafeLayoutNodeList, extern "Rust" fn(UnsafeLayoutNodeList,
&mut WorkerProxy<SharedLayoutContext,UnsafeLayoutNodeList>); &mut WorkerProxy<SharedLayoutContext, UnsafeLayoutNodeList>);
pub type DomTraversalFunction = pub type DomTraversalFunction =
extern "Rust" fn(UnsafeLayoutNode, extern "Rust" fn(UnsafeLayoutNode,
&mut WorkerProxy<SharedLayoutContext,UnsafeLayoutNodeList>); &mut WorkerProxy<SharedLayoutContext, UnsafeLayoutNodeList>);
pub type ChunkedFlowTraversalFunction = pub type ChunkedFlowTraversalFunction =
extern "Rust" fn(UnsafeFlowList, &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>); extern "Rust" fn(UnsafeFlowList, &mut WorkerProxy<SharedLayoutContext, UnsafeFlowList>);
pub type FlowTraversalFunction = extern "Rust" fn(UnsafeFlow, &SharedLayoutContext); pub type FlowTraversalFunction = extern "Rust" fn(UnsafeFlow, &SharedLayoutContext);
@ -104,13 +104,13 @@ pub type FlowTraversalFunction = extern "Rust" fn(UnsafeFlow, &SharedLayoutConte
pub trait ParallelPreorderDomTraversal : PreorderDomTraversal { pub trait ParallelPreorderDomTraversal : PreorderDomTraversal {
fn run_parallel(&self, fn run_parallel(&self,
nodes: UnsafeLayoutNodeList, nodes: UnsafeLayoutNodeList,
proxy: &mut WorkerProxy<SharedLayoutContext,UnsafeLayoutNodeList>); proxy: &mut WorkerProxy<SharedLayoutContext, UnsafeLayoutNodeList>);
#[inline(always)] #[inline(always)]
fn run_parallel_helper( fn run_parallel_helper(
&self, &self,
unsafe_nodes: UnsafeLayoutNodeList, unsafe_nodes: UnsafeLayoutNodeList,
proxy: &mut WorkerProxy<SharedLayoutContext,UnsafeLayoutNodeList>, proxy: &mut WorkerProxy<SharedLayoutContext, UnsafeLayoutNodeList>,
top_down_func: ChunkedDomTraversalFunction, top_down_func: ChunkedDomTraversalFunction,
bottom_up_func: DomTraversalFunction) { bottom_up_func: DomTraversalFunction) {
let mut discovered_child_nodes = Vec::new(); let mut discovered_child_nodes = Vec::new();
@ -168,7 +168,7 @@ trait ParallelPostorderDomTraversal : PostorderDomTraversal {
/// fetch-and-subtract the parent's children count. /// fetch-and-subtract the parent's children count.
fn run_parallel(&self, fn run_parallel(&self,
mut unsafe_node: UnsafeLayoutNode, mut unsafe_node: UnsafeLayoutNode,
proxy: &mut WorkerProxy<SharedLayoutContext,UnsafeLayoutNodeList>) { proxy: &mut WorkerProxy<SharedLayoutContext, UnsafeLayoutNodeList>) {
loop { loop {
// Get a real layout node. // Get a real layout node.
let node: LayoutNode = unsafe { let node: LayoutNode = unsafe {
@ -284,14 +284,14 @@ trait ParallelPostorderFlowTraversal : PostorderFlowTraversal {
trait ParallelPreorderFlowTraversal : PreorderFlowTraversal { trait ParallelPreorderFlowTraversal : PreorderFlowTraversal {
fn run_parallel(&self, fn run_parallel(&self,
unsafe_flows: UnsafeFlowList, unsafe_flows: UnsafeFlowList,
proxy: &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>); proxy: &mut WorkerProxy<SharedLayoutContext, UnsafeFlowList>);
fn should_record_thread_ids(&self) -> bool; fn should_record_thread_ids(&self) -> bool;
#[inline(always)] #[inline(always)]
fn run_parallel_helper(&self, fn run_parallel_helper(&self,
unsafe_flows: UnsafeFlowList, unsafe_flows: UnsafeFlowList,
proxy: &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>, proxy: &mut WorkerProxy<SharedLayoutContext, UnsafeFlowList>,
top_down_func: ChunkedFlowTraversalFunction, top_down_func: ChunkedFlowTraversalFunction,
bottom_up_func: FlowTraversalFunction) { bottom_up_func: FlowTraversalFunction) {
let mut discovered_child_flows = Vec::new(); let mut discovered_child_flows = Vec::new();
@ -335,7 +335,7 @@ trait ParallelPreorderFlowTraversal : PreorderFlowTraversal {
impl<'a> ParallelPreorderFlowTraversal for AssignISizes<'a> { impl<'a> ParallelPreorderFlowTraversal for AssignISizes<'a> {
fn run_parallel(&self, fn run_parallel(&self,
unsafe_flows: UnsafeFlowList, unsafe_flows: UnsafeFlowList,
proxy: &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>) { proxy: &mut WorkerProxy<SharedLayoutContext, UnsafeFlowList>) {
self.run_parallel_helper(unsafe_flows, self.run_parallel_helper(unsafe_flows,
proxy, proxy,
assign_inline_sizes, assign_inline_sizes,
@ -397,7 +397,7 @@ fn construct_flows(unsafe_node: UnsafeLayoutNode,
} }
fn assign_inline_sizes(unsafe_flows: UnsafeFlowList, fn assign_inline_sizes(unsafe_flows: UnsafeFlowList,
proxy: &mut WorkerProxy<SharedLayoutContext,UnsafeFlowList>) { proxy: &mut WorkerProxy<SharedLayoutContext, UnsafeFlowList>) {
let shared_layout_context = proxy.user_data(); let shared_layout_context = proxy.user_data();
let layout_context = LayoutContext::new(shared_layout_context); let layout_context = LayoutContext::new(shared_layout_context);
let assign_inline_sizes_traversal = AssignISizes { let assign_inline_sizes_traversal = AssignISizes {
@ -438,12 +438,12 @@ fn build_display_list(unsafe_flow: UnsafeFlow,
build_display_list_traversal.run_parallel(unsafe_flow); build_display_list_traversal.run_parallel(unsafe_flow);
} }
fn run_queue_with_custom_work_data_type<To,F>( fn run_queue_with_custom_work_data_type<To, F>(
queue: &mut WorkQueue<SharedLayoutContext, WorkQueueData>, queue: &mut WorkQueue<SharedLayoutContext, WorkQueueData>,
callback: F, callback: F,
shared_layout_context: &SharedLayoutContext) shared_layout_context: &SharedLayoutContext)
where To: 'static + Send, F: FnOnce(&mut WorkQueue<SharedLayoutContext,To>) { where To: 'static + Send, F: FnOnce(&mut WorkQueue<SharedLayoutContext, To>) {
let queue: &mut WorkQueue<SharedLayoutContext,To> = unsafe { let queue: &mut WorkQueue<SharedLayoutContext, To> = unsafe {
mem::transmute(queue) mem::transmute(queue)
}; };
callback(queue); callback(queue);

Просмотреть файл

@ -137,7 +137,7 @@ pub fn iterate_through_flow_tree_fragment_border_boxes(root: &mut FlowRef,
}; };
// FIXME(#2795): Get the real container size. // FIXME(#2795): Get the real container size.
doit(kid, level+1, iterator, &stacking_context_position); doit(kid, level + 1, iterator, &stacking_context_position);
} }
} }

Просмотреть файл

@ -166,7 +166,7 @@ impl TableRowFlow {
} }
} }
pub fn populate_collapsed_border_spacing<'a,I>( pub fn populate_collapsed_border_spacing<'a, I>(
&mut self, &mut self,
collapsed_inline_direction_border_widths_for_table: &[Au], collapsed_inline_direction_border_widths_for_table: &[Au],
collapsed_block_direction_border_widths_for_table: &mut Peekable<I>) collapsed_block_direction_border_widths_for_table: &mut Peekable<I>)

Просмотреть файл

@ -83,7 +83,7 @@ impl TableRowGroupFlow {
&self.block_flow.fragment &self.block_flow.fragment
} }
pub fn populate_collapsed_border_spacing<'a,I>( pub fn populate_collapsed_border_spacing<'a, I>(
&mut self, &mut self,
collapsed_inline_direction_border_widths_for_table: &[Au], collapsed_inline_direction_border_widths_for_table: &[Au],
collapsed_block_direction_border_widths_for_table: &mut Peekable<I>) collapsed_block_direction_border_widths_for_table: &mut Peekable<I>)

Просмотреть файл

@ -280,7 +280,7 @@ impl<'ln> LayoutNode<'ln> {
/// Borrows the layout data immutably. Fails on a conflicting borrow. /// Borrows the layout data immutably. Fails on a conflicting borrow.
#[inline(always)] #[inline(always)]
pub fn borrow_layout_data<'a>(&'a self) -> Ref<'a,Option<LayoutDataWrapper>> { pub fn borrow_layout_data<'a>(&'a self) -> Ref<'a, Option<LayoutDataWrapper>> {
unsafe { unsafe {
mem::transmute(self.get_jsmanaged().layout_data()) mem::transmute(self.get_jsmanaged().layout_data())
} }
@ -288,7 +288,7 @@ impl<'ln> LayoutNode<'ln> {
/// Borrows the layout data mutably. Fails on a conflicting borrow. /// Borrows the layout data mutably. Fails on a conflicting borrow.
#[inline(always)] #[inline(always)]
pub fn mutate_layout_data<'a>(&'a self) -> RefMut<'a,Option<LayoutDataWrapper>> { pub fn mutate_layout_data<'a>(&'a self) -> RefMut<'a, Option<LayoutDataWrapper>> {
unsafe { unsafe {
mem::transmute(self.get_jsmanaged().layout_data_mut()) mem::transmute(self.get_jsmanaged().layout_data_mut())
} }
@ -743,7 +743,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
/// ///
/// TODO(pcwalton): Make this private. It will let us avoid borrow flag checks in some cases. /// TODO(pcwalton): Make this private. It will let us avoid borrow flag checks in some cases.
#[inline(always)] #[inline(always)]
pub fn borrow_layout_data<'a>(&'a self) -> Ref<'a,Option<LayoutDataWrapper>> { pub fn borrow_layout_data<'a>(&'a self) -> Ref<'a, Option<LayoutDataWrapper>> {
self.node.borrow_layout_data() self.node.borrow_layout_data()
} }
@ -751,7 +751,7 @@ impl<'ln> ThreadSafeLayoutNode<'ln> {
/// ///
/// TODO(pcwalton): Make this private. It will let us avoid borrow flag checks in some cases. /// TODO(pcwalton): Make this private. It will let us avoid borrow flag checks in some cases.
#[inline(always)] #[inline(always)]
pub fn mutate_layout_data<'a>(&'a self) -> RefMut<'a,Option<LayoutDataWrapper>> { pub fn mutate_layout_data<'a>(&'a self) -> RefMut<'a, Option<LayoutDataWrapper>> {
self.node.mutate_layout_data() self.node.mutate_layout_data()
} }

Просмотреть файл

@ -53,7 +53,7 @@ pub struct CORSCacheEntry {
} }
impl CORSCacheEntry { impl CORSCacheEntry {
fn new(origin:Url, url: Url, max_age: u32, credentials: bool, fn new(origin: Url, url: Url, max_age: u32, credentials: bool,
header_or_method: HeaderOrMethod) -> CORSCacheEntry { header_or_method: HeaderOrMethod) -> CORSCacheEntry {
CORSCacheEntry { CORSCacheEntry {
origin: origin, origin: origin,

Просмотреть файл

@ -112,7 +112,7 @@ pub struct Request {
pub redirect_mode: RedirectMode, pub redirect_mode: RedirectMode,
pub redirect_count: usize, pub redirect_count: usize,
pub response_tainting: ResponseTainting, pub response_tainting: ResponseTainting,
pub cache: Option<Box<CORSCache+'static>> pub cache: Option<Box<CORSCache + 'static>>
} }
impl Request { impl Request {

Просмотреть файл

@ -23,14 +23,14 @@ impl MIMEClassifier {
supplied_type: &Option<(String, String)>, supplied_type: &Option<(String, String)>,
data: &[u8]) -> Option<(String, String)> { data: &[u8]) -> Option<(String, String)> {
match *supplied_type{ match *supplied_type {
None => { None => {
return self.sniff_unknown_type(!no_sniff, data); return self.sniff_unknown_type(!no_sniff, data);
} }
Some((ref media_type, ref media_subtype)) => { Some((ref media_type, ref media_subtype)) => {
match (&**media_type, &**media_subtype) { match (&**media_type, &**media_subtype) {
("unknown", "unknown") | ("application", "unknown") | ("*", "*") => { ("unknown", "unknown") | ("application", "unknown") | ("*", "*") => {
return self.sniff_unknown_type(!no_sniff,data); return self.sniff_unknown_type(!no_sniff, data);
} }
_ => { _ => {
if no_sniff { if no_sniff {
@ -71,8 +71,8 @@ impl MIMEClassifier {
return supplied_type.clone(); return supplied_type.clone();
} }
pub fn new()->MIMEClassifier { pub fn new() -> MIMEClassifier {
MIMEClassifier{ MIMEClassifier {
image_classifier: GroupedClassifier::image_classifer(), image_classifier: GroupedClassifier::image_classifer(),
audio_video_classifer: GroupedClassifier::audio_video_classifer(), audio_video_classifer: GroupedClassifier::audio_video_classifer(),
scriptable_classifier: GroupedClassifier::scriptable_classifier(), scriptable_classifier: GroupedClassifier::scriptable_classifier(),
@ -84,7 +84,7 @@ impl MIMEClassifier {
} }
//some sort of iterator over the classifiers might be better? //some sort of iterator over the classifiers might be better?
fn sniff_unknown_type(&self, sniff_scriptable: bool, data: &[u8]) -> fn sniff_unknown_type(&self, sniff_scriptable: bool, data: &[u8]) ->
Option<(String,String)> { Option<(String, String)> {
if sniff_scriptable { if sniff_scriptable {
self.scriptable_classifier.classify(data) self.scriptable_classifier.classify(data)
} else { } else {
@ -107,21 +107,21 @@ impl MIMEClassifier {
} }
} }
fn is_html(tp: &str, sub_tp: &str) -> bool { fn is_html(tp: &str, sub_tp: &str) -> bool {
tp=="text" && sub_tp=="html" tp == "text" && sub_tp == "html"
} }
} }
pub fn as_string_option(tup: Option<(&'static str, &'static str)>) -> Option<(String,String)> { pub fn as_string_option(tup: Option<(&'static str, &'static str)>) -> Option<(String, String)> {
tup.map(|(a, b)| (a.to_owned(), b.to_owned())) tup.map(|(a, b)| (a.to_owned(), b.to_owned()))
} }
//Interface used for composite types //Interface used for composite types
trait MIMEChecker { trait MIMEChecker {
fn classify(&self, data: &[u8])->Option<(String, String)>; fn classify(&self, data: &[u8]) -> Option<(String, String)>;
} }
trait Matches { trait Matches {
fn matches(&mut self, matches: &[u8])->bool; fn matches(&mut self, matches: &[u8]) -> bool;
} }
impl <'a, T: Iterator<Item=&'a u8> + Clone> Matches for T { impl <'a, T: Iterator<Item=&'a u8> + Clone> Matches for T {
@ -215,7 +215,7 @@ impl MIMEChecker for TagTerminatedByteMatcher {
pub struct Mp4Matcher; pub struct Mp4Matcher;
impl Mp4Matcher { impl Mp4Matcher {
pub fn matches(&self,data: &[u8]) -> bool { pub fn matches(&self, data: &[u8]) -> bool {
if data.len() < 12 { if data.len() < 12 {
return false; return false;
} }
@ -235,7 +235,7 @@ impl Mp4Matcher {
} }
let mut all_match = true; let mut all_match = true;
for i in 8..11 { for i in 8..11 {
if data[i]!=mp4[i - 8] { if data[i] != mp4[i - 8] {
all_match = false; all_match = false;
break; break;
} }
@ -278,7 +278,7 @@ struct BinaryOrPlaintextClassifier;
impl BinaryOrPlaintextClassifier { impl BinaryOrPlaintextClassifier {
fn classify_impl(&self, data: &[u8]) -> Option<(&'static str, &'static str)> { fn classify_impl(&self, data: &[u8]) -> Option<(&'static str, &'static str)> {
if (data.len() >=2 && if (data.len() >= 2 &&
((data[0] == 0xFFu8 && data[1] == 0xFEu8) || ((data[0] == 0xFFu8 && data[1] == 0xFEu8) ||
(data[0] == 0xFEu8 && data[1] == 0xFFu8))) || (data[0] == 0xFEu8 && data[1] == 0xFFu8))) ||
(data.len() >= 3 && data[0] == 0xEFu8 && data[1] == 0xBBu8 && data[2] == 0xBFu8) (data.len() >= 3 && data[0] == 0xEFu8 && data[1] == 0xBBu8 && data[2] == 0xBFu8)
@ -320,7 +320,7 @@ impl GroupedClassifier {
} }
} }
fn audio_video_classifer() -> GroupedClassifier { fn audio_video_classifer() -> GroupedClassifier {
GroupedClassifier{ GroupedClassifier {
byte_matchers: vec![ byte_matchers: vec![
box ByteMatcher::video_webm(), box ByteMatcher::video_webm(),
box ByteMatcher::audio_basic(), box ByteMatcher::audio_basic(),
@ -335,7 +335,7 @@ impl GroupedClassifier {
} }
} }
fn scriptable_classifier() -> GroupedClassifier { fn scriptable_classifier() -> GroupedClassifier {
GroupedClassifier{ GroupedClassifier {
byte_matchers: vec![ byte_matchers: vec![
box ByteMatcher::text_html_doctype(), box ByteMatcher::text_html_doctype(),
box ByteMatcher::text_html_page(), box ByteMatcher::text_html_page(),
@ -361,7 +361,7 @@ impl GroupedClassifier {
} }
fn plaintext_classifier() -> GroupedClassifier { fn plaintext_classifier() -> GroupedClassifier {
GroupedClassifier{ GroupedClassifier {
byte_matchers: vec![ byte_matchers: vec![
box ByteMatcher::text_plain_utf_8_bom(), box ByteMatcher::text_plain_utf_8_bom(),
box ByteMatcher::text_plain_utf_16le_bom(), box ByteMatcher::text_plain_utf_16le_bom(),
@ -395,7 +395,7 @@ impl GroupedClassifier {
} }
} }
impl MIMEChecker for GroupedClassifier { impl MIMEChecker for GroupedClassifier {
fn classify(&self,data: &[u8]) -> Option<(String, String)> { fn classify(&self, data: &[u8]) -> Option<(String, String)> {
self.byte_matchers self.byte_matchers
.iter() .iter()
.filter_map(|matcher| matcher.classify(data)) .filter_map(|matcher| matcher.classify(data))
@ -405,7 +405,7 @@ impl MIMEChecker for GroupedClassifier {
struct FeedsClassifier; struct FeedsClassifier;
impl FeedsClassifier { impl FeedsClassifier {
fn classify_impl(&self,data: &[u8]) -> Option<(&'static str,&'static str)> { fn classify_impl(&self, data: &[u8]) -> Option<(&'static str, &'static str)> {
let length = data.len(); let length = data.len();
let mut data_iterator = data.iter(); let mut data_iterator = data.iter();
@ -469,7 +469,7 @@ impl FeedsClassifier {
} }
impl MIMEChecker for FeedsClassifier { impl MIMEChecker for FeedsClassifier {
fn classify(&self,data: &[u8]) -> Option<(String, String)> { fn classify(&self, data: &[u8]) -> Option<(String, String)> {
as_string_option(self.classify_impl(data)) as_string_option(self.classify_impl(data))
} }
} }
@ -478,8 +478,8 @@ impl MIMEChecker for FeedsClassifier {
//TODO: These should be configured and not hard coded //TODO: These should be configured and not hard coded
impl ByteMatcher { impl ByteMatcher {
//A Windows Icon signature //A Windows Icon signature
fn image_x_icon()->ByteMatcher { fn image_x_icon() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"\x00\x00\x01\x00", pattern: b"\x00\x00\x01\x00",
mask: b"\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF",
content_type: ("image", "x-icon"), content_type: ("image", "x-icon"),
@ -487,8 +487,8 @@ impl ByteMatcher {
} }
} }
//A Windows Cursor signature. //A Windows Cursor signature.
fn image_x_icon_cursor()->ByteMatcher { fn image_x_icon_cursor() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"\x00\x00\x02\x00", pattern: b"\x00\x00\x02\x00",
mask: b"\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF",
content_type: ("image", "x-icon"), content_type: ("image", "x-icon"),
@ -496,8 +496,8 @@ impl ByteMatcher {
} }
} }
//The string "BM", a BMP signature. //The string "BM", a BMP signature.
fn image_bmp()->ByteMatcher { fn image_bmp() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"BM", pattern: b"BM",
mask: b"\xFF\xFF", mask: b"\xFF\xFF",
content_type: ("image", "bmp"), content_type: ("image", "bmp"),
@ -505,8 +505,8 @@ impl ByteMatcher {
} }
} }
//The string "GIF89a", a GIF signature. //The string "GIF89a", a GIF signature.
fn image_gif89a()->ByteMatcher { fn image_gif89a() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"GIF89a", pattern: b"GIF89a",
mask: b"\xFF\xFF\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF\xFF\xFF",
content_type: ("image", "gif"), content_type: ("image", "gif"),
@ -514,8 +514,8 @@ impl ByteMatcher {
} }
} }
//The string "GIF87a", a GIF signature. //The string "GIF87a", a GIF signature.
fn image_gif87a()->ByteMatcher { fn image_gif87a() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"GIF87a", pattern: b"GIF87a",
mask: b"\xFF\xFF\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF\xFF\xFF",
content_type: ("image", "gif"), content_type: ("image", "gif"),
@ -523,8 +523,8 @@ impl ByteMatcher {
} }
} }
//The string "RIFF" followed by four bytes followed by the string "WEBPVP". //The string "RIFF" followed by four bytes followed by the string "WEBPVP".
fn image_webp()->ByteMatcher { fn image_webp() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"RIFF\x00\x00\x00\x00WEBPVP", pattern: b"RIFF\x00\x00\x00\x00WEBPVP",
mask: b"\xFF\xFF\xFF\xFF\x00\x00\x00\x00,\xFF\xFF\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF\x00\x00\x00\x00,\xFF\xFF\xFF\xFF\xFF\xFF",
content_type: ("image", "webp"), content_type: ("image", "webp"),
@ -533,8 +533,8 @@ impl ByteMatcher {
} }
//An error-checking byte followed by the string "PNG" followed by CR LF SUB LF, the PNG //An error-checking byte followed by the string "PNG" followed by CR LF SUB LF, the PNG
//signature. //signature.
fn image_png()->ByteMatcher { fn image_png() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"\x89PNG\r\n\x1A\n", pattern: b"\x89PNG\r\n\x1A\n",
mask: b"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF",
content_type: ("image", "png"), content_type: ("image", "png"),
@ -542,8 +542,8 @@ impl ByteMatcher {
} }
} }
// The JPEG Start of Image marker followed by the indicator byte of another marker. // The JPEG Start of Image marker followed by the indicator byte of another marker.
fn image_jpeg()->ByteMatcher { fn image_jpeg() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"\xFF\xD8\xFF", pattern: b"\xFF\xD8\xFF",
mask: b"\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF",
content_type: ("image", "jpeg"), content_type: ("image", "jpeg"),
@ -551,8 +551,8 @@ impl ByteMatcher {
} }
} }
//The WebM signature. [TODO: Use more bytes?] //The WebM signature. [TODO: Use more bytes?]
fn video_webm()->ByteMatcher { fn video_webm() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"\x1A\x45\xDF\xA3", pattern: b"\x1A\x45\xDF\xA3",
mask: b"\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF",
content_type: ("video", "webm"), content_type: ("video", "webm"),
@ -560,8 +560,8 @@ impl ByteMatcher {
} }
} }
//The string ".snd", the basic audio signature. //The string ".snd", the basic audio signature.
fn audio_basic()->ByteMatcher { fn audio_basic() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b".snd", pattern: b".snd",
mask: b"\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF",
content_type: ("audio", "basic"), content_type: ("audio", "basic"),
@ -569,8 +569,8 @@ impl ByteMatcher {
} }
} }
//The string "FORM" followed by four bytes followed by the string "AIFF", the AIFF signature. //The string "FORM" followed by four bytes followed by the string "AIFF", the AIFF signature.
fn audio_aiff()->ByteMatcher { fn audio_aiff() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"FORM\x00\x00\x00\x00AIFF", pattern: b"FORM\x00\x00\x00\x00AIFF",
mask: b"\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF",
content_type: ("audio", "aiff"), content_type: ("audio", "aiff"),
@ -578,8 +578,8 @@ impl ByteMatcher {
} }
} }
//The string "ID3", the ID3v2-tagged MP3 signature. //The string "ID3", the ID3v2-tagged MP3 signature.
fn audio_mpeg()->ByteMatcher { fn audio_mpeg() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"ID3", pattern: b"ID3",
mask: b"\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF",
content_type: ("audio", "mpeg"), content_type: ("audio", "mpeg"),
@ -587,8 +587,8 @@ impl ByteMatcher {
} }
} }
//The string "OggS" followed by NUL, the Ogg container signature. //The string "OggS" followed by NUL, the Ogg container signature.
fn application_ogg()->ByteMatcher { fn application_ogg() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"OggS", pattern: b"OggS",
mask: b"\xFF\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF\xFF",
content_type: ("application", "ogg"), content_type: ("application", "ogg"),
@ -597,8 +597,8 @@ impl ByteMatcher {
} }
//The string "MThd" followed by four bytes representing the number 6 in 32 bits (big-endian), //The string "MThd" followed by four bytes representing the number 6 in 32 bits (big-endian),
//the MIDI signature. //the MIDI signature.
fn audio_midi()->ByteMatcher { fn audio_midi() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"MThd\x00\x00\x00\x06", pattern: b"MThd\x00\x00\x00\x06",
mask: b"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF",
content_type: ("audio", "midi"), content_type: ("audio", "midi"),
@ -606,8 +606,8 @@ impl ByteMatcher {
} }
} }
//The string "RIFF" followed by four bytes followed by the string "AVI ", the AVI signature. //The string "RIFF" followed by four bytes followed by the string "AVI ", the AVI signature.
fn video_avi()->ByteMatcher { fn video_avi() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"RIFF\x00\x00\x00\x00AVI ", pattern: b"RIFF\x00\x00\x00\x00AVI ",
mask: b"\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF",
content_type: ("video", "avi"), content_type: ("video", "avi"),
@ -615,8 +615,8 @@ impl ByteMatcher {
} }
} }
// The string "RIFF" followed by four bytes followed by the string "WAVE", the WAVE signature. // The string "RIFF" followed by four bytes followed by the string "WAVE", the WAVE signature.
fn audio_wave()->ByteMatcher { fn audio_wave() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"RIFF\x00\x00\x00\x00WAVE", pattern: b"RIFF\x00\x00\x00\x00WAVE",
mask: b"\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF",
content_type: ("audio", "wave"), content_type: ("audio", "wave"),
@ -624,9 +624,9 @@ impl ByteMatcher {
} }
} }
// doctype terminated with Tag terminating (TT) Byte // doctype terminated with Tag terminating (TT) Byte
fn text_html_doctype()->TagTerminatedByteMatcher { fn text_html_doctype() -> TagTerminatedByteMatcher {
TagTerminatedByteMatcher { TagTerminatedByteMatcher {
matcher: ByteMatcher{ matcher: ByteMatcher {
pattern: b"<!DOCTYPE HTML", pattern: b"<!DOCTYPE HTML",
mask: b"\xFF\xFF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xFF\xDF\xDF\xDF\xDF", mask: b"\xFF\xFF\xDF\xDF\xDF\xDF\xDF\xDF\xDF\xFF\xDF\xDF\xDF\xDF",
content_type: ("text", "html"), content_type: ("text", "html"),
@ -636,9 +636,9 @@ impl ByteMatcher {
} }
// HTML terminated with Tag terminating (TT) Byte: 0x20 (SP) // HTML terminated with Tag terminating (TT) Byte: 0x20 (SP)
fn text_html_page()->TagTerminatedByteMatcher { fn text_html_page() -> TagTerminatedByteMatcher {
TagTerminatedByteMatcher { TagTerminatedByteMatcher {
matcher: ByteMatcher{ matcher: ByteMatcher {
pattern: b"<HTML", pattern: b"<HTML",
mask: b"\xFF\xDF\xDF\xDF\xDF\xFF", mask: b"\xFF\xDF\xDF\xDF\xDF\xFF",
content_type: ("text", "html"), content_type: ("text", "html"),
@ -648,9 +648,9 @@ impl ByteMatcher {
} }
// head terminated with Tag Terminating (TT) Byte // head terminated with Tag Terminating (TT) Byte
fn text_html_head()->TagTerminatedByteMatcher { fn text_html_head() -> TagTerminatedByteMatcher {
TagTerminatedByteMatcher { TagTerminatedByteMatcher {
matcher: ByteMatcher{ matcher: ByteMatcher {
pattern: b"<HEAD", pattern: b"<HEAD",
mask: b"\xFF\xDF\xDF\xDF\xDF", mask: b"\xFF\xDF\xDF\xDF\xDF",
content_type: ("text", "html"), content_type: ("text", "html"),
@ -660,7 +660,7 @@ impl ByteMatcher {
} }
// script terminated with Tag Terminating (TT) Byte // script terminated with Tag Terminating (TT) Byte
fn text_html_script()->TagTerminatedByteMatcher { fn text_html_script() -> TagTerminatedByteMatcher {
TagTerminatedByteMatcher { TagTerminatedByteMatcher {
matcher: ByteMatcher { matcher: ByteMatcher {
pattern: b"<SCRIPT", pattern: b"<SCRIPT",
@ -672,9 +672,9 @@ impl ByteMatcher {
} }
// iframe terminated with Tag Terminating (TT) Byte // iframe terminated with Tag Terminating (TT) Byte
fn text_html_iframe()->TagTerminatedByteMatcher { fn text_html_iframe() -> TagTerminatedByteMatcher {
TagTerminatedByteMatcher { TagTerminatedByteMatcher {
matcher: ByteMatcher{ matcher: ByteMatcher {
pattern: b"<IFRAME", pattern: b"<IFRAME",
mask: b"\xFF\xDF\xDF\xDF\xDF\xDF\xDF", mask: b"\xFF\xDF\xDF\xDF\xDF\xDF\xDF",
content_type: ("text", "html"), content_type: ("text", "html"),
@ -684,9 +684,9 @@ impl ByteMatcher {
} }
// h1 terminated with Tag Terminating (TT) Byte // h1 terminated with Tag Terminating (TT) Byte
fn text_html_h1()->TagTerminatedByteMatcher { fn text_html_h1() -> TagTerminatedByteMatcher {
TagTerminatedByteMatcher { TagTerminatedByteMatcher {
matcher: ByteMatcher{ matcher: ByteMatcher {
pattern: b"<H1", pattern: b"<H1",
mask: b"\xFF\xDF\xFF", mask: b"\xFF\xDF\xFF",
content_type: ("text", "html"), content_type: ("text", "html"),
@ -696,9 +696,9 @@ impl ByteMatcher {
} }
// div terminated with Tag Terminating (TT) Byte // div terminated with Tag Terminating (TT) Byte
fn text_html_div()->TagTerminatedByteMatcher { fn text_html_div() -> TagTerminatedByteMatcher {
TagTerminatedByteMatcher { TagTerminatedByteMatcher {
matcher: ByteMatcher{ matcher: ByteMatcher {
pattern: b"<DIV", pattern: b"<DIV",
mask: b"\xFF\xDF\xDF\xDF", mask: b"\xFF\xDF\xDF\xDF",
content_type: ("text", "html"), content_type: ("text", "html"),
@ -708,9 +708,9 @@ impl ByteMatcher {
} }
// font terminated with Tag Terminating (TT) Byte // font terminated with Tag Terminating (TT) Byte
fn text_html_font()->TagTerminatedByteMatcher { fn text_html_font() -> TagTerminatedByteMatcher {
TagTerminatedByteMatcher { TagTerminatedByteMatcher {
matcher: ByteMatcher{ matcher: ByteMatcher {
pattern: b"<FONT", pattern: b"<FONT",
mask: b"\xFF\xDF\xDF\xDF\xDF", mask: b"\xFF\xDF\xDF\xDF\xDF",
content_type: ("text", "html"), content_type: ("text", "html"),
@ -720,9 +720,9 @@ impl ByteMatcher {
} }
// table terminated with Tag Terminating (TT) Byte // table terminated with Tag Terminating (TT) Byte
fn text_html_table()->TagTerminatedByteMatcher { fn text_html_table() -> TagTerminatedByteMatcher {
TagTerminatedByteMatcher { TagTerminatedByteMatcher {
matcher: ByteMatcher{ matcher: ByteMatcher {
pattern: b"<TABLE", pattern: b"<TABLE",
mask: b"\xFF\xDF\xDF\xDF\xDF\xDF", mask: b"\xFF\xDF\xDF\xDF\xDF\xDF",
content_type: ("text", "html"), content_type: ("text", "html"),
@ -732,9 +732,9 @@ impl ByteMatcher {
} }
// a terminated with Tag Terminating (TT) Byte // a terminated with Tag Terminating (TT) Byte
fn text_html_a()->TagTerminatedByteMatcher { fn text_html_a() -> TagTerminatedByteMatcher {
TagTerminatedByteMatcher { TagTerminatedByteMatcher {
matcher: ByteMatcher{ matcher: ByteMatcher {
pattern: b"<A", pattern: b"<A",
mask: b"\xFF\xDF", mask: b"\xFF\xDF",
content_type: ("text", "html"), content_type: ("text", "html"),
@ -744,9 +744,9 @@ impl ByteMatcher {
} }
// style terminated with Tag Terminating (TT) Byte // style terminated with Tag Terminating (TT) Byte
fn text_html_style()->TagTerminatedByteMatcher { fn text_html_style() -> TagTerminatedByteMatcher {
TagTerminatedByteMatcher { TagTerminatedByteMatcher {
matcher: ByteMatcher{ matcher: ByteMatcher {
pattern: b"<STYLE", pattern: b"<STYLE",
mask: b"\xFF\xDF\xDF\xDF\xDF\xDF", mask: b"\xFF\xDF\xDF\xDF\xDF\xDF",
content_type: ("text", "html"), content_type: ("text", "html"),
@ -756,9 +756,9 @@ impl ByteMatcher {
} }
// title terminated with Tag Terminating (TT) Byte // title terminated with Tag Terminating (TT) Byte
fn text_html_title()->TagTerminatedByteMatcher { fn text_html_title() -> TagTerminatedByteMatcher {
TagTerminatedByteMatcher { TagTerminatedByteMatcher {
matcher: ByteMatcher{ matcher: ByteMatcher {
pattern: b"<TITLE", pattern: b"<TITLE",
mask: b"\xFF\xDF\xDF\xDF\xDF\xDF", mask: b"\xFF\xDF\xDF\xDF\xDF\xDF",
content_type: ("text", "html"), content_type: ("text", "html"),
@ -768,9 +768,9 @@ impl ByteMatcher {
} }
// b terminated with Tag Terminating (TT) Byte // b terminated with Tag Terminating (TT) Byte
fn text_html_b()->TagTerminatedByteMatcher { fn text_html_b() -> TagTerminatedByteMatcher {
TagTerminatedByteMatcher { TagTerminatedByteMatcher {
matcher: ByteMatcher{ matcher: ByteMatcher {
pattern: b"<B", pattern: b"<B",
mask: b"\xFF\xDF", mask: b"\xFF\xDF",
content_type: ("text", "html"), content_type: ("text", "html"),
@ -780,9 +780,9 @@ impl ByteMatcher {
} }
// body terminated with Tag Terminating (TT) Byte // body terminated with Tag Terminating (TT) Byte
fn text_html_body()->TagTerminatedByteMatcher { fn text_html_body() -> TagTerminatedByteMatcher {
TagTerminatedByteMatcher { TagTerminatedByteMatcher {
matcher: ByteMatcher{ matcher: ByteMatcher {
pattern: b"<BODY", pattern: b"<BODY",
mask: b"\xFF\xDF\xDF\xDF\xDF", mask: b"\xFF\xDF\xDF\xDF\xDF",
content_type: ("text", "html"), content_type: ("text", "html"),
@ -792,9 +792,9 @@ impl ByteMatcher {
} }
// br terminated with Tag Terminating (TT) Byte // br terminated with Tag Terminating (TT) Byte
fn text_html_br()->TagTerminatedByteMatcher { fn text_html_br() -> TagTerminatedByteMatcher {
TagTerminatedByteMatcher { TagTerminatedByteMatcher {
matcher: ByteMatcher{ matcher: ByteMatcher {
pattern: b"<BR", pattern: b"<BR",
mask: b"\xFF\xDF\xDF", mask: b"\xFF\xDF\xDF",
content_type: ("text", "html"), content_type: ("text", "html"),
@ -804,9 +804,9 @@ impl ByteMatcher {
} }
// p terminated with Tag Terminating (TT) Byte // p terminated with Tag Terminating (TT) Byte
fn text_html_p()->TagTerminatedByteMatcher { fn text_html_p() -> TagTerminatedByteMatcher {
TagTerminatedByteMatcher { TagTerminatedByteMatcher {
matcher: ByteMatcher{ matcher: ByteMatcher {
pattern: b"<P", pattern: b"<P",
mask: b"\xFF\xDF", mask: b"\xFF\xDF",
content_type: ("text", "html"), content_type: ("text", "html"),
@ -816,9 +816,9 @@ impl ByteMatcher {
} }
// comment terminated with Tag Terminating (TT) Byte // comment terminated with Tag Terminating (TT) Byte
fn text_html_comment()->TagTerminatedByteMatcher { fn text_html_comment() -> TagTerminatedByteMatcher {
TagTerminatedByteMatcher { TagTerminatedByteMatcher {
matcher: ByteMatcher{ matcher: ByteMatcher {
pattern: b"<!--", pattern: b"<!--",
mask: b"\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF",
content_type: ("text", "html"), content_type: ("text", "html"),
@ -828,7 +828,7 @@ impl ByteMatcher {
} }
//The string "<?xml". //The string "<?xml".
fn text_xml()->ByteMatcher { fn text_xml() -> ByteMatcher {
ByteMatcher { ByteMatcher {
pattern: b"<?xml", pattern: b"<?xml",
mask: b"\xFF\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF\xFF",
@ -837,8 +837,8 @@ impl ByteMatcher {
} }
} }
//The string "%PDF-", the PDF signature. //The string "%PDF-", the PDF signature.
fn application_pdf()->ByteMatcher { fn application_pdf() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"%PDF", pattern: b"%PDF",
mask: b"\xFF\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF\xFF",
content_type: ("application", "pdf"), content_type: ("application", "pdf"),
@ -848,8 +848,8 @@ impl ByteMatcher {
//34 bytes followed by the string "LP", the Embedded OpenType signature. //34 bytes followed by the string "LP", the Embedded OpenType signature.
// TODO: Use this in font context classifier // TODO: Use this in font context classifier
#[allow(dead_code)] #[allow(dead_code)]
fn application_vnd_ms_font_object()->ByteMatcher { fn application_vnd_ms_font_object() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ pattern: b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00LP", \x00\x00LP",
@ -863,8 +863,8 @@ impl ByteMatcher {
//4 bytes representing the version number 1.0, a TrueType signature. //4 bytes representing the version number 1.0, a TrueType signature.
// TODO: Use this in font context classifier // TODO: Use this in font context classifier
#[allow(dead_code)] #[allow(dead_code)]
fn true_type()->ByteMatcher { fn true_type() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"\x00\x01\x00\x00", pattern: b"\x00\x01\x00\x00",
mask: b"\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF",
content_type: ("(TrueType)", ""), content_type: ("(TrueType)", ""),
@ -874,8 +874,8 @@ impl ByteMatcher {
//The string "OTTO", the OpenType signature. //The string "OTTO", the OpenType signature.
// TODO: Use this in font context classifier // TODO: Use this in font context classifier
#[allow(dead_code)] #[allow(dead_code)]
fn open_type()->ByteMatcher { fn open_type() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"OTTO", pattern: b"OTTO",
mask: b"\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF",
content_type: ("(OpenType)", ""), content_type: ("(OpenType)", ""),
@ -885,8 +885,8 @@ impl ByteMatcher {
// The string "ttcf", the TrueType Collection signature. // The string "ttcf", the TrueType Collection signature.
// TODO: Use this in font context classifier // TODO: Use this in font context classifier
#[allow(dead_code)] #[allow(dead_code)]
fn true_type_collection()->ByteMatcher { fn true_type_collection() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"ttcf", pattern: b"ttcf",
mask: b"\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF",
content_type: ("(TrueType Collection)", ""), content_type: ("(TrueType Collection)", ""),
@ -896,8 +896,8 @@ impl ByteMatcher {
// The string "wOFF", the Web Open Font Format signature. // The string "wOFF", the Web Open Font Format signature.
// TODO: Use this in font context classifier // TODO: Use this in font context classifier
#[allow(dead_code)] #[allow(dead_code)]
fn application_font_woff()->ByteMatcher { fn application_font_woff() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"wOFF", pattern: b"wOFF",
mask: b"\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF",
content_type: ("application", "font-woff"), content_type: ("application", "font-woff"),
@ -905,8 +905,8 @@ impl ByteMatcher {
} }
} }
//The GZIP archive signature. //The GZIP archive signature.
fn application_x_gzip()->ByteMatcher { fn application_x_gzip() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"\x1F\x8B\x08", pattern: b"\x1F\x8B\x08",
mask: b"\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF",
content_type: ("application", "x-gzip"), content_type: ("application", "x-gzip"),
@ -914,8 +914,8 @@ impl ByteMatcher {
} }
} }
//The string "PK" followed by ETX EOT, the ZIP archive signature. //The string "PK" followed by ETX EOT, the ZIP archive signature.
fn application_zip()->ByteMatcher { fn application_zip() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"PK\x03\x04", pattern: b"PK\x03\x04",
mask: b"\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF",
content_type: ("application", "zip"), content_type: ("application", "zip"),
@ -923,8 +923,8 @@ impl ByteMatcher {
} }
} }
//The string "Rar " followed by SUB BEL NUL, the RAR archive signature. //The string "Rar " followed by SUB BEL NUL, the RAR archive signature.
fn application_x_rar_compressed()->ByteMatcher { fn application_x_rar_compressed() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"Rar \x1A\x07\x00", pattern: b"Rar \x1A\x07\x00",
mask: b"\xFF\xFF\xFF\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF\xFF\xFF\xFF",
content_type: ("application", "x-rar-compressed"), content_type: ("application", "x-rar-compressed"),
@ -932,8 +932,8 @@ impl ByteMatcher {
} }
} }
// The string "%!PS-Adobe-", the PostScript signature. // The string "%!PS-Adobe-", the PostScript signature.
fn application_postscript()->ByteMatcher { fn application_postscript() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"%!PS-Adobe-", pattern: b"%!PS-Adobe-",
mask: b"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", mask: b"\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF",
content_type: ("application", "postscript"), content_type: ("application", "postscript"),
@ -941,8 +941,8 @@ impl ByteMatcher {
} }
} }
// UTF-16BE BOM // UTF-16BE BOM
fn text_plain_utf_16be_bom()->ByteMatcher { fn text_plain_utf_16be_bom() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"\xFE\xFF\x00\x00", pattern: b"\xFE\xFF\x00\x00",
mask: b"\xFF\xFF\x00\x00", mask: b"\xFF\xFF\x00\x00",
content_type: ("text", "plain"), content_type: ("text", "plain"),
@ -950,8 +950,8 @@ impl ByteMatcher {
} }
} }
//UTF-16LE BOM //UTF-16LE BOM
fn text_plain_utf_16le_bom()->ByteMatcher { fn text_plain_utf_16le_bom() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"\xFF\xFE\x00\x00", pattern: b"\xFF\xFE\x00\x00",
mask: b"\xFF\xFF\x00\x00", mask: b"\xFF\xFF\x00\x00",
content_type: ("text", "plain"), content_type: ("text", "plain"),
@ -959,8 +959,8 @@ impl ByteMatcher {
} }
} }
//UTF-8 BOM //UTF-8 BOM
fn text_plain_utf_8_bom()->ByteMatcher { fn text_plain_utf_8_bom() -> ByteMatcher {
ByteMatcher{ ByteMatcher {
pattern: b"\xEF\xBB\xBF\x00", pattern: b"\xEF\xBB\xBF\x00",
mask: b"\xFF\xFF\xFF\x00", mask: b"\xFF\xFF\xFF\x00",
content_type: ("text", "plain"), content_type: ("text", "plain"),

Просмотреть файл

@ -2,7 +2,7 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this * 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/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
pub static PUB_DOMAINS : [&'static str; 5953] = [ pub static PUB_DOMAINS: [&'static str; 5953] = [
"com.ac", "com.ac",
"edu.ac", "edu.ac",
"gov.ac", "gov.ac",

Просмотреть файл

@ -116,7 +116,7 @@ pub fn load_from_memory(buffer: &[u8]) -> Option<Image> {
fn is_gif(buffer: &[u8]) -> bool { fn is_gif(buffer: &[u8]) -> bool {
match buffer { match buffer {
[b'G',b'I',b'F',b'8', n, b'a', ..] if n == b'7' || n == b'9' => true, [b'G', b'I', b'F', b'8', n, b'a', ..] if n == b'7' || n == b'9' => true,
_ => false _ => false
} }
} }

Просмотреть файл

@ -51,7 +51,7 @@ fn expand_cased<'cx, T>(cx: &'cx mut ExtCtxt, sp: Span, tts: &[ast::TokenTree],
} }
(_, rest) => { (_, rest) => {
if rest > 0 { if rest > 0 {
cx.span_err(sp, &format!("expected 1 argument, found {}", rest+1)); cx.span_err(sp, &format!("expected 1 argument, found {}", rest + 1));
} }
base::DummyResult::expr(sp) base::DummyResult::expr(sp)
} }

Просмотреть файл

@ -8,8 +8,8 @@ use syntax::ptr::P;
use syntax::ast::{MetaItem, Expr}; use syntax::ast::{MetaItem, Expr};
use syntax::ast; use syntax::ast;
use syntax::ext::build::AstBuilder; use syntax::ext::build::AstBuilder;
use syntax::ext::deriving::generic::{combine_substructure, EnumMatching, FieldInfo, MethodDef, Struct, use syntax::ext::deriving::generic::{combine_substructure, EnumMatching, FieldInfo, MethodDef};
Substructure, TraitDef, ty}; use syntax::ext::deriving::generic::{Struct, Substructure, TraitDef, ty};
pub fn expand_dom_struct(cx: &mut ExtCtxt, sp: Span, _: &MetaItem, anno: Annotatable) -> Annotatable { pub fn expand_dom_struct(cx: &mut ExtCtxt, sp: Span, _: &MetaItem, anno: Annotatable) -> Annotatable {
if let Annotatable::Item(item) = anno { if let Annotatable::Item(item) = anno {

Просмотреть файл

@ -22,7 +22,7 @@ pub fn match_ty_unwrap<'a>(ty: &'a Ty, segments: &[&str]) -> Option<&'a [P<Ty>]>
// I could muck around with the maps and find the full path // I could muck around with the maps and find the full path
// however the more efficient way is to simply reverse the iterators and zip them // however the more efficient way is to simply reverse the iterators and zip them
// which will compare them in reverse until one of them runs out of segments // which will compare them in reverse until one of them runs out of segments
if seg.iter().rev().zip(segments.iter().rev()).all(|(a,b)| a.identifier.name.as_str() == *b) { if seg.iter().rev().zip(segments.iter().rev()).all(|(a, b)| a.identifier.name.as_str() == *b) {
match seg.last() { match seg.last() {
Some(&PathSegment {parameters: AngleBracketedParameters(ref a), ..}) => { Some(&PathSegment {parameters: AngleBracketedParameters(ref a), ..}) => {
Some(&a.types) Some(&a.types)

Просмотреть файл

@ -106,10 +106,10 @@ impl CORSRequest {
} }
pub fn http_fetch_async(&self, pub fn http_fetch_async(&self,
listener: Box<AsyncCORSResponseListener+Send>, listener: Box<AsyncCORSResponseListener + Send>,
script_chan: Box<ScriptChan+Send>) { script_chan: Box<ScriptChan + Send>) {
struct CORSContext { struct CORSContext {
listener: Box<AsyncCORSResponseListener+Send>, listener: Box<AsyncCORSResponseListener + Send>,
response: RefCell<Option<CORSResponse>>, response: RefCell<Option<CORSResponse>>,
} }
@ -341,7 +341,7 @@ pub struct CORSCacheEntry {
} }
impl CORSCacheEntry { impl CORSCacheEntry {
fn new(origin:Url, fn new(origin: Url,
url: Url, url: Url,
max_age: u32, max_age: u32,
credentials: bool, credentials: bool,

Просмотреть файл

@ -149,7 +149,7 @@ impl<'a> GlobalRef<'a> {
/// `ScriptChan` used to send messages to the event loop of this global's /// `ScriptChan` used to send messages to the event loop of this global's
/// thread. /// thread.
pub fn script_chan(&self) -> Box<ScriptChan+Send> { pub fn script_chan(&self) -> Box<ScriptChan + Send> {
match *self { match *self {
GlobalRef::Window(ref window) => window.script_chan(), GlobalRef::Window(ref window) => window.script_chan(),
GlobalRef::Worker(ref worker) => worker.script_chan(), GlobalRef::Worker(ref worker) => worker.script_chan(),
@ -159,7 +159,7 @@ impl<'a> GlobalRef<'a> {
/// Create a new sender/receiver pair that can be used to implement an on-demand /// Create a new sender/receiver pair that can be used to implement an on-demand
/// event loop. Used for implementing web APIs that require blocking semantics /// event loop. Used for implementing web APIs that require blocking semantics
/// without resorting to nested event loops. /// without resorting to nested event loops.
pub fn new_script_pair(&self) -> (Box<ScriptChan+Send>, Box<ScriptPort+Send>) { pub fn new_script_pair(&self) -> (Box<ScriptChan + Send>, Box<ScriptPort + Send>) {
match *self { match *self {
GlobalRef::Window(ref window) => window.new_script_pair(), GlobalRef::Window(ref window) => window.new_script_pair(),
GlobalRef::Worker(ref worker) => worker.new_script_pair(), GlobalRef::Worker(ref worker) => worker.new_script_pair(),

Просмотреть файл

@ -207,11 +207,11 @@ impl MutHeapJSVal {
/// `JS<T>`. /// `JS<T>`.
#[must_root] #[must_root]
#[derive(JSTraceable)] #[derive(JSTraceable)]
pub struct MutHeap<T: HeapGCValue+Copy> { pub struct MutHeap<T: HeapGCValue + Copy> {
val: Cell<T>, val: Cell<T>,
} }
impl<T: HeapGCValue+Copy> MutHeap<T> { impl<T: HeapGCValue + Copy> MutHeap<T> {
/// Create a new `MutHeap`. /// Create a new `MutHeap`.
pub fn new(initial: T) -> MutHeap<T> { pub fn new(initial: T) -> MutHeap<T> {
MutHeap { MutHeap {
@ -236,11 +236,11 @@ impl<T: HeapGCValue+Copy> MutHeap<T> {
/// barriers are enforced. /// barriers are enforced.
#[must_root] #[must_root]
#[derive(JSTraceable, HeapSizeOf)] #[derive(JSTraceable, HeapSizeOf)]
pub struct MutNullableHeap<T: HeapGCValue+Copy> { pub struct MutNullableHeap<T: HeapGCValue + Copy> {
ptr: Cell<Option<T>> ptr: Cell<Option<T>>
} }
impl<T: HeapGCValue+Copy> MutNullableHeap<T> { impl<T: HeapGCValue + Copy> MutNullableHeap<T> {
/// Create a new `MutNullableHeap`. /// Create a new `MutNullableHeap`.
pub fn new(initial: Option<T>) -> MutNullableHeap<T> { pub fn new(initial: Option<T>) -> MutNullableHeap<T> {
MutNullableHeap { MutNullableHeap {
@ -288,7 +288,7 @@ impl<T: Reflectable> MutNullableHeap<JS<T>> {
} }
} }
impl<T: HeapGCValue+Copy> Default for MutNullableHeap<T> { impl<T: HeapGCValue + Copy> Default for MutNullableHeap<T> {
fn default() -> MutNullableHeap<T> { fn default() -> MutNullableHeap<T> {
MutNullableHeap { MutNullableHeap {
ptr: Cell::new(None) ptr: Cell::new(None)

Просмотреть файл

@ -178,7 +178,7 @@ impl<T: JSTraceable> JSTraceable for *mut T {
} }
} }
impl<T: JSTraceable+Copy> JSTraceable for Cell<T> { impl<T: JSTraceable + Copy> JSTraceable for Cell<T> {
fn trace(&self, trc: *mut JSTracer) { fn trace(&self, trc: *mut JSTracer) {
self.get().trace(trc) self.get().trace(trc)
} }
@ -246,7 +246,7 @@ impl<T: JSTraceable, U: JSTraceable> JSTraceable for Result<T, U> {
} }
} }
impl<K,V,S> JSTraceable for HashMap<K, V, S> impl<K, V, S> JSTraceable for HashMap<K, V, S>
where K: Hash + Eq + JSTraceable, where K: Hash + Eq + JSTraceable,
V: JSTraceable, V: JSTraceable,
S: HashState, S: HashState,
@ -306,7 +306,7 @@ no_jsmanaged_fields!(WebGLError);
no_jsmanaged_fields!(ProfilerChan); no_jsmanaged_fields!(ProfilerChan);
no_jsmanaged_fields!(PseudoElement); no_jsmanaged_fields!(PseudoElement);
impl JSTraceable for Box<ScriptChan+Send> { impl JSTraceable for Box<ScriptChan + Send> {
#[inline] #[inline]
fn trace(&self, _trc: *mut JSTracer) { fn trace(&self, _trc: *mut JSTracer) {
// Do nothing // Do nothing
@ -327,7 +327,7 @@ impl<'a> JSTraceable for &'a str {
} }
} }
impl<A,B> JSTraceable for fn(A) -> B { impl<A, B> JSTraceable for fn(A) -> B {
#[inline] #[inline]
fn trace(&self, _: *mut JSTracer) { fn trace(&self, _: *mut JSTracer) {
// Do nothing // Do nothing
@ -341,7 +341,7 @@ impl<T> JSTraceable for IpcSender<T> where T: Deserialize + Serialize {
} }
} }
impl JSTraceable for Box<LayoutRPC+'static> { impl JSTraceable for Box<LayoutRPC + 'static> {
#[inline] #[inline]
fn trace(&self, _: *mut JSTracer) { fn trace(&self, _: *mut JSTracer) {
// Do nothing // Do nothing

Просмотреть файл

@ -35,7 +35,7 @@ pub struct Blob {
isClosed_: Cell<bool> isClosed_: Cell<bool>
} }
fn is_ascii_printable(string: &DOMString) -> bool{ fn is_ascii_printable(string: &DOMString) -> bool {
// Step 5.1 in Sec 5.1 of File API spec // Step 5.1 in Sec 5.1 of File API spec
// http://dev.w3.org/2006/webapi/FileAPI/#constructorBlob // http://dev.w3.org/2006/webapi/FileAPI/#constructorBlob
return string.chars().all(|c| { c >= '\x20' && c <= '\x7E' }) return string.chars().all(|c| { c >= '\x20' && c <= '\x7E' })
@ -92,7 +92,7 @@ impl<'a> BlobHelpers for &'a Blob {
impl<'a> BlobMethods for &'a Blob { impl<'a> BlobMethods for &'a Blob {
// https://dev.w3.org/2006/webapi/FileAPI/#dfn-size // https://dev.w3.org/2006/webapi/FileAPI/#dfn-size
fn Size(self) -> u64{ fn Size(self) -> u64 {
match self.bytes { match self.bytes {
None => 0, None => 0,
Some(ref bytes) => bytes.len() as u64 Some(ref bytes) => bytes.len() as u64

Просмотреть файл

@ -173,7 +173,7 @@ impl CanvasRenderingContext2D {
// The source rectangle is the rectangle whose corners are the four points (sx, sy), // The source rectangle is the rectangle whose corners are the four points (sx, sy),
// (sx+sw, sy), (sx+sw, sy+sh), (sx, sy+sh). // (sx+sw, sy), (sx+sw, sy+sh), (sx, sy+sh).
let source_rect = Rect::new(Point2D::new(sx.min(sx+sw), sy.min(sy+sh)), let source_rect = Rect::new(Point2D::new(sx.min(sx + sw), sy.min(sy + sh)),
Size2D::new(sw.abs(), sh.abs())); Size2D::new(sw.abs(), sh.abs()));
// When the source rectangle is outside the source image, // When the source rectangle is outside the source image,
@ -191,8 +191,10 @@ impl CanvasRenderingContext2D {
// The destination rectangle is the rectangle whose corners are the four points (dx, dy), // The destination rectangle is the rectangle whose corners are the four points (dx, dy),
// (dx+dw, dy), (dx+dw, dy+dh), (dx, dy+dh). // (dx+dw, dy), (dx+dw, dy+dh), (dx, dy+dh).
let dest_rect = Rect::new(Point2D::new(dx.min(dx+dest_rect_width_scaled), dy.min(dy+dest_rect_height_scaled)), let dest_rect = Rect::new(Point2D::new(dx.min(dx + dest_rect_width_scaled),
Size2D::new(dest_rect_width_scaled.abs(), dest_rect_height_scaled.abs())); dy.min(dy + dest_rect_height_scaled)),
Size2D::new(dest_rect_width_scaled.abs(),
dest_rect_height_scaled.abs()));
let source_rect = Rect::new(Point2D::new(source_rect_clipped.origin.x, let source_rect = Rect::new(Point2D::new(source_rect_clipped.origin.x,
source_rect_clipped.origin.y), source_rect_clipped.origin.y),

Просмотреть файл

@ -88,7 +88,7 @@ impl<'a> ConsoleMethods for &'a Console {
fn prepare_message(logLevel: LogLevel, message: String) -> ConsoleMessage { fn prepare_message(logLevel: LogLevel, message: String) -> ConsoleMessage {
//TODO: Sending fake values for filename, lineNumber and columnNumber in LogMessage; adjust later //TODO: Sending fake values for filename, lineNumber and columnNumber in LogMessage; adjust later
ConsoleMessage{ ConsoleMessage {
message: message, message: message,
logLevel: logLevel, logLevel: logLevel,
filename: "test".to_owned(), filename: "test".to_owned(),

Просмотреть файл

@ -150,7 +150,7 @@ pub struct DedicatedWorkerGlobalScope {
worker: DOMRefCell<Option<TrustedWorkerAddress>>, worker: DOMRefCell<Option<TrustedWorkerAddress>>,
#[ignore_heap_size_of = "Can't measure trait objects"] #[ignore_heap_size_of = "Can't measure trait objects"]
/// Sender to the parent thread. /// Sender to the parent thread.
parent_sender: Box<ScriptChan+Send>, parent_sender: Box<ScriptChan + Send>,
} }
impl DedicatedWorkerGlobalScope { impl DedicatedWorkerGlobalScope {
@ -159,7 +159,7 @@ impl DedicatedWorkerGlobalScope {
id: PipelineId, id: PipelineId,
devtools_port: Receiver<DevtoolScriptControlMsg>, devtools_port: Receiver<DevtoolScriptControlMsg>,
runtime: Rc<Runtime>, runtime: Rc<Runtime>,
parent_sender: Box<ScriptChan+Send>, parent_sender: Box<ScriptChan + Send>,
own_sender: Sender<(TrustedWorkerAddress, WorkerScriptMsg)>, own_sender: Sender<(TrustedWorkerAddress, WorkerScriptMsg)>,
receiver: Receiver<(TrustedWorkerAddress, WorkerScriptMsg)>) receiver: Receiver<(TrustedWorkerAddress, WorkerScriptMsg)>)
-> DedicatedWorkerGlobalScope { -> DedicatedWorkerGlobalScope {
@ -180,7 +180,7 @@ impl DedicatedWorkerGlobalScope {
id: PipelineId, id: PipelineId,
devtools_port: Receiver<DevtoolScriptControlMsg>, devtools_port: Receiver<DevtoolScriptControlMsg>,
runtime: Rc<Runtime>, runtime: Rc<Runtime>,
parent_sender: Box<ScriptChan+Send>, parent_sender: Box<ScriptChan + Send>,
own_sender: Sender<(TrustedWorkerAddress, WorkerScriptMsg)>, own_sender: Sender<(TrustedWorkerAddress, WorkerScriptMsg)>,
receiver: Receiver<(TrustedWorkerAddress, WorkerScriptMsg)>) receiver: Receiver<(TrustedWorkerAddress, WorkerScriptMsg)>)
-> Root<DedicatedWorkerGlobalScope> { -> Root<DedicatedWorkerGlobalScope> {
@ -197,7 +197,7 @@ impl DedicatedWorkerGlobalScope {
id: PipelineId, id: PipelineId,
devtools_ipc_port: IpcReceiver<DevtoolScriptControlMsg>, devtools_ipc_port: IpcReceiver<DevtoolScriptControlMsg>,
worker: TrustedWorkerAddress, worker: TrustedWorkerAddress,
parent_sender: Box<ScriptChan+Send>, parent_sender: Box<ScriptChan + Send>,
own_sender: Sender<(TrustedWorkerAddress, WorkerScriptMsg)>, own_sender: Sender<(TrustedWorkerAddress, WorkerScriptMsg)>,
receiver: Receiver<(TrustedWorkerAddress, WorkerScriptMsg)>) { receiver: Receiver<(TrustedWorkerAddress, WorkerScriptMsg)>) {
let serialized_worker_url = worker_url.serialize(); let serialized_worker_url = worker_url.serialize();
@ -247,14 +247,14 @@ impl DedicatedWorkerGlobalScope {
} }
pub trait DedicatedWorkerGlobalScopeHelpers { pub trait DedicatedWorkerGlobalScopeHelpers {
fn script_chan(self) -> Box<ScriptChan+Send>; fn script_chan(self) -> Box<ScriptChan + Send>;
fn pipeline(self) -> PipelineId; fn pipeline(self) -> PipelineId;
fn new_script_pair(self) -> (Box<ScriptChan+Send>, Box<ScriptPort+Send>); fn new_script_pair(self) -> (Box<ScriptChan + Send>, Box<ScriptPort + Send>);
fn process_event(self, msg: CommonScriptMsg); fn process_event(self, msg: CommonScriptMsg);
} }
impl<'a> DedicatedWorkerGlobalScopeHelpers for &'a DedicatedWorkerGlobalScope { impl<'a> DedicatedWorkerGlobalScopeHelpers for &'a DedicatedWorkerGlobalScope {
fn script_chan(self) -> Box<ScriptChan+Send> { fn script_chan(self) -> Box<ScriptChan + Send> {
box WorkerThreadWorkerChan { box WorkerThreadWorkerChan {
sender: self.own_sender.clone(), sender: self.own_sender.clone(),
worker: self.worker.borrow().as_ref().unwrap().clone(), worker: self.worker.borrow().as_ref().unwrap().clone(),
@ -265,7 +265,7 @@ impl<'a> DedicatedWorkerGlobalScopeHelpers for &'a DedicatedWorkerGlobalScope {
self.id self.id
} }
fn new_script_pair(self) -> (Box<ScriptChan+Send>, Box<ScriptPort+Send>) { fn new_script_pair(self) -> (Box<ScriptChan + Send>, Box<ScriptPort + Send>) {
let (tx, rx) = channel(); let (tx, rx) = channel();
let chan = box SendableWorkerScriptChan { let chan = box SendableWorkerScriptChan {
sender: tx, sender: tx,

Просмотреть файл

@ -267,7 +267,7 @@ impl<'a> FileReaderMethods for &'a FileReader {
} }
// https://w3c.github.io/FileAPI/#dfn-readAsText // https://w3c.github.io/FileAPI/#dfn-readAsText
fn ReadAsText(self, blob: &Blob, label:Option<DOMString>) -> ErrorResult { fn ReadAsText(self, blob: &Blob, label: Option<DOMString>) -> ErrorResult {
self.read(FileReaderFunction::ReadAsText, blob, label) self.read(FileReaderFunction::ReadAsText, blob, label)
} }

Просмотреть файл

@ -121,7 +121,7 @@ impl<'a> FormDataMethods for &'a FormData {
} }
} }
trait PrivateFormDataHelpers{ trait PrivateFormDataHelpers {
fn get_file_from_blob(self, value: &Blob, filename: Option<DOMString>) -> Root<File>; fn get_file_from_blob(self, value: &Blob, filename: Option<DOMString>) -> Root<File>;
} }

Просмотреть файл

@ -26,7 +26,7 @@ pub trait CollectionFilter : JSTraceable {
#[must_root] #[must_root]
pub enum CollectionTypeId { pub enum CollectionTypeId {
Static(Vec<JS<Element>>), Static(Vec<JS<Element>>),
Live(JS<Node>, Box<CollectionFilter+'static>) Live(JS<Node>, Box<CollectionFilter + 'static>)
} }
#[dom_struct] #[dom_struct]
@ -53,7 +53,7 @@ impl HTMLCollection {
impl HTMLCollection { impl HTMLCollection {
pub fn create(window: &Window, root: &Node, pub fn create(window: &Window, root: &Node,
filter: Box<CollectionFilter+'static>) -> Root<HTMLCollection> { filter: Box<CollectionFilter + 'static>) -> Root<HTMLCollection> {
HTMLCollection::new(window, CollectionTypeId::Live(JS::from_ref(root), filter)) HTMLCollection::new(window, CollectionTypeId::Live(JS::from_ref(root), filter))
} }

Просмотреть файл

@ -7,8 +7,8 @@ use dom::bindings::codegen::Bindings::HTMLIFrameElementBinding;
use dom::bindings::codegen::Bindings::HTMLIFrameElementBinding::HTMLIFrameElementMethods; use dom::bindings::codegen::Bindings::HTMLIFrameElementBinding::HTMLIFrameElementMethods;
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::codegen::InheritTypes::{NodeCast, ElementCast, EventCast}; use dom::bindings::codegen::InheritTypes::{NodeCast, ElementCast, EventCast};
use dom::bindings::codegen::InheritTypes::{EventTargetCast, HTMLElementCast, use dom::bindings::codegen::InheritTypes::{EventTargetCast, HTMLElementCast};
HTMLIFrameElementDerived}; use dom::bindings::codegen::InheritTypes::HTMLIFrameElementDerived;
use dom::bindings::conversions::ToJSValConvertible; use dom::bindings::conversions::ToJSValConvertible;
use dom::bindings::error::{ErrorResult, Fallible}; use dom::bindings::error::{ErrorResult, Fallible};
use dom::bindings::error::Error::NotSupported; use dom::bindings::error::Error::NotSupported;

Просмотреть файл

@ -8,8 +8,8 @@ use dom::bindings::cell::DOMRefCell;
use dom::bindings::codegen::Bindings::HTMLImageElementBinding; use dom::bindings::codegen::Bindings::HTMLImageElementBinding;
use dom::bindings::codegen::Bindings::HTMLImageElementBinding::HTMLImageElementMethods; use dom::bindings::codegen::Bindings::HTMLImageElementBinding::HTMLImageElementMethods;
use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods; use dom::bindings::codegen::Bindings::WindowBinding::WindowMethods;
use dom::bindings::codegen::InheritTypes::{NodeCast, ElementCast, EventTargetCast, HTMLElementCast, use dom::bindings::codegen::InheritTypes::{NodeCast, ElementCast, EventTargetCast};
HTMLImageElementDerived}; use dom::bindings::codegen::InheritTypes::{HTMLElementCast, HTMLImageElementDerived};
use dom::bindings::error::Fallible; use dom::bindings::error::Fallible;
use dom::bindings::global::GlobalRef; use dom::bindings::global::GlobalRef;
use dom::bindings::js::{LayoutJS, Root}; use dom::bindings::js::{LayoutJS, Root};

Просмотреть файл

@ -264,7 +264,7 @@ impl LayoutDataRef {
/// Borrows the layout data immutably. This function is *not* thread-safe. /// Borrows the layout data immutably. This function is *not* thread-safe.
#[inline] #[inline]
pub fn borrow<'a>(&'a self) -> Ref<'a,Option<LayoutData>> { pub fn borrow<'a>(&'a self) -> Ref<'a, Option<LayoutData>> {
debug_assert!(task_state::get().is_layout()); debug_assert!(task_state::get().is_layout());
self.data_cell.borrow() self.data_cell.borrow()
} }
@ -275,7 +275,7 @@ impl LayoutDataRef {
/// prevent CSS selector matching from mutably accessing nodes it's not supposed to and racing /// prevent CSS selector matching from mutably accessing nodes it's not supposed to and racing
/// on it. This has already resulted in one bug! /// on it. This has already resulted in one bug!
#[inline] #[inline]
pub fn borrow_mut<'a>(&'a self) -> RefMut<'a,Option<LayoutData>> { pub fn borrow_mut<'a>(&'a self) -> RefMut<'a, Option<LayoutData>> {
debug_assert!(task_state::get().is_layout()); debug_assert!(task_state::get().is_layout());
self.data_cell.borrow_mut() self.data_cell.borrow_mut()
} }
@ -1464,7 +1464,7 @@ pub enum CloneChildrenFlag {
fn as_uintptr<T>(t: &T) -> uintptr_t { t as *const T as uintptr_t } fn as_uintptr<T>(t: &T) -> uintptr_t { t as *const T as uintptr_t }
impl Node { impl Node {
pub fn reflect_node<N: Reflectable+NodeBase> pub fn reflect_node<N: Reflectable + NodeBase>
(node: Box<N>, (node: Box<N>,
document: &Document, document: &Document,
wrap_fn: extern "Rust" fn(*mut JSContext, GlobalRef, Box<N>) -> Root<N>) wrap_fn: extern "Rust" fn(*mut JSContext, GlobalRef, Box<N>) -> Root<N>)
@ -2554,12 +2554,12 @@ pub struct TrustedNodeAddress(pub *const c_void);
#[allow(unsafe_code)] #[allow(unsafe_code)]
unsafe impl Send for TrustedNodeAddress {} unsafe impl Send for TrustedNodeAddress {}
pub fn document_from_node<T: NodeBase+Reflectable>(derived: &T) -> Root<Document> { pub fn document_from_node<T: NodeBase + Reflectable>(derived: &T) -> Root<Document> {
let node: &Node = NodeCast::from_ref(derived); let node: &Node = NodeCast::from_ref(derived);
node.owner_doc() node.owner_doc()
} }
pub fn window_from_node<T: NodeBase+Reflectable>(derived: &T) -> Root<Window> { pub fn window_from_node<T: NodeBase + Reflectable>(derived: &T) -> Root<Window> {
let document = document_from_node(derived); let document = document_from_node(derived);
document.r().window() document.r().window()
} }

Просмотреть файл

@ -69,7 +69,7 @@ impl<'a> ProgressEventMethods for &'a ProgressEvent {
} }
// https://xhr.spec.whatwg.org/#dom-progressevent-loaded // https://xhr.spec.whatwg.org/#dom-progressevent-loaded
fn Loaded(self) -> u64{ fn Loaded(self) -> u64 {
self.loaded self.loaded
} }

Просмотреть файл

@ -114,7 +114,7 @@ impl Range {
}; };
// Step 11. // Step 11.
let contained_children : Vec<Root<Node>> = let contained_children: Vec<Root<Node>> =
common_ancestor.children().filter(|n| Range::contains(self, n)).collect(); common_ancestor.children().filter(|n| Range::contains(self, n)).collect();
// Step 12. // Step 12.

Просмотреть файл

@ -63,13 +63,13 @@ pub struct ParserContext {
/// The subpage associated with this document. /// The subpage associated with this document.
subpage: Option<SubpageId>, subpage: Option<SubpageId>,
/// The target event loop for the response notifications. /// The target event loop for the response notifications.
script_chan: Box<ScriptChan+Send>, script_chan: Box<ScriptChan + Send>,
/// The URL for this document. /// The URL for this document.
url: Url, url: Url,
} }
impl ParserContext { impl ParserContext {
pub fn new(id: PipelineId, subpage: Option<SubpageId>, script_chan: Box<ScriptChan+Send>, pub fn new(id: PipelineId, subpage: Option<SubpageId>, script_chan: Box<ScriptChan + Send>,
url: Url) -> ParserContext { url: Url) -> ParserContext {
ParserContext { ParserContext {
parser: RefCell::new(None), parser: RefCell::new(None),

Просмотреть файл

@ -144,7 +144,7 @@ trait PrivateStorageHelpers {
impl<'a> PrivateStorageHelpers for &'a Storage { impl<'a> PrivateStorageHelpers for &'a Storage {
/// https://html.spec.whatwg.org/multipage/#send-a-storage-notification /// https://html.spec.whatwg.org/multipage/#send-a-storage-notification
fn broadcast_change_notification(self, key: Option<DOMString>, old_value: Option<DOMString>, fn broadcast_change_notification(self, key: Option<DOMString>, old_value: Option<DOMString>,
new_value: Option<DOMString>){ new_value: Option<DOMString>) {
let global_root = self.global.root(); let global_root = self.global.root();
let global_ref = global_root.r(); let global_ref = global_root.r();
let main_script_chan = global_ref.as_window().main_thread_script_chan(); let main_script_chan = global_ref.as_window().main_thread_script_chan();

Просмотреть файл

@ -7,7 +7,7 @@ use dom::bindings::codegen::Bindings::WebGLActiveInfoBinding;
use dom::bindings::codegen::Bindings::WebGLActiveInfoBinding::WebGLActiveInfoMethods; use dom::bindings::codegen::Bindings::WebGLActiveInfoBinding::WebGLActiveInfoMethods;
use dom::bindings::global::GlobalRef; use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root; use dom::bindings::js::Root;
use dom::bindings::utils::{Reflector,reflect_dom_object}; use dom::bindings::utils::{Reflector, reflect_dom_object};
use util::str::DOMString; use util::str::DOMString;
#[dom_struct] #[dom_struct]

Просмотреть файл

@ -7,7 +7,7 @@ use dom::bindings::codegen::Bindings::WebGLShaderPrecisionFormatBinding;
use dom::bindings::codegen::Bindings::WebGLShaderPrecisionFormatBinding::WebGLShaderPrecisionFormatMethods; use dom::bindings::codegen::Bindings::WebGLShaderPrecisionFormatBinding::WebGLShaderPrecisionFormatMethods;
use dom::bindings::global::GlobalRef; use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root; use dom::bindings::js::Root;
use dom::bindings::utils::{Reflector,reflect_dom_object}; use dom::bindings::utils::{Reflector, reflect_dom_object};
#[dom_struct] #[dom_struct]
#[derive(HeapSizeOf)] #[derive(HeapSizeOf)]

Просмотреть файл

@ -6,7 +6,7 @@
use dom::bindings::codegen::Bindings::WebGLUniformLocationBinding; use dom::bindings::codegen::Bindings::WebGLUniformLocationBinding;
use dom::bindings::global::GlobalRef; use dom::bindings::global::GlobalRef;
use dom::bindings::js::Root; use dom::bindings::js::Root;
use dom::bindings::utils::{Reflector,reflect_dom_object}; use dom::bindings::utils::{Reflector, reflect_dom_object};
#[dom_struct] #[dom_struct]
#[derive(HeapSizeOf)] #[derive(HeapSizeOf)]

Просмотреть файл

@ -153,7 +153,7 @@ impl WebSocket {
return Err(Syntax); return Err(Syntax);
} }
if protocols[i+1..].iter().any(|p| p == protocol) { if protocols[i + 1..].iter().any(|p| p == protocol) {
return Err(Syntax); return Err(Syntax);
} }

Просмотреть файл

@ -52,7 +52,7 @@ use profile_traits::mem;
use string_cache::Atom; use string_cache::Atom;
use util::geometry::{self, Au, MAX_RECT}; use util::geometry::{self, Au, MAX_RECT};
use util::{breakpoint, opts}; use util::{breakpoint, opts};
use util::str::{DOMString,HTML_SPACE_CHARACTERS}; use util::str::{DOMString, HTML_SPACE_CHARACTERS};
use euclid::{Point2D, Rect, Size2D}; use euclid::{Point2D, Rect, Size2D};
use ipc_channel::ipc::IpcSender; use ipc_channel::ipc::IpcSender;
@ -179,7 +179,7 @@ pub struct Window {
/// A handle to perform RPC calls into the layout, quickly. /// A handle to perform RPC calls into the layout, quickly.
#[ignore_heap_size_of = "trait objects are hard"] #[ignore_heap_size_of = "trait objects are hard"]
layout_rpc: Box<LayoutRPC+'static>, layout_rpc: Box<LayoutRPC + 'static>,
/// The port that we will use to join layout. If this is `None`, then layout is not running. /// The port that we will use to join layout. If this is `None`, then layout is not running.
#[ignore_heap_size_of = "channels are hard"] #[ignore_heap_size_of = "channels are hard"]
@ -232,7 +232,7 @@ impl Window {
self.js_runtime.borrow().as_ref().unwrap().cx() self.js_runtime.borrow().as_ref().unwrap().cx()
} }
pub fn script_chan(&self) -> Box<ScriptChan+Send> { pub fn script_chan(&self) -> Box<ScriptChan + Send> {
self.script_chan.clone() self.script_chan.clone()
} }
@ -264,7 +264,7 @@ impl Window {
self.parent_info self.parent_info
} }
pub fn new_script_pair(&self) -> (Box<ScriptChan+Send>, Box<ScriptPort+Send>) { pub fn new_script_pair(&self) -> (Box<ScriptChan + Send>, Box<ScriptPort + Send>) {
let (tx, rx) = channel(); let (tx, rx) = channel();
(box SendableMainThreadScriptChan(tx), box rx) (box SendableMainThreadScriptChan(tx), box rx)
} }
@ -1143,7 +1143,7 @@ impl Window {
} }
} }
fn should_move_clip_rect(clip_rect: Rect<Au>, new_viewport: Rect<f32>) -> bool{ fn should_move_clip_rect(clip_rect: Rect<Au>, new_viewport: Rect<f32>) -> bool {
let clip_rect = Rect::new(Point2D::new(clip_rect.origin.x.to_f32_px(), let clip_rect = Rect::new(Point2D::new(clip_rect.origin.x.to_f32_px(),
clip_rect.origin.y.to_f32_px()), clip_rect.origin.y.to_f32_px()),
Size2D::new(clip_rect.size.width.to_f32_px(), Size2D::new(clip_rect.size.width.to_f32_px(),

Просмотреть файл

@ -288,9 +288,9 @@ impl<'a> WorkerGlobalScopeMethods for &'a WorkerGlobalScope {
pub trait WorkerGlobalScopeHelpers { pub trait WorkerGlobalScopeHelpers {
fn execute_script(self, source: DOMString); fn execute_script(self, source: DOMString);
fn handle_fire_timer(self, timer_id: TimerId); fn handle_fire_timer(self, timer_id: TimerId);
fn script_chan(self) -> Box<ScriptChan+Send>; fn script_chan(self) -> Box<ScriptChan + Send>;
fn pipeline(self) -> PipelineId; fn pipeline(self) -> PipelineId;
fn new_script_pair(self) -> (Box<ScriptChan+Send>, Box<ScriptPort+Send>); fn new_script_pair(self) -> (Box<ScriptChan + Send>, Box<ScriptPort + Send>);
fn process_event(self, msg: CommonScriptMsg); fn process_event(self, msg: CommonScriptMsg);
fn get_cx(self) -> *mut JSContext; fn get_cx(self) -> *mut JSContext;
fn set_devtools_wants_updates(self, value: bool); fn set_devtools_wants_updates(self, value: bool);
@ -311,7 +311,7 @@ impl<'a> WorkerGlobalScopeHelpers for &'a WorkerGlobalScope {
} }
} }
fn script_chan(self) -> Box<ScriptChan+Send> { fn script_chan(self) -> Box<ScriptChan + Send> {
let dedicated = let dedicated =
DedicatedWorkerGlobalScopeCast::to_ref(self); DedicatedWorkerGlobalScopeCast::to_ref(self);
match dedicated { match dedicated {
@ -329,7 +329,7 @@ impl<'a> WorkerGlobalScopeHelpers for &'a WorkerGlobalScope {
} }
} }
fn new_script_pair(self) -> (Box<ScriptChan+Send>, Box<ScriptPort+Send>) { fn new_script_pair(self) -> (Box<ScriptChan + Send>, Box<ScriptPort + Send>) {
let dedicated = let dedicated =
DedicatedWorkerGlobalScopeCast::to_ref(self); DedicatedWorkerGlobalScopeCast::to_ref(self);
match dedicated { match dedicated {

Просмотреть файл

@ -148,7 +148,7 @@ pub struct XMLHttpRequest {
timeout_cancel: DOMRefCell<Option<Sender<()>>>, timeout_cancel: DOMRefCell<Option<Sender<()>>>,
fetch_time: Cell<i64>, fetch_time: Cell<i64>,
#[ignore_heap_size_of = "Cannot calculate Heap size"] #[ignore_heap_size_of = "Cannot calculate Heap size"]
timeout_target: DOMRefCell<Option<Box<ScriptChan+Send>>>, timeout_target: DOMRefCell<Option<Box<ScriptChan + Send>>>,
generation_id: Cell<GenerationId>, generation_id: Cell<GenerationId>,
response_status: Cell<Result<(), ()>>, response_status: Cell<Result<(), ()>>,
} }
@ -201,13 +201,13 @@ impl XMLHttpRequest {
fn check_cors(context: Arc<Mutex<XHRContext>>, fn check_cors(context: Arc<Mutex<XHRContext>>,
load_data: LoadData, load_data: LoadData,
req: CORSRequest, req: CORSRequest,
script_chan: Box<ScriptChan+Send>, script_chan: Box<ScriptChan + Send>,
resource_task: ResourceTask) { resource_task: ResourceTask) {
struct CORSContext { struct CORSContext {
xhr: Arc<Mutex<XHRContext>>, xhr: Arc<Mutex<XHRContext>>,
load_data: RefCell<Option<LoadData>>, load_data: RefCell<Option<LoadData>>,
req: CORSRequest, req: CORSRequest,
script_chan: Box<ScriptChan+Send>, script_chan: Box<ScriptChan + Send>,
resource_task: ResourceTask, resource_task: ResourceTask,
} }
@ -244,7 +244,7 @@ impl XMLHttpRequest {
} }
fn initiate_async_xhr(context: Arc<Mutex<XHRContext>>, fn initiate_async_xhr(context: Arc<Mutex<XHRContext>>,
script_chan: Box<ScriptChan+Send>, script_chan: Box<ScriptChan + Send>,
resource_task: ResourceTask, resource_task: ResourceTask,
load_data: LoadData) { load_data: LoadData) {
impl AsyncResponseListener for XHRContext { impl AsyncResponseListener for XHRContext {
@ -761,7 +761,7 @@ trait PrivateXMLHttpRequestHelpers {
fn dispatch_upload_progress_event(self, type_: DOMString, partial_load: Option<u64>); fn dispatch_upload_progress_event(self, type_: DOMString, partial_load: Option<u64>);
fn dispatch_response_progress_event(self, type_: DOMString); fn dispatch_response_progress_event(self, type_: DOMString);
fn text_response(self) -> DOMString; fn text_response(self) -> DOMString;
fn set_timeout(self, timeout:u32); fn set_timeout(self, timeout: u32);
fn cancel_timeout(self); fn cancel_timeout(self);
fn filter_response_headers(self) -> Headers; fn filter_response_headers(self) -> Headers;
fn discard_subsequent_responses(self); fn discard_subsequent_responses(self);

Просмотреть файл

@ -43,7 +43,7 @@ impl XMLHttpRequestEventTargetDerived for EventTarget {
} }
impl<'a> XMLHttpRequestEventTargetMethods for &'a XMLHttpRequestEventTarget { impl<'a> XMLHttpRequestEventTargetMethods for &'a XMLHttpRequestEventTarget {
event_handler!(loadstart,GetOnloadstart, SetOnloadstart); event_handler!(loadstart, GetOnloadstart, SetOnloadstart);
event_handler!(progress, GetOnprogress, SetOnprogress); event_handler!(progress, GetOnprogress, SetOnprogress);
event_handler!(abort, GetOnabort, SetOnabort); event_handler!(abort, GetOnabort, SetOnabort);
event_handler!(error, GetOnerror, SetOnerror); event_handler!(error, GetOnerror, SetOnerror);

Просмотреть файл

@ -39,7 +39,7 @@ pub enum Msg {
AddStylesheet(Stylesheet, MediaQueryList), AddStylesheet(Stylesheet, MediaQueryList),
/// Adds the given stylesheet to the document. /// Adds the given stylesheet to the document.
LoadStylesheet(Url, MediaQueryList, PendingAsyncLoad, Box<StylesheetLoadResponder+Send>), LoadStylesheet(Url, MediaQueryList, PendingAsyncLoad, Box<StylesheetLoadResponder + Send>),
/// Puts a document into quirks mode, causing the quirks mode stylesheet to be loaded. /// Puts a document into quirks mode, causing the quirks mode stylesheet to be loaded.
SetQuirksMode, SetQuirksMode,
@ -199,7 +199,7 @@ pub trait ScriptLayoutChan {
impl ScriptLayoutChan for OpaqueScriptLayoutChannel { impl ScriptLayoutChan for OpaqueScriptLayoutChannel {
fn new(sender: Sender<Msg>, receiver: Receiver<Msg>) -> OpaqueScriptLayoutChannel { fn new(sender: Sender<Msg>, receiver: Receiver<Msg>) -> OpaqueScriptLayoutChannel {
let inner = (box sender as Box<Any+Send>, box receiver as Box<Any+Send>); let inner = (box sender as Box<Any + Send>, box receiver as Box<Any + Send>);
OpaqueScriptLayoutChannel(inner) OpaqueScriptLayoutChannel(inner)
} }

Просмотреть файл

@ -10,7 +10,7 @@ use std::sync::{Arc, Mutex};
/// a target thread, where they are invoked on the provided context object. /// a target thread, where they are invoked on the provided context object.
pub struct NetworkListener<T: AsyncResponseListener + PreInvoke + Send + 'static> { pub struct NetworkListener<T: AsyncResponseListener + PreInvoke + Send + 'static> {
pub context: Arc<Mutex<T>>, pub context: Arc<Mutex<T>>,
pub script_chan: Box<ScriptChan+Send>, pub script_chan: Box<ScriptChan + Send>,
} }
impl<T: AsyncResponseListener + PreInvoke + Send + 'static> NetworkListener<T> { impl<T: AsyncResponseListener + PreInvoke + Send + 'static> NetworkListener<T> {

Просмотреть файл

@ -32,8 +32,8 @@ use dom::bindings::js::{RootCollectionPtr, Root, RootedReference};
use dom::bindings::refcounted::{LiveDOMReferences, Trusted, TrustedReference, trace_refcounted_objects}; use dom::bindings::refcounted::{LiveDOMReferences, Trusted, TrustedReference, trace_refcounted_objects};
use dom::bindings::trace::{JSTraceable, trace_traceables, RootedVec}; use dom::bindings::trace::{JSTraceable, trace_traceables, RootedVec};
use dom::bindings::utils::{WRAP_CALLBACKS, DOM_CALLBACKS}; use dom::bindings::utils::{WRAP_CALLBACKS, DOM_CALLBACKS};
use dom::document::{Document, IsHTMLDocument, DocumentHelpers, DocumentProgressHandler, use dom::document::{Document, IsHTMLDocument, DocumentHelpers, DocumentProgressHandler};
DocumentProgressTask, DocumentSource, MouseEventType}; use dom::document::{DocumentProgressTask, DocumentSource, MouseEventType};
use dom::element::{Element, AttributeHandlers}; use dom::element::{Element, AttributeHandlers};
use dom::event::{EventHelpers, EventBubbles, EventCancelable}; use dom::event::{EventHelpers, EventBubbles, EventCancelable};
use dom::htmliframeelement::HTMLIFrameElementHelpers; use dom::htmliframeelement::HTMLIFrameElementHelpers;
@ -190,7 +190,7 @@ pub enum CommonScriptMsg {
/// A DOM object's last pinned reference was removed (dispatched to all tasks). /// A DOM object's last pinned reference was removed (dispatched to all tasks).
RefcountCleanup(TrustedReference), RefcountCleanup(TrustedReference),
/// Generic message that encapsulates event handling. /// Generic message that encapsulates event handling.
RunnableMsg(Box<Runnable+Send>), RunnableMsg(Box<Runnable + Send>),
} }
/// Messages used to control the script event loop /// Messages used to control the script event loop
@ -203,7 +203,7 @@ pub enum MainThreadScriptMsg {
/// should be closed (only dispatched to ScriptTask). /// should be closed (only dispatched to ScriptTask).
ExitWindow(PipelineId), ExitWindow(PipelineId),
/// Generic message for running tasks in the ScriptTask /// Generic message for running tasks in the ScriptTask
MainThreadRunnableMsg(Box<MainThreadRunnable+Send>), MainThreadRunnableMsg(Box<MainThreadRunnable + Send>),
/// Begins a content-initiated load on the specified pipeline (only /// Begins a content-initiated load on the specified pipeline (only
/// dispatched to ScriptTask). /// dispatched to ScriptTask).
Navigate(PipelineId, LoadData), Navigate(PipelineId, LoadData),
@ -214,10 +214,10 @@ pub trait ScriptChan {
/// Send a message to the associated event loop. /// Send a message to the associated event loop.
fn send(&self, msg: CommonScriptMsg) -> Result<(), ()>; fn send(&self, msg: CommonScriptMsg) -> Result<(), ()>;
/// Clone this handle. /// Clone this handle.
fn clone(&self) -> Box<ScriptChan+Send>; fn clone(&self) -> Box<ScriptChan + Send>;
} }
impl OpaqueSender<CommonScriptMsg> for Box<ScriptChan+Send> { impl OpaqueSender<CommonScriptMsg> for Box<ScriptChan + Send> {
fn send(&self, msg: CommonScriptMsg) { fn send(&self, msg: CommonScriptMsg) {
ScriptChan::send(&**self, msg).unwrap(); ScriptChan::send(&**self, msg).unwrap();
} }
@ -270,7 +270,7 @@ impl ScriptChan for SendableMainThreadScriptChan {
return chan.send(msg).map_err(|_| ()); return chan.send(msg).map_err(|_| ());
} }
fn clone(&self) -> Box<ScriptChan+Send> { fn clone(&self) -> Box<ScriptChan + Send> {
let SendableMainThreadScriptChan(ref chan) = *self; let SendableMainThreadScriptChan(ref chan) = *self;
box SendableMainThreadScriptChan((*chan).clone()) box SendableMainThreadScriptChan((*chan).clone())
} }
@ -294,7 +294,7 @@ impl ScriptChan for MainThreadScriptChan {
return chan.send(MainThreadScriptMsg::Common(msg)).map_err(|_| ()); return chan.send(MainThreadScriptMsg::Common(msg)).map_err(|_| ());
} }
fn clone(&self) -> Box<ScriptChan+Send> { fn clone(&self) -> Box<ScriptChan + Send> {
let MainThreadScriptChan(ref chan) = *self; let MainThreadScriptChan(ref chan) = *self;
box MainThreadScriptChan((*chan).clone()) box MainThreadScriptChan((*chan).clone())
} }
@ -436,8 +436,8 @@ impl ScriptTaskFactory for ScriptTask {
ScriptLayoutChan::new(chan, port) ScriptLayoutChan::new(chan, port)
} }
fn clone_layout_channel(_phantom: Option<&mut ScriptTask>, pair: &OpaqueScriptLayoutChannel) -> Box<Any+Send> { fn clone_layout_channel(_phantom: Option<&mut ScriptTask>, pair: &OpaqueScriptLayoutChannel) -> Box<Any + Send> {
box pair.sender() as Box<Any+Send> box pair.sender() as Box<Any + Send>
} }
fn create(_phantom: Option<&mut ScriptTask>, fn create(_phantom: Option<&mut ScriptTask>,

Просмотреть файл

@ -142,7 +142,7 @@ impl TimerManager {
timeout: i32, timeout: i32,
is_interval: IsInterval, is_interval: IsInterval,
source: TimerSource, source: TimerSource,
script_chan: Box<ScriptChan+Send>) script_chan: Box<ScriptChan + Send>)
-> i32 { -> i32 {
let duration_ms = cmp::max(0, timeout) as u32; let duration_ms = cmp::max(0, timeout) as u32;
let handle = self.next_timer_handle.get(); let handle = self.next_timer_handle.get();

Просмотреть файл

@ -135,7 +135,7 @@ pub enum ConstellationControlMsg {
/// Notifies script task that all animations are done /// Notifies script task that all animations are done
TickAllAnimations(PipelineId), TickAllAnimations(PipelineId),
/// Notifies script that a stylesheet has finished loading. /// Notifies script that a stylesheet has finished loading.
StylesheetLoadComplete(PipelineId, Url, Box<StylesheetLoadResponder+Send>), StylesheetLoadComplete(PipelineId, Url, Box<StylesheetLoadResponder + Send>),
/// Get the current state of the script task for a given pipeline. /// Get the current state of the script task for a given pipeline.
GetCurrentState(Sender<ScriptState>, PipelineId), GetCurrentState(Sender<ScriptState>, PipelineId),
} }
@ -169,7 +169,7 @@ pub enum CompositorEvent {
/// An opaque wrapper around script<->layout channels to avoid leaking message types into /// An opaque wrapper around script<->layout channels to avoid leaking message types into
/// crates that don't need to know about them. /// crates that don't need to know about them.
pub struct OpaqueScriptLayoutChannel(pub (Box<Any+Send>, Box<Any+Send>)); pub struct OpaqueScriptLayoutChannel(pub (Box<Any + Send>, Box<Any + Send>));
/// This trait allows creating a `ScriptTask` without depending on the `script` /// This trait allows creating a `ScriptTask` without depending on the `script`
/// crate. /// crate.
@ -195,5 +195,5 @@ pub trait ScriptTaskFactory {
fn create_layout_channel(_phantom: Option<&mut Self>) -> OpaqueScriptLayoutChannel; fn create_layout_channel(_phantom: Option<&mut Self>) -> OpaqueScriptLayoutChannel;
/// Clone the `Sender` in `pair`. /// Clone the `Sender` in `pair`.
fn clone_layout_channel(_phantom: Option<&mut Self>, pair: &OpaqueScriptLayoutChannel) fn clone_layout_channel(_phantom: Option<&mut Self>, pair: &OpaqueScriptLayoutChannel)
-> Box<Any+Send>; -> Box<Any + Send>;
} }

Просмотреть файл

@ -155,7 +155,7 @@ impl Browser {
} }
fn create_constellation(opts: opts::Opts, fn create_constellation(opts: opts::Opts,
compositor_proxy: Box<CompositorProxy+Send>, compositor_proxy: Box<CompositorProxy + Send>,
time_profiler_chan: time::ProfilerChan, time_profiler_chan: time::ProfilerChan,
mem_profiler_chan: mem::ProfilerChan, mem_profiler_chan: mem::ProfilerChan,
devtools_chan: Option<Sender<devtools_traits::DevtoolsControlMsg>>, devtools_chan: Option<Sender<devtools_traits::DevtoolsControlMsg>>,

Просмотреть файл

@ -378,7 +378,7 @@ impl Interpolate for Au {
} }
} }
impl <T> Interpolate for Option<T> where T:Interpolate { impl <T> Interpolate for Option<T> where T: Interpolate {
#[inline] #[inline]
fn interpolate(&self, other: &Option<T>, time: f64) -> Option<Option<T>> { fn interpolate(&self, other: &Option<T>, time: f64) -> Option<Option<T>> {
match (self, other) { match (self, other) {

Просмотреть файл

@ -32,14 +32,14 @@ pub trait PresentationalHintSynthesis {
/// `common_style_affecting_attributes` or `rare_style_affecting_attributes` as appropriate. If /// `common_style_affecting_attributes` or `rare_style_affecting_attributes` as appropriate. If
/// you don't, you risk strange random nondeterministic failures due to false positives in /// you don't, you risk strange random nondeterministic failures due to false positives in
/// style sharing. /// style sharing.
fn synthesize_presentational_hints_for_legacy_attributes<E,V>( fn synthesize_presentational_hints_for_legacy_attributes<E, V>(
&self, element: &E, matching_rules_list: &mut V, shareable: &mut bool) &self, element: &E, matching_rules_list: &mut V, shareable: &mut bool)
where E: Element + TElementAttributes, where E: Element + TElementAttributes,
V: VecLike<DeclarationBlock<Vec<PropertyDeclaration>>>; V: VecLike<DeclarationBlock<Vec<PropertyDeclaration>>>;
} }
impl PresentationalHintSynthesis for Stylist { impl PresentationalHintSynthesis for Stylist {
fn synthesize_presentational_hints_for_legacy_attributes<E,V>( fn synthesize_presentational_hints_for_legacy_attributes<E, V>(
&self, element: &E, matching_rules_list: &mut V, shareable: &mut bool) &self, element: &E, matching_rules_list: &mut V, shareable: &mut bool)
where E: Element + TElementAttributes, where E: Element + TElementAttributes,
V: VecLike<DeclarationBlock<Vec<PropertyDeclaration>>> { V: VecLike<DeclarationBlock<Vec<PropertyDeclaration>>> {

Просмотреть файл

@ -200,7 +200,7 @@ impl Stylist {
/// The returned boolean indicates whether the style is *shareable*; that is, whether the /// The returned boolean indicates whether the style is *shareable*; that is, whether the
/// matched selectors are simple enough to allow the matching logic to be reduced to the logic /// matched selectors are simple enough to allow the matching logic to be reduced to the logic
/// in `css::matching::PrivateMatchMethods::candidate_element_allows_for_style_sharing`. /// in `css::matching::PrivateMatchMethods::candidate_element_allows_for_style_sharing`.
pub fn push_applicable_declarations<E,V>( pub fn push_applicable_declarations<E, V>(
&self, &self,
element: &E, element: &E,
parent_bf: Option<&BloomFilter>, parent_bf: Option<&BloomFilter>,

Просмотреть файл

@ -10,8 +10,8 @@ use url::Url;
use encoding::EncodingRef; use encoding::EncodingRef;
use cssparser::{Parser, decode_stylesheet_bytes, use cssparser::{Parser, decode_stylesheet_bytes, QualifiedRuleParser, AtRuleParser};
QualifiedRuleParser, AtRuleParser, RuleListParser, AtRuleType}; use cssparser::{RuleListParser, AtRuleType};
use string_cache::{Atom, Namespace}; use string_cache::{Atom, Namespace};
use selectors::parser::{Selector, parse_selector_list}; use selectors::parser::{Selector, parse_selector_list};
use parser::{ParserContext, log_css_error}; use parser::{ParserContext, log_css_error};

Просмотреть файл

@ -16,11 +16,11 @@ pub struct HashCache<K, V> {
entries: HashMap<K, V, DefaultState<SipHasher>>, entries: HashMap<K, V, DefaultState<SipHasher>>,
} }
impl<K, V> HashCache<K,V> impl<K, V> HashCache<K, V>
where K: Clone + PartialEq + Eq + Hash, where K: Clone + PartialEq + Eq + Hash,
V: Clone, V: Clone,
{ {
pub fn new() -> HashCache<K,V> { pub fn new() -> HashCache<K, V> {
HashCache { HashCache {
entries: HashMap::with_hash_state(<DefaultState<SipHasher> as Default>::default()), entries: HashMap::with_hash_state(<DefaultState<SipHasher> as Default>::default()),
} }
@ -58,7 +58,7 @@ pub struct LRUCache<K, V> {
cache_size: usize, cache_size: usize,
} }
impl<K: Clone + PartialEq, V: Clone> LRUCache<K,V> { impl<K: Clone + PartialEq, V: Clone> LRUCache<K, V> {
pub fn new(size: usize) -> LRUCache<K, V> { pub fn new(size: usize) -> LRUCache<K, V> {
LRUCache { LRUCache {
entries: vec!(), entries: vec!(),
@ -76,7 +76,7 @@ impl<K: Clone + PartialEq, V: Clone> LRUCache<K,V> {
self.entries[last_index].1.clone() self.entries[last_index].1.clone()
} }
pub fn iter<'a>(&'a self) -> Iter<'a,(K,V)> { pub fn iter<'a>(&'a self) -> Iter<'a,(K, V)> {
self.entries.iter() self.entries.iter()
} }
@ -110,14 +110,14 @@ impl<K: Clone + PartialEq, V: Clone> LRUCache<K,V> {
} }
} }
pub struct SimpleHashCache<K,V> { pub struct SimpleHashCache<K, V> {
entries: Vec<Option<(K,V)>>, entries: Vec<Option<(K, V)>>,
k0: u64, k0: u64,
k1: u64, k1: u64,
} }
impl<K:Clone+Eq+Hash,V:Clone> SimpleHashCache<K,V> { impl<K: Clone + Eq + Hash, V: Clone> SimpleHashCache<K, V> {
pub fn new(cache_size: usize) -> SimpleHashCache<K,V> { pub fn new(cache_size: usize) -> SimpleHashCache<K, V> {
let mut r = rand::thread_rng(); let mut r = rand::thread_rng();
SimpleHashCache { SimpleHashCache {
entries: vec![None; cache_size], entries: vec![None; cache_size],
@ -132,7 +132,7 @@ impl<K:Clone+Eq+Hash,V:Clone> SimpleHashCache<K,V> {
} }
#[inline] #[inline]
fn bucket_for_key<Q:Hash>(&self, key: &Q) -> usize { fn bucket_for_key<Q: Hash>(&self, key: &Q) -> usize {
let mut hasher = SipHasher::new_with_keys(self.k0, self.k1); let mut hasher = SipHasher::new_with_keys(self.k0, self.k1);
key.hash(&mut hasher); key.hash(&mut hasher);
self.to_bucket(hasher.finish() as usize) self.to_bucket(hasher.finish() as usize)

Просмотреть файл

@ -279,7 +279,7 @@ pub fn px_to_pt(px: f64) -> f64 {
/// Returns true if the rect contains the given point. Points on the top or left sides of the rect /// Returns true if the rect contains the given point. Points on the top or left sides of the rect
/// are considered inside the rectangle, while points on the right or bottom sides of the rect are /// are considered inside the rectangle, while points on the right or bottom sides of the rect are
/// not considered inside the rectangle. /// not considered inside the rectangle.
pub fn rect_contains_point<T:PartialOrd + Add<T, Output=T>>(rect: Rect<T>, point: Point2D<T>) -> bool { pub fn rect_contains_point<T: PartialOrd + Add<T, Output=T>>(rect: Rect<T>, point: Point2D<T>) -> bool {
point.x >= rect.origin.x && point.x < rect.origin.x + rect.size.width && point.x >= rect.origin.x && point.x < rect.origin.x + rect.size.width &&
point.y >= rect.origin.y && point.y < rect.origin.y + rect.size.height point.y >= rect.origin.y && point.y < rect.origin.y + rect.size.height
} }

Просмотреть файл

@ -14,7 +14,7 @@ use std::sync::atomic::{ATOMIC_USIZE_INIT, AtomicUsize, Ordering};
use std::sync::mpsc::{self, Receiver, Sender}; use std::sync::mpsc::{self, Receiver, Sender};
lazy_static! { lazy_static! {
static ref IN_PROCESS_SENDERS: Mutex<HashMap<usize,Box<Any + Send>>> = static ref IN_PROCESS_SENDERS: Mutex<HashMap<usize, Box<Any + Send>>> =
Mutex::new(HashMap::new()); Mutex::new(HashMap::new());
} }
@ -49,7 +49,7 @@ impl<T> Clone for OptionalIpcSender<T> where T: Deserialize + Serialize + Send +
impl<T> Deserialize for OptionalIpcSender<T> where T: Deserialize + Serialize + Send + Any { impl<T> Deserialize for OptionalIpcSender<T> where T: Deserialize + Serialize + Send + Any {
fn deserialize<D>(deserializer: &mut D) fn deserialize<D>(deserializer: &mut D)
-> Result<OptionalIpcSender<T>,D::Error> where D: Deserializer { -> Result<OptionalIpcSender<T>, D::Error> where D: Deserializer {
if opts::get().multiprocess { if opts::get().multiprocess {
return Ok(OptionalIpcSender::OutOfProcess(try!(Deserialize::deserialize( return Ok(OptionalIpcSender::OutOfProcess(try!(Deserialize::deserialize(
deserializer)))) deserializer))))
@ -66,7 +66,7 @@ impl<T> Deserialize for OptionalIpcSender<T> where T: Deserialize + Serialize +
} }
impl<T> Serialize for OptionalIpcSender<T> where T: Deserialize + Serialize + Send + Any { impl<T> Serialize for OptionalIpcSender<T> where T: Deserialize + Serialize + Send + Any {
fn serialize<S>(&self, serializer: &mut S) -> Result<(),S::Error> where S: Serializer { fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error> where S: Serializer {
match *self { match *self {
OptionalIpcSender::OutOfProcess(ref ipc_sender) => ipc_sender.serialize(serializer), OptionalIpcSender::OutOfProcess(ref ipc_sender) => ipc_sender.serialize(serializer),
OptionalIpcSender::InProcess(ref sender) => { OptionalIpcSender::InProcess(ref sender) => {

Просмотреть файл

@ -456,7 +456,7 @@ impl<T: Copy + Add<T, Output=T>> LogicalPoint<T> {
} }
} }
impl<T: Copy + Add<T,Output=T>> Add<LogicalSize<T>> for LogicalPoint<T> { impl<T: Copy + Add<T, Output=T>> Add<LogicalSize<T>> for LogicalPoint<T> {
type Output = LogicalPoint<T>; type Output = LogicalPoint<T>;
#[inline] #[inline]
@ -470,7 +470,7 @@ impl<T: Copy + Add<T,Output=T>> Add<LogicalSize<T>> for LogicalPoint<T> {
} }
} }
impl<T: Copy + Sub<T,Output=T>> Sub<LogicalSize<T>> for LogicalPoint<T> { impl<T: Copy + Sub<T, Output=T>> Sub<LogicalSize<T>> for LogicalPoint<T> {
type Output = LogicalPoint<T>; type Output = LogicalPoint<T>;
#[inline] #[inline]

Просмотреть файл

@ -50,7 +50,7 @@ impl<T> PersistentList<T> where T: Send + Sync {
} }
#[inline] #[inline]
pub fn iter<'a>(&'a self) -> PersistentListIterator<'a,T> { pub fn iter<'a>(&'a self) -> PersistentListIterator<'a, T> {
// This could clone (and would not need the lifetime if it did), but then it would incur // This could clone (and would not need the lifetime if it did), but then it would incur
// atomic operations on every call to `.next()`. Bad. // atomic operations on every call to `.next()`. Bad.
PersistentListIterator { PersistentListIterator {
@ -74,7 +74,7 @@ pub struct PersistentListIterator<'a,T> where T: 'a + Send + Sync {
entry: Option<&'a PersistentListEntry<T>>, entry: Option<&'a PersistentListEntry<T>>,
} }
impl<'a,T> Iterator for PersistentListIterator<'a,T> where T: Send + Sync + 'static { impl<'a, T> Iterator for PersistentListIterator<'a, T> where T: Send + Sync + 'static {
type Item = &'a T; type Item = &'a T;
#[inline] #[inline]

Просмотреть файл

@ -34,7 +34,7 @@ impl TaskPool {
for i in 0..tasks { for i in 0..tasks {
let state = state.clone(); let state = state.clone();
spawn_named( spawn_named(
format!("TaskPoolWorker {}/{}", i+1, tasks), format!("TaskPoolWorker {}/{}", i + 1, tasks),
move || worker(&*state)); move || worker(&*state));
} }

Просмотреть файл

@ -10,7 +10,7 @@ use std::ops;
/// FIXME(pcwalton): Workaround for lack of unboxed closures. This is called in /// FIXME(pcwalton): Workaround for lack of unboxed closures. This is called in
/// performance-critical code, so a closure is insufficient. /// performance-critical code, so a closure is insufficient.
pub trait Comparator<K,T> { pub trait Comparator<K, T> {
fn compare(&self, key: &K, value: &T) -> Ordering; fn compare(&self, key: &K, value: &T) -> Ordering;
} }
@ -20,7 +20,7 @@ pub trait BinarySearchMethods<T: Ord + PartialOrd + PartialEq> {
} }
pub trait FullBinarySearchMethods<T> { pub trait FullBinarySearchMethods<T> {
fn binary_search_index_by<K,C:Comparator<K,T>>(&self, key: &K, cmp: C) -> Option<usize>; fn binary_search_index_by<K, C: Comparator<K, T>>(&self, key: &K, cmp: C) -> Option<usize>;
} }
impl<T: Ord + PartialOrd + PartialEq> BinarySearchMethods<T> for [T] { impl<T: Ord + PartialOrd + PartialEq> BinarySearchMethods<T> for [T] {
@ -34,13 +34,13 @@ impl<T: Ord + PartialOrd + PartialEq> BinarySearchMethods<T> for [T] {
} }
impl<T> FullBinarySearchMethods<T> for [T] { impl<T> FullBinarySearchMethods<T> for [T] {
fn binary_search_index_by<K,C:Comparator<K,T>>(&self, key: &K, cmp: C) -> Option<usize> { fn binary_search_index_by<K, C: Comparator<K, T>>(&self, key: &K, cmp: C) -> Option<usize> {
if self.is_empty() { if self.is_empty() {
return None; return None;
} }
let mut low : isize = 0; let mut low: isize = 0;
let mut high : isize = (self.len() as isize) - 1; let mut high: isize = (self.len() as isize) - 1;
while low <= high { while low <= high {
// http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html // http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html
@ -59,7 +59,7 @@ impl<T> FullBinarySearchMethods<T> for [T] {
struct DefaultComparator; struct DefaultComparator;
impl<T:PartialEq + PartialOrd + Ord> Comparator<T,T> for DefaultComparator { impl<T: PartialEq + PartialOrd + Ord> Comparator<T, T> for DefaultComparator {
fn compare(&self, key: &T, value: &T) -> Ordering { fn compare(&self, key: &T, value: &T) -> Ordering {
(*key).cmp(value) (*key).cmp(value)
} }

Просмотреть файл

@ -273,7 +273,7 @@ impl<QueueData: Sync, WorkData: Send> WorkQueue<QueueData, WorkData> {
for (i, thread) in threads.into_iter().enumerate() { for (i, thread) in threads.into_iter().enumerate() {
spawn_named( spawn_named(
format!("{} worker {}/{}", task_name, i+1, thread_count), format!("{} worker {}/{}", task_name, i + 1, thread_count),
move || { move || {
task_state::initialize(state | task_state::IN_WORKER); task_state::initialize(state | task_state::IN_WORKER);
let mut thread = thread; let mut thread = thread;

Просмотреть файл

@ -19,18 +19,17 @@ extern crate rustc_serialize;
extern crate uuid; extern crate uuid;
extern crate ipc_channel; extern crate ipc_channel;
use msg::constellation_msg::{ConstellationChan, LoadData, FrameId, PipelineId, NavigationDirection, use msg::constellation_msg::{ConstellationChan, LoadData, FrameId, PipelineId};
WebDriverCommandMsg}; use msg::constellation_msg::{NavigationDirection, WebDriverCommandMsg};
use msg::constellation_msg::Msg as ConstellationMsg; use msg::constellation_msg::Msg as ConstellationMsg;
use msg::webdriver_msg::{WebDriverFrameId, WebDriverScriptCommand, WebDriverJSError, WebDriverJSResult, LoadStatus}; use msg::webdriver_msg::{WebDriverFrameId, WebDriverScriptCommand, WebDriverJSError, WebDriverJSResult, LoadStatus};
use url::Url; use url::Url;
use webdriver::command::{WebDriverMessage, WebDriverCommand}; use webdriver::command::{WebDriverMessage, WebDriverCommand};
use webdriver::command::{GetParameters, JavascriptCommandParameters, LocatorParameters, use webdriver::command::{GetParameters, JavascriptCommandParameters, LocatorParameters};
SwitchToFrameParameters, TimeoutsParameters}; use webdriver::command::{SwitchToFrameParameters, TimeoutsParameters};
use webdriver::common::{LocatorStrategy, WebElement}; use webdriver::common::{LocatorStrategy, WebElement};
use webdriver::response::{ use webdriver::response::{WebDriverResponse, NewSessionResponse, ValueResponse};
WebDriverResponse, NewSessionResponse, ValueResponse};
use webdriver::server::{self, WebDriverHandler, Session}; use webdriver::server::{self, WebDriverHandler, Session};
use webdriver::error::{WebDriverResult, WebDriverError, ErrorStatus}; use webdriver::error::{WebDriverResult, WebDriverError, ErrorStatus};
use util::task::spawn_named; use util::task::spawn_named;
@ -498,7 +497,7 @@ impl Handler {
"Taking screenshot failed")) "Taking screenshot failed"))
}; };
let config = Config { let config = Config {
char_set:CharacterSet::Standard, char_set: CharacterSet::Standard,
newline: Newline::LF, newline: Newline::LF,
pad: true, pad: true,
line_length: None line_length: None

Просмотреть файл

@ -58,19 +58,19 @@ bitflags! {
// Some shortcuts use Cmd on Mac and Control on other systems. // Some shortcuts use Cmd on Mac and Control on other systems.
#[cfg(all(feature = "window", target_os="macos"))] #[cfg(all(feature = "window", target_os="macos"))]
const CMD_OR_CONTROL : constellation_msg::KeyModifiers = SUPER; const CMD_OR_CONTROL: constellation_msg::KeyModifiers = SUPER;
#[cfg(all(feature = "window", not(target_os="macos")))] #[cfg(all(feature = "window", not(target_os="macos")))]
const CMD_OR_CONTROL : constellation_msg::KeyModifiers = CONTROL; const CMD_OR_CONTROL: constellation_msg::KeyModifiers = CONTROL;
// Some shortcuts use Cmd on Mac and Alt on other systems. // Some shortcuts use Cmd on Mac and Alt on other systems.
#[cfg(all(feature = "window", target_os="macos"))] #[cfg(all(feature = "window", target_os="macos"))]
const CMD_OR_ALT : constellation_msg::KeyModifiers = SUPER; const CMD_OR_ALT: constellation_msg::KeyModifiers = SUPER;
#[cfg(all(feature = "window", not(target_os="macos")))] #[cfg(all(feature = "window", not(target_os="macos")))]
const CMD_OR_ALT : constellation_msg::KeyModifiers = ALT; const CMD_OR_ALT: constellation_msg::KeyModifiers = ALT;
// This should vary by zoom level and maybe actual text size (focused or under cursor) // This should vary by zoom level and maybe actual text size (focused or under cursor)
#[cfg(feature = "window")] #[cfg(feature = "window")]
const LINE_HEIGHT : f32 = 38.0; const LINE_HEIGHT: f32 = 38.0;
/// The type of a window. /// The type of a window.
#[cfg(feature = "window")] #[cfg(feature = "window")]
@ -212,7 +212,7 @@ impl Window {
MouseScrollDelta::PixelDelta(_, dy) => dy MouseScrollDelta::PixelDelta(_, dy) => dy
}; };
if dy < 0.0 { if dy < 0.0 {
self.event_queue.borrow_mut().push(WindowEvent::PinchZoom(1.0/1.1)); self.event_queue.borrow_mut().push(WindowEvent::PinchZoom(1.0 / 1.1));
} else if dy > 0.0 { } else if dy > 0.0 {
self.event_queue.borrow_mut().push(WindowEvent::PinchZoom(1.1)); self.event_queue.borrow_mut().push(WindowEvent::PinchZoom(1.1));
} }
@ -523,7 +523,7 @@ impl WindowMethods for Window {
} }
fn create_compositor_channel(window: &Option<Rc<Window>>) fn create_compositor_channel(window: &Option<Rc<Window>>)
-> (Box<CompositorProxy+Send>, Box<CompositorReceiver>) { -> (Box<CompositorProxy + Send>, Box<CompositorReceiver>) {
let (sender, receiver) = channel(); let (sender, receiver) = channel();
let window_proxy = match window { let window_proxy = match window {
@ -534,7 +534,7 @@ impl WindowMethods for Window {
(box GlutinCompositorProxy { (box GlutinCompositorProxy {
sender: sender, sender: sender,
window_proxy: window_proxy, window_proxy: window_proxy,
} as Box<CompositorProxy+Send>, } as Box<CompositorProxy + Send>,
box receiver as Box<CompositorReceiver>) box receiver as Box<CompositorReceiver>)
} }
@ -641,7 +641,7 @@ impl WindowMethods for Window {
self.event_queue.borrow_mut().push(WindowEvent::Zoom(1.1)); self.event_queue.borrow_mut().push(WindowEvent::Zoom(1.1));
} }
(CMD_OR_CONTROL, Key::Minus) => { (CMD_OR_CONTROL, Key::Minus) => {
self.event_queue.borrow_mut().push(WindowEvent::Zoom(1.0/1.1)); self.event_queue.borrow_mut().push(WindowEvent::Zoom(1.0 / 1.1));
} }
(CMD_OR_CONTROL, Key::Num0) | (CMD_OR_CONTROL, Key::Num0) |
(CMD_OR_CONTROL, Key::Kp0) => { (CMD_OR_CONTROL, Key::Kp0) => {
@ -746,13 +746,13 @@ impl WindowMethods for Window {
} }
fn create_compositor_channel(_: &Option<Rc<Window>>) fn create_compositor_channel(_: &Option<Rc<Window>>)
-> (Box<CompositorProxy+Send>, Box<CompositorReceiver>) { -> (Box<CompositorProxy + Send>, Box<CompositorReceiver>) {
let (sender, receiver) = channel(); let (sender, receiver) = channel();
(box GlutinCompositorProxy { (box GlutinCompositorProxy {
sender: sender, sender: sender,
window_proxy: None, window_proxy: None,
} as Box<CompositorProxy+Send>, } as Box<CompositorProxy + Send>,
box receiver as Box<CompositorReceiver>) box receiver as Box<CompositorReceiver>)
} }
@ -818,11 +818,11 @@ impl CompositorProxy for GlutinCompositorProxy {
window_proxy.wakeup_event_loop() window_proxy.wakeup_event_loop()
} }
} }
fn clone_compositor_proxy(&self) -> Box<CompositorProxy+Send> { fn clone_compositor_proxy(&self) -> Box<CompositorProxy + Send> {
box GlutinCompositorProxy { box GlutinCompositorProxy {
sender: self.sender.clone(), sender: self.sender.clone(),
window_proxy: self.window_proxy.clone(), window_proxy: self.window_proxy.clone(),
} as Box<CompositorProxy+Send> } as Box<CompositorProxy + Send>
} }
} }

Просмотреть файл

@ -202,9 +202,10 @@ fn read_input_device(device_path: &Path,
let cur_dist = dist(slotA.x, slotB.x, slotA.y, slotB.y); let cur_dist = dist(slotA.x, slotB.x, slotA.y, slotB.y);
println!("Zooming {} {} {} {}", println!("Zooming {} {} {} {}",
cur_dist, last_dist, screen_dist, cur_dist, last_dist, screen_dist,
((screen_dist + (cur_dist - last_dist))/screen_dist)); ((screen_dist + (cur_dist - last_dist)) / screen_dist));
sender.send( sender.send(
WindowEvent::Zoom((screen_dist + (cur_dist - last_dist))/screen_dist)).ok().unwrap(); WindowEvent::Zoom((screen_dist + (cur_dist - last_dist)) /
screen_dist)).ok().unwrap();
last_dist = cur_dist; last_dist = cur_dist;
} }
} }

Просмотреть файл

@ -830,12 +830,12 @@ impl WindowMethods for Window {
} }
fn create_compositor_channel(window: &Option<Rc<Window>>) fn create_compositor_channel(window: &Option<Rc<Window>>)
-> (Box<CompositorProxy+Send>, Box<CompositorReceiver>) { -> (Box<CompositorProxy + Send>, Box<CompositorReceiver>) {
let (sender, receiver) = channel(); let (sender, receiver) = channel();
(box GonkCompositorProxy { (box GonkCompositorProxy {
sender: sender, sender: sender,
event_sender: window.as_ref().unwrap().event_send.clone(), event_sender: window.as_ref().unwrap().event_send.clone(),
} as Box<CompositorProxy+Send>, } as Box<CompositorProxy + Send>,
box receiver as Box<CompositorReceiver>) box receiver as Box<CompositorReceiver>)
} }
@ -865,11 +865,11 @@ impl CompositorProxy for GonkCompositorProxy {
self.sender.send(msg).ok().unwrap(); self.sender.send(msg).ok().unwrap();
self.event_sender.send(WindowEvent::Idle).ok().unwrap(); self.event_sender.send(WindowEvent::Idle).ok().unwrap();
} }
fn clone_compositor_proxy(&self) -> Box<CompositorProxy+Send> { fn clone_compositor_proxy(&self) -> Box<CompositorProxy + Send> {
box GonkCompositorProxy { box GonkCompositorProxy {
sender: self.sender.clone(), sender: self.sender.clone(),
event_sender: self.event_sender.clone(), event_sender: self.event_sender.clone(),
} as Box<CompositorProxy+Send> } as Box<CompositorProxy + Send>
} }
} }

Просмотреть файл

@ -165,6 +165,93 @@ def check_toml(file_name, contents):
yield (idx + 1, "found asterisk instead of minimum version number") yield (idx + 1, "found asterisk instead of minimum version number")
def check_rust(file_name, contents):
if not file_name.endswith(".rs") or \
file_name.endswith("properties.mako.rs") or \
file_name.endswith("style/build.rs") or \
file_name.endswith("unit/style/stylesheets.rs"):
raise StopIteration
contents = contents.splitlines(True)
comment_depth = 0
merged_lines = ''
for idx, line in enumerate(contents):
# simplify the analysis
line = line.strip()
# Simple heuristic to avoid common case of no comments.
if '/' in line:
comment_depth += line.count('/*')
comment_depth -= line.count('*/')
if line.endswith('\\'):
merged_lines += line[:-1]
continue
if comment_depth:
merged_lines += line
continue
if merged_lines:
line = merged_lines + line
merged_lines = ''
# get rid of strings and chars because cases like regex expression
line = re.sub('".*?"|\'.*?\'', '', line)
# get rid of comments and attributes
line = re.sub('//.*?$|/\*.*?$|^\*.*?$|^#.*?$', '', line)
match = re.search(r",[A-Za-z0-9]", line)
if match:
yield (idx + 1, "missing space after ,")
# Avoid flagging <Item=Foo> constructs
def is_associated_type(match, line, index):
open_angle = line[0:match.end()].rfind('<')
close_angle = line[open_angle:].find('>') if open_angle != -1 else -1
is_equals = match.group(0)[index] == '='
generic_open = open_angle != -1 and open_angle < match.start()
generic_close = close_angle != -1 and close_angle + open_angle >= match.end()
return is_equals and generic_open and generic_close
# - not included because of scientific notation (1e-6)
match = re.search(r"[A-Za-z0-9][\+/\*%=]", line)
if match and not is_associated_type(match, line, 1):
yield (idx + 1, "missing space before %s" % match.group(0)[1])
# * not included because of dereferencing and casting
# - not included because of unary negation
match = re.search(r"[\+/\%=][A-Za-z0-9]", line)
if match and not is_associated_type(match, line, 0):
yield (idx + 1, "missing space after %s" % match.group(0)[0])
match = re.search(r"\)->", line)
if match:
yield (idx + 1, "missing space before ->")
match = re.search(r"->[A-Za-z]", line)
if match:
yield (idx + 1, "missing space after ->")
# Avoid flagging ::crate::mod and `trait Foo : Bar`
match = line.find(" :")
if match != -1:
if line[0:match].find('trait ') == -1 and line[match + 2] != ':':
yield (idx + 1, "extra space before :")
# Avoid flagging crate::mod
match = re.search(r"[^:]:[A-Za-z]", line)
if match:
# Avoid flagging macros like $t1:expr
if line[0:match.end()].rfind('$') == -1:
yield (idx + 1, "missing space after :")
match = re.search(r"[A-Za-z0-9\)]{", line)
if match:
yield (idx + 1, "missing space before {")
if line.startswith("use ") and "{" in line and "}" not in line:
yield (idx + 1, "use statement spans multiple lines")
def check_webidl_spec(file_name, contents): def check_webidl_spec(file_name, contents):
# Sorted by this function (in pseudo-Rust). The idea is to group the same # Sorted by this function (in pseudo-Rust). The idea is to group the same
# organization together. # organization together.
@ -278,7 +365,8 @@ def scan():
all_files = collect_file_names() all_files = collect_file_names()
files_to_check = filter(should_check, all_files) files_to_check = filter(should_check, all_files)
checking_functions = [check_license, check_by_line, check_flake8, check_toml, check_webidl_spec, check_spec] checking_functions = [check_license, check_by_line, check_flake8, check_toml,
check_rust, check_webidl_spec, check_spec]
errors = collect_errors_for_files(files_to_check, checking_functions) errors = collect_errors_for_files(files_to_check, checking_functions)
reftest_files = collect_file_names(reftest_directories) reftest_files = collect_file_names(reftest_directories)

Просмотреть файл

@ -28,18 +28,18 @@ fn test_sniff_mp4_matcher() {
match read_result { match read_result {
Ok(data) => { Ok(data) => {
println!("Data Length {:?}",data.len()); println!("Data Length {:?}", data.len());
if !matcher.matches(&data) { if !matcher.matches(&data) {
panic!("Didn't read mime type") panic!("Didn't read mime type")
} }
}, },
Err(e) => panic!("Couldn't read from file with error {}",e) Err(e) => panic!("Couldn't read from file with error {}", e)
} }
} }
#[cfg(test)] #[cfg(test)]
fn test_sniff_full(filename_orig: &path::Path,type_string: &str,subtype_string: &str, fn test_sniff_full(filename_orig: &path::Path, type_string: &str, subtype_string: &str,
supplied_type: Option<(&'static str,&'static str)>){ supplied_type: Option<(&'static str, &'static str)>) {
let current_working_directory = env::current_dir().unwrap(); let current_working_directory = env::current_dir().unwrap();
println!("The current directory is {}", current_working_directory.display()); println!("The current directory is {}", current_working_directory.display());
@ -71,19 +71,19 @@ fn test_sniff_full(filename_orig: &path::Path,type_string: &str,subtype_string:
} }
#[cfg(test)] #[cfg(test)]
fn test_sniff_classification(file: &str,type_string: &str,subtype_string: &str, fn test_sniff_classification(file: &str, type_string: &str, subtype_string: &str,
supplied_type: Option<(&'static str,&'static str)>){ supplied_type: Option<(&'static str, &'static str)>) {
let mut x = PathBuf::from("./"); let mut x = PathBuf::from("./");
x.push(type_string); x.push(type_string);
x.push(subtype_string); x.push(subtype_string);
x.push(file); x.push(file);
test_sniff_full(&x,type_string,subtype_string,supplied_type); test_sniff_full(&x, type_string, subtype_string, supplied_type);
} }
#[cfg(test)] #[cfg(test)]
fn test_sniff_classification_sup(file: &str,type_string: &'static str,subtype_string: &str) { fn test_sniff_classification_sup(file: &str, type_string: &'static str, subtype_string: &str) {
test_sniff_classification(file,type_string,subtype_string, None); test_sniff_classification(file, type_string, subtype_string, None);
let class_type = Some((type_string, "")); let class_type = Some((type_string, ""));
test_sniff_classification(file,type_string,subtype_string,class_type); test_sniff_classification(file, type_string, subtype_string, class_type);
} }
#[test] #[test]

Просмотреть файл

@ -26,7 +26,7 @@ fn test_lru_cache() {
let four = Cell::new("four"); let four = Cell::new("four");
// Test normal insertion. // Test normal insertion.
let mut cache: LRUCache<usize,Cell<&str>> = LRUCache::new(2); // (_, _) (cache is empty) let mut cache: LRUCache<usize, Cell<&str>> = LRUCache::new(2); // (_, _) (cache is empty)
cache.insert(1, one); // (1, _) cache.insert(1, one); // (1, _)
cache.insert(2, two); // (1, 2) cache.insert(2, two); // (1, 2)
cache.insert(3, three); // (2, 3) cache.insert(3, three); // (2, 3)

Просмотреть файл

@ -3,8 +3,8 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use euclid::{Size2D, Point2D, SideOffsets2D, Rect}; use euclid::{Size2D, Point2D, SideOffsets2D, Rect};
use util::logical_geometry::{WritingMode, LogicalSize, LogicalPoint, LogicalMargin, LogicalRect, use util::logical_geometry::{WritingMode, LogicalSize, LogicalPoint, LogicalMargin, LogicalRect};
FLAG_RTL, FLAG_VERTICAL, FLAG_VERTICAL_LR, FLAG_SIDEWAYS_LEFT}; use util::logical_geometry::{FLAG_RTL, FLAG_VERTICAL, FLAG_VERTICAL_LR, FLAG_SIDEWAYS_LEFT};
#[cfg(test)] #[cfg(test)]
fn modes() -> [WritingMode; 10] { fn modes() -> [WritingMode; 10] {