| Index: Source/core/html/HTMLObjectElement.cpp
|
| diff --git a/Source/core/html/HTMLObjectElement.cpp b/Source/core/html/HTMLObjectElement.cpp
|
| index b9ef1de17ddcff1aee9fad3cb3cfac763d77124f..e1c42042a6404aa9b67b94710405cac0315b84d2 100644
|
| --- a/Source/core/html/HTMLObjectElement.cpp
|
| +++ b/Source/core/html/HTMLObjectElement.cpp
|
| @@ -51,7 +51,6 @@ using namespace HTMLNames;
|
|
|
| inline HTMLObjectElement::HTMLObjectElement(Document& document, HTMLFormElement* form, bool createdByParser)
|
| : HTMLPlugInElement(objectTag, document, createdByParser, ShouldNotPreferPlugInsForImages)
|
| - , m_docNamedItem(true)
|
| , m_useFallbackContent(false)
|
| {
|
| setForm(form ? form : findFormAncestor());
|
| @@ -337,7 +336,6 @@ void HTMLObjectElement::removedFrom(ContainerNode* insertionPoint)
|
|
|
| void HTMLObjectElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
|
| {
|
| - updateDocNamedItem();
|
| if (inDocument() && !useFallbackContent()) {
|
| setNeedsWidgetUpdate(true);
|
| setNeedsStyleRecalc();
|
| @@ -393,64 +391,18 @@ void HTMLObjectElement::renderFallbackContent()
|
| reattachFallbackContent();
|
| }
|
|
|
| -// FIXME: This should be removed, all callers are almost certainly wrong.
|
| -static bool isRecognizedTagName(const QualifiedName& tagName)
|
| +bool HTMLObjectElement::isExposed() const
|
| {
|
| - DEFINE_STATIC_LOCAL(HashSet<StringImpl*>, tagList, ());
|
| - if (tagList.isEmpty()) {
|
| - const QualifiedName* const* tags = HTMLNames::getHTMLTags();
|
| - for (size_t i = 0; i < HTMLNames::HTMLTagsCount; i++) {
|
| - if (*tags[i] == bgsoundTag
|
| - || *tags[i] == commandTag
|
| - || *tags[i] == detailsTag
|
| - || *tags[i] == figcaptionTag
|
| - || *tags[i] == figureTag
|
| - || *tags[i] == summaryTag
|
| - || *tags[i] == trackTag) {
|
| - // Even though we have atoms for these tags, we don't want to
|
| - // treat them as "recognized tags" for the purpose of parsing
|
| - // because that changes how we parse documents.
|
| - continue;
|
| - }
|
| - tagList.add(tags[i]->localName().impl());
|
| - }
|
| - }
|
| - return tagList.contains(tagName.localName().impl());
|
| -}
|
| -
|
| -void HTMLObjectElement::updateDocNamedItem()
|
| -{
|
| - // The rule is "<object> elements with no children other than
|
| - // <param> elements, unknown elements and whitespace can be
|
| - // found by name in a document, and other <object> elements cannot."
|
| - bool wasNamedItem = m_docNamedItem;
|
| - bool isNamedItem = true;
|
| - Node* child = firstChild();
|
| - while (child && isNamedItem) {
|
| - if (child->isElementNode()) {
|
| - Element* element = toElement(child);
|
| - // FIXME: Use of isRecognizedTagName is almost certainly wrong here.
|
| - if (isRecognizedTagName(element->tagQName()) && !element->hasTagName(paramTag))
|
| - isNamedItem = false;
|
| - } else if (child->isTextNode()) {
|
| - if (!toText(child)->containsOnlyWhitespace())
|
| - isNamedItem = false;
|
| - } else {
|
| - isNamedItem = false;
|
| - }
|
| - child = child->nextSibling();
|
| + // http://www.whatwg.org/specs/web-apps/current-work/#exposed
|
| + for (Node* ancestor = parentNode(); ancestor; ancestor = ancestor->parentNode()) {
|
| + if (ancestor->hasTagName(objectTag) && toHTMLObjectElement(ancestor)->isExposed())
|
| + return false;
|
| }
|
| - if (isNamedItem != wasNamedItem && document().isHTMLDocument()) {
|
| - HTMLDocument& document = toHTMLDocument(this->document());
|
| - if (isNamedItem) {
|
| - document.addNamedItem(getNameAttribute());
|
| - document.addExtraNamedItem(getIdAttribute());
|
| - } else {
|
| - document.removeNamedItem(getNameAttribute());
|
| - document.removeExtraNamedItem(getIdAttribute());
|
| - }
|
| + for (Node* node = firstChild(); node; node = NodeTraversal::next(*node, this)) {
|
| + if (node->hasTagName(objectTag) || node->hasTagName(embedTag))
|
| + return false;
|
| }
|
| - m_docNamedItem = isNamedItem;
|
| + return true;
|
| }
|
|
|
| bool HTMLObjectElement::containsJavaApplet() const
|
|
|