| 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 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 { | 90 { |
| 91 RefPtr<CustomElementDefinition> definition(passDefinition); | 91 RefPtr<CustomElementDefinition> definition(passDefinition); |
| 92 | 92 |
| 93 switch (element->customElementState()) { | 93 switch (element->customElementState()) { |
| 94 case Element::NotCustomElement: | 94 case Element::NotCustomElement: |
| 95 case Element::Upgraded: | 95 case Element::Upgraded: |
| 96 ASSERT_NOT_REACHED(); | 96 ASSERT_NOT_REACHED(); |
| 97 break; | 97 break; |
| 98 | 98 |
| 99 case Element::WaitingForUpgrade: | 99 case Element::WaitingForUpgrade: |
| 100 definitions().add(element, definition); | 100 element->setCustomElementDefinition(definition); |
| 101 CustomElementScheduler::scheduleCreatedCallback(definition->callbacks(),
element); | 101 CustomElementScheduler::scheduleCreatedCallback(definition->callbacks(),
element); |
| 102 break; | 102 break; |
| 103 } | 103 } |
| 104 } | 104 } |
| 105 | 105 |
| 106 CustomElementDefinition* CustomElement::definitionFor(Element* element) | |
| 107 { | |
| 108 CustomElementDefinition* definition = definitions().get(element); | |
| 109 ASSERT(definition); | |
| 110 return definition; | |
| 111 } | |
| 112 | |
| 113 void CustomElement::attributeDidChange(Element* element, const AtomicString& nam
e, const AtomicString& oldValue, const AtomicString& newValue) | 106 void CustomElement::attributeDidChange(Element* element, const AtomicString& nam
e, const AtomicString& oldValue, const AtomicString& newValue) |
| 114 { | 107 { |
| 115 ASSERT(element->customElementState() == Element::Upgraded); | 108 ASSERT(element->customElementState() == Element::Upgraded); |
| 116 CustomElementScheduler::scheduleAttributeChangedCallback(definitionFor(eleme
nt)->callbacks(), element, name, oldValue, newValue); | 109 CustomElementScheduler::scheduleAttributeChangedCallback(element->customElem
entDefinition()->callbacks(), element, name, oldValue, newValue); |
| 117 } | 110 } |
| 118 | 111 |
| 119 void CustomElement::didEnterDocument(Element* element, const Document& document) | 112 void CustomElement::didEnterDocument(Element* element, const Document& document) |
| 120 { | 113 { |
| 121 ASSERT(element->customElementState() == Element::Upgraded); | 114 ASSERT(element->customElementState() == Element::Upgraded); |
| 122 if (!document.domWindow()) | 115 if (!document.domWindow()) |
| 123 return; | 116 return; |
| 124 CustomElementScheduler::scheduleAttachedCallback(definitionFor(element)->cal
lbacks(), element); | 117 CustomElementScheduler::scheduleAttachedCallback(element->customElementDefin
ition()->callbacks(), element); |
| 125 } | 118 } |
| 126 | 119 |
| 127 void CustomElement::didLeaveDocument(Element* element, const Document& document) | 120 void CustomElement::didLeaveDocument(Element* element, const Document& document) |
| 128 { | 121 { |
| 129 ASSERT(element->customElementState() == Element::Upgraded); | 122 ASSERT(element->customElementState() == Element::Upgraded); |
| 130 if (!document.domWindow()) | 123 if (!document.domWindow()) |
| 131 return; | 124 return; |
| 132 CustomElementScheduler::scheduleDetachedCallback(definitionFor(element)->cal
lbacks(), element); | 125 CustomElementScheduler::scheduleDetachedCallback(element->customElementDefin
ition()->callbacks(), element); |
| 133 } | 126 } |
| 134 | 127 |
| 135 void CustomElement::wasDestroyed(Element* element) | 128 void CustomElement::wasDestroyed(Element* element) |
| 136 { | 129 { |
| 137 switch (element->customElementState()) { | 130 switch (element->customElementState()) { |
| 138 case Element::NotCustomElement: | 131 case Element::NotCustomElement: |
| 139 ASSERT_NOT_REACHED(); | 132 ASSERT_NOT_REACHED(); |
| 140 break; | 133 break; |
| 141 | 134 |
| 142 case Element::WaitingForUpgrade: | 135 case Element::WaitingForUpgrade: |
| 143 case Element::Upgraded: | 136 case Element::Upgraded: |
| 144 definitions().remove(element); | |
| 145 CustomElementObserver::notifyElementWasDestroyed(element); | 137 CustomElementObserver::notifyElementWasDestroyed(element); |
| 146 break; | 138 break; |
| 147 } | 139 } |
| 148 } | 140 } |
| 149 | 141 |
| 150 void CustomElement::DefinitionMap::add(Element* element, PassRefPtr<CustomElemen
tDefinition> definition) | |
| 151 { | |
| 152 ASSERT(definition.get()); | |
| 153 DefinitionMap::ElementDefinitionHashMap::AddResult result = m_definitions.ad
d(element, definition); | |
| 154 ASSERT_UNUSED(result, result.isNewEntry); | |
| 155 } | |
| 156 | |
| 157 CustomElement::DefinitionMap& CustomElement::definitions() | |
| 158 { | |
| 159 DEFINE_STATIC_LOCAL(DefinitionMap, map, ()); | |
| 160 return map; | |
| 161 } | |
| 162 | |
| 163 } // namespace WebCore | 142 } // namespace WebCore |
| OLD | NEW |