Skip to content

Commit

Permalink
Check namespace during ce def lookup
Browse files Browse the repository at this point in the history
  • Loading branch information
cbrewster committed Aug 9, 2017
1 parent 1a9f4ca commit 4137120
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 9 deletions.
2 changes: 1 addition & 1 deletion components/script/dom/create.rs
Expand Up @@ -122,7 +122,7 @@ fn create_html_element(name: QualName,
assert!(name.ns == ns!(html));

// Step 4
let definition = document.lookup_custom_element_definition(name.local.clone(), is);
let definition = document.lookup_custom_element_definition(&name.ns, &name.local, is.as_ref());

if let Some(definition) = definition {
if definition.is_autonomous() {
Expand Down
13 changes: 8 additions & 5 deletions components/script/dom/customelementregistry.rs
Expand Up @@ -79,13 +79,13 @@ impl CustomElementRegistry {

/// https://html.spec.whatwg.org/multipage/#look-up-a-custom-element-definition
pub fn lookup_definition(&self,
local_name: LocalName,
is: Option<LocalName>)
local_name: &LocalName,
is: Option<&LocalName>)
-> Option<Rc<CustomElementDefinition>> {
self.definitions.borrow().values().find(|definition| {
// Step 4-5
definition.local_name == local_name &&
(definition.name == local_name || Some(&definition.name) == is.as_ref())
definition.local_name == *local_name &&
(definition.name == *local_name || Some(&definition.name) == is)
}).cloned()
}

Expand Down Expand Up @@ -522,7 +522,10 @@ fn upgrade_element(definition: Rc<CustomElementDefinition>, element: &Element) {
pub fn try_upgrade_element(element: &Element) {
// Step 1
let document = document_from_node(element);
if let Some(definition) = document.lookup_custom_element_definition(element.local_name().clone(), element.get_is()) {
let namespace = element.namespace();
let local_name = element.local_name();
let is = element.get_is();
if let Some(definition) = document.lookup_custom_element_definition(namespace, local_name, is.as_ref()) {
// Step 2
ScriptThread::enqueue_upgrade_reaction(element, definition);
}
Expand Down
12 changes: 9 additions & 3 deletions components/script/dom/document.rs
Expand Up @@ -95,7 +95,7 @@ use dom_struct::dom_struct;
use encoding::EncodingRef;
use encoding::all::UTF_8;
use euclid::{Point2D, Vector2D};
use html5ever::{LocalName, QualName};
use html5ever::{LocalName, Namespace, QualName};
use hyper::header::{Header, SetCookie};
use hyper_serde::Serde;
use ipc_channel::ipc::{self, IpcSender};
Expand Down Expand Up @@ -2001,13 +2001,19 @@ impl Document {

/// https://html.spec.whatwg.org/multipage/#look-up-a-custom-element-definition
pub fn lookup_custom_element_definition(&self,
local_name: LocalName,
is: Option<LocalName>)
namespace: &Namespace,
local_name: &LocalName,
is: Option<&LocalName>)
-> Option<Rc<CustomElementDefinition>> {
if !PREFS.get("dom.customelements.enabled").as_boolean().unwrap_or(false) {
return None;
}

// Step 1
if *namespace != ns!(html) {
return None;
}

// Step 2
if !self.has_browsing_context {
return None;
Expand Down

0 comments on commit 4137120

Please sign in to comment.