aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2012-05-24 16:38:30 -0700
committerPatrick Walton <pcwalton@mimiga.net>2012-05-24 16:39:35 -0700
commit47f618bac2ca2dc34ab121dbdfff778982b689de (patch)
tree5668d4aa8d2ea4c2587d6f315fab50bf25477ba6 /src
parentb281a508e066b64577c3b8950210bfd8d9b7c37d (diff)
downloadservo-47f618bac2ca2dc34ab121dbdfff778982b689de.tar.gz
servo-47f618bac2ca2dc34ab121dbdfff778982b689de.zip
Make <head> display: none
Diffstat (limited to 'src')
m---------src/rust-azure0
m---------src/rust-harfbuzz0
m---------src/rust-mozjs0
-rw-r--r--src/servo/dom/base.rs3
-rw-r--r--src/servo/layout/box_builder.rs9
-rw-r--r--src/servo/layout/style/style.rs7
-rw-r--r--src/servo/parser/html_builder.rs46
7 files changed, 39 insertions, 26 deletions
diff --git a/src/rust-azure b/src/rust-azure
-Subproject c25b44e58500a684d2937cbdb41c76966ba2ac1
+Subproject 4fc1f2a7f87c44dd87cb05815001dd4f0947023
diff --git a/src/rust-harfbuzz b/src/rust-harfbuzz
-Subproject 43db075b2aac4c9b8623736b034479523cc2005
+Subproject 5c0def8dadcde1d4bea1f532067f6505ac893a2
diff --git a/src/rust-mozjs b/src/rust-mozjs
-Subproject 1ba4722cd56771157c816ba1b0fc255ef6b5d50
+Subproject 2b9cb42b5c855e2f6925be8ddbff4684c2b2531
diff --git a/src/servo/dom/base.rs b/src/servo/dom/base.rs
index bf125829d43..18341096fb4 100644
--- a/src/servo/dom/base.rs
+++ b/src/servo/dom/base.rs
@@ -26,7 +26,8 @@ class element {
enum element_subclass {
es_unknown,
es_div,
- es_img(size<au>)
+ es_img(size<au>),
+ es_head
}
#[doc="The rd_aux data is a (weak) pointer to the layout data, which contains
diff --git a/src/servo/layout/box_builder.rs b/src/servo/layout/box_builder.rs
index 7f5bcd65791..b9178d80eb3 100644
--- a/src/servo/layout/box_builder.rs
+++ b/src/servo/layout/box_builder.rs
@@ -73,6 +73,9 @@ impl methods for ctxt {
};
btree.add_child(anon_box, kid_box);
}
+ di_none {
+ // Nothing to do.
+ }
}
}
}
@@ -104,6 +107,9 @@ impl methods for ctxt {
di_inline {
btree.add_child(self.parent_box, kid_box);
}
+ di_none {
+ // Nothing to do.
+ }
}
}
}
@@ -114,8 +120,9 @@ impl methods for ctxt {
self.parent_node.dump();
alt self.parent_node.get_computed_style().display {
- di_block { self.construct_boxes_for_block_children(); }
+ di_block { self.construct_boxes_for_block_children(); }
di_inline { self.construct_boxes_for_inline_children(); }
+ di_none { /* Nothing to do. */ }
}
self.finish_anonymous_box_if_necessary();
diff --git a/src/servo/layout/style/style.rs b/src/servo/layout/style/style.rs
index b031cad3bae..1ab574cb442 100644
--- a/src/servo/layout/style/style.rs
+++ b/src/servo/layout/style/style.rs
@@ -1,6 +1,7 @@
#[doc="High-level interface to CSS selector matching."]
-import dom::base::{element, es_div, es_img, nk_element, nk_text, node};
+import dom::base::{element, es_div, es_head, es_img, nk_element, nk_text};
+import dom::base::{node};
import dom::base::node_kind;
import dom::rcu::reader_methods;
import /*layout::*/base::*; // FIXME: resolve bug requires *
@@ -11,7 +12,8 @@ enum computed_style = {
enum display {
di_block,
- di_inline
+ di_inline,
+ di_none
}
#[doc="Returns the default style for the given node kind."]
@@ -23,6 +25,7 @@ fn default_style_for_node_kind(kind: node_kind) -> computed_style {
nk_element(element) {
alt *element.subclass {
es_div { computed_style({ mut display: di_block }) }
+ es_head { computed_style({ mut display: di_none }) }
es_img(*) { computed_style({ mut display: di_inline }) }
es_unknown { computed_style({ mut display: di_inline }) }
}
diff --git a/src/servo/parser/html_builder.rs b/src/servo/parser/html_builder.rs
index 93c77e5046e..ade6275ce41 100644
--- a/src/servo/parser/html_builder.rs
+++ b/src/servo/parser/html_builder.rs
@@ -1,8 +1,9 @@
#[doc="Constructs a DOM tree from an incoming token stream."]
import dom::rcu::writer_methods;
-import dom::base::{element, es_div, es_img, es_unknown, methods, nk_element};
-import dom::base::{nk_text, rd_tree_ops, wr_tree_ops};
+import dom::base::{element, element_subclass, es_div, es_head, es_img};
+import dom::base::{es_unknown, methods, nk_element, nk_text, rd_tree_ops};
+import dom::base::{wr_tree_ops};
import dom = dom::base;
import parser = parser::html;
import html::token;
@@ -29,8 +30,9 @@ fn link_up_attribute(scope: dom::node_scope, node: dom::node, key: str,
some(s) { dimensions.height = geom::px_to_au(s); }
}
}
- es_div | es_img(*) | es_unknown {
+ es_div | es_img(*) | es_head | es_unknown {
// Drop on the floor.
+ // FIXME: Implement attributes in a generic way.
}
}
}
@@ -41,6 +43,20 @@ fn link_up_attribute(scope: dom::node_scope, node: dom::node, key: str,
}
}
+fn build_element_subclass(tag_name: str) -> ~element_subclass {
+ alt tag_name {
+ "div" { ret ~es_div; }
+ "img" {
+ ret ~es_img({
+ mut width: geom::px_to_au(100),
+ mut height: geom::px_to_au(100)
+ });
+ }
+ "head" { ret ~es_head; }
+ _ { ret ~es_unknown; }
+ }
+}
+
fn build_dom(scope: dom::node_scope,
stream: port<token>) -> dom::node {
// The current reference node.
@@ -49,26 +65,12 @@ fn build_dom(scope: dom::node_scope,
let token = stream.recv();
alt token {
parser::to_eof { break; }
- parser::to_start_opening_tag("div") {
- #debug["DIV"];
- let new_node =
- scope.new_node(dom::nk_element(element("div", ~es_div)));
- scope.add_child(cur, new_node);
- cur = new_node;
- }
- parser::to_start_opening_tag("img") {
- #debug["IMG"];
- let new_node =
- scope.new_node(dom::nk_element(element("img",
- ~es_img({mut width: geom::px_to_au(100),
- mut height: geom::px_to_au(100)}))));
- scope.add_child(cur, new_node);
- cur = new_node;
- }
- parser::to_start_opening_tag(t) {
- #debug["unknown element: %s", t];
+ parser::to_start_opening_tag(tag_name) {
+ #debug["starting tag %s", tag_name];
+ let element_subclass = build_element_subclass(tag_name);
let new_node =
- scope.new_node(dom::nk_element(element(t, ~es_unknown)));
+ scope.new_node(dom::nk_element(element(tag_name,
+ element_subclass)));
scope.add_child(cur, new_node);
cur = new_node;
}