From 729a5ff44131c8655afb3c35f8f75abf32cf51cf Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Mon, 20 May 2013 16:23:52 -0700 Subject: [PATCH 1/5] Reduce the number of messages needed to exchange buffers from 3 to 2 --- src/components/servo-gfx/compositor.rs | 3 +- src/components/servo-gfx/render_layers.rs | 4 +- src/components/servo-gfx/render_task.rs | 119 +++++++-------- src/components/servo/compositing/mod.rs | 168 ++++++--------------- src/components/servo/engine.rs | 23 ++- src/components/servo/layout/layout_task.rs | 2 +- src/components/servo/servo.rc | 38 ++--- 7 files changed, 130 insertions(+), 227 deletions(-) diff --git a/src/components/servo-gfx/compositor.rs b/src/components/servo-gfx/compositor.rs index 7a3681a5721..83f8bb597a0 100644 --- a/src/components/servo-gfx/compositor.rs +++ b/src/components/servo-gfx/compositor.rs @@ -24,7 +24,6 @@ pub struct LayerBufferSet { /// The interface used to by the renderer to acquire draw targets for each rendered frame and /// submit them to be drawn to the display. pub trait Compositor { - fn begin_drawing(&self, next_dt: comm::Chan); - fn draw(&self, next_dt: comm::Chan, draw_me: LayerBufferSet); + fn paint(&self, layer_buffer_set: LayerBufferSet); } diff --git a/src/components/servo-gfx/render_layers.rs b/src/components/servo-gfx/render_layers.rs index 928097ceb00..49ee76130a5 100644 --- a/src/components/servo-gfx/render_layers.rs +++ b/src/components/servo-gfx/render_layers.rs @@ -134,6 +134,8 @@ pub fn render_layers(layer_ref: *RenderLayer, } } - return LayerBufferSet { buffers: new_buffers }; + LayerBufferSet { + buffers: new_buffers, + } } diff --git a/src/components/servo-gfx/render_task.rs b/src/components/servo-gfx/render_task.rs index de49d839ed8..231738b3a14 100644 --- a/src/components/servo-gfx/render_task.rs +++ b/src/components/servo-gfx/render_task.rs @@ -5,7 +5,7 @@ // The task that handles all rendering/painting. use azure::AzFloat; -use compositor::{Compositor, LayerBufferSet}; +use compositor::Compositor; use font_context::FontContext; use geom::matrix2d::Matrix2D; use opts::Opts; @@ -13,67 +13,70 @@ use render_context::RenderContext; use render_layers::{RenderLayer, render_layers}; use core::cell::Cell; -use core::comm::{Port, SharedChan}; +use core::comm::{Chan, Port, SharedChan}; use core::task::SingleThreaded; use std::task_pool::TaskPool; use servo_net::util::spawn_listener; -use servo_util::time; -use servo_util::time::time; -use servo_util::time::profile; use servo_util::time::ProfilerChan; +use servo_util::time::profile; +use servo_util::time::time; +use servo_util::time; pub enum Msg { RenderMsg(RenderLayer), - ExitMsg(comm::Chan<()>) + ExitMsg(Chan<()>), } -pub type RenderTask = SharedChan; +#[deriving(Clone)] +pub struct RenderTask { + channel: SharedChan, +} -pub fn RenderTask(compositor: C, - opts: Opts, - prof_chan: ProfilerChan) -> RenderTask { - let compositor_cell = Cell(compositor); - let opts_cell = Cell(opts); - let render_task = do spawn_listener |po: Port| { - let (layer_buffer_set_port, layer_buffer_channel) = comm::stream(); +impl RenderTask { + pub fn new(compositor: C, opts: Opts) -> RenderTask { + let compositor_cell = Cell(compositor); + let opts_cell = Cell(opts); + let (port, chan) = comm::stream(); + let port = Cell(port); - let compositor = compositor_cell.take(); - compositor.begin_drawing(layer_buffer_channel); + do spawn { + let compositor = compositor_cell.take(); - // FIXME: Annoying three-cell dance here. We need one-shot closures. - let opts = opts_cell.with_ref(|o| copy *o); - let n_threads = opts.n_render_threads; - let new_opts_cell = Cell(opts); - let prof_chan2 = prof_chan.clone(); + // FIXME: Annoying three-cell dance here. We need one-shot closures. + let opts = opts_cell.with_ref(|o| copy *o); + let n_threads = opts.n_render_threads; + let new_opts_cell = Cell(opts); - let thread_pool = do TaskPool::new(n_threads, Some(SingleThreaded)) { - let opts_cell = Cell(new_opts_cell.with_ref(|o| copy *o)); - let prof_chan = prof_chan2.clone(); - let f: ~fn(uint) -> ThreadRenderContext = |thread_index| { - ThreadRenderContext { - thread_index: thread_index, - font_ctx: @mut FontContext::new(opts_cell.with_ref(|o| o.render_backend), - false, - prof_chan.clone()), - opts: opts_cell.with_ref(|o| copy *o), - } + let thread_pool = do TaskPool::new(n_threads, Some(SingleThreaded)) { + let opts_cell = Cell(new_opts_cell.with_ref(|o| copy *o)); + let f: ~fn(uint) -> ThreadRenderContext = |thread_index| { + let opts = opts_cell.with_ref(|opts| copy *opts); + + ThreadRenderContext { + thread_index: thread_index, + font_ctx: @mut FontContext::new(opts.render_backend, false), + opts: opts, + } + }; + f }; - f - }; - // FIXME: rust/#5967 - let mut r = Renderer { - port: po, - compositor: compositor, - layer_buffer_set_port: Cell(layer_buffer_set_port), - thread_pool: thread_pool, - opts: opts_cell.take(), - prof_chan: prof_chan.clone() - }; - r.start(); - }; - SharedChan::new(render_task) + // FIXME: rust/#5967 + let mut renderer = Renderer { + port: port.take(), + compositor: compositor, + thread_pool: thread_pool, + opts: opts_cell.take() + }; + + renderer.start(); + } + + RenderTask { + channel: SharedChan::new(chan), + } + } } /// Data that needs to be kept around for each render thread. @@ -86,7 +89,6 @@ priv struct ThreadRenderContext { priv struct Renderer { port: Port, compositor: C, - layer_buffer_set_port: Cell>, thread_pool: TaskPool, opts: Opts, prof_chan: ProfilerChan, @@ -108,25 +110,9 @@ impl Renderer { } fn render(&mut self, render_layer: RenderLayer) { - debug!("renderer: got render request"); - - let layer_buffer_set_port = self.layer_buffer_set_port.take(); - - if !layer_buffer_set_port.peek() { - warn!("renderer: waiting on layer buffer"); - } - - let (new_layer_buffer_set_port, layer_buffer_set_channel) = comm::stream(); - self.layer_buffer_set_port.put_back(new_layer_buffer_set_port); - - let layer_buffer_set_channel_cell = Cell(layer_buffer_set_channel); - debug!("renderer: rendering"); - - do profile(time::RenderingCategory, self.prof_chan.clone()) { - let layer_buffer_set_channel = layer_buffer_set_channel_cell.take(); - - let layer_buffer_set = do render_layers(&render_layer, &self.opts, self.prof_chan.clone()) + do time("rendering") { + let layer_buffer_set = do render_layers(&render_layer, &self.opts) |render_layer_ref, layer_buffer, buffer_chan| { let layer_buffer_cell = Cell(layer_buffer); do self.thread_pool.execute |thread_render_context| { @@ -160,7 +146,8 @@ impl Renderer { }; debug!("renderer: returning surface"); - self.compositor.draw(layer_buffer_set_channel, layer_buffer_set); + self.compositor.paint(layer_buffer_set); } } } + diff --git a/src/components/servo/compositing/mod.rs b/src/components/servo/compositing/mod.rs index 16f088250ef..59529714f5f 100644 --- a/src/components/servo/compositing/mod.rs +++ b/src/components/servo/compositing/mod.rs @@ -7,16 +7,14 @@ use platform::{Application, Window}; use scripting::script_task::{LoadMsg, ScriptMsg}; use windowing::{ApplicationMethods, WindowMethods}; -use azure::azure_hl::{BackendType, B8G8R8A8, DataSourceSurface, DrawTarget, SourceSurfaceMethods}; +use azure::azure_hl::{DataSourceSurface, DrawTarget, SourceSurfaceMethods}; use core::cell::Cell; use core::comm::{Chan, SharedChan, Port}; use core::util; use geom::matrix::identity; use geom::point::Point2D; -use geom::rect::Rect; use geom::size::Size2D; -use gfx::compositor::{Compositor, LayerBuffer, LayerBufferSet}; -use gfx::opts::Opts; +use gfx::compositor::{Compositor, LayerBufferSet}; use layers::layers::{ARGB32Format, BasicImageData, ContainerLayer, ContainerLayerKind, Format}; use layers::layers::{Image, ImageData, ImageLayer, ImageLayerKind, RGB24Format, WithDataFn}; use layers::rendergl; @@ -29,33 +27,39 @@ mod resize_rate_limiter; /// The implementation of the layers-based compositor. #[deriving(Clone)] -pub struct CompositorImpl { - chan: SharedChan +pub struct CompositorTask { + /// A channel on which messages can be sent to the compositor. + chan: SharedChan, } -impl CompositorImpl { - /// Creates a new compositor instance. +impl CompositorTask { + /// Starts the compositor. Returns an interface that can be used to communicate with the + /// compositor and a port which allows notification when the compositor shuts down. pub fn new(script_chan: SharedChan, - opts: Opts, - prof_chan: ProfilerChan) - -> CompositorImpl { + profiler_chan: ProfilerChan) + -> (CompositorTask, Port<()>) { let script_chan = Cell(script_chan); + let (shutdown_port, shutdown_chan) = stream(); + let shutdown_chan = Cell(shutdown_chan); + let chan: Chan = do on_osmain |port| { debug!("preparing to enter main loop"); - run_main_loop(port, script_chan.take(), &opts, prof_chan.clone()); + run_main_loop(port, + script_chan.take(), + shutdown_chan.take(), + profiler_chan.clone()); }; - CompositorImpl { - chan: SharedChan::new(chan) - } + let task = CompositorTask { + chan: SharedChan::new(chan), + }; + (task, shutdown_port) } } /// Messages to the compositor. pub enum Msg { - BeginDrawing(Chan), - Draw(Chan, LayerBufferSet), - AddKeyHandler(Chan<()>), + Paint(LayerBufferSet), Exit } @@ -84,18 +88,19 @@ impl ImageData for AzureDrawTargetImageData { } } -fn run_main_loop(po: Port, script_chan: SharedChan, opts: &Opts, prof_chan:ProfilerChan) { +fn run_main_loop(port: Port, + script_chan: SharedChan, + shutdown_chan: Chan<()>, + profiler_chan: ProfilerChan) { let app: Application = ApplicationMethods::new(); let window: @mut Window = WindowMethods::new(&app); let resize_rate_limiter = @mut ResizeRateLimiter(script_chan.clone()); - let surfaces = @mut SurfaceSet::new(opts.render_backend); - let context = rendergl::init_render_context(); - // Create an initial layer tree. // // TODO: There should be no initial layer tree until the renderer creates one from the display // list. This is only here because we don't have that logic in the renderer yet. + let context = rendergl::init_render_context(); let root_layer = @mut ContainerLayer(); let original_layer_transform; { @@ -108,7 +113,6 @@ fn run_main_loop(po: Port, script_chan: SharedChan, opts: &Opts, } let scene = @mut Scene(ContainerLayerKind(root_layer), Size2D(800.0, 600.0), identity()); - let key_handlers: @mut ~[Chan<()>] = @mut ~[]; let done = @mut false; // FIXME: This should not be a separate offset applied after the fact but rather should be @@ -121,24 +125,19 @@ fn run_main_loop(po: Port, script_chan: SharedChan, opts: &Opts, resize_rate_limiter.check_resize_response(); // Handle messages - while po.peek() { - match po.recv() { - AddKeyHandler(key_ch) => key_handlers.push(key_ch), - BeginDrawing(sender) => surfaces.lend(sender), + while port.peek() { + match port.recv() { Exit => *done = true, - Draw(sender, draw_target) => { + Paint(new_layer_buffer_set) => { debug!("osmain: received new frame"); - - // Perform a buffer swap. - surfaces.put_back(draw_target); - surfaces.lend(sender); + let mut new_layer_buffer_set = new_layer_buffer_set; // Iterate over the children of the container layer. let mut current_layer_child = root_layer.first_child; // Replace the image layer data with the buffer data. - let buffers = util::replace(&mut surfaces.front.layer_buffer_set.buffers, ~[]); + let buffers = util::replace(&mut new_layer_buffer_set.buffers, ~[]); for buffers.each |buffer| { let width = buffer.rect.size.width as uint; let height = buffer.rect.size.height as uint; @@ -183,7 +182,8 @@ fn run_main_loop(po: Port, script_chan: SharedChan, opts: &Opts, image_layer.common.set_transform(transform) } - surfaces.front.layer_buffer_set.buffers = buffers + // TODO: Recycle the old buffers; send them back to the renderer to reuse if + // it wishes. } } } @@ -216,7 +216,7 @@ fn run_main_loop(po: Port, script_chan: SharedChan, opts: &Opts, // When the user scrolls, move the layer around. do window.set_scroll_callback |delta| { - // FIXME: Can't use `+=` due to a Rust bug. + // FIXME (Rust #2528): Can't use `+=`. let world_offset_copy = *world_offset; *world_offset = world_offset_copy + delta; @@ -235,104 +235,28 @@ fn run_main_loop(po: Port, script_chan: SharedChan, opts: &Opts, // Check for messages coming from the windowing system. window.check_loop(); } + + shutdown_chan.send(()) } /// Implementation of the abstract `Compositor` interface. -impl Compositor for CompositorImpl { - fn begin_drawing(&self, next_dt: Chan) { - self.chan.send(BeginDrawing(next_dt)) - } - fn draw(&self, next_dt: Chan, draw_me: LayerBufferSet) { - self.chan.send(Draw(next_dt, draw_me)) - } -} - -struct SurfaceSet { - front: Surface, - back: Surface, -} - -impl SurfaceSet { - /// Creates a new surface set. - fn new(backend: BackendType) -> SurfaceSet { - SurfaceSet { - front: Surface::new(backend), - back: Surface::new(backend), - } - } - - fn lend(&mut self, receiver: Chan) { - // We are in a position to lend out the surface? - assert!(self.front.have); - // Ok then take it - let old_layer_buffers = util::replace(&mut self.front.layer_buffer_set.buffers, ~[]); - let new_layer_buffers = do old_layer_buffers.map |layer_buffer| { - let draw_target_ref = &layer_buffer.draw_target; - let layer_buffer = LayerBuffer { - draw_target: draw_target_ref.clone(), - rect: copy layer_buffer.rect, - stride: layer_buffer.stride - }; - debug!("osmain: lending surface %?", layer_buffer); - layer_buffer - }; - self.front.layer_buffer_set.buffers = old_layer_buffers; - - let new_layer_buffer_set = LayerBufferSet { buffers: new_layer_buffers }; - receiver.send(new_layer_buffer_set); - // Now we don't have it - self.front.have = false; - // But we (hopefully) have another! - util::swap(&mut self.front, &mut self.back); - // Let's look - assert!(self.front.have); - } - - fn put_back(&mut self, layer_buffer_set: LayerBufferSet) { - // We have room for a return - assert!(self.front.have); - assert!(!self.back.have); - - self.back.layer_buffer_set = layer_buffer_set; - - // Now we have it again - self.back.have = true; - } -} - -struct Surface { - layer_buffer_set: LayerBufferSet, - have: bool, -} - -impl Surface { - fn new(backend: BackendType) -> Surface { - let layer_buffer = LayerBuffer { - draw_target: DrawTarget::new(backend, Size2D(800, 600), B8G8R8A8), - rect: Rect(Point2D(0u, 0u), Size2D(800u, 600u)), - stride: 800 * 4 - }; - let layer_buffer_set = LayerBufferSet { - buffers: ~[ layer_buffer ] - }; - Surface { - layer_buffer_set: layer_buffer_set, - have: true - } +impl Compositor for CompositorTask { + fn paint(&self, layer_buffer_set: LayerBufferSet) { + self.chan.send(Paint(layer_buffer_set)) } } /// A function for spawning into the platform's main thread. -fn on_osmain(f: ~fn(po: Port)) -> Chan { - let (setup_po, setup_ch) = comm::stream(); +fn on_osmain(f: ~fn(port: Port)) -> Chan { + let (setup_port, setup_chan) = comm::stream(); // FIXME: rust#6399 let mut main_task = task::task(); main_task.sched_mode(task::PlatformThread); do main_task.spawn { - let (po, ch) = comm::stream(); - setup_ch.send(ch); - f(po); + let (port, chan) = comm::stream(); + setup_chan.send(chan); + f(port); } - setup_po.recv() + setup_port.recv() } diff --git a/src/components/servo/engine.rs b/src/components/servo/engine.rs index f5f3abaf4c0..3a0e4f45e99 100644 --- a/src/components/servo/engine.rs +++ b/src/components/servo/engine.rs @@ -2,7 +2,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use compositing::CompositorImpl; +use compositing::CompositorTask; use layout::layout_task::LayoutTask; use layout::layout_task; use scripting::script_task::{ExecuteMsg, LoadMsg, ScriptMsg, ScriptTask}; @@ -27,12 +27,12 @@ pub type EngineTask = Chan; pub enum Msg { LoadUrlMsg(Url), - ExitMsg(Chan<()>) + ExitMsg(Chan<()>), } pub struct Engine { request_port: Port, - compositor: CompositorImpl, + compositor: CompositorTask, render_task: RenderTask, resource_task: ResourceTask, image_cache_task: ImageCacheTask, @@ -42,24 +42,23 @@ pub struct Engine { } impl Engine { - pub fn start(compositor: CompositorImpl, + pub fn start(compositor: CompositorTask, opts: &Opts, script_port: Port, script_chan: SharedChan, resource_task: ResourceTask, image_cache_task: ImageCacheTask, - prof_port: ProfilerPort, - prof_chan: ProfilerChan) + profiler_port: ProfilerPort, + profiler_chan: ProfilerChan) -> EngineTask { let (script_port, script_chan) = (Cell(script_port), Cell(script_chan)); - let prof_port = Cell(prof_port); + let profiler_port = Cell(profiler_port); let opts = Cell(copy *opts); do spawn_listener:: |request| { - let profiler_task = time::ProfilerTask::new(prof_port.take(), prof_chan.clone()); - let render_task = RenderTask(compositor.clone(), - opts.with_ref(|o| copy *o), - prof_chan.clone()); + let render_task = RenderTask::new(compositor.clone(), + opts.with_ref(|o| copy *o), + profiler_chan.clone()); let opts = opts.take(); let layout_task = LayoutTask(render_task.clone(), @@ -110,7 +109,7 @@ impl Engine { let (response_port, response_chan) = comm::stream(); - self.render_task.send(render_task::ExitMsg(response_chan)); + self.render_task.channel.send(render_task::ExitMsg(response_chan)); response_port.recv(); self.image_cache_task.exit(); diff --git a/src/components/servo/layout/layout_task.rs b/src/components/servo/layout/layout_task.rs index 27b9dd80ae4..66decaa62b9 100644 --- a/src/components/servo/layout/layout_task.rs +++ b/src/components/servo/layout/layout_task.rs @@ -267,7 +267,7 @@ impl Layout { size: Size2D(screen_size.width.to_px() as uint, screen_size.height.to_px() as uint) }; - self.render_task.send(RenderMsg(render_layer)); + self.render_task.channel.send(RenderMsg(render_layer)); } // time(layout: display list building) // Tell script that we're done. diff --git a/src/components/servo/servo.rc b/src/components/servo/servo.rc index ea0657ddb2e..5274a52a668 100755 --- a/src/components/servo/servo.rc +++ b/src/components/servo/servo.rc @@ -33,7 +33,7 @@ extern mod core_graphics; #[cfg(target_os="macos")] extern mod core_text; -use compositing::{AddKeyHandler, CompositorImpl}; +use compositing::CompositorTask; use engine::{Engine, LoadUrlMsg}; use core::comm::SharedChan; @@ -134,20 +134,19 @@ fn main() { } fn run(opts: &Opts) { + // Create the script channel. let (script_port, script_chan) = comm::stream(); let script_chan = SharedChan::new(script_chan); - let (prof_port, prof_chan) = comm::stream(); - let prof_chan = SharedChan::new(prof_chan); + // Create the profiler channel. + let (profiler_port, profiler_chan) = comm::stream(); + let profiler_chan = SharedChan::new(profiler_chan); - // The platform event handler thread - let compositor = CompositorImpl::new(script_chan.clone(), copy *opts, prof_chan.clone()); + // Create the compositor. + let (compositor, shutdown_port) = CompositorTask::new(script_chan.clone(), + profiler_chan.clone()); - // Send each file to render then wait for keypress - let (keypress_from_compositor, keypress_to_engine) = comm::stream(); - compositor.chan.send(AddKeyHandler(keypress_to_engine)); - - // Create a servo instance + // Create a Servo instance. let resource_task = ResourceTask(); let image_cache_task = ImageCacheTask(resource_task.clone()); let engine_task = Engine::start(compositor.clone(), @@ -159,25 +158,18 @@ fn run(opts: &Opts) { prof_port, prof_chan); + // Send the URL command to the engine task. for opts.urls.each |filename| { - let url = make_url(copy *filename, None); - - debug!("master: Sending url `%s`", url.to_str()); - engine_task.send(LoadUrlMsg(url)); - - debug!("master: Waiting for keypress"); - match keypress_from_compositor.try_recv() { - Some(*) => {} - None => error!("keypress stream closed unexpectedly"), - } + engine_task.send(LoadUrlMsg(make_url(copy *filename, None))) } - // Shut everything down + // Wait for the compositor to shut down. + shutdown_port.recv(); + + // Shut the engine down. debug!("master: Shut down"); let (exit_response_from_engine, exit_chan) = comm::stream(); engine_task.send(engine::ExitMsg(exit_chan)); exit_response_from_engine.recv(); - - compositor.chan.send(compositing::Exit); } From c658c6dea93db2769d1271edd5253f1653162a26 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Mon, 20 May 2013 17:59:05 -0700 Subject: [PATCH 2/5] Move the test harnesses into test/. This is preparation for removing the `servo-` prefixes from the various Servo components. --- configure | 2 +- mk/check.mk | 6 +++--- .../harness}/contenttest/contenttest.rs | 0 .../harness}/reftest/rasterize.py | 0 src/{components => test/harness}/reftest/reftest.rs | 0 src/test/{ => html}/about-mozilla.html | 0 src/test/{ => html}/acid1.html | 0 .../{ => html}/combining-character-sequences.html | 0 src/test/{ => html}/content/harness.js | 0 src/test/{ => html}/content/test_prototypes.html | 0 src/test/{ => html}/content/test_prototypes.js | 0 src/test/{ => html}/demo.css | 0 src/test/{ => html}/demo.html | 0 src/test/{ => html}/head_link_test.html | 0 src/test/{ => html}/hello.html | 0 src/test/{ => html}/ligatures.html | 0 src/test/{ => html}/lipsum.html | 0 src/test/{ => html}/lots_of_background_colors.css | 0 src/test/{ => html}/mojira.html | 0 src/test/{ => html}/ref/blank.html | 0 src/test/{ => html}/ref/boxes.png | Bin src/test/{ => html}/ref/compute_height_width.html | 0 src/test/{ => html}/ref/height_compute.css | 0 src/test/{ => html}/ref/height_compute.html | 0 src/test/{ => html}/ref/height_compute_reset.css | 0 src/test/{ => html}/ref/height_compute_reset.html | 0 src/test/{ => html}/ref/height_width.css | 0 src/test/{ => html}/ref/reset.css | 0 src/test/{ => html}/ref/simple-reset.css | 0 src/test/{ => html}/ref/square.css | 0 src/test/{ => html}/ref/square.html | 0 src/test/{ => html}/ref/test-image.html | 0 src/test/{ => html}/small-layout-test.html | 0 src/test/{ => html}/small_color_test.css | 0 src/test/{ => html}/small_color_test.html | 0 src/test/{ => html}/test-absolute.css | 0 src/test/{ => html}/test-absolute.html | 0 src/test/{ => html}/test-alert.js | 0 src/test/{ => html}/test-border.css | 0 src/test/{ => html}/test-border.html | 0 src/test/{ => html}/test-inline.html | 0 src/test/{ => html}/test-js-alert.html | 0 src/test/{ => html}/test-js-image.html | 0 src/test/{ => html}/test-js.html | 0 src/test/{ => html}/test-many-images-different.html | 0 src/test/{ => html}/test-many-images.html | 0 src/test/{ => html}/test-text-break.html | 0 src/test/{ => html}/test-text.html | 0 src/test/{ => html}/test.css | 0 src/test/{ => html}/test.html | 0 src/test/{ => html}/test.jpeg | Bin src/test/{ => html}/test.js | 0 src/test/{ => html}/test_bg_color.html | 0 src/test/{ => html}/test_bg_color_simple.css | 0 src/test/{ => html}/test_bg_color_simple.html | 0 src/test/{ => html}/test_bindings.html | 0 src/test/{ => html}/test_bindings.js | 0 src/test/{ => html}/test_close.html | 0 src/test/{ => html}/test_close.js | 0 src/test/{ => html}/test_docelem.js | 0 src/test/{ => html}/test_getter_time.html | 0 src/test/{ => html}/test_getter_time.js | 0 src/test/{ => html}/test_hammer_layout.css | 0 src/test/{ => html}/test_hammer_layout.html | 0 src/test/{ => html}/test_hammer_layout.js | 0 src/test/{ => html}/test_image_getter.js | 0 src/test/{ => html}/test_inline_boxes.html | 0 src/test/{ => html}/test_linking.css | 0 src/test/{ => html}/test_timeout.html | 0 src/test/{ => html}/test_timeout.js | 0 src/test/{ => html}/tiny_test.html | 0 71 files changed, 4 insertions(+), 4 deletions(-) rename src/{components => test/harness}/contenttest/contenttest.rs (100%) rename src/{components => test/harness}/reftest/rasterize.py (100%) rename src/{components => test/harness}/reftest/reftest.rs (100%) rename src/test/{ => html}/about-mozilla.html (100%) rename src/test/{ => html}/acid1.html (100%) rename src/test/{ => html}/combining-character-sequences.html (100%) rename src/test/{ => html}/content/harness.js (100%) rename src/test/{ => html}/content/test_prototypes.html (100%) rename src/test/{ => html}/content/test_prototypes.js (100%) rename src/test/{ => html}/demo.css (100%) rename src/test/{ => html}/demo.html (100%) rename src/test/{ => html}/head_link_test.html (100%) rename src/test/{ => html}/hello.html (100%) rename src/test/{ => html}/ligatures.html (100%) rename src/test/{ => html}/lipsum.html (100%) rename src/test/{ => html}/lots_of_background_colors.css (100%) rename src/test/{ => html}/mojira.html (100%) rename src/test/{ => html}/ref/blank.html (100%) rename src/test/{ => html}/ref/boxes.png (100%) rename src/test/{ => html}/ref/compute_height_width.html (100%) rename src/test/{ => html}/ref/height_compute.css (100%) rename src/test/{ => html}/ref/height_compute.html (100%) rename src/test/{ => html}/ref/height_compute_reset.css (100%) rename src/test/{ => html}/ref/height_compute_reset.html (100%) rename src/test/{ => html}/ref/height_width.css (100%) rename src/test/{ => html}/ref/reset.css (100%) rename src/test/{ => html}/ref/simple-reset.css (100%) rename src/test/{ => html}/ref/square.css (100%) rename src/test/{ => html}/ref/square.html (100%) rename src/test/{ => html}/ref/test-image.html (100%) rename src/test/{ => html}/small-layout-test.html (100%) rename src/test/{ => html}/small_color_test.css (100%) rename src/test/{ => html}/small_color_test.html (100%) rename src/test/{ => html}/test-absolute.css (100%) rename src/test/{ => html}/test-absolute.html (100%) rename src/test/{ => html}/test-alert.js (100%) rename src/test/{ => html}/test-border.css (100%) rename src/test/{ => html}/test-border.html (100%) rename src/test/{ => html}/test-inline.html (100%) rename src/test/{ => html}/test-js-alert.html (100%) rename src/test/{ => html}/test-js-image.html (100%) rename src/test/{ => html}/test-js.html (100%) rename src/test/{ => html}/test-many-images-different.html (100%) rename src/test/{ => html}/test-many-images.html (100%) rename src/test/{ => html}/test-text-break.html (100%) rename src/test/{ => html}/test-text.html (100%) rename src/test/{ => html}/test.css (100%) rename src/test/{ => html}/test.html (100%) rename src/test/{ => html}/test.jpeg (100%) rename src/test/{ => html}/test.js (100%) rename src/test/{ => html}/test_bg_color.html (100%) rename src/test/{ => html}/test_bg_color_simple.css (100%) rename src/test/{ => html}/test_bg_color_simple.html (100%) rename src/test/{ => html}/test_bindings.html (100%) rename src/test/{ => html}/test_bindings.js (100%) rename src/test/{ => html}/test_close.html (100%) rename src/test/{ => html}/test_close.js (100%) rename src/test/{ => html}/test_docelem.js (100%) rename src/test/{ => html}/test_getter_time.html (100%) rename src/test/{ => html}/test_getter_time.js (100%) rename src/test/{ => html}/test_hammer_layout.css (100%) rename src/test/{ => html}/test_hammer_layout.html (100%) rename src/test/{ => html}/test_hammer_layout.js (100%) rename src/test/{ => html}/test_image_getter.js (100%) rename src/test/{ => html}/test_inline_boxes.html (100%) rename src/test/{ => html}/test_linking.css (100%) rename src/test/{ => html}/test_timeout.html (100%) rename src/test/{ => html}/test_timeout.js (100%) rename src/test/{ => html}/tiny_test.html (100%) diff --git a/configure b/configure index 27edb45ae41..133bccc6882 100755 --- a/configure +++ b/configure @@ -452,7 +452,7 @@ done make_dir ${CFG_BUILD_DIR}src/components/servo-util make_dir ${CFG_BUILD_DIR}src/components/servo-net make_dir ${CFG_BUILD_DIR}src/components/servo-gfx -make_dir src/test/ref +make_dir src/test/html/ref make_dir src/compiler/rust # TODO: don't run configure on submodules unless necessary. For an example, diff --git a/mk/check.mk b/mk/check.mk index 9ee9473c8c8..42adc18516d 100644 --- a/mk/check.mk +++ b/mk/check.mk @@ -20,10 +20,10 @@ $(eval $(call DEF_SUBMODULE_TEST_RULES,$(submodule)))) servo-test: $(DEPS_servo) $(RUSTC) $(RFLAGS_servo) --test -o $@ $< -reftest: $(S)src/reftest/reftest.rs servo +reftest: $(S)src/test/harness/reftest/reftest.rs servo $(RUSTC) $(RFLAGS_servo) -o $@ $< -L . -contenttest: $(S)src/contenttest/contenttest.rs servo +contenttest: $(S)src/test/harness/contenttest/contenttest.rs servo $(RUSTC) $(RFLAGS_servo) -o $@ $< -L . DEPS_CHECK_TARGETS_ALL = $(addprefix check-,$(DEPS_CHECK_ALL)) @@ -39,7 +39,7 @@ check-servo: servo-test ./servo-test $(TESTNAME) check-ref: reftest - ./reftest --source-dir=$(S)/src/test/ref --work-dir=src/test/ref $(TESTNAME) + ./reftest --source-dir=$(S)/src/test/html/ref --work-dir=src/test/html/ref $(TESTNAME) check-content: contenttest ./contenttest --source-dir=$(S)/src/test/content $(TESTNAME) diff --git a/src/components/contenttest/contenttest.rs b/src/test/harness/contenttest/contenttest.rs similarity index 100% rename from src/components/contenttest/contenttest.rs rename to src/test/harness/contenttest/contenttest.rs diff --git a/src/components/reftest/rasterize.py b/src/test/harness/reftest/rasterize.py similarity index 100% rename from src/components/reftest/rasterize.py rename to src/test/harness/reftest/rasterize.py diff --git a/src/components/reftest/reftest.rs b/src/test/harness/reftest/reftest.rs similarity index 100% rename from src/components/reftest/reftest.rs rename to src/test/harness/reftest/reftest.rs diff --git a/src/test/about-mozilla.html b/src/test/html/about-mozilla.html similarity index 100% rename from src/test/about-mozilla.html rename to src/test/html/about-mozilla.html diff --git a/src/test/acid1.html b/src/test/html/acid1.html similarity index 100% rename from src/test/acid1.html rename to src/test/html/acid1.html diff --git a/src/test/combining-character-sequences.html b/src/test/html/combining-character-sequences.html similarity index 100% rename from src/test/combining-character-sequences.html rename to src/test/html/combining-character-sequences.html diff --git a/src/test/content/harness.js b/src/test/html/content/harness.js similarity index 100% rename from src/test/content/harness.js rename to src/test/html/content/harness.js diff --git a/src/test/content/test_prototypes.html b/src/test/html/content/test_prototypes.html similarity index 100% rename from src/test/content/test_prototypes.html rename to src/test/html/content/test_prototypes.html diff --git a/src/test/content/test_prototypes.js b/src/test/html/content/test_prototypes.js similarity index 100% rename from src/test/content/test_prototypes.js rename to src/test/html/content/test_prototypes.js diff --git a/src/test/demo.css b/src/test/html/demo.css similarity index 100% rename from src/test/demo.css rename to src/test/html/demo.css diff --git a/src/test/demo.html b/src/test/html/demo.html similarity index 100% rename from src/test/demo.html rename to src/test/html/demo.html diff --git a/src/test/head_link_test.html b/src/test/html/head_link_test.html similarity index 100% rename from src/test/head_link_test.html rename to src/test/html/head_link_test.html diff --git a/src/test/hello.html b/src/test/html/hello.html similarity index 100% rename from src/test/hello.html rename to src/test/html/hello.html diff --git a/src/test/ligatures.html b/src/test/html/ligatures.html similarity index 100% rename from src/test/ligatures.html rename to src/test/html/ligatures.html diff --git a/src/test/lipsum.html b/src/test/html/lipsum.html similarity index 100% rename from src/test/lipsum.html rename to src/test/html/lipsum.html diff --git a/src/test/lots_of_background_colors.css b/src/test/html/lots_of_background_colors.css similarity index 100% rename from src/test/lots_of_background_colors.css rename to src/test/html/lots_of_background_colors.css diff --git a/src/test/mojira.html b/src/test/html/mojira.html similarity index 100% rename from src/test/mojira.html rename to src/test/html/mojira.html diff --git a/src/test/ref/blank.html b/src/test/html/ref/blank.html similarity index 100% rename from src/test/ref/blank.html rename to src/test/html/ref/blank.html diff --git a/src/test/ref/boxes.png b/src/test/html/ref/boxes.png similarity index 100% rename from src/test/ref/boxes.png rename to src/test/html/ref/boxes.png diff --git a/src/test/ref/compute_height_width.html b/src/test/html/ref/compute_height_width.html similarity index 100% rename from src/test/ref/compute_height_width.html rename to src/test/html/ref/compute_height_width.html diff --git a/src/test/ref/height_compute.css b/src/test/html/ref/height_compute.css similarity index 100% rename from src/test/ref/height_compute.css rename to src/test/html/ref/height_compute.css diff --git a/src/test/ref/height_compute.html b/src/test/html/ref/height_compute.html similarity index 100% rename from src/test/ref/height_compute.html rename to src/test/html/ref/height_compute.html diff --git a/src/test/ref/height_compute_reset.css b/src/test/html/ref/height_compute_reset.css similarity index 100% rename from src/test/ref/height_compute_reset.css rename to src/test/html/ref/height_compute_reset.css diff --git a/src/test/ref/height_compute_reset.html b/src/test/html/ref/height_compute_reset.html similarity index 100% rename from src/test/ref/height_compute_reset.html rename to src/test/html/ref/height_compute_reset.html diff --git a/src/test/ref/height_width.css b/src/test/html/ref/height_width.css similarity index 100% rename from src/test/ref/height_width.css rename to src/test/html/ref/height_width.css diff --git a/src/test/ref/reset.css b/src/test/html/ref/reset.css similarity index 100% rename from src/test/ref/reset.css rename to src/test/html/ref/reset.css diff --git a/src/test/ref/simple-reset.css b/src/test/html/ref/simple-reset.css similarity index 100% rename from src/test/ref/simple-reset.css rename to src/test/html/ref/simple-reset.css diff --git a/src/test/ref/square.css b/src/test/html/ref/square.css similarity index 100% rename from src/test/ref/square.css rename to src/test/html/ref/square.css diff --git a/src/test/ref/square.html b/src/test/html/ref/square.html similarity index 100% rename from src/test/ref/square.html rename to src/test/html/ref/square.html diff --git a/src/test/ref/test-image.html b/src/test/html/ref/test-image.html similarity index 100% rename from src/test/ref/test-image.html rename to src/test/html/ref/test-image.html diff --git a/src/test/small-layout-test.html b/src/test/html/small-layout-test.html similarity index 100% rename from src/test/small-layout-test.html rename to src/test/html/small-layout-test.html diff --git a/src/test/small_color_test.css b/src/test/html/small_color_test.css similarity index 100% rename from src/test/small_color_test.css rename to src/test/html/small_color_test.css diff --git a/src/test/small_color_test.html b/src/test/html/small_color_test.html similarity index 100% rename from src/test/small_color_test.html rename to src/test/html/small_color_test.html diff --git a/src/test/test-absolute.css b/src/test/html/test-absolute.css similarity index 100% rename from src/test/test-absolute.css rename to src/test/html/test-absolute.css diff --git a/src/test/test-absolute.html b/src/test/html/test-absolute.html similarity index 100% rename from src/test/test-absolute.html rename to src/test/html/test-absolute.html diff --git a/src/test/test-alert.js b/src/test/html/test-alert.js similarity index 100% rename from src/test/test-alert.js rename to src/test/html/test-alert.js diff --git a/src/test/test-border.css b/src/test/html/test-border.css similarity index 100% rename from src/test/test-border.css rename to src/test/html/test-border.css diff --git a/src/test/test-border.html b/src/test/html/test-border.html similarity index 100% rename from src/test/test-border.html rename to src/test/html/test-border.html diff --git a/src/test/test-inline.html b/src/test/html/test-inline.html similarity index 100% rename from src/test/test-inline.html rename to src/test/html/test-inline.html diff --git a/src/test/test-js-alert.html b/src/test/html/test-js-alert.html similarity index 100% rename from src/test/test-js-alert.html rename to src/test/html/test-js-alert.html diff --git a/src/test/test-js-image.html b/src/test/html/test-js-image.html similarity index 100% rename from src/test/test-js-image.html rename to src/test/html/test-js-image.html diff --git a/src/test/test-js.html b/src/test/html/test-js.html similarity index 100% rename from src/test/test-js.html rename to src/test/html/test-js.html diff --git a/src/test/test-many-images-different.html b/src/test/html/test-many-images-different.html similarity index 100% rename from src/test/test-many-images-different.html rename to src/test/html/test-many-images-different.html diff --git a/src/test/test-many-images.html b/src/test/html/test-many-images.html similarity index 100% rename from src/test/test-many-images.html rename to src/test/html/test-many-images.html diff --git a/src/test/test-text-break.html b/src/test/html/test-text-break.html similarity index 100% rename from src/test/test-text-break.html rename to src/test/html/test-text-break.html diff --git a/src/test/test-text.html b/src/test/html/test-text.html similarity index 100% rename from src/test/test-text.html rename to src/test/html/test-text.html diff --git a/src/test/test.css b/src/test/html/test.css similarity index 100% rename from src/test/test.css rename to src/test/html/test.css diff --git a/src/test/test.html b/src/test/html/test.html similarity index 100% rename from src/test/test.html rename to src/test/html/test.html diff --git a/src/test/test.jpeg b/src/test/html/test.jpeg similarity index 100% rename from src/test/test.jpeg rename to src/test/html/test.jpeg diff --git a/src/test/test.js b/src/test/html/test.js similarity index 100% rename from src/test/test.js rename to src/test/html/test.js diff --git a/src/test/test_bg_color.html b/src/test/html/test_bg_color.html similarity index 100% rename from src/test/test_bg_color.html rename to src/test/html/test_bg_color.html diff --git a/src/test/test_bg_color_simple.css b/src/test/html/test_bg_color_simple.css similarity index 100% rename from src/test/test_bg_color_simple.css rename to src/test/html/test_bg_color_simple.css diff --git a/src/test/test_bg_color_simple.html b/src/test/html/test_bg_color_simple.html similarity index 100% rename from src/test/test_bg_color_simple.html rename to src/test/html/test_bg_color_simple.html diff --git a/src/test/test_bindings.html b/src/test/html/test_bindings.html similarity index 100% rename from src/test/test_bindings.html rename to src/test/html/test_bindings.html diff --git a/src/test/test_bindings.js b/src/test/html/test_bindings.js similarity index 100% rename from src/test/test_bindings.js rename to src/test/html/test_bindings.js diff --git a/src/test/test_close.html b/src/test/html/test_close.html similarity index 100% rename from src/test/test_close.html rename to src/test/html/test_close.html diff --git a/src/test/test_close.js b/src/test/html/test_close.js similarity index 100% rename from src/test/test_close.js rename to src/test/html/test_close.js diff --git a/src/test/test_docelem.js b/src/test/html/test_docelem.js similarity index 100% rename from src/test/test_docelem.js rename to src/test/html/test_docelem.js diff --git a/src/test/test_getter_time.html b/src/test/html/test_getter_time.html similarity index 100% rename from src/test/test_getter_time.html rename to src/test/html/test_getter_time.html diff --git a/src/test/test_getter_time.js b/src/test/html/test_getter_time.js similarity index 100% rename from src/test/test_getter_time.js rename to src/test/html/test_getter_time.js diff --git a/src/test/test_hammer_layout.css b/src/test/html/test_hammer_layout.css similarity index 100% rename from src/test/test_hammer_layout.css rename to src/test/html/test_hammer_layout.css diff --git a/src/test/test_hammer_layout.html b/src/test/html/test_hammer_layout.html similarity index 100% rename from src/test/test_hammer_layout.html rename to src/test/html/test_hammer_layout.html diff --git a/src/test/test_hammer_layout.js b/src/test/html/test_hammer_layout.js similarity index 100% rename from src/test/test_hammer_layout.js rename to src/test/html/test_hammer_layout.js diff --git a/src/test/test_image_getter.js b/src/test/html/test_image_getter.js similarity index 100% rename from src/test/test_image_getter.js rename to src/test/html/test_image_getter.js diff --git a/src/test/test_inline_boxes.html b/src/test/html/test_inline_boxes.html similarity index 100% rename from src/test/test_inline_boxes.html rename to src/test/html/test_inline_boxes.html diff --git a/src/test/test_linking.css b/src/test/html/test_linking.css similarity index 100% rename from src/test/test_linking.css rename to src/test/html/test_linking.css diff --git a/src/test/test_timeout.html b/src/test/html/test_timeout.html similarity index 100% rename from src/test/test_timeout.html rename to src/test/html/test_timeout.html diff --git a/src/test/test_timeout.js b/src/test/html/test_timeout.js similarity index 100% rename from src/test/test_timeout.js rename to src/test/html/test_timeout.js diff --git a/src/test/tiny_test.html b/src/test/html/tiny_test.html similarity index 100% rename from src/test/tiny_test.html rename to src/test/html/tiny_test.html From c7bce9823660106969e5d2c6b4e4c35f4003d360 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Mon, 20 May 2013 18:41:25 -0700 Subject: [PATCH 3/5] Remove the `servo-` prefix from core components. --- Makefile.in | 54 +++++++++--------- README.md | 4 +- configure | 7 ++- mk/clean.mk | 14 ++--- src/README.md | 17 +++--- src/components/{servo-gfx => gfx}/color.rs | 0 .../{servo-gfx => gfx}/compositor.rs | 0 .../{servo-gfx => gfx}/display_list.rs | 0 src/components/{servo-gfx => gfx}/font.rs | 0 .../{servo-gfx => gfx}/font_context.rs | 0 .../{servo-gfx => gfx}/font_list.rs | 0 .../freetype_impl/font_context.rs | 0 src/components/{servo-gfx => gfx}/geometry.rs | 0 .../{servo-gfx/servo_gfx.rc => gfx/gfx.rc} | 6 +- src/components/{servo-gfx => gfx}/native.rs | 0 src/components/{servo-gfx => gfx}/opts.rs | 0 .../{servo-gfx => gfx}/platform/linux/font.rs | 0 .../platform/linux/font_context.rs | 0 .../platform/linux/font_list.rs | 0 .../{servo-gfx => gfx}/platform/macos/font.rs | 0 .../platform/macos/font_context.rs | 0 .../platform/macos/font_list.rs | 0 .../{servo-gfx => gfx}/platform/mod.rs | 0 .../{servo-gfx => gfx}/render_context.rs | 0 .../{servo-gfx => gfx}/render_layers.rs | 0 .../{servo-gfx => gfx}/render_task.rs | 0 src/components/{servo-gfx => gfx}/surface.rs | 0 .../{servo-gfx => gfx}/text/glyph.rs | 0 src/components/{servo-gfx => gfx}/text/mod.rs | 0 .../{servo-gfx => gfx}/text/shaper.rs | 0 .../text/shaping/harfbuzz.rs | 0 .../{servo-gfx => gfx}/text/shaping/mod.rs | 0 .../{servo-gfx => gfx}/text/text_run.rs | 0 .../{servo-gfx => gfx}/text/util.rs | 0 .../{servo => main}/compositing/mod.rs | 0 .../compositing/resize_rate_limiter.rs | 0 .../{servo => main}/css/matching.rs | 0 .../{servo => main}/css/node_style.rs | 0 .../{servo => main}/css/node_util.rs | 0 .../{servo => main}/css/node_void_ptr.rs | 0 src/components/{servo => main}/css/select.rs | 0 .../{servo => main}/css/select_handler.rs | 0 .../dom/bindings/clientrect.rs | 0 .../dom/bindings/clientrectlist.rs | 0 .../dom/bindings/codegen/BindingGen.py | 0 .../dom/bindings/codegen/BindingUtils.cpp | 0 .../dom/bindings/codegen/BindingUtils.h | 0 .../dom/bindings/codegen/Bindings.conf | 0 .../dom/bindings/codegen/ClientRect.webidl | 0 .../bindings/codegen/ClientRectList.webidl | 0 .../dom/bindings/codegen/Codegen.py | 0 .../dom/bindings/codegen/CodegenRust.py | 0 .../dom/bindings/codegen/Configuration.py | 0 .../dom/bindings/codegen/DOMJSClass.h | 0 .../bindings/codegen/DOMJSProxyHandler.cpp | 0 .../dom/bindings/codegen/DOMJSProxyHandler.h | 0 .../dom/bindings/codegen/DOMParser.webidl | 0 .../dom/bindings/codegen/ErrorResult.h | 0 .../dom/bindings/codegen/Errors.msg | 0 .../dom/bindings/codegen/Event.webidl | 0 .../dom/bindings/codegen/EventTarget.webidl | 0 .../codegen/GenerateCSS2PropertiesWebIDL.py | 0 .../dom/bindings/codegen/GlobalGen.py | 0 .../bindings/codegen/HTMLCollection.webidl | 0 .../dom/bindings/codegen/Makefile.in | 0 .../dom/bindings/codegen/Nullable.h | 0 .../bindings/codegen/PrimitiveConversions.h | 0 .../dom/bindings/codegen/RegisterBindings.cpp | 0 .../dom/bindings/codegen/RegisterBindings.h | 0 .../dom/bindings/codegen/TypedArray.h | 0 .../bindings/codegen/crashtests/769464.html | 0 .../codegen/crashtests/crashtests.list | 0 .../dom/bindings/codegen/parser/README | 0 .../dom/bindings/codegen/parser/UPSTREAM | 0 .../dom/bindings/codegen/parser/WebIDL.py | 0 .../dom/bindings/codegen/parser/runtests.py | 0 .../codegen/parser/tests/test_any_null.py | 0 .../test_argument_identifier_conflicts.py | 0 .../parser/tests/test_argument_novoid.py | 0 .../parser/tests/test_array_of_interface.py | 0 .../codegen/parser/tests/test_arraybuffer.py | 0 .../codegen/parser/tests/test_attr.py | 0 .../parser/tests/test_attr_sequence_type.py | 0 .../parser/tests/test_builtin_filename.py | 0 .../codegen/parser/tests/test_builtins.py | 0 .../codegen/parser/tests/test_callback.py | 0 .../parser/tests/test_callback_interface.py | 0 .../codegen/parser/tests/test_const.py | 0 .../codegen/parser/tests/test_constructor.py | 0 .../test_constructor_no_interface_object.py | 0 .../codegen/parser/tests/test_deduplicate.py | 0 .../codegen/parser/tests/test_dictionary.py | 0 .../parser/tests/test_distinguishability.py | 0 .../codegen/parser/tests/test_double_null.py | 0 .../parser/tests/test_duplicate_qualifiers.py | 0 .../codegen/parser/tests/test_empty_enum.py | 0 .../codegen/parser/tests/test_enum.py | 0 .../tests/test_enum_duplicate_values.py | 0 .../codegen/parser/tests/test_error_colno.py | 0 .../codegen/parser/tests/test_error_lineno.py | 0 .../parser/tests/test_extended_attributes.py | 0 .../codegen/parser/tests/test_forward_decl.py | 0 .../codegen/parser/tests/test_implements.py | 0 .../parser/tests/test_incomplete_parent.py | 0 .../parser/tests/test_incomplete_types.py | 0 .../codegen/parser/tests/test_interface.py | 0 ...st_interface_const_identifier_conflicts.py | 0 ...ace_identifier_conflicts_across_members.py | 0 .../codegen/parser/tests/test_method.py | 0 .../parser/tests/test_nullable_equivalency.py | 0 .../parser/tests/test_nullable_void.py | 0 .../parser/tests/test_optional_constraints.py | 0 .../codegen/parser/tests/test_overload.py | 0 .../codegen/parser/tests/test_sanity.py | 0 .../test_special_method_signature_mismatch.py | 0 .../parser/tests/test_special_methods.py | 0 .../tests/test_special_methods_uniqueness.py | 0 .../tests/test_treatNonCallableAsNull.py | 0 .../codegen/parser/tests/test_typedef.py | 0 .../codegen/parser/tests/test_union.py | 0 .../codegen/parser/tests/test_union_any.py | 0 .../parser/tests/test_union_nullable.py | 0 .../parser/tests/test_variadic_callback.py | 0 .../parser/tests/test_variadic_constraints.py | 0 .../dom/bindings/codegen/ply/COPYING | 0 .../dom/bindings/codegen/ply/README | 0 .../dom/bindings/codegen/ply/ply/__init__.py | 0 .../dom/bindings/codegen/ply/ply/lex.py | 0 .../dom/bindings/codegen/ply/ply/yacc.py | 0 .../dom/bindings/codegen/pythonpath.py | 0 .../codegen/stubgenerator/Skeleton.cpp | 0 .../bindings/codegen/stubgenerator/Skeleton.h | 0 .../codegen/stubgenerator/generate.sh | 0 .../dom/bindings/codegen/test/Makefile.in | 0 .../bindings/codegen/test/TestBindingHeader.h | 0 .../bindings/codegen/test/TestCodeGen.webidl | 0 .../codegen/test/TestDictionary.webidl | 0 .../bindings/codegen/test/TestTypedef.webidl | 0 .../bindings/codegen/test/file_bug775543.html | 0 .../bindings/codegen/test/forOf_iframe.html | 0 .../codegen/test/test_InstanceOf.html | 0 .../bindings/codegen/test/test_bug773326.html | 0 .../bindings/codegen/test/test_bug775543.html | 0 .../bindings/codegen/test/test_bug788369.html | 0 .../dom/bindings/codegen/test/test_enums.html | 0 .../dom/bindings/codegen/test/test_forOf.html | 0 .../bindings/codegen/test/test_integers.html | 0 .../codegen/test/test_interfaceToString.html | 0 .../codegen/test/test_lookupGetter.html | 0 .../codegen/test/test_sequence_wrapping.html | 0 .../codegen/test/test_traceProtos.html | 0 .../dom/bindings/conversions.rs | 0 .../{servo => main}/dom/bindings/document.rs | 0 .../{servo => main}/dom/bindings/domparser.rs | 0 .../{servo => main}/dom/bindings/element.rs | 0 .../{servo => main}/dom/bindings/event.rs | 0 .../dom/bindings/eventtarget.rs | 0 .../dom/bindings/htmlcollection.rs | 0 .../{servo => main}/dom/bindings/node.rs | 0 .../dom/bindings/proxyhandler.rs | 0 .../{servo => main}/dom/bindings/text.rs | 0 .../{servo => main}/dom/bindings/utils.rs | 0 .../{servo => main}/dom/bindings/window.rs | 0 .../{servo => main}/dom/characterdata.rs | 0 .../{servo => main}/dom/clientrect.rs | 0 .../{servo => main}/dom/clientrectlist.rs | 0 .../{servo => main}/dom/document.rs | 0 .../{servo => main}/dom/domparser.rs | 0 src/components/{servo => main}/dom/element.rs | 0 src/components/{servo => main}/dom/event.rs | 0 .../{servo => main}/dom/eventtarget.rs | 0 .../{servo => main}/dom/htmlcollection.rs | 0 src/components/{servo => main}/dom/node.rs | 0 src/components/{servo => main}/dom/window.rs | 0 src/components/{servo => main}/engine.rs | 0 .../{servo => main}/html/cssparse.rs | 0 .../html/hubbub_html_parser.rs | 0 src/components/{servo => main}/image.rs | 0 src/components/{servo => main}/layout/aux.rs | 0 .../{servo => main}/layout/block.rs | 0 src/components/{servo => main}/layout/box.rs | 0 .../{servo => main}/layout/box_builder.rs | 0 .../{servo => main}/layout/context.rs | 0 .../{servo => main}/layout/debug.rs | 0 .../layout/display_list_builder.rs | 0 src/components/{servo => main}/layout/flow.rs | 0 .../{servo => main}/layout/inline.rs | 0 .../{servo => main}/layout/layout_task.rs | 0 src/components/{servo => main}/layout/text.rs | 0 src/components/{servo => main}/macros.rs | 0 .../platform/common/glut_windowing.rs | 0 .../platform/common/shared_gl_windowing.rs | 0 .../{servo => main}/platform/mod.rs | 0 .../{servo => main}/scripting/script_task.rs | 0 src/components/{servo => main}/servo.rc | 6 +- src/components/{servo => main}/util/mod.rs | 0 src/components/{servo => main}/util/task.rs | 0 src/components/{servo => main}/windowing.rs | 0 .../{servo-net => net}/file_loader.rs | 0 .../{servo-net => net}/http_loader.rs | 0 .../{servo-net => net}/image/base.rs | 0 .../{servo-net => net}/image/holder.rs | 0 .../{servo-net => net}/image/test.jpeg | Bin .../{servo-net => net}/image_cache_task.rs | 0 .../{servo-net => net}/local_image_cache.rs | 0 .../{servo-net/servo_net.rc => net/net.rc} | 4 +- .../{servo-net => net}/resource_task.rs | 0 src/components/{servo-net => net}/util.rs | 0 src/components/{servo-util => util}/cache.rs | 0 src/components/{servo-util => util}/range.rs | 0 src/components/{servo-util => util}/time.rs | 0 src/components/{servo-util => util}/tree.rs | 0 src/components/{servo-util => util}/url.rs | 0 .../servo_util.rc => util/util.rc} | 2 +- src/components/{servo-util => util}/vec.rs | 0 215 files changed, 59 insertions(+), 55 deletions(-) rename src/components/{servo-gfx => gfx}/color.rs (100%) rename src/components/{servo-gfx => gfx}/compositor.rs (100%) rename src/components/{servo-gfx => gfx}/display_list.rs (100%) rename src/components/{servo-gfx => gfx}/font.rs (100%) rename src/components/{servo-gfx => gfx}/font_context.rs (100%) rename src/components/{servo-gfx => gfx}/font_list.rs (100%) rename src/components/{servo-gfx => gfx}/freetype_impl/font_context.rs (100%) rename src/components/{servo-gfx => gfx}/geometry.rs (100%) rename src/components/{servo-gfx/servo_gfx.rc => gfx/gfx.rc} (93%) rename src/components/{servo-gfx => gfx}/native.rs (100%) rename src/components/{servo-gfx => gfx}/opts.rs (100%) rename src/components/{servo-gfx => gfx}/platform/linux/font.rs (100%) rename src/components/{servo-gfx => gfx}/platform/linux/font_context.rs (100%) rename src/components/{servo-gfx => gfx}/platform/linux/font_list.rs (100%) rename src/components/{servo-gfx => gfx}/platform/macos/font.rs (100%) rename src/components/{servo-gfx => gfx}/platform/macos/font_context.rs (100%) rename src/components/{servo-gfx => gfx}/platform/macos/font_list.rs (100%) rename src/components/{servo-gfx => gfx}/platform/mod.rs (100%) rename src/components/{servo-gfx => gfx}/render_context.rs (100%) rename src/components/{servo-gfx => gfx}/render_layers.rs (100%) rename src/components/{servo-gfx => gfx}/render_task.rs (100%) rename src/components/{servo-gfx => gfx}/surface.rs (100%) rename src/components/{servo-gfx => gfx}/text/glyph.rs (100%) rename src/components/{servo-gfx => gfx}/text/mod.rs (100%) rename src/components/{servo-gfx => gfx}/text/shaper.rs (100%) rename src/components/{servo-gfx => gfx}/text/shaping/harfbuzz.rs (100%) rename src/components/{servo-gfx => gfx}/text/shaping/mod.rs (100%) rename src/components/{servo-gfx => gfx}/text/text_run.rs (100%) rename src/components/{servo-gfx => gfx}/text/util.rs (100%) rename src/components/{servo => main}/compositing/mod.rs (100%) rename src/components/{servo => main}/compositing/resize_rate_limiter.rs (100%) rename src/components/{servo => main}/css/matching.rs (100%) rename src/components/{servo => main}/css/node_style.rs (100%) rename src/components/{servo => main}/css/node_util.rs (100%) rename src/components/{servo => main}/css/node_void_ptr.rs (100%) rename src/components/{servo => main}/css/select.rs (100%) rename src/components/{servo => main}/css/select_handler.rs (100%) rename src/components/{servo => main}/dom/bindings/clientrect.rs (100%) rename src/components/{servo => main}/dom/bindings/clientrectlist.rs (100%) rename src/components/{servo => main}/dom/bindings/codegen/BindingGen.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/BindingUtils.cpp (100%) rename src/components/{servo => main}/dom/bindings/codegen/BindingUtils.h (100%) rename src/components/{servo => main}/dom/bindings/codegen/Bindings.conf (100%) rename src/components/{servo => main}/dom/bindings/codegen/ClientRect.webidl (100%) rename src/components/{servo => main}/dom/bindings/codegen/ClientRectList.webidl (100%) rename src/components/{servo => main}/dom/bindings/codegen/Codegen.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/CodegenRust.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/Configuration.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/DOMJSClass.h (100%) rename src/components/{servo => main}/dom/bindings/codegen/DOMJSProxyHandler.cpp (100%) rename src/components/{servo => main}/dom/bindings/codegen/DOMJSProxyHandler.h (100%) rename src/components/{servo => main}/dom/bindings/codegen/DOMParser.webidl (100%) rename src/components/{servo => main}/dom/bindings/codegen/ErrorResult.h (100%) rename src/components/{servo => main}/dom/bindings/codegen/Errors.msg (100%) rename src/components/{servo => main}/dom/bindings/codegen/Event.webidl (100%) rename src/components/{servo => main}/dom/bindings/codegen/EventTarget.webidl (100%) rename src/components/{servo => main}/dom/bindings/codegen/GenerateCSS2PropertiesWebIDL.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/GlobalGen.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/HTMLCollection.webidl (100%) rename src/components/{servo => main}/dom/bindings/codegen/Makefile.in (100%) rename src/components/{servo => main}/dom/bindings/codegen/Nullable.h (100%) rename src/components/{servo => main}/dom/bindings/codegen/PrimitiveConversions.h (100%) rename src/components/{servo => main}/dom/bindings/codegen/RegisterBindings.cpp (100%) rename src/components/{servo => main}/dom/bindings/codegen/RegisterBindings.h (100%) rename src/components/{servo => main}/dom/bindings/codegen/TypedArray.h (100%) rename src/components/{servo => main}/dom/bindings/codegen/crashtests/769464.html (100%) rename src/components/{servo => main}/dom/bindings/codegen/crashtests/crashtests.list (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/README (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/UPSTREAM (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/WebIDL.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/runtests.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_any_null.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_argument_identifier_conflicts.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_argument_novoid.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_array_of_interface.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_arraybuffer.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_attr.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_attr_sequence_type.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_builtin_filename.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_builtins.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_callback.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_callback_interface.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_const.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_constructor.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_constructor_no_interface_object.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_deduplicate.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_dictionary.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_distinguishability.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_double_null.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_duplicate_qualifiers.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_empty_enum.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_enum.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_enum_duplicate_values.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_error_colno.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_error_lineno.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_extended_attributes.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_forward_decl.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_implements.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_incomplete_parent.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_incomplete_types.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_interface.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_interface_const_identifier_conflicts.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_interface_identifier_conflicts_across_members.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_method.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_nullable_equivalency.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_nullable_void.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_optional_constraints.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_overload.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_sanity.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_special_method_signature_mismatch.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_special_methods.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_special_methods_uniqueness.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_treatNonCallableAsNull.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_typedef.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_union.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_union_any.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_union_nullable.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_variadic_callback.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/parser/tests/test_variadic_constraints.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/ply/COPYING (100%) rename src/components/{servo => main}/dom/bindings/codegen/ply/README (100%) rename src/components/{servo => main}/dom/bindings/codegen/ply/ply/__init__.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/ply/ply/lex.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/ply/ply/yacc.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/pythonpath.py (100%) rename src/components/{servo => main}/dom/bindings/codegen/stubgenerator/Skeleton.cpp (100%) rename src/components/{servo => main}/dom/bindings/codegen/stubgenerator/Skeleton.h (100%) rename src/components/{servo => main}/dom/bindings/codegen/stubgenerator/generate.sh (100%) rename src/components/{servo => main}/dom/bindings/codegen/test/Makefile.in (100%) rename src/components/{servo => main}/dom/bindings/codegen/test/TestBindingHeader.h (100%) rename src/components/{servo => main}/dom/bindings/codegen/test/TestCodeGen.webidl (100%) rename src/components/{servo => main}/dom/bindings/codegen/test/TestDictionary.webidl (100%) rename src/components/{servo => main}/dom/bindings/codegen/test/TestTypedef.webidl (100%) rename src/components/{servo => main}/dom/bindings/codegen/test/file_bug775543.html (100%) rename src/components/{servo => main}/dom/bindings/codegen/test/forOf_iframe.html (100%) rename src/components/{servo => main}/dom/bindings/codegen/test/test_InstanceOf.html (100%) rename src/components/{servo => main}/dom/bindings/codegen/test/test_bug773326.html (100%) rename src/components/{servo => main}/dom/bindings/codegen/test/test_bug775543.html (100%) rename src/components/{servo => main}/dom/bindings/codegen/test/test_bug788369.html (100%) rename src/components/{servo => main}/dom/bindings/codegen/test/test_enums.html (100%) rename src/components/{servo => main}/dom/bindings/codegen/test/test_forOf.html (100%) rename src/components/{servo => main}/dom/bindings/codegen/test/test_integers.html (100%) rename src/components/{servo => main}/dom/bindings/codegen/test/test_interfaceToString.html (100%) rename src/components/{servo => main}/dom/bindings/codegen/test/test_lookupGetter.html (100%) rename src/components/{servo => main}/dom/bindings/codegen/test/test_sequence_wrapping.html (100%) rename src/components/{servo => main}/dom/bindings/codegen/test/test_traceProtos.html (100%) rename src/components/{servo => main}/dom/bindings/conversions.rs (100%) rename src/components/{servo => main}/dom/bindings/document.rs (100%) rename src/components/{servo => main}/dom/bindings/domparser.rs (100%) rename src/components/{servo => main}/dom/bindings/element.rs (100%) rename src/components/{servo => main}/dom/bindings/event.rs (100%) rename src/components/{servo => main}/dom/bindings/eventtarget.rs (100%) rename src/components/{servo => main}/dom/bindings/htmlcollection.rs (100%) rename src/components/{servo => main}/dom/bindings/node.rs (100%) rename src/components/{servo => main}/dom/bindings/proxyhandler.rs (100%) rename src/components/{servo => main}/dom/bindings/text.rs (100%) rename src/components/{servo => main}/dom/bindings/utils.rs (100%) rename src/components/{servo => main}/dom/bindings/window.rs (100%) rename src/components/{servo => main}/dom/characterdata.rs (100%) rename src/components/{servo => main}/dom/clientrect.rs (100%) rename src/components/{servo => main}/dom/clientrectlist.rs (100%) rename src/components/{servo => main}/dom/document.rs (100%) rename src/components/{servo => main}/dom/domparser.rs (100%) rename src/components/{servo => main}/dom/element.rs (100%) rename src/components/{servo => main}/dom/event.rs (100%) rename src/components/{servo => main}/dom/eventtarget.rs (100%) rename src/components/{servo => main}/dom/htmlcollection.rs (100%) rename src/components/{servo => main}/dom/node.rs (100%) rename src/components/{servo => main}/dom/window.rs (100%) rename src/components/{servo => main}/engine.rs (100%) rename src/components/{servo => main}/html/cssparse.rs (100%) rename src/components/{servo => main}/html/hubbub_html_parser.rs (100%) rename src/components/{servo => main}/image.rs (100%) rename src/components/{servo => main}/layout/aux.rs (100%) rename src/components/{servo => main}/layout/block.rs (100%) rename src/components/{servo => main}/layout/box.rs (100%) rename src/components/{servo => main}/layout/box_builder.rs (100%) rename src/components/{servo => main}/layout/context.rs (100%) rename src/components/{servo => main}/layout/debug.rs (100%) rename src/components/{servo => main}/layout/display_list_builder.rs (100%) rename src/components/{servo => main}/layout/flow.rs (100%) rename src/components/{servo => main}/layout/inline.rs (100%) rename src/components/{servo => main}/layout/layout_task.rs (100%) rename src/components/{servo => main}/layout/text.rs (100%) rename src/components/{servo => main}/macros.rs (100%) rename src/components/{servo => main}/platform/common/glut_windowing.rs (100%) rename src/components/{servo => main}/platform/common/shared_gl_windowing.rs (100%) rename src/components/{servo => main}/platform/mod.rs (100%) rename src/components/{servo => main}/scripting/script_task.rs (100%) rename src/components/{servo => main}/servo.rc (97%) rename src/components/{servo => main}/util/mod.rs (100%) rename src/components/{servo => main}/util/task.rs (100%) rename src/components/{servo => main}/windowing.rs (100%) rename src/components/{servo-net => net}/file_loader.rs (100%) rename src/components/{servo-net => net}/http_loader.rs (100%) rename src/components/{servo-net => net}/image/base.rs (100%) rename src/components/{servo-net => net}/image/holder.rs (100%) rename src/components/{servo-net => net}/image/test.jpeg (100%) rename src/components/{servo-net => net}/image_cache_task.rs (100%) rename src/components/{servo-net => net}/local_image_cache.rs (100%) rename src/components/{servo-net/servo_net.rc => net/net.rc} (93%) rename src/components/{servo-net => net}/resource_task.rs (100%) rename src/components/{servo-net => net}/util.rs (100%) rename src/components/{servo-util => util}/cache.rs (100%) rename src/components/{servo-util => util}/range.rs (100%) rename src/components/{servo-util => util}/time.rs (100%) rename src/components/{servo-util => util}/tree.rs (100%) rename src/components/{servo-util => util}/url.rs (100%) rename src/components/{servo-util/servo_util.rc => util/util.rc} (94%) rename src/components/{servo-util => util}/vec.rs (100%) diff --git a/Makefile.in b/Makefile.in index b4145a0186c..a025ec1ce30 100644 --- a/Makefile.in +++ b/Makefile.in @@ -171,35 +171,35 @@ $(eval $(call DEF_SUBMODULE_RULES,$(submodule)))) DONE_SUBMODULES = $(foreach submodule,$(SUBMODULES),$(DONE_$(submodule))) -RFLAGS_servo_util = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -SRC_servo_util = $(call rwildcard,$(S)src/components/servo-util/,*.rs) -CRATE_servo_util = $(S)src/components/servo-util/servo_util.rc -DONE_servo_util = $(B)src/components/servo-util/libservoutil.dummy +RFLAGS_util = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) +SRC_util = $(call rwildcard,$(S)src/components/util/,*.rs) +CRATE_util = $(S)src/components/util/util.rc +DONE_util = $(B)src/components/util/libutil.dummy -DEPS_servo_util = $(CRATE_servo_util) $(SRC_servo_util) $(DONE_SUBMODULES) +DEPS_util = $(CRATE_util) $(SRC_util) $(DONE_SUBMODULES) -RFLAGS_servo_net = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/servo-util -SRC_servo_net = $(call rwildcard,$(S)src/components/servo-net/,*.rs) -CRATE_servo_net = $(S)src/components/servo-net/servo_net.rc -DONE_servo_net = $(B)src/components/servo-net/libservonet.dummy +RFLAGS_net = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/util +SRC_net = $(call rwildcard,$(S)src/components/net/,*.rs) +CRATE_net = $(S)src/components/net/net.rc +DONE_net = $(B)src/components/net/libnet.dummy -DEPS_servo_net = $(CRATE_servo_net) $(SRC_servo_net) $(DONE_SUBMODULES) $(DONE_servo_util) +DEPS_net = $(CRATE_net) $(SRC_net) $(DONE_SUBMODULES) $(DONE_util) -RFLAGS_servo_gfx = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/servo-util -L $(B)src/components/servo-net -SRC_servo_gfx = $(call rwildcard,$(S)src/components/servo-gfx/,*.rs) -CRATE_servo_gfx = $(S)src/components/servo-gfx/servo_gfx.rc -DONE_servo_gfx = $(B)src/components/servo-gfx/libservogfx.dummy +RFLAGS_gfx = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/util -L $(B)src/components/net +SRC_gfx = $(call rwildcard,$(S)src/components/gfx/,*.rs) +CRATE_gfx = $(S)src/components/gfx/gfx.rc +DONE_gfx = $(B)src/components/gfx/libgfx.dummy -DEPS_servo_gfx = $(CRATE_servo_gfx) $(SRC_servo_gfx) $(DONE_SUBMODULES) $(DONE_servo_util) $(DONE_servo_net) +DEPS_gfx = $(CRATE_gfx) $(SRC_gfx) $(DONE_SUBMODULES) $(DONE_util) $(DONE_net) -RFLAGS_servo = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/servo-gfx -L $(B)src/components/servo-util -L $(B)src/components/servo-net +RFLAGS_servo = $(strip $(CFG_RUSTC_FLAGS)) $(addprefix -L $(B)src/,$(DEPS_SUBMODULES)) -L $(B)src/components/gfx -L $(B)src/components/util -L $(B)src/components/net -WEBIDL_servo = $(call rwildcard,$(S)src/components/servo/,*.webidl) +WEBIDL_servo = $(call rwildcard,$(S)src/components/main/,*.webidl) AUTOGEN_SRC_servo = $(patsubst %.webidl, %Binding.rs, $(WEBIDL_servo)) -SRC_servo = $(call rwildcard,$(S)src/components/servo/,*.rs) $(AUTOGEN_SRC_servo) -CRATE_servo = $(S)src/components/servo/servo.rc +SRC_servo = $(call rwildcard,$(S)src/components/main/,*.rs) $(AUTOGEN_SRC_servo) +CRATE_servo = $(S)src/components/main/servo.rc -DEPS_servo = $(CRATE_servo) $(SRC_servo) $(DONE_SUBMODULES) $(DONE_servo_util) $(DONE_servo_gfx) $(DONE_servo_net) +DEPS_servo = $(CRATE_servo) $(SRC_servo) $(DONE_SUBMODULES) $(DONE_util) $(DONE_gfx) $(DONE_net) # rules that depend on having correct meta-target vars (DEPS_CLEAN, DEPS_servo, etc) include $(S)mk/check.mk @@ -211,16 +211,16 @@ all: servo package # Servo helper libraries -$(DONE_servo_util): $(DEPS_servo_util) - $(RUSTC) $(RFLAGS_servo_util) -o $@ $< && touch $@ +$(DONE_util): $(DEPS_util) + $(RUSTC) $(RFLAGS_util) -o $@ $< && touch $@ -$(DONE_servo_net): $(DEPS_servo_net) - $(RUSTC) $(RFLAGS_servo_net) -o $@ $< && touch $@ +$(DONE_net): $(DEPS_net) + $(RUSTC) $(RFLAGS_net) -o $@ $< && touch $@ -$(DONE_servo_gfx): $(DEPS_servo_gfx) - $(RUSTC) $(RFLAGS_servo_gfx) -o $@ $< && touch $@ +$(DONE_gfx): $(DEPS_gfx) + $(RUSTC) $(RFLAGS_gfx) -o $@ $< && touch $@ -BINDINGS_SRC = $(S)/src/components/servo/dom/bindings/codegen +BINDINGS_SRC = $(S)/src/components/main/dom/bindings/codegen CACHE_DIR = $(BINDINGS_SRC)/_cache diff --git a/README.md b/README.md index 964c503e747..19d4d7f6460 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# The Servo Parallel Browser Project +zRThe Servo Parallel Browser Project Servo is a prototype web browser engine written in the [Rust](https://github.com/mozilla/rust) language. It is currently developed on 64bit OS X and 64bit Linux. @@ -36,7 +36,7 @@ cd servo mkdir -p build && cd build ../configure make && make check -./servo ../src/test/about-mozilla.html +./servo ../src/test/html/about-mozilla.html ``` [issue]: https://github.com/mxcl/homebrew/issues/5117 diff --git a/configure b/configure index 133bccc6882..90ed808c412 100755 --- a/configure +++ b/configure @@ -449,9 +449,10 @@ do make_dir ${CFG_BUILD_DIR}src/${i} done -make_dir ${CFG_BUILD_DIR}src/components/servo-util -make_dir ${CFG_BUILD_DIR}src/components/servo-net -make_dir ${CFG_BUILD_DIR}src/components/servo-gfx +make_dir ${CFG_BUILD_DIR}src/components/util +make_dir ${CFG_BUILD_DIR}src/components/net +make_dir ${CFG_BUILD_DIR}src/components/gfx +make_dir ${CFG_BUILD_DIR}src/components/main make_dir src/test/html/ref make_dir src/compiler/rust diff --git a/mk/clean.mk b/mk/clean.mk index f0de6be741d..ca7ec8a0a9c 100644 --- a/mk/clean.mk +++ b/mk/clean.mk @@ -25,14 +25,14 @@ clean-fast: $(DEPS_CLEAN_TARGETS_FAST) clean-servo $(Q)echo "Cleaning targets:" $(Q)echo "$(filter-out $(SLOW_BUILDS),$(DEPS_CLEAN_ALL))" -clean-servo-util: - cd $(B)/src/components/servo-util/ && rm -rf libservo_util*.dylib $(DONE_servo_util) +clean-util: + cd $(B)/src/components/util/ && rm -rf libservo_util*.dylib $(DONE_servo_util) -clean-servo-net: - cd $(B)/src/components/servo-net/ && rm -rf libservo_net*.dylib $(DONE_servo_net) +clean-net: + cd $(B)/src/components/net/ && rm -rf libservo_net*.dylib $(DONE_servo_net) -clean-servo-gfx: - cd $(B)/src/components/servo-gfx/ && rm -rf libservo_gfx*.dylib $(DONE_servo_gfx) +clean-gfx: + cd $(B)/src/components/gfx/ && rm -rf libservo_gfx*.dylib $(DONE_servo_gfx) -clean-servo: clean-servo-gfx clean-servo-util clean-servo-net +clean-servo: clean-gfx clean-util clean-net rm -f servo servo-test diff --git a/src/README.md b/src/README.md index e9b58181e65..fbdf3de6b42 100644 --- a/src/README.md +++ b/src/README.md @@ -3,12 +3,10 @@ crate or library. ## Servo components -* `components/contenttest`: JavaScript test runner. -* `components/reftest`: Reference (layout) test runner. -* `components/servo`: The top-level Servo crate. Contains compositing, DOM, layout, and script. -* `components/servo-gfx`: Graphics rendering, fonts, and text shaping. -* `components/servo-net`: Networking, caching, image decoding. -* `components/servo-util`: Various utility functions used by other Servo components. +* `components/gfx`: Graphics rendering, fonts, and text shaping. +* `components/main`: The top-level Servo crate. Contains compositing, DOM, layout, and script. +* `components/net`: Networking, caching, image decoding. +* `components/util`: Various utility functions used by other Servo components. ## The Rust compiler @@ -60,9 +58,14 @@ they are designed to be useful in other Rust projects. * `platform/macos/rust-core-text`: Bindings to Core Text. * `platform/macos/rust-io-surface`: Bindings to the `IOSurface` library. +## Tests + +* `test/harness/contenttest`: JavaScript test runner. +* `test/harness/reftest`: Reference (layout) test runner. +* `test/html`: Test cases. + ## Miscellaneous * `etc`: Various scripts and files that don't belong anywhere else. * `etc/patches`: Patches for upstream libraries. -* `test`: Test cases. diff --git a/src/components/servo-gfx/color.rs b/src/components/gfx/color.rs similarity index 100% rename from src/components/servo-gfx/color.rs rename to src/components/gfx/color.rs diff --git a/src/components/servo-gfx/compositor.rs b/src/components/gfx/compositor.rs similarity index 100% rename from src/components/servo-gfx/compositor.rs rename to src/components/gfx/compositor.rs diff --git a/src/components/servo-gfx/display_list.rs b/src/components/gfx/display_list.rs similarity index 100% rename from src/components/servo-gfx/display_list.rs rename to src/components/gfx/display_list.rs diff --git a/src/components/servo-gfx/font.rs b/src/components/gfx/font.rs similarity index 100% rename from src/components/servo-gfx/font.rs rename to src/components/gfx/font.rs diff --git a/src/components/servo-gfx/font_context.rs b/src/components/gfx/font_context.rs similarity index 100% rename from src/components/servo-gfx/font_context.rs rename to src/components/gfx/font_context.rs diff --git a/src/components/servo-gfx/font_list.rs b/src/components/gfx/font_list.rs similarity index 100% rename from src/components/servo-gfx/font_list.rs rename to src/components/gfx/font_list.rs diff --git a/src/components/servo-gfx/freetype_impl/font_context.rs b/src/components/gfx/freetype_impl/font_context.rs similarity index 100% rename from src/components/servo-gfx/freetype_impl/font_context.rs rename to src/components/gfx/freetype_impl/font_context.rs diff --git a/src/components/servo-gfx/geometry.rs b/src/components/gfx/geometry.rs similarity index 100% rename from src/components/servo-gfx/geometry.rs rename to src/components/gfx/geometry.rs diff --git a/src/components/servo-gfx/servo_gfx.rc b/src/components/gfx/gfx.rc similarity index 93% rename from src/components/servo-gfx/servo_gfx.rc rename to src/components/gfx/gfx.rc index f785e0fc877..eae2328152a 100644 --- a/src/components/servo-gfx/servo_gfx.rc +++ b/src/components/gfx/gfx.rc @@ -2,7 +2,7 @@ * 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/. */ -#[link(name = "servo_gfx", +#[link(name = "gfx", vers = "0.1", uuid = "0106bb54-6ea9-45bf-a39e-a738621f15e5", url = "http://servo.org/")]; @@ -13,8 +13,8 @@ extern mod geom; extern mod http_client; extern mod stb_image; extern mod std; -extern mod servo_net; -extern mod servo_util (name = "servo_util"); +extern mod servo_net (name = "net"); +extern mod servo_util (name = "util"); // Eventually we would like the shaper to be pluggable, as many operating systems have their own // shapers. For now, however, this is a hard dependency. diff --git a/src/components/servo-gfx/native.rs b/src/components/gfx/native.rs similarity index 100% rename from src/components/servo-gfx/native.rs rename to src/components/gfx/native.rs diff --git a/src/components/servo-gfx/opts.rs b/src/components/gfx/opts.rs similarity index 100% rename from src/components/servo-gfx/opts.rs rename to src/components/gfx/opts.rs diff --git a/src/components/servo-gfx/platform/linux/font.rs b/src/components/gfx/platform/linux/font.rs similarity index 100% rename from src/components/servo-gfx/platform/linux/font.rs rename to src/components/gfx/platform/linux/font.rs diff --git a/src/components/servo-gfx/platform/linux/font_context.rs b/src/components/gfx/platform/linux/font_context.rs similarity index 100% rename from src/components/servo-gfx/platform/linux/font_context.rs rename to src/components/gfx/platform/linux/font_context.rs diff --git a/src/components/servo-gfx/platform/linux/font_list.rs b/src/components/gfx/platform/linux/font_list.rs similarity index 100% rename from src/components/servo-gfx/platform/linux/font_list.rs rename to src/components/gfx/platform/linux/font_list.rs diff --git a/src/components/servo-gfx/platform/macos/font.rs b/src/components/gfx/platform/macos/font.rs similarity index 100% rename from src/components/servo-gfx/platform/macos/font.rs rename to src/components/gfx/platform/macos/font.rs diff --git a/src/components/servo-gfx/platform/macos/font_context.rs b/src/components/gfx/platform/macos/font_context.rs similarity index 100% rename from src/components/servo-gfx/platform/macos/font_context.rs rename to src/components/gfx/platform/macos/font_context.rs diff --git a/src/components/servo-gfx/platform/macos/font_list.rs b/src/components/gfx/platform/macos/font_list.rs similarity index 100% rename from src/components/servo-gfx/platform/macos/font_list.rs rename to src/components/gfx/platform/macos/font_list.rs diff --git a/src/components/servo-gfx/platform/mod.rs b/src/components/gfx/platform/mod.rs similarity index 100% rename from src/components/servo-gfx/platform/mod.rs rename to src/components/gfx/platform/mod.rs diff --git a/src/components/servo-gfx/render_context.rs b/src/components/gfx/render_context.rs similarity index 100% rename from src/components/servo-gfx/render_context.rs rename to src/components/gfx/render_context.rs diff --git a/src/components/servo-gfx/render_layers.rs b/src/components/gfx/render_layers.rs similarity index 100% rename from src/components/servo-gfx/render_layers.rs rename to src/components/gfx/render_layers.rs diff --git a/src/components/servo-gfx/render_task.rs b/src/components/gfx/render_task.rs similarity index 100% rename from src/components/servo-gfx/render_task.rs rename to src/components/gfx/render_task.rs diff --git a/src/components/servo-gfx/surface.rs b/src/components/gfx/surface.rs similarity index 100% rename from src/components/servo-gfx/surface.rs rename to src/components/gfx/surface.rs diff --git a/src/components/servo-gfx/text/glyph.rs b/src/components/gfx/text/glyph.rs similarity index 100% rename from src/components/servo-gfx/text/glyph.rs rename to src/components/gfx/text/glyph.rs diff --git a/src/components/servo-gfx/text/mod.rs b/src/components/gfx/text/mod.rs similarity index 100% rename from src/components/servo-gfx/text/mod.rs rename to src/components/gfx/text/mod.rs diff --git a/src/components/servo-gfx/text/shaper.rs b/src/components/gfx/text/shaper.rs similarity index 100% rename from src/components/servo-gfx/text/shaper.rs rename to src/components/gfx/text/shaper.rs diff --git a/src/components/servo-gfx/text/shaping/harfbuzz.rs b/src/components/gfx/text/shaping/harfbuzz.rs similarity index 100% rename from src/components/servo-gfx/text/shaping/harfbuzz.rs rename to src/components/gfx/text/shaping/harfbuzz.rs diff --git a/src/components/servo-gfx/text/shaping/mod.rs b/src/components/gfx/text/shaping/mod.rs similarity index 100% rename from src/components/servo-gfx/text/shaping/mod.rs rename to src/components/gfx/text/shaping/mod.rs diff --git a/src/components/servo-gfx/text/text_run.rs b/src/components/gfx/text/text_run.rs similarity index 100% rename from src/components/servo-gfx/text/text_run.rs rename to src/components/gfx/text/text_run.rs diff --git a/src/components/servo-gfx/text/util.rs b/src/components/gfx/text/util.rs similarity index 100% rename from src/components/servo-gfx/text/util.rs rename to src/components/gfx/text/util.rs diff --git a/src/components/servo/compositing/mod.rs b/src/components/main/compositing/mod.rs similarity index 100% rename from src/components/servo/compositing/mod.rs rename to src/components/main/compositing/mod.rs diff --git a/src/components/servo/compositing/resize_rate_limiter.rs b/src/components/main/compositing/resize_rate_limiter.rs similarity index 100% rename from src/components/servo/compositing/resize_rate_limiter.rs rename to src/components/main/compositing/resize_rate_limiter.rs diff --git a/src/components/servo/css/matching.rs b/src/components/main/css/matching.rs similarity index 100% rename from src/components/servo/css/matching.rs rename to src/components/main/css/matching.rs diff --git a/src/components/servo/css/node_style.rs b/src/components/main/css/node_style.rs similarity index 100% rename from src/components/servo/css/node_style.rs rename to src/components/main/css/node_style.rs diff --git a/src/components/servo/css/node_util.rs b/src/components/main/css/node_util.rs similarity index 100% rename from src/components/servo/css/node_util.rs rename to src/components/main/css/node_util.rs diff --git a/src/components/servo/css/node_void_ptr.rs b/src/components/main/css/node_void_ptr.rs similarity index 100% rename from src/components/servo/css/node_void_ptr.rs rename to src/components/main/css/node_void_ptr.rs diff --git a/src/components/servo/css/select.rs b/src/components/main/css/select.rs similarity index 100% rename from src/components/servo/css/select.rs rename to src/components/main/css/select.rs diff --git a/src/components/servo/css/select_handler.rs b/src/components/main/css/select_handler.rs similarity index 100% rename from src/components/servo/css/select_handler.rs rename to src/components/main/css/select_handler.rs diff --git a/src/components/servo/dom/bindings/clientrect.rs b/src/components/main/dom/bindings/clientrect.rs similarity index 100% rename from src/components/servo/dom/bindings/clientrect.rs rename to src/components/main/dom/bindings/clientrect.rs diff --git a/src/components/servo/dom/bindings/clientrectlist.rs b/src/components/main/dom/bindings/clientrectlist.rs similarity index 100% rename from src/components/servo/dom/bindings/clientrectlist.rs rename to src/components/main/dom/bindings/clientrectlist.rs diff --git a/src/components/servo/dom/bindings/codegen/BindingGen.py b/src/components/main/dom/bindings/codegen/BindingGen.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/BindingGen.py rename to src/components/main/dom/bindings/codegen/BindingGen.py diff --git a/src/components/servo/dom/bindings/codegen/BindingUtils.cpp b/src/components/main/dom/bindings/codegen/BindingUtils.cpp similarity index 100% rename from src/components/servo/dom/bindings/codegen/BindingUtils.cpp rename to src/components/main/dom/bindings/codegen/BindingUtils.cpp diff --git a/src/components/servo/dom/bindings/codegen/BindingUtils.h b/src/components/main/dom/bindings/codegen/BindingUtils.h similarity index 100% rename from src/components/servo/dom/bindings/codegen/BindingUtils.h rename to src/components/main/dom/bindings/codegen/BindingUtils.h diff --git a/src/components/servo/dom/bindings/codegen/Bindings.conf b/src/components/main/dom/bindings/codegen/Bindings.conf similarity index 100% rename from src/components/servo/dom/bindings/codegen/Bindings.conf rename to src/components/main/dom/bindings/codegen/Bindings.conf diff --git a/src/components/servo/dom/bindings/codegen/ClientRect.webidl b/src/components/main/dom/bindings/codegen/ClientRect.webidl similarity index 100% rename from src/components/servo/dom/bindings/codegen/ClientRect.webidl rename to src/components/main/dom/bindings/codegen/ClientRect.webidl diff --git a/src/components/servo/dom/bindings/codegen/ClientRectList.webidl b/src/components/main/dom/bindings/codegen/ClientRectList.webidl similarity index 100% rename from src/components/servo/dom/bindings/codegen/ClientRectList.webidl rename to src/components/main/dom/bindings/codegen/ClientRectList.webidl diff --git a/src/components/servo/dom/bindings/codegen/Codegen.py b/src/components/main/dom/bindings/codegen/Codegen.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/Codegen.py rename to src/components/main/dom/bindings/codegen/Codegen.py diff --git a/src/components/servo/dom/bindings/codegen/CodegenRust.py b/src/components/main/dom/bindings/codegen/CodegenRust.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/CodegenRust.py rename to src/components/main/dom/bindings/codegen/CodegenRust.py diff --git a/src/components/servo/dom/bindings/codegen/Configuration.py b/src/components/main/dom/bindings/codegen/Configuration.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/Configuration.py rename to src/components/main/dom/bindings/codegen/Configuration.py diff --git a/src/components/servo/dom/bindings/codegen/DOMJSClass.h b/src/components/main/dom/bindings/codegen/DOMJSClass.h similarity index 100% rename from src/components/servo/dom/bindings/codegen/DOMJSClass.h rename to src/components/main/dom/bindings/codegen/DOMJSClass.h diff --git a/src/components/servo/dom/bindings/codegen/DOMJSProxyHandler.cpp b/src/components/main/dom/bindings/codegen/DOMJSProxyHandler.cpp similarity index 100% rename from src/components/servo/dom/bindings/codegen/DOMJSProxyHandler.cpp rename to src/components/main/dom/bindings/codegen/DOMJSProxyHandler.cpp diff --git a/src/components/servo/dom/bindings/codegen/DOMJSProxyHandler.h b/src/components/main/dom/bindings/codegen/DOMJSProxyHandler.h similarity index 100% rename from src/components/servo/dom/bindings/codegen/DOMJSProxyHandler.h rename to src/components/main/dom/bindings/codegen/DOMJSProxyHandler.h diff --git a/src/components/servo/dom/bindings/codegen/DOMParser.webidl b/src/components/main/dom/bindings/codegen/DOMParser.webidl similarity index 100% rename from src/components/servo/dom/bindings/codegen/DOMParser.webidl rename to src/components/main/dom/bindings/codegen/DOMParser.webidl diff --git a/src/components/servo/dom/bindings/codegen/ErrorResult.h b/src/components/main/dom/bindings/codegen/ErrorResult.h similarity index 100% rename from src/components/servo/dom/bindings/codegen/ErrorResult.h rename to src/components/main/dom/bindings/codegen/ErrorResult.h diff --git a/src/components/servo/dom/bindings/codegen/Errors.msg b/src/components/main/dom/bindings/codegen/Errors.msg similarity index 100% rename from src/components/servo/dom/bindings/codegen/Errors.msg rename to src/components/main/dom/bindings/codegen/Errors.msg diff --git a/src/components/servo/dom/bindings/codegen/Event.webidl b/src/components/main/dom/bindings/codegen/Event.webidl similarity index 100% rename from src/components/servo/dom/bindings/codegen/Event.webidl rename to src/components/main/dom/bindings/codegen/Event.webidl diff --git a/src/components/servo/dom/bindings/codegen/EventTarget.webidl b/src/components/main/dom/bindings/codegen/EventTarget.webidl similarity index 100% rename from src/components/servo/dom/bindings/codegen/EventTarget.webidl rename to src/components/main/dom/bindings/codegen/EventTarget.webidl diff --git a/src/components/servo/dom/bindings/codegen/GenerateCSS2PropertiesWebIDL.py b/src/components/main/dom/bindings/codegen/GenerateCSS2PropertiesWebIDL.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/GenerateCSS2PropertiesWebIDL.py rename to src/components/main/dom/bindings/codegen/GenerateCSS2PropertiesWebIDL.py diff --git a/src/components/servo/dom/bindings/codegen/GlobalGen.py b/src/components/main/dom/bindings/codegen/GlobalGen.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/GlobalGen.py rename to src/components/main/dom/bindings/codegen/GlobalGen.py diff --git a/src/components/servo/dom/bindings/codegen/HTMLCollection.webidl b/src/components/main/dom/bindings/codegen/HTMLCollection.webidl similarity index 100% rename from src/components/servo/dom/bindings/codegen/HTMLCollection.webidl rename to src/components/main/dom/bindings/codegen/HTMLCollection.webidl diff --git a/src/components/servo/dom/bindings/codegen/Makefile.in b/src/components/main/dom/bindings/codegen/Makefile.in similarity index 100% rename from src/components/servo/dom/bindings/codegen/Makefile.in rename to src/components/main/dom/bindings/codegen/Makefile.in diff --git a/src/components/servo/dom/bindings/codegen/Nullable.h b/src/components/main/dom/bindings/codegen/Nullable.h similarity index 100% rename from src/components/servo/dom/bindings/codegen/Nullable.h rename to src/components/main/dom/bindings/codegen/Nullable.h diff --git a/src/components/servo/dom/bindings/codegen/PrimitiveConversions.h b/src/components/main/dom/bindings/codegen/PrimitiveConversions.h similarity index 100% rename from src/components/servo/dom/bindings/codegen/PrimitiveConversions.h rename to src/components/main/dom/bindings/codegen/PrimitiveConversions.h diff --git a/src/components/servo/dom/bindings/codegen/RegisterBindings.cpp b/src/components/main/dom/bindings/codegen/RegisterBindings.cpp similarity index 100% rename from src/components/servo/dom/bindings/codegen/RegisterBindings.cpp rename to src/components/main/dom/bindings/codegen/RegisterBindings.cpp diff --git a/src/components/servo/dom/bindings/codegen/RegisterBindings.h b/src/components/main/dom/bindings/codegen/RegisterBindings.h similarity index 100% rename from src/components/servo/dom/bindings/codegen/RegisterBindings.h rename to src/components/main/dom/bindings/codegen/RegisterBindings.h diff --git a/src/components/servo/dom/bindings/codegen/TypedArray.h b/src/components/main/dom/bindings/codegen/TypedArray.h similarity index 100% rename from src/components/servo/dom/bindings/codegen/TypedArray.h rename to src/components/main/dom/bindings/codegen/TypedArray.h diff --git a/src/components/servo/dom/bindings/codegen/crashtests/769464.html b/src/components/main/dom/bindings/codegen/crashtests/769464.html similarity index 100% rename from src/components/servo/dom/bindings/codegen/crashtests/769464.html rename to src/components/main/dom/bindings/codegen/crashtests/769464.html diff --git a/src/components/servo/dom/bindings/codegen/crashtests/crashtests.list b/src/components/main/dom/bindings/codegen/crashtests/crashtests.list similarity index 100% rename from src/components/servo/dom/bindings/codegen/crashtests/crashtests.list rename to src/components/main/dom/bindings/codegen/crashtests/crashtests.list diff --git a/src/components/servo/dom/bindings/codegen/parser/README b/src/components/main/dom/bindings/codegen/parser/README similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/README rename to src/components/main/dom/bindings/codegen/parser/README diff --git a/src/components/servo/dom/bindings/codegen/parser/UPSTREAM b/src/components/main/dom/bindings/codegen/parser/UPSTREAM similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/UPSTREAM rename to src/components/main/dom/bindings/codegen/parser/UPSTREAM diff --git a/src/components/servo/dom/bindings/codegen/parser/WebIDL.py b/src/components/main/dom/bindings/codegen/parser/WebIDL.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/WebIDL.py rename to src/components/main/dom/bindings/codegen/parser/WebIDL.py diff --git a/src/components/servo/dom/bindings/codegen/parser/runtests.py b/src/components/main/dom/bindings/codegen/parser/runtests.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/runtests.py rename to src/components/main/dom/bindings/codegen/parser/runtests.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_any_null.py b/src/components/main/dom/bindings/codegen/parser/tests/test_any_null.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_any_null.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_any_null.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_argument_identifier_conflicts.py b/src/components/main/dom/bindings/codegen/parser/tests/test_argument_identifier_conflicts.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_argument_identifier_conflicts.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_argument_identifier_conflicts.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_argument_novoid.py b/src/components/main/dom/bindings/codegen/parser/tests/test_argument_novoid.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_argument_novoid.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_argument_novoid.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_array_of_interface.py b/src/components/main/dom/bindings/codegen/parser/tests/test_array_of_interface.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_array_of_interface.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_array_of_interface.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_arraybuffer.py b/src/components/main/dom/bindings/codegen/parser/tests/test_arraybuffer.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_arraybuffer.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_arraybuffer.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_attr.py b/src/components/main/dom/bindings/codegen/parser/tests/test_attr.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_attr.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_attr.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_attr_sequence_type.py b/src/components/main/dom/bindings/codegen/parser/tests/test_attr_sequence_type.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_attr_sequence_type.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_attr_sequence_type.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_builtin_filename.py b/src/components/main/dom/bindings/codegen/parser/tests/test_builtin_filename.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_builtin_filename.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_builtin_filename.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_builtins.py b/src/components/main/dom/bindings/codegen/parser/tests/test_builtins.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_builtins.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_builtins.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_callback.py b/src/components/main/dom/bindings/codegen/parser/tests/test_callback.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_callback.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_callback.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_callback_interface.py b/src/components/main/dom/bindings/codegen/parser/tests/test_callback_interface.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_callback_interface.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_callback_interface.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_const.py b/src/components/main/dom/bindings/codegen/parser/tests/test_const.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_const.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_const.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_constructor.py b/src/components/main/dom/bindings/codegen/parser/tests/test_constructor.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_constructor.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_constructor.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_constructor_no_interface_object.py b/src/components/main/dom/bindings/codegen/parser/tests/test_constructor_no_interface_object.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_constructor_no_interface_object.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_constructor_no_interface_object.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_deduplicate.py b/src/components/main/dom/bindings/codegen/parser/tests/test_deduplicate.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_deduplicate.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_deduplicate.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_dictionary.py b/src/components/main/dom/bindings/codegen/parser/tests/test_dictionary.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_dictionary.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_dictionary.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_distinguishability.py b/src/components/main/dom/bindings/codegen/parser/tests/test_distinguishability.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_distinguishability.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_distinguishability.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_double_null.py b/src/components/main/dom/bindings/codegen/parser/tests/test_double_null.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_double_null.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_double_null.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_duplicate_qualifiers.py b/src/components/main/dom/bindings/codegen/parser/tests/test_duplicate_qualifiers.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_duplicate_qualifiers.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_duplicate_qualifiers.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_empty_enum.py b/src/components/main/dom/bindings/codegen/parser/tests/test_empty_enum.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_empty_enum.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_empty_enum.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_enum.py b/src/components/main/dom/bindings/codegen/parser/tests/test_enum.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_enum.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_enum.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_enum_duplicate_values.py b/src/components/main/dom/bindings/codegen/parser/tests/test_enum_duplicate_values.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_enum_duplicate_values.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_enum_duplicate_values.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_error_colno.py b/src/components/main/dom/bindings/codegen/parser/tests/test_error_colno.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_error_colno.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_error_colno.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_error_lineno.py b/src/components/main/dom/bindings/codegen/parser/tests/test_error_lineno.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_error_lineno.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_error_lineno.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_extended_attributes.py b/src/components/main/dom/bindings/codegen/parser/tests/test_extended_attributes.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_extended_attributes.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_extended_attributes.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_forward_decl.py b/src/components/main/dom/bindings/codegen/parser/tests/test_forward_decl.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_forward_decl.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_forward_decl.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_implements.py b/src/components/main/dom/bindings/codegen/parser/tests/test_implements.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_implements.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_implements.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_incomplete_parent.py b/src/components/main/dom/bindings/codegen/parser/tests/test_incomplete_parent.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_incomplete_parent.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_incomplete_parent.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_incomplete_types.py b/src/components/main/dom/bindings/codegen/parser/tests/test_incomplete_types.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_incomplete_types.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_incomplete_types.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_interface.py b/src/components/main/dom/bindings/codegen/parser/tests/test_interface.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_interface.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_interface.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_interface_const_identifier_conflicts.py b/src/components/main/dom/bindings/codegen/parser/tests/test_interface_const_identifier_conflicts.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_interface_const_identifier_conflicts.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_interface_const_identifier_conflicts.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_interface_identifier_conflicts_across_members.py b/src/components/main/dom/bindings/codegen/parser/tests/test_interface_identifier_conflicts_across_members.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_interface_identifier_conflicts_across_members.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_interface_identifier_conflicts_across_members.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_method.py b/src/components/main/dom/bindings/codegen/parser/tests/test_method.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_method.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_method.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_nullable_equivalency.py b/src/components/main/dom/bindings/codegen/parser/tests/test_nullable_equivalency.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_nullable_equivalency.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_nullable_equivalency.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_nullable_void.py b/src/components/main/dom/bindings/codegen/parser/tests/test_nullable_void.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_nullable_void.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_nullable_void.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_optional_constraints.py b/src/components/main/dom/bindings/codegen/parser/tests/test_optional_constraints.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_optional_constraints.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_optional_constraints.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_overload.py b/src/components/main/dom/bindings/codegen/parser/tests/test_overload.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_overload.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_overload.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_sanity.py b/src/components/main/dom/bindings/codegen/parser/tests/test_sanity.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_sanity.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_sanity.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_special_method_signature_mismatch.py b/src/components/main/dom/bindings/codegen/parser/tests/test_special_method_signature_mismatch.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_special_method_signature_mismatch.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_special_method_signature_mismatch.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_special_methods.py b/src/components/main/dom/bindings/codegen/parser/tests/test_special_methods.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_special_methods.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_special_methods.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_special_methods_uniqueness.py b/src/components/main/dom/bindings/codegen/parser/tests/test_special_methods_uniqueness.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_special_methods_uniqueness.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_special_methods_uniqueness.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_treatNonCallableAsNull.py b/src/components/main/dom/bindings/codegen/parser/tests/test_treatNonCallableAsNull.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_treatNonCallableAsNull.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_treatNonCallableAsNull.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_typedef.py b/src/components/main/dom/bindings/codegen/parser/tests/test_typedef.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_typedef.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_typedef.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_union.py b/src/components/main/dom/bindings/codegen/parser/tests/test_union.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_union.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_union.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_union_any.py b/src/components/main/dom/bindings/codegen/parser/tests/test_union_any.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_union_any.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_union_any.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_union_nullable.py b/src/components/main/dom/bindings/codegen/parser/tests/test_union_nullable.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_union_nullable.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_union_nullable.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_variadic_callback.py b/src/components/main/dom/bindings/codegen/parser/tests/test_variadic_callback.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_variadic_callback.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_variadic_callback.py diff --git a/src/components/servo/dom/bindings/codegen/parser/tests/test_variadic_constraints.py b/src/components/main/dom/bindings/codegen/parser/tests/test_variadic_constraints.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/parser/tests/test_variadic_constraints.py rename to src/components/main/dom/bindings/codegen/parser/tests/test_variadic_constraints.py diff --git a/src/components/servo/dom/bindings/codegen/ply/COPYING b/src/components/main/dom/bindings/codegen/ply/COPYING similarity index 100% rename from src/components/servo/dom/bindings/codegen/ply/COPYING rename to src/components/main/dom/bindings/codegen/ply/COPYING diff --git a/src/components/servo/dom/bindings/codegen/ply/README b/src/components/main/dom/bindings/codegen/ply/README similarity index 100% rename from src/components/servo/dom/bindings/codegen/ply/README rename to src/components/main/dom/bindings/codegen/ply/README diff --git a/src/components/servo/dom/bindings/codegen/ply/ply/__init__.py b/src/components/main/dom/bindings/codegen/ply/ply/__init__.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/ply/ply/__init__.py rename to src/components/main/dom/bindings/codegen/ply/ply/__init__.py diff --git a/src/components/servo/dom/bindings/codegen/ply/ply/lex.py b/src/components/main/dom/bindings/codegen/ply/ply/lex.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/ply/ply/lex.py rename to src/components/main/dom/bindings/codegen/ply/ply/lex.py diff --git a/src/components/servo/dom/bindings/codegen/ply/ply/yacc.py b/src/components/main/dom/bindings/codegen/ply/ply/yacc.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/ply/ply/yacc.py rename to src/components/main/dom/bindings/codegen/ply/ply/yacc.py diff --git a/src/components/servo/dom/bindings/codegen/pythonpath.py b/src/components/main/dom/bindings/codegen/pythonpath.py similarity index 100% rename from src/components/servo/dom/bindings/codegen/pythonpath.py rename to src/components/main/dom/bindings/codegen/pythonpath.py diff --git a/src/components/servo/dom/bindings/codegen/stubgenerator/Skeleton.cpp b/src/components/main/dom/bindings/codegen/stubgenerator/Skeleton.cpp similarity index 100% rename from src/components/servo/dom/bindings/codegen/stubgenerator/Skeleton.cpp rename to src/components/main/dom/bindings/codegen/stubgenerator/Skeleton.cpp diff --git a/src/components/servo/dom/bindings/codegen/stubgenerator/Skeleton.h b/src/components/main/dom/bindings/codegen/stubgenerator/Skeleton.h similarity index 100% rename from src/components/servo/dom/bindings/codegen/stubgenerator/Skeleton.h rename to src/components/main/dom/bindings/codegen/stubgenerator/Skeleton.h diff --git a/src/components/servo/dom/bindings/codegen/stubgenerator/generate.sh b/src/components/main/dom/bindings/codegen/stubgenerator/generate.sh similarity index 100% rename from src/components/servo/dom/bindings/codegen/stubgenerator/generate.sh rename to src/components/main/dom/bindings/codegen/stubgenerator/generate.sh diff --git a/src/components/servo/dom/bindings/codegen/test/Makefile.in b/src/components/main/dom/bindings/codegen/test/Makefile.in similarity index 100% rename from src/components/servo/dom/bindings/codegen/test/Makefile.in rename to src/components/main/dom/bindings/codegen/test/Makefile.in diff --git a/src/components/servo/dom/bindings/codegen/test/TestBindingHeader.h b/src/components/main/dom/bindings/codegen/test/TestBindingHeader.h similarity index 100% rename from src/components/servo/dom/bindings/codegen/test/TestBindingHeader.h rename to src/components/main/dom/bindings/codegen/test/TestBindingHeader.h diff --git a/src/components/servo/dom/bindings/codegen/test/TestCodeGen.webidl b/src/components/main/dom/bindings/codegen/test/TestCodeGen.webidl similarity index 100% rename from src/components/servo/dom/bindings/codegen/test/TestCodeGen.webidl rename to src/components/main/dom/bindings/codegen/test/TestCodeGen.webidl diff --git a/src/components/servo/dom/bindings/codegen/test/TestDictionary.webidl b/src/components/main/dom/bindings/codegen/test/TestDictionary.webidl similarity index 100% rename from src/components/servo/dom/bindings/codegen/test/TestDictionary.webidl rename to src/components/main/dom/bindings/codegen/test/TestDictionary.webidl diff --git a/src/components/servo/dom/bindings/codegen/test/TestTypedef.webidl b/src/components/main/dom/bindings/codegen/test/TestTypedef.webidl similarity index 100% rename from src/components/servo/dom/bindings/codegen/test/TestTypedef.webidl rename to src/components/main/dom/bindings/codegen/test/TestTypedef.webidl diff --git a/src/components/servo/dom/bindings/codegen/test/file_bug775543.html b/src/components/main/dom/bindings/codegen/test/file_bug775543.html similarity index 100% rename from src/components/servo/dom/bindings/codegen/test/file_bug775543.html rename to src/components/main/dom/bindings/codegen/test/file_bug775543.html diff --git a/src/components/servo/dom/bindings/codegen/test/forOf_iframe.html b/src/components/main/dom/bindings/codegen/test/forOf_iframe.html similarity index 100% rename from src/components/servo/dom/bindings/codegen/test/forOf_iframe.html rename to src/components/main/dom/bindings/codegen/test/forOf_iframe.html diff --git a/src/components/servo/dom/bindings/codegen/test/test_InstanceOf.html b/src/components/main/dom/bindings/codegen/test/test_InstanceOf.html similarity index 100% rename from src/components/servo/dom/bindings/codegen/test/test_InstanceOf.html rename to src/components/main/dom/bindings/codegen/test/test_InstanceOf.html diff --git a/src/components/servo/dom/bindings/codegen/test/test_bug773326.html b/src/components/main/dom/bindings/codegen/test/test_bug773326.html similarity index 100% rename from src/components/servo/dom/bindings/codegen/test/test_bug773326.html rename to src/components/main/dom/bindings/codegen/test/test_bug773326.html diff --git a/src/components/servo/dom/bindings/codegen/test/test_bug775543.html b/src/components/main/dom/bindings/codegen/test/test_bug775543.html similarity index 100% rename from src/components/servo/dom/bindings/codegen/test/test_bug775543.html rename to src/components/main/dom/bindings/codegen/test/test_bug775543.html diff --git a/src/components/servo/dom/bindings/codegen/test/test_bug788369.html b/src/components/main/dom/bindings/codegen/test/test_bug788369.html similarity index 100% rename from src/components/servo/dom/bindings/codegen/test/test_bug788369.html rename to src/components/main/dom/bindings/codegen/test/test_bug788369.html diff --git a/src/components/servo/dom/bindings/codegen/test/test_enums.html b/src/components/main/dom/bindings/codegen/test/test_enums.html similarity index 100% rename from src/components/servo/dom/bindings/codegen/test/test_enums.html rename to src/components/main/dom/bindings/codegen/test/test_enums.html diff --git a/src/components/servo/dom/bindings/codegen/test/test_forOf.html b/src/components/main/dom/bindings/codegen/test/test_forOf.html similarity index 100% rename from src/components/servo/dom/bindings/codegen/test/test_forOf.html rename to src/components/main/dom/bindings/codegen/test/test_forOf.html diff --git a/src/components/servo/dom/bindings/codegen/test/test_integers.html b/src/components/main/dom/bindings/codegen/test/test_integers.html similarity index 100% rename from src/components/servo/dom/bindings/codegen/test/test_integers.html rename to src/components/main/dom/bindings/codegen/test/test_integers.html diff --git a/src/components/servo/dom/bindings/codegen/test/test_interfaceToString.html b/src/components/main/dom/bindings/codegen/test/test_interfaceToString.html similarity index 100% rename from src/components/servo/dom/bindings/codegen/test/test_interfaceToString.html rename to src/components/main/dom/bindings/codegen/test/test_interfaceToString.html diff --git a/src/components/servo/dom/bindings/codegen/test/test_lookupGetter.html b/src/components/main/dom/bindings/codegen/test/test_lookupGetter.html similarity index 100% rename from src/components/servo/dom/bindings/codegen/test/test_lookupGetter.html rename to src/components/main/dom/bindings/codegen/test/test_lookupGetter.html diff --git a/src/components/servo/dom/bindings/codegen/test/test_sequence_wrapping.html b/src/components/main/dom/bindings/codegen/test/test_sequence_wrapping.html similarity index 100% rename from src/components/servo/dom/bindings/codegen/test/test_sequence_wrapping.html rename to src/components/main/dom/bindings/codegen/test/test_sequence_wrapping.html diff --git a/src/components/servo/dom/bindings/codegen/test/test_traceProtos.html b/src/components/main/dom/bindings/codegen/test/test_traceProtos.html similarity index 100% rename from src/components/servo/dom/bindings/codegen/test/test_traceProtos.html rename to src/components/main/dom/bindings/codegen/test/test_traceProtos.html diff --git a/src/components/servo/dom/bindings/conversions.rs b/src/components/main/dom/bindings/conversions.rs similarity index 100% rename from src/components/servo/dom/bindings/conversions.rs rename to src/components/main/dom/bindings/conversions.rs diff --git a/src/components/servo/dom/bindings/document.rs b/src/components/main/dom/bindings/document.rs similarity index 100% rename from src/components/servo/dom/bindings/document.rs rename to src/components/main/dom/bindings/document.rs diff --git a/src/components/servo/dom/bindings/domparser.rs b/src/components/main/dom/bindings/domparser.rs similarity index 100% rename from src/components/servo/dom/bindings/domparser.rs rename to src/components/main/dom/bindings/domparser.rs diff --git a/src/components/servo/dom/bindings/element.rs b/src/components/main/dom/bindings/element.rs similarity index 100% rename from src/components/servo/dom/bindings/element.rs rename to src/components/main/dom/bindings/element.rs diff --git a/src/components/servo/dom/bindings/event.rs b/src/components/main/dom/bindings/event.rs similarity index 100% rename from src/components/servo/dom/bindings/event.rs rename to src/components/main/dom/bindings/event.rs diff --git a/src/components/servo/dom/bindings/eventtarget.rs b/src/components/main/dom/bindings/eventtarget.rs similarity index 100% rename from src/components/servo/dom/bindings/eventtarget.rs rename to src/components/main/dom/bindings/eventtarget.rs diff --git a/src/components/servo/dom/bindings/htmlcollection.rs b/src/components/main/dom/bindings/htmlcollection.rs similarity index 100% rename from src/components/servo/dom/bindings/htmlcollection.rs rename to src/components/main/dom/bindings/htmlcollection.rs diff --git a/src/components/servo/dom/bindings/node.rs b/src/components/main/dom/bindings/node.rs similarity index 100% rename from src/components/servo/dom/bindings/node.rs rename to src/components/main/dom/bindings/node.rs diff --git a/src/components/servo/dom/bindings/proxyhandler.rs b/src/components/main/dom/bindings/proxyhandler.rs similarity index 100% rename from src/components/servo/dom/bindings/proxyhandler.rs rename to src/components/main/dom/bindings/proxyhandler.rs diff --git a/src/components/servo/dom/bindings/text.rs b/src/components/main/dom/bindings/text.rs similarity index 100% rename from src/components/servo/dom/bindings/text.rs rename to src/components/main/dom/bindings/text.rs diff --git a/src/components/servo/dom/bindings/utils.rs b/src/components/main/dom/bindings/utils.rs similarity index 100% rename from src/components/servo/dom/bindings/utils.rs rename to src/components/main/dom/bindings/utils.rs diff --git a/src/components/servo/dom/bindings/window.rs b/src/components/main/dom/bindings/window.rs similarity index 100% rename from src/components/servo/dom/bindings/window.rs rename to src/components/main/dom/bindings/window.rs diff --git a/src/components/servo/dom/characterdata.rs b/src/components/main/dom/characterdata.rs similarity index 100% rename from src/components/servo/dom/characterdata.rs rename to src/components/main/dom/characterdata.rs diff --git a/src/components/servo/dom/clientrect.rs b/src/components/main/dom/clientrect.rs similarity index 100% rename from src/components/servo/dom/clientrect.rs rename to src/components/main/dom/clientrect.rs diff --git a/src/components/servo/dom/clientrectlist.rs b/src/components/main/dom/clientrectlist.rs similarity index 100% rename from src/components/servo/dom/clientrectlist.rs rename to src/components/main/dom/clientrectlist.rs diff --git a/src/components/servo/dom/document.rs b/src/components/main/dom/document.rs similarity index 100% rename from src/components/servo/dom/document.rs rename to src/components/main/dom/document.rs diff --git a/src/components/servo/dom/domparser.rs b/src/components/main/dom/domparser.rs similarity index 100% rename from src/components/servo/dom/domparser.rs rename to src/components/main/dom/domparser.rs diff --git a/src/components/servo/dom/element.rs b/src/components/main/dom/element.rs similarity index 100% rename from src/components/servo/dom/element.rs rename to src/components/main/dom/element.rs diff --git a/src/components/servo/dom/event.rs b/src/components/main/dom/event.rs similarity index 100% rename from src/components/servo/dom/event.rs rename to src/components/main/dom/event.rs diff --git a/src/components/servo/dom/eventtarget.rs b/src/components/main/dom/eventtarget.rs similarity index 100% rename from src/components/servo/dom/eventtarget.rs rename to src/components/main/dom/eventtarget.rs diff --git a/src/components/servo/dom/htmlcollection.rs b/src/components/main/dom/htmlcollection.rs similarity index 100% rename from src/components/servo/dom/htmlcollection.rs rename to src/components/main/dom/htmlcollection.rs diff --git a/src/components/servo/dom/node.rs b/src/components/main/dom/node.rs similarity index 100% rename from src/components/servo/dom/node.rs rename to src/components/main/dom/node.rs diff --git a/src/components/servo/dom/window.rs b/src/components/main/dom/window.rs similarity index 100% rename from src/components/servo/dom/window.rs rename to src/components/main/dom/window.rs diff --git a/src/components/servo/engine.rs b/src/components/main/engine.rs similarity index 100% rename from src/components/servo/engine.rs rename to src/components/main/engine.rs diff --git a/src/components/servo/html/cssparse.rs b/src/components/main/html/cssparse.rs similarity index 100% rename from src/components/servo/html/cssparse.rs rename to src/components/main/html/cssparse.rs diff --git a/src/components/servo/html/hubbub_html_parser.rs b/src/components/main/html/hubbub_html_parser.rs similarity index 100% rename from src/components/servo/html/hubbub_html_parser.rs rename to src/components/main/html/hubbub_html_parser.rs diff --git a/src/components/servo/image.rs b/src/components/main/image.rs similarity index 100% rename from src/components/servo/image.rs rename to src/components/main/image.rs diff --git a/src/components/servo/layout/aux.rs b/src/components/main/layout/aux.rs similarity index 100% rename from src/components/servo/layout/aux.rs rename to src/components/main/layout/aux.rs diff --git a/src/components/servo/layout/block.rs b/src/components/main/layout/block.rs similarity index 100% rename from src/components/servo/layout/block.rs rename to src/components/main/layout/block.rs diff --git a/src/components/servo/layout/box.rs b/src/components/main/layout/box.rs similarity index 100% rename from src/components/servo/layout/box.rs rename to src/components/main/layout/box.rs diff --git a/src/components/servo/layout/box_builder.rs b/src/components/main/layout/box_builder.rs similarity index 100% rename from src/components/servo/layout/box_builder.rs rename to src/components/main/layout/box_builder.rs diff --git a/src/components/servo/layout/context.rs b/src/components/main/layout/context.rs similarity index 100% rename from src/components/servo/layout/context.rs rename to src/components/main/layout/context.rs diff --git a/src/components/servo/layout/debug.rs b/src/components/main/layout/debug.rs similarity index 100% rename from src/components/servo/layout/debug.rs rename to src/components/main/layout/debug.rs diff --git a/src/components/servo/layout/display_list_builder.rs b/src/components/main/layout/display_list_builder.rs similarity index 100% rename from src/components/servo/layout/display_list_builder.rs rename to src/components/main/layout/display_list_builder.rs diff --git a/src/components/servo/layout/flow.rs b/src/components/main/layout/flow.rs similarity index 100% rename from src/components/servo/layout/flow.rs rename to src/components/main/layout/flow.rs diff --git a/src/components/servo/layout/inline.rs b/src/components/main/layout/inline.rs similarity index 100% rename from src/components/servo/layout/inline.rs rename to src/components/main/layout/inline.rs diff --git a/src/components/servo/layout/layout_task.rs b/src/components/main/layout/layout_task.rs similarity index 100% rename from src/components/servo/layout/layout_task.rs rename to src/components/main/layout/layout_task.rs diff --git a/src/components/servo/layout/text.rs b/src/components/main/layout/text.rs similarity index 100% rename from src/components/servo/layout/text.rs rename to src/components/main/layout/text.rs diff --git a/src/components/servo/macros.rs b/src/components/main/macros.rs similarity index 100% rename from src/components/servo/macros.rs rename to src/components/main/macros.rs diff --git a/src/components/servo/platform/common/glut_windowing.rs b/src/components/main/platform/common/glut_windowing.rs similarity index 100% rename from src/components/servo/platform/common/glut_windowing.rs rename to src/components/main/platform/common/glut_windowing.rs diff --git a/src/components/servo/platform/common/shared_gl_windowing.rs b/src/components/main/platform/common/shared_gl_windowing.rs similarity index 100% rename from src/components/servo/platform/common/shared_gl_windowing.rs rename to src/components/main/platform/common/shared_gl_windowing.rs diff --git a/src/components/servo/platform/mod.rs b/src/components/main/platform/mod.rs similarity index 100% rename from src/components/servo/platform/mod.rs rename to src/components/main/platform/mod.rs diff --git a/src/components/servo/scripting/script_task.rs b/src/components/main/scripting/script_task.rs similarity index 100% rename from src/components/servo/scripting/script_task.rs rename to src/components/main/scripting/script_task.rs diff --git a/src/components/servo/servo.rc b/src/components/main/servo.rc similarity index 97% rename from src/components/servo/servo.rc rename to src/components/main/servo.rc index 5274a52a668..52070cb7891 100755 --- a/src/components/servo/servo.rc +++ b/src/components/main/servo.rc @@ -14,7 +14,7 @@ extern mod alert; extern mod azure; extern mod geom; -extern mod gfx (name = "servo_gfx"); +extern mod gfx (name = "gfx"); extern mod glut; extern mod http_client; extern mod hubbub; @@ -22,8 +22,8 @@ extern mod js; extern mod layers; extern mod newcss (name = "css"); extern mod opengles; -extern mod servo_net; -extern mod servo_util (name = "servo_util"); +extern mod servo_net (name = "net"); +extern mod servo_util (name = "util"); extern mod sharegl; extern mod stb_image; extern mod std; diff --git a/src/components/servo/util/mod.rs b/src/components/main/util/mod.rs similarity index 100% rename from src/components/servo/util/mod.rs rename to src/components/main/util/mod.rs diff --git a/src/components/servo/util/task.rs b/src/components/main/util/task.rs similarity index 100% rename from src/components/servo/util/task.rs rename to src/components/main/util/task.rs diff --git a/src/components/servo/windowing.rs b/src/components/main/windowing.rs similarity index 100% rename from src/components/servo/windowing.rs rename to src/components/main/windowing.rs diff --git a/src/components/servo-net/file_loader.rs b/src/components/net/file_loader.rs similarity index 100% rename from src/components/servo-net/file_loader.rs rename to src/components/net/file_loader.rs diff --git a/src/components/servo-net/http_loader.rs b/src/components/net/http_loader.rs similarity index 100% rename from src/components/servo-net/http_loader.rs rename to src/components/net/http_loader.rs diff --git a/src/components/servo-net/image/base.rs b/src/components/net/image/base.rs similarity index 100% rename from src/components/servo-net/image/base.rs rename to src/components/net/image/base.rs diff --git a/src/components/servo-net/image/holder.rs b/src/components/net/image/holder.rs similarity index 100% rename from src/components/servo-net/image/holder.rs rename to src/components/net/image/holder.rs diff --git a/src/components/servo-net/image/test.jpeg b/src/components/net/image/test.jpeg similarity index 100% rename from src/components/servo-net/image/test.jpeg rename to src/components/net/image/test.jpeg diff --git a/src/components/servo-net/image_cache_task.rs b/src/components/net/image_cache_task.rs similarity index 100% rename from src/components/servo-net/image_cache_task.rs rename to src/components/net/image_cache_task.rs diff --git a/src/components/servo-net/local_image_cache.rs b/src/components/net/local_image_cache.rs similarity index 100% rename from src/components/servo-net/local_image_cache.rs rename to src/components/net/local_image_cache.rs diff --git a/src/components/servo-net/servo_net.rc b/src/components/net/net.rc similarity index 93% rename from src/components/servo-net/servo_net.rc rename to src/components/net/net.rc index 739ec49c637..768dccf461b 100644 --- a/src/components/servo-net/servo_net.rc +++ b/src/components/net/net.rc @@ -2,7 +2,7 @@ * 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/. */ -#[link(name = "servo_net", +#[link(name = "net", vers = "0.1", uuid = "69c2b7b7-0d7d-4514-a48a-0eed61476039", url = "http://servo.org/")]; @@ -10,7 +10,7 @@ extern mod geom; extern mod http_client; -extern mod servo_util; +extern mod servo_util (name = "util"); extern mod stb_image; extern mod std; diff --git a/src/components/servo-net/resource_task.rs b/src/components/net/resource_task.rs similarity index 100% rename from src/components/servo-net/resource_task.rs rename to src/components/net/resource_task.rs diff --git a/src/components/servo-net/util.rs b/src/components/net/util.rs similarity index 100% rename from src/components/servo-net/util.rs rename to src/components/net/util.rs diff --git a/src/components/servo-util/cache.rs b/src/components/util/cache.rs similarity index 100% rename from src/components/servo-util/cache.rs rename to src/components/util/cache.rs diff --git a/src/components/servo-util/range.rs b/src/components/util/range.rs similarity index 100% rename from src/components/servo-util/range.rs rename to src/components/util/range.rs diff --git a/src/components/servo-util/time.rs b/src/components/util/time.rs similarity index 100% rename from src/components/servo-util/time.rs rename to src/components/util/time.rs diff --git a/src/components/servo-util/tree.rs b/src/components/util/tree.rs similarity index 100% rename from src/components/servo-util/tree.rs rename to src/components/util/tree.rs diff --git a/src/components/servo-util/url.rs b/src/components/util/url.rs similarity index 100% rename from src/components/servo-util/url.rs rename to src/components/util/url.rs diff --git a/src/components/servo-util/servo_util.rc b/src/components/util/util.rc similarity index 94% rename from src/components/servo-util/servo_util.rc rename to src/components/util/util.rc index 5779542af3a..20ef07f01bf 100644 --- a/src/components/servo-util/servo_util.rc +++ b/src/components/util/util.rc @@ -2,7 +2,7 @@ * 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/. */ -#[link(name = "servo_util", +#[link(name = "util", vers = "0.1", uuid = "48421f49-17cf-41c5-a68e-ff669ff2ecd5", url = "http://servo.org/")]; diff --git a/src/components/servo-util/vec.rs b/src/components/util/vec.rs similarity index 100% rename from src/components/servo-util/vec.rs rename to src/components/util/vec.rs From 4f3ca373d441bcb1bad51ddf9c579ccbd955ac95 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Tue, 21 May 2013 18:18:05 -0700 Subject: [PATCH 4/5] Introduce a phantom type to prevent script from accessing the layout data directly. Nodes are now parameterized over a "View" type. The particular View type determines which methods can be called. Layout data accessors and mutators are only accessible to nodes with a LayoutView. The only way to convert a `Node` to a `Node` is through a transmutation, which is done at the moment the layout task receives nodes. (This should be factored better to contain the unsafety.) We should also lock down DOM node mutation to the ScriptView to forbid data races, but this patch doesn't do that. This also reduces coupling between DOM and layout. Soon I would like to move the DOM into its own crate, and this is a step on the way of doing that. --- src/components/main/css/matching.rs | 9 +- src/components/main/css/node_style.rs | 5 +- src/components/main/css/node_util.rs | 7 +- src/components/main/css/node_void_ptr.rs | 6 +- src/components/main/css/select_handler.rs | 24 +-- .../main/dom/bindings/codegen/Bindings.conf | 2 +- .../main/dom/bindings/codegen/CodegenRust.py | 1 + src/components/main/dom/bindings/element.rs | 8 +- src/components/main/dom/bindings/node.rs | 16 +- src/components/main/dom/bindings/text.rs | 12 +- src/components/main/dom/bindings/utils.rs | 4 +- src/components/main/dom/characterdata.rs | 4 +- src/components/main/dom/document.rs | 6 +- src/components/main/dom/element.rs | 4 +- src/components/main/dom/htmlcollection.rs | 10 +- src/components/main/dom/node.rs | 168 +++++++++--------- .../main/html/hubbub_html_parser.rs | 19 +- src/components/main/layout/aux.rs | 47 ++++- src/components/main/layout/box.rs | 11 +- src/components/main/layout/box_builder.rs | 39 ++-- src/components/main/layout/flow.rs | 14 +- src/components/main/layout/inline.rs | 8 +- src/components/main/layout/layout_task.rs | 27 ++- 23 files changed, 262 insertions(+), 189 deletions(-) diff --git a/src/components/main/css/matching.rs b/src/components/main/css/matching.rs index 3a95aceac07..c792188e486 100644 --- a/src/components/main/css/matching.rs +++ b/src/components/main/css/matching.rs @@ -6,7 +6,7 @@ use css::node_util::NodeUtil; use css::select_handler::NodeSelectHandler; -use dom::node::AbstractNode; +use dom::node::{AbstractNode, LayoutView}; use newcss::complete::CompleteSelectResults; use newcss::select::{SelectCtx, SelectResults}; @@ -16,7 +16,7 @@ pub trait MatchMethods { fn restyle_subtree(&self, select_ctx: &SelectCtx); } -impl MatchMethods for AbstractNode { +impl MatchMethods for AbstractNode { /** * Performs CSS selector matching on a subtree. * @@ -40,7 +40,8 @@ impl MatchMethods for AbstractNode { } } -fn compose_results(node: AbstractNode, results: SelectResults) -> CompleteSelectResults { +fn compose_results(node: AbstractNode, results: SelectResults) + -> CompleteSelectResults { match find_parent_element_node(node) { None => CompleteSelectResults::new_root(results), Some(parent_node) => { @@ -50,7 +51,7 @@ fn compose_results(node: AbstractNode, results: SelectResults) -> CompleteSelect } } -fn find_parent_element_node(node: AbstractNode) -> Option { +fn find_parent_element_node(node: AbstractNode) -> Option> { match node.parent_node() { Some(parent) if parent.is_element() => Some(parent), Some(parent) => find_parent_element_node(parent), diff --git a/src/components/main/css/node_style.rs b/src/components/main/css/node_style.rs index c6b72a7cb70..0f02f52d186 100644 --- a/src/components/main/css/node_style.rs +++ b/src/components/main/css/node_style.rs @@ -5,7 +5,8 @@ // Style retrieval from DOM elements. use css::node_util::NodeUtil; -use dom::node::AbstractNode; +use dom::node::{AbstractNode, LayoutView}; + use newcss::complete::CompleteStyle; /// Node mixin providing `style` method that returns a `NodeStyle` @@ -13,7 +14,7 @@ pub trait StyledNode { fn style(&self) -> CompleteStyle; } -impl StyledNode for AbstractNode { +impl StyledNode for AbstractNode { fn style(&self) -> CompleteStyle { assert!(self.is_element()); // Only elements can have styles let results = self.get_css_select_results(); diff --git a/src/components/main/css/node_util.rs b/src/components/main/css/node_util.rs index 0dc15dc6518..d31f1b0cf83 100644 --- a/src/components/main/css/node_util.rs +++ b/src/components/main/css/node_util.rs @@ -2,17 +2,18 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use dom::node::AbstractNode; -use newcss::complete::CompleteSelectResults; +use dom::node::{AbstractNode, LayoutView}; +use layout::aux::LayoutAuxMethods; use core::cast::transmute; +use newcss::complete::CompleteSelectResults; pub trait NodeUtil<'self> { fn get_css_select_results(self) -> &'self CompleteSelectResults; fn set_css_select_results(self, decl: CompleteSelectResults); } -impl<'self> NodeUtil<'self> for AbstractNode { +impl<'self> NodeUtil<'self> for AbstractNode { /** * Provides the computed style for the given node. If CSS selector * Returns the style results for the given node. If CSS selector diff --git a/src/components/main/css/node_void_ptr.rs b/src/components/main/css/node_void_ptr.rs index 3c25e0091c5..733ba563da3 100644 --- a/src/components/main/css/node_void_ptr.rs +++ b/src/components/main/css/node_void_ptr.rs @@ -5,15 +5,15 @@ //! CSS library requires that DOM nodes be convertable to *c_void through this trait extern mod netsurfcss; -use dom::node::AbstractNode; +use dom::node::{AbstractNode, LayoutView}; use core::cast; // FIXME: Rust #3908. rust-css can't reexport VoidPtrLike use css::node_void_ptr::netsurfcss::util::VoidPtrLike; -impl VoidPtrLike for AbstractNode { - fn from_void_ptr(node: *libc::c_void) -> AbstractNode { +impl VoidPtrLike for AbstractNode { + fn from_void_ptr(node: *libc::c_void) -> AbstractNode { assert!(node.is_not_null()); unsafe { cast::transmute(node) diff --git a/src/components/main/css/select_handler.rs b/src/components/main/css/select_handler.rs index 7dec3aae654..8ce4e58ef32 100644 --- a/src/components/main/css/select_handler.rs +++ b/src/components/main/css/select_handler.rs @@ -6,16 +6,16 @@ /// Implementation of the callbacks that the CSS selector engine uses to query the DOM. /// -use dom::node::AbstractNode; +use dom::node::{AbstractNode, LayoutView}; use newcss::select::SelectHandler; use core::str::eq_slice; pub struct NodeSelectHandler { - node: AbstractNode + node: AbstractNode, } -fn with_node_name(node: AbstractNode, f: &fn(&str) -> R) -> R { +fn with_node_name(node: AbstractNode, f: &fn(&str) -> R) -> R { if !node.is_element() { fail!(~"attempting to style non-element node"); } @@ -24,12 +24,13 @@ fn with_node_name(node: AbstractNode, f: &fn(&str) -> R) -> R { } } -impl SelectHandler for NodeSelectHandler { - fn with_node_name(&self, node: &AbstractNode, f: &fn(&str) -> R) -> R { +impl SelectHandler> for NodeSelectHandler { + fn with_node_name(&self, node: &AbstractNode, f: &fn(&str) -> R) -> R { with_node_name(*node, f) } - fn named_parent_node(&self, node: &AbstractNode, name: &str) -> Option { + fn named_parent_node(&self, node: &AbstractNode, name: &str) + -> Option> { match node.parent_node() { Some(parent) => { do with_node_name(parent) |node_name| { @@ -44,12 +45,13 @@ impl SelectHandler for NodeSelectHandler { } } - fn parent_node(&self, node: &AbstractNode) -> Option { + fn parent_node(&self, node: &AbstractNode) -> Option> { node.parent_node() } // TODO: Use a Bloom filter. - fn named_ancestor_node(&self, node: &AbstractNode, name: &str) -> Option { + fn named_ancestor_node(&self, node: &AbstractNode, name: &str) + -> Option> { let mut node = *node; loop { let parent = node.parent_node(); @@ -71,11 +73,11 @@ impl SelectHandler for NodeSelectHandler { } } - fn node_is_root(&self, node: &AbstractNode) -> bool { + fn node_is_root(&self, node: &AbstractNode) -> bool { self.parent_node(node).is_none() } - fn with_node_id(&self, node: &AbstractNode, f: &fn(Option<&str>) -> R) -> R { + fn with_node_id(&self, node: &AbstractNode, f: &fn(Option<&str>) -> R) -> R { if !node.is_element() { fail!(~"attempting to style non-element node"); } @@ -84,7 +86,7 @@ impl SelectHandler for NodeSelectHandler { } } - fn node_has_id(&self, node: &AbstractNode, id: &str) -> bool { + fn node_has_id(&self, node: &AbstractNode, id: &str) -> bool { if !node.is_element() { fail!(~"attempting to style non-element node"); } diff --git a/src/components/main/dom/bindings/codegen/Bindings.conf b/src/components/main/dom/bindings/codegen/Bindings.conf index 442bd0b432c..fa3400d41a1 100644 --- a/src/components/main/dom/bindings/codegen/Bindings.conf +++ b/src/components/main/dom/bindings/codegen/Bindings.conf @@ -513,7 +513,7 @@ addExternalIface('CSSValue') addExternalIface('Document', nativeType='Document', pointerType='@mut ') addExternalIface('DOMStringList', nativeType='nsDOMStringList', headerFile='nsDOMLists.h') -addExternalIface('Element', nativeType='AbstractNode', pointerType='') +addExternalIface('Element', nativeType='AbstractNode', pointerType='') addExternalIface('File') addExternalIface('HitRegionOptions', nativeType='nsISupports') addExternalIface('HTMLElement') diff --git a/src/components/main/dom/bindings/codegen/CodegenRust.py b/src/components/main/dom/bindings/codegen/CodegenRust.py index 0fc99027ab1..6f2715839cd 100644 --- a/src/components/main/dom/bindings/codegen/CodegenRust.py +++ b/src/components/main/dom/bindings/codegen/CodegenRust.py @@ -4149,6 +4149,7 @@ class CGBindingRoot(CGThing): 'dom::eventtarget::*', #XXXjdm 'scripting::script_task::task_from_context', 'dom::bindings::utils::EnumEntry', + 'dom::node::ScriptView', ], [], curr) diff --git a/src/components/main/dom/bindings/element.rs b/src/components/main/dom/bindings/element.rs index c6eb59107a8..66d47931f73 100644 --- a/src/components/main/dom/bindings/element.rs +++ b/src/components/main/dom/bindings/element.rs @@ -7,7 +7,7 @@ use dom::bindings::utils::jsval_to_str; use dom::bindings::utils::{domstring_to_jsval, WrapNewBindingObject}; use dom::bindings::utils::{str, CacheableWrapper, DOM_OBJECT_SLOT, DOMString}; use dom::element::*; -use dom::node::{AbstractNode, Element, ElementNodeTypeId}; +use dom::node::{AbstractNode, Element, ElementNodeTypeId, ScriptView}; use layout::layout_task; use scripting::script_task::task_from_context; use super::utils; @@ -26,7 +26,7 @@ use js::{JS_THIS_OBJECT, JS_SET_RVAL, JSPROP_NATIVE_ACCESSORS}; extern fn finalize(_fop: *JSFreeOp, obj: *JSObject) { debug!("element finalize: %x!", obj as uint); unsafe { - let node: AbstractNode = unwrap(obj); + let node: AbstractNode = unwrap(obj); //XXXjdm We need separate finalizers for each specialty element type like headings let _elem: ~Element = cast::transmute(node.raw_object()); } @@ -35,7 +35,7 @@ extern fn finalize(_fop: *JSFreeOp, obj: *JSObject) { pub extern fn trace(tracer: *mut JSTracer, obj: *JSObject) { let node = unsafe { unwrap(obj) }; - fn trace_node(tracer: *mut JSTracer, node: Option, name: &str) { + fn trace_node(tracer: *mut JSTracer, node: Option>, name: &str) { if node.is_none() { return; } @@ -278,7 +278,7 @@ extern fn getTagName(cx: *JSContext, _argc: c_uint, vp: *mut JSVal) -> JSBool { return 1; } -pub fn create(cx: *JSContext, node: &mut AbstractNode) -> jsobj { +pub fn create(cx: *JSContext, node: &mut AbstractNode) -> jsobj { let proto = match node.type_id() { ElementNodeTypeId(HTMLDivElementTypeId) => ~"HTMLDivElement", ElementNodeTypeId(HTMLHeadElementTypeId) => ~"HTMLHeadElement", diff --git a/src/components/main/dom/bindings/node.rs b/src/components/main/dom/bindings/node.rs index 52bd80f382b..36e1984d0ca 100644 --- a/src/components/main/dom/bindings/node.rs +++ b/src/components/main/dom/bindings/node.rs @@ -7,7 +7,7 @@ use dom::bindings::text; use dom::bindings::utils; use dom::bindings::utils::{CacheableWrapper, WrapperCache, DerivedWrapper}; use dom::node::{AbstractNode, Node, ElementNodeTypeId, TextNodeTypeId, CommentNodeTypeId}; -use dom::node::{DoctypeNodeTypeId}; +use dom::node::{DoctypeNodeTypeId, ScriptView}; use core::libc::c_uint; use core::ptr::null; @@ -58,7 +58,7 @@ pub fn init(compartment: @mut Compartment) { } #[allow(non_implicitly_copyable_typarams)] -pub fn create(cx: *JSContext, node: &mut AbstractNode) -> jsobj { +pub fn create(cx: *JSContext, node: &mut AbstractNode) -> jsobj { match node.type_id() { ElementNodeTypeId(_) => element::create(cx, node), TextNodeTypeId | @@ -67,8 +67,8 @@ pub fn create(cx: *JSContext, node: &mut AbstractNode) -> jsobj { } } -pub unsafe fn unwrap(obj: *JSObject) -> AbstractNode { - let raw = utils::unwrap::<*mut Node>(obj); +pub unsafe fn unwrap(obj: *JSObject) -> AbstractNode { + let raw = utils::unwrap::<*mut Node>(obj); AbstractNode::from_raw(raw) } @@ -116,7 +116,7 @@ extern fn getNextSibling(cx: *JSContext, _argc: c_uint, vp: *mut JSVal) -> JSBoo return 1; } -impl Node { +impl Node { fn getNodeType(&self) -> i32 { match self.type_id { ElementNodeTypeId(_) => 1, @@ -126,7 +126,7 @@ impl Node { } } - fn getNextSibling(&mut self) -> Option<&mut AbstractNode> { + fn getNextSibling(&mut self) -> Option<&mut AbstractNode> { match self.next_sibling { // transmute because the compiler can't deduce that the reference // is safe outside of with_mut_base blocks. @@ -135,7 +135,7 @@ impl Node { } } - fn getFirstChild(&mut self) -> Option<&mut AbstractNode> { + fn getFirstChild(&mut self) -> Option<&mut AbstractNode> { match self.first_child { // transmute because the compiler can't deduce that the reference // is safe outside of with_mut_base blocks. @@ -161,7 +161,7 @@ extern fn getNodeType(cx: *JSContext, _argc: c_uint, vp: *mut JSVal) -> JSBool { return 1; } -impl CacheableWrapper for AbstractNode { +impl CacheableWrapper for AbstractNode { fn get_wrappercache(&mut self) -> &mut WrapperCache { do self.with_mut_base |base| { unsafe { diff --git a/src/components/main/dom/bindings/text.rs b/src/components/main/dom/bindings/text.rs index 41a4ece1c03..5067896a6e2 100644 --- a/src/components/main/dom/bindings/text.rs +++ b/src/components/main/dom/bindings/text.rs @@ -7,7 +7,7 @@ use dom::bindings::node::unwrap; use dom::bindings::utils; use dom::bindings::utils::{DOM_OBJECT_SLOT, CacheableWrapper}; use dom::node::{AbstractNode, Text, Comment, Doctype, TextNodeTypeId, CommentNodeTypeId}; -use dom::node::{DoctypeNodeTypeId}; +use dom::node::{DoctypeNodeTypeId, ScriptView}; use js::jsapi::{JSFreeOp, JSObject, JSContext}; use js::jsapi::bindgen::{JS_SetReservedSlot}; @@ -17,7 +17,7 @@ use js::rust::{Compartment, jsobj}; extern fn finalize_text(_fop: *JSFreeOp, obj: *JSObject) { debug!("text finalize: %?!", obj as uint); unsafe { - let node: AbstractNode = unwrap(obj); + let node: AbstractNode = unwrap(obj); let _elem: ~Text = cast::transmute(node.raw_object()); } } @@ -25,7 +25,7 @@ extern fn finalize_text(_fop: *JSFreeOp, obj: *JSObject) { extern fn finalize_comment(_fop: *JSFreeOp, obj: *JSObject) { debug!("comment finalize: %?!", obj as uint); unsafe { - let node: AbstractNode = unwrap(obj); + let node: AbstractNode = unwrap(obj); let _elem: ~Comment = cast::transmute(node.raw_object()); } } @@ -33,8 +33,8 @@ extern fn finalize_comment(_fop: *JSFreeOp, obj: *JSObject) { extern fn finalize_doctype(_fop: *JSFreeOp, obj: *JSObject) { debug!("doctype finalize: %?!", obj as uint); unsafe { - let node: AbstractNode = unwrap(obj); - let _elem: ~Doctype = cast::transmute(node.raw_object()); + let node: AbstractNode = unwrap(obj); + let _elem: ~Doctype = cast::transmute(node.raw_object()); } } @@ -64,7 +64,7 @@ pub fn init(compartment: @mut Compartment) { } -pub fn create(cx: *JSContext, node: &mut AbstractNode) -> jsobj { +pub fn create(cx: *JSContext, node: &mut AbstractNode) -> jsobj { let (proto, instance) = match node.type_id() { TextNodeTypeId => (~"TextPrototype", ~"Text"), CommentNodeTypeId => (~"CommentPrototype", ~"Comment"), diff --git a/src/components/main/dom/bindings/utils.rs b/src/components/main/dom/bindings/utils.rs index a27207ef32d..b341c6ae2f8 100644 --- a/src/components/main/dom/bindings/utils.rs +++ b/src/components/main/dom/bindings/utils.rs @@ -3,7 +3,7 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::bindings::node; -use dom::node::AbstractNode; +use dom::node::{AbstractNode, ScriptView}; use js::glue::bindgen::*; use js::glue::bindgen::{DefineFunctionWithReserved, GetObjectJSClass, RUST_OBJECT_TO_JSVAL}; use js::glue::{PROPERTY_STUB, STRICT_PROPERTY_STUB, ENUMERATE_STUB, CONVERT_STUB, RESOLVE_STUB}; @@ -760,7 +760,7 @@ pub trait DerivedWrapper { fn wrap_shared(@mut self, cx: *JSContext, scope: *JSObject, vp: *mut JSVal) -> i32; } -impl DerivedWrapper for AbstractNode { +impl DerivedWrapper for AbstractNode { fn wrap(&mut self, cx: *JSContext, _scope: *JSObject, vp: *mut JSVal) -> i32 { let cache = self.get_wrappercache(); let wrapper = cache.get_wrapper(); diff --git a/src/components/main/dom/characterdata.rs b/src/components/main/dom/characterdata.rs index a8d81158d9c..4108868d8d4 100644 --- a/src/components/main/dom/characterdata.rs +++ b/src/components/main/dom/characterdata.rs @@ -5,12 +5,12 @@ //! DOM bindings for `CharacterData`. use dom::bindings::utils::{DOMString, null_string, str}; -use dom::node::{Node, NodeTypeId}; +use dom::node::{Node, NodeTypeId, ScriptView}; use core::str; pub struct CharacterData { - parent: Node, + parent: Node, data: DOMString } diff --git a/src/components/main/dom/document.rs b/src/components/main/dom/document.rs index 3dc72981f62..e912e593ec0 100644 --- a/src/components/main/dom/document.rs +++ b/src/components/main/dom/document.rs @@ -5,7 +5,7 @@ use dom::bindings::document; use dom::bindings::utils::{DOMString, WrapperCache}; use dom::htmlcollection::HTMLCollection; -use dom::node::AbstractNode; +use dom::node::{AbstractNode, ScriptView}; use dom::window::Window; use scripting::script_task::global_script_context; @@ -13,12 +13,12 @@ use js::jsapi::bindgen::{JS_AddObjectRoot, JS_RemoveObjectRoot}; use servo_util::tree::{TreeNodeRef, TreeUtils}; pub struct Document { - root: AbstractNode, + root: AbstractNode, wrapper: WrapperCache, window: Option<@mut Window>, } -pub fn Document(root: AbstractNode, window: Option<@mut Window>) -> @mut Document { +pub fn Document(root: AbstractNode, window: Option<@mut Window>) -> @mut Document { let doc = @mut Document { root: root, wrapper: WrapperCache::new(), diff --git a/src/components/main/dom/element.rs b/src/components/main/dom/element.rs index 6438d78410d..e3a5e59dae3 100644 --- a/src/components/main/dom/element.rs +++ b/src/components/main/dom/element.rs @@ -6,7 +6,7 @@ // Element nodes. // -use dom::node::{ElementNodeTypeId, Node}; +use dom::node::{ElementNodeTypeId, Node, ScriptView}; use dom::clientrect::ClientRect; use dom::clientrectlist::ClientRectList; use dom::bindings::utils::DOMString; @@ -18,7 +18,7 @@ use core::cell::Cell; use std::net::url::Url; pub struct Element { - parent: Node, + parent: Node, tag_name: ~str, // TODO: This should be an atom, not a ~str. attrs: ~[Attr], } diff --git a/src/components/main/dom/htmlcollection.rs b/src/components/main/dom/htmlcollection.rs index 0641987b341..762504a7002 100644 --- a/src/components/main/dom/htmlcollection.rs +++ b/src/components/main/dom/htmlcollection.rs @@ -4,17 +4,17 @@ use dom::bindings::utils::WrapperCache; use dom::bindings::utils::{DOMString, ErrorResult}; -use dom::node::AbstractNode; +use dom::node::{AbstractNode, ScriptView}; use js::jsapi::{JSObject, JSContext}; pub struct HTMLCollection { - elements: ~[AbstractNode], + elements: ~[AbstractNode], wrapper: WrapperCache } pub impl HTMLCollection { - fn new(elements: ~[AbstractNode]) -> @mut HTMLCollection { + fn new(elements: ~[AbstractNode]) -> @mut HTMLCollection { let collection = @mut HTMLCollection { elements: elements, wrapper: WrapperCache::new() @@ -27,7 +27,7 @@ pub impl HTMLCollection { self.elements.len() as u32 } - fn Item(&self, index: u32) -> Option { + fn Item(&self, index: u32) -> Option> { if index < self.Length() { Some(self.elements[index]) } else { @@ -40,7 +40,7 @@ pub impl HTMLCollection { ptr::null() } - fn IndexedGetter(&self, index: u32, found: &mut bool) -> Option { + fn IndexedGetter(&self, index: u32, found: &mut bool) -> Option> { *found = true; self.Item(index) } diff --git a/src/components/main/dom/node.rs b/src/components/main/dom/node.rs index 5ae3656e75e..15c4149f5d1 100644 --- a/src/components/main/dom/node.rs +++ b/src/components/main/dom/node.rs @@ -13,65 +13,75 @@ use dom::document::Document; use dom::element::{Element, ElementTypeId, HTMLImageElement, HTMLImageElementTypeId}; use dom::element::{HTMLStyleElementTypeId}; use layout::debug::DebugMethods; -use layout::flow::FlowContext; use scripting::script_task::global_script_context; use core::cast::transmute; use js::rust::Compartment; -use newcss::complete::CompleteSelectResults; use servo_util::tree::{TreeNode, TreeNodeRef, TreeUtils}; // // The basic Node structure // +/// A phantom type representing the script task's view of this node. Script is able to mutate +/// nodes but may not access layout data. +pub struct ScriptView; + +/// A phantom type representing the layout task's view of the node. Layout is not allowed to mutate +/// nodes but may access layout data. +pub struct LayoutView; + /// This is what a Node looks like if you do not know what kind of node it is. To unpack it, use /// downcast(). /// /// FIXME: This should be replaced with a trait once they can inherit from structs. -pub struct AbstractNode { - priv obj: *mut Node, +pub struct AbstractNode { + priv obj: *mut Node, } -impl Eq for AbstractNode { - fn eq(&self, other: &AbstractNode) -> bool { +impl Eq for AbstractNode { + fn eq(&self, other: &AbstractNode) -> bool { self.obj == other.obj } - fn ne(&self, other: &AbstractNode) -> bool { + fn ne(&self, other: &AbstractNode) -> bool { self.obj != other.obj } } /// An HTML node. -pub struct Node { +/// +/// `View` describes extra data associated with this node that this task has access to. For +/// the script task, this is the unit type `()`. For the layout task, this is +/// `layout::aux::LayoutData`. +pub struct Node { /// The JavaScript wrapper for this node. wrapper: WrapperCache, /// The type of node that this is. type_id: NodeTypeId, - abstract: Option, + abstract: Option>, /// The parent of this node. - parent_node: Option, + parent_node: Option>, /// The first child of this node. - first_child: Option, + first_child: Option>, /// The last child of this node. - last_child: Option, + last_child: Option>, /// The next sibling of this node. - next_sibling: Option, + next_sibling: Option>, /// The previous sibling of this node. - prev_sibling: Option, + prev_sibling: Option>, /// The document that this node belongs to. owner_doc: Option<@mut Document>, - /// Layout information. You must not touch this if you are not layout. - priv layout_data: Option<@mut LayoutData> + /// Layout information. Only the layout task may touch this data. + priv layout_data: Option<@mut ()> } /// The different types of nodes. @@ -83,49 +93,26 @@ pub enum NodeTypeId { TextNodeTypeId, } -// -// Auxiliary layout data -// - -/// Data that layout associates with a node. -pub struct LayoutData { - /// The results of CSS styling for this node. - style: Option, - - /// The CSS flow that this node is associated with. - flow: Option, -} - -impl LayoutData { - /// Creates new layout data. - pub fn new() -> LayoutData { - LayoutData { - style: None, - flow: None, - } - } -} - // // Basic node types // /// The `DOCTYPE` tag. -pub struct Doctype { - parent: Node, +pub struct Doctype { + parent: Node, name: ~str, public_id: Option<~str>, system_id: Option<~str>, force_quirks: bool } -impl Doctype { +impl Doctype { /// Creates a new `DOCTYPE` tag. pub fn new(name: ~str, public_id: Option<~str>, system_id: Option<~str>, force_quirks: bool) - -> Doctype { + -> Doctype { Doctype { parent: Node::new(DoctypeNodeTypeId), name: name, @@ -164,58 +151,81 @@ impl Text { } } -impl Clone for AbstractNode { - fn clone(&self) -> AbstractNode { +impl Clone for AbstractNode { + fn clone(&self) -> AbstractNode { *self } } -impl TreeNode for Node { - fn parent_node(&self) -> Option { +impl TreeNode> for Node { + fn parent_node(&self) -> Option> { self.parent_node } - fn first_child(&self) -> Option { + fn first_child(&self) -> Option> { self.first_child } - fn last_child(&self) -> Option { + fn last_child(&self) -> Option> { self.last_child } - fn prev_sibling(&self) -> Option { + fn prev_sibling(&self) -> Option> { self.prev_sibling } - fn next_sibling(&self) -> Option { + fn next_sibling(&self) -> Option> { self.next_sibling } - fn set_parent_node(&mut self, new_parent_node: Option) { + fn set_parent_node(&mut self, new_parent_node: Option>) { self.parent_node = new_parent_node } - fn set_first_child(&mut self, new_first_child: Option) { + fn set_first_child(&mut self, new_first_child: Option>) { self.first_child = new_first_child } - fn set_last_child(&mut self, new_last_child: Option) { + fn set_last_child(&mut self, new_last_child: Option>) { self.last_child = new_last_child } - fn set_prev_sibling(&mut self, new_prev_sibling: Option) { + fn set_prev_sibling(&mut self, new_prev_sibling: Option>) { self.prev_sibling = new_prev_sibling } - fn set_next_sibling(&mut self, new_next_sibling: Option) { + fn set_next_sibling(&mut self, new_next_sibling: Option>) { self.next_sibling = new_next_sibling } } -impl TreeNodeRef for AbstractNode { +impl TreeNodeRef> for AbstractNode { // FIXME: The duplication between `with_base` and `with_mut_base` is ugly. - fn with_base(&self, callback: &fn(&Node) -> R) -> R { + fn with_base(&self, callback: &fn(&Node) -> R) -> R { self.transmute(callback) } - fn with_mut_base(&self, callback: &fn(&mut Node) -> R) -> R { + fn with_mut_base(&self, callback: &fn(&mut Node) -> R) -> R { self.transmute_mut(callback) } } -impl AbstractNode { +impl AbstractNode { + // Unsafe accessors + + /// Returns the layout data, unsafely cast to whatever type layout wishes. Only layout is + /// allowed to call this. This is wildly unsafe and is therefore marked as such. + pub unsafe fn unsafe_layout_data(self) -> @mut T { + do self.with_base |base| { + transmute(base.layout_data.get()) + } + } + /// Returns true if this node has layout data and false otherwise. + pub unsafe fn unsafe_has_layout_data(self) -> bool { + do self.with_base |base| { + base.layout_data.is_some() + } + } + /// Sets the layout data, unsafely casting the type as layout wishes. Only layout is allowed + /// to call this. This is wildly unsafe and is therefore marked as such. + pub unsafe fn unsafe_set_layout_data(self, data: @mut T) { + do self.with_mut_base |base| { + base.layout_data = Some(transmute(data)) + } + } + // Convenience accessors /// Returns the type ID of this node. Fails if this node is borrowed mutably. @@ -224,49 +234,37 @@ impl AbstractNode { } /// Returns the parent node of this node. Fails if this node is borrowed mutably. - pub fn parent_node(self) -> Option { + pub fn parent_node(self) -> Option> { self.with_base(|b| b.parent_node) } /// Returns the first child of this node. Fails if this node is borrowed mutably. - pub fn first_child(self) -> Option { + pub fn first_child(self) -> Option> { self.with_base(|b| b.first_child) } /// Returns the last child of this node. Fails if this node is borrowed mutably. - pub fn last_child(self) -> Option { + pub fn last_child(self) -> Option> { self.with_base(|b| b.last_child) } /// Returns the previous sibling of this node. Fails if this node is borrowed mutably. - pub fn prev_sibling(self) -> Option { + pub fn prev_sibling(self) -> Option> { self.with_base(|b| b.prev_sibling) } /// Returns the next sibling of this node. Fails if this node is borrowed mutably. - pub fn next_sibling(self) -> Option { + pub fn next_sibling(self) -> Option> { self.with_base(|b| b.next_sibling) } - // NB: You must not call these if you are not layout. We should do something with scoping to - // ensure this. - pub fn layout_data(self) -> @mut LayoutData { - self.with_base(|b| b.layout_data.get()) - } - pub fn has_layout_data(self) -> bool { - self.with_base(|b| b.layout_data.is_some()) - } - pub fn set_layout_data(self, data: @mut LayoutData) { - self.with_mut_base(|b| b.layout_data = Some(data)) - } - // // Downcasting borrows // pub fn transmute(self, f: &fn(&T) -> R) -> R { unsafe { - let node_box: *mut bindings::utils::rust_box = transmute(self.obj); + let node_box: *mut bindings::utils::rust_box> = transmute(self.obj); let node = &mut (*node_box).payload; let old = node.abstract; node.abstract = Some(self); @@ -279,7 +277,7 @@ impl AbstractNode { pub fn transmute_mut(self, f: &fn(&mut T) -> R) -> R { unsafe { - let node_box: *mut bindings::utils::rust_box = transmute(self.obj); + let node_box: *mut bindings::utils::rust_box> = transmute(self.obj); let node = &mut (*node_box).payload; let old = node.abstract; node.abstract = Some(self); @@ -347,18 +345,18 @@ impl AbstractNode { self.type_id() == ElementNodeTypeId(HTMLStyleElementTypeId) } - pub unsafe fn raw_object(self) -> *mut Node { + pub unsafe fn raw_object(self) -> *mut Node { self.obj } - pub fn from_raw(raw: *mut Node) -> AbstractNode { + pub fn from_raw(raw: *mut Node) -> AbstractNode { AbstractNode { obj: raw } } } -impl DebugMethods for AbstractNode { +impl DebugMethods for AbstractNode { // Dumps the subtree rooted at this node, for debugging. fn dump(&self) { self.dump_indent(0); @@ -385,8 +383,8 @@ impl DebugMethods for AbstractNode { } } -impl Node { - pub unsafe fn as_abstract_node(node: ~N) -> AbstractNode { +impl Node { + pub unsafe fn as_abstract_node(node: ~N) -> AbstractNode { // This surrenders memory management of the node! let mut node = AbstractNode { obj: transmute(node), @@ -409,7 +407,7 @@ impl Node { } } - pub fn new(type_id: NodeTypeId) -> Node { + pub fn new(type_id: NodeTypeId) -> Node { Node { wrapper: WrapperCache::new(), type_id: type_id, diff --git a/src/components/main/html/hubbub_html_parser.rs b/src/components/main/html/hubbub_html_parser.rs index 549f6ec5b0a..7d601950cfc 100644 --- a/src/components/main/html/hubbub_html_parser.rs +++ b/src/components/main/html/hubbub_html_parser.rs @@ -3,7 +3,8 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::element::*; -use dom::node::{AbstractNode, Comment, Doctype, Element, ElementNodeTypeId, Node, Text}; +use dom::node::{AbstractNode, Comment, Doctype, Element, ElementNodeTypeId, Node, ScriptView}; +use dom::node::{Text}; use html::cssparse::{InlineProvenance, StylesheetProvenance, UrlProvenance, spawn_css_parser}; use newcss::stylesheet::Stylesheet; use util::task::spawn_conversation; @@ -49,7 +50,7 @@ enum JSMessage { } struct HtmlParserResult { - root: AbstractNode, + root: AbstractNode, style_port: Port>, js_port: Port, } @@ -59,11 +60,11 @@ trait NodeWrapping { unsafe fn from_hubbub_node(n: hubbub::NodeDataPtr) -> Self; } -impl NodeWrapping for AbstractNode { +impl NodeWrapping for AbstractNode { unsafe fn to_hubbub_node(self) -> hubbub::NodeDataPtr { cast::transmute(self) } - unsafe fn from_hubbub_node(n: hubbub::NodeDataPtr) -> AbstractNode { + unsafe fn from_hubbub_node(n: hubbub::NodeDataPtr) -> AbstractNode { cast::transmute(n) } } @@ -153,7 +154,7 @@ fn js_script_listener(to_parent: Chan<~[~[u8]]>, // Silly macros to handle constructing DOM nodes. This produces bad code and should be optimized // via atomization (issue #85). -fn build_element_from_tag(tag: &str) -> AbstractNode { +fn build_element_from_tag(tag: &str) -> AbstractNode { // TODO (Issue #85): use atoms handle_element!(tag, "a", HTMLAnchorElementTypeId, HTMLAnchorElement, []); handle_element!(tag, "aside", HTMLAsideElementTypeId, HTMLAsideElement, []); @@ -238,7 +239,7 @@ pub fn parse_html(url: Url, // consists of processing inline stylesheets, but in the future it might perform // prefetching, etc. let css_chan2 = css_chan.clone(); - let append_hook: ~fn(AbstractNode, AbstractNode) = |parent_node, child_node| { + let append_hook: ~fn(AbstractNode, AbstractNode) = |parent_node, child_node| { if parent_node.is_style_element() && child_node.is_text() { debug!("found inline CSS stylesheet"); let url = url::from_str("http://example.com/"); // FIXME @@ -335,8 +336,8 @@ pub fn parse_html(url: Url, append_child: |parent: hubbub::NodeDataPtr, child: hubbub::NodeDataPtr| { unsafe { debug!("append child %x %x", cast::transmute(parent), cast::transmute(child)); - let parent: AbstractNode = NodeWrapping::from_hubbub_node(parent); - let child: AbstractNode = NodeWrapping::from_hubbub_node(child); + let parent: AbstractNode = NodeWrapping::from_hubbub_node(parent); + let child: AbstractNode = NodeWrapping::from_hubbub_node(child); parent.add_child(child); append_hook(parent, child); } @@ -386,7 +387,7 @@ pub fn parse_html(url: Url, url: Url, js_chan: SharedChan) { unsafe { - let script: AbstractNode = NodeWrapping::from_hubbub_node(script); + let script: AbstractNode = NodeWrapping::from_hubbub_node(script); do script.with_imm_element |script| { match script.get_attr(~"src") { Some(src) => { diff --git a/src/components/main/layout/aux.rs b/src/components/main/layout/aux.rs index 8a311098d13..1cee194b128 100644 --- a/src/components/main/layout/aux.rs +++ b/src/components/main/layout/aux.rs @@ -4,16 +4,59 @@ //! Code for managing the layout data in the DOM. -use dom::node::{AbstractNode, LayoutData}; +use dom::node::{AbstractNode, LayoutView}; +use layout::flow::FlowContext; +use newcss::complete::CompleteSelectResults; use servo_util::tree::TreeUtils; +/// Data that layout associates with a node. +pub struct LayoutData { + /// The results of CSS styling for this node. + style: Option, + + /// The CSS flow that this node is associated with. + flow: Option, +} + +impl LayoutData { + /// Creates new layout data. + pub fn new() -> LayoutData { + LayoutData { + style: None, + flow: None, + } + } +} + +/// Functionality useful for querying the layout-specific data on DOM nodes. pub trait LayoutAuxMethods { + fn layout_data(self) -> @mut LayoutData; + pub fn has_layout_data(self) -> bool; + fn set_layout_data(self, data: @mut LayoutData); + fn initialize_layout_data(self) -> Option<@mut LayoutData>; fn initialize_style_for_subtree(self, refs: &mut ~[@mut LayoutData]); } -impl LayoutAuxMethods for AbstractNode { +impl LayoutAuxMethods for AbstractNode { + // FIXME (Rust #3080): These unsafe blocks are *not* unused! + pub fn layout_data(self) -> @mut LayoutData { + unsafe { + self.unsafe_layout_data() + } + } + pub fn has_layout_data(self) -> bool { + unsafe { + self.unsafe_has_layout_data() + } + } + pub fn set_layout_data(self, data: @mut LayoutData) { + unsafe { + self.unsafe_set_layout_data(data) + } + } + /// If none exists, creates empty layout data for the node (the reader-auxiliary /// box in the COW model) and populates it with an empty style object. fn initialize_layout_data(self) -> Option<@mut LayoutData> { diff --git a/src/components/main/layout/box.rs b/src/components/main/layout/box.rs index f66f739218a..7f7945cea22 100644 --- a/src/components/main/layout/box.rs +++ b/src/components/main/layout/box.rs @@ -5,7 +5,7 @@ //! The `RenderBox` type, which represents the leaves of the layout tree. use css::node_style::StyledNode; -use dom::node::AbstractNode; +use dom::node::{AbstractNode, LayoutView}; use layout::context::LayoutContext; use layout::debug::DebugMethods; use layout::display_list_builder::{DisplayListBuilder, ToGfxColor}; @@ -145,7 +145,7 @@ pub enum SplitBoxResult { /// Data common to all render boxes. pub struct RenderBoxBase { /// The DOM node that this `RenderBox` originates from. - node: AbstractNode, + node: AbstractNode, /// The reference to the containing flow context which this box participates in. ctx: FlowContext, @@ -161,7 +161,8 @@ pub struct RenderBoxBase { impl RenderBoxBase { /// Constructs a new `RenderBoxBase` instance. - pub fn new(node: AbstractNode, flow_context: FlowContext, id: int) -> RenderBoxBase { + pub fn new(node: AbstractNode, flow_context: FlowContext, id: int) + -> RenderBoxBase { RenderBoxBase { node: node, ctx: flow_context, @@ -501,7 +502,7 @@ pub impl RenderBox { } /// A convenience function to access the DOM node that this render box represents. - fn node(&self) -> AbstractNode { + fn node(&self) -> AbstractNode { self.with_imm_base(|base| base.node) } @@ -509,7 +510,7 @@ pub impl RenderBox { /// represents. /// /// If there is no ancestor-or-self `Element` node, fails. - fn nearest_ancestor_element(&self) -> AbstractNode { + fn nearest_ancestor_element(&self) -> AbstractNode { do self.with_imm_base |base| { let mut node = base.node; while !node.is_element() { diff --git a/src/components/main/layout/box_builder.rs b/src/components/main/layout/box_builder.rs index 12ad9aa199f..5e7a067815d 100644 --- a/src/components/main/layout/box_builder.rs +++ b/src/components/main/layout/box_builder.rs @@ -6,7 +6,8 @@ use dom::element::*; use dom::node::{AbstractNode, CommentNodeTypeId, DoctypeNodeTypeId}; -use dom::node::{ElementNodeTypeId, TextNodeTypeId}; +use dom::node::{ElementNodeTypeId, LayoutView, TextNodeTypeId}; +use layout::aux::LayoutAuxMethods; use layout::block::BlockFlowData; use layout::box::{GenericRenderBoxClass, ImageRenderBox, ImageRenderBoxClass, RenderBox}; use layout::box::{RenderBoxBase, RenderBoxType, RenderBox_Generic, RenderBox_Image}; @@ -51,7 +52,7 @@ enum InlineSpacerSide { LogicalAfter, } -priv fn simulate_UA_display_rules(node: AbstractNode) -> CSSDisplay { +priv fn simulate_UA_display_rules(node: AbstractNode) -> CSSDisplay { // FIXME /*let resolved = do node.aux |nd| { match nd.style.display_type { @@ -95,14 +96,14 @@ impl BoxGenerator { } /* Whether "spacer" boxes are needed to stand in for this DOM node */ - fn inline_spacers_needed_for_node(&self, _: AbstractNode) -> bool { + fn inline_spacers_needed_for_node(&self, _: AbstractNode) -> bool { return false; } // TODO: implement this, generating spacer fn make_inline_spacer_for_node_side(&self, _: &LayoutContext, - _: AbstractNode, + _: AbstractNode, _: InlineSpacerSide) -> Option { None @@ -111,7 +112,7 @@ impl BoxGenerator { pub fn push_node(&mut self, ctx: &LayoutContext, builder: &mut LayoutTreeBuilder, - node: AbstractNode) { + node: AbstractNode) { debug!("BoxGenerator[f%d]: pushing node: %s", self.flow.id(), node.debug_str()); // first, determine the box type, based on node characteristics @@ -159,7 +160,7 @@ impl BoxGenerator { pub fn pop_node(&mut self, ctx: &LayoutContext, _builder: &LayoutTreeBuilder, - node: AbstractNode) { + node: AbstractNode) { debug!("BoxGenerator[f%d]: popping node: %s", self.flow.id(), node.debug_str()); match self.flow { @@ -222,14 +223,16 @@ impl BuilderContext { priv fn create_child_flow_of_type(&self, flow_type: FlowContextType, builder: &mut LayoutTreeBuilder, - node: AbstractNode) -> BuilderContext { + node: AbstractNode) -> BuilderContext { let new_flow = builder.make_flow(flow_type, node); self.attach_child_flow(new_flow); BuilderContext::new(@mut BoxGenerator::new(new_flow)) } - priv fn make_inline_collector(&mut self, builder: &mut LayoutTreeBuilder, node: AbstractNode) + priv fn make_inline_collector(&mut self, + builder: &mut LayoutTreeBuilder, + node: AbstractNode) -> BuilderContext { debug!("BuilderContext: making new inline collector flow"); let new_flow = builder.make_flow(Flow_Inline, node); @@ -241,7 +244,9 @@ impl BuilderContext { BuilderContext::new(new_generator) } - priv fn get_inline_collector(&mut self, builder: &mut LayoutTreeBuilder, node: AbstractNode) + priv fn get_inline_collector(&mut self, + builder: &mut LayoutTreeBuilder, + node: AbstractNode) -> BuilderContext { match copy self.inline_collector { Some(collector) => BuilderContext::new(collector), @@ -256,7 +261,9 @@ impl BuilderContext { // returns a context for the current node, or None if the document subtree rooted // by the node should not generate a layout tree. For example, nodes with style 'display:none' // should just not generate any flows or boxes. - fn containing_context_for_node(&mut self, node: AbstractNode, builder: &mut LayoutTreeBuilder) + fn containing_context_for_node(&mut self, + node: AbstractNode, + builder: &mut LayoutTreeBuilder) -> Option { // TODO: remove this once UA styles work // TODO: handle interactions with 'float', 'position' (CSS 2.1, Section 9.7) @@ -296,7 +303,7 @@ pub impl LayoutTreeBuilder { /// and recurses on its children. fn construct_recursively(&mut self, layout_ctx: &LayoutContext, - cur_node: AbstractNode, + cur_node: AbstractNode, parent_ctx: &mut BuilderContext) { debug!("Considering node: %s", cur_node.debug_str()); @@ -418,7 +425,7 @@ pub impl LayoutTreeBuilder { } /// Entry point for box creation. Should only be called on the root DOM element. - fn construct_trees(&mut self, layout_ctx: &LayoutContext, root: AbstractNode) + fn construct_trees(&mut self, layout_ctx: &LayoutContext, root: AbstractNode) -> Result { let new_flow = self.make_flow(Flow_Root, root); let new_generator = @mut BoxGenerator::new(new_flow); @@ -430,7 +437,7 @@ pub impl LayoutTreeBuilder { } /// Creates a flow of the given type for the supplied node. - fn make_flow(&mut self, ty: FlowContextType, node: AbstractNode) -> FlowContext { + fn make_flow(&mut self, ty: FlowContextType, node: AbstractNode) -> FlowContext { let info = FlowData::new(self.next_flow_id(), node); let result = match ty { Flow_Absolute => AbsoluteFlow(@mut info), @@ -450,7 +457,7 @@ pub impl LayoutTreeBuilder { fn make_box(&mut self, layout_ctx: &LayoutContext, ty: RenderBoxType, - node: AbstractNode, + node: AbstractNode, flow_context: FlowContext) -> RenderBox { let base = RenderBoxBase::new(node, flow_context, self.next_box_id()); @@ -465,7 +472,7 @@ pub impl LayoutTreeBuilder { fn make_image_box(&mut self, layout_ctx: &LayoutContext, - node: AbstractNode, + node: AbstractNode, base: RenderBoxBase) -> RenderBox { assert!(node.is_image_element()); @@ -483,7 +490,7 @@ pub impl LayoutTreeBuilder { } } - fn decide_box_type(&self, node: AbstractNode, _: CSSDisplay) -> RenderBoxType { + fn decide_box_type(&self, node: AbstractNode, _: CSSDisplay) -> RenderBoxType { if node.is_text() { RenderBox_Text } else if node.is_image_element() { diff --git a/src/components/main/layout/flow.rs b/src/components/main/layout/flow.rs index b28f11867f6..5add5fb1cf9 100644 --- a/src/components/main/layout/flow.rs +++ b/src/components/main/layout/flow.rs @@ -25,8 +25,8 @@ /// line breaks and mapping to CSS boxes, for the purpose of handling `getClientRects()` and /// similar methods. -use dom::node::AbstractNode; -use layout::block::{BlockFlowData}; +use dom::node::{AbstractNode, LayoutView}; +use layout::block::BlockFlowData; use layout::box::RenderBox; use layout::context::LayoutContext; use layout::debug::DebugMethods; @@ -140,7 +140,7 @@ impl TreeNodeRef for FlowContext { /// FIXME: We need a naming convention for pseudo-inheritance like this. How about /// `CommonFlowInfo`? pub struct FlowData { - node: AbstractNode, + node: AbstractNode, parent: Option, first_child: Option, @@ -202,7 +202,7 @@ impl TreeNode for FlowData { } impl FlowData { - pub fn new(id: int, node: AbstractNode) -> FlowData { + pub fn new(id: int, node: AbstractNode) -> FlowData { FlowData { node: node, @@ -321,7 +321,7 @@ impl<'self> FlowContext { } pub fn foldl_boxes_for_node(&self, - node: AbstractNode, + node: AbstractNode, seed: B, callback: &fn(a: B, RenderBox) -> B) -> B { @@ -358,7 +358,9 @@ impl<'self> FlowContext { true } - pub fn iter_boxes_for_node(&self, node: AbstractNode, callback: &fn(RenderBox) -> bool) + pub fn iter_boxes_for_node(&self, + node: AbstractNode, + callback: &fn(RenderBox) -> bool) -> bool { for self.iter_all_boxes |box| { if box.node() == node { diff --git a/src/components/main/layout/inline.rs b/src/components/main/layout/inline.rs index 237f3ca29de..afa1543ce4f 100644 --- a/src/components/main/layout/inline.rs +++ b/src/components/main/layout/inline.rs @@ -4,7 +4,7 @@ use core::cell::Cell; use core; -use dom::node::AbstractNode; +use dom::node::{AbstractNode, LayoutView}; use layout::box::{CannotSplit, GenericRenderBoxClass, ImageRenderBoxClass, RenderBox}; use layout::box::{SplitDidFit, SplitDidNotFit, TextRenderBoxClass, UnscannedTextRenderBoxClass}; use layout::context::LayoutContext; @@ -49,12 +49,12 @@ hard to try out that alternative. */ pub struct NodeRange { - node: AbstractNode, + node: AbstractNode, range: Range, } pub impl NodeRange { - fn new(node: AbstractNode, range: &Range) -> NodeRange { + fn new(node: AbstractNode, range: &Range) -> NodeRange { NodeRange { node: node, range: copy *range } } } @@ -68,7 +68,7 @@ impl ElementMapping { ElementMapping { entries: ~[] } } - pub fn add_mapping(&mut self, node: AbstractNode, range: &Range) { + pub fn add_mapping(&mut self, node: AbstractNode, range: &Range) { self.entries.push(NodeRange::new(node, range)) } diff --git a/src/components/main/layout/layout_task.rs b/src/components/main/layout/layout_task.rs index 66decaa62b9..5da211854bf 100644 --- a/src/components/main/layout/layout_task.rs +++ b/src/components/main/layout/layout_task.rs @@ -8,8 +8,8 @@ use css::matching::MatchMethods; use css::select::new_css_select_ctx; use dom::event::ReflowEvent; -use dom::node::{AbstractNode, LayoutData}; -use layout::aux::LayoutAuxMethods; +use dom::node::{AbstractNode, LayoutView, ScriptView}; +use layout::aux::{LayoutData, LayoutAuxMethods}; use layout::box_builder::LayoutTreeBuilder; use layout::context::LayoutContext; use layout::debug::{BoxedMutDebugMethods, DebugMethods}; @@ -22,6 +22,7 @@ use servo_util::time::time; use servo_util::time::profile; use servo_util::time::ProfilerChan; +use core::cast::transmute; use core::cell::Cell; use core::comm::{Chan, Port, SharedChan}; use geom::point::Point2D; @@ -44,8 +45,8 @@ use std::net::url::Url; pub type LayoutTask = SharedChan; pub enum LayoutQuery { - ContentBox(AbstractNode), - ContentBoxes(AbstractNode) + ContentBox(AbstractNode), + ContentBoxes(AbstractNode), } pub type LayoutQueryResponse = Result; @@ -81,7 +82,7 @@ impl Damage { } pub struct BuildData { - node: AbstractNode, + node: AbstractNode, url: Url, script_chan: SharedChan, window_size: Size2D, @@ -180,7 +181,11 @@ impl Layout { /// The high-level routine that performs layout tasks. fn handle_build(&mut self, data: &BuildData) { - let node = &data.node; + // FIXME: Isolate this transmutation into a "bridge" module. + let node: &AbstractNode = unsafe { + transmute(&data.node) + }; + // FIXME: Bad copy! let doc_url = copy data.url; let script_chan = data.script_chan.clone(); @@ -279,6 +284,11 @@ impl Layout { fn handle_query(&self, query: LayoutQuery, reply_chan: Chan) { match query { ContentBox(node) => { + // FIXME: Isolate this transmutation into a single "bridge" module. + let node: AbstractNode = unsafe { + transmute(node) + }; + let response = match node.layout_data().flow { None => { error!("no flow present"); @@ -306,6 +316,11 @@ impl Layout { reply_chan.send(response) } ContentBoxes(node) => { + // FIXME: Isolate this transmutation into a single "bridge" module. + let node: AbstractNode = unsafe { + transmute(node) + }; + let response = match node.layout_data().flow { None => Err(()), Some(flow) => { From 83e1bd81e81bc4a121b182f9ac1b41fd22af97a3 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Tue, 28 May 2013 09:59:46 -0700 Subject: [PATCH 5/5] Fix merge fallout. --- src/components/gfx/render_task.rs | 28 ++++++++++++++++++++------ src/components/main/compositing/mod.rs | 2 +- src/components/main/engine.rs | 10 ++++----- src/components/main/layout/box.rs | 2 +- src/components/main/servo.rc | 4 ++-- src/etc/tidy.py | 2 +- 6 files changed, 32 insertions(+), 16 deletions(-) diff --git a/src/components/gfx/render_task.rs b/src/components/gfx/render_task.rs index 231738b3a14..4b55382305c 100644 --- a/src/components/gfx/render_task.rs +++ b/src/components/gfx/render_task.rs @@ -34,7 +34,10 @@ pub struct RenderTask { } impl RenderTask { - pub fn new(compositor: C, opts: Opts) -> RenderTask { + pub fn new(compositor: C, + opts: Opts, + profiler_chan: ProfilerChan) + -> RenderTask { let compositor_cell = Cell(compositor); let opts_cell = Cell(opts); let (port, chan) = comm::stream(); @@ -48,14 +51,21 @@ impl RenderTask { let n_threads = opts.n_render_threads; let new_opts_cell = Cell(opts); + let profiler_chan = profiler_chan.clone(); + let profiler_chan_copy = profiler_chan.clone(); + let thread_pool = do TaskPool::new(n_threads, Some(SingleThreaded)) { let opts_cell = Cell(new_opts_cell.with_ref(|o| copy *o)); + let profiler_chan = Cell(profiler_chan.clone()); + let f: ~fn(uint) -> ThreadRenderContext = |thread_index| { let opts = opts_cell.with_ref(|opts| copy *opts); ThreadRenderContext { thread_index: thread_index, - font_ctx: @mut FontContext::new(opts.render_backend, false), + font_ctx: @mut FontContext::new(opts.render_backend, + false, + profiler_chan.take()), opts: opts, } }; @@ -67,7 +77,8 @@ impl RenderTask { port: port.take(), compositor: compositor, thread_pool: thread_pool, - opts: opts_cell.take() + opts: opts_cell.take(), + profiler_chan: profiler_chan_copy, }; renderer.start(); @@ -91,7 +102,9 @@ priv struct Renderer { compositor: C, thread_pool: TaskPool, opts: Opts, - prof_chan: ProfilerChan, + + /// A channel to the profiler. + profiler_chan: ProfilerChan, } impl Renderer { @@ -112,8 +125,11 @@ impl Renderer { fn render(&mut self, render_layer: RenderLayer) { debug!("renderer: rendering"); do time("rendering") { - let layer_buffer_set = do render_layers(&render_layer, &self.opts) - |render_layer_ref, layer_buffer, buffer_chan| { + let layer_buffer_set = do render_layers(&render_layer, + &self.opts, + self.profiler_chan.clone()) |render_layer_ref, + layer_buffer, + buffer_chan| { let layer_buffer_cell = Cell(layer_buffer); do self.thread_pool.execute |thread_render_context| { do layer_buffer_cell.with_ref |layer_buffer| { diff --git a/src/components/main/compositing/mod.rs b/src/components/main/compositing/mod.rs index 59529714f5f..14cf0052a5a 100644 --- a/src/components/main/compositing/mod.rs +++ b/src/components/main/compositing/mod.rs @@ -190,7 +190,7 @@ fn run_main_loop(port: Port, }; do window.set_composite_callback { - do profile(time::CompositingCategory, prof_chan.clone()) { + do profile(time::CompositingCategory, profiler_chan.clone()) { debug!("compositor: compositing"); // Adjust the layer dimensions as necessary to correspond to the size of the window. scene.size = window.size(); diff --git a/src/components/main/engine.rs b/src/components/main/engine.rs index 3a0e4f45e99..575fbc57bbf 100644 --- a/src/components/main/engine.rs +++ b/src/components/main/engine.rs @@ -17,11 +17,9 @@ use gfx::render_task; use servo_net::image_cache_task::{ImageCacheTask, ImageCacheTaskClient}; use servo_net::resource_task::ResourceTask; use servo_net::resource_task; -use std::net::url::Url; - +use servo_util::time::{ProfilerChan, ProfilerPort, ProfilerTask}; use servo_util::time; -use servo_util::time::ProfilerChan; -use servo_util::time::ProfilerPort; +use std::net::url::Url; pub type EngineTask = Chan; @@ -38,7 +36,7 @@ pub struct Engine { image_cache_task: ImageCacheTask, layout_task: LayoutTask, script_task: ScriptTask, - profiler_task: time::ProfilerTask, + profiler_task: ProfilerTask, } impl Engine { @@ -60,6 +58,8 @@ impl Engine { opts.with_ref(|o| copy *o), profiler_chan.clone()); + let profiler_task = ProfilerTask::new(profiler_port.take(), profiler_chan.clone()); + let opts = opts.take(); let layout_task = LayoutTask(render_task.clone(), image_cache_task.clone(), diff --git a/src/components/main/layout/box.rs b/src/components/main/layout/box.rs index 7f7945cea22..49444f03dc8 100644 --- a/src/components/main/layout/box.rs +++ b/src/components/main/layout/box.rs @@ -760,7 +760,7 @@ pub impl RenderBox { fn text_decoration(&self) -> CSSTextDecoration { /// Computes the propagated value of text-decoration, as specified in CSS 2.1 ยง 16.3.1 /// TODO: make sure this works with anonymous box generation. - fn get_propagated_text_decoration(element: AbstractNode) -> CSSTextDecoration { + fn get_propagated_text_decoration(element: AbstractNode) -> CSSTextDecoration { //Skip over non-element nodes in the DOM if(!element.is_element()){ return match element.parent_node() { diff --git a/src/components/main/servo.rc b/src/components/main/servo.rc index 52070cb7891..e4526bacf23 100755 --- a/src/components/main/servo.rc +++ b/src/components/main/servo.rc @@ -155,8 +155,8 @@ fn run(opts: &Opts) { script_chan, resource_task, image_cache_task, - prof_port, - prof_chan); + profiler_port, + profiler_chan); // Send the URL command to the engine task. for opts.urls.each |filename| { diff --git a/src/etc/tidy.py b/src/etc/tidy.py index 37c499f57a8..4ffe776e8c3 100644 --- a/src/etc/tidy.py +++ b/src/etc/tidy.py @@ -35,7 +35,7 @@ exceptions = [ "src/support", # Upstream "src/platform", # Upstream "src/compiler", # Upstream - "src/components/servo/dom/bindings/codegen", # Generated and upstream code combined with our own. Could use cleanup + "src/components/main/dom/bindings/codegen", # Generated and upstream code combined with our own. Could use cleanup ] def should_check(name):