diff options
Diffstat (limited to 'components/script')
-rw-r--r-- | components/script/Cargo.toml | 2 | ||||
-rw-r--r-- | components/script/dom/globalscope.rs | 8 | ||||
-rw-r--r-- | components/script/dom/htmliframeelement.rs | 2 | ||||
-rw-r--r-- | components/script/dom/permissions.rs | 4 | ||||
-rw-r--r-- | components/script/dom/servoparser/async_html.rs | 25 | ||||
-rw-r--r-- | components/script/dom/window.rs | 2 | ||||
-rw-r--r-- | components/script/layout_wrapper.rs | 2 |
7 files changed, 18 insertions, 27 deletions
diff --git a/components/script/Cargo.toml b/components/script/Cargo.toml index b9d8a0b1304..12f84eeaf12 100644 --- a/components/script/Cargo.toml +++ b/components/script/Cargo.toml @@ -35,7 +35,7 @@ byteorder = "1.0" canvas_traits = {path = "../canvas_traits"} caseless = "0.1.0" cookie = "0.6" -cssparser = "0.16" +cssparser = "0.16.1" deny_public_fields = {path = "../deny_public_fields"} devtools_traits = {path = "../devtools_traits"} dom_struct = {path = "../dom_struct"} diff --git a/components/script/dom/globalscope.rs b/components/script/dom/globalscope.rs index ce81958a2cb..3a47298c53b 100644 --- a/components/script/dom/globalscope.rs +++ b/components/script/dom/globalscope.rs @@ -543,12 +543,16 @@ impl GlobalScope { /// /// ["current"]: https://html.spec.whatwg.org/multipage/#current #[allow(unsafe_code)] - pub fn current() -> Root<Self> { + pub fn current() -> Option<Root<Self>> { unsafe { let cx = Runtime::get(); assert!(!cx.is_null()); let global = CurrentGlobalOrNull(cx); - global_scope_from_global(global) + if global.is_null() { + None + } else { + Some(global_scope_from_global(global)) + } } } diff --git a/components/script/dom/htmliframeelement.rs b/components/script/dom/htmliframeelement.rs index 23feab87329..bde40d11a2b 100644 --- a/components/script/dom/htmliframeelement.rs +++ b/components/script/dom/htmliframeelement.rs @@ -590,7 +590,7 @@ impl HTMLIFrameElementMethods for HTMLIFrameElement { Some(document) => document, }; // Step 4. - let current = GlobalScope::current().as_window().Document(); + let current = GlobalScope::current().expect("No current global object").as_window().Document(); if !current.origin().same_origin_domain(document.origin()) { return None; } diff --git a/components/script/dom/permissions.rs b/components/script/dom/permissions.rs index b5cab2ace90..3368782d06e 100644 --- a/components/script/dom/permissions.rs +++ b/components/script/dom/permissions.rs @@ -241,7 +241,7 @@ impl PermissionAlgorithm for Permissions { let state = prompt_user(&format!("{} {} ?", REQUEST_DIALOG_MESSAGE, perm_name.clone())); - let globalscope = GlobalScope::current(); + let globalscope = GlobalScope::current().expect("No current global object"); globalscope.as_window() .permission_state_invocation_results() .borrow_mut() @@ -266,7 +266,7 @@ pub fn get_descriptor_permission_state(permission_name: PermissionName, // Step 1. let settings = match env_settings_obj { Some(env_settings_obj) => Root::from_ref(env_settings_obj), - None => GlobalScope::current(), + None => GlobalScope::current().expect("No current global object"), }; // Step 2. diff --git a/components/script/dom/servoparser/async_html.rs b/components/script/dom/servoparser/async_html.rs index e13f8169faa..e1632ffaf3c 100644 --- a/components/script/dom/servoparser/async_html.rs +++ b/components/script/dom/servoparser/async_html.rs @@ -138,8 +138,6 @@ pub struct ParseNode { #[derive(JSTraceable, HeapSizeOf)] struct ParseNodeData { - target: Option<String>, - data: Option<String>, contents: Option<ParseNode>, is_integration_point: bool, } @@ -147,8 +145,6 @@ struct ParseNodeData { impl Default for ParseNodeData { fn default() -> ParseNodeData { ParseNodeData { - target: None, - data: None, contents: None, is_integration_point: false, } @@ -169,7 +165,7 @@ enum ParseOperation { MarkScriptAlreadyStarted(ParseNodeID), ReparentChildren(ParseNodeID, ParseNodeID), AssociateWithForm(ParseNodeID, ParseNodeID), - CreatePI(ParseNodeID), + CreatePI(ParseNodeID, StrTendril, StrTendril), Pop(ParseNodeID), } @@ -329,15 +325,11 @@ impl Sink { ParseOperation::Pop(node) => { vtable_for(self.get_node(&node)).pop(); } - ParseOperation::CreatePI(node) => { - let pi; - { - let data = self.get_parse_node_data(&node); - pi = ProcessingInstruction::new( - DOMString::from(data.target.clone().unwrap()), - DOMString::from(data.data.clone().unwrap()), + ParseOperation::CreatePI(node, target, data) => { + let pi = ProcessingInstruction::new( + DOMString::from(String::from(target)), + DOMString::from(String::from(data)), document); - } self.insert_node(node, JS::from_ref(pi.upcast())); } } @@ -411,12 +403,7 @@ impl TreeSink for Sink { fn create_pi(&mut self, target: StrTendril, data: StrTendril) -> ParseNode { let node = self.new_parse_node(); - { - let mut node_data = self.get_parse_node_data_mut(&node.id); - node_data.target = Some(String::from(target)); - node_data.data = Some(String::from(data)); - } - self.process_operation(ParseOperation::CreatePI(node.id)); + self.process_operation(ParseOperation::CreatePI(node.id, target, data)); node } diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 0d4dca7d845..d560c71b3ad 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -586,7 +586,7 @@ impl WindowMethods for Window { }; // Step 6. let container_doc = document_from_node(container); - let current_doc = GlobalScope::current().as_window().Document(); + let current_doc = GlobalScope::current().expect("No current global object").as_window().Document(); if !current_doc.origin().same_origin_domain(container_doc.origin()) { return None; } diff --git a/components/script/layout_wrapper.rs b/components/script/layout_wrapper.rs index d26493589c2..0875d437598 100644 --- a/components/script/layout_wrapper.rs +++ b/components/script/layout_wrapper.rs @@ -902,7 +902,7 @@ impl<'ln> ThreadSafeLayoutNode for ServoThreadSafeLayoutNode<'ln> { fn parent_style(&self) -> Arc<ComputedValues> { let parent = self.node.parent_node().unwrap().as_element().unwrap(); let parent_data = parent.get_data().unwrap().borrow(); - parent_data.styles().primary.values().clone() + parent_data.styles.primary().clone() } fn debug_id(self) -> usize { |