aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-11-06 19:00:48 -0800
committerBrian Anderson <banderson@mozilla.com>2012-11-06 19:34:12 -0800
commit75a88e4f0831d7d5a086dddf2ba2d24aa859dcf9 (patch)
tree1edd164b35627d70ecb72efc3c9a084493feb0d2
parent8a95120a8e873df7be1b1bd10bbc2f9d5bb1bdf7 (diff)
downloadservo-75a88e4f0831d7d5a086dddf2ba2d24aa859dcf9.tar.gz
servo-75a88e4f0831d7d5a086dddf2ba2d24aa859dcf9.zip
Add default stylesheets
m---------src/rust-css0
m---------src/rust-netsurfcss0
-rw-r--r--src/servo/css/select.rs125
-rw-r--r--src/servo/css/select_handler.rs4
-rw-r--r--src/servo/layout/layout_task.rs6
-rwxr-xr-xsrc/servo/servo.rc1
6 files changed, 134 insertions, 2 deletions
diff --git a/src/rust-css b/src/rust-css
-Subproject d5734c425ae0dacb37f116ec3b0b8243d600987
+Subproject 935d2eb1cf334f8c90508c6bf20d6b0cdff7e33
diff --git a/src/rust-netsurfcss b/src/rust-netsurfcss
-Subproject 6d5b25957f5f6493b3acc6ed326354ad81c91cd
+Subproject d37a1703d2753e6e671f23d7acfa3d9c66235eb
diff --git a/src/servo/css/select.rs b/src/servo/css/select.rs
new file mode 100644
index 00000000000..8c58a218e68
--- /dev/null
+++ b/src/servo/css/select.rs
@@ -0,0 +1,125 @@
+use std::net::url::Url;
+use url_from_str = std::net::url::from_str;
+use std::cell::Cell;
+use newcss::stylesheet::Stylesheet;
+use newcss::select::SelectCtx;
+use newcss::types::OriginUA;
+use newcss::util::DataStream;
+
+pub fn new_css_select_ctx() -> SelectCtx {
+ let mut ctx = SelectCtx::new();
+ ctx.append_sheet(html4_default_style(), OriginUA);
+ ctx.append_sheet(servo_default_style(), OriginUA);
+ return move ctx;
+}
+
+fn html4_default_style() -> Stylesheet {
+ Stylesheet::new(default_url("html4_style"),
+ style_stream(html4_default_style_str()))
+}
+
+fn servo_default_style() -> Stylesheet {
+ Stylesheet::new(default_url("servo_style"),
+ style_stream(servo_default_style_str()))
+}
+
+fn default_url(name: &str) -> Url {
+ result::unwrap(url_from_str(fmt!("http://%s", name)))
+}
+
+fn style_stream(style: &str) -> DataStream {
+ let style = Cell(str::to_bytes(style));
+ |move style| if !style.is_empty() {
+ Some(style.take())
+ } else {
+ None
+ }
+}
+
+fn html4_default_style_str() -> ~str {
+~"
+html, address,
+blockquote,
+body, dd, div,
+dl, dt, fieldset, form,
+frame, frameset,
+h1, h2, h3, h4,
+h5, h6, noframes,
+ol, p, ul, center,
+ dir, hr, menu, pre { display: block; unicode-bidi: embed }
+ li { display: list-item }
+ head { display: none }
+ table { display: table }
+ tr { display: table-row }
+ thead { display: table-header-group }
+ tbody { display: table-row-group }
+ tfoot { display: table-footer-group }
+ col { display: table-column }
+ colgroup { display: table-column-group }
+ td, th { display: table-cell }
+ caption { display: table-caption }
+ th { font-weight: bolder; text-align: center }
+ caption { text-align: center }
+ body { margin: 8px }
+ h1 { font-size: 2em; margin: .67em 0 }
+ h2 { font-size: 1.5em; margin: .75em 0 }
+ h3 { font-size: 1.17em; margin: .83em 0 }
+h4, p,
+blockquote, ul,
+fieldset, form,
+ol, dl, dir,
+ menu { margin: 1.12em 0 }
+ h5 { font-size: .83em; margin: 1.5em 0 }
+ h6 { font-size: .75em; margin: 1.67em 0 }
+h1, h2, h3, h4,
+h5, h6, b,
+ strong { font-weight: bolder }
+ blockquote { margin-left: 40px; margin-right: 40px }
+i, cite, em,
+ var, address { font-style: italic }
+pre, tt, code,
+ kbd, samp { font-family: monospace }
+ pre { white-space: pre }
+button, textarea,
+ input, select { display: inline-block }
+ big { font-size: 1.17em }
+ small, sub, sup { font-size: .83em }
+ sub { vertical-align: sub }
+ sup { vertical-align: super }
+ table { border-spacing: 2px; }
+thead, tbody,
+ tfoot { vertical-align: middle }
+ td, th, tr { vertical-align: inherit }
+ s, strike, del { text-decoration: line-through }
+ hr { border: 1px inset }
+ol, ul, dir,
+ menu, dd { margin-left: 40px }
+ ol { list-style-type: decimal }
+ol ul, ul ol,
+ ul ul, ol ol { margin-top: 0; margin-bottom: 0 }
+ u, ins { text-decoration: underline }
+ br:before { content: \"\\A\"; white-space: pre-line }
+center { text-align: center }
+:link, :visited { text-decoration: underline }
+:focus { outline: thin dotted invert }
+
+/* Begin bidirectionality settings (do not change) */
+BDO[DIR=\"ltr\"] { direction: ltr; unicode-bidi: bidi-override }
+BDO[DIR=\"rtl\"] { direction: rtl; unicode-bidi: bidi-override }
+
+*[DIR=\"ltr\"] { direction: ltr; unicode-bidi: embed }
+*[DIR=\"rtl\"] { direction: rtl; unicode-bidi: embed }
+
+@media print {
+h1 { page-break-before: always }
+ h1, h2, h3,
+h4, h5, h6 { page-break-after: avoid }
+ul, ol, dl { page-break-before: avoid }
+}
+"
+}
+
+fn servo_default_style_str() -> ~str {
+ // libcss want's this to default to 2px..
+ ~"* { border-width: 0px; }"
+} \ No newline at end of file
diff --git a/src/servo/css/select_handler.rs b/src/servo/css/select_handler.rs
index e3d94cfa6d9..02a583e2a08 100644
--- a/src/servo/css/select_handler.rs
+++ b/src/servo/css/select_handler.rs
@@ -39,4 +39,8 @@ impl NodeSelectHandler: SelectHandler<Node> {
fn parent_node(node: &Node) -> Option<Node> {
tree::parent(&NodeTree, node)
}
+
+ fn node_is_root(node: &Node) -> bool {
+ self.parent_node(node).is_none()
+ }
} \ No newline at end of file
diff --git a/src/servo/layout/layout_task.rs b/src/servo/layout/layout_task.rs
index 30f01bf1349..0fad5fd4a10 100644
--- a/src/servo/layout/layout_task.rs
+++ b/src/servo/layout/layout_task.rs
@@ -38,6 +38,8 @@ use comm::*;
use task::*;
use core::mutable::Mut;
use newcss::select::SelectCtx;
+use newcss::types::OriginAuthor;
+use css::select::new_css_select_ctx;
pub type LayoutTask = comm::Chan<Msg>;
@@ -100,7 +102,7 @@ fn Layout(render_task: RenderTask,
font_matcher: @FontMatcher::new(fctx),
font_cache: @FontCache::new(fctx),
layout_refs: DVec(),
- css_select_ctx: Mut(SelectCtx::new())
+ css_select_ctx: Mut(new_css_select_ctx())
}
}
@@ -143,7 +145,7 @@ impl Layout {
fn handle_add_stylesheet(sheet: Stylesheet) {
let sheet = Cell(move sheet);
do self.css_select_ctx.borrow_mut |ctx| {
- ctx.append_sheet(sheet.take());
+ ctx.append_sheet(sheet.take(), OriginAuthor);
}
}
diff --git a/src/servo/servo.rc b/src/servo/servo.rc
index 44220302010..fe5c991d70a 100755
--- a/src/servo/servo.rc
+++ b/src/servo/servo.rc
@@ -30,6 +30,7 @@ pub mod css {
priv mod node_util;
priv mod node_void_ptr;
+ pub mod select;
pub mod matching;
pub mod node_style;
}