Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2012 Google Inc. All rights reserved. | 2 * Copyright (C) 2012 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 198 if (type.isNull()) | 198 if (type.isNull()) |
| 199 return 0; | 199 return 0; |
| 200 DefinitionMap::const_iterator it = m_definitions.find(type); | 200 DefinitionMap::const_iterator it = m_definitions.find(type); |
| 201 if (it == m_definitions.end()) | 201 if (it == m_definitions.end()) |
| 202 return 0; | 202 return 0; |
| 203 if (it->value->namespaceURI() != namespaceURI) | 203 if (it->value->namespaceURI() != namespaceURI) |
| 204 return 0; | 204 return 0; |
| 205 return it->value; | 205 return it->value; |
| 206 } | 206 } |
| 207 | 207 |
| 208 PassRefPtr<Element> CustomElementRegistry::tryToCreateCustomTagElement(const Qua lifiedName& tagName) | 208 PassRefPtr<Element> CustomElementRegistry::createCustomTagElement(const Qualifie dName& tagName) |
| 209 { | 209 { |
| 210 if (!document() || !isValidName(tagName.localName())) | 210 if (!document()) |
| 211 return 0; | 211 return 0; |
| 212 | 212 |
| 213 ASSERT(isCustomTagName(tagName.localName())); | |
| 214 | |
| 213 RefPtr<Element> element; | 215 RefPtr<Element> element; |
| 214 | 216 |
| 215 if (HTMLNames::xhtmlNamespaceURI == tagName.namespaceURI()) | 217 if (HTMLNames::xhtmlNamespaceURI == tagName.namespaceURI()) |
| 216 element = HTMLElement::create(tagName, document()); | 218 element = HTMLElement::create(tagName, document()); |
| 217 #if ENABLE(SVG) | 219 #if ENABLE(SVG) |
| 218 else if (SVGNames::svgNamespaceURI == tagName.namespaceURI()) | 220 else if (SVGNames::svgNamespaceURI == tagName.namespaceURI()) |
| 219 element = SVGElement::create(tagName, document()); | 221 element = SVGElement::create(tagName, document()); |
| 220 #endif | 222 #endif |
| 221 else | 223 else |
| 222 element = Element::create(tagName, document()); | 224 element = Element::create(tagName, document()); |
| 223 | 225 |
| 224 RefPtr<CustomElementDefinition> definition = findAndCheckNamespace(tagName.l ocalName(), tagName.namespaceURI()); | 226 RefPtr<CustomElementDefinition> definition = findAndCheckNamespace(tagName.l ocalName(), tagName.namespaceURI()); |
| 225 if (!definition || definition->isTypeExtension()) | 227 if (definition && !definition->isTypeExtension()) |
| 226 return 0; | 228 didCreateCustomTagElement(element.get()); |
| 227 | 229 |
| 228 didCreateElement(element.get()); | |
| 229 return element.release(); | 230 return element.release(); |
|
haraken
2013/05/01 18:49:12
This will change behavior. Previously 0 was return
dominicc (has gone to gerrit)
2013/05/02 01:29:56
Absolutely. That is what we're going for here, hen
| |
| 230 } | 231 } |
| 231 | 232 |
| 232 void CustomElementRegistry::didGiveTypeExtension(Element* element) | 233 void CustomElementRegistry::didGiveTypeExtension(Element* element) |
| 233 { | 234 { |
| 234 RefPtr<CustomElementDefinition> definition = findFor(element); | 235 RefPtr<CustomElementDefinition> definition = findFor(element); |
| 235 if (!definition || !definition->isTypeExtension()) | 236 if (!definition || !definition->isTypeExtension()) |
| 236 return; | 237 return; |
| 237 activate(CustomElementInvocation(element)); | 238 activate(CustomElementInvocation(element)); |
| 238 } | 239 } |
| 239 | 240 |
| 240 void CustomElementRegistry::didCreateElement(Element* element) | 241 void CustomElementRegistry::didCreateCustomTagElement(Element* element) |
| 241 { | 242 { |
| 242 activate(CustomElementInvocation(element)); | 243 activate(CustomElementInvocation(element)); |
| 243 } | 244 } |
| 244 | 245 |
| 245 void CustomElementRegistry::activate(const CustomElementInvocation& invocation) | 246 void CustomElementRegistry::activate(const CustomElementInvocation& invocation) |
| 246 { | 247 { |
| 247 bool wasInactive = m_invocations.isEmpty(); | 248 bool wasInactive = m_invocations.isEmpty(); |
| 248 m_invocations.append(invocation); | 249 m_invocations.append(invocation); |
| 249 if (wasInactive) | 250 if (wasInactive) |
| 250 activeCustomElementRegistries().add(this); | 251 activeCustomElementRegistries().add(this); |
| (...skipping 30 matching lines...) Expand all Loading... | |
| 281 while (!activeCustomElementRegistries().isEmpty()) { | 282 while (!activeCustomElementRegistries().isEmpty()) { |
| 282 Vector<RefPtr<CustomElementRegistry> > registries; | 283 Vector<RefPtr<CustomElementRegistry> > registries; |
| 283 copyToVector(activeCustomElementRegistries(), registries); | 284 copyToVector(activeCustomElementRegistries(), registries); |
| 284 activeCustomElementRegistries().clear(); | 285 activeCustomElementRegistries().clear(); |
| 285 for (size_t i = 0; i < registries.size(); ++i) | 286 for (size_t i = 0; i < registries.size(); ++i) |
| 286 registries[i]->deliverLifecycleCallbacks(); | 287 registries[i]->deliverLifecycleCallbacks(); |
| 287 } | 288 } |
| 288 } | 289 } |
| 289 | 290 |
| 290 } | 291 } |
| OLD | NEW |