aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/compositing/compositor.rs16
-rw-r--r--components/compositing/constellation.rs3
-rw-r--r--components/layout/construct.rs151
-rw-r--r--components/layout/context.rs7
-rw-r--r--components/layout/data.rs5
-rw-r--r--components/layout/flow.rs15
-rw-r--r--components/layout/fragment.rs20
-rw-r--r--components/layout/layout_thread.rs17
-rw-r--r--components/layout/lib.rs2
-rw-r--r--components/layout/query.rs10
-rw-r--r--components/layout/text.rs6
-rw-r--r--components/layout/wrapper.rs172
-rw-r--r--components/net/cookie_storage.rs2
-rw-r--r--components/net/fetch/methods.rs27
-rw-r--r--components/net/lib.rs2
-rw-r--r--components/servo/Cargo.lock258
-rw-r--r--components/style/context.rs16
-rw-r--r--components/style/dom.rs14
-rw-r--r--components/style/properties/helpers.mako.rs79
-rw-r--r--components/style/properties/properties.mako.rs674
-rw-r--r--components/style/properties/shorthand/background.mako.rs99
-rw-r--r--components/style/properties/shorthand/border.mako.rs149
-rw-r--r--components/style/properties/shorthand/box.mako.rs109
-rw-r--r--components/style/properties/shorthand/column.mako.rs46
-rw-r--r--components/style/properties/shorthand/font.mako.rs66
-rw-r--r--components/style/properties/shorthand/inherited_text.mako.rs14
-rw-r--r--components/style/properties/shorthand/list.mako.rs92
-rw-r--r--components/style/properties/shorthand/margin.mako.rs7
-rw-r--r--components/style/properties/shorthand/outline.mako.rs49
-rw-r--r--components/style/properties/shorthand/padding.mako.rs7
-rw-r--r--components/style/restyle_hints.rs2
-rw-r--r--components/style/selector_impl.rs91
-rw-r--r--components/style/selector_matching.rs83
-rw-r--r--components/style/servo.rs1
-rw-r--r--components/style/traversal.rs9
-rw-r--r--etc/ci/chaos_monkey_test.py50
-rwxr-xr-xetc/ci/check_no_unwrap.sh2
-rw-r--r--ports/cef/Cargo.lock250
-rw-r--r--ports/geckolib/Cargo.lock58
-rw-r--r--ports/geckolib/bindings.rs55
-rw-r--r--ports/geckolib/data.rs6
-rw-r--r--ports/geckolib/gecko_style_structs.rs28
-rw-r--r--ports/geckolib/glue.rs93
-rw-r--r--ports/geckolib/selector_impl.rs105
-rwxr-xr-xports/geckolib/tools/regen_bindings.sh14
-rwxr-xr-xports/geckolib/tools/regen_style_structs.sh1
-rw-r--r--ports/geckolib/traversal.rs2
-rw-r--r--ports/glutin/window.rs20
-rw-r--r--ports/gonk/Cargo.lock244
-rw-r--r--python/servo/bootstrap_commands.py14
-rw-r--r--resources/servo.css6
-rw-r--r--tests/unit/layout/size_of.rs25
-rw-r--r--tests/unit/net/fetch.rs33
-rw-r--r--tests/unit/style/Cargo.toml2
-rw-r--r--tests/unit/style/stylesheets.rs13
-rw-r--r--tests/wpt/mozilla/tests/mozilla/details_ui_opened.html1
56 files changed, 1979 insertions, 1363 deletions
diff --git a/components/compositing/compositor.rs b/components/compositing/compositor.rs
index 36688456333..4c3a3505b62 100644
--- a/components/compositing/compositor.rs
+++ b/components/compositing/compositor.rs
@@ -504,8 +504,10 @@ impl<Window: WindowMethods> IOCompositor<Window> {
fn handle_browser_message(&mut self, msg: Msg) -> bool {
match (msg, self.shutdown_state) {
- (_, ShutdownState::FinishedShuttingDown) =>
- panic!("compositor shouldn't be handling messages after shutting down"),
+ (_, ShutdownState::FinishedShuttingDown) => {
+ error!("compositor shouldn't be handling messages after shutting down");
+ return false
+ }
(Msg::Exit(channel), _) => {
self.start_shutting_down();
@@ -780,7 +782,10 @@ impl<Window: WindowMethods> IOCompositor<Window> {
pub fn pipeline(&self, pipeline_id: PipelineId) -> Option<&CompositionPipeline> {
match self.pipeline_details.get(&pipeline_id) {
Some(ref details) => details.pipeline.as_ref(),
- None => panic!("Compositor layer has an unknown pipeline ({:?}).", pipeline_id),
+ None => {
+ warn!("Compositor layer has an unknown pipeline ({:?}).", pipeline_id);
+ None
+ }
}
}
@@ -881,7 +886,8 @@ impl<Window: WindowMethods> IOCompositor<Window> {
fn find_pipeline_root_layer(&self, pipeline_id: PipelineId)
-> Option<Rc<Layer<CompositorData>>> {
if !self.pipeline_details.contains_key(&pipeline_id) {
- panic!("Tried to create or update layer for unknown pipeline")
+ warn!("Tried to create or update layer for unknown pipeline");
+ return None;
}
self.find_layer_with_pipeline_and_layer_id(pipeline_id, LayerId::null())
}
@@ -1119,7 +1125,7 @@ impl<Window: WindowMethods> IOCompositor<Window> {
layer_id: LayerId) {
if let Some(point) = self.fragment_point.take() {
if !self.move_layer(pipeline_id, layer_id, Point2D::from_untyped(&point)) {
- panic!("Compositor: Tried to scroll to fragment with unknown layer.");
+ return warn!("Compositor: Tried to scroll to fragment with unknown layer.");
}
self.perform_updates_after_scroll();
diff --git a/components/compositing/constellation.rs b/components/compositing/constellation.rs
index 1c4f6544ddc..6e09fc4b15d 100644
--- a/components/compositing/constellation.rs
+++ b/components/compositing/constellation.rs
@@ -505,7 +505,8 @@ impl<LTF: LayoutThreadFactory, STF: ScriptThreadFactory> Constellation<LTF, STF>
#[cfg(target_os = "windows")]
fn spawn_multiprocess(&mut self, _: PipelineId, _: UnprivilegedPipelineContent) {
- panic!("Multiprocess is not supported on Windows.");
+ error!("Multiprocess is not supported on Windows.");
+ process::exit(1);
}
// Push a new (loading) pipeline to the list of pending frame changes
diff --git a/components/layout/construct.rs b/components/layout/construct.rs
index cc34642466a..873be2b2743 100644
--- a/components/layout/construct.rs
+++ b/components/layout/construct.rs
@@ -47,6 +47,7 @@ use style::computed_values::content::ContentItem;
use style::computed_values::{caption_side, display, empty_cells, float, list_style_position};
use style::computed_values::{position};
use style::properties::{self, ComputedValues, ServoComputedValues};
+use style::servo::SharedStyleContext;
use table::TableFlow;
use table_caption::TableCaptionFlow;
use table_cell::TableCellFlow;
@@ -210,15 +211,15 @@ impl InlineFragmentsAccumulator {
}
}
- fn from_inline_node<N>(node: &N) -> InlineFragmentsAccumulator
+ fn from_inline_node<N>(node: &N, style_context: &SharedStyleContext) -> InlineFragmentsAccumulator
where N: ThreadSafeLayoutNode {
InlineFragmentsAccumulator {
fragments: IntermediateInlineFragments::new(),
enclosing_node: Some(InlineFragmentNodeInfo {
address: node.opaque(),
pseudo: node.get_pseudo_element_type().strip(),
- style: node.style().clone(),
- selected_style: node.selected_style().clone(),
+ style: node.style(style_context).clone(),
+ selected_style: node.selected_style(style_context).clone(),
flags: InlineFragmentNodeFlags::empty(),
}),
bidi_control_chars: None,
@@ -288,6 +289,11 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
}
#[inline]
+ fn style_context(&self) -> &SharedStyleContext {
+ self.layout_context.style_context()
+ }
+
+ #[inline]
fn set_flow_construction_result(&self,
node: &ConcreteThreadSafeLayoutNode,
result: ConstructionResult) {
@@ -336,7 +342,7 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
Some(NodeTypeId::Element(ElementTypeId::HTMLElement(
HTMLElementTypeId::HTMLCanvasElement))) => {
let data = node.canvas_data().unwrap();
- SpecificFragmentInfo::Canvas(box CanvasFragmentInfo::new(node, data))
+ SpecificFragmentInfo::Canvas(box CanvasFragmentInfo::new(node, data, self.layout_context))
}
_ => {
// This includes pseudo-elements.
@@ -344,7 +350,7 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
}
};
- Fragment::new(node, specific_fragment_info)
+ Fragment::new(node, specific_fragment_info, self.layout_context)
}
/// Generates anonymous table objects per CSS 2.1 § 17.2.1.
@@ -356,13 +362,14 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
return
}
+ let style_context = self.style_context();
if child.is_table_cell() {
- let mut style = child_node.style().clone();
+ let mut style = child_node.style(style_context).clone();
properties::modify_style_for_anonymous_table_object(&mut style, display::T::table_row);
let fragment = Fragment::from_opaque_node_and_style(child_node.opaque(),
PseudoElementType::Normal,
style,
- child_node.selected_style().clone(),
+ child_node.selected_style(style_context).clone(),
child_node.restyle_damage(),
SpecificFragmentInfo::TableRow);
let mut new_child: FlowRef = Arc::new(TableRowFlow::from_fragment(fragment));
@@ -371,12 +378,12 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
*child = new_child
}
if child.is_table_row() || child.is_table_rowgroup() {
- let mut style = child_node.style().clone();
+ let mut style = child_node.style(style_context).clone();
properties::modify_style_for_anonymous_table_object(&mut style, display::T::table);
let fragment = Fragment::from_opaque_node_and_style(child_node.opaque(),
PseudoElementType::Normal,
style,
- child_node.selected_style().clone(),
+ child_node.selected_style(style_context).clone(),
child_node.restyle_damage(),
SpecificFragmentInfo::Table);
let mut new_child: FlowRef = Arc::new(TableFlow::from_fragment(fragment));
@@ -385,13 +392,13 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
*child = new_child
}
if child.is_table() {
- let mut style = child_node.style().clone();
+ let mut style = child_node.style(style_context).clone();
properties::modify_style_for_anonymous_table_object(&mut style, display::T::table);
let fragment =
Fragment::from_opaque_node_and_style(child_node.opaque(),
PseudoElementType::Normal,
style,
- child_node.selected_style().clone(),
+ child_node.selected_style(style_context).clone(),
child_node.restyle_damage(),
SpecificFragmentInfo::TableWrapper);
let mut new_child: FlowRef = Arc::new(TableWrapperFlow::from_fragment(fragment, None));
@@ -449,7 +456,7 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
TextRunScanner::new().scan_for_runs(&mut self.layout_context.font_context(),
fragments.fragments);
let mut inline_flow_ref: FlowRef = Arc::new(
- InlineFlow::from_fragments(scanned_fragments, node.style().writing_mode));
+ InlineFlow::from_fragments(scanned_fragments, node.style(self.style_context()).writing_mode));
// Add all the inline-block fragments as children of the inline flow.
for inline_block_flow in &inline_block_flows {
@@ -479,7 +486,7 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
let (ascent, descent) =
inline_flow.compute_minimum_ascent_and_descent(&mut self.layout_context
.font_context(),
- &**node.style());
+ &**node.style(self.style_context()));
inline_flow.minimum_block_size_above_baseline = ascent;
inline_flow.minimum_depth_below_baseline = descent;
}
@@ -587,10 +594,11 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
box UnscannedTextFragmentInfo::new(" ".to_owned(), None));
properties::modify_style_for_replaced_content(&mut whitespace_style);
properties::modify_style_for_text(&mut whitespace_style);
+ let style_context = self.style_context();
let fragment = Fragment::from_opaque_node_and_style(whitespace_node,
whitespace_pseudo,
whitespace_style,
- node.selected_style().clone(),
+ node.selected_style(style_context).clone(),
whitespace_damage,
fragment_info);
inline_fragment_accumulator.fragments.fragments.push_back(fragment);
@@ -696,7 +704,7 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
}
}
- let mut style = node.style().clone();
+ let mut style = node.style(self.style_context()).clone();
if node_is_input_or_text_area {
properties::modify_style_for_input_text(&mut style);
}
@@ -722,7 +730,7 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
let mut style = (*style).clone();
properties::modify_style_for_text(&mut style);
- let selected_style = node.selected_style();
+ let selected_style = node.selected_style(self.style_context());
match text_content {
TextContent::Text(string) => {
@@ -765,7 +773,7 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
/// to happen.
fn build_flow_for_block(&mut self, node: &ConcreteThreadSafeLayoutNode, float_kind: Option<FloatKind>)
-> ConstructionResult {
- if node.style().is_multicol() {
+ if node.style(self.style_context()).is_multicol() {
return self.build_flow_for_multicol(node, float_kind)
}
@@ -791,7 +799,7 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
predecessors: mem::replace(
fragment_accumulator,
InlineFragmentsAccumulator::from_inline_node(
- node)).to_intermediate_inline_fragments(),
+ node, self.style_context())).to_intermediate_inline_fragments(),
flow: kid_flow,
};
opt_inline_block_splits.push_back(split)
@@ -805,8 +813,8 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
fn build_fragments_for_nonreplaced_inline_content(&mut self, node: &ConcreteThreadSafeLayoutNode)
-> ConstructionResult {
let mut opt_inline_block_splits: LinkedList<InlineBlockSplit> = LinkedList::new();
- let mut fragment_accumulator = InlineFragmentsAccumulator::from_inline_node(node);
- fragment_accumulator.bidi_control_chars = bidi_control_chars(&*node.style());
+ let mut fragment_accumulator = InlineFragmentsAccumulator::from_inline_node(node, self.style_context());
+ fragment_accumulator.bidi_control_chars = bidi_control_chars(&*node.style(self.style_context()));
let mut abs_descendants = AbsoluteDescendants::new();
@@ -828,7 +836,7 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
mem::replace(
&mut fragment_accumulator,
InlineFragmentsAccumulator::from_inline_node(
- node)).to_intermediate_inline_fragments(),
+ node, self.style_context())).to_intermediate_inline_fragments(),
flow: flow,
};
opt_inline_block_splits.push_back(split);
@@ -879,12 +887,13 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
box UnscannedTextFragmentInfo::new(" ".to_owned(), None));
properties::modify_style_for_replaced_content(&mut whitespace_style);
properties::modify_style_for_text(&mut whitespace_style);
- let fragment = Fragment::from_opaque_node_and_style(whitespace_node,
- whitespace_pseudo,
- whitespace_style,
- node.selected_style().clone(),
- whitespace_damage,
- fragment_info);
+ let fragment =
+ Fragment::from_opaque_node_and_style(whitespace_node,
+ whitespace_pseudo,
+ whitespace_style,
+ node.selected_style(self.style_context()).clone(),
+ whitespace_damage,
+ fragment_info);
fragment_accumulator.fragments.fragments.push_back(fragment)
}
ConstructionResult::ConstructionItem(ConstructionItem::TableColumnFragment(_)) => {
@@ -894,17 +903,18 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
}
}
- if is_empty && node.style().has_padding_or_border() {
+ let node_style = node.style(self.style_context());
+ if is_empty && node_style.has_padding_or_border() {
// An empty inline box needs at least one fragment to draw its background and borders.
let info = SpecificFragmentInfo::UnscannedText(
box UnscannedTextFragmentInfo::new(String::new(), None));
- let mut modified_style = node.style().clone();
+ let mut modified_style = node_style.clone();
properties::modify_style_for_replaced_content(&mut modified_style);
properties::modify_style_for_text(&mut modified_style);
let fragment = Fragment::from_opaque_node_and_style(node.opaque(),
node.get_pseudo_element_type().strip(),
modified_style,
- node.selected_style().clone(),
+ node.selected_style(self.style_context()).clone(),
node.restyle_damage(),
info);
fragment_accumulator.fragments.fragments.push_back(fragment)
@@ -917,7 +927,7 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
// If the node is positioned, then it's the containing block for all absolutely-
// positioned descendants.
- if node.style().get_box().position != position::T::static_ {
+ if node_style.get_box().position != position::T::static_ {
fragment_accumulator.fragments
.absolute_descendants
.mark_as_having_reached_containing_block();
@@ -944,17 +954,17 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
}
// If this node is ignorable whitespace, bail out now.
- if node.is_ignorable_whitespace() {
+ if node.is_ignorable_whitespace(self.style_context()) {
return ConstructionResult::ConstructionItem(ConstructionItem::Whitespace(
node.opaque(),
node.get_pseudo_element_type().strip(),
- node.style().clone(),
+ node.style(self.style_context()).clone(),
node.restyle_damage()))
}
// Modify the style as necessary. (See the comment in
// `properties::modify_style_for_replaced_content()`.)
- let mut style = (*node.style()).clone();
+ let mut style = (*node.style(self.style_context())).clone();
properties::modify_style_for_replaced_content(&mut style);
// If this is generated content, then we need to initialize the accumulator with the
@@ -987,14 +997,15 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
_ => unreachable!()
};
- let mut modified_style = (*node.style()).clone();
+ let style_context = self.style_context();
+ let mut modified_style = (*node.style(self.style_context())).clone();
properties::modify_style_for_outer_inline_block_fragment(&mut modified_style);
let fragment_info = SpecificFragmentInfo::InlineBlock(InlineBlockFragmentInfo::new(
block_flow));
let fragment = Fragment::from_opaque_node_and_style(node.opaque(),
node.get_pseudo_element_type().strip(),
modified_style,
- node.selected_style().clone(),
+ node.selected_style(style_context).clone(),
node.restyle_damage(),
fragment_info);
@@ -1022,16 +1033,17 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
let fragment_info = SpecificFragmentInfo::InlineAbsoluteHypothetical(
InlineAbsoluteHypotheticalFragmentInfo::new(block_flow));
- let mut style = node.style().clone();
+ let style_context = self.style_context();
+ let mut style = node.style(style_context).clone();
properties::modify_style_for_inline_absolute_hypothetical_fragment(&mut style);
let fragment = Fragment::from_opaque_node_and_style(node.opaque(),
PseudoElementType::Normal,
style,
- node.selected_style().clone(),
+ node.selected_style(style_context).clone(),
node.restyle_damage(),
fragment_info);
- let mut fragment_accumulator = InlineFragmentsAccumulator::from_inline_node(node);
+ let mut fragment_accumulator = InlineFragmentsAccumulator::from_inline_node(node, self.style_context());
fragment_accumulator.fragments.fragments.push_back(fragment);
fragment_accumulator.fragments.absolute_descendants.push_descendants(abs_descendants);
@@ -1087,7 +1099,7 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
child_flows: Vec<FlowRef>,
flow: &mut FlowRef,
node: &ConcreteThreadSafeLayoutNode) {
- let mut anonymous_flow = flow.generate_missing_child_flow(node);
+ let mut anonymous_flow = flow.generate_missing_child_flow(node, self.layout_context);
let mut consecutive_siblings = vec!();
for kid_flow in child_flows {
if anonymous_flow.need_anonymous_flow(&*kid_flow) {
@@ -1115,10 +1127,10 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
fn build_flow_for_multicol(&mut self, node: &ConcreteThreadSafeLayoutNode,
float_kind: Option<FloatKind>)
-> ConstructionResult {
- let fragment = Fragment::new(node, SpecificFragmentInfo::Multicol);
+ let fragment = Fragment::new(node, SpecificFragmentInfo::Multicol, self.layout_context);
let mut flow: FlowRef = Arc::new(MulticolFlow::from_fragment(fragment, float_kind));
- let column_fragment = Fragment::new(node, SpecificFragmentInfo::MulticolColumn);
+ let column_fragment = Fragment::new(node, SpecificFragmentInfo::MulticolColumn, self.layout_context);
let column_flow = Arc::new(MulticolColumnFlow::from_fragment(column_fragment));
// First populate the column flow with its children.
@@ -1156,11 +1168,11 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
/// possibly other `TableCaptionFlow`s or `TableFlow`s underneath it.
fn build_flow_for_table_wrapper(&mut self, node: &ConcreteThreadSafeLayoutNode, float_value: float::T)
-> ConstructionResult {
- let fragment = Fragment::new(node, SpecificFragmentInfo::TableWrapper);
+ let fragment = Fragment::new(node, SpecificFragmentInfo::TableWrapper, self.layout_context);
let mut wrapper_flow: FlowRef = Arc::new(
TableWrapperFlow::from_fragment(fragment, FloatKind::from_property(float_value)));
- let table_fragment = Fragment::new(node, SpecificFragmentInfo::Table);
+ let table_fragment = Fragment::new(node, SpecificFragmentInfo::Table, self.layout_context);
let table_flow = Arc::new(TableFlow::from_fragment(table_fragment));
// First populate the table flow with its children.
@@ -1218,7 +1230,7 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
/// with possibly other `TableRowFlow`s underneath it.
fn build_flow_for_table_rowgroup(&mut self, node: &ConcreteThreadSafeLayoutNode)
-> ConstructionResult {
- let fragment = Fragment::new(node, SpecificFragmentInfo::TableRow);
+ let fragment = Fragment::new(node, SpecificFragmentInfo::TableRow, self.layout_context);
let flow = Arc::new(TableRowGroupFlow::from_fragment(fragment));
self.build_flow_for_block_like(flow, node)
}
@@ -1226,7 +1238,7 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
/// Builds a flow for a node with `display: table-row`. This yields a `TableRowFlow` with
/// possibly other `TableCellFlow`s underneath it.
fn build_flow_for_table_row(&mut self, node: &ConcreteThreadSafeLayoutNode) -> ConstructionResult {
- let fragment = Fragment::new(node, SpecificFragmentInfo::TableRow);
+ let fragment = Fragment::new(node, SpecificFragmentInfo::TableRow, self.layout_context);
let flow = Arc::new(TableRowFlow::from_fragment(fragment));
self.build_flow_for_block_like(flow, node)
}
@@ -1234,14 +1246,14 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
/// Builds a flow for a node with `display: table-cell`. This yields a `TableCellFlow` with
/// possibly other `BlockFlow`s or `InlineFlow`s underneath it.
fn build_flow_for_table_cell(&mut self, node: &ConcreteThreadSafeLayoutNode) -> ConstructionResult {
- let fragment = Fragment::new(node, SpecificFragmentInfo::TableCell);
+ let fragment = Fragment::new(node, SpecificFragmentInfo::TableCell, self.layout_context);
// Determine if the table cell should be hidden. Per CSS 2.1 § 17.6.1.1, this will be true
// if the cell has any in-flow elements (even empty ones!) and has `empty-cells` set to
// `hide`.
- let hide = node.style().get_inheritedtable().empty_cells == empty_cells::T::hide &&
+ let hide = node.style(self.style_context()).get_inheritedtable().empty_cells == empty_cells::T::hide &&
node.children().all(|kid| {
- let position = kid.style().get_box().position;
+ let position = kid.style(self.style_context()).get_box().position;
!kid.is_content() ||
position == position::T::absolute ||
position == position::T::fixed
@@ -1257,15 +1269,15 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
fn build_flow_for_list_item(&mut self, node: &ConcreteThreadSafeLayoutNode, flotation: float::T)
-> ConstructionResult {
let flotation = FloatKind::from_property(flotation);
- let marker_fragments = match node.style().get_list().list_style_image.0 {
+ let marker_fragments = match node.style(self.style_context()).get_list().list_style_image.0 {
Some(ref url) => {
let image_info = box ImageFragmentInfo::new(node,
Some((*url).clone()),
&self.layout_context);
- vec![Fragment::new(node, SpecificFragmentInfo::Image(image_info))]
+ vec![Fragment::new(node, SpecificFragmentInfo::Image(image_info), self.layout_context)]
}
None => {
- match ListStyleTypeContent::from_list_style_type(node.style()
+ match ListStyleTypeContent::from_list_style_type(node.style(self.style_context())
.get_list()
.list_style_type) {
ListStyleTypeContent::None => Vec::new(),
@@ -1275,14 +1287,15 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
unscanned_marker_fragments.push_back(Fragment::new(
node,
SpecificFragmentInfo::UnscannedText(
- box UnscannedTextFragmentInfo::new(text, None))));
+ box UnscannedTextFragmentInfo::new(text, None)),
+ self.layout_context));
let marker_fragments = TextRunScanner::new().scan_for_runs(
&mut self.layout_context.font_context(),
unscanned_marker_fragments);
marker_fragments.fragments
}
ListStyleTypeContent::GeneratedContent(info) => {
- vec![Fragment::new(node, SpecificFragmentInfo::GeneratedContent(info))]
+ vec![Fragment::new(node, SpecificFragmentInfo::GeneratedContent(info), self.layout_context)]
}
}
}
@@ -1295,7 +1308,7 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
// there.
let mut initial_fragments = IntermediateInlineFragments::new();
let main_fragment = self.build_fragment_for_block(node);
- let flow = match node.style().get_list().list_style_position {
+ let flow = match node.style(self.style_context()).get_list().list_style_position {
list_style_position::T::outside => {
Arc::new(ListItemFlow::from_fragments_and_flotation(
main_fragment, marker_fragments, flotation))
@@ -1322,7 +1335,8 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
let specific = SpecificFragmentInfo::TableColumn(TableColumnFragmentInfo::new(node));
let construction_item = ConstructionItem::TableColumnFragment(Fragment::new(node,
- specific));
+ specific,
+ self.layout_context));
ConstructionResult::ConstructionItem(construction_item)
}
@@ -1332,7 +1346,8 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
-> ConstructionResult {
let fragment =
Fragment::new(node,
- SpecificFragmentInfo::TableColumn(TableColumnFragmentInfo::new(node)));
+ SpecificFragmentInfo::TableColumn(TableColumnFragmentInfo::new(node)),
+ self.layout_context);
let mut col_fragments = vec!();
for kid in node.children() {
// CSS 2.1 § 17.2.1. Treat all non-column child fragments of `table-column-group`
@@ -1345,7 +1360,7 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
if col_fragments.is_empty() {
debug!("add SpecificFragmentInfo::TableColumn for empty colgroup");
let specific = SpecificFragmentInfo::TableColumn(TableColumnFragmentInfo::new(node));
- col_fragments.push(Fragment::new(node, specific));
+ col_fragments.push(Fragment::new(node, specific, self.layout_context));
}
let mut flow: FlowRef = Arc::new(TableColGroupFlow::from_fragments(fragment, col_fragments));
flow.finish();
@@ -1387,11 +1402,11 @@ impl<'a, ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode>
return false
}
- if node.can_be_fragmented() || node.style().is_multicol() {
+ if node.can_be_fragmented() || node.style(self.style_context()).is_multicol() {
return false
}
- let mut style = node.style().clone();
+ let mut style = node.style(self.style_context()).clone();
let mut data = node.mutate_layout_data().unwrap();
let damage = data.restyle_damage;
match *node.construction_result_mut(&mut *data) {
@@ -1490,18 +1505,20 @@ impl<'a, ConcreteThreadSafeLayoutNode> PostorderNodeMutTraversal<ConcreteThreadS
let (display, float, positioning) = match node.type_id() {
None => {
// Pseudo-element.
- let style = node.style();
+ let style = node.style(self.style_context());
let display = match node.get_pseudo_element_type() {
- PseudoElementType::Normal => display::T::inline,
- PseudoElementType::Before(display) => display,
- PseudoElementType::After(display) => display,
- PseudoElementType::DetailsContent(display) => display,
- PseudoElementType::DetailsSummary(display) => display,
+ PseudoElementType::Normal
+ => display::T::inline,
+ PseudoElementType::Before(maybe_display) |
+ PseudoElementType::After(maybe_display) |
+ PseudoElementType::DetailsContent(maybe_display) |
+ PseudoElementType::DetailsSummary(maybe_display)
+ => maybe_display.unwrap_or(style.get_box().display),
};
(display, style.get_box().float, style.get_box().position)
}
Some(NodeTypeId::Element(_)) => {
- let style = node.style();
+ let style = node.style(self.style_context());
let munged_display = if style.get_box()._servo_display_for_hypothetical_box ==
display::T::inline {
display::T::inline
diff --git a/components/layout/context.rs b/components/layout/context.rs
index 169c2f38082..9c752645513 100644
--- a/components/layout/context.rs
+++ b/components/layout/context.rs
@@ -108,7 +108,7 @@ pub struct LayoutContext<'a> {
cached_local_layout_context: Rc<LocalLayoutContext>,
}
-impl<'a> StyleContext<'a, ServoSelectorImpl, ServoComputedValues> for LayoutContext<'a> {
+impl<'a> StyleContext<'a, ServoSelectorImpl> for LayoutContext<'a> {
fn shared_context(&self) -> &'a SharedStyleContext {
&self.shared.style_context
}
@@ -130,6 +130,11 @@ impl<'a> LayoutContext<'a> {
}
#[inline(always)]
+ pub fn style_context(&self) -> &SharedStyleContext {
+ &self.shared.style_context
+ }
+
+ #[inline(always)]
pub fn font_context(&self) -> RefMut<FontContext> {
self.cached_local_layout_context.font_context.borrow_mut()
}
diff --git a/components/layout/data.rs b/components/layout/data.rs
index f582ec71ffb..4e5c8339157 100644
--- a/components/layout/data.rs
+++ b/components/layout/data.rs
@@ -17,8 +17,9 @@ pub struct PrivateLayoutData {
/// Description of how to account for recent style changes.
pub restyle_damage: RestyleDamage,
- /// The current results of flow construction for this node. This is either a flow or a
- /// `ConstructionItem`. See comments in `construct.rs` for more details.
+ /// The current results of flow construction for this node. This is either a
+ /// flow or a `ConstructionItem`. See comments in `construct.rs` for more
+ /// details.
pub flow_construction_result: ConstructionResult,
pub before_flow_construction_result: ConstructionResult,
diff --git a/components/layout/flow.rs b/components/layout/flow.rs
index 2dfcc05ab06..79ab2fc2c07 100644
--- a/components/layout/flow.rs
+++ b/components/layout/flow.rs
@@ -483,7 +483,7 @@ pub trait ImmutableFlowUtils {
fn need_anonymous_flow(self, child: &Flow) -> bool;
/// Generates missing child flow of this flow.
- fn generate_missing_child_flow<N: ThreadSafeLayoutNode>(self, node: &N) -> FlowRef;
+ fn generate_missing_child_flow<N: ThreadSafeLayoutNode>(self, node: &N, ctx: &LayoutContext) -> FlowRef;
/// Returns true if this flow contains fragments that are roots of an absolute flow tree.
fn contains_roots_of_absolute_flow_tree(&self) -> bool;
@@ -1275,8 +1275,9 @@ impl<'a> ImmutableFlowUtils for &'a Flow {
/// FIXME(pcwalton): This duplicates some logic in
/// `generate_anonymous_table_flows_if_necessary()`. We should remove this function eventually,
/// as it's harder to understand.
- fn generate_missing_child_flow<N: ThreadSafeLayoutNode>(self, node: &N) -> FlowRef {
- let mut style = node.style().clone();
+ fn generate_missing_child_flow<N: ThreadSafeLayoutNode>(self, node: &N, ctx: &LayoutContext) -> FlowRef {
+ let style_context = ctx.style_context();
+ let mut style = node.style(style_context).clone();
match self.class() {
FlowClass::Table | FlowClass::TableRowGroup => {
properties::modify_style_for_anonymous_table_object(
@@ -1286,7 +1287,7 @@ impl<'a> ImmutableFlowUtils for &'a Flow {
node.opaque(),
PseudoElementType::Normal,
style,
- node.selected_style().clone(),
+ node.selected_style(style_context).clone(),
node.restyle_damage(),
SpecificFragmentInfo::TableRow);
Arc::new(TableRowFlow::from_fragment(fragment))
@@ -1299,10 +1300,10 @@ impl<'a> ImmutableFlowUtils for &'a Flow {
node.opaque(),
PseudoElementType::Normal,
style,
- node.selected_style().clone(),
+ node.selected_style(style_context).clone(),
node.restyle_damage(),
SpecificFragmentInfo::TableCell);
- let hide = node.style().get_inheritedtable().empty_cells == empty_cells::T::hide;
+ let hide = node.style(style_context).get_inheritedtable().empty_cells == empty_cells::T::hide;
Arc::new(TableCellFlow::from_node_fragment_and_visibility_flag(node, fragment, !hide))
},
FlowClass::Flex => {
@@ -1310,7 +1311,7 @@ impl<'a> ImmutableFlowUtils for &'a Flow {
Fragment::from_opaque_node_and_style(node.opaque(),
PseudoElementType::Normal,
style,
- node.selected_style().clone(),
+ node.selected_style(style_context).clone(),
node.restyle_damage(),
SpecificFragmentInfo::Generic);
Arc::new(BlockFlow::from_fragment(fragment, None))
diff --git a/components/layout/fragment.rs b/components/layout/fragment.rs
index ce9e55496c7..4dda58364aa 100644
--- a/components/layout/fragment.rs
+++ b/components/layout/fragment.rs
@@ -319,9 +319,9 @@ pub struct CanvasFragmentInfo {
}
impl CanvasFragmentInfo {
- pub fn new<N: ThreadSafeLayoutNode>(node: &N, data: HTMLCanvasData) -> CanvasFragmentInfo {
+ pub fn new<N: ThreadSafeLayoutNode>(node: &N, data: HTMLCanvasData, ctx: &LayoutContext) -> CanvasFragmentInfo {
CanvasFragmentInfo {
- replaced_image_fragment_info: ReplacedImageFragmentInfo::new(node),
+ replaced_image_fragment_info: ReplacedImageFragmentInfo::new(node, ctx),
ipc_renderer: data.ipc_renderer
.map(|renderer| Arc::new(Mutex::new(renderer))),
dom_width: Au::from_px(data.width as i32),
@@ -382,7 +382,7 @@ impl ImageFragmentInfo {
};
ImageFragmentInfo {
- replaced_image_fragment_info: ReplacedImageFragmentInfo::new(node),
+ replaced_image_fragment_info: ReplacedImageFragmentInfo::new(node, layout_context),
image: image,
metadata: metadata,
}
@@ -441,9 +441,9 @@ pub struct ReplacedImageFragmentInfo {
}
impl ReplacedImageFragmentInfo {
- pub fn new<N>(node: &N) -> ReplacedImageFragmentInfo
+ pub fn new<N>(node: &N, ctx: &LayoutContext) -> ReplacedImageFragmentInfo
where N: ThreadSafeLayoutNode {
- let is_vertical = node.style().writing_mode.is_vertical();
+ let is_vertical = node.style(ctx.style_context()).writing_mode.is_vertical();
ReplacedImageFragmentInfo {
computed_inline_size: None,
computed_block_size: None,
@@ -789,8 +789,9 @@ impl TableColumnFragmentInfo {
impl Fragment {
/// Constructs a new `Fragment` instance.
- pub fn new<N: ThreadSafeLayoutNode>(node: &N, specific: SpecificFragmentInfo) -> Fragment {
- let style = node.style().clone();
+ pub fn new<N: ThreadSafeLayoutNode>(node: &N, specific: SpecificFragmentInfo, ctx: &LayoutContext) -> Fragment {
+ let style_context = ctx.style_context();
+ let style = node.style(style_context).clone();
let writing_mode = style.writing_mode;
let mut restyle_damage = node.restyle_damage();
@@ -799,7 +800,7 @@ impl Fragment {
Fragment {
node: node.opaque(),
style: style,
- selected_style: node.selected_style().clone(),
+ selected_style: node.selected_style(style_context).clone(),
restyle_damage: restyle_damage,
border_box: LogicalRect::zero(writing_mode),
border_padding: LogicalMargin::zero(writing_mode),
@@ -2020,8 +2021,7 @@ impl Fragment {
return false
}
- let length = first_unscanned_text.text.len();
- if length != 0 && first_unscanned_text.text.char_at_reverse(length) == '\n' {
+ if first_unscanned_text.text.ends_with('\n') {
return false
}
diff --git a/components/layout/layout_thread.rs b/components/layout/layout_thread.rs
index 64779f8e031..bf325b8dbdd 100644
--- a/components/layout/layout_thread.rs
+++ b/components/layout/layout_thread.rs
@@ -67,14 +67,13 @@ use std::sync::mpsc::{channel, Sender, Receiver};
use std::sync::{Arc, Mutex, MutexGuard, RwLock};
use style::animation::Animation;
use style::computed_values::{filter, mix_blend_mode};
-use style::context::{ReflowGoal, StylistWrapper};
+use style::context::{ReflowGoal};
use style::dom::{TDocument, TElement, TNode};
use style::error_reporting::ParseErrorReporter;
use style::logical_geometry::LogicalPoint;
use style::media_queries::{Device, MediaType};
use style::parallel::WorkQueueData;
use style::properties::ComputedValues;
-use style::selector_impl::ServoSelectorImpl;
use style::selector_matching::USER_OR_USER_AGENT_STYLESHEETS;
use style::servo::{SharedStyleContext, Stylesheet, Stylist};
use style::stylesheets::CSSRuleIteratorExt;
@@ -107,7 +106,7 @@ pub struct LayoutThreadData {
pub display_list: Option<Arc<DisplayList>>,
/// Performs CSS selector matching and style resolution.
- pub stylist: Box<Stylist>,
+ pub stylist: Arc<Stylist>,
/// A queued response for the union of the content boxes of a node.
pub content_box_response: Rect<Au>,
@@ -421,7 +420,7 @@ impl LayoutThread {
let font_cache_receiver =
ROUTER.route_ipc_receiver_to_new_mpsc_receiver(ipc_font_cache_receiver);
- let stylist = box Stylist::new(device);
+ let stylist = Arc::new(Stylist::new(device));
let outstanding_web_fonts_counter = Arc::new(AtomicUsize::new(0));
for stylesheet in &*USER_OR_USER_AGENT_STYLESHEETS {
add_font_face_rules(stylesheet,
@@ -510,7 +509,7 @@ impl LayoutThread {
style_context: SharedStyleContext {
viewport_size: self.viewport_size.clone(),
screen_size_changed: screen_size_changed,
- stylist: StylistWrapper::<ServoSelectorImpl>(&*rw_data.stylist),
+ stylist: rw_data.stylist.clone(),
generation: self.generation,
goal: goal,
new_animations_sender: Mutex::new(self.new_animations_sender.clone()),
@@ -809,7 +808,7 @@ impl LayoutThread {
/// Sets quirks mode for the document, causing the quirks mode stylesheet to be used.
fn handle_set_quirks_mode<'a, 'b>(&self, possibly_locked_rw_data: &mut RwData<'a, 'b>) {
let mut rw_data = possibly_locked_rw_data.lock();
- rw_data.stylist.set_quirks_mode(true);
+ Arc::get_mut(&mut rw_data.stylist).unwrap().set_quirks_mode(true);
possibly_locked_rw_data.block(rw_data);
}
@@ -1060,7 +1059,7 @@ impl LayoutThread {
// Calculate the actual viewport as per DEVICE-ADAPT § 6
let device = Device::new(MediaType::Screen, initial_viewport);
- rw_data.stylist.set_device(device, &data.document_stylesheets);
+ Arc::get_mut(&mut rw_data.stylist).unwrap().set_device(device, &data.document_stylesheets);
let constraints = rw_data.stylist.viewport_constraints().clone();
self.viewport_size = match constraints {
@@ -1092,8 +1091,8 @@ impl LayoutThread {
}
// If the entire flow tree is invalid, then it will be reflowed anyhow.
- needs_dirtying |= rw_data.stylist.update(&data.document_stylesheets,
- data.stylesheets_changed);
+ needs_dirtying |= Arc::get_mut(&mut rw_data.stylist).unwrap().update(&data.document_stylesheets,
+ data.stylesheets_changed);
let needs_reflow = viewport_size_changed && !needs_dirtying;
unsafe {
if needs_dirtying {
diff --git a/components/layout/lib.rs b/components/layout/lib.rs
index f4978023d76..88f08610eba 100644
--- a/components/layout/lib.rs
+++ b/components/layout/lib.rs
@@ -11,7 +11,6 @@
#![feature(plugin)]
#![feature(raw)]
#![feature(step_by)]
-#![feature(str_char)]
#![feature(unsafe_no_drop_flag)]
#![deny(unsafe_code)]
@@ -103,3 +102,4 @@ mod wrapper;
// For unit tests:
pub use fragment::Fragment;
+pub use wrapper::ServoThreadSafeLayoutNode;
diff --git a/components/layout/query.rs b/components/layout/query.rs
index 5b28acfa462..df94ed0024e 100644
--- a/components/layout/query.rs
+++ b/components/layout/query.rs
@@ -574,8 +574,8 @@ pub fn process_resolved_style_request<N: LayoutNode>(
let layout_node = match *pseudo {
Some(PseudoElement::Before) => layout_node.get_before_pseudo(),
Some(PseudoElement::After) => layout_node.get_after_pseudo(),
- Some(PseudoElement::DetailsSummary) => layout_node.get_details_summary_pseudo(),
- Some(PseudoElement::DetailsContent) => layout_node.get_details_content_pseudo(),
+ Some(PseudoElement::DetailsSummary) |
+ Some(PseudoElement::DetailsContent) |
Some(PseudoElement::Selection) => None,
_ => Some(layout_node)
};
@@ -590,7 +590,7 @@ pub fn process_resolved_style_request<N: LayoutNode>(
Some(layout_node) => layout_node
};
- let style = &*layout_node.style();
+ let style = &*layout_node.resolved_style();
let positioned = match style.get_box().position {
position::computed_value::T::relative |
@@ -711,7 +711,7 @@ pub fn process_offset_parent_query<N: LayoutNode>(requested_node: N, layout_root
pub fn process_node_overflow_request<N: LayoutNode>(requested_node: N) -> NodeOverflowResponse {
let layout_node = requested_node.to_threadsafe();
- let style = &*layout_node.style();
+ let style = &*layout_node.resolved_style();
let style_box = style.get_box();
NodeOverflowResponse(Some((Point2D::new(style_box.overflow_x, style_box.overflow_y.0))))
@@ -720,7 +720,7 @@ pub fn process_node_overflow_request<N: LayoutNode>(requested_node: N) -> NodeOv
pub fn process_margin_style_query<N: LayoutNode>(requested_node: N)
-> MarginStyleResponse {
let layout_node = requested_node.to_threadsafe();
- let style = &*layout_node.style();
+ let style = &*layout_node.resolved_style();
let margin = style.get_margin();
MarginStyleResponse {
diff --git a/components/layout/text.rs b/components/layout/text.rs
index b7729608ce7..2ee93282822 100644
--- a/components/layout/text.rs
+++ b/components/layout/text.rs
@@ -339,15 +339,15 @@ impl TextRunScanner {
break;
}
};
- let mut mapping = mappings.next().unwrap();
+ let mapping = mappings.next().unwrap();
let scanned_run = runs[mapping.text_run_index].clone();
let mut byte_range = Range::new(ByteIndex(mapping.byte_range.begin() as isize),
ByteIndex(mapping.byte_range.length() as isize));
let requires_line_break_afterward_if_wrapping_on_newlines =
- !mapping.byte_range.is_empty() &&
- scanned_run.run.text.char_at_reverse(mapping.byte_range.end()) == '\n';
+ scanned_run.run.text[mapping.byte_range.begin()..mapping.byte_range.end()]
+ .ends_with('\n');
if requires_line_break_afterward_if_wrapping_on_newlines {
byte_range.extend_by(ByteIndex(-1)); // Trim the '\n'
}
diff --git a/components/layout/wrapper.rs b/components/layout/wrapper.rs
index a94203cbf21..e9215f8717f 100644
--- a/components/layout/wrapper.rs
+++ b/components/layout/wrapper.rs
@@ -72,7 +72,7 @@ use style::properties::{ComputedValues, ServoComputedValues};
use style::properties::{PropertyDeclaration, PropertyDeclarationBlock};
use style::restyle_hints::ElementSnapshot;
use style::selector_impl::{NonTSPseudoClass, PseudoElement, ServoSelectorImpl};
-use style::servo::PrivateStyleData;
+use style::servo::{PrivateStyleData, SharedStyleContext};
use url::Url;
use util::str::is_whitespace;
@@ -428,14 +428,14 @@ impl<'le> TElement for ServoLayoutElement<'le> {
}
#[inline]
- fn get_attr<'a>(&'a self, namespace: &Namespace, name: &Atom) -> Option<&'a str> {
+ fn get_attr(&self, namespace: &Namespace, name: &Atom) -> Option<&str> {
unsafe {
(*self.element.unsafe_get()).get_attr_val_for_layout(namespace, name)
}
}
#[inline]
- fn get_attrs<'a>(&'a self, name: &Atom) -> Vec<&'a str> {
+ fn get_attrs(&self, name: &Atom) -> Vec<&str> {
unsafe {
(*self.element.unsafe_get()).get_attr_vals_for_layout(name)
}
@@ -650,6 +650,16 @@ impl<T> PseudoElementType<T> {
PseudoElementType::DetailsContent(_) => PseudoElementType::DetailsContent(()),
}
}
+
+ pub fn style_pseudo_element(&self) -> PseudoElement {
+ match *self {
+ PseudoElementType::Normal => unreachable!("style_pseudo_element called with PseudoElementType::Normal"),
+ PseudoElementType::Before(_) => PseudoElement::Before,
+ PseudoElementType::After(_) => PseudoElement::After,
+ PseudoElementType::DetailsSummary(_) => PseudoElement::DetailsSummary,
+ PseudoElementType::DetailsContent(_) => PseudoElement::DetailsContent,
+ }
+ }
}
/// A thread-safe version of `LayoutNode`, used during flow construction. This type of layout
@@ -661,7 +671,7 @@ pub trait ThreadSafeLayoutNode : Clone + Copy + Sized + PartialEq {
/// Creates a new `ThreadSafeLayoutNode` for the same `LayoutNode`
/// with a different pseudo-element type.
- fn with_pseudo(&self, pseudo: PseudoElementType<display::T>) -> Self;
+ fn with_pseudo(&self, pseudo: PseudoElementType<Option<display::T>>) -> Self;
/// Converts self into an `OpaqueNode`.
fn opaque(&self) -> OpaqueNode;
@@ -685,42 +695,36 @@ pub trait ThreadSafeLayoutNode : Clone + Copy + Sized + PartialEq {
fn as_element(&self) -> Self::ConcreteThreadSafeLayoutElement;
#[inline]
- fn get_pseudo_element_type(&self) -> PseudoElementType<display::T>;
+ fn get_pseudo_element_type(&self) -> PseudoElementType<Option<display::T>>;
#[inline]
fn get_before_pseudo(&self) -> Option<Self> {
- self.borrow_layout_data().unwrap()
- .style_data.per_pseudo
- .get(&PseudoElement::Before)
- .map(|style| {
- self.with_pseudo(PseudoElementType::Before(style.get_box().display))
- })
+ if self.borrow_layout_data().unwrap()
+ .style_data.per_pseudo
+ .contains_key(&PseudoElement::Before) {
+ Some(self.with_pseudo(PseudoElementType::Before(None)))
+ } else {
+ None
+ }
}
#[inline]
fn get_after_pseudo(&self) -> Option<Self> {
- self.borrow_layout_data().unwrap()
- .style_data.per_pseudo
- .get(&PseudoElement::After)
- .map(|style| {
- self.with_pseudo(PseudoElementType::After(style.get_box().display))
- })
+ if self.borrow_layout_data().unwrap()
+ .style_data.per_pseudo
+ .contains_key(&PseudoElement::After) {
+ Some(self.with_pseudo(PseudoElementType::After(None)))
+ } else {
+ None
+ }
}
- // TODO(emilio): Since the ::-details-* pseudos are internal, just affecting one element, and
- // only changing `display` property when the element `open` attribute changes, this should be
- // eligible for not being cascaded eagerly, reading the display property from layout instead.
#[inline]
fn get_details_summary_pseudo(&self) -> Option<Self> {
if self.is_element() &&
self.as_element().get_local_name() == &atom!("details") &&
self.as_element().get_namespace() == &ns!(html) {
- self.borrow_layout_data().unwrap()
- .style_data.per_pseudo
- .get(&PseudoElement::DetailsSummary)
- .map(|style| {
- self.with_pseudo(PseudoElementType::DetailsSummary(style.get_box().display))
- })
+ Some(self.with_pseudo(PseudoElementType::DetailsSummary(None)))
} else {
None
}
@@ -731,12 +735,12 @@ pub trait ThreadSafeLayoutNode : Clone + Copy + Sized + PartialEq {
if self.is_element() &&
self.as_element().get_local_name() == &atom!("details") &&
self.as_element().get_namespace() == &ns!(html) {
- self.borrow_layout_data().unwrap()
- .style_data.per_pseudo
- .get(&PseudoElement::DetailsContent)
- .map(|style| {
- self.with_pseudo(PseudoElementType::DetailsContent(style.get_box().display))
- })
+ let display = if self.as_element().get_attr(&ns!(), &atom!("open")).is_some() {
+ None // Specified by the stylesheet
+ } else {
+ Some(display::T::none)
+ };
+ Some(self.with_pseudo(PseudoElementType::DetailsContent(display)))
} else {
None
}
@@ -759,23 +763,58 @@ pub trait ThreadSafeLayoutNode : Clone + Copy + Sized + PartialEq {
///
/// Unlike the version on TNode, this handles pseudo-elements.
#[inline]
- fn style(&self) -> Ref<Arc<ServoComputedValues>> {
+ fn style(&self, context: &SharedStyleContext) -> Ref<Arc<ServoComputedValues>> {
+ match self.get_pseudo_element_type() {
+ PseudoElementType::Normal => {
+ Ref::map(self.borrow_layout_data().unwrap(), |data| {
+ data.style_data.style.as_ref().unwrap()
+ })
+ },
+ other => {
+ // Precompute non-eagerly-cascaded pseudo-element styles if not
+ // cached before.
+ let style_pseudo = other.style_pseudo_element();
+ if !style_pseudo.is_eagerly_cascaded() &&
+ !self.borrow_layout_data().unwrap().style_data.per_pseudo.contains_key(&style_pseudo) {
+ let mut data = self.mutate_layout_data().unwrap();
+ let new_style = context.stylist
+ .computed_values_for_pseudo(&style_pseudo,
+ data.style_data.style.as_ref());
+ data.style_data.per_pseudo.insert(style_pseudo.clone(), new_style.unwrap());
+ }
+
+ Ref::map(self.borrow_layout_data().unwrap(), |data| {
+ data.style_data.per_pseudo.get(&style_pseudo).unwrap()
+ })
+ }
+ }
+ }
+
+ /// Returns the already resolved style of the node.
+ ///
+ /// This differs from `style(ctx)` in that if the pseudo-element has not yet
+ /// been computed it would panic.
+ ///
+ /// This should be used just for querying layout, or when we know the
+ /// element style is precomputed, not from general layout itself.
+ #[inline]
+ fn resolved_style(&self) -> Ref<Arc<ServoComputedValues>> {
Ref::map(self.borrow_layout_data().unwrap(), |data| {
- let style = match self.get_pseudo_element_type() {
- PseudoElementType::Before(_) => data.style_data.per_pseudo.get(&PseudoElement::Before),
- PseudoElementType::After(_) => data.style_data.per_pseudo.get(&PseudoElement::After),
- PseudoElementType::DetailsSummary(_) => data.style_data.per_pseudo.get(&PseudoElement::DetailsSummary),
- PseudoElementType::DetailsContent(_) => data.style_data.per_pseudo.get(&PseudoElement::DetailsContent),
- PseudoElementType::Normal => data.style_data.style.as_ref(),
- };
- style.unwrap()
+ match self.get_pseudo_element_type() {
+ PseudoElementType::Normal
+ => data.style_data.style.as_ref().unwrap(),
+ other
+ => data.style_data.per_pseudo.get(&other.style_pseudo_element()).unwrap(),
+ }
})
}
#[inline]
- fn selected_style(&self) -> Ref<Arc<ServoComputedValues>> {
+ fn selected_style(&self, _context: &SharedStyleContext) -> Ref<Arc<ServoComputedValues>> {
Ref::map(self.borrow_layout_data().unwrap(), |data| {
- data.style_data.per_pseudo.get(&PseudoElement::Selection).unwrap_or(data.style_data.style.as_ref().unwrap())
+ data.style_data.per_pseudo
+ .get(&PseudoElement::Selection)
+ .unwrap_or(data.style_data.style.as_ref().unwrap())
})
}
@@ -786,26 +825,16 @@ pub trait ThreadSafeLayoutNode : Clone + Copy + Sized + PartialEq {
let mut data = self.mutate_layout_data().unwrap();
match self.get_pseudo_element_type() {
- PseudoElementType::Before(_) => {
- data.style_data.per_pseudo.remove(&PseudoElement::Before);
- }
- PseudoElementType::After(_) => {
- data.style_data.per_pseudo.remove(&PseudoElement::After);
- }
- PseudoElementType::DetailsSummary(_) => {
- data.style_data.per_pseudo.remove(&PseudoElement::DetailsSummary);
- }
- PseudoElementType::DetailsContent(_) => {
- data.style_data.per_pseudo.remove(&PseudoElement::DetailsContent);
- }
-
PseudoElementType::Normal => {
data.style_data.style = None;
}
+ other => {
+ data.style_data.per_pseudo.remove(&other.style_pseudo_element());
+ }
};
}
- fn is_ignorable_whitespace(&self) -> bool;
+ fn is_ignorable_whitespace(&self, context: &SharedStyleContext) -> bool;
fn restyle_damage(self) -> RestyleDamage;
@@ -884,7 +913,7 @@ pub trait ThreadSafeLayoutElement: Clone + Copy + Sized {
type ConcreteThreadSafeLayoutNode: ThreadSafeLayoutNode<ConcreteThreadSafeLayoutElement = Self>;
#[inline]
- fn get_attr<'a>(&'a self, namespace: &Namespace, name: &Atom) -> Option<&'a str>;
+ fn get_attr(&self, namespace: &Namespace, name: &Atom) -> Option<&str>;
#[inline]
fn get_local_name(&self) -> &Atom;
@@ -898,7 +927,9 @@ pub struct ServoThreadSafeLayoutNode<'ln> {
/// The wrapped node.
node: ServoLayoutNode<'ln>,
- pseudo: PseudoElementType<display::T>,
+ /// The pseudo-element type, with (optionally),
+ /// an specified display value to override the stylesheet.
+ pseudo: PseudoElementType<Option<display::T>>,
}
impl<'a> PartialEq for ServoThreadSafeLayoutNode<'a> {
@@ -948,7 +979,8 @@ impl<'ln> ThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> {
type ConcreteThreadSafeLayoutElement = ServoThreadSafeLayoutElement<'ln>;
type ChildrenIterator = ThreadSafeLayoutNodeChildrenIterator<Self>;
- fn with_pseudo(&self, pseudo: PseudoElementType<display::T>) -> ServoThreadSafeLayoutNode<'ln> {
+ fn with_pseudo(&self,
+ pseudo: PseudoElementType<Option<display::T>>) -> ServoThreadSafeLayoutNode<'ln> {
ServoThreadSafeLayoutNode {
node: self.node.clone(),
pseudo: pseudo,
@@ -993,7 +1025,7 @@ impl<'ln> ThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> {
}
}
- fn get_pseudo_element_type(&self) -> PseudoElementType<display::T> {
+ fn get_pseudo_element_type(&self) -> PseudoElementType<Option<display::T>> {
self.pseudo
}
@@ -1005,7 +1037,7 @@ impl<'ln> ThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> {
self.node.mutate_layout_data()
}
- fn is_ignorable_whitespace(&self) -> bool {
+ fn is_ignorable_whitespace(&self, context: &SharedStyleContext) -> bool {
unsafe {
let text: LayoutJS<Text> = match self.get_jsmanaged().downcast() {
Some(text) => text,
@@ -1022,7 +1054,7 @@ impl<'ln> ThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> {
//
// If you implement other values for this property, you will almost certainly
// want to update this check.
- !self.style().get_inheritedtext().white_space.preserve_newlines()
+ !self.style(context).get_inheritedtext().white_space.preserve_newlines()
}
}
@@ -1046,13 +1078,7 @@ impl<'ln> ThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> {
fn text_content(&self) -> TextContent {
if self.pseudo.is_replaced_content() {
- let data = &self.borrow_layout_data().unwrap().style_data;
-
- let style = if self.pseudo.is_before() {
- data.per_pseudo.get(&PseudoElement::Before).unwrap()
- } else {
- data.per_pseudo.get(&PseudoElement::After).unwrap()
- };
+ let style = self.resolved_style();
return match style.as_ref().get_counters().content {
content::T::Content(ref value) if !value.is_empty() => {
@@ -1078,7 +1104,7 @@ impl<'ln> ThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> {
return TextContent::Text(data);
}
- panic!("not text!")
+ unreachable!("not text!")
}
fn selection(&self) -> Option<Range<ByteIndex>> {
@@ -1164,8 +1190,8 @@ impl<ConcreteNode> Iterator for ThreadSafeLayoutNodeChildrenIterator<ConcreteNod
loop {
let next_node = if let Some(ref node) = current_node {
if node.is_element() &&
- node.as_element().get_local_name() == &atom!("summary") &&
- node.as_element().get_namespace() == &ns!(html) {
+ node.as_element().get_local_name() == &atom!("summary") &&
+ node.as_element().get_namespace() == &ns!(html) {
self.current_node = None;
return Some(node.clone());
}
diff --git a/components/net/cookie_storage.rs b/components/net/cookie_storage.rs
index 092cdd4882f..0698b8e46cd 100644
--- a/components/net/cookie_storage.rs
+++ b/components/net/cookie_storage.rs
@@ -7,7 +7,7 @@
use cookie::Cookie;
use net_traits::CookieSource;
-use rustc_serialize::{Encodable, Encoder};
+use rustc_serialize::Encoder;
use std::cmp::Ordering;
use url::Url;
diff --git a/components/net/fetch/methods.rs b/components/net/fetch/methods.rs
index 868d284707f..1b4c43195ea 100644
--- a/components/net/fetch/methods.rs
+++ b/components/net/fetch/methods.rs
@@ -14,6 +14,7 @@ use hyper::header::{IfNoneMatch, Pragma, Location, QualityItem, Referer as Refer
use hyper::method::Method;
use hyper::mime::{Mime, SubLevel, TopLevel};
use hyper::status::StatusCode;
+use mime_guess::guess_mime_type;
use net_traits::AsyncFetchListener;
use net_traits::request::{CacheMode, CredentialsMode, Type, Origin, Window};
use net_traits::request::{RedirectMode, Referer, Request, RequestMode, ResponseTainting};
@@ -21,6 +22,7 @@ use net_traits::response::{HttpsState, TerminationReason};
use net_traits::response::{Response, ResponseBody, ResponseType};
use resource_thread::CancellationListener;
use std::collections::HashSet;
+use std::fs::File;
use std::io::Read;
use std::iter::FromIterator;
use std::rc::Rc;
@@ -157,6 +159,7 @@ fn main_fetch(request: Rc<Request>, cache: &mut CORSCache, cors_flag: bool, recu
if (same_origin && !cors_flag ) ||
(current_url.scheme() == "data" && request.same_origin_data.get()) ||
+ (current_url.scheme() == "file" && request.same_origin_data.get()) ||
current_url.scheme() == "about" ||
request.mode == RequestMode::Navigate {
@@ -317,7 +320,29 @@ fn basic_fetch(request: Rc<Request>, cache: &mut CORSCache) -> Response {
}
},
- "blob" | "file" | "ftp" => {
+ "file" => {
+ if *request.method.borrow() == Method::Get {
+ match url.to_file_path() {
+ Ok(file_path) => {
+ File::open(file_path.clone()).ok().map_or(Response::network_error(), |mut file| {
+ let mut bytes = vec![];
+ let _ = file.read_to_end(&mut bytes);
+ let mime = guess_mime_type(file_path);
+
+ let mut response = Response::new();
+ *response.body.lock().unwrap() = ResponseBody::Done(bytes);
+ response.headers.set(ContentType(mime));
+ response
+ })
+ },
+ _ => Response::network_error()
+ }
+ } else {
+ Response::network_error()
+ }
+ },
+
+ "blob" | "ftp" => {
// XXXManishearth handle these
panic!("Unimplemented scheme for Fetch")
},
diff --git a/components/net/lib.rs b/components/net/lib.rs
index 90ffd0e0926..97b978f1725 100644
--- a/components/net/lib.rs
+++ b/components/net/lib.rs
@@ -19,7 +19,7 @@ extern crate hyper;
extern crate immeta;
extern crate ipc_channel;
#[macro_use] extern crate log;
-#[macro_use] extern crate matches;
+#[macro_use] #[no_link] extern crate matches;
#[macro_use]
extern crate mime;
extern crate mime_guess;
diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock
index a60608fa175..72d2d8949df 100644
--- a/components/servo/Cargo.lock
+++ b/components/servo/Cargo.lock
@@ -11,7 +11,7 @@ dependencies = [
"compositing 0.0.1",
"devtools 0.0.1",
"devtools_traits 0.0.1",
- "env_logger 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "env_logger 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
"gaol 0.0.1 (git+https://github.com/servo/gaol)",
"gfx 0.0.1",
@@ -23,8 +23,8 @@ dependencies = [
"layers 0.2.4 (git+https://github.com/servo/rust-layers)",
"layout 0.0.1",
"layout_tests 0.0.1",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net 0.0.1",
"net_tests 0.0.1",
@@ -65,7 +65,7 @@ name = "angle"
version = "0.1.0"
source = "git+https://github.com/emilio/angle?branch=servo#eefe3506ae13e8ace811ca544fd6b4a5f0db0a04"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -107,7 +107,7 @@ dependencies = [
"freetype 0.1.0 (git+https://github.com/servo/rust-freetype)",
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-egl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -125,7 +125,7 @@ dependencies = [
"cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -134,7 +134,7 @@ name = "backtrace-sys"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -159,6 +159,11 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
+name = "bitflags"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
name = "block"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -188,7 +193,7 @@ dependencies = [
"gfx_traits 0.0.1",
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"offscreen_gl_context 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
@@ -233,7 +238,7 @@ version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -268,12 +273,12 @@ dependencies = [
[[package]]
name = "cocoa"
-version = "0.3.0"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"core-graphics 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"objc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -294,7 +299,7 @@ name = "compiletest_rs"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -316,7 +321,7 @@ dependencies = [
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"layers 0.2.4 (git+https://github.com/servo/rust-layers)",
"layout_traits 0.0.1",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net_traits 0.0.1",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -352,7 +357,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"core-foundation-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -360,7 +365,7 @@ name = "core-foundation-sys"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -369,7 +374,7 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"core-foundation 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -380,7 +385,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"core-foundation 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"core-graphics 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -481,7 +486,7 @@ name = "dylib"
version = "0.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -553,7 +558,7 @@ source = "git+https://github.com/energymon/energymon-rust.git#7b30c4d88ac1fcfaf7
dependencies = [
"energy-monitor 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"energymon-default-sys 0.2.0 (git+https://github.com/energymon/energymon-sys.git)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -571,7 +576,7 @@ source = "git+https://github.com/energymon/energymon-sys.git#a0fb99b0312372958b1
dependencies = [
"energymon-builder 0.2.0 (git+https://github.com/energymon/energymon-sys.git)",
"energymon-sys 0.2.0 (git+https://github.com/energymon/energymon-sys.git)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -579,7 +584,7 @@ name = "energymon-sys"
version = "0.2.0"
source = "git+https://github.com/energymon/energymon-sys.git#a0fb99b0312372958b110ae6378b5c89c2287172"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -592,10 +597,10 @@ dependencies = [
[[package]]
name = "env_logger"
-version = "0.3.1"
+version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 0.1.55 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -606,7 +611,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -627,7 +632,7 @@ name = "flate2"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"miniz-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -641,7 +646,7 @@ name = "freetype"
version = "0.1.0"
source = "git+https://github.com/servo/rust-freetype#d564ff90a3c69d987f5c015d7ec034cfaee21aff"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -650,7 +655,7 @@ version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -668,8 +673,8 @@ name = "gaol"
version = "0.0.1"
source = "git+https://github.com/servo/gaol#cbb2518029901f078f871a87ebe05cf96d727713"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -711,8 +716,8 @@ dependencies = [
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"layers 0.2.4 (git+https://github.com/servo/rust-layers)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"mime 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net_traits 0.0.1",
@@ -727,7 +732,7 @@ dependencies = [
"servo-skia 0.20130412.6 (registry+https://github.com/rust-lang/crates.io-index)",
"simd 0.1.0 (git+https://github.com/huonw/simd)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"style 0.0.1",
"style_traits 0.0.1",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -776,7 +781,7 @@ version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"khronos_api 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"xml-rs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -790,7 +795,7 @@ dependencies = [
[[package]]
name = "glob"
-version = "0.2.10"
+version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
@@ -806,7 +811,7 @@ dependencies = [
"net_traits 0.0.1",
"script_traits 0.0.1",
"servo-egl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "servo-glutin 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "servo-glutin 0.4.16 (registry+https://github.com/rust-lang/crates.io-index)",
"style_traits 0.0.1",
"url 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"util 0.0.1",
@@ -820,7 +825,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gl_generator 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"khronos_api 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -828,7 +833,7 @@ name = "harfbuzz-sys"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -846,7 +851,7 @@ name = "hbs-common-sys"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -855,7 +860,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"hbs-pow-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -865,7 +870,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"hbs-builder 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"hbs-common-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -886,7 +891,7 @@ name = "hpack"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -896,12 +901,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"mac 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"phf 0.7.13 (registry+https://github.com/rust-lang/crates.io-index)",
"phf_codegen 0.7.13 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"tendril 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -919,7 +924,7 @@ dependencies = [
"cookie 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
"httparse 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"language-tags 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"mime 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -951,10 +956,10 @@ dependencies = [
"byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"enum_primitive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gif 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glob 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "jpeg-decoder 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "jpeg-decoder 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
- "png 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "png 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -969,7 +974,7 @@ dependencies = [
[[package]]
name = "inflate"
-version = "0.1.0"
+version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
@@ -982,7 +987,7 @@ dependencies = [
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
"leaky-cow 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -993,7 +998,7 @@ dependencies = [
"bincode 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1002,12 +1007,12 @@ dependencies = [
[[package]]
name = "jpeg-decoder"
-version = "0.1.3"
+version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num-rational 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"rayon 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1017,8 +1022,8 @@ version = "0.1.2"
source = "git+https://github.com/servo/rust-mozjs#efe805affa75d776316e9ea6113f85cdad1e82ed"
dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"mozjs_sys 0.0.0 (git+https://github.com/servo/mozjs)",
"num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1057,8 +1062,8 @@ dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"io-surface 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-egl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-skia 0.20130412.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1082,8 +1087,8 @@ dependencies = [
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"layout_traits 0.0.1",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net_traits 0.0.1",
"plugins 0.0.1",
@@ -1092,11 +1097,11 @@ dependencies = [
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"script 0.0.1",
"script_traits 0.0.1",
- "selectors 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "selectors 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"style 0.0.1",
"style_traits 0.0.1",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1151,7 +1156,7 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.4"
+version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
@@ -1178,17 +1183,14 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "log"
-version = "0.3.5"
+version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
-]
[[package]]
name = "lzw"
@@ -1210,7 +1212,7 @@ name = "malloc_buf"
version = "0.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1223,7 +1225,7 @@ name = "memchr"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1233,7 +1235,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"fs2 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1242,7 +1244,7 @@ name = "mime"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1262,7 +1264,7 @@ version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1270,7 +1272,7 @@ name = "mozjs_sys"
version = "0.0.0"
source = "git+https://github.com/servo/mozjs#3122a1e1a80b78377ae1ce8e7edd4ad3bcbb3d65"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"libz-sys 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1306,7 +1308,7 @@ dependencies = [
"hyper 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
"immeta 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"mime 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"mime_guess 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1333,7 +1335,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
"ws2_32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1367,7 +1369,7 @@ dependencies = [
"image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"plugins 0.0.1",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1464,7 +1466,7 @@ version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1510,7 +1512,7 @@ dependencies = [
"gl_generator 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
"khronos_api 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"x11 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1524,7 +1526,7 @@ dependencies = [
"bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl-sys 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl-sys-extras 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1535,7 +1537,7 @@ version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gdi32-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"libressl-pnacl-sys 2.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"user32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1547,7 +1549,7 @@ version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl-sys 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1556,7 +1558,7 @@ name = "osmesa-sys"
version = "0.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"shared_library 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1631,14 +1633,14 @@ dependencies = [
[[package]]
name = "png"
-version = "0.4.0"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"flate2 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
- "inflate 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
+ "inflate 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num-iter 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1647,8 +1649,8 @@ version = "0.0.1"
dependencies = [
"hbs-pow 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
"profile_traits 0.0.1",
"regex 0.1.55 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1716,7 +1718,7 @@ name = "rand"
version = "0.3.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1811,8 +1813,8 @@ dependencies = [
"image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"js 0.1.2 (git+https://github.com/servo/rust-mozjs)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net_traits 0.0.1",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1827,10 +1829,10 @@ dependencies = [
"regex 0.1.55 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"script_traits 0.0.1",
- "selectors 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "selectors 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"style 0.0.1",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
"unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1865,7 +1867,7 @@ dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net_traits 0.0.1",
"offscreen_gl_context 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1881,10 +1883,10 @@ dependencies = [
[[package]]
name = "selectors"
-version = "0.5.2"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "bitflags 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"cssparser 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1892,7 +1894,7 @@ dependencies = [
"matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"quickersort 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1937,7 +1939,7 @@ name = "servo-egl"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1945,7 +1947,7 @@ name = "servo-fontconfig"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-fontconfig-sys 2.11.3 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1969,12 +1971,12 @@ dependencies = [
[[package]]
name = "servo-glutin"
-version = "0.4.15"
+version = "0.4.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"android_glue 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"cgl 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "cocoa 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cocoa 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"core-foundation 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"core-graphics 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"dwmapi-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1982,7 +1984,7 @@ dependencies = [
"gl_generator 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"objc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"osmesa-sys 0.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
"shared_library 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2006,11 +2008,11 @@ dependencies = [
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
"glx 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"io-surface 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-egl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-fontconfig 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-freetype-sys 2.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
- "servo-glutin 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "servo-glutin 0.4.16 (registry+https://github.com/rust-lang/crates.io-index)",
"x11 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -2020,7 +2022,7 @@ version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -2048,12 +2050,12 @@ version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"hpack 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "string_cache"
-version = "0.2.12"
+version = "0.2.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"debug_unreachable 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2078,16 +2080,16 @@ dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "selectors 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "selectors 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"style_traits 0.0.1",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2104,8 +2106,8 @@ dependencies = [
"msg 0.0.1",
"plugins 0.0.1",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "selectors 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "selectors 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"style 0.0.1",
"style_traits 0.0.1",
"url 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2121,10 +2123,10 @@ dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "selectors 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "selectors 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2152,7 +2154,7 @@ version = "2.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc_version 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2185,7 +2187,7 @@ version = "0.1.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -2195,7 +2197,7 @@ name = "tinyfiledialogs"
version = "0.1.0"
source = "git+https://github.com/jdm/tinyfiledialogs#2d2285985db1168da4d516000f24842aba46fd94"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -2297,8 +2299,8 @@ dependencies = [
"js 0.1.2 (git+https://github.com/servo/rust-mozjs)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
@@ -2307,7 +2309,7 @@ dependencies = [
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -2317,7 +2319,7 @@ version = "0.0.1"
dependencies = [
"app_units 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
"util 0.0.1",
]
@@ -2342,7 +2344,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"crossbeam 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"wayland-scanner 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)",
"wayland-sys 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -2392,7 +2394,7 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"hyper 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 0.1.55 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -2405,7 +2407,7 @@ dependencies = [
"hyper 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
"image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"plugins 0.0.1",
"regex 0.1.55 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2431,7 +2433,7 @@ dependencies = [
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"offscreen_gl_context 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"scoped_threadpool 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2495,7 +2497,7 @@ name = "x11"
version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -2505,7 +2507,7 @@ version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"dylib 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -2529,12 +2531,12 @@ name = "xml5ever"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"mac 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"phf 0.7.13 (registry+https://github.com/rust-lang/crates.io-index)",
"phf_codegen 0.7.13 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"tendril 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
]
diff --git a/components/style/context.rs b/components/style/context.rs
index f5bf81274ee..76c2f1ece0c 100644
--- a/components/style/context.rs
+++ b/components/style/context.rs
@@ -16,12 +16,6 @@ use std::collections::HashMap;
use std::sync::mpsc::Sender;
use std::sync::{Arc, Mutex, RwLock};
-pub struct StylistWrapper<Impl: SelectorImplExt>(pub *const Stylist<Impl>);
-
-// FIXME(#6569) This implementation is unsound.
-#[allow(unsafe_code)]
-unsafe impl<Impl: SelectorImplExt> Sync for StylistWrapper<Impl> {}
-
pub struct SharedStyleContext<Impl: SelectorImplExt> {
/// The current viewport size.
pub viewport_size: Size2D<Au>,
@@ -30,9 +24,7 @@ pub struct SharedStyleContext<Impl: SelectorImplExt> {
pub screen_size_changed: bool,
/// The CSS selector stylist.
- ///
- /// FIXME(#2604): Make this no longer an unsafe pointer once we have fast `RWArc`s.
- pub stylist: StylistWrapper<Impl>,
+ pub stylist: Arc<Stylist<Impl>>,
/// Starts at zero, and increased by one every time a layout completes.
/// This can be used to easily check for invalid stale data.
@@ -60,10 +52,9 @@ pub struct LocalStyleContext<C: ComputedValues> {
pub style_sharing_candidate_cache: RefCell<StyleSharingCandidateCache<C>>,
}
-pub trait StyleContext<'a, Impl: SelectorImplExt, C: ComputedValues> {
-
+pub trait StyleContext<'a, Impl: SelectorImplExt> {
fn shared_context(&self) -> &'a SharedStyleContext<Impl>;
- fn local_context(&self) -> &LocalStyleContext<C>;
+ fn local_context(&self) -> &LocalStyleContext<Impl::ComputedValues>;
}
/// Why we're doing reflow.
@@ -74,4 +65,3 @@ pub enum ReflowGoal {
/// We're reflowing in order to satisfy a script query. No display list will be created.
ForScriptQuery,
}
-
diff --git a/components/style/dom.rs b/components/style/dom.rs
index d0ba545798c..fed1597c627 100644
--- a/components/style/dom.rs
+++ b/components/style/dom.rs
@@ -4,11 +4,12 @@
#![allow(unsafe_code)]
+use context::SharedStyleContext;
use data::PrivateStyleData;
use element_state::ElementState;
use properties::{ComputedValues, PropertyDeclaration, PropertyDeclarationBlock};
use restyle_hints::{ElementSnapshot, RESTYLE_DESCENDANTS, RESTYLE_LATER_SIBLINGS, RESTYLE_SELF, RestyleHint};
-use selector_impl::ElementExt;
+use selector_impl::{ElementExt, SelectorImplExt};
use selectors::Element;
use selectors::matching::DeclarationBlock;
use smallvec::VecLike;
@@ -137,19 +138,19 @@ pub trait TNode : Sized + Copy + Clone {
#[inline(always)]
unsafe fn borrow_data_unchecked(&self)
-> Option<*const PrivateStyleData<<Self::ConcreteElement as Element>::Impl,
- Self::ConcreteComputedValues>>;
+ Self::ConcreteComputedValues>>;
/// Borrows the PrivateStyleData immutably. Fails on a conflicting borrow.
#[inline(always)]
fn borrow_data(&self)
-> Option<Ref<PrivateStyleData<<Self::ConcreteElement as Element>::Impl,
- Self::ConcreteComputedValues>>>;
+ Self::ConcreteComputedValues>>>;
/// Borrows the PrivateStyleData mutably. Fails on a conflicting borrow.
#[inline(always)]
fn mutate_data(&self)
-> Option<RefMut<PrivateStyleData<<Self::ConcreteElement as Element>::Impl,
- Self::ConcreteComputedValues>>>;
+ Self::ConcreteComputedValues>>>;
/// Get the description of how to account for recent style changes.
fn restyle_damage(self) -> Self::ConcreteRestyleDamage;
@@ -170,7 +171,10 @@ pub trait TNode : Sized + Copy + Clone {
/// Returns the style results for the given node. If CSS selector matching
/// has not yet been performed, fails.
- fn style(&self) -> Ref<Arc<Self::ConcreteComputedValues>> {
+ fn style(&self,
+ _context: &SharedStyleContext<<Self::ConcreteElement as Element>::Impl>)
+ -> Ref<Arc<Self::ConcreteComputedValues>>
+ where <Self::ConcreteElement as Element>::Impl: SelectorImplExt<ComputedValues=Self::ConcreteComputedValues> {
Ref::map(self.borrow_data().unwrap(), |data| data.style.as_ref().unwrap())
}
diff --git a/components/style/properties/helpers.mako.rs b/components/style/properties/helpers.mako.rs
index 8f1a7820e1f..73ff84cadd5 100644
--- a/components/style/properties/helpers.mako.rs
+++ b/components/style/properties/helpers.mako.rs
@@ -189,3 +189,82 @@
}
</%call>
</%def>
+
+<%def name="shorthand(name, sub_properties, experimental=False)">
+<%
+ shorthand = data.declare_shorthand(name, sub_properties.split(), experimental=experimental)
+%>
+ pub mod ${shorthand.ident} {
+ use cssparser::Parser;
+ use parser::ParserContext;
+ use properties::{longhands, PropertyDeclaration, DeclaredValue, Shorthand};
+
+ pub struct Longhands {
+ % for sub_property in shorthand.sub_properties:
+ pub ${sub_property.ident}:
+ Option<longhands::${sub_property.ident}::SpecifiedValue>,
+ % endfor
+ }
+
+ pub fn parse(context: &ParserContext, input: &mut Parser,
+ declarations: &mut Vec<PropertyDeclaration>)
+ -> Result<(), ()> {
+ input.look_for_var_functions();
+ let start = input.position();
+ let value = input.parse_entirely(|input| parse_value(context, input));
+ if value.is_err() {
+ while let Ok(_) = input.next() {} // Look for var() after the error.
+ }
+ let var = input.seen_var_functions();
+ if let Ok(value) = value {
+ % for sub_property in shorthand.sub_properties:
+ declarations.push(PropertyDeclaration::${sub_property.camel_case}(
+ match value.${sub_property.ident} {
+ Some(value) => DeclaredValue::Value(value),
+ None => DeclaredValue::Initial,
+ }
+ ));
+ % endfor
+ Ok(())
+ } else if var {
+ input.reset(start);
+ let (first_token_type, css) = try!(
+ ::custom_properties::parse_non_custom_with_var(input));
+ % for sub_property in shorthand.sub_properties:
+ declarations.push(PropertyDeclaration::${sub_property.camel_case}(
+ DeclaredValue::WithVariables {
+ css: css.clone().into_owned(),
+ first_token_type: first_token_type,
+ base_url: context.base_url.clone(),
+ from_shorthand: Some(Shorthand::${shorthand.camel_case}),
+ }
+ ));
+ % endfor
+ Ok(())
+ } else {
+ Err(())
+ }
+ }
+
+ #[allow(unused_variables)]
+ pub fn parse_value(context: &ParserContext, input: &mut Parser) -> Result<Longhands, ()> {
+ ${caller.body()}
+ }
+ }
+</%def>
+
+<%def name="four_sides_shorthand(name, sub_property_pattern, parser_function)">
+ <%self:shorthand name="${name}" sub_properties="${
+ ' '.join(sub_property_pattern % side
+ for side in ['top', 'right', 'bottom', 'left'])}">
+ use super::parse_four_sides;
+ use values::specified;
+ let _unused = context;
+ let (top, right, bottom, left) = try!(parse_four_sides(input, ${parser_function}));
+ Ok(Longhands {
+ % for side in ["top", "right", "bottom", "left"]:
+ ${to_rust_ident(sub_property_pattern % side)}: Some(${side}),
+ % endfor
+ })
+ </%self:shorthand>
+</%def>
diff --git a/components/style/properties/properties.mako.rs b/components/style/properties/properties.mako.rs
index 1717f9ae1b7..6582d5a6020 100644
--- a/components/style/properties/properties.mako.rs
+++ b/components/style/properties/properties.mako.rs
@@ -72,75 +72,11 @@ pub mod longhands {
<%include file="/longhand/xul.mako.rs" />
}
-
pub mod shorthands {
use cssparser::Parser;
use parser::ParserContext;
use values::specified;
- <%def name="shorthand(name, sub_properties, experimental=False)">
- <%
- shorthand = data.declare_shorthand(name, sub_properties.split(), experimental=experimental)
- %>
- pub mod ${shorthand.ident} {
- use cssparser::Parser;
- use parser::ParserContext;
- use properties::{longhands, PropertyDeclaration, DeclaredValue, Shorthand};
-
- pub struct Longhands {
- % for sub_property in shorthand.sub_properties:
- pub ${sub_property.ident}:
- Option<longhands::${sub_property.ident}::SpecifiedValue>,
- % endfor
- }
-
- pub fn parse(context: &ParserContext, input: &mut Parser,
- declarations: &mut Vec<PropertyDeclaration>)
- -> Result<(), ()> {
- input.look_for_var_functions();
- let start = input.position();
- let value = input.parse_entirely(|input| parse_value(context, input));
- if value.is_err() {
- while let Ok(_) = input.next() {} // Look for var() after the error.
- }
- let var = input.seen_var_functions();
- if let Ok(value) = value {
- % for sub_property in shorthand.sub_properties:
- declarations.push(PropertyDeclaration::${sub_property.camel_case}(
- match value.${sub_property.ident} {
- Some(value) => DeclaredValue::Value(value),
- None => DeclaredValue::Initial,
- }
- ));
- % endfor
- Ok(())
- } else if var {
- input.reset(start);
- let (first_token_type, css) = try!(
- ::custom_properties::parse_non_custom_with_var(input));
- % for sub_property in shorthand.sub_properties:
- declarations.push(PropertyDeclaration::${sub_property.camel_case}(
- DeclaredValue::WithVariables {
- css: css.clone().into_owned(),
- first_token_type: first_token_type,
- base_url: context.base_url.clone(),
- from_shorthand: Some(Shorthand::${shorthand.camel_case}),
- }
- ));
- % endfor
- Ok(())
- } else {
- Err(())
- }
- }
-
- #[allow(unused_variables)]
- pub fn parse_value(context: &ParserContext, input: &mut Parser) -> Result<Longhands, ()> {
- ${caller.body()}
- }
- }
- </%def>
-
fn parse_four_sides<F, T>(input: &mut Parser, parse_one: F) -> Result<(T, T, T, T), ()>
where F: Fn(&mut Parser) -> Result<T, ()>, F: Copy, T: Clone {
// zero or more than four values is invalid.
@@ -184,606 +120,16 @@ pub mod shorthands {
Ok((top, right, bottom, left))
}
- <%def name="four_sides_shorthand(name, sub_property_pattern, parser_function)">
- <%self:shorthand name="${name}" sub_properties="${
- ' '.join(sub_property_pattern % side
- for side in ['top', 'right', 'bottom', 'left'])}">
- use super::parse_four_sides;
- use values::specified;
- let _unused = context;
- let (top, right, bottom, left) = try!(parse_four_sides(input, ${parser_function}));
- Ok(Longhands {
- % for side in ["top", "right", "bottom", "left"]:
- ${to_rust_ident(sub_property_pattern % side)}: Some(${side}),
- % endfor
- })
- </%self:shorthand>
- </%def>
-
- // TODO: other background-* properties
- <%self:shorthand name="background"
- sub_properties="background-color background-position background-repeat background-attachment
- background-image background-size background-origin background-clip">
- use properties::longhands::{background_color, background_position, background_repeat, background_attachment};
- use properties::longhands::{background_image, background_size, background_origin, background_clip};
-
- let mut color = None;
- let mut image = None;
- let mut position = None;
- let mut repeat = None;
- let mut size = None;
- let mut attachment = None;
- let mut any = false;
- let mut origin = None;
- let mut clip = None;
-
- loop {
- if position.is_none() {
- if let Ok(value) = input.try(|input| background_position::parse(context, input)) {
- position = Some(value);
- any = true;
-
- // Parse background size, if applicable.
- size = input.try(|input| {
- try!(input.expect_delim('/'));
- background_size::parse(context, input)
- }).ok();
-
- continue
- }
- }
- if color.is_none() {
- if let Ok(value) = input.try(|input| background_color::parse(context, input)) {
- color = Some(value);
- any = true;
- continue
- }
- }
- if image.is_none() {
- if let Ok(value) = input.try(|input| background_image::parse(context, input)) {
- image = Some(value);
- any = true;
- continue
- }
- }
- if repeat.is_none() {
- if let Ok(value) = input.try(|input| background_repeat::parse(context, input)) {
- repeat = Some(value);
- any = true;
- continue
- }
- }
- if attachment.is_none() {
- if let Ok(value) = input.try(|input| background_attachment::parse(context, input)) {
- attachment = Some(value);
- any = true;
- continue
- }
- }
- if origin.is_none() {
- if let Ok(value) = input.try(|input| background_origin::parse(context, input)) {
- origin = Some(value);
- any = true;
- continue
- }
- }
- if clip.is_none() {
- if let Ok(value) = input.try(|input| background_clip::parse(context, input)) {
- clip = Some(value);
- any = true;
- continue
- }
- }
- break
- }
-
- if any {
- Ok(Longhands {
- background_color: color,
- background_image: image,
- background_position: position,
- background_repeat: repeat,
- background_attachment: attachment,
- background_size: size,
- background_origin: origin,
- background_clip: clip,
- })
- } else {
- Err(())
- }
- </%self:shorthand>
-
- ${four_sides_shorthand("margin", "margin-%s", "specified::LengthOrPercentageOrAuto::parse")}
- ${four_sides_shorthand("padding", "padding-%s", "specified::LengthOrPercentage::parse")}
-
- ${four_sides_shorthand("border-color", "border-%s-color", "specified::CSSColor::parse")}
- ${four_sides_shorthand("border-style", "border-%s-style",
- "specified::BorderStyle::parse")}
- <%self:shorthand name="border-width" sub_properties="${
- ' '.join('border-%s-width' % side
- for side in ['top', 'right', 'bottom', 'left'])}">
- use super::parse_four_sides;
- use values::specified;
- let _unused = context;
- let (top, right, bottom, left) = try!(parse_four_sides(input, specified::parse_border_width));
- Ok(Longhands {
- % for side in ["top", "right", "bottom", "left"]:
- ${to_rust_ident('border-%s-width' % side)}:
- Some(longhands::${to_rust_ident('border-%s-width' % side)}::SpecifiedValue(${side})),
- % endfor
- })
- </%self:shorthand>
-
-
- pub fn parse_border(context: &ParserContext, input: &mut Parser)
- -> Result<(Option<specified::CSSColor>,
- Option<specified::BorderStyle>,
- Option<specified::Length>), ()> {
- use values::specified;
- let _unused = context;
- let mut color = None;
- let mut style = None;
- let mut width = None;
- let mut any = false;
- loop {
- if color.is_none() {
- if let Ok(value) = input.try(specified::CSSColor::parse) {
- color = Some(value);
- any = true;
- continue
- }
- }
- if style.is_none() {
- if let Ok(value) = input.try(specified::BorderStyle::parse) {
- style = Some(value);
- any = true;
- continue
- }
- }
- if width.is_none() {
- if let Ok(value) = input.try(specified::parse_border_width) {
- width = Some(value);
- any = true;
- continue
- }
- }
- break
- }
- if any { Ok((color, style, width)) } else { Err(()) }
- }
-
-
- % for side in ["top", "right", "bottom", "left"]:
- <%self:shorthand name="border-${side}" sub_properties="${' '.join(
- 'border-%s-%s' % (side, prop)
- for prop in ['color', 'style', 'width']
- )}">
- let (color, style, width) = try!(super::parse_border(context, input));
- Ok(Longhands {
- border_${side}_color: color,
- border_${side}_style: style,
- border_${side}_width:
- width.map(longhands::${to_rust_ident('border-%s-width' % side)}::SpecifiedValue),
- })
- </%self:shorthand>
- % endfor
-
- <%self:shorthand name="border" sub_properties="${' '.join(
- 'border-%s-%s' % (side, prop)
- for side in ['top', 'right', 'bottom', 'left']
- for prop in ['color', 'style', 'width']
- )}">
- let (color, style, width) = try!(super::parse_border(context, input));
- Ok(Longhands {
- % for side in ["top", "right", "bottom", "left"]:
- border_${side}_color: color.clone(),
- border_${side}_style: style,
- border_${side}_width:
- width.map(longhands::${to_rust_ident('border-%s-width' % side)}::SpecifiedValue),
- % endfor
- })
- </%self:shorthand>
-
- <%self:shorthand name="border-radius" sub_properties="${' '.join(
- 'border-%s-radius' % (corner)
- for corner in ['top-left', 'top-right', 'bottom-right', 'bottom-left']
- )}">
- use app_units::Au;
- use values::specified::{Length, LengthOrPercentage};
- use values::specified::BorderRadiusSize;
-
- let _ignored = context;
-
- fn parse_one_set_of_border_values(mut input: &mut Parser)
- -> Result<[LengthOrPercentage; 4], ()> {
- let mut count = 0;
- let mut values = [LengthOrPercentage::Length(Length::Absolute(Au(0))); 4];
- while count < 4 {
- if let Ok(value) = input.try(LengthOrPercentage::parse) {
- values[count] = value;
- count += 1;
- } else {
- break
- }
- }
-
- match count {
- 1 => Ok([values[0], values[0], values[0], values[0]]),
- 2 => Ok([values[0], values[1], values[0], values[1]]),
- 3 => Ok([values[0], values[1], values[2], values[1]]),
- 4 => Ok([values[0], values[1], values[2], values[3]]),
- _ => Err(()),
- }
- }
-
- fn parse_one_set_of_border_radii(mut input: &mut Parser)
- -> Result<[BorderRadiusSize; 4], ()> {
- let widths = try!(parse_one_set_of_border_values(input));
- let mut heights = widths.clone();
- let mut radii_values = [BorderRadiusSize::zero(); 4];
- if input.try(|input| input.expect_delim('/')).is_ok() {
- heights = try!(parse_one_set_of_border_values(input));
- }
- for i in 0..radii_values.len() {
- radii_values[i] = BorderRadiusSize::new(widths[i], heights[i]);
- }
- Ok(radii_values)
- }
-
- let radii = try!(parse_one_set_of_border_radii(input));
- Ok(Longhands {
- border_top_left_radius: Some(radii[0]),
- border_top_right_radius: Some(radii[1]),
- border_bottom_right_radius: Some(radii[2]),
- border_bottom_left_radius: Some(radii[3]),
- })
- </%self:shorthand>
-
- <%self:shorthand name="outline" sub_properties="outline-color outline-style outline-width">
- use properties::longhands::outline_width;
- use values::specified;
-
- let _unused = context;
- let mut color = None;
- let mut style = None;
- let mut width = None;
- let mut any = false;
- loop {
- if color.is_none() {
- if let Ok(value) = input.try(specified::CSSColor::parse) {
- color = Some(value);
- any = true;
- continue
- }
- }
- if style.is_none() {
- if let Ok(value) = input.try(specified::BorderStyle::parse) {
- style = Some(value);
- any = true;
- continue
- }
- }
- if width.is_none() {
- if let Ok(value) = input.try(|input| outline_width::parse(context, input)) {
- width = Some(value);
- any = true;
- continue
- }
- }
- break
- }
- if any {
- Ok(Longhands {
- outline_color: color,
- outline_style: style,
- outline_width: width,
- })
- } else {
- Err(())
- }
- </%self:shorthand>
-
- <%self:shorthand name="font" sub_properties="font-style font-variant font-weight
- font-size line-height font-family">
- use properties::longhands::{font_style, font_variant, font_weight, font_size,
- line_height, font_family};
- let mut nb_normals = 0;
- let mut style = None;
- let mut variant = None;
- let mut weight = None;
- let size;
- loop {
- // Special-case 'normal' because it is valid in each of
- // font-style, font-weight and font-variant.
- // Leaves the values to None, 'normal' is the initial value for each of them.
- if input.try(|input| input.expect_ident_matching("normal")).is_ok() {
- nb_normals += 1;
- continue;
- }
- if style.is_none() {
- if let Ok(value) = input.try(|input| font_style::parse(context, input)) {
- style = Some(value);
- continue
- }
- }
- if weight.is_none() {
- if let Ok(value) = input.try(|input| font_weight::parse(context, input)) {
- weight = Some(value);
- continue
- }
- }
- if variant.is_none() {
- if let Ok(value) = input.try(|input| font_variant::parse(context, input)) {
- variant = Some(value);
- continue
- }
- }
- size = Some(try!(font_size::parse(context, input)));
- break
- }
- #[inline]
- fn count<T>(opt: &Option<T>) -> u8 {
- if opt.is_some() { 1 } else { 0 }
- }
- if size.is_none() || (count(&style) + count(&weight) + count(&variant) + nb_normals) > 3 {
- return Err(())
- }
- let line_height = if input.try(|input| input.expect_delim('/')).is_ok() {
- Some(try!(line_height::parse(context, input)))
- } else {
- None
- };
- let family = try!(input.parse_comma_separated(font_family::parse_one_family));
- Ok(Longhands {
- font_style: style,
- font_variant: variant,
- font_weight: weight,
- font_size: size,
- line_height: line_height,
- font_family: Some(font_family::SpecifiedValue(family))
- })
- </%self:shorthand>
-
- // Per CSS-TEXT 6.2, "for legacy reasons, UAs must treat `word-wrap` as an alternate name for
- // the `overflow-wrap` property, as if it were a shorthand of `overflow-wrap`."
- <%self:shorthand name="word-wrap" sub_properties="overflow-wrap">
- use properties::longhands::overflow_wrap;
- Ok(Longhands {
- overflow_wrap: Some(try!(overflow_wrap::parse(context, input))),
- })
- </%self:shorthand>
-
- <%self:shorthand name="list-style"
- sub_properties="list-style-image list-style-position list-style-type">
- use properties::longhands::{list_style_image, list_style_position, list_style_type};
-
- // `none` is ambiguous until we've finished parsing the shorthands, so we count the number
- // of times we see it.
- let mut nones = 0u8;
- let (mut image, mut position, mut list_style_type, mut any) = (None, None, None, false);
- loop {
- if input.try(|input| input.expect_ident_matching("none")).is_ok() {
- nones = nones + 1;
- if nones > 2 {
- return Err(())
- }
- any = true;
- continue
- }
-
- if list_style_type.is_none() {
- if let Ok(value) = input.try(|input| list_style_type::parse(context, input)) {
- list_style_type = Some(value);
- any = true;
- continue
- }
- }
-
- if image.is_none() {
- if let Ok(value) = input.try(|input| list_style_image::parse(context, input)) {
- image = Some(value);
- any = true;
- continue
- }
- }
-
- if position.is_none() {
- if let Ok(value) = input.try(|input| list_style_position::parse(context, input)) {
- position = Some(value);
- any = true;
- continue
- }
- }
- break
- }
-
- // If there are two `none`s, then we can't have a type or image; if there is one `none`,
- // then we can't have both a type *and* an image; if there is no `none` then we're fine as
- // long as we parsed something.
- match (any, nones, list_style_type, image) {
- (true, 2, None, None) => {
- Ok(Longhands {
- list_style_position: position,
- list_style_image: Some(list_style_image::SpecifiedValue::None),
- list_style_type: Some(list_style_type::SpecifiedValue::none),
- })
- }
- (true, 1, None, Some(image)) => {
- Ok(Longhands {
- list_style_position: position,
- list_style_image: Some(image),
- list_style_type: Some(list_style_type::SpecifiedValue::none),
- })
- }
- (true, 1, Some(list_style_type), None) => {
- Ok(Longhands {
- list_style_position: position,
- list_style_image: Some(list_style_image::SpecifiedValue::None),
- list_style_type: Some(list_style_type),
- })
- }
- (true, 1, None, None) => {
- Ok(Longhands {
- list_style_position: position,
- list_style_image: Some(list_style_image::SpecifiedValue::None),
- list_style_type: Some(list_style_type::SpecifiedValue::none),
- })
- }
- (true, 0, list_style_type, image) => {
- Ok(Longhands {
- list_style_position: position,
- list_style_image: image,
- list_style_type: list_style_type,
- })
- }
- _ => Err(()),
- }
- </%self:shorthand>
-
- <%self:shorthand name="columns" sub_properties="column-count column-width" experimental="True">
- use properties::longhands::{column_count, column_width};
- let mut column_count = None;
- let mut column_width = None;
- let mut autos = 0;
-
- loop {
- if input.try(|input| input.expect_ident_matching("auto")).is_ok() {
- // Leave the options to None, 'auto' is the initial value.
- autos += 1;
- continue
- }
-
- if column_count.is_none() {
- if let Ok(value) = input.try(|input| column_count::parse(context, input)) {
- column_count = Some(value);
- continue
- }
- }
-
- if column_width.is_none() {
- if let Ok(value) = input.try(|input| column_width::parse(context, input)) {
- column_width = Some(value);
- continue
- }
- }
-
- break
- }
-
- let values = autos + column_count.iter().len() + column_width.iter().len();
- if values == 0 || values > 2 {
- Err(())
- } else {
- Ok(Longhands {
- column_count: column_count,
- column_width: column_width,
- })
- }
- </%self:shorthand>
-
- <%self:shorthand name="overflow" sub_properties="overflow-x overflow-y">
- use properties::longhands::{overflow_x, overflow_y};
-
- let overflow = try!(overflow_x::parse(context, input));
- Ok(Longhands {
- overflow_x: Some(overflow),
- overflow_y: Some(overflow_y::SpecifiedValue(overflow)),
- })
- </%self:shorthand>
-
- <%self:shorthand name="transition"
- sub_properties="transition-property transition-duration transition-timing-function
- transition-delay">
- use properties::longhands::{transition_delay, transition_duration, transition_property};
- use properties::longhands::{transition_timing_function};
-
- struct SingleTransition {
- transition_property: transition_property::SingleSpecifiedValue,
- transition_duration: transition_duration::SingleSpecifiedValue,
- transition_timing_function: transition_timing_function::SingleSpecifiedValue,
- transition_delay: transition_delay::SingleSpecifiedValue,
- }
-
- fn parse_one_transition(input: &mut Parser) -> Result<SingleTransition,()> {
- let (mut property, mut duration) = (None, None);
- let (mut timing_function, mut delay) = (None, None);
- loop {
- if property.is_none() {
- if let Ok(value) = input.try(|input| transition_property::parse_one(input)) {
- property = Some(value);
- continue
- }
- }
-
- if duration.is_none() {
- if let Ok(value) = input.try(|input| transition_duration::parse_one(input)) {
- duration = Some(value);
- continue
- }
- }
-
- if timing_function.is_none() {
- if let Ok(value) = input.try(|input| {
- transition_timing_function::parse_one(input)
- }) {
- timing_function = Some(value);
- continue
- }
- }
-
- if delay.is_none() {
- if let Ok(value) = input.try(|input| transition_delay::parse_one(input)) {
- delay = Some(value);
- continue;
- }
- }
-
- break
- }
-
- if let Some(property) = property {
- Ok(SingleTransition {
- transition_property: property,
- transition_duration:
- duration.unwrap_or(transition_duration::get_initial_single_value()),
- transition_timing_function:
- timing_function.unwrap_or(
- transition_timing_function::get_initial_single_value()),
- transition_delay:
- delay.unwrap_or(transition_delay::get_initial_single_value()),
- })
- } else {
- Err(())
- }
- }
-
- if input.try(|input| input.expect_ident_matching("none")).is_ok() {
- return Ok(Longhands {
- transition_property: None,
- transition_duration: None,
- transition_timing_function: None,
- transition_delay: None,
- })
- }
-
- let results = try!(input.parse_comma_separated(parse_one_transition));
- let (mut properties, mut durations) = (Vec::new(), Vec::new());
- let (mut timing_functions, mut delays) = (Vec::new(), Vec::new());
- for result in results {
- properties.push(result.transition_property);
- durations.push(result.transition_duration);
- timing_functions.push(result.transition_timing_function);
- delays.push(result.transition_delay);
- }
-
- Ok(Longhands {
- transition_property: Some(transition_property::SpecifiedValue(properties)),
- transition_duration: Some(transition_duration::SpecifiedValue(durations)),
- transition_timing_function:
- Some(transition_timing_function::SpecifiedValue(timing_functions)),
- transition_delay: Some(transition_delay::SpecifiedValue(delays)),
- })
- </%self:shorthand>
+ <%include file="/shorthand/background.mako.rs" />
+ <%include file="/shorthand/border.mako.rs" />
+ <%include file="/shorthand/box.mako.rs" />
+ <%include file="/shorthand/column.mako.rs" />
+ <%include file="/shorthand/font.mako.rs" />
+ <%include file="/shorthand/inherited_text.mako.rs" />
+ <%include file="/shorthand/list.mako.rs" />
+ <%include file="/shorthand/margin.mako.rs" />
+ <%include file="/shorthand/outline.mako.rs" />
+ <%include file="/shorthand/padding.mako.rs" />
}
diff --git a/components/style/properties/shorthand/background.mako.rs b/components/style/properties/shorthand/background.mako.rs
new file mode 100644
index 00000000000..4d6e3c8821a
--- /dev/null
+++ b/components/style/properties/shorthand/background.mako.rs
@@ -0,0 +1,99 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * 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/. */
+
+<%namespace name="helpers" file="/helpers.mako.rs" />
+
+// TODO: other background-* properties
+<%helpers:shorthand name="background"
+ sub_properties="background-color background-position background-repeat background-attachment
+ background-image background-size background-origin background-clip">
+ use properties::longhands::{background_color, background_position, background_repeat, background_attachment};
+ use properties::longhands::{background_image, background_size, background_origin, background_clip};
+
+ let mut color = None;
+ let mut image = None;
+ let mut position = None;
+ let mut repeat = None;
+ let mut size = None;
+ let mut attachment = None;
+ let mut any = false;
+ let mut origin = None;
+ let mut clip = None;
+
+ loop {
+ if position.is_none() {
+ if let Ok(value) = input.try(|input| background_position::parse(context, input)) {
+ position = Some(value);
+ any = true;
+
+ // Parse background size, if applicable.
+ size = input.try(|input| {
+ try!(input.expect_delim('/'));
+ background_size::parse(context, input)
+ }).ok();
+
+ continue
+ }
+ }
+ if color.is_none() {
+ if let Ok(value) = input.try(|input| background_color::parse(context, input)) {
+ color = Some(value);
+ any = true;
+ continue
+ }
+ }
+ if image.is_none() {
+ if let Ok(value) = input.try(|input| background_image::parse(context, input)) {
+ image = Some(value);
+ any = true;
+ continue
+ }
+ }
+ if repeat.is_none() {
+ if let Ok(value) = input.try(|input| background_repeat::parse(context, input)) {
+ repeat = Some(value);
+ any = true;
+ continue
+ }
+ }
+ if attachment.is_none() {
+ if let Ok(value) = input.try(|input| background_attachment::parse(context, input)) {
+ attachment = Some(value);
+ any = true;
+ continue
+ }
+ }
+ if origin.is_none() {
+ if let Ok(value) = input.try(|input| background_origin::parse(context, input)) {
+ origin = Some(value);
+ any = true;
+ continue
+ }
+ }
+ if clip.is_none() {
+ if let Ok(value) = input.try(|input| background_clip::parse(context, input)) {
+ clip = Some(value);
+ any = true;
+ continue
+ }
+ }
+ break
+ }
+
+ if any {
+ Ok(Longhands {
+ background_color: color,
+ background_image: image,
+ background_position: position,
+ background_repeat: repeat,
+ background_attachment: attachment,
+ background_size: size,
+ background_origin: origin,
+ background_clip: clip,
+ })
+ } else {
+ Err(())
+ }
+</%helpers:shorthand>
+
diff --git a/components/style/properties/shorthand/border.mako.rs b/components/style/properties/shorthand/border.mako.rs
new file mode 100644
index 00000000000..f884708e76c
--- /dev/null
+++ b/components/style/properties/shorthand/border.mako.rs
@@ -0,0 +1,149 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * 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/. */
+
+<%namespace name="helpers" file="/helpers.mako.rs" />
+<% from data import to_rust_ident %>
+
+${helpers.four_sides_shorthand("border-color", "border-%s-color", "specified::CSSColor::parse")}
+${helpers.four_sides_shorthand("border-style", "border-%s-style",
+ "specified::BorderStyle::parse")}
+<%helpers:shorthand name="border-width" sub_properties="${
+ ' '.join('border-%s-width' % side
+ for side in ['top', 'right', 'bottom', 'left'])}">
+ use super::parse_four_sides;
+ use values::specified;
+ let _unused = context;
+ let (top, right, bottom, left) = try!(parse_four_sides(input, specified::parse_border_width));
+ Ok(Longhands {
+ % for side in ["top", "right", "bottom", "left"]:
+ ${to_rust_ident('border-%s-width' % side)}:
+ Some(longhands::${to_rust_ident('border-%s-width' % side)}::SpecifiedValue(${side})),
+ % endfor
+ })
+</%helpers:shorthand>
+
+
+pub fn parse_border(context: &ParserContext, input: &mut Parser)
+ -> Result<(Option<specified::CSSColor>,
+ Option<specified::BorderStyle>,
+ Option<specified::Length>), ()> {
+ use values::specified;
+ let _unused = context;
+ let mut color = None;
+ let mut style = None;
+ let mut width = None;
+ let mut any = false;
+ loop {
+ if color.is_none() {
+ if let Ok(value) = input.try(specified::CSSColor::parse) {
+ color = Some(value);
+ any = true;
+ continue
+ }
+ }
+ if style.is_none() {
+ if let Ok(value) = input.try(specified::BorderStyle::parse) {
+ style = Some(value);
+ any = true;
+ continue
+ }
+ }
+ if width.is_none() {
+ if let Ok(value) = input.try(specified::parse_border_width) {
+ width = Some(value);
+ any = true;
+ continue
+ }
+ }
+ break
+ }
+ if any { Ok((color, style, width)) } else { Err(()) }
+}
+
+
+% for side in ["top", "right", "bottom", "left"]:
+ <%helpers:shorthand name="border-${side}" sub_properties="${' '.join(
+ 'border-%s-%s' % (side, prop)
+ for prop in ['color', 'style', 'width']
+ )}">
+ let (color, style, width) = try!(super::parse_border(context, input));
+ Ok(Longhands {
+ border_${side}_color: color,
+ border_${side}_style: style,
+ border_${side}_width:
+ width.map(longhands::${to_rust_ident('border-%s-width' % side)}::SpecifiedValue),
+ })
+ </%helpers:shorthand>
+% endfor
+
+<%helpers:shorthand name="border" sub_properties="${' '.join(
+ 'border-%s-%s' % (side, prop)
+ for side in ['top', 'right', 'bottom', 'left']
+ for prop in ['color', 'style', 'width']
+)}">
+ let (color, style, width) = try!(super::parse_border(context, input));
+ Ok(Longhands {
+ % for side in ["top", "right", "bottom", "left"]:
+ border_${side}_color: color.clone(),
+ border_${side}_style: style,
+ border_${side}_width:
+ width.map(longhands::${to_rust_ident('border-%s-width' % side)}::SpecifiedValue),
+ % endfor
+ })
+</%helpers:shorthand>
+
+<%helpers:shorthand name="border-radius" sub_properties="${' '.join(
+ 'border-%s-radius' % (corner)
+ for corner in ['top-left', 'top-right', 'bottom-right', 'bottom-left']
+)}">
+ use app_units::Au;
+ use values::specified::{Length, LengthOrPercentage};
+ use values::specified::BorderRadiusSize;
+
+ let _ignored = context;
+
+ fn parse_one_set_of_border_values(mut input: &mut Parser)
+ -> Result<[LengthOrPercentage; 4], ()> {
+ let mut count = 0;
+ let mut values = [LengthOrPercentage::Length(Length::Absolute(Au(0))); 4];
+ while count < 4 {
+ if let Ok(value) = input.try(LengthOrPercentage::parse) {
+ values[count] = value;
+ count += 1;
+ } else {
+ break
+ }
+ }
+
+ match count {
+ 1 => Ok([values[0], values[0], values[0], values[0]]),
+ 2 => Ok([values[0], values[1], values[0], values[1]]),
+ 3 => Ok([values[0], values[1], values[2], values[1]]),
+ 4 => Ok([values[0], values[1], values[2], values[3]]),
+ _ => Err(()),
+ }
+ }
+
+ fn parse_one_set_of_border_radii(mut input: &mut Parser)
+ -> Result<[BorderRadiusSize; 4], ()> {
+ let widths = try!(parse_one_set_of_border_values(input));
+ let mut heights = widths.clone();
+ let mut radii_values = [BorderRadiusSize::zero(); 4];
+ if input.try(|input| input.expect_delim('/')).is_ok() {
+ heights = try!(parse_one_set_of_border_values(input));
+ }
+ for i in 0..radii_values.len() {
+ radii_values[i] = BorderRadiusSize::new(widths[i], heights[i]);
+ }
+ Ok(radii_values)
+ }
+
+ let radii = try!(parse_one_set_of_border_radii(input));
+ Ok(Longhands {
+ border_top_left_radius: Some(radii[0]),
+ border_top_right_radius: Some(radii[1]),
+ border_bottom_right_radius: Some(radii[2]),
+ border_bottom_left_radius: Some(radii[3]),
+ })
+</%helpers:shorthand>
diff --git a/components/style/properties/shorthand/box.mako.rs b/components/style/properties/shorthand/box.mako.rs
new file mode 100644
index 00000000000..48b49ca4811
--- /dev/null
+++ b/components/style/properties/shorthand/box.mako.rs
@@ -0,0 +1,109 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * 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/. */
+
+<%namespace name="helpers" file="/helpers.mako.rs" />
+
+<%helpers:shorthand name="overflow" sub_properties="overflow-x overflow-y">
+ use properties::longhands::{overflow_x, overflow_y};
+
+ let overflow = try!(overflow_x::parse(context, input));
+ Ok(Longhands {
+ overflow_x: Some(overflow),
+ overflow_y: Some(overflow_y::SpecifiedValue(overflow)),
+ })
+</%helpers:shorthand>
+
+<%helpers:shorthand name="transition"
+ sub_properties="transition-property transition-duration transition-timing-function
+ transition-delay">
+ use properties::longhands::{transition_delay, transition_duration, transition_property};
+ use properties::longhands::{transition_timing_function};
+
+ struct SingleTransition {
+ transition_property: transition_property::SingleSpecifiedValue,
+ transition_duration: transition_duration::SingleSpecifiedValue,
+ transition_timing_function: transition_timing_function::SingleSpecifiedValue,
+ transition_delay: transition_delay::SingleSpecifiedValue,
+ }
+
+ fn parse_one_transition(input: &mut Parser) -> Result<SingleTransition,()> {
+ let (mut property, mut duration) = (None, None);
+ let (mut timing_function, mut delay) = (None, None);
+ loop {
+ if property.is_none() {
+ if let Ok(value) = input.try(|input| transition_property::parse_one(input)) {
+ property = Some(value);
+ continue
+ }
+ }
+
+ if duration.is_none() {
+ if let Ok(value) = input.try(|input| transition_duration::parse_one(input)) {
+ duration = Some(value);
+ continue
+ }
+ }
+
+ if timing_function.is_none() {
+ if let Ok(value) = input.try(|input| {
+ transition_timing_function::parse_one(input)
+ }) {
+ timing_function = Some(value);
+ continue
+ }
+ }
+
+ if delay.is_none() {
+ if let Ok(value) = input.try(|input| transition_delay::parse_one(input)) {
+ delay = Some(value);
+ continue;
+ }
+ }
+
+ break
+ }
+
+ if let Some(property) = property {
+ Ok(SingleTransition {
+ transition_property: property,
+ transition_duration:
+ duration.unwrap_or(transition_duration::get_initial_single_value()),
+ transition_timing_function:
+ timing_function.unwrap_or(
+ transition_timing_function::get_initial_single_value()),
+ transition_delay:
+ delay.unwrap_or(transition_delay::get_initial_single_value()),
+ })
+ } else {
+ Err(())
+ }
+ }
+
+ if input.try(|input| input.expect_ident_matching("none")).is_ok() {
+ return Ok(Longhands {
+ transition_property: None,
+ transition_duration: None,
+ transition_timing_function: None,
+ transition_delay: None,
+ })
+ }
+
+ let results = try!(input.parse_comma_separated(parse_one_transition));
+ let (mut properties, mut durations) = (Vec::new(), Vec::new());
+ let (mut timing_functions, mut delays) = (Vec::new(), Vec::new());
+ for result in results {
+ properties.push(result.transition_property);
+ durations.push(result.transition_duration);
+ timing_functions.push(result.transition_timing_function);
+ delays.push(result.transition_delay);
+ }
+
+ Ok(Longhands {
+ transition_property: Some(transition_property::SpecifiedValue(properties)),
+ transition_duration: Some(transition_duration::SpecifiedValue(durations)),
+ transition_timing_function:
+ Some(transition_timing_function::SpecifiedValue(timing_functions)),
+ transition_delay: Some(transition_delay::SpecifiedValue(delays)),
+ })
+</%helpers:shorthand>
diff --git a/components/style/properties/shorthand/column.mako.rs b/components/style/properties/shorthand/column.mako.rs
new file mode 100644
index 00000000000..8b3e91628da
--- /dev/null
+++ b/components/style/properties/shorthand/column.mako.rs
@@ -0,0 +1,46 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * 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/. */
+
+<%namespace name="helpers" file="/helpers.mako.rs" />
+
+<%helpers:shorthand name="columns" sub_properties="column-count column-width" experimental="True">
+ use properties::longhands::{column_count, column_width};
+ let mut column_count = None;
+ let mut column_width = None;
+ let mut autos = 0;
+
+ loop {
+ if input.try(|input| input.expect_ident_matching("auto")).is_ok() {
+ // Leave the options to None, 'auto' is the initial value.
+ autos += 1;
+ continue
+ }
+
+ if column_count.is_none() {
+ if let Ok(value) = input.try(|input| column_count::parse(context, input)) {
+ column_count = Some(value);
+ continue
+ }
+ }
+
+ if column_width.is_none() {
+ if let Ok(value) = input.try(|input| column_width::parse(context, input)) {
+ column_width = Some(value);
+ continue
+ }
+ }
+
+ break
+ }
+
+ let values = autos + column_count.iter().len() + column_width.iter().len();
+ if values == 0 || values > 2 {
+ Err(())
+ } else {
+ Ok(Longhands {
+ column_count: column_count,
+ column_width: column_width,
+ })
+ }
+</%helpers:shorthand>
diff --git a/components/style/properties/shorthand/font.mako.rs b/components/style/properties/shorthand/font.mako.rs
new file mode 100644
index 00000000000..2268f2ff5d2
--- /dev/null
+++ b/components/style/properties/shorthand/font.mako.rs
@@ -0,0 +1,66 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * 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/. */
+
+<%namespace name="helpers" file="/helpers.mako.rs" />
+
+<%helpers:shorthand name="font" sub_properties="font-style font-variant font-weight
+ font-size line-height font-family">
+ use properties::longhands::{font_style, font_variant, font_weight, font_size,
+ line_height, font_family};
+ let mut nb_normals = 0;
+ let mut style = None;
+ let mut variant = None;
+ let mut weight = None;
+ let size;
+ loop {
+ // Special-case 'normal' because it is valid in each of
+ // font-style, font-weight and font-variant.
+ // Leaves the values to None, 'normal' is the initial value for each of them.
+ if input.try(|input| input.expect_ident_matching("normal")).is_ok() {
+ nb_normals += 1;
+ continue;
+ }
+ if style.is_none() {
+ if let Ok(value) = input.try(|input| font_style::parse(context, input)) {
+ style = Some(value);
+ continue
+ }
+ }
+ if weight.is_none() {
+ if let Ok(value) = input.try(|input| font_weight::parse(context, input)) {
+ weight = Some(value);
+ continue
+ }
+ }
+ if variant.is_none() {
+ if let Ok(value) = input.try(|input| font_variant::parse(context, input)) {
+ variant = Some(value);
+ continue
+ }
+ }
+ size = Some(try!(font_size::parse(context, input)));
+ break
+ }
+ #[inline]
+ fn count<T>(opt: &Option<T>) -> u8 {
+ if opt.is_some() { 1 } else { 0 }
+ }
+ if size.is_none() || (count(&style) + count(&weight) + count(&variant) + nb_normals) > 3 {
+ return Err(())
+ }
+ let line_height = if input.try(|input| input.expect_delim('/')).is_ok() {
+ Some(try!(line_height::parse(context, input)))
+ } else {
+ None
+ };
+ let family = try!(input.parse_comma_separated(font_family::parse_one_family));
+ Ok(Longhands {
+ font_style: style,
+ font_variant: variant,
+ font_weight: weight,
+ font_size: size,
+ line_height: line_height,
+ font_family: Some(font_family::SpecifiedValue(family))
+ })
+</%helpers:shorthand>
diff --git a/components/style/properties/shorthand/inherited_text.mako.rs b/components/style/properties/shorthand/inherited_text.mako.rs
new file mode 100644
index 00000000000..85aac33930d
--- /dev/null
+++ b/components/style/properties/shorthand/inherited_text.mako.rs
@@ -0,0 +1,14 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * 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/. */
+
+<%namespace name="helpers" file="/helpers.mako.rs" />
+
+// Per CSS-TEXT 6.2, "for legacy reasons, UAs must treat `word-wrap` as an alternate name for
+// the `overflow-wrap` property, as if it were a shorthand of `overflow-wrap`."
+<%helpers:shorthand name="word-wrap" sub_properties="overflow-wrap">
+ use properties::longhands::overflow_wrap;
+ Ok(Longhands {
+ overflow_wrap: Some(try!(overflow_wrap::parse(context, input))),
+ })
+</%helpers:shorthand>
diff --git a/components/style/properties/shorthand/list.mako.rs b/components/style/properties/shorthand/list.mako.rs
new file mode 100644
index 00000000000..2b0f61b3a8c
--- /dev/null
+++ b/components/style/properties/shorthand/list.mako.rs
@@ -0,0 +1,92 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * 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/. */
+
+<%namespace name="helpers" file="/helpers.mako.rs" />
+
+<%helpers:shorthand name="list-style"
+ sub_properties="list-style-image list-style-position list-style-type">
+ use properties::longhands::{list_style_image, list_style_position, list_style_type};
+
+ // `none` is ambiguous until we've finished parsing the shorthands, so we count the number
+ // of times we see it.
+ let mut nones = 0u8;
+ let (mut image, mut position, mut list_style_type, mut any) = (None, None, None, false);
+ loop {
+ if input.try(|input| input.expect_ident_matching("none")).is_ok() {
+ nones = nones + 1;
+ if nones > 2 {
+ return Err(())
+ }
+ any = true;
+ continue
+ }
+
+ if list_style_type.is_none() {
+ if let Ok(value) = input.try(|input| list_style_type::parse(context, input)) {
+ list_style_type = Some(value);
+ any = true;
+ continue
+ }
+ }
+
+ if image.is_none() {
+ if let Ok(value) = input.try(|input| list_style_image::parse(context, input)) {
+ image = Some(value);
+ any = true;
+ continue
+ }
+ }
+
+ if position.is_none() {
+ if let Ok(value) = input.try(|input| list_style_position::parse(context, input)) {
+ position = Some(value);
+ any = true;
+ continue
+ }
+ }
+ break
+ }
+
+ // If there are two `none`s, then we can't have a type or image; if there is one `none`,
+ // then we can't have both a type *and* an image; if there is no `none` then we're fine as
+ // long as we parsed something.
+ match (any, nones, list_style_type, image) {
+ (true, 2, None, None) => {
+ Ok(Longhands {
+ list_style_position: position,
+ list_style_image: Some(list_style_image::SpecifiedValue::None),
+ list_style_type: Some(list_style_type::SpecifiedValue::none),
+ })
+ }
+ (true, 1, None, Some(image)) => {
+ Ok(Longhands {
+ list_style_position: position,
+ list_style_image: Some(image),
+ list_style_type: Some(list_style_type::SpecifiedValue::none),
+ })
+ }
+ (true, 1, Some(list_style_type), None) => {
+ Ok(Longhands {
+ list_style_position: position,
+ list_style_image: Some(list_style_image::SpecifiedValue::None),
+ list_style_type: Some(list_style_type),
+ })
+ }
+ (true, 1, None, None) => {
+ Ok(Longhands {
+ list_style_position: position,
+ list_style_image: Some(list_style_image::SpecifiedValue::None),
+ list_style_type: Some(list_style_type::SpecifiedValue::none),
+ })
+ }
+ (true, 0, list_style_type, image) => {
+ Ok(Longhands {
+ list_style_position: position,
+ list_style_image: image,
+ list_style_type: list_style_type,
+ })
+ }
+ _ => Err(()),
+ }
+</%helpers:shorthand>
diff --git a/components/style/properties/shorthand/margin.mako.rs b/components/style/properties/shorthand/margin.mako.rs
new file mode 100644
index 00000000000..f83ccb54023
--- /dev/null
+++ b/components/style/properties/shorthand/margin.mako.rs
@@ -0,0 +1,7 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * 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/. */
+
+<%namespace name="helpers" file="/helpers.mako.rs" />
+
+${helpers.four_sides_shorthand("margin", "margin-%s", "specified::LengthOrPercentageOrAuto::parse")}
diff --git a/components/style/properties/shorthand/outline.mako.rs b/components/style/properties/shorthand/outline.mako.rs
new file mode 100644
index 00000000000..57481dfcb02
--- /dev/null
+++ b/components/style/properties/shorthand/outline.mako.rs
@@ -0,0 +1,49 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * 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/. */
+
+<%namespace name="helpers" file="/helpers.mako.rs" />
+
+<%helpers:shorthand name="outline" sub_properties="outline-color outline-style outline-width">
+ use properties::longhands::outline_width;
+ use values::specified;
+
+ let _unused = context;
+ let mut color = None;
+ let mut style = None;
+ let mut width = None;
+ let mut any = false;
+ loop {
+ if color.is_none() {
+ if let Ok(value) = input.try(specified::CSSColor::parse) {
+ color = Some(value);
+ any = true;
+ continue
+ }
+ }
+ if style.is_none() {
+ if let Ok(value) = input.try(specified::BorderStyle::parse) {
+ style = Some(value);
+ any = true;
+ continue
+ }
+ }
+ if width.is_none() {
+ if let Ok(value) = input.try(|input| outline_width::parse(context, input)) {
+ width = Some(value);
+ any = true;
+ continue
+ }
+ }
+ break
+ }
+ if any {
+ Ok(Longhands {
+ outline_color: color,
+ outline_style: style,
+ outline_width: width,
+ })
+ } else {
+ Err(())
+ }
+</%helpers:shorthand>
diff --git a/components/style/properties/shorthand/padding.mako.rs b/components/style/properties/shorthand/padding.mako.rs
new file mode 100644
index 00000000000..09363b950eb
--- /dev/null
+++ b/components/style/properties/shorthand/padding.mako.rs
@@ -0,0 +1,7 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * 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/. */
+
+<%namespace name="helpers" file="/helpers.mako.rs" />
+
+${helpers.four_sides_shorthand("padding", "padding-%s", "specified::LengthOrPercentage::parse")}
diff --git a/components/style/restyle_hints.rs b/components/style/restyle_hints.rs
index b5dbdc37a3f..e116594b02f 100644
--- a/components/style/restyle_hints.rs
+++ b/components/style/restyle_hints.rs
@@ -136,7 +136,7 @@ impl<'a, E> Element for ElementWrapper<'a, E>
fn get_local_name(&self) -> &Atom {
self.element.get_local_name()
}
- fn get_namespace<'b>(&self) -> &Namespace {
+ fn get_namespace(&self) -> &Namespace {
self.element.get_namespace()
}
fn get_id(&self) -> Option<Atom> {
diff --git a/components/style/selector_impl.rs b/components/style/selector_impl.rs
index d70287f9ddf..b7faff4c028 100644
--- a/components/style/selector_impl.rs
+++ b/components/style/selector_impl.rs
@@ -2,6 +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 element_state::ElementState;
+use properties::{self, ServoComputedValues};
use selector_matching::{USER_OR_USER_AGENT_STYLESHEETS, QUIRKS_MODE_STYLESHEET};
use selectors::Element;
use selectors::parser::{ParserContext, SelectorImpl};
@@ -12,9 +13,51 @@ pub trait ElementExt: Element {
}
pub trait SelectorImplExt : SelectorImpl + Sized {
- fn each_eagerly_cascaded_pseudo_element<F>(mut fun: F)
+ type ComputedValues: properties::ComputedValues;
+
+ fn each_pseudo_element<F>(mut fun: F)
where F: FnMut(<Self as SelectorImpl>::PseudoElement);
+ /// This function determines if a pseudo-element is eagerly cascaded or not.
+ ///
+ /// Eagerly cascaded pseudo-elements are "normal" pseudo-elements (i.e.
+ /// `::before` and `::after`). They inherit styles normally as another
+ /// selector would do.
+ ///
+ /// Non-eagerly cascaded ones skip the cascade process entirely, mostly as
+ /// an optimisation since they are private pseudo-elements (like
+ /// `::-servo-details-content`). This pseudo-elements are resolved on the
+ /// fly using global rules (rules of the form `*|*`), and applying them to
+ /// the parent style.
+ ///
+ /// If you're implementing a public selector that the end-user might
+ /// customize, then you probably need doing the whole cascading process and
+ /// return true in this function for that pseudo.
+ ///
+ /// But if you are implementing a private pseudo-element, please consider if
+ /// it might be possible to skip the cascade for it.
+ fn is_eagerly_cascaded_pseudo_element(pseudo: &<Self as SelectorImpl>::PseudoElement) -> bool;
+
+ #[inline]
+ fn each_eagerly_cascaded_pseudo_element<F>(mut fun: F)
+ where F: FnMut(<Self as SelectorImpl>::PseudoElement) {
+ Self::each_pseudo_element(|pseudo| {
+ if Self::is_eagerly_cascaded_pseudo_element(&pseudo) {
+ fun(pseudo)
+ }
+ })
+ }
+
+ #[inline]
+ fn each_non_eagerly_cascaded_pseudo_element<F>(mut fun: F)
+ where F: FnMut(<Self as SelectorImpl>::PseudoElement) {
+ Self::each_pseudo_element(|pseudo| {
+ if !Self::is_eagerly_cascaded_pseudo_element(&pseudo) {
+ fun(pseudo)
+ }
+ })
+ }
+
fn pseudo_class_state_flag(pc: &Self::NonTSPseudoClass) -> ElementState;
fn get_user_or_user_agent_stylesheets() -> &'static [Stylesheet<Self>];
@@ -31,6 +74,19 @@ pub enum PseudoElement {
DetailsContent,
}
+impl PseudoElement {
+ #[inline]
+ pub fn is_eagerly_cascaded(&self) -> bool {
+ match *self {
+ PseudoElement::Before |
+ PseudoElement::After |
+ PseudoElement::Selection |
+ PseudoElement::DetailsSummary => true,
+ PseudoElement::DetailsContent => false,
+ }
+ }
+}
+
#[derive(Clone, Debug, PartialEq, Eq, HeapSizeOf, Hash)]
pub enum NonTSPseudoClass {
AnyLink,
@@ -112,15 +168,17 @@ impl SelectorImpl for ServoSelectorImpl {
"before" => Before,
"after" => After,
"selection" => Selection,
- "-servo-details-summary" => if context.in_user_agent_stylesheet {
+ "-servo-details-summary" => {
+ if !context.in_user_agent_stylesheet {
+ return Err(())
+ }
DetailsSummary
- } else {
- return Err(())
},
- "-servo-details-content" => if context.in_user_agent_stylesheet {
+ "-servo-details-content" => {
+ if !context.in_user_agent_stylesheet {
+ return Err(())
+ }
DetailsContent
- } else {
- return Err(())
},
_ => return Err(())
};
@@ -129,15 +187,16 @@ impl SelectorImpl for ServoSelectorImpl {
}
}
-impl<E: Element<Impl=ServoSelectorImpl>> ElementExt for E {
- fn is_link(&self) -> bool {
- self.match_non_ts_pseudo_class(NonTSPseudoClass::AnyLink)
+impl SelectorImplExt for ServoSelectorImpl {
+ type ComputedValues = ServoComputedValues;
+
+ #[inline]
+ fn is_eagerly_cascaded_pseudo_element(pseudo: &PseudoElement) -> bool {
+ pseudo.is_eagerly_cascaded()
}
-}
-impl SelectorImplExt for ServoSelectorImpl {
#[inline]
- fn each_eagerly_cascaded_pseudo_element<F>(mut fun: F)
+ fn each_pseudo_element<F>(mut fun: F)
where F: FnMut(PseudoElement) {
fun(PseudoElement::Before);
fun(PseudoElement::After);
@@ -161,3 +220,9 @@ impl SelectorImplExt for ServoSelectorImpl {
Some(&*QUIRKS_MODE_STYLESHEET)
}
}
+
+impl<E: Element<Impl=ServoSelectorImpl>> ElementExt for E {
+ fn is_link(&self) -> bool {
+ self.match_non_ts_pseudo_class(NonTSPseudoClass::AnyLink)
+ }
+}
diff --git a/components/style/selector_matching.rs b/components/style/selector_matching.rs
index 167d3277c42..72fdec38e43 100644
--- a/components/style/selector_matching.rs
+++ b/components/style/selector_matching.rs
@@ -8,8 +8,9 @@
use dom::TElement;
use element_state::*;
use error_reporting::{ParseErrorReporter, StdoutErrorReporter};
+use euclid::Size2D;
use media_queries::{Device, MediaType};
-use properties::{PropertyDeclaration, PropertyDeclarationBlock};
+use properties::{self, ComputedValues, PropertyDeclaration, PropertyDeclarationBlock};
use restyle_hints::{ElementSnapshot, RestyleHint, DependencySet};
use selector_impl::{SelectorImplExt, ServoSelectorImpl};
use selectors::Element;
@@ -116,11 +117,20 @@ pub struct Stylist<Impl: SelectorImplExt> {
/// The current selector maps, after evaluating media
/// rules against the current device.
element_map: PerPseudoElementSelectorMap<Impl>,
+
/// The selector maps corresponding to a given pseudo-element
/// (depending on the implementation)
pseudos_map: HashMap<Impl::PseudoElement,
PerPseudoElementSelectorMap<Impl>,
BuildHasherDefault<::fnv::FnvHasher>>,
+
+ /// Applicable declarations for a given non-eagerly cascaded pseudo-element.
+ /// These are eagerly computed once, and then used to resolve the new
+ /// computed values on the fly on layout.
+ non_eagerly_cascaded_pseudo_element_decls: HashMap<Impl::PseudoElement,
+ Vec<DeclarationBlock>,
+ BuildHasherDefault<::fnv::FnvHasher>>,
+
rules_source_order: usize,
/// Selector dependencies used to compute restyle hints.
@@ -138,6 +148,7 @@ impl<Impl: SelectorImplExt> Stylist<Impl> {
element_map: PerPseudoElementSelectorMap::new(),
pseudos_map: HashMap::with_hasher(Default::default()),
+ non_eagerly_cascaded_pseudo_element_decls: HashMap::with_hasher(Default::default()),
rules_source_order: 0,
state_deps: DependencySet::new(),
};
@@ -160,6 +171,11 @@ impl<Impl: SelectorImplExt> Stylist<Impl> {
self.element_map = PerPseudoElementSelectorMap::new();
self.pseudos_map = HashMap::with_hasher(Default::default());
+ Impl::each_eagerly_cascaded_pseudo_element(|pseudo| {
+ self.pseudos_map.insert(pseudo, PerPseudoElementSelectorMap::new());
+ });
+
+ self.non_eagerly_cascaded_pseudo_element_decls = HashMap::with_hasher(Default::default());
self.rules_source_order = 0;
self.state_deps.clear();
@@ -182,8 +198,7 @@ impl<Impl: SelectorImplExt> Stylist<Impl> {
}
fn add_stylesheet(&mut self, stylesheet: &Stylesheet<Impl>) {
- let device = &self.device;
- if !stylesheet.is_effective_for_device(device) {
+ if !stylesheet.is_effective_for_device(&self.device) {
return;
}
let mut rules_source_order = self.rules_source_order;
@@ -195,20 +210,21 @@ impl<Impl: SelectorImplExt> Stylist<Impl> {
if !$style_rule.declarations.$priority.is_empty() {
for selector in &$style_rule.selectors {
let map = if let Some(ref pseudo) = selector.pseudo_element {
- self.pseudos_map.entry(pseudo.clone())
- .or_insert_with(PerPseudoElementSelectorMap::new)
- .borrow_for_origin(&stylesheet.origin)
+ self.pseudos_map
+ .entry(pseudo.clone())
+ .or_insert_with(PerPseudoElementSelectorMap::new)
+ .borrow_for_origin(&stylesheet.origin)
} else {
self.element_map.borrow_for_origin(&stylesheet.origin)
};
map.$priority.insert(Rule {
- selector: selector.compound_selectors.clone(),
- declarations: DeclarationBlock {
- specificity: selector.specificity,
- declarations: $style_rule.declarations.$priority.clone(),
- source_order: rules_source_order,
- },
+ selector: selector.compound_selectors.clone(),
+ declarations: DeclarationBlock {
+ specificity: selector.specificity,
+ declarations: $style_rule.declarations.$priority.clone(),
+ source_order: rules_source_order,
+ },
});
}
}
@@ -223,7 +239,40 @@ impl<Impl: SelectorImplExt> Stylist<Impl> {
self.state_deps.note_selector(selector.compound_selectors.clone());
}
}
+
self.rules_source_order = rules_source_order;
+
+ Impl::each_non_eagerly_cascaded_pseudo_element(|pseudo| {
+ // TODO: Don't precompute this, compute it on demand instead and
+ // cache it.
+ //
+ // This is actually kind of hard, because the stylist is shared
+ // between threads.
+ if let Some(map) = self.pseudos_map.remove(&pseudo) {
+ let mut declarations = vec![];
+
+ map.user_agent.normal.get_universal_rules(&mut declarations);
+ map.user_agent.important.get_universal_rules(&mut declarations);
+
+ self.non_eagerly_cascaded_pseudo_element_decls.insert(pseudo, declarations);
+ }
+ })
+ }
+
+ pub fn computed_values_for_pseudo(&self,
+ pseudo: &Impl::PseudoElement,
+ parent: Option<&Arc<Impl::ComputedValues>>) -> Option<Arc<Impl::ComputedValues>> {
+ debug_assert!(!Impl::is_eagerly_cascaded_pseudo_element(pseudo));
+ if let Some(declarations) = self.non_eagerly_cascaded_pseudo_element_decls.get(pseudo) {
+ let (computed, _) =
+ properties::cascade::<Impl::ComputedValues>(Size2D::zero(),
+ &declarations, false,
+ parent.map(|p| &**p), None,
+ box StdoutErrorReporter);
+ Some(Arc::new(computed))
+ } else {
+ parent.map(|p| p.clone())
+ }
}
pub fn compute_restyle_hint<E>(&self, element: &E,
@@ -284,20 +333,16 @@ impl<Impl: SelectorImplExt> Stylist<Impl> {
assert!(!self.is_device_dirty);
assert!(style_attribute.is_none() || pseudo_element.is_none(),
"Style attributes do not apply to pseudo-elements");
+ debug_assert!(pseudo_element.is_none() ||
+ Impl::is_eagerly_cascaded_pseudo_element(pseudo_element.as_ref().unwrap()));
let map = match pseudo_element {
- Some(ref pseudo) => match self.pseudos_map.get(pseudo) {
- Some(map) => map,
- // TODO(emilio): get non eagerly-cascaded pseudo-element rules here.
- // Actually assume there are no rules applicable.
- None => return true,
- },
+ Some(ref pseudo) => self.pseudos_map.get(pseudo).unwrap(),
None => &self.element_map,
};
let mut shareable = true;
-
// Step 1: Normal user-agent rules.
map.user_agent.normal.get_all_matching_rules(element,
parent_bf,
diff --git a/components/style/servo.rs b/components/style/servo.rs
index ec7044ad4a5..f5ce9d608b0 100644
--- a/components/style/servo.rs
+++ b/components/style/servo.rs
@@ -12,5 +12,4 @@ use stylesheets;
pub type Stylesheet = stylesheets::Stylesheet<ServoSelectorImpl>;
pub type PrivateStyleData = data::PrivateStyleData<ServoSelectorImpl, ServoComputedValues>;
pub type Stylist = selector_matching::Stylist<ServoSelectorImpl>;
-pub type StylistWrapper = context::StylistWrapper<ServoSelectorImpl>;
pub type SharedStyleContext = context::SharedStyleContext<ServoSelectorImpl>;
diff --git a/components/style/traversal.rs b/components/style/traversal.rs
index f39347e83ab..c7ba825acbd 100644
--- a/components/style/traversal.rs
+++ b/components/style/traversal.rs
@@ -123,8 +123,8 @@ pub fn recalc_style_at<'a, N, C>(context: &'a C,
root: OpaqueNode,
node: N)
where N: TNode,
- C: StyleContext<'a, <N::ConcreteElement as Element>::Impl, N::ConcreteComputedValues>,
- <N::ConcreteElement as Element>::Impl: SelectorImplExt + 'a {
+ C: StyleContext<'a, <N::ConcreteElement as Element>::Impl>,
+ <N::ConcreteElement as Element>::Impl: SelectorImplExt<ComputedValues=N::ConcreteComputedValues> + 'a {
// Initialize layout data.
//
// FIXME(pcwalton): Stop allocating here. Ideally this should just be done by the HTML
@@ -167,8 +167,9 @@ pub fn recalc_style_at<'a, N, C>(context: &'a C,
let shareable_element = match node.as_element() {
Some(element) => {
// Perform the CSS selector matching.
- let stylist = unsafe { &*context.shared_context().stylist.0 };
- if element.match_element(stylist,
+ let stylist = &context.shared_context().stylist;
+
+ if element.match_element(&**stylist,
Some(&*bf),
&mut applicable_declarations) {
Some(element)
diff --git a/etc/ci/chaos_monkey_test.py b/etc/ci/chaos_monkey_test.py
new file mode 100644
index 00000000000..124ecea1fbe
--- /dev/null
+++ b/etc/ci/chaos_monkey_test.py
@@ -0,0 +1,50 @@
+# Copyright 2013 The Servo Project Developers. See the COPYRIGHT
+# file at the top-level directory of this distribution.
+#
+# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+# option. This file may not be copied, modified, or distributed
+# except according to those terms.
+
+from __future__ import absolute_import, print_function
+
+import json
+import sys
+from subprocess import Popen, PIPE
+
+
+TEST_CMD = [
+ "./mach",
+ "test-wpt",
+ "--release",
+ "--processes=24",
+ "--binary-arg=--random-pipeline-closure-probability=0.1",
+ "--binary-arg=--random-pipeline-closure-seed=123",
+ "--binary-arg=--multiprocess",
+ "--binary-arg=--soft-fail",
+ "--log-raw=-",
+ # We run the content-security-policy test because it creates
+ # cross-origin iframes, which are good for stress-testing pipelines
+ "content-security-policy"
+]
+
+# Note that there will probably be test failures caused
+# by random pipeline closure, so we ignore the status code
+# returned by the test command (which is why we can't use check_output).
+
+test_results = Popen(TEST_CMD, stdout=PIPE)
+any_crashes = False
+
+for line in test_results.stdout:
+ report = json.loads(line.decode('utf-8'))
+ if report.get("action") == "process_output":
+ print("{} - {}".format(report.get("thread"), report.get("data")))
+ status = report.get("status")
+ if status:
+ print("{} - {} - {}".format(report.get("thread"), status, report.get("test")))
+ if status == "CRASH":
+ any_crashes = True
+
+if any_crashes:
+ sys.exit(1)
diff --git a/etc/ci/check_no_unwrap.sh b/etc/ci/check_no_unwrap.sh
index bbf5eabce88..c2a35d06674 100755
--- a/etc/ci/check_no_unwrap.sh
+++ b/etc/ci/check_no_unwrap.sh
@@ -12,4 +12,4 @@ FILES=("components/compositing/compositor.rs"
"components/compositing/pipeline.rs"
"components/compositing/constellation.rs")
-! grep -n "unwrap(" "${FILES[@]}"
+! grep -n "unwrap(\|panic!(" "${FILES[@]}"
diff --git a/ports/cef/Cargo.lock b/ports/cef/Cargo.lock
index dd47a33ba88..f457cea3789 100644
--- a/ports/cef/Cargo.lock
+++ b/ports/cef/Cargo.lock
@@ -4,7 +4,7 @@ version = "0.0.1"
dependencies = [
"azure 0.4.3 (git+https://github.com/servo/rust-azure)",
"cgl 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "cocoa 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cocoa 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"compositing 0.0.1",
"core-foundation 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"core-graphics 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -16,8 +16,8 @@ dependencies = [
"glutin_app 0.0.1",
"js 0.1.2 (git+https://github.com/servo/rust-mozjs)",
"layers 0.2.4 (git+https://github.com/servo/rust-layers)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net_traits 0.0.1",
"objc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -50,7 +50,7 @@ name = "angle"
version = "0.1.0"
source = "git+https://github.com/emilio/angle?branch=servo#eefe3506ae13e8ace811ca544fd6b4a5f0db0a04"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -92,7 +92,7 @@ dependencies = [
"freetype 0.1.0 (git+https://github.com/servo/rust-freetype)",
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-egl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -110,7 +110,7 @@ dependencies = [
"cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -119,7 +119,7 @@ name = "backtrace-sys"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -144,6 +144,11 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
+name = "bitflags"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
name = "block"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -173,7 +178,7 @@ dependencies = [
"gfx_traits 0.0.1",
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"offscreen_gl_context 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
@@ -218,7 +223,7 @@ version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -253,12 +258,12 @@ dependencies = [
[[package]]
name = "cocoa"
-version = "0.3.0"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"core-graphics 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"objc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -286,7 +291,7 @@ dependencies = [
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"layers 0.2.4 (git+https://github.com/servo/rust-layers)",
"layout_traits 0.0.1",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net_traits 0.0.1",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -322,7 +327,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"core-foundation-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -330,7 +335,7 @@ name = "core-foundation-sys"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -339,7 +344,7 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"core-foundation 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -350,7 +355,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"core-foundation 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"core-graphics 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -451,7 +456,7 @@ name = "dylib"
version = "0.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -521,10 +526,10 @@ dependencies = [
[[package]]
name = "env_logger"
-version = "0.3.1"
+version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 0.1.55 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -535,7 +540,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -556,7 +561,7 @@ name = "flate2"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"miniz-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -570,7 +575,7 @@ name = "freetype"
version = "0.1.0"
source = "git+https://github.com/servo/rust-freetype#d564ff90a3c69d987f5c015d7ec034cfaee21aff"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -579,7 +584,7 @@ version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -597,8 +602,8 @@ name = "gaol"
version = "0.0.1"
source = "git+https://github.com/servo/gaol#cbb2518029901f078f871a87ebe05cf96d727713"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -640,8 +645,8 @@ dependencies = [
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"layers 0.2.4 (git+https://github.com/servo/rust-layers)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"mime 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net_traits 0.0.1",
@@ -656,7 +661,7 @@ dependencies = [
"servo-skia 0.20130412.6 (registry+https://github.com/rust-lang/crates.io-index)",
"simd 0.1.0 (git+https://github.com/huonw/simd)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"style 0.0.1",
"style_traits 0.0.1",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -696,7 +701,7 @@ version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"khronos_api 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"xml-rs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -710,7 +715,7 @@ dependencies = [
[[package]]
name = "glob"
-version = "0.2.10"
+version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
@@ -726,7 +731,7 @@ dependencies = [
"net_traits 0.0.1",
"script_traits 0.0.1",
"servo-egl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "servo-glutin 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "servo-glutin 0.4.16 (registry+https://github.com/rust-lang/crates.io-index)",
"style_traits 0.0.1",
"url 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"util 0.0.1",
@@ -740,7 +745,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gl_generator 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"khronos_api 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -748,7 +753,7 @@ name = "harfbuzz-sys"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -766,7 +771,7 @@ name = "hbs-common-sys"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -775,7 +780,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"hbs-pow-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -785,7 +790,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"hbs-builder 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"hbs-common-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -806,7 +811,7 @@ name = "hpack"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -816,12 +821,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"mac 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"phf 0.7.13 (registry+https://github.com/rust-lang/crates.io-index)",
"phf_codegen 0.7.13 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"tendril 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -839,7 +844,7 @@ dependencies = [
"cookie 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
"httparse 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"language-tags 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"mime 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -871,10 +876,10 @@ dependencies = [
"byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"enum_primitive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gif 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glob 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "jpeg-decoder 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "jpeg-decoder 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
- "png 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "png 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -889,7 +894,7 @@ dependencies = [
[[package]]
name = "inflate"
-version = "0.1.0"
+version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
@@ -902,7 +907,7 @@ dependencies = [
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
"leaky-cow 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -913,7 +918,7 @@ dependencies = [
"bincode 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -922,12 +927,12 @@ dependencies = [
[[package]]
name = "jpeg-decoder"
-version = "0.1.3"
+version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num-rational 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"rayon 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -937,8 +942,8 @@ version = "0.1.2"
source = "git+https://github.com/servo/rust-mozjs#efe805affa75d776316e9ea6113f85cdad1e82ed"
dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"mozjs_sys 0.0.0 (git+https://github.com/servo/mozjs)",
"num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -977,8 +982,8 @@ dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"io-surface 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-egl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-skia 0.20130412.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1002,8 +1007,8 @@ dependencies = [
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"layout_traits 0.0.1",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net_traits 0.0.1",
"plugins 0.0.1",
@@ -1012,11 +1017,11 @@ dependencies = [
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"script 0.0.1",
"script_traits 0.0.1",
- "selectors 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "selectors 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"style 0.0.1",
"style_traits 0.0.1",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1064,7 +1069,7 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.4"
+version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
@@ -1091,17 +1096,14 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "log"
-version = "0.3.5"
+version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
-]
[[package]]
name = "lzw"
@@ -1123,7 +1125,7 @@ name = "malloc_buf"
version = "0.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1136,7 +1138,7 @@ name = "memchr"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1146,7 +1148,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"fs2 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1155,7 +1157,7 @@ name = "mime"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1175,7 +1177,7 @@ version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1183,7 +1185,7 @@ name = "mozjs_sys"
version = "0.0.0"
source = "git+https://github.com/servo/mozjs#3122a1e1a80b78377ae1ce8e7edd4ad3bcbb3d65"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"libz-sys 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1219,7 +1221,7 @@ dependencies = [
"hyper 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
"immeta 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"mime 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"mime_guess 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1246,7 +1248,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
"ws2_32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1261,7 +1263,7 @@ dependencies = [
"image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"plugins 0.0.1",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1351,7 +1353,7 @@ version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1397,7 +1399,7 @@ dependencies = [
"gl_generator 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
"khronos_api 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"x11 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1411,7 +1413,7 @@ dependencies = [
"bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl-sys 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl-sys-extras 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1422,7 +1424,7 @@ version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gdi32-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"libressl-pnacl-sys 2.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"user32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1434,7 +1436,7 @@ version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl-sys 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1443,7 +1445,7 @@ name = "osmesa-sys"
version = "0.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"shared_library 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1509,14 +1511,14 @@ dependencies = [
[[package]]
name = "png"
-version = "0.4.0"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"flate2 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
- "inflate 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
+ "inflate 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num-iter 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1525,8 +1527,8 @@ version = "0.0.1"
dependencies = [
"hbs-pow 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
"profile_traits 0.0.1",
"regex 0.1.55 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1584,7 +1586,7 @@ name = "rand"
version = "0.3.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1679,8 +1681,8 @@ dependencies = [
"image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"js 0.1.2 (git+https://github.com/servo/rust-mozjs)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net_traits 0.0.1",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1695,10 +1697,10 @@ dependencies = [
"regex 0.1.55 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"script_traits 0.0.1",
- "selectors 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "selectors 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"style 0.0.1",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
"unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1722,7 +1724,7 @@ dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net_traits 0.0.1",
"offscreen_gl_context 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1738,10 +1740,10 @@ dependencies = [
[[package]]
name = "selectors"
-version = "0.5.2"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "bitflags 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"cssparser 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1749,7 +1751,7 @@ dependencies = [
"matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"quickersort 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1800,7 +1802,7 @@ dependencies = [
"compositing 0.0.1",
"devtools 0.0.1",
"devtools_traits 0.0.1",
- "env_logger 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "env_logger 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
"gaol 0.0.1 (git+https://github.com/servo/gaol)",
"gfx 0.0.1",
@@ -1809,8 +1811,8 @@ dependencies = [
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"layers 0.2.4 (git+https://github.com/servo/rust-layers)",
"layout 0.0.1",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net 0.0.1",
"net_traits 0.0.1",
@@ -1831,7 +1833,7 @@ name = "servo-egl"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1839,7 +1841,7 @@ name = "servo-fontconfig"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-fontconfig-sys 2.11.3 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1863,12 +1865,12 @@ dependencies = [
[[package]]
name = "servo-glutin"
-version = "0.4.15"
+version = "0.4.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"android_glue 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"cgl 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "cocoa 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cocoa 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"core-foundation 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"core-graphics 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"dwmapi-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1876,7 +1878,7 @@ dependencies = [
"gl_generator 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"objc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"osmesa-sys 0.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
"shared_library 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1900,11 +1902,11 @@ dependencies = [
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
"glx 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"io-surface 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-egl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-fontconfig 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-freetype-sys 2.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
- "servo-glutin 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "servo-glutin 0.4.16 (registry+https://github.com/rust-lang/crates.io-index)",
"x11 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1914,7 +1916,7 @@ version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1942,12 +1944,12 @@ version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"hpack 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "string_cache"
-version = "0.2.12"
+version = "0.2.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"debug_unreachable 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1972,16 +1974,16 @@ dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "selectors 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "selectors 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"style_traits 0.0.1",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1997,10 +1999,10 @@ dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "selectors 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "selectors 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2028,7 +2030,7 @@ version = "2.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc_version 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2061,7 +2063,7 @@ version = "0.1.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -2071,7 +2073,7 @@ name = "tinyfiledialogs"
version = "0.1.0"
source = "git+https://github.com/jdm/tinyfiledialogs#2d2285985db1168da4d516000f24842aba46fd94"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -2173,8 +2175,8 @@ dependencies = [
"js 0.1.2 (git+https://github.com/servo/rust-mozjs)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
@@ -2183,7 +2185,7 @@ dependencies = [
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -2207,7 +2209,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"crossbeam 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"wayland-scanner 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)",
"wayland-sys 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -2257,7 +2259,7 @@ version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"hyper 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 0.1.55 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -2270,7 +2272,7 @@ dependencies = [
"hyper 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
"image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"plugins 0.0.1",
"regex 0.1.55 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2296,7 +2298,7 @@ dependencies = [
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"offscreen_gl_context 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"scoped_threadpool 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2360,7 +2362,7 @@ name = "x11"
version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -2370,7 +2372,7 @@ version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"dylib 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -2394,12 +2396,12 @@ name = "xml5ever"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"mac 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"phf 0.7.13 (registry+https://github.com/rust-lang/crates.io-index)",
"phf_codegen 0.7.13 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"tendril 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
]
diff --git a/ports/geckolib/Cargo.lock b/ports/geckolib/Cargo.lock
index aca096bd784..bdb596ceafa 100644
--- a/ports/geckolib/Cargo.lock
+++ b/ports/geckolib/Cargo.lock
@@ -9,13 +9,13 @@ dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
- "selectors 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "selectors 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"style 0.0.1",
"url 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"util 0.0.1",
@@ -48,7 +48,7 @@ dependencies = [
"cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -57,7 +57,7 @@ name = "backtrace-sys"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -82,6 +82,11 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
+name = "bitflags"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
name = "byteorder"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -193,7 +198,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -241,7 +246,7 @@ dependencies = [
"bincode 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -264,16 +269,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "libc"
-version = "0.2.4"
+version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "log"
-version = "0.3.5"
+version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
-]
[[package]]
name = "matches"
@@ -352,7 +354,7 @@ version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -412,7 +414,7 @@ name = "rand"
version = "0.3.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -422,10 +424,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "selectors"
-version = "0.5.2"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "bitflags 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"cssparser 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -433,7 +435,7 @@ dependencies = [
"matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"quickersort 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -466,7 +468,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "string_cache"
-version = "0.2.12"
+version = "0.2.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"debug_unreachable 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -491,16 +493,16 @@ dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "selectors 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "selectors 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"style_traits 0.0.1",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -516,10 +518,10 @@ dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "selectors 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "selectors 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -537,7 +539,7 @@ version = "0.1.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -590,8 +592,8 @@ dependencies = [
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
@@ -600,7 +602,7 @@ dependencies = [
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
diff --git a/ports/geckolib/bindings.rs b/ports/geckolib/bindings.rs
index a3640f775bd..16724678a80 100644
--- a/ports/geckolib/bindings.rs
+++ b/ports/geckolib/bindings.rs
@@ -1,5 +1,6 @@
/* automatically generated by rust-bindgen */
+use gecko_style_structs::SheetParsingMode;
use gecko_style_structs::nsStyleFont;
use gecko_style_structs::nsStyleColor;
use gecko_style_structs::nsStyleList;
@@ -68,7 +69,8 @@ extern "C" {
pub fn Gecko_SetNodeData(node: *mut RawGeckoNode,
data: *mut ServoNodeData);
pub fn Servo_DropNodeData(data: *mut ServoNodeData);
- pub fn Servo_StylesheetFromUTF8Bytes(bytes: *const u8, length: u32)
+ pub fn Servo_StylesheetFromUTF8Bytes(bytes: *const u8, length: u32,
+ parsing_mode: SheetParsingMode)
-> *mut RawServoStyleSheet;
pub fn Servo_AddRefStyleSheet(sheet: *mut RawServoStyleSheet);
pub fn Servo_ReleaseStyleSheet(sheet: *mut RawServoStyleSheet);
@@ -96,6 +98,8 @@ extern "C" {
pub fn Gecko_GetAttrAsUTF8(element: *mut RawGeckoElement, ns: *const u8,
name: *const u8, length: *mut u32)
-> *const ::std::os::raw::c_char;
+ pub fn Gecko_GetAtomAsUTF16(atom: *mut nsIAtom, length: *mut u32)
+ -> *const u16;
pub fn Gecko_LocalName(element: *mut RawGeckoElement, length: *mut u32)
-> *const u16;
pub fn Gecko_Namespace(element: *mut RawGeckoElement, length: *mut u32)
@@ -106,23 +110,33 @@ extern "C" {
pub fn Gecko_CopyConstruct_nsStyleFont(ptr: *mut nsStyleFont,
other: *const nsStyleFont);
pub fn Gecko_Destroy_nsStyleFont(ptr: *mut nsStyleFont);
+ pub fn Servo_GetStyleFont(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleFont;
pub fn Gecko_Construct_nsStyleColor(ptr: *mut nsStyleColor);
pub fn Gecko_CopyConstruct_nsStyleColor(ptr: *mut nsStyleColor,
other: *const nsStyleColor);
pub fn Gecko_Destroy_nsStyleColor(ptr: *mut nsStyleColor);
+ pub fn Servo_GetStyleColor(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleColor;
pub fn Gecko_Construct_nsStyleList(ptr: *mut nsStyleList);
pub fn Gecko_CopyConstruct_nsStyleList(ptr: *mut nsStyleList,
other: *const nsStyleList);
pub fn Gecko_Destroy_nsStyleList(ptr: *mut nsStyleList);
+ pub fn Servo_GetStyleList(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleList;
pub fn Gecko_Construct_nsStyleText(ptr: *mut nsStyleText);
pub fn Gecko_CopyConstruct_nsStyleText(ptr: *mut nsStyleText,
other: *const nsStyleText);
pub fn Gecko_Destroy_nsStyleText(ptr: *mut nsStyleText);
+ pub fn Servo_GetStyleText(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleText;
pub fn Gecko_Construct_nsStyleVisibility(ptr: *mut nsStyleVisibility);
pub fn Gecko_CopyConstruct_nsStyleVisibility(ptr: *mut nsStyleVisibility,
other:
*const nsStyleVisibility);
pub fn Gecko_Destroy_nsStyleVisibility(ptr: *mut nsStyleVisibility);
+ pub fn Servo_GetStyleVisibility(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleVisibility;
pub fn Gecko_Construct_nsStyleUserInterface(ptr:
*mut nsStyleUserInterface);
pub fn Gecko_CopyConstruct_nsStyleUserInterface(ptr:
@@ -130,81 +144,120 @@ extern "C" {
other:
*const nsStyleUserInterface);
pub fn Gecko_Destroy_nsStyleUserInterface(ptr: *mut nsStyleUserInterface);
+ pub fn Servo_GetStyleUserInterface(computedValues:
+ *mut ServoComputedValues)
+ -> *const nsStyleUserInterface;
pub fn Gecko_Construct_nsStyleTableBorder(ptr: *mut nsStyleTableBorder);
pub fn Gecko_CopyConstruct_nsStyleTableBorder(ptr:
*mut nsStyleTableBorder,
other:
*const nsStyleTableBorder);
pub fn Gecko_Destroy_nsStyleTableBorder(ptr: *mut nsStyleTableBorder);
+ pub fn Servo_GetStyleTableBorder(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleTableBorder;
pub fn Gecko_Construct_nsStyleSVG(ptr: *mut nsStyleSVG);
pub fn Gecko_CopyConstruct_nsStyleSVG(ptr: *mut nsStyleSVG,
other: *const nsStyleSVG);
pub fn Gecko_Destroy_nsStyleSVG(ptr: *mut nsStyleSVG);
+ pub fn Servo_GetStyleSVG(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleSVG;
pub fn Gecko_Construct_nsStyleVariables(ptr: *mut nsStyleVariables);
pub fn Gecko_CopyConstruct_nsStyleVariables(ptr: *mut nsStyleVariables,
other:
*const nsStyleVariables);
pub fn Gecko_Destroy_nsStyleVariables(ptr: *mut nsStyleVariables);
+ pub fn Servo_GetStyleVariables(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleVariables;
pub fn Gecko_Construct_nsStyleBackground(ptr: *mut nsStyleBackground);
pub fn Gecko_CopyConstruct_nsStyleBackground(ptr: *mut nsStyleBackground,
other:
*const nsStyleBackground);
pub fn Gecko_Destroy_nsStyleBackground(ptr: *mut nsStyleBackground);
+ pub fn Servo_GetStyleBackground(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleBackground;
pub fn Gecko_Construct_nsStylePosition(ptr: *mut nsStylePosition);
pub fn Gecko_CopyConstruct_nsStylePosition(ptr: *mut nsStylePosition,
other: *const nsStylePosition);
pub fn Gecko_Destroy_nsStylePosition(ptr: *mut nsStylePosition);
+ pub fn Servo_GetStylePosition(computedValues: *mut ServoComputedValues)
+ -> *const nsStylePosition;
pub fn Gecko_Construct_nsStyleTextReset(ptr: *mut nsStyleTextReset);
pub fn Gecko_CopyConstruct_nsStyleTextReset(ptr: *mut nsStyleTextReset,
other:
*const nsStyleTextReset);
pub fn Gecko_Destroy_nsStyleTextReset(ptr: *mut nsStyleTextReset);
+ pub fn Servo_GetStyleTextReset(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleTextReset;
pub fn Gecko_Construct_nsStyleDisplay(ptr: *mut nsStyleDisplay);
pub fn Gecko_CopyConstruct_nsStyleDisplay(ptr: *mut nsStyleDisplay,
other: *const nsStyleDisplay);
pub fn Gecko_Destroy_nsStyleDisplay(ptr: *mut nsStyleDisplay);
+ pub fn Servo_GetStyleDisplay(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleDisplay;
pub fn Gecko_Construct_nsStyleContent(ptr: *mut nsStyleContent);
pub fn Gecko_CopyConstruct_nsStyleContent(ptr: *mut nsStyleContent,
other: *const nsStyleContent);
pub fn Gecko_Destroy_nsStyleContent(ptr: *mut nsStyleContent);
+ pub fn Servo_GetStyleContent(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleContent;
pub fn Gecko_Construct_nsStyleUIReset(ptr: *mut nsStyleUIReset);
pub fn Gecko_CopyConstruct_nsStyleUIReset(ptr: *mut nsStyleUIReset,
other: *const nsStyleUIReset);
pub fn Gecko_Destroy_nsStyleUIReset(ptr: *mut nsStyleUIReset);
+ pub fn Servo_GetStyleUIReset(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleUIReset;
pub fn Gecko_Construct_nsStyleTable(ptr: *mut nsStyleTable);
pub fn Gecko_CopyConstruct_nsStyleTable(ptr: *mut nsStyleTable,
other: *const nsStyleTable);
pub fn Gecko_Destroy_nsStyleTable(ptr: *mut nsStyleTable);
+ pub fn Servo_GetStyleTable(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleTable;
pub fn Gecko_Construct_nsStyleMargin(ptr: *mut nsStyleMargin);
pub fn Gecko_CopyConstruct_nsStyleMargin(ptr: *mut nsStyleMargin,
other: *const nsStyleMargin);
pub fn Gecko_Destroy_nsStyleMargin(ptr: *mut nsStyleMargin);
+ pub fn Servo_GetStyleMargin(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleMargin;
pub fn Gecko_Construct_nsStylePadding(ptr: *mut nsStylePadding);
pub fn Gecko_CopyConstruct_nsStylePadding(ptr: *mut nsStylePadding,
other: *const nsStylePadding);
pub fn Gecko_Destroy_nsStylePadding(ptr: *mut nsStylePadding);
+ pub fn Servo_GetStylePadding(computedValues: *mut ServoComputedValues)
+ -> *const nsStylePadding;
pub fn Gecko_Construct_nsStyleBorder(ptr: *mut nsStyleBorder);
pub fn Gecko_CopyConstruct_nsStyleBorder(ptr: *mut nsStyleBorder,
other: *const nsStyleBorder);
pub fn Gecko_Destroy_nsStyleBorder(ptr: *mut nsStyleBorder);
+ pub fn Servo_GetStyleBorder(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleBorder;
pub fn Gecko_Construct_nsStyleOutline(ptr: *mut nsStyleOutline);
pub fn Gecko_CopyConstruct_nsStyleOutline(ptr: *mut nsStyleOutline,
other: *const nsStyleOutline);
pub fn Gecko_Destroy_nsStyleOutline(ptr: *mut nsStyleOutline);
+ pub fn Servo_GetStyleOutline(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleOutline;
pub fn Gecko_Construct_nsStyleXUL(ptr: *mut nsStyleXUL);
pub fn Gecko_CopyConstruct_nsStyleXUL(ptr: *mut nsStyleXUL,
other: *const nsStyleXUL);
pub fn Gecko_Destroy_nsStyleXUL(ptr: *mut nsStyleXUL);
+ pub fn Servo_GetStyleXUL(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleXUL;
pub fn Gecko_Construct_nsStyleSVGReset(ptr: *mut nsStyleSVGReset);
pub fn Gecko_CopyConstruct_nsStyleSVGReset(ptr: *mut nsStyleSVGReset,
other: *const nsStyleSVGReset);
pub fn Gecko_Destroy_nsStyleSVGReset(ptr: *mut nsStyleSVGReset);
+ pub fn Servo_GetStyleSVGReset(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleSVGReset;
pub fn Gecko_Construct_nsStyleColumn(ptr: *mut nsStyleColumn);
pub fn Gecko_CopyConstruct_nsStyleColumn(ptr: *mut nsStyleColumn,
other: *const nsStyleColumn);
pub fn Gecko_Destroy_nsStyleColumn(ptr: *mut nsStyleColumn);
+ pub fn Servo_GetStyleColumn(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleColumn;
pub fn Gecko_Construct_nsStyleEffects(ptr: *mut nsStyleEffects);
pub fn Gecko_CopyConstruct_nsStyleEffects(ptr: *mut nsStyleEffects,
other: *const nsStyleEffects);
pub fn Gecko_Destroy_nsStyleEffects(ptr: *mut nsStyleEffects);
+ pub fn Servo_GetStyleEffects(computedValues: *mut ServoComputedValues)
+ -> *const nsStyleEffects;
}
diff --git a/ports/geckolib/data.rs b/ports/geckolib/data.rs
index bc1c398e6c0..733d5e4f83f 100644
--- a/ports/geckolib/data.rs
+++ b/ports/geckolib/data.rs
@@ -22,7 +22,7 @@ use util::workqueue::WorkQueue;
pub struct PerDocumentStyleData {
/// Rule processor.
- pub stylist: Stylist,
+ pub stylist: Arc<Stylist>,
/// List of stylesheets, mirrored from Gecko.
pub stylesheets: Vec<Arc<Stylesheet>>,
@@ -50,8 +50,8 @@ impl PerDocumentStyleData {
let num_threads = cmp::max(num_cpus::get() * 3 / 4, 1);
PerDocumentStyleData {
- stylist: Stylist::new(device),
- stylesheets: Vec::new(),
+ stylist: Arc::new(Stylist::new(device)),
+ stylesheets: vec![],
stylesheets_changed: true,
new_animations_sender: new_anims_sender,
new_animations_receiver: new_anims_receiver,
diff --git a/ports/geckolib/gecko_style_structs.rs b/ports/geckolib/gecko_style_structs.rs
index 114fe03b2b6..f5807afd5e9 100644
--- a/ports/geckolib/gecko_style_structs.rs
+++ b/ports/geckolib/gecko_style_structs.rs
@@ -3986,6 +3986,34 @@ fn bindgen_test_layout_CounterStyleManager() {
assert_eq!(::std::mem::size_of::<CounterStyleManager>() , 72usize);
assert_eq!(::std::mem::align_of::<CounterStyleManager>() , 8usize);
}
+/**
+ * Enum defining the mode in which a sheet is to be parsed. This is
+ * usually, but not always, the same as the cascade level at which the
+ * sheet will apply (see nsStyleSet.h). Most of the Loader APIs only
+ * support loading of author sheets.
+ *
+ * Author sheets are the normal case: styles embedded in or linked
+ * from HTML pages. They are also the most restricted.
+ *
+ * User sheets can do anything author sheets can do, and also get
+ * access to a few CSS extensions that are not yet suitable for
+ * exposure on the public Web, but are very useful for expressing
+ * user style overrides, such as @-moz-document rules.
+ *
+ * Agent sheets have access to all author- and user-sheet features
+ * plus more extensions that are necessary for internal use but,
+ * again, not yet suitable for exposure on the public Web. Some of
+ * these are outright unsafe to expose; in particular, incorrect
+ * styling of anonymous box pseudo-elements can violate layout
+ * invariants.
+ */
+#[repr(u32)]
+#[derive(Debug, Copy, Clone)]
+pub enum SheetParsingMode {
+ eAuthorSheetFeatures = 0,
+ eUserSheetFeatures = 1,
+ eAgentSheetFeatures = 2,
+}
pub type nsLoadFlags = u32;
#[repr(C)]
#[derive(Debug, Copy)]
diff --git a/ports/geckolib/glue.rs b/ports/geckolib/glue.rs
index d4bfc62b9d6..27edf4ed357 100644
--- a/ports/geckolib/glue.rs
+++ b/ports/geckolib/glue.rs
@@ -10,16 +10,17 @@ use bindings::{RawServoStyleSet, RawServoStyleSheet, ServoComputedValues, ServoN
use bindings::{nsIAtom};
use data::PerDocumentStyleData;
use euclid::Size2D;
+use gecko_style_structs::SheetParsingMode;
use properties::GeckoComputedValues;
-use selector_impl::{SharedStyleContext, Stylesheet};
+use selector_impl::{GeckoSelectorImpl, PseudoElement, SharedStyleContext, Stylesheet};
use std::marker::PhantomData;
use std::mem::{forget, transmute};
use std::ptr;
use std::slice;
use std::str::from_utf8_unchecked;
use std::sync::{Arc, Mutex};
-use style::context::{ReflowGoal, StylistWrapper};
-use style::dom::{TDocument, TElement, TNode};
+use style::context::{ReflowGoal};
+use style::dom::{TDocument, TNode};
use style::error_reporting::StdoutErrorReporter;
use style::parallel;
use style::properties::ComputedValues;
@@ -27,7 +28,30 @@ use style::stylesheets::Origin;
use traversal::RecalcStyleOnly;
use url::Url;
use util::arc_ptr_eq;
-use wrapper::{GeckoDocument, GeckoElement, GeckoNode, NonOpaqueStyleData};
+use wrapper::{GeckoDocument, GeckoNode, NonOpaqueStyleData};
+
+// TODO: This is ugly and should go away once we get an atom back-end.
+pub fn pseudo_element_from_atom(pseudo: *mut nsIAtom,
+ in_ua_stylesheet: bool) -> Result<PseudoElement, String> {
+ use bindings::Gecko_GetAtomAsUTF16;
+ use selectors::parser::{ParserContext, SelectorImpl};
+
+ let pseudo_string = unsafe {
+ let mut length = 0;
+ let mut buff = Gecko_GetAtomAsUTF16(pseudo, &mut length);
+
+ // Handle the annoying preceding colon in front of everything in nsCSSAnonBoxList.h.
+ debug_assert!(length >= 2 && *buff == ':' as u16 && *buff.offset(1) != ':' as u16);
+ buff = buff.offset(1);
+ length -= 1;
+
+ String::from_utf16(slice::from_raw_parts(buff, length as usize)).unwrap()
+ };
+
+ let mut context = ParserContext::new();
+ context.in_user_agent_stylesheet = in_ua_stylesheet;
+ GeckoSelectorImpl::parse_pseudo_element(&context, &pseudo_string).map_err(|_| pseudo_string)
+}
/*
* For Gecko->Servo function calls, we need to redeclare the same signature that was declared in
@@ -51,7 +75,8 @@ pub extern "C" fn Servo_RestyleDocument(doc: *mut RawGeckoDocument, raw_data: *m
// into a runtime-wide init hook at some point.
GeckoComputedValues::initial_values();
- let _needs_dirtying = data.stylist.update(&data.stylesheets, data.stylesheets_changed);
+ let _needs_dirtying = Arc::get_mut(&mut data.stylist).unwrap()
+ .update(&data.stylesheets, data.stylesheets_changed);
data.stylesheets_changed = false;
let shared_style_context = SharedStyleContext {
@@ -59,7 +84,7 @@ pub extern "C" fn Servo_RestyleDocument(doc: *mut RawGeckoDocument, raw_data: *m
screen_size_changed: false,
generation: 0,
goal: ReflowGoal::ForScriptQuery,
- stylist: StylistWrapper(&data.stylist),
+ stylist: data.stylist.clone(),
new_animations_sender: Mutex::new(data.new_animations_sender.clone()),
running_animations: data.running_animations.clone(),
expired_animations: data.expired_animations.clone(),
@@ -80,13 +105,20 @@ pub extern "C" fn Servo_DropNodeData(data: *mut ServoNodeData) -> () {
#[no_mangle]
pub extern "C" fn Servo_StylesheetFromUTF8Bytes(bytes: *const u8,
- length: u32) -> *mut RawServoStyleSheet {
+ length: u32,
+ mode: SheetParsingMode) -> *mut RawServoStyleSheet {
let input = unsafe { from_utf8_unchecked(slice::from_raw_parts(bytes, length as usize)) };
- // FIXME(heycam): Pass in the real base URL and sheet origin to use.
+ let origin = match mode {
+ SheetParsingMode::eAuthorSheetFeatures => Origin::Author,
+ SheetParsingMode::eUserSheetFeatures => Origin::User,
+ SheetParsingMode::eAgentSheetFeatures => Origin::UserAgent,
+ };
+
+ // FIXME(heycam): Pass in the real base URL.
let url = Url::parse("about:none").unwrap();
- let sheet = Arc::new(Stylesheet::from_str(input, url, Origin::Author, Box::new(StdoutErrorReporter)));
+ let sheet = Arc::new(Stylesheet::from_str(input, url, origin, Box::new(StdoutErrorReporter)));
unsafe {
transmute(sheet)
}
@@ -97,19 +129,40 @@ pub struct ArcHelpers<GeckoType, ServoType> {
phantom2: PhantomData<ServoType>,
}
+
impl<GeckoType, ServoType> ArcHelpers<GeckoType, ServoType> {
pub fn with<F, Output>(raw: *mut GeckoType, cb: F) -> Output
where F: FnOnce(&Arc<ServoType>) -> Output {
+ debug_assert!(!raw.is_null());
+
let owned = unsafe { Self::into(raw) };
let result = cb(&owned);
forget(owned);
result
}
+ pub fn maybe_with<F, Output>(maybe_raw: *mut GeckoType, cb: F) -> Output
+ where F: FnOnce(Option<&Arc<ServoType>>) -> Output {
+ let owned = if maybe_raw.is_null() {
+ None
+ } else {
+ Some(unsafe { Self::into(maybe_raw) })
+ };
+
+ let result = cb(owned.as_ref());
+ forget(owned);
+
+ result
+ }
+
pub unsafe fn into(ptr: *mut GeckoType) -> Arc<ServoType> {
transmute(ptr)
}
+ pub fn from(owned: Arc<ServoType>) -> *mut GeckoType {
+ unsafe { transmute(owned) }
+ }
+
pub unsafe fn addref(ptr: *mut GeckoType) {
Self::with(ptr, |arc| forget(arc.clone()));
}
@@ -197,12 +250,26 @@ pub extern "C" fn Servo_GetComputedValues(node: *mut RawGeckoNode)
}
#[no_mangle]
-pub extern "C" fn Servo_GetComputedValuesForAnonymousBox(_parentStyleOrNull: *mut ServoComputedValues,
- _pseudoTag: *mut nsIAtom,
+pub extern "C" fn Servo_GetComputedValuesForAnonymousBox(parent_style_or_null: *mut ServoComputedValues,
+ pseudo_tag: *mut nsIAtom,
raw_data: *mut RawServoStyleSet)
-> *mut ServoComputedValues {
- let _data = PerDocumentStyleData::borrow_mut_from_raw(raw_data);
- unimplemented!();
+ let data = PerDocumentStyleData::borrow_mut_from_raw(raw_data);
+
+ let pseudo = match pseudo_element_from_atom(pseudo_tag, true) {
+ Ok(pseudo) => pseudo,
+ Err(pseudo) => {
+ warn!("stylo: Unable to parse anonymous-box pseudo-element: {}", pseudo);
+ return ptr::null_mut();
+ }
+ };
+
+ type Helpers = ArcHelpers<ServoComputedValues, GeckoComputedValues>;
+
+ Helpers::maybe_with(parent_style_or_null, |maybe_parent| {
+ let new_computed = data.stylist.computed_values_for_pseudo(&pseudo, maybe_parent);
+ new_computed.map_or(ptr::null_mut(), |c| Helpers::from(c))
+ })
}
#[no_mangle]
diff --git a/ports/geckolib/selector_impl.rs b/ports/geckolib/selector_impl.rs
index d892b68ca31..03803563443 100644
--- a/ports/geckolib/selector_impl.rs
+++ b/ports/geckolib/selector_impl.rs
@@ -151,14 +151,24 @@ impl SelectorImpl for GeckoSelectorImpl {
Ok(pseudo_class)
}
- fn parse_pseudo_element(_context: &ParserContext,
+ fn parse_pseudo_element(context: &ParserContext,
name: &str) -> Result<PseudoElement, ()> {
use self::PseudoElement::*;
- let pseudo_element = match_ignore_ascii_case! { name,
- "before" => Before,
- "after" => After,
- "first-line" => FirstLine,
+ // The braces here are unfortunate, but they're needed for
+ // match_ignore_ascii_case! to work as expected.
+ match_ignore_ascii_case! { name,
+ "before" => { return Ok(Before) },
+ "after" => { return Ok(After) },
+ "first-line" => { return Ok(FirstLine) },
+ _ => {}
+ }
+
+ if !context.in_user_agent_stylesheet {
+ return Err(())
+ }
+
+ Ok(match_ignore_ascii_case! { name,
"-moz-non-element" => MozNonElement,
"-moz-anonymous-block" => MozAnonymousBlock,
@@ -225,19 +235,94 @@ impl SelectorImpl for GeckoSelectorImpl {
"-moz-svg-text" => MozSVGText,
_ => return Err(())
- };
-
- Ok(pseudo_element)
+ })
}
}
impl SelectorImplExt for GeckoSelectorImpl {
+ type ComputedValues = GeckoComputedValues;
+
+ #[inline]
+ fn is_eagerly_cascaded_pseudo_element(pseudo: &PseudoElement) -> bool {
+ match *pseudo {
+ PseudoElement::Before |
+ PseudoElement::After |
+ PseudoElement::FirstLine => true,
+ _ => false,
+ }
+ }
+
#[inline]
- fn each_eagerly_cascaded_pseudo_element<F>(mut fun: F)
+ fn each_pseudo_element<F>(mut fun: F)
where F: FnMut(PseudoElement) {
fun(PseudoElement::Before);
fun(PseudoElement::After);
- // TODO: probably a lot more are missing here
+ fun(PseudoElement::FirstLine);
+
+ fun(PseudoElement::MozNonElement);
+ fun(PseudoElement::MozAnonymousBlock);
+ fun(PseudoElement::MozAnonymousPositionedBlock);
+ fun(PseudoElement::MozMathMLAnonymousBlock);
+ fun(PseudoElement::MozXULAnonymousBlock);
+
+ fun(PseudoElement::MozHorizontalFramesetBorder);
+ fun(PseudoElement::MozVerticalFramesetBorder);
+ fun(PseudoElement::MozLineFrame);
+ fun(PseudoElement::MozButtonContent);
+ fun(PseudoElement::MozButtonLabel);
+ fun(PseudoElement::MozCellContent);
+ fun(PseudoElement::MozDropdownList);
+ fun(PseudoElement::MozFieldsetContent);
+ fun(PseudoElement::MozFramesetBlank);
+ fun(PseudoElement::MozDisplayComboboxControlFrame);
+
+ fun(PseudoElement::MozHTMLCanvasContent);
+ fun(PseudoElement::MozInlineTable);
+ fun(PseudoElement::MozTable);
+ fun(PseudoElement::MozTableCell);
+ fun(PseudoElement::MozTableColumnGroup);
+ fun(PseudoElement::MozTableColumn);
+ fun(PseudoElement::MozTableOuter);
+ fun(PseudoElement::MozTableRowGroup);
+ fun(PseudoElement::MozTableRow);
+
+ fun(PseudoElement::MozCanvas);
+ fun(PseudoElement::MozPageBreak);
+ fun(PseudoElement::MozPage);
+ fun(PseudoElement::MozPageContent);
+ fun(PseudoElement::MozPageSequence);
+ fun(PseudoElement::MozScrolledContent);
+ fun(PseudoElement::MozScrolledCanvas);
+ fun(PseudoElement::MozScrolledPageSequence);
+ fun(PseudoElement::MozColumnContent);
+ fun(PseudoElement::MozViewport);
+ fun(PseudoElement::MozViewportScroll);
+ fun(PseudoElement::MozAnonymousFlexItem);
+ fun(PseudoElement::MozAnonymousGridItem);
+
+ fun(PseudoElement::MozRuby);
+ fun(PseudoElement::MozRubyBase);
+ fun(PseudoElement::MozRubyBaseContainer);
+ fun(PseudoElement::MozRubyText);
+ fun(PseudoElement::MozRubyTextContainer);
+
+ fun(PseudoElement::MozTreeColumn);
+ fun(PseudoElement::MozTreeRow);
+ fun(PseudoElement::MozTreeSeparator);
+ fun(PseudoElement::MozTreeCell);
+ fun(PseudoElement::MozTreeIndentation);
+ fun(PseudoElement::MozTreeLine);
+ fun(PseudoElement::MozTreeTwisty);
+ fun(PseudoElement::MozTreeImage);
+ fun(PseudoElement::MozTreeCellText);
+ fun(PseudoElement::MozTreeCheckbox);
+ fun(PseudoElement::MozTreeProgressMeter);
+ fun(PseudoElement::MozTreeDropFeedback);
+
+ fun(PseudoElement::MozSVGMarkerAnonChild);
+ fun(PseudoElement::MozSVGOuterSVGAnonChild);
+ fun(PseudoElement::MozSVGForeignContent);
+ fun(PseudoElement::MozSVGText);
}
#[inline]
diff --git a/ports/geckolib/tools/regen_bindings.sh b/ports/geckolib/tools/regen_bindings.sh
index 5529dd95234..cff58117d91 100755
--- a/ports/geckolib/tools/regen_bindings.sh
+++ b/ports/geckolib/tools/regen_bindings.sh
@@ -28,17 +28,17 @@ else
LIBCLANG_PATH=`brew --prefix llvm38`/lib/llvm-3.8/lib;
fi
-# Prevent bindgen from generating opaque types for the gecko style structs.
-export MAP_GECKO_STRUCTS=""
-for STRUCT in nsStyleFont nsStyleColor nsStyleList nsStyleText \
+# Prevent bindgen from generating opaque types for common gecko types
+export MAP_GECKO_TYPES=""
+for STRUCT in SheetParsingMode nsStyleFont nsStyleColor nsStyleList nsStyleText \
nsStyleVisibility nsStyleUserInterface nsStyleTableBorder \
nsStyleSVG nsStyleVariables nsStyleBackground nsStylePosition \
nsStyleTextReset nsStyleDisplay nsStyleContent nsStyleUIReset \
nsStyleTable nsStyleMargin nsStylePadding nsStyleBorder \
nsStyleOutline nsStyleXUL nsStyleSVGReset nsStyleColumn nsStyleEffects
do
- MAP_GECKO_STRUCTS=$MAP_GECKO_STRUCTS"-blacklist-type $STRUCT "
- MAP_GECKO_STRUCTS=$MAP_GECKO_STRUCTS"-raw-line 'use gecko_style_structs::$STRUCT;' "
+ MAP_GECKO_TYPES=$MAP_GECKO_TYPES"-blacklist-type $STRUCT "
+ MAP_GECKO_TYPES=$MAP_GECKO_TYPES"-raw-line 'use gecko_style_structs::$STRUCT;' "
done
# Check for the include directory.
@@ -50,7 +50,7 @@ fi
export RUST_BACKTRACE=1
-# We need to use 'eval' here to make MAP_GECKO_STRUCTS evaluate properly as
+# We need to use 'eval' here to make MAP_GECKO_TYPES evaluate properly as
# multiple arguments.
eval ./rust-bindgen/target/debug/bindgen \
-x c++ -std=gnu++0x \
@@ -61,4 +61,4 @@ eval ./rust-bindgen/target/debug/bindgen \
"$DIST_INCLUDE/mozilla/ServoBindings.h" \
-match "ServoBindings.h" \
-match "nsStyleStructList.h" \
- $MAP_GECKO_STRUCTS
+ $MAP_GECKO_TYPES
diff --git a/ports/geckolib/tools/regen_style_structs.sh b/ports/geckolib/tools/regen_style_structs.sh
index dc4690fc188..95833f88a16 100755
--- a/ports/geckolib/tools/regen_style_structs.sh
+++ b/ports/geckolib/tools/regen_style_structs.sh
@@ -95,6 +95,7 @@ export RUST_BACKTRACE=1
-match "nsDataHashtable.h" \
-match "nsCSSScanner.h" \
-match "Types.h" \
+ -match "SheetParsingMode.h" \
-blacklist-type "IsDestructibleFallbackImpl" \
-blacklist-type "IsDestructibleFallback" \
-opaque-type "nsIntMargin" \
diff --git a/ports/geckolib/traversal.rs b/ports/geckolib/traversal.rs
index 33fc1fd322e..4e10d8c8fc8 100644
--- a/ports/geckolib/traversal.rs
+++ b/ports/geckolib/traversal.rs
@@ -52,7 +52,7 @@ impl<'a> StandaloneStyleContext<'a> {
}
}
-impl<'a> StyleContext<'a, GeckoSelectorImpl, GeckoComputedValues> for StandaloneStyleContext<'a> {
+impl<'a> StyleContext<'a, GeckoSelectorImpl> for StandaloneStyleContext<'a> {
fn shared_context(&self) -> &'a SharedStyleContext {
&self.shared
}
diff --git a/ports/glutin/window.rs b/ports/glutin/window.rs
index 1a130a43d2c..6ae14334f51 100644
--- a/ports/glutin/window.rs
+++ b/ports/glutin/window.rs
@@ -13,6 +13,8 @@ use euclid::size::TypedSize2D;
use euclid::{Size2D, Point2D};
use gleam::gl;
use glutin;
+#[cfg(target_os = "macos")]
+use glutin::os::macos::{ActivationPolicy, WindowBuilderExt};
use glutin::{Api, ElementState, Event, GlRequest, MouseButton, VirtualKeyCode, MouseScrollDelta};
use glutin::{TouchPhase};
use layers::geometry::DevicePixel;
@@ -65,6 +67,22 @@ const LINE_HEIGHT: f32 = 38.0;
const MULTISAMPLES: u16 = 16;
+#[cfg(target_os = "macos")]
+fn builder_with_platform_options(mut builder: glutin::WindowBuilder) -> glutin::WindowBuilder {
+ if opts::get().headless || opts::get().output_file.is_some() {
+ // Prevent the window from showing in Dock.app, stealing focus,
+ // or appearing at all when running in headless mode or generating an
+ // output file.
+ builder = builder.with_activation_policy(ActivationPolicy::Prohibited)
+ }
+ builder
+}
+
+#[cfg(not(target_os = "macos"))]
+fn builder_with_platform_options(builder: glutin::WindowBuilder) -> glutin::WindowBuilder {
+ builder
+}
+
/// The type of a window.
pub struct Window {
window: glutin::Window,
@@ -113,6 +131,8 @@ impl Window {
builder = builder.with_multisampling(MULTISAMPLES)
}
+ builder = builder_with_platform_options(builder);
+
let mut glutin_window = builder.build().unwrap();
unsafe { glutin_window.make_current().expect("Failed to make context current!") }
diff --git a/ports/gonk/Cargo.lock b/ports/gonk/Cargo.lock
index 450791ad071..cdb33f58307 100644
--- a/ports/gonk/Cargo.lock
+++ b/ports/gonk/Cargo.lock
@@ -4,14 +4,14 @@ version = "0.0.1"
dependencies = [
"compositing 0.0.1",
"devtools 0.0.1",
- "env_logger 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "env_logger 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"errno 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
"gfx 0.0.1",
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
"layers 0.2.4 (git+https://github.com/servo/rust-layers)",
"layout 0.0.1",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net_traits 0.0.1",
"profile 0.0.1",
@@ -43,7 +43,7 @@ name = "angle"
version = "0.1.0"
source = "git+https://github.com/emilio/angle?branch=servo#eefe3506ae13e8ace811ca544fd6b4a5f0db0a04"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -85,7 +85,7 @@ dependencies = [
"freetype 0.1.0 (git+https://github.com/servo/rust-freetype)",
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-egl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -103,7 +103,7 @@ dependencies = [
"cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -112,7 +112,7 @@ name = "backtrace-sys"
version = "0.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -137,6 +137,11 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
+name = "bitflags"
+version = "0.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+
+[[package]]
name = "block"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -166,7 +171,7 @@ dependencies = [
"gfx_traits 0.0.1",
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"offscreen_gl_context 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
@@ -211,7 +216,7 @@ version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -246,12 +251,12 @@ dependencies = [
[[package]]
name = "cocoa"
-version = "0.3.0"
+version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"core-graphics 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"objc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -279,7 +284,7 @@ dependencies = [
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"layers 0.2.4 (git+https://github.com/servo/rust-layers)",
"layout_traits 0.0.1",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net_traits 0.0.1",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -315,7 +320,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"core-foundation-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -323,7 +328,7 @@ name = "core-foundation-sys"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -332,7 +337,7 @@ version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"core-foundation 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -343,7 +348,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"core-foundation 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"core-graphics 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -444,7 +449,7 @@ name = "dylib"
version = "0.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -514,10 +519,10 @@ dependencies = [
[[package]]
name = "env_logger"
-version = "0.3.1"
+version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"regex 0.1.55 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -527,7 +532,7 @@ version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -538,7 +543,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -559,7 +564,7 @@ name = "flate2"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"miniz-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -573,7 +578,7 @@ name = "freetype"
version = "0.1.0"
source = "git+https://github.com/servo/rust-freetype#d564ff90a3c69d987f5c015d7ec034cfaee21aff"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -582,7 +587,7 @@ version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -600,8 +605,8 @@ name = "gaol"
version = "0.0.1"
source = "git+https://github.com/servo/gaol#cbb2518029901f078f871a87ebe05cf96d727713"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -643,8 +648,8 @@ dependencies = [
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"layers 0.2.4 (git+https://github.com/servo/rust-layers)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"mime 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net_traits 0.0.1",
@@ -659,7 +664,7 @@ dependencies = [
"servo-skia 0.20130412.6 (registry+https://github.com/rust-lang/crates.io-index)",
"simd 0.1.0 (git+https://github.com/huonw/simd)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"style 0.0.1",
"style_traits 0.0.1",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -699,7 +704,7 @@ version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"khronos_api 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"xml-rs 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -713,7 +718,7 @@ dependencies = [
[[package]]
name = "glob"
-version = "0.2.10"
+version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
@@ -723,7 +728,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gl_generator 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"khronos_api 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -731,7 +736,7 @@ name = "harfbuzz-sys"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -749,7 +754,7 @@ name = "hbs-common-sys"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -758,7 +763,7 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"hbs-pow-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -768,7 +773,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"hbs-builder 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"hbs-common-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -789,7 +794,7 @@ name = "hpack"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -799,12 +804,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"mac 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"phf 0.7.13 (registry+https://github.com/rust-lang/crates.io-index)",
"phf_codegen 0.7.13 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"tendril 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -822,7 +827,7 @@ dependencies = [
"cookie 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
"httparse 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"language-tags 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"mime 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -854,10 +859,10 @@ dependencies = [
"byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"enum_primitive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gif 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "glob 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
- "jpeg-decoder 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
+ "jpeg-decoder 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
- "png 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "png 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -872,7 +877,7 @@ dependencies = [
[[package]]
name = "inflate"
-version = "0.1.0"
+version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
@@ -885,7 +890,7 @@ dependencies = [
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
"leaky-cow 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -896,7 +901,7 @@ dependencies = [
"bincode 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
"byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -905,12 +910,12 @@ dependencies = [
[[package]]
name = "jpeg-decoder"
-version = "0.1.3"
+version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"byteorder 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num-rational 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"rayon 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -920,8 +925,8 @@ version = "0.1.2"
source = "git+https://github.com/servo/rust-mozjs#efe805affa75d776316e9ea6113f85cdad1e82ed"
dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"mozjs_sys 0.0.0 (git+https://github.com/servo/mozjs)",
"num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -960,8 +965,8 @@ dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"io-surface 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-egl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-skia 0.20130412.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -985,8 +990,8 @@ dependencies = [
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"layout_traits 0.0.1",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net_traits 0.0.1",
"plugins 0.0.1",
@@ -995,11 +1000,11 @@ dependencies = [
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"script 0.0.1",
"script_traits 0.0.1",
- "selectors 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "selectors 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"style 0.0.1",
"style_traits 0.0.1",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1047,7 +1052,7 @@ dependencies = [
[[package]]
name = "libc"
-version = "0.2.4"
+version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
@@ -1074,17 +1079,14 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "log"
-version = "0.3.5"
+version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
-dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
-]
[[package]]
name = "lzw"
@@ -1106,7 +1108,7 @@ name = "malloc_buf"
version = "0.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1119,7 +1121,7 @@ name = "memchr"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1129,7 +1131,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"fs2 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1138,7 +1140,7 @@ name = "mime"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1158,7 +1160,7 @@ version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1166,7 +1168,7 @@ name = "mozjs_sys"
version = "0.0.0"
source = "git+https://github.com/servo/mozjs#3122a1e1a80b78377ae1ce8e7edd4ad3bcbb3d65"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"libz-sys 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1202,7 +1204,7 @@ dependencies = [
"hyper 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)",
"immeta 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"mime 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"mime_guess 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1229,7 +1231,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
"ws2_32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1244,7 +1246,7 @@ dependencies = [
"image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"plugins 0.0.1",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1334,7 +1336,7 @@ version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1380,7 +1382,7 @@ dependencies = [
"gl_generator 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
"khronos_api 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"x11 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1394,7 +1396,7 @@ dependencies = [
"bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
"gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl-sys 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl-sys-extras 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1405,7 +1407,7 @@ version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gdi32-sys 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"libressl-pnacl-sys 2.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"user32-sys 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1417,7 +1419,7 @@ version = "0.7.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"gcc 0.3.26 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"openssl-sys 0.7.8 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1426,7 +1428,7 @@ name = "osmesa-sys"
version = "0.0.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"shared_library 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1492,14 +1494,14 @@ dependencies = [
[[package]]
name = "png"
-version = "0.4.0"
+version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"flate2 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
- "inflate 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
+ "inflate 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "num-iter 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1508,8 +1510,8 @@ version = "0.0.1"
dependencies = [
"hbs-pow 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
"profile_traits 0.0.1",
"regex 0.1.55 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1567,7 +1569,7 @@ name = "rand"
version = "0.3.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1662,8 +1664,8 @@ dependencies = [
"image 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"js 0.1.2 (git+https://github.com/servo/rust-mozjs)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net_traits 0.0.1",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1678,10 +1680,10 @@ dependencies = [
"regex 0.1.55 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"script_traits 0.0.1",
- "selectors 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "selectors 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"style 0.0.1",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
"unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1705,7 +1707,7 @@ dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net_traits 0.0.1",
"offscreen_gl_context 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1721,10 +1723,10 @@ dependencies = [
[[package]]
name = "selectors"
-version = "0.5.2"
+version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
+ "bitflags 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
"cssparser 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"fnv 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1732,7 +1734,7 @@ dependencies = [
"matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"quickersort 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1783,7 +1785,7 @@ dependencies = [
"compositing 0.0.1",
"devtools 0.0.1",
"devtools_traits 0.0.1",
- "env_logger 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "env_logger 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"euclid 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
"gaol 0.0.1 (git+https://github.com/servo/gaol)",
"gfx 0.0.1",
@@ -1791,8 +1793,8 @@ dependencies = [
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"layers 0.2.4 (git+https://github.com/servo/rust-layers)",
"layout 0.0.1",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"msg 0.0.1",
"net 0.0.1",
"net_traits 0.0.1",
@@ -1812,7 +1814,7 @@ name = "servo-egl"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1820,7 +1822,7 @@ name = "servo-fontconfig"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-fontconfig-sys 2.11.3 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1844,12 +1846,12 @@ dependencies = [
[[package]]
name = "servo-glutin"
-version = "0.4.15"
+version = "0.4.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"android_glue 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"cgl 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "cocoa 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
+ "cocoa 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
"core-foundation 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"core-graphics 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"dwmapi-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1857,7 +1859,7 @@ dependencies = [
"gl_generator 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"objc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"osmesa-sys 0.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
"shared_library 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1881,11 +1883,11 @@ dependencies = [
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
"glx 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"io-surface 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-egl 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-fontconfig 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
"servo-freetype-sys 2.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
- "servo-glutin 0.4.15 (registry+https://github.com/rust-lang/crates.io-index)",
+ "servo-glutin 0.4.16 (registry+https://github.com/rust-lang/crates.io-index)",
"x11 2.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -1895,7 +1897,7 @@ version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -1923,12 +1925,12 @@ version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"hpack 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
name = "string_cache"
-version = "0.2.12"
+version = "0.2.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"debug_unreachable 0.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1953,16 +1955,16 @@ dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"matches 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"num-traits 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "selectors 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "selectors 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"style_traits 0.0.1",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1978,10 +1980,10 @@ dependencies = [
"heapsize 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
"heapsize_plugin 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "selectors 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
+ "selectors 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2009,7 +2011,7 @@ version = "2.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"rand 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc_version 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2042,7 +2044,7 @@ version = "0.1.34"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
"winapi 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -2052,7 +2054,7 @@ name = "tinyfiledialogs"
version = "0.1.0"
source = "git+https://github.com/jdm/tinyfiledialogs#2d2285985db1168da4d516000f24842aba46fd94"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -2154,8 +2156,8 @@ dependencies = [
"js 0.1.2 (git+https://github.com/servo/rust-mozjs)",
"kernel32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"plugins 0.0.1",
@@ -2164,7 +2166,7 @@ dependencies = [
"serde 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_macros 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
"smallvec 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"url 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -2188,7 +2190,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"bitflags 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
"crossbeam 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"wayland-scanner 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)",
"wayland-sys 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -2247,7 +2249,7 @@ dependencies = [
"gleam 0.2.15 (registry+https://github.com/rust-lang/crates.io-index)",
"ipc-channel 0.2.2 (git+https://github.com/servo/ipc-channel)",
"lazy_static 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"num 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
"offscreen_gl_context 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
"scoped_threadpool 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2311,7 +2313,7 @@ name = "x11"
version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"pkg-config 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
]
@@ -2321,7 +2323,7 @@ version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"dylib 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "libc 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)",
+ "libc 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]]
@@ -2345,12 +2347,12 @@ name = "xml5ever"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
- "log 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)",
+ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
"mac 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"phf 0.7.13 (registry+https://github.com/rust-lang/crates.io-index)",
"phf_codegen 0.7.13 (registry+https://github.com/rust-lang/crates.io-index)",
"rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)",
- "string_cache 0.2.12 (registry+https://github.com/rust-lang/crates.io-index)",
+ "string_cache 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
"tendril 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.34 (registry+https://github.com/rust-lang/crates.io-index)",
]
diff --git a/python/servo/bootstrap_commands.py b/python/servo/bootstrap_commands.py
index d49c1e431c9..5630b778771 100644
--- a/python/servo/bootstrap_commands.py
+++ b/python/servo/bootstrap_commands.py
@@ -63,11 +63,14 @@ def download(desc, src, writer, start_byte=0):
if not dumb:
print()
- except urllib2.URLError:
- print("Error downloading Rust compiler; are you connected to the internet?")
- sys.exit(1)
except urllib2.HTTPError, e:
print("Download failed (%d): %s - %s" % (e.code, e.reason, src))
+ if e.code == 403:
+ print("No Rust compiler binary available for this platform. "
+ "Please see https://github.com/servo/servo/#prerequisites")
+ sys.exit(1)
+ except urllib2.URLError:
+ print("Error downloading Rust compiler; are you connected to the internet?")
sys.exit(1)
except KeyboardInterrupt:
writer.flush()
@@ -316,7 +319,10 @@ class MachCommands(CommandBase):
name = path.join(base, name)
if force:
print("Removing " + name)
- shutil.rmtree(name)
+ if os.path.isdir(name):
+ shutil.rmtree(name)
+ else:
+ os.remove(name)
else:
print("Would remove " + name)
if not removing_anything:
diff --git a/resources/servo.css b/resources/servo.css
index 5fe1b27bf46..0ef23b8f86d 100644
--- a/resources/servo.css
+++ b/resources/servo.css
@@ -51,15 +51,11 @@ details::-servo-details-summary {
details[open]::-servo-details-summary {
list-style: disclosure-open;
}
-details::-servo-details-content {
+*|*::-servo-details-content {
margin-left: 40px;
overflow: hidden;
- display: none;
-}
-details[open]::-servo-details-content {
display: block;
}
-
/*
* Until servo supports svg properly, make sure to at least prevent svg
* children from being layed out and rendered like usual html.
diff --git a/tests/unit/layout/size_of.rs b/tests/unit/layout/size_of.rs
index f79e352cdc9..87f1dcb3d44 100644
--- a/tests/unit/layout/size_of.rs
+++ b/tests/unit/layout/size_of.rs
@@ -3,6 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
use layout::Fragment;
+use layout::ServoThreadSafeLayoutNode;
use std::mem::size_of;
#[test]
@@ -12,7 +13,7 @@ fn test_size_of_fragment() {
if actual < expected {
panic!("Your changes have decreased the stack size of layout::fragment::Fragment \
- from {} to {}. Good work! Please update the size in tests/layout/size_of.rs",
+ from {} to {}. Good work! Please update the size in tests/unit/layout/size_of.rs",
expected, actual);
}
@@ -20,7 +21,27 @@ fn test_size_of_fragment() {
panic!("Your changes have increased the stack size of layout::fragment::Fragment \
from {} to {}. Please consider choosing a design which avoids this increase. \
If you feel that the increase is necessary, update the size in \
- tests/layout/size_of.rs.",
+ tests/unit/layout/size_of.rs.",
+ expected, actual);
+ }
+}
+
+#[test]
+fn test_size_of_layout_node() {
+ let expected = 16;
+ let actual = size_of::<ServoThreadSafeLayoutNode>();
+
+ if actual < expected {
+ panic!("Your changes have decreased the stack size of layout::wrapper::ServoThreadSafeLayoutNode \
+ from {} to {}. Good work! Please update the size in tests/layout/unit/size_of.rs",
+ expected, actual);
+ }
+
+ if actual > expected {
+ panic!("Your changes have increased the stack size of layout::wrapper::ServoThreadSafeLayoutNode \
+ from {} to {}. Please consider choosing a design which avoids this increase. \
+ If you feel that the increase is necessary, update the size in \
+ tests/unit/layout/size_of.rs.",
expected, actual);
}
}
diff --git a/tests/unit/net/fetch.rs b/tests/unit/net/fetch.rs
index 98b15fd8b8c..d880e3937c0 100644
--- a/tests/unit/net/fetch.rs
+++ b/tests/unit/net/fetch.rs
@@ -18,6 +18,8 @@ use net::fetch::methods::{fetch, fetch_async, fetch_with_cors_cache};
use net_traits::AsyncFetchListener;
use net_traits::request::{Origin, RedirectMode, Referer, Request, RequestMode};
use net_traits::response::{CacheState, Response, ResponseBody, ResponseType};
+use std::fs::File;
+use std::io::Read;
use std::rc::Rc;
use std::sync::atomic::{AtomicUsize, Ordering};
use std::sync::mpsc::{Sender, channel};
@@ -25,6 +27,7 @@ use std::sync::{Arc, Mutex};
use time::{self, Duration};
use unicase::UniCase;
use url::{Origin as UrlOrigin, Url};
+use util::resource_files::resources_dir_path;
// TODO write a struct that impls Handler for storing test values
@@ -141,6 +144,36 @@ fn test_fetch_data() {
}
#[test]
+fn test_fetch_file() {
+
+ let mut path = resources_dir_path();
+ path.push("servo.css");
+
+ let url = Url::from_file_path(path.clone()).unwrap();
+ let origin = Origin::Origin(url.origin());
+ let request = Request::new(url, Some(origin), false);
+ request.same_origin_data.set(true);
+
+ let fetch_response = fetch(Rc::new(request));
+ assert!(!fetch_response.is_network_error());
+ assert_eq!(fetch_response.headers.len(), 1);
+ let content_type: &ContentType = fetch_response.headers.get().unwrap();
+ assert!(**content_type == Mime(TopLevel::Text, SubLevel::Css, vec![]));
+
+ let resp_body = fetch_response.body.lock().unwrap();
+ let mut file = File::open(path).unwrap();
+ let mut bytes = vec![];
+ let _ = file.read_to_end(&mut bytes);
+
+ match *resp_body {
+ ResponseBody::Done(ref val) => {
+ assert_eq!(val, &bytes);
+ },
+ _ => panic!()
+ }
+}
+
+#[test]
fn test_cors_preflight_fetch() {
static ACK: &'static [u8] = b"ACK";
let state = Arc::new(AtomicUsize::new(0));
diff --git a/tests/unit/style/Cargo.toml b/tests/unit/style/Cargo.toml
index f4e635cf076..91c3d5d4f64 100644
--- a/tests/unit/style/Cargo.toml
+++ b/tests/unit/style/Cargo.toml
@@ -18,6 +18,6 @@ app_units = {version = "0.2.3", features = ["plugins"]}
cssparser = {version = "0.5.4", features = ["heap_size"]}
euclid = {version = "0.6.4", features = ["plugins"]}
selectors = {version = "0.5", features = ["heap_size"]}
-string_cache = {version = "0.2.12", features = ["heap_size"]}
+string_cache = {version = "0.2", features = ["heap_size"]}
url = {version = "1.0.0", features = ["heap_size"]}
rustc-serialize = "0.3"
diff --git a/tests/unit/style/stylesheets.rs b/tests/unit/style/stylesheets.rs
index 53e891f5dd1..91822093ea2 100644
--- a/tests/unit/style/stylesheets.rs
+++ b/tests/unit/style/stylesheets.rs
@@ -8,7 +8,7 @@ use selectors::parser::*;
use std::borrow::ToOwned;
use std::sync::Arc;
use std::sync::Mutex;
-use string_cache::Atom;
+use string_cache::{Atom, Namespace};
use style::properties::{PropertyDeclaration, PropertyDeclarationBlock, DeclaredValue, longhands};
use style::stylesheets::{CSSRule, StyleRule, Origin};
use style::error_reporting::ParseErrorReporter;
@@ -32,13 +32,13 @@ fn test_parse_stylesheet() {
media: None,
dirty_on_viewport_size_change: false,
rules: vec![
- CSSRule::Namespace(None, ns!(html)),
+ CSSRule::Namespace(None, Namespace(Atom::from("http://www.w3.org/1999/xhtml"))),
CSSRule::Style(StyleRule {
selectors: vec![
Selector {
compound_selectors: Arc::new(CompoundSelector {
simple_selectors: vec![
- SimpleSelector::Namespace(ns!(html)),
+ SimpleSelector::Namespace(Namespace(Atom::from("http://www.w3.org/1999/xhtml"))),
SimpleSelector::LocalName(LocalName {
name: atom!("input"),
lower_name: atom!("input"),
@@ -68,7 +68,7 @@ fn test_parse_stylesheet() {
Selector {
compound_selectors: Arc::new(CompoundSelector {
simple_selectors: vec![
- SimpleSelector::Namespace(ns!(html)),
+ SimpleSelector::Namespace(Namespace(Atom::from("http://www.w3.org/1999/xhtml"))),
SimpleSelector::LocalName(LocalName {
name: atom!("html"),
lower_name: atom!("html"),
@@ -82,7 +82,7 @@ fn test_parse_stylesheet() {
Selector {
compound_selectors: Arc::new(CompoundSelector {
simple_selectors: vec![
- SimpleSelector::Namespace(ns!(html)),
+ SimpleSelector::Namespace(Namespace(Atom::from("http://www.w3.org/1999/xhtml"))),
SimpleSelector::LocalName(LocalName {
name: atom!("body"),
lower_name: atom!("body"),
@@ -107,10 +107,12 @@ fn test_parse_stylesheet() {
Selector {
compound_selectors: Arc::new(CompoundSelector {
simple_selectors: vec![
+ SimpleSelector::Namespace(Namespace(Atom::from("http://www.w3.org/1999/xhtml"))),
SimpleSelector::Class(Atom::from("ok")),
],
next: Some((Arc::new(CompoundSelector {
simple_selectors: vec![
+ SimpleSelector::Namespace(Namespace(Atom::from("http://www.w3.org/1999/xhtml"))),
SimpleSelector::ID(Atom::from("d1")),
],
next: None,
@@ -145,7 +147,6 @@ fn test_parse_stylesheet() {
});
}
-
struct CSSError {
pub line: usize,
pub column: usize,
diff --git a/tests/wpt/mozilla/tests/mozilla/details_ui_opened.html b/tests/wpt/mozilla/tests/mozilla/details_ui_opened.html
index 10e65e98d81..2d9b13aad0a 100644
--- a/tests/wpt/mozilla/tests/mozilla/details_ui_opened.html
+++ b/tests/wpt/mozilla/tests/mozilla/details_ui_opened.html
@@ -6,4 +6,3 @@
<summary>Test</summary>
Contents
</details>
-