diff options
Diffstat (limited to 'Source/WebCore/html/HTMLDetailsElement.cpp')
-rw-r--r-- | Source/WebCore/html/HTMLDetailsElement.cpp | 35 |
1 files changed, 12 insertions, 23 deletions
diff --git a/Source/WebCore/html/HTMLDetailsElement.cpp b/Source/WebCore/html/HTMLDetailsElement.cpp index fad9af804..ddec73876 100644 --- a/Source/WebCore/html/HTMLDetailsElement.cpp +++ b/Source/WebCore/html/HTMLDetailsElement.cpp @@ -23,12 +23,12 @@ #if ENABLE(DETAILS) +#include "HTMLContentElement.h" #include "HTMLNames.h" #include "HTMLSummaryElement.h" #include "LocalizedStrings.h" #include "MouseEvent.h" #include "RenderDetails.h" -#include "ShadowContentElement.h" #include "ShadowRoot.h" #include "Text.h" @@ -36,17 +36,21 @@ namespace WebCore { using namespace HTMLNames; -class DetailsContentElement : public ShadowContentElement { +static const AtomicString& summaryQuerySelector() +{ + DEFINE_STATIC_LOCAL(AtomicString, selector, ("summary:first-of-type")); + return selector; +}; + +class DetailsContentElement : public HTMLContentElement { public: static PassRefPtr<DetailsContentElement> create(Document*); private: DetailsContentElement(Document* document) - : ShadowContentElement(HTMLNames::divTag, document) + : HTMLContentElement(HTMLNames::divTag, document) { } - - virtual bool shouldInclude(Node*); }; PassRefPtr<DetailsContentElement> DetailsContentElement::create(Document* document) @@ -54,24 +58,16 @@ PassRefPtr<DetailsContentElement> DetailsContentElement::create(Document* docume return adoptRef(new DetailsContentElement(document)); } -bool DetailsContentElement::shouldInclude(Node* node) -{ - HTMLDetailsElement* details = static_cast<HTMLDetailsElement*>(shadowAncestorNode()); - return details->mainSummary() != node; -} - - -class DetailsSummaryElement : public ShadowContentElement { +class DetailsSummaryElement : public HTMLContentElement { public: static PassRefPtr<DetailsSummaryElement> create(Document*); private: DetailsSummaryElement(Document* document) - : ShadowContentElement(HTMLNames::divTag, document) + : HTMLContentElement(HTMLNames::divTag, document) { + setSelect(summaryQuerySelector()); } - - virtual bool shouldInclude(Node*); }; PassRefPtr<DetailsSummaryElement> DetailsSummaryElement::create(Document* document) @@ -79,13 +75,6 @@ PassRefPtr<DetailsSummaryElement> DetailsSummaryElement::create(Document* docume return adoptRef(new DetailsSummaryElement(document)); } -bool DetailsSummaryElement::shouldInclude(Node* node) -{ - HTMLDetailsElement* details = static_cast<HTMLDetailsElement*>(shadowAncestorNode()); - return details->mainSummary() == node; -} - - PassRefPtr<HTMLDetailsElement> HTMLDetailsElement::create(const QualifiedName& tagName, Document* document) { RefPtr<HTMLDetailsElement> result = adoptRef(new HTMLDetailsElement(tagName, document)); |