diff options
author | Patrick Walton <pcwalton@mimiga.net> | 2012-05-24 13:57:50 -0700 |
---|---|---|
committer | Patrick Walton <pcwalton@mimiga.net> | 2012-05-24 13:58:00 -0700 |
commit | f5236ef7e3a88e7abeb2f2263950f14868e0427a (patch) | |
tree | c5396f7933f4e86775db73f6aba6c8a879a22fb7 /src | |
parent | 02a20258d9a085b74b00632679c806fb2699875f (diff) | |
download | servo-f5236ef7e3a88e7abeb2f2263950f14868e0427a.tar.gz servo-f5236ef7e3a88e7abeb2f2263950f14868e0427a.zip |
Parse unknown HTML elements into something sane
Diffstat (limited to 'src')
-rw-r--r-- | src/servo/dom/base.rs | 1 | ||||
-rw-r--r-- | src/servo/layout/box_builder.rs | 1 | ||||
-rw-r--r-- | src/servo/layout/inline.rs | 2 | ||||
-rw-r--r-- | src/servo/layout/style/style.rs | 2 | ||||
-rw-r--r-- | src/servo/parser/html_builder.rs | 12 |
5 files changed, 12 insertions, 6 deletions
diff --git a/src/servo/dom/base.rs b/src/servo/dom/base.rs index 4581efdd56d..bf125829d43 100644 --- a/src/servo/dom/base.rs +++ b/src/servo/dom/base.rs @@ -24,6 +24,7 @@ class element { } enum element_subclass { + es_unknown, es_div, es_img(size<au>) } diff --git a/src/servo/layout/box_builder.rs b/src/servo/layout/box_builder.rs index 8e135666e39..ced3636ffb3 100644 --- a/src/servo/layout/box_builder.rs +++ b/src/servo/layout/box_builder.rs @@ -124,6 +124,7 @@ impl box_builder_priv for node { alt *element.subclass { es_div { bk_block } es_img(size) { bk_intrinsic(@size) } + es_unknown { bk_inline } } } } diff --git a/src/servo/layout/inline.rs b/src/servo/layout/inline.rs index 029930ade7b..928d6ab802c 100644 --- a/src/servo/layout/inline.rs +++ b/src/servo/layout/inline.rs @@ -29,7 +29,7 @@ impl inline_layout_methods for @box { self.bounds.size = { mut width: available_width, mut height: au(current_height) }; - #debug["reflow_inline root=%? size=%?", self, self.bounds]; + #debug["reflow_inline size=%?", self.bounds]; } } diff --git a/src/servo/layout/style/style.rs b/src/servo/layout/style/style.rs index 63b79498fdc..b031cad3bae 100644 --- a/src/servo/layout/style/style.rs +++ b/src/servo/layout/style/style.rs @@ -24,6 +24,7 @@ fn default_style_for_node_kind(kind: node_kind) -> computed_style { alt *element.subclass { es_div { computed_style({ mut display: di_block }) } es_img(*) { computed_style({ mut display: di_inline }) } + es_unknown { computed_style({ mut display: di_inline }) } } } } @@ -42,7 +43,6 @@ impl style_priv for node { default_style_for_node_kind(self.rd { |n| *n.kind }); #debug("recomputing style; parent node:"); - self.dump(); let the_layout_data = @layout_data({ mut computed_style: default_style, diff --git a/src/servo/parser/html_builder.rs b/src/servo/parser/html_builder.rs index 8d65a77c64b..f5545b8d8c4 100644 --- a/src/servo/parser/html_builder.rs +++ b/src/servo/parser/html_builder.rs @@ -1,8 +1,8 @@ #[doc="Constructs a DOM tree from an incoming token stream."] import dom::rcu::writer_methods; -import dom::base::{element, es_div, es_img, methods, nk_element, nk_text}; -import dom::base::{rd_tree_ops, wr_tree_ops}; +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 = dom::base; import parser = parser::html; import html::token; @@ -29,7 +29,7 @@ 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_div | es_img(*) | es_unknown { // Drop on the floor. } } @@ -67,7 +67,11 @@ fn build_dom(scope: dom::node_scope, cur = new_node; } parser::to_start_opening_tag(t) { - fail ("Unrecognized tag: " + t); + #debug["unknown element: %s", t]; + let new_node = + scope.new_node(dom::nk_element(element(t, ~es_unknown))); + scope.add_child(cur, new_node); + cur = new_node; } parser::to_attr(key, value) { #debug["attr: %? = %?", key, value]; |