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 27edb45ae41..90ed808c412 100755 --- a/configure +++ b/configure @@ -449,10 +449,11 @@ 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 src/test/ref +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 # 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/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 84% rename from src/components/servo-gfx/compositor.rs rename to src/components/gfx/compositor.rs index 7a3681a5721..83f8bb597a0 100644 --- a/src/components/servo-gfx/compositor.rs +++ b/src/components/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/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 98% rename from src/components/servo-gfx/render_layers.rs rename to src/components/gfx/render_layers.rs index 928097ceb00..49ee76130a5 100644 --- a/src/components/servo-gfx/render_layers.rs +++ b/src/components/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/gfx/render_task.rs similarity index 52% rename from src/components/servo-gfx/render_task.rs rename to src/components/gfx/render_task.rs index de49d839ed8..4b55382305c 100644 --- a/src/components/servo-gfx/render_task.rs +++ b/src/components/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,81 @@ 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, + profiler_chan: ProfilerChan) + -> 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 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, + profiler_chan.take()), + 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(), + profiler_chan: profiler_chan_copy, + }; + + renderer.start(); + } + + RenderTask { + channel: SharedChan::new(chan), + } + } } /// Data that needs to be kept around for each render thread. @@ -86,10 +100,11 @@ priv struct ThreadRenderContext { priv struct Renderer { port: Port, compositor: C, - layer_buffer_set_port: Cell>, thread_pool: TaskPool, opts: Opts, - prof_chan: ProfilerChan, + + /// A channel to the profiler. + profiler_chan: ProfilerChan, } impl Renderer { @@ -108,26 +123,13 @@ 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()) - |render_layer_ref, layer_buffer, buffer_chan| { + do time("rendering") { + 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| { @@ -160,7 +162,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-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 65% rename from src/components/servo/compositing/mod.rs rename to src/components/main/compositing/mod.rs index 16f088250ef..14cf0052a5a 100644 --- a/src/components/servo/compositing/mod.rs +++ b/src/components/main/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,14 +182,15 @@ 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. } } } }; 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(); @@ -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/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 85% rename from src/components/servo/css/matching.rs rename to src/components/main/css/matching.rs index 3a95aceac07..c792188e486 100644 --- a/src/components/servo/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/servo/css/node_style.rs b/src/components/main/css/node_style.rs similarity index 87% rename from src/components/servo/css/node_style.rs rename to src/components/main/css/node_style.rs index c6b72a7cb70..0f02f52d186 100644 --- a/src/components/servo/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/servo/css/node_util.rs b/src/components/main/css/node_util.rs similarity index 91% rename from src/components/servo/css/node_util.rs rename to src/components/main/css/node_util.rs index 0dc15dc6518..d31f1b0cf83 100644 --- a/src/components/servo/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/servo/css/node_void_ptr.rs b/src/components/main/css/node_void_ptr.rs similarity index 80% rename from src/components/servo/css/node_void_ptr.rs rename to src/components/main/css/node_void_ptr.rs index 3c25e0091c5..733ba563da3 100644 --- a/src/components/servo/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/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 70% rename from src/components/servo/css/select_handler.rs rename to src/components/main/css/select_handler.rs index 7dec3aae654..8ce4e58ef32 100644 --- a/src/components/servo/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/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 99% rename from src/components/servo/dom/bindings/codegen/Bindings.conf rename to src/components/main/dom/bindings/codegen/Bindings.conf index 442bd0b432c..fa3400d41a1 100644 --- a/src/components/servo/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/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 99% rename from src/components/servo/dom/bindings/codegen/CodegenRust.py rename to src/components/main/dom/bindings/codegen/CodegenRust.py index 0fc99027ab1..6f2715839cd 100644 --- a/src/components/servo/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/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 98% rename from src/components/servo/dom/bindings/element.rs rename to src/components/main/dom/bindings/element.rs index c6eb59107a8..66d47931f73 100644 --- a/src/components/servo/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/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 91% rename from src/components/servo/dom/bindings/node.rs rename to src/components/main/dom/bindings/node.rs index 52bd80f382b..36e1984d0ca 100644 --- a/src/components/servo/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/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 90% rename from src/components/servo/dom/bindings/text.rs rename to src/components/main/dom/bindings/text.rs index 41a4ece1c03..5067896a6e2 100644 --- a/src/components/servo/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/servo/dom/bindings/utils.rs b/src/components/main/dom/bindings/utils.rs similarity index 99% rename from src/components/servo/dom/bindings/utils.rs rename to src/components/main/dom/bindings/utils.rs index a27207ef32d..b341c6ae2f8 100644 --- a/src/components/servo/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/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 95% rename from src/components/servo/dom/characterdata.rs rename to src/components/main/dom/characterdata.rs index a8d81158d9c..4108868d8d4 100644 --- a/src/components/servo/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/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 92% rename from src/components/servo/dom/document.rs rename to src/components/main/dom/document.rs index 3dc72981f62..e912e593ec0 100644 --- a/src/components/servo/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/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 99% rename from src/components/servo/dom/element.rs rename to src/components/main/dom/element.rs index 6438d78410d..e3a5e59dae3 100644 --- a/src/components/servo/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/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 80% rename from src/components/servo/dom/htmlcollection.rs rename to src/components/main/dom/htmlcollection.rs index 0641987b341..762504a7002 100644 --- a/src/components/servo/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/servo/dom/node.rs b/src/components/main/dom/node.rs similarity index 74% rename from src/components/servo/dom/node.rs rename to src/components/main/dom/node.rs index 5ae3656e75e..15c4149f5d1 100644 --- a/src/components/servo/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/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 82% rename from src/components/servo/engine.rs rename to src/components/main/engine.rs index f5f3abaf4c0..575fbc57bbf 100644 --- a/src/components/servo/engine.rs +++ b/src/components/main/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}; @@ -17,49 +17,48 @@ 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; 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, layout_task: LayoutTask, script_task: ScriptTask, - profiler_task: time::ProfilerTask, + profiler_task: ProfilerTask, } 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 profiler_task = ProfilerTask::new(profiler_port.take(), 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/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 96% rename from src/components/servo/html/hubbub_html_parser.rs rename to src/components/main/html/hubbub_html_parser.rs index 549f6ec5b0a..7d601950cfc 100644 --- a/src/components/servo/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/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 55% rename from src/components/servo/layout/aux.rs rename to src/components/main/layout/aux.rs index 8a311098d13..1cee194b128 100644 --- a/src/components/servo/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/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 98% rename from src/components/servo/layout/box.rs rename to src/components/main/layout/box.rs index f66f739218a..49444f03dc8 100644 --- a/src/components/servo/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() { @@ -759,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/servo/layout/box_builder.rs b/src/components/main/layout/box_builder.rs similarity index 93% rename from src/components/servo/layout/box_builder.rs rename to src/components/main/layout/box_builder.rs index 12ad9aa199f..5e7a067815d 100644 --- a/src/components/servo/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/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 96% rename from src/components/servo/layout/flow.rs rename to src/components/main/layout/flow.rs index b28f11867f6..5add5fb1cf9 100644 --- a/src/components/servo/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/servo/layout/inline.rs b/src/components/main/layout/inline.rs similarity index 99% rename from src/components/servo/layout/inline.rs rename to src/components/main/layout/inline.rs index 237f3ca29de..afa1543ce4f 100644 --- a/src/components/servo/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/servo/layout/layout_task.rs b/src/components/main/layout/layout_task.rs similarity index 92% rename from src/components/servo/layout/layout_task.rs rename to src/components/main/layout/layout_task.rs index 27b9dd80ae4..5da211854bf 100644 --- a/src/components/servo/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(); @@ -267,7 +272,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. @@ -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) => { 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 75% rename from src/components/servo/servo.rc rename to src/components/main/servo.rc index ea0657ddb2e..e4526bacf23 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; @@ -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(), @@ -156,28 +155,21 @@ 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| { - 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); } 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 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): 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