From kde-commits Fri Oct 29 01:45:42 2010 From: Dawit Alemayehu Date: Fri, 29 Oct 2010 01:45:42 +0000 To: kde-commits Subject: KDE/kdelibs/khtml Message-Id: <20101029014542.C505DAC899 () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=128831679713407 SVN commit 1190826 by adawit: Updated the implementation of the KParts::HtmlExtension M +36 -13 khtml_ext.cpp M +5 -2 khtml_ext.h --- trunk/KDE/kdelibs/khtml/khtml_ext.cpp #1190825:1190826 @@ -1099,11 +1099,22 @@ { } -KHTMLPart* KHTMLHtmlExtension::part() const +KUrl KHTMLHtmlExtension::baseUrl() const { - return static_cast(parent()); + return part()->baseURL(); } +bool KHTMLHtmlExtension::hasSelection() const +{ + return KParts::HtmlExtension::hasSelection(); +} + +KParts::SelectorInterface::QueryMethods KHTMLHtmlExtension::supportedQueryMethods() const +{ + // TODO: Add support for selected content (SelectedContent) + return KParts::SelectorInterface::EntireContent; +} + static KParts::SelectorInterface::Element convertDomElement(const DOM::ElementImpl* domElem) { KParts::SelectorInterface::Element elem; @@ -1121,48 +1132,60 @@ KParts::SelectorInterface::Element KHTMLHtmlExtension::querySelector(const QString& query, KParts::SelectorInterface::QueryMethod method) const { + KParts::SelectorInterface::Element element; + + if (!(supportedQueryMethods() & method)) + return element; + switch (method) { case KParts::SelectorInterface::EntireContent: { int ec = 0; // exceptions are ignored - WTF::RefPtr element = part()->document().handle()->querySelector(query, ec); - return convertDomElement(element.get()); + WTF::RefPtr domElem = part()->document().handle()->querySelector(query, ec); + element = convertDomElement(domElem.get()); + break; } case KParts::SelectorInterface::SelectedContent: - // TODO: Implement support for querying only the selected portion of the content... + // TODO: Implement support for selected content... default: break; } - return KParts::SelectorInterface::Element(); + + return element; } QList KHTMLHtmlExtension::querySelectorAll(const QString& query, KParts::SelectorInterface::QueryMethod method) const { - QList result; + QList elements; + + if (!(supportedQueryMethods() & method)) + return elements; + switch (method) { case KParts::SelectorInterface::EntireContent: { int ec = 0; // exceptions are ignored WTF::RefPtr nodes = part()->document().handle()->querySelectorAll(query, ec); const unsigned long len = nodes->length(); - result.reserve(len); + elements.reserve(len); for (unsigned long i = 0; i < len; ++i) { DOM::NodeImpl* node = nodes->item(i); if (node->isElementNode()) { // should be always true - result.append(convertDomElement(static_cast(node))); + elements.append(convertDomElement(static_cast(node))); } } break; } case KParts::SelectorInterface::SelectedContent: - // TODO: Implement support for querying only the selected portion of the content... + // TODO: Implement support for selected content... default: break; } - return result; + + return elements; } -KUrl KHTMLHtmlExtension::baseUrl() const +KHTMLPart* KHTMLHtmlExtension::part() const { - return part()->baseURL(); + return static_cast(parent()); } #include "khtml_ext.moc" --- trunk/KDE/kdelibs/khtml/khtml_ext.h #1190825:1190826 @@ -204,11 +204,14 @@ public: KHTMLHtmlExtension(KHTMLPart* part); + // HtmlExtension virtual KUrl baseUrl() const; + virtual bool hasSelection() const; // SelectorInterface - virtual Element querySelector(const QString& query, KParts::SelectorInterface::QueryMethod method) const; - virtual QList querySelectorAll(const QString& query, KParts::SelectorInterface::QueryMethod method) const; + virtual QueryMethods supportedQueryMethods() const; + virtual Element querySelector(const QString& query, QueryMethod method) const; + virtual QList querySelectorAll(const QString& query, QueryMethod method) const; KHTMLPart* part() const; };