OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 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 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
51 | 51 |
52 if (!definition) | 52 if (!definition) |
53 return; | 53 return; |
54 | 54 |
55 // Upgrade elements that were waiting for this definition. | 55 // Upgrade elements that were waiting for this definition. |
56 const CustomElementUpgradeCandidateMap::ElementSet& upgradeCandidates = m_ca
ndidates.takeUpgradeCandidatesFor(definition->descriptor()); | 56 const CustomElementUpgradeCandidateMap::ElementSet& upgradeCandidates = m_ca
ndidates.takeUpgradeCandidatesFor(definition->descriptor()); |
57 for (CustomElementUpgradeCandidateMap::ElementSet::const_iterator it = upgra
deCandidates.begin(); it != upgradeCandidates.end(); ++it) | 57 for (CustomElementUpgradeCandidateMap::ElementSet::const_iterator it = upgra
deCandidates.begin(); it != upgradeCandidates.end(); ++it) |
58 didResolveElement(definition, *it); | 58 didResolveElement(definition, *it); |
59 } | 59 } |
60 | 60 |
61 PassRefPtr<Element> CustomElementRegistrationContext::createCustomTagElement(Doc
ument* document, const QualifiedName& tagName, CreationMode mode) | 61 PassRefPtr<Element> CustomElementRegistrationContext::createCustomTagElement(Doc
ument& document, const QualifiedName& tagName, CreationMode mode) |
62 { | 62 { |
63 ASSERT(CustomElement::isValidName(tagName.localName())); | 63 ASSERT(CustomElement::isValidName(tagName.localName())); |
64 | 64 |
65 if (!document) | |
66 return 0; | |
67 | |
68 RefPtr<Element> element; | 65 RefPtr<Element> element; |
69 | 66 |
70 if (HTMLNames::xhtmlNamespaceURI == tagName.namespaceURI()) { | 67 if (HTMLNames::xhtmlNamespaceURI == tagName.namespaceURI()) { |
71 element = HTMLElement::create(tagName, document); | 68 element = HTMLElement::create(tagName, document); |
72 } else if (SVGNames::svgNamespaceURI == tagName.namespaceURI()) { | 69 } else if (SVGNames::svgNamespaceURI == tagName.namespaceURI()) { |
73 element = SVGUnknownElement::create(tagName, document); | 70 element = SVGUnknownElement::create(tagName, document); |
74 } else { | 71 } else { |
75 // XML elements are not custom elements, so return early. | 72 // XML elements are not custom elements, so return early. |
76 return Element::create(tagName, document); | 73 return Element::create(tagName, &document); |
77 } | 74 } |
78 | 75 |
79 element->setCustomElementState(mode == CreatedByParser ? Element::WaitingFor
Parser : Element::WaitingForUpgrade); | 76 element->setCustomElementState(mode == CreatedByParser ? Element::WaitingFor
Parser : Element::WaitingForUpgrade); |
80 resolve(element.get(), nullAtom); | 77 resolve(element.get(), nullAtom); |
81 return element.release(); | 78 return element.release(); |
82 } | 79 } |
83 | 80 |
84 void CustomElementRegistrationContext::didGiveTypeExtension(Element* element, co
nst AtomicString& type) | 81 void CustomElementRegistrationContext::didGiveTypeExtension(Element* element, co
nst AtomicString& type) |
85 { | 82 { |
86 resolve(element, type); | 83 resolve(element, type); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 // Custom tags take precedence over type extensions | 141 // Custom tags take precedence over type extensions |
145 ASSERT(!CustomElement::isValidName(element->localName())); | 142 ASSERT(!CustomElement::isValidName(element->localName())); |
146 | 143 |
147 element->setCustomElementState(mode == CreatedByParser ? Element::WaitingFor
Parser : Element::WaitingForUpgrade); | 144 element->setCustomElementState(mode == CreatedByParser ? Element::WaitingFor
Parser : Element::WaitingForUpgrade); |
148 | 145 |
149 if (CustomElementRegistrationContext* context = element->document().registra
tionContext()) | 146 if (CustomElementRegistrationContext* context = element->document().registra
tionContext()) |
150 context->didGiveTypeExtension(element, type); | 147 context->didGiveTypeExtension(element, type); |
151 } | 148 } |
152 | 149 |
153 } // namespace WebCore | 150 } // namespace WebCore |
OLD | NEW |