| 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 are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * 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 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 | 75 |
| 76 ScriptValue prototypeScriptValue; | 76 ScriptValue prototypeScriptValue; |
| 77 if (m_options->get("prototype", prototypeScriptValue) && !prototypeScriptVal
ue.isNull()) { | 77 if (m_options->get("prototype", prototypeScriptValue) && !prototypeScriptVal
ue.isNull()) { |
| 78 m_prototype = prototypeScriptValue.v8Value().As<v8::Object>(); | 78 m_prototype = prototypeScriptValue.v8Value().As<v8::Object>(); |
| 79 if (m_prototype.IsEmpty()) { | 79 if (m_prototype.IsEmpty()) { |
| 80 CustomElementException::throwException(CustomElementException::Proto
typeNotAnObject, type, es); | 80 CustomElementException::throwException(CustomElementException::Proto
typeNotAnObject, type, es); |
| 81 return false; | 81 return false; |
| 82 } | 82 } |
| 83 } else { | 83 } else { |
| 84 m_prototype = v8::Object::New(); | 84 m_prototype = v8::Object::New(); |
| 85 v8::Local<v8::Object> basePrototype = V8PerContextData::from(m_context)-
>prototypeForType(&V8HTMLElement::info); | 85 v8::Local<v8::Object> basePrototype = V8PerContextData::from(m_context)-
>prototypeForType(&V8HTMLElement::wrapperTypeInfo); |
| 86 if (!basePrototype.IsEmpty()) | 86 if (!basePrototype.IsEmpty()) |
| 87 m_prototype->SetPrototype(basePrototype); | 87 m_prototype->SetPrototype(basePrototype); |
| 88 } | 88 } |
| 89 | 89 |
| 90 String extends; | 90 String extends; |
| 91 bool extendsProvidedAndNonNull = m_options->get("extends", extends); | 91 bool extendsProvidedAndNonNull = m_options->get("extends", extends); |
| 92 | 92 |
| 93 if (!V8PerContextData::from(m_context)) { | 93 if (!V8PerContextData::from(m_context)) { |
| 94 // FIXME: This should generate an InvalidContext exception at a later po
int. | 94 // FIXME: This should generate an InvalidContext exception at a later po
int. |
| 95 CustomElementException::throwException(CustomElementException::ContextDe
stroyedCheckingPrototype, type, es); | 95 CustomElementException::throwException(CustomElementException::ContextDe
stroyedCheckingPrototype, type, es); |
| 96 return false; | 96 return false; |
| 97 } | 97 } |
| 98 | 98 |
| 99 AtomicString namespaceURI = HTMLNames::xhtmlNamespaceURI; | 99 AtomicString namespaceURI = HTMLNames::xhtmlNamespaceURI; |
| 100 if (hasValidPrototypeChainFor(&V8SVGElement::info)) | 100 if (hasValidPrototypeChainFor(&V8SVGElement::wrapperTypeInfo)) |
| 101 namespaceURI = SVGNames::svgNamespaceURI; | 101 namespaceURI = SVGNames::svgNamespaceURI; |
| 102 | 102 |
| 103 AtomicString localName; | 103 AtomicString localName; |
| 104 | 104 |
| 105 if (extendsProvidedAndNonNull) { | 105 if (extendsProvidedAndNonNull) { |
| 106 localName = extends.lower(); | 106 localName = extends.lower(); |
| 107 | 107 |
| 108 if (!Document::isValidName(localName)) { | 108 if (!Document::isValidName(localName)) { |
| 109 CustomElementException::throwException(CustomElementException::Exten
dsIsInvalidName, type, es); | 109 CustomElementException::throwException(CustomElementException::Exten
dsIsInvalidName, type, es); |
| 110 return false; | 110 return false; |
| 111 } | 111 } |
| 112 if (CustomElement::isValidName(localName)) { | 112 if (CustomElement::isValidName(localName)) { |
| 113 CustomElementException::throwException(CustomElementException::Exten
dsIsCustomElementName, type, es); | 113 CustomElementException::throwException(CustomElementException::Exten
dsIsCustomElementName, type, es); |
| 114 return false; | 114 return false; |
| 115 } | 115 } |
| 116 } else { | 116 } else { |
| 117 localName = type; | 117 localName = type; |
| 118 } | 118 } |
| 119 | 119 |
| 120 if (!extendsProvidedAndNonNull) | 120 if (!extendsProvidedAndNonNull) |
| 121 m_wrapperType = &V8HTMLElement::info; | 121 m_wrapperType = &V8HTMLElement::wrapperTypeInfo; |
| 122 else if (namespaceURI == HTMLNames::xhtmlNamespaceURI) | 122 else if (namespaceURI == HTMLNames::xhtmlNamespaceURI) |
| 123 m_wrapperType = findWrapperTypeForHTMLTagName(localName); | 123 m_wrapperType = findWrapperTypeForHTMLTagName(localName); |
| 124 else | 124 else |
| 125 m_wrapperType = findWrapperTypeForSVGTagName(localName); | 125 m_wrapperType = findWrapperTypeForSVGTagName(localName); |
| 126 | 126 |
| 127 ASSERT(m_wrapperType); | 127 ASSERT(m_wrapperType); |
| 128 tagName = QualifiedName(nullAtom, localName, namespaceURI); | 128 tagName = QualifiedName(nullAtom, localName, namespaceURI); |
| 129 return m_wrapperType; | 129 return m_wrapperType; |
| 130 } | 130 } |
| 131 | 131 |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 273 | 273 |
| 274 ExceptionState es(args.GetIsolate()); | 274 ExceptionState es(args.GetIsolate()); |
| 275 CustomElementCallbackDispatcher::CallbackDeliveryScope deliveryScope; | 275 CustomElementCallbackDispatcher::CallbackDeliveryScope deliveryScope; |
| 276 RefPtr<Element> element = document->createElementNS(namespaceURI, tagName, m
aybeType->IsNull() ? nullAtom : type, es); | 276 RefPtr<Element> element = document->createElementNS(namespaceURI, tagName, m
aybeType->IsNull() ? nullAtom : type, es); |
| 277 if (es.throwIfNeeded()) | 277 if (es.throwIfNeeded()) |
| 278 return; | 278 return; |
| 279 v8SetReturnValueFast(args, element.release(), document); | 279 v8SetReturnValueFast(args, element.release(), document); |
| 280 } | 280 } |
| 281 | 281 |
| 282 } // namespace WebCore | 282 } // namespace WebCore |
| OLD | NEW |