summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp')
-rw-r--r--src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp2025
1 files changed, 0 insertions, 2025 deletions
diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp
deleted file mode 100644
index 69146a2..0000000
--- a/src/3rdparty/webkit/WebKit/qt/Api/qwebelement.cpp
+++ /dev/null
@@ -1,2025 +0,0 @@
-/*
- Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies)
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#include "config.h"
-#include "qwebelement.h"
-
-#include "CSSComputedStyleDeclaration.h"
-#include "CSSMutableStyleDeclaration.h"
-#include "CSSParser.h"
-#include "CSSRule.h"
-#include "CSSRuleList.h"
-#include "CSSStyleRule.h"
-#include "CString.h"
-#include "Document.h"
-#include "DocumentFragment.h"
-#include "FrameView.h"
-#include "GraphicsContext.h"
-#include "HTMLElement.h"
-#include "JSGlobalObject.h"
-#include "JSHTMLElement.h"
-#include "JSObject.h"
-#include "NodeList.h"
-#include "PropertyNameArray.h"
-#include "RenderImage.h"
-#include "StaticNodeList.h"
-#include "qt_runtime.h"
-#include "qwebframe.h"
-#include "qwebframe_p.h"
-#include "runtime_root.h"
-#include <parser/SourceCode.h>
-#include <wtf/Vector.h>
-
-#include <QPainter>
-
-using namespace WebCore;
-
-class QWebElementPrivate {
-public:
-};
-
-/*!
- \class QWebElement
- \since 4.6
- \brief The QWebElement class provides convenient access to DOM elements in
- a QWebFrame.
- \inmodule QtWebKit
-
- A QWebElement object allows easy access to the document model, represented
- by a tree-like structure of DOM elements. The root of the tree is called
- the document element and can be accessed using
- QWebFrame::documentElement().
-
- Specific elements can be accessed using findAll() and findFirst(). These
- elements are identified using CSS selectors. The code snippet below
- demonstrates the use of findAll().
-
- \snippet webkitsnippets/webelement/main.cpp FindAll
-
- The first list contains all \c span elements in the document. The second
- list contains \c span elements that are children of \c p, classified with
- \c intro.
-
- Using findFirst() is more efficient than calling findAll(), and extracting
- the first element only in the list returned.
-
- Alternatively you can traverse the document manually using firstChild() and
- nextSibling():
-
- \snippet webkitsnippets/webelement/main.cpp Traversing with QWebElement
-
- Individual elements can be inspected or changed using methods such as attribute()
- or setAttribute(). For examle, to capture the user's input in a text field for later
- use (auto-completion), a browser could do something like this:
-
- \snippet webkitsnippets/webelement/main.cpp autocomplete1
-
- When the same page is later revisited, the browser can fill in the text field automatically
- by modifying the value attribute of the input element:
-
- \snippet webkitsnippets/webelement/main.cpp autocomplete2
-
- Another use case is to emulate a click event on an element. The following
- code snippet demonstrates how to call the JavaScript DOM method click() of
- a submit button:
-
- \snippet webkitsnippets/webelement/main.cpp Calling a DOM element method
-
- The underlying content of QWebElement is explicitly shared. Creating a copy
- of a QWebElement does not create a copy of the content. Instead, both
- instances point to the same element.
-
- The contents of child elements can be converted to plain text with
- toPlainText(); to XHTML using toInnerXml(). To include the element's tag in
- the output, use toOuterXml().
-
- It is possible to replace the contents of child elements using
- setPlainText() and setInnerXml(). To replace the element itself and its
- contents, use setOuterXml().
-
- \section1 Examples
-
- The \l{DOM Traversal Example} shows one way to traverse documents in a running
- example.
-
- The \l{Simple Selector Example} can be used to experiment with the searching
- features of this class and provides sample code you can start working with.
-*/
-
-/*!
- Constructs a null web element.
-*/
-QWebElement::QWebElement()
- : d(0)
- , m_element(0)
-{
-}
-
-/*!
- \internal
-*/
-QWebElement::QWebElement(WebCore::Element* domElement)
- : d(0)
- , m_element(domElement)
-{
- if (m_element)
- m_element->ref();
-}
-
-/*!
- \internal
-*/
-QWebElement::QWebElement(WebCore::Node* node)
- : d(0)
- , m_element(0)
-{
- if (node && node->isHTMLElement()) {
- m_element = static_cast<HTMLElement*>(node);
- m_element->ref();
- }
-}
-
-/*!
- Constructs a copy of \a other.
-*/
-QWebElement::QWebElement(const QWebElement &other)
- : d(0)
- , m_element(other.m_element)
-{
- if (m_element)
- m_element->ref();
-}
-
-/*!
- Assigns \a other to this element and returns a reference to this element.
-*/
-QWebElement &QWebElement::operator=(const QWebElement &other)
-{
- // ### handle "d" assignment
- if (this != &other) {
- Element *otherElement = other.m_element;
- if (otherElement)
- otherElement->ref();
- if (m_element)
- m_element->deref();
- m_element = otherElement;
- }
- return *this;
-}
-
-/*!
- Destroys the element. However, the underlying DOM element is not destroyed.
-*/
-QWebElement::~QWebElement()
-{
- delete d;
- if (m_element)
- m_element->deref();
-}
-
-bool QWebElement::operator==(const QWebElement& o) const
-{
- return m_element == o.m_element;
-}
-
-bool QWebElement::operator!=(const QWebElement& o) const
-{
- return m_element != o.m_element;
-}
-
-/*!
- Returns true if the element is a null element; otherwise returns false.
-*/
-bool QWebElement::isNull() const
-{
- return !m_element;
-}
-
-/*!
- Returns a new list of child elements matching the given CSS selector
- \a selectorQuery. If there are no matching elements, an empty list is
- returned.
-
- \l{Standard CSS2 selector} syntax is used for the query.
-
- \note This search is performed recursively.
-
- \sa findFirst()
-*/
-QWebElementCollection QWebElement::findAll(const QString &selectorQuery) const
-{
- return QWebElementCollection(*this, selectorQuery);
-}
-
-/*!
- Returns the first child element that matches the given CSS selector
- \a selectorQuery.
-
- \l{Standard CSS2 selector} syntax is used for the query.
-
- \note This search is performed recursively.
-
- \sa findAll()
-*/
-QWebElement QWebElement::findFirst(const QString &selectorQuery) const
-{
- if (!m_element)
- return QWebElement();
- ExceptionCode exception = 0; // ###
- return QWebElement(m_element->querySelector(selectorQuery, exception).get());
-}
-
-/*!
- Replaces the existing content of this element with \a text.
-
- This is equivalent to setting the HTML innerText property.
-
- \sa toPlainText()
-*/
-void QWebElement::setPlainText(const QString &text)
-{
- if (!m_element || !m_element->isHTMLElement())
- return;
- ExceptionCode exception = 0;
- static_cast<HTMLElement*>(m_element)->setInnerText(text, exception);
-}
-
-/*!
- Returns the text between the start and the end tag of this
- element.
-
- This is equivalent to reading the HTML innerText property.
-
- \sa setPlainText()
-*/
-QString QWebElement::toPlainText() const
-{
- if (!m_element || !m_element->isHTMLElement())
- return QString();
- return static_cast<HTMLElement*>(m_element)->innerText();
-}
-
-/*!
- Replaces the contents of this element as well as its own tag with
- \a markup. The string may contain HTML or XML tags, which is parsed and
- formatted before insertion into the document.
-
- \note This is currently only implemented for (X)HTML elements.
-
- \sa toOuterXml(), toInnerXml(), setInnerXml()
-*/
-void QWebElement::setOuterXml(const QString &markup)
-{
- if (!m_element || !m_element->isHTMLElement())
- return;
-
- ExceptionCode exception = 0;
-
- static_cast<HTMLElement*>(m_element)->setOuterHTML(markup, exception);
-}
-
-/*!
- Returns this element converted to XML, including the start and the end
- tags as well as its attributes.
-
- \note This is currently implemented for (X)HTML elements only.
-
- \sa setOuterXml(), setInnerXml(), toInnerXml()
-*/
-QString QWebElement::toOuterXml() const
-{
- if (!m_element || !m_element->isHTMLElement())
- return QString();
-
- return static_cast<HTMLElement*>(m_element)->outerHTML();
-}
-
-/*!
- Replaces the contents of this element with \a markup. The string may
- contain HTML or XML tags, which is parsed and formatted before insertion
- into the document.
-
- \note This is currently implemented for (X)HTML elements only.
-
- \sa toInnerXml(), toOuterXml(), setOuterXml()
-*/
-void QWebElement::setInnerXml(const QString &markup)
-{
- if (!m_element || !m_element->isHTMLElement())
- return;
-
- ExceptionCode exception = 0;
-
- static_cast<HTMLElement*>(m_element)->setInnerHTML(markup, exception);
-}
-
-/*!
- Returns the XML content between the element's start and end tags.
-
- \note This is currently implemented for (X)HTML elements only.
-
- \sa setInnerXml(), setOuterXml(), toOuterXml()
-*/
-QString QWebElement::toInnerXml() const
-{
- if (!m_element || !m_element->isHTMLElement())
- return QString();
-
- return static_cast<HTMLElement*>(m_element)->innerHTML();
-}
-
-/*!
- Adds an attribute with the given \a name and \a value. If an attribute with
- the same name exists, its value is replaced by \a value.
-
- \sa attribute(), attributeNS(), setAttributeNS()
-*/
-void QWebElement::setAttribute(const QString &name, const QString &value)
-{
- if (!m_element)
- return;
- ExceptionCode exception = 0;
- m_element->setAttribute(name, value, exception);
-}
-
-/*!
- Adds an attribute with the given \a name in \a namespaceUri with \a value.
- If an attribute with the same name exists, its value is replaced by
- \a value.
-
- \sa attributeNS(), attribute(), setAttribute()
-*/
-void QWebElement::setAttributeNS(const QString &namespaceUri, const QString &name, const QString &value)
-{
- if (!m_element)
- return;
- WebCore::ExceptionCode exception = 0;
- m_element->setAttributeNS(namespaceUri, name, value, exception);
-}
-
-/*!
- Returns the attribute with the given \a name. If the attribute does not
- exist, \a defaultValue is returned.
-
- \sa setAttribute(), setAttributeNS(), attributeNS()
-*/
-QString QWebElement::attribute(const QString &name, const QString &defaultValue) const
-{
- if (!m_element)
- return QString();
- if (m_element->hasAttribute(name))
- return m_element->getAttribute(name);
- else
- return defaultValue;
-}
-
-/*!
- Returns the attribute with the given \a name in \a namespaceUri. If the
- attribute does not exist, \a defaultValue is returned.
-
- \sa setAttributeNS(), setAttribute(), attribute()
-*/
-QString QWebElement::attributeNS(const QString &namespaceUri, const QString &name, const QString &defaultValue) const
-{
- if (!m_element)
- return QString();
- if (m_element->hasAttributeNS(namespaceUri, name))
- return m_element->getAttributeNS(namespaceUri, name);
- else
- return defaultValue;
-}
-
-/*!
- Returns true if this element has an attribute with the given \a name;
- otherwise returns false.
-
- \sa attribute(), setAttribute()
-*/
-bool QWebElement::hasAttribute(const QString &name) const
-{
- if (!m_element)
- return false;
- return m_element->hasAttribute(name);
-}
-
-/*!
- Returns true if this element has an attribute with the given \a name, in
- \a namespaceUri; otherwise returns false.
-
- \sa attributeNS(), setAttributeNS()
-*/
-bool QWebElement::hasAttributeNS(const QString &namespaceUri, const QString &name) const
-{
- if (!m_element)
- return false;
- return m_element->hasAttributeNS(namespaceUri, name);
-}
-
-/*!
- Removes the attribute with the given \a name from this element.
-
- \sa attribute(), setAttribute(), hasAttribute()
-*/
-void QWebElement::removeAttribute(const QString &name)
-{
- if (!m_element)
- return;
- ExceptionCode exception = 0;
- m_element->removeAttribute(name, exception);
-}
-
-/*!
- Removes the attribute with the given \a name, in \a namespaceUri, from this
- element.
-
- \sa attributeNS(), setAttributeNS(), hasAttributeNS()
-*/
-void QWebElement::removeAttributeNS(const QString &namespaceUri, const QString &name)
-{
- if (!m_element)
- return;
- WebCore::ExceptionCode exception = 0;
- m_element->removeAttributeNS(namespaceUri, name, exception);
-}
-
-/*!
- Returns true if the element has any attributes defined; otherwise returns
- false;
-
- \sa attribute(), setAttribute()
-*/
-bool QWebElement::hasAttributes() const
-{
- if (!m_element)
- return false;
- return m_element->hasAttributes();
-}
-
-/*!
- Return the list of attributes for the namespace given as \a namespaceUri.
-
- \sa attribute(), setAttribute()
-*/
-QStringList QWebElement::attributeNames(const QString& namespaceUri) const
-{
- if (!m_element)
- return QStringList();
-
- QStringList attributeNameList;
- const NamedNodeMap* const attrs = m_element->attributes(/* read only = */ true);
- if (attrs) {
- const String namespaceUriString(namespaceUri); // convert QString -> String once
- const unsigned attrsCount = attrs->length();
- for (unsigned i = 0; i < attrsCount; ++i) {
- const Attribute* const attribute = attrs->attributeItem(i);
- if (namespaceUriString == attribute->namespaceURI())
- attributeNameList.append(attribute->localName());
- }
- }
- return attributeNameList;
-}
-
-/*!
- Returns true if the element has keyboard input focus; otherwise, returns false
-
- \sa setFocus()
-*/
-bool QWebElement::hasFocus() const
-{
- if (!m_element)
- return false;
- if (m_element->document())
- return m_element == m_element->document()->focusedNode();
- return false;
-}
-
-/*!
- Gives keyboard input focus to this element
-
- \sa hasFocus()
-*/
-void QWebElement::setFocus()
-{
- if (!m_element)
- return;
- if (m_element->document() && m_element->isFocusable())
- m_element->document()->setFocusedNode(m_element);
-}
-
-/*!
- Returns the geometry of this element, relative to its containing frame.
-
- \sa tagName()
-*/
-QRect QWebElement::geometry() const
-{
- if (!m_element)
- return QRect();
- return m_element->getRect();
-}
-
-/*!
- Returns the tag name of this element.
-
- \sa geometry()
-*/
-QString QWebElement::tagName() const
-{
- if (!m_element)
- return QString();
- return m_element->tagName();
-}
-
-/*!
- Returns the namespace prefix of the element. If the element has no\
- namespace prefix, empty string is returned.
-*/
-QString QWebElement::prefix() const
-{
- if (!m_element)
- return QString();
- return m_element->prefix();
-}
-
-/*!
- Returns the local name of the element. If the element does not use
- namespaces, an empty string is returned.
-*/
-QString QWebElement::localName() const
-{
- if (!m_element)
- return QString();
- return m_element->localName();
-}
-
-/*!
- Returns the namespace URI of this element. If the element has no namespace
- URI, an empty string is returned.
-*/
-QString QWebElement::namespaceUri() const
-{
- if (!m_element)
- return QString();
- return m_element->namespaceURI();
-}
-
-/*!
- Returns the parent element of this elemen. If this element is the root
- document element, a null element is returned.
-*/
-QWebElement QWebElement::parent() const
-{
- if (m_element)
- return QWebElement(m_element->parentElement());
- return QWebElement();
-}
-
-/*!
- Returns the element's first child.
-
- \sa lastChild(), previousSibling(), nextSibling()
-*/
-QWebElement QWebElement::firstChild() const
-{
- if (!m_element)
- return QWebElement();
- for (Node* child = m_element->firstChild(); child; child = child->nextSibling()) {
- if (!child->isElementNode())
- continue;
- Element* e = static_cast<Element*>(child);
- return QWebElement(e);
- }
- return QWebElement();
-}
-
-/*!
- Returns the element's last child.
-
- \sa firstChild(), previousSibling(), nextSibling()
-*/
-QWebElement QWebElement::lastChild() const
-{
- if (!m_element)
- return QWebElement();
- for (Node* child = m_element->lastChild(); child; child = child->previousSibling()) {
- if (!child->isElementNode())
- continue;
- Element* e = static_cast<Element*>(child);
- return QWebElement(e);
- }
- return QWebElement();
-}
-
-/*!
- Returns the element's next sibling.
-
- \sa firstChild(), previousSibling(), lastChild()
-*/
-QWebElement QWebElement::nextSibling() const
-{
- if (!m_element)
- return QWebElement();
- for (Node* sib = m_element->nextSibling(); sib; sib = sib->nextSibling()) {
- if (!sib->isElementNode())
- continue;
- Element* e = static_cast<Element*>(sib);
- return QWebElement(e);
- }
- return QWebElement();
-}
-
-/*!
- Returns the element's previous sibling.
-
- \sa firstChild(), nextSibling(), lastChild()
-*/
-QWebElement QWebElement::previousSibling() const
-{
- if (!m_element)
- return QWebElement();
- for (Node* sib = m_element->previousSibling(); sib; sib = sib->previousSibling()) {
- if (!sib->isElementNode())
- continue;
- Element* e = static_cast<Element*>(sib);
- return QWebElement(e);
- }
- return QWebElement();
-}
-
-/*!
- Returns the document which this element belongs to.
-*/
-QWebElement QWebElement::document() const
-{
- if (!m_element)
- return QWebElement();
- Document* document = m_element->document();
- if (!document)
- return QWebElement();
- return QWebElement(document->documentElement());
-}
-
-/*!
- Returns the web frame which this element is a part of. If the element is a
- null element, null is returned.
-*/
-QWebFrame *QWebElement::webFrame() const
-{
- if (!m_element)
- return 0;
-
- Document* document = m_element->document();
- if (!document)
- return 0;
-
- Frame* frame = document->frame();
- if (!frame)
- return 0;
- return QWebFramePrivate::kit(frame);
-}
-
-static bool setupScriptContext(WebCore::Element* element, JSC::JSValue& thisValue, ScriptState*& state, ScriptController*& scriptController)
-{
- if (!element)
- return false;
-
- Document* document = element->document();
- if (!document)
- return false;
-
- Frame* frame = document->frame();
- if (!frame)
- return false;
-
- scriptController = frame->script();
- if (!scriptController)
- return false;
-
- state = scriptController->globalObject(mainThreadNormalWorld())->globalExec();
- if (!state)
- return false;
-
- thisValue = toJS(state, element);
- if (!thisValue)
- return false;
-
- return true;
-}
-
-
-/*!
- Executes \a scriptSource with this element as \c this object.
-*/
-QVariant QWebElement::evaluateJavaScript(const QString& scriptSource)
-{
- if (scriptSource.isEmpty())
- return QVariant();
-
- ScriptState* state = 0;
- JSC::JSValue thisValue;
- ScriptController* scriptController = 0;
-
- if (!setupScriptContext(m_element, thisValue, state, scriptController))
- return QVariant();
-
- JSC::ScopeChain& scopeChain = state->dynamicGlobalObject()->globalScopeChain();
- JSC::UString script((const UChar*)scriptSource.data(), scriptSource.length());
- JSC::Completion completion = JSC::evaluate(state, scopeChain, JSC::makeSource(script), thisValue);
- if ((completion.complType() != JSC::ReturnValue) && (completion.complType() != JSC::Normal))
- return QVariant();
-
- JSC::JSValue result = completion.value();
- if (!result)
- return QVariant();
-
- int distance = 0;
- return JSC::Bindings::convertValueToQVariant(state, result, QMetaType::Void, &distance);
-}
-
-/*!
- \enum QWebElement::StyleResolveStrategy
-
- This enum describes how QWebElement's styleProperty resolves the given
- property name.
-
- \value InlineStyle Return the property value as it is defined in
- the element, without respecting style inheritance and other CSS
- rules.
- \value CascadedStyle The property's value is determined using the
- inheritance and importance rules defined in the document's
- stylesheet.
- \value ComputedStyle The property's value is the absolute value
- of the style property resolved from the environment.
-*/
-
-/*!
- Returns the value of the style with the given \a name using the specified
- \a strategy. If a style with \a name does not exist, an empty string is
- returned.
-
- In CSS, the cascading part depends on which CSS rule has priority and is
- thus applied. Generally, the last defined rule has priority. Thus, an
- inline style rule has priority over an embedded block style rule, which
- in return has priority over an external style rule.
-
- If the "!important" declaration is set on one of those, the declaration
- receives highest priority, unless other declarations also use the
- "!important" declaration. Then, the last "!important" declaration takes
- predecence.
-
- \sa setStyleProperty()
-*/
-
-QString QWebElement::styleProperty(const QString &name, StyleResolveStrategy strategy) const
-{
- if (!m_element || !m_element->isStyledElement())
- return QString();
-
- int propID = cssPropertyID(name);
-
- if (!propID)
- return QString();
-
- CSSStyleDeclaration* style = static_cast<StyledElement*>(m_element)->style();
-
- if (strategy == InlineStyle)
- return style->getPropertyValue(propID);
-
- if (strategy == CascadedStyle) {
- if (style->getPropertyPriority(propID))
- return style->getPropertyValue(propID);
-
- // We are going to resolve the style property by walking through the
- // list of non-inline matched CSS rules for the element, looking for
- // the highest priority definition.
-
- // Get an array of matched CSS rules for the given element sorted
- // by importance and inheritance order. This include external CSS
- // declarations, as well as embedded and inline style declarations.
-
- DOMWindow* domWindow = m_element->document()->frame()->domWindow();
- if (RefPtr<CSSRuleList> rules = domWindow->getMatchedCSSRules(m_element, "")) {
- for (int i = rules->length(); i > 0; --i) {
- CSSStyleRule* rule = static_cast<CSSStyleRule*>(rules->item(i - 1));
-
- if (rule->style()->getPropertyPriority(propID))
- return rule->style()->getPropertyValue(propID);
-
- if (style->getPropertyValue(propID).isEmpty())
- style = rule->style();
- }
- }
-
- return style->getPropertyValue(propID);
- }
-
- if (strategy == ComputedStyle) {
- if (!m_element || !m_element->isStyledElement())
- return QString();
-
- int propID = cssPropertyID(name);
-
- RefPtr<CSSComputedStyleDeclaration> style = computedStyle(m_element);
- if (!propID || !style)
- return QString();
-
- return style->getPropertyValue(propID);
- }
-
- return QString();
-}
-
-/*!
- Sets the value of the inline style with the given \a name to \a value.
-
- Setting a value, does not necessarily mean that it will become the applied
- value, due to the fact that the style property's value might have been set
- earlier with a higher priority in external or embedded style declarations.
-
- In order to ensure that the value will be applied, you may have to append
- "!important" to the value.
-*/
-void QWebElement::setStyleProperty(const QString &name, const QString &value)
-{
- if (!m_element || !m_element->isStyledElement())
- return;
-
- int propID = cssPropertyID(name);
- CSSStyleDeclaration* style = static_cast<StyledElement*>(m_element)->style();
- if (!propID || !style)
- return;
-
- ExceptionCode exception = 0;
- style->setProperty(name, value, exception);
-}
-
-/*!
- Returns the list of classes of this element.
-*/
-QStringList QWebElement::classes() const
-{
- if (!hasAttribute(QLatin1String("class")))
- return QStringList();
-
- QStringList classes = attribute(QLatin1String("class")).simplified().split(QLatin1Char(' '), QString::SkipEmptyParts);
- classes.removeDuplicates();
- return classes;
-}
-
-/*!
- Returns true if this element has a class with the given \a name; otherwise
- returns false.
-*/
-bool QWebElement::hasClass(const QString &name) const
-{
- QStringList list = classes();
- return list.contains(name);
-}
-
-/*!
- Adds the specified class with the given \a name to the element.
-*/
-void QWebElement::addClass(const QString &name)
-{
- QStringList list = classes();
- if (!list.contains(name)) {
- list.append(name);
- QString value = list.join(QLatin1String(" "));
- setAttribute(QLatin1String("class"), value);
- }
-}
-
-/*!
- Removes the specified class with the given \a name from the element.
-*/
-void QWebElement::removeClass(const QString &name)
-{
- QStringList list = classes();
- if (list.contains(name)) {
- list.removeAll(name);
- QString value = list.join(QLatin1String(" "));
- setAttribute(QLatin1String("class"), value);
- }
-}
-
-/*!
- Adds the specified class with the given \a name if it is not present. If
- the class is already present, it will be removed.
-*/
-void QWebElement::toggleClass(const QString &name)
-{
- QStringList list = classes();
- if (list.contains(name))
- list.removeAll(name);
- else
- list.append(name);
-
- QString value = list.join(QLatin1String(" "));
- setAttribute(QLatin1String("class"), value);
-}
-
-/*!
- Appends the given \a element as the element's last child.
-
- If \a element is the child of another element, it is re-parented to this
- element. If \a element is a child of this element, then its position in
- the list of children is changed.
-
- Calling this function on a null element does nothing.
-
- \sa prependInside(), prependOutside(), appendOutside()
-*/
-void QWebElement::appendInside(const QWebElement &element)
-{
- if (!m_element || element.isNull())
- return;
-
- ExceptionCode exception = 0;
- m_element->appendChild(element.m_element, exception);
-}
-
-/*!
- Appends the result of parsing \a markup as the element's last child.
-
- Calling this function on a null element does nothing.
-
- \sa prependInside(), prependOutside(), appendOutside()
-*/
-void QWebElement::appendInside(const QString &markup)
-{
- if (!m_element)
- return;
-
- if (!m_element->isHTMLElement())
- return;
-
- HTMLElement* htmlElement = static_cast<HTMLElement*>(m_element);
- RefPtr<DocumentFragment> fragment = htmlElement->createContextualFragment(markup);
-
- ExceptionCode exception = 0;
- m_element->appendChild(fragment, exception);
-}
-
-/*!
- Prepends \a element as the element's first child.
-
- If \a element is the child of another element, it is re-parented to this
- element. If \a element is a child of this element, then its position in
- the list of children is changed.
-
- Calling this function on a null element does nothing.
-
- \sa appendInside(), prependOutside(), appendOutside()
-*/
-void QWebElement::prependInside(const QWebElement &element)
-{
- if (!m_element || element.isNull())
- return;
-
- ExceptionCode exception = 0;
-
- if (m_element->hasChildNodes())
- m_element->insertBefore(element.m_element, m_element->firstChild(), exception);
- else
- m_element->appendChild(element.m_element, exception);
-}
-
-/*!
- Prepends the result of parsing \a markup as the element's first child.
-
- Calling this function on a null element does nothing.
-
- \sa appendInside(), prependOutside(), appendOutside()
-*/
-void QWebElement::prependInside(const QString &markup)
-{
- if (!m_element)
- return;
-
- if (!m_element->isHTMLElement())
- return;
-
- HTMLElement* htmlElement = static_cast<HTMLElement*>(m_element);
- RefPtr<DocumentFragment> fragment = htmlElement->createContextualFragment(markup);
-
- ExceptionCode exception = 0;
-
- if (m_element->hasChildNodes())
- m_element->insertBefore(fragment, m_element->firstChild(), exception);
- else
- m_element->appendChild(fragment, exception);
-}
-
-
-/*!
- Inserts the given \a element before this element.
-
- If \a element is the child of another element, it is re-parented to the
- parent of this element.
-
- Calling this function on a null element does nothing.
-
- \sa appendInside(), prependInside(), appendOutside()
-*/
-void QWebElement::prependOutside(const QWebElement &element)
-{
- if (!m_element || element.isNull())
- return;
-
- if (!m_element->parent())
- return;
-
- ExceptionCode exception = 0;
- m_element->parent()->insertBefore(element.m_element, m_element, exception);
-}
-
-/*!
- Inserts the result of parsing \a markup before this element.
-
- Calling this function on a null element does nothing.
-
- \sa appendInside(), prependInside(), appendOutside()
-*/
-void QWebElement::prependOutside(const QString &markup)
-{
- if (!m_element)
- return;
-
- if (!m_element->parent())
- return;
-
- if (!m_element->isHTMLElement())
- return;
-
- HTMLElement* htmlElement = static_cast<HTMLElement*>(m_element);
- RefPtr<DocumentFragment> fragment = htmlElement->createContextualFragment(markup);
-
- ExceptionCode exception = 0;
- m_element->parent()->insertBefore(fragment, m_element, exception);
-}
-
-/*!
- Inserts the given \a element after this element.
-
- If \a element is the child of another element, it is re-parented to the
- parent of this element.
-
- Calling this function on a null element does nothing.
-
- \sa appendInside(), prependInside(), prependOutside()
-*/
-void QWebElement::appendOutside(const QWebElement &element)
-{
- if (!m_element || element.isNull())
- return;
-
- if (!m_element->parent())
- return;
-
- ExceptionCode exception = 0;
- if (!m_element->nextSibling())
- m_element->parent()->appendChild(element.m_element, exception);
- else
- m_element->parent()->insertBefore(element.m_element, m_element->nextSibling(), exception);
-}
-
-/*!
- Inserts the result of parsing \a markup after this element.
-
- Calling this function on a null element does nothing.
-
- \sa appendInside(), prependInside(), prependOutside()
-*/
-void QWebElement::appendOutside(const QString &markup)
-{
- if (!m_element)
- return;
-
- if (!m_element->parent())
- return;
-
- if (!m_element->isHTMLElement())
- return;
-
- HTMLElement* htmlElement = static_cast<HTMLElement*>(m_element);
- RefPtr<DocumentFragment> fragment = htmlElement->createContextualFragment(markup);
-
- ExceptionCode exception = 0;
- if (!m_element->nextSibling())
- m_element->parent()->appendChild(fragment, exception);
- else
- m_element->parent()->insertBefore(fragment, m_element->nextSibling(), exception);
-}
-
-/*!
- Returns a clone of this element.
-
- The clone may be inserted at any point in the document.
-
- \sa appendInside(), prependInside(), prependOutside(), appendOutside()
-*/
-QWebElement QWebElement::clone() const
-{
- if (!m_element)
- return QWebElement();
-
- return QWebElement(m_element->cloneElementWithChildren().get());
-}
-
-/*!
- Removes this element from the document and returns a reference to it.
-
- The element is still valid after removal, and can be inserted into other
- parts of the document.
-
- \sa removeAllChildren(), removeFromDocument()
-*/
-QWebElement &QWebElement::takeFromDocument()
-{
- if (!m_element)
- return *this;
-
- ExceptionCode exception = 0;
- m_element->remove(exception);
-
- return *this;
-}
-
-/*!
- Removes this element from the document and makes it a null element.
-
- \sa removeAllChildren(), takeFromDocument()
-*/
-void QWebElement::removeFromDocument()
-{
- if (!m_element)
- return;
-
- ExceptionCode exception = 0;
- m_element->remove(exception);
- m_element->deref();
- m_element = 0;
-}
-
-/*!
- Removes all children from this element.
-
- \sa removeFromDocument(), takeFromDocument()
-*/
-void QWebElement::removeAllChildren()
-{
- if (!m_element)
- return;
-
- m_element->removeAllChildren();
-}
-
-static RefPtr<Node> findInsertionPoint(PassRefPtr<Node> root)
-{
- RefPtr<Node> node = root;
-
- // Go as far down the tree as possible.
- while (node->hasChildNodes() && node->firstChild()->isElementNode())
- node = node->firstChild();
-
- // TODO: Implement SVG support
- if (node->isHTMLElement()) {
- HTMLElement* element = static_cast<HTMLElement*>(node.get());
-
- // The insert point could be a non-enclosable tag and it can thus
- // never have children, so go one up. Get the parent element, and not
- // note as a root note will always exist.
- if (element->endTagRequirement() == TagStatusForbidden)
- node = node->parentElement();
- }
-
- return node;
-}
-
-/*!
- Encloses the contents of this element with \a element. This element becomes
- the child of the deepest descendant within \a element.
-
- ### illustration
-
- \sa encloseWith()
-*/
-void QWebElement::encloseContentsWith(const QWebElement &element)
-{
- if (!m_element || element.isNull())
- return;
-
- RefPtr<Node> insertionPoint = findInsertionPoint(element.m_element);
-
- if (!insertionPoint)
- return;
-
- ExceptionCode exception = 0;
-
- // reparent children
- for (RefPtr<Node> child = m_element->firstChild(); child;) {
- RefPtr<Node> next = child->nextSibling();
- insertionPoint->appendChild(child, exception);
- child = next;
- }
-
- if (m_element->hasChildNodes())
- m_element->insertBefore(element.m_element, m_element->firstChild(), exception);
- else
- m_element->appendChild(element.m_element, exception);
-}
-
-/*!
- Encloses the contents of this element with the result of parsing \a markup.
- This element becomes the child of the deepest descendant within \a markup.
-
- \sa encloseWith()
-*/
-void QWebElement::encloseContentsWith(const QString &markup)
-{
- if (!m_element)
- return;
-
- if (!m_element->parent())
- return;
-
- if (!m_element->isHTMLElement())
- return;
-
- HTMLElement* htmlElement = static_cast<HTMLElement*>(m_element);
- RefPtr<DocumentFragment> fragment = htmlElement->createContextualFragment(markup);
-
- if (!fragment || !fragment->firstChild())
- return;
-
- RefPtr<Node> insertionPoint = findInsertionPoint(fragment->firstChild());
-
- if (!insertionPoint)
- return;
-
- ExceptionCode exception = 0;
-
- // reparent children
- for (RefPtr<Node> child = m_element->firstChild(); child;) {
- RefPtr<Node> next = child->nextSibling();
- insertionPoint->appendChild(child, exception);
- child = next;
- }
-
- if (m_element->hasChildNodes())
- m_element->insertBefore(fragment, m_element->firstChild(), exception);
- else
- m_element->appendChild(fragment, exception);
-}
-
-/*!
- Encloses this element with \a element. This element becomes the child of
- the deepest descendant within \a element.
-
- \sa replace()
-*/
-void QWebElement::encloseWith(const QWebElement &element)
-{
- if (!m_element || element.isNull())
- return;
-
- RefPtr<Node> insertionPoint = findInsertionPoint(element.m_element);
-
- if (!insertionPoint)
- return;
-
- // Keep reference to these two nodes before pulling out this element and
- // wrapping it in the fragment. The reason for doing it in this order is
- // that once the fragment has been added to the document it is empty, so
- // we no longer have access to the nodes it contained.
- Node* parentNode = m_element->parent();
- Node* siblingNode = m_element->nextSibling();
-
- ExceptionCode exception = 0;
- insertionPoint->appendChild(m_element, exception);
-
- if (!siblingNode)
- parentNode->appendChild(element.m_element, exception);
- else
- parentNode->insertBefore(element.m_element, siblingNode, exception);
-}
-
-/*!
- Encloses this element with the result of parsing \a markup. This element
- becomes the child of the deepest descendant within \a markup.
-
- \sa replace()
-*/
-void QWebElement::encloseWith(const QString &markup)
-{
- if (!m_element)
- return;
-
- if (!m_element->parent())
- return;
-
- if (!m_element->isHTMLElement())
- return;
-
- HTMLElement* htmlElement = static_cast<HTMLElement*>(m_element);
- RefPtr<DocumentFragment> fragment = htmlElement->createContextualFragment(markup);
-
- if (!fragment || !fragment->firstChild())
- return;
-
- RefPtr<Node> insertionPoint = findInsertionPoint(fragment->firstChild());
-
- if (!insertionPoint)
- return;
-
- // Keep reference to these two nodes before pulling out this element and
- // wrapping it in the fragment. The reason for doing it in this order is
- // that once the fragment has been added to the document it is empty, so
- // we no longer have access to the nodes it contained.
- Node* parentNode = m_element->parent();
- Node* siblingNode = m_element->nextSibling();
-
- ExceptionCode exception = 0;
- insertionPoint->appendChild(m_element, exception);
-
- if (!siblingNode)
- parentNode->appendChild(fragment, exception);
- else
- parentNode->insertBefore(fragment, siblingNode, exception);
-}
-
-/*!
- Replaces this element with \a element.
-
- This method will not replace the <html>, <head> or <body> elements.
-
- \sa encloseWith()
-*/
-void QWebElement::replace(const QWebElement &element)
-{
- if (!m_element || element.isNull())
- return;
-
- appendOutside(element);
- takeFromDocument();
-}
-
-/*!
- Replaces this element with the result of parsing \a markup.
-
- This method will not replace the <html>, <head> or <body> elements.
-
- \sa encloseWith()
-*/
-void QWebElement::replace(const QString &markup)
-{
- if (!m_element)
- return;
-
- appendOutside(markup);
- takeFromDocument();
-}
-
-/*!
- \internal
- Walk \a node's parents until a valid QWebElement is found.
- For example, a WebCore::Text node is not a valid Html QWebElement, but its
- enclosing p tag is.
-*/
-QWebElement QWebElement::enclosingElement(WebCore::Node* node)
-{
- QWebElement element(node);
-
- while (element.isNull() && node) {
- node = node->parentNode();
- element = QWebElement(node);
- }
- return element;
-}
-
-/*!
- \fn inline bool QWebElement::operator==(const QWebElement& o) const;
-
- Returns true if this element points to the same underlying DOM object as
- \a o; otherwise returns false.
-*/
-
-/*!
- \fn inline bool QWebElement::operator!=(const QWebElement& o) const;
-
- Returns true if this element points to a different underlying DOM object
- than \a o; otherwise returns false.
-*/
-
-
-/*!
- Render the element into \a painter .
-*/
-void QWebElement::render(QPainter* painter)
-{
- WebCore::Element* e = m_element;
- Document* doc = e ? e->document() : 0;
- if (!doc)
- return;
-
- Frame* frame = doc->frame();
- if (!frame || !frame->view() || !frame->contentRenderer())
- return;
-
- FrameView* view = frame->view();
-
- view->layoutIfNeededRecursive();
-
- IntRect rect = e->getRect();
-
- if (rect.size().isEmpty())
- return;
-
- GraphicsContext context(painter);
-
- context.save();
- context.translate(-rect.x(), -rect.y());
- view->setNodeToDraw(e);
- view->paintContents(&context, rect);
- view->setNodeToDraw(0);
- context.restore();
-}
-
-class QWebElementCollectionPrivate : public QSharedData
-{
-public:
- static QWebElementCollectionPrivate* create(const PassRefPtr<Node> &context, const QString &query);
-
- RefPtr<NodeList> m_result;
-
-private:
- inline QWebElementCollectionPrivate() {}
-};
-
-QWebElementCollectionPrivate* QWebElementCollectionPrivate::create(const PassRefPtr<Node> &context, const QString &query)
-{
- if (!context)
- return 0;
-
- // Let WebKit do the hard work hehehe
- ExceptionCode exception = 0; // ###
- RefPtr<NodeList> nodes = context->querySelectorAll(query, exception);
- if (!nodes)
- return 0;
-
- QWebElementCollectionPrivate* priv = new QWebElementCollectionPrivate;
- priv->m_result = nodes;
- return priv;
-}
-
-/*!
- \class QWebElementCollection
- \since 4.6
- \brief The QWebElementCollection class represents a collection of web elements.
- \preliminary
-
- Elements in a document can be selected using QWebElement::findAll() or using the
- QWebElement constructor. The collection is composed by choosing all elements in the
- document that match a specified CSS selector expression.
-
- The number of selected elements is provided through the count() property. Individual
- elements can be retrieved by index using at().
-
- It is also possible to iterate through all elements in the collection using Qt's foreach
- macro:
-
- \code
- QWebElementCollection collection = document.findAll("p");
- foreach (QWebElement paraElement, collection) {
- ...
- }
- \endcode
-*/
-
-/*!
- Constructs an empty collection.
-*/
-QWebElementCollection::QWebElementCollection()
-{
-}
-
-/*!
- Constructs a copy of \a other.
-*/
-QWebElementCollection::QWebElementCollection(const QWebElementCollection &other)
- : d(other.d)
-{
-}
-
-/*!
- Constructs a collection of elements from the list of child elements of \a contextElement that
- match the specified CSS selector \a query.
-*/
-QWebElementCollection::QWebElementCollection(const QWebElement &contextElement, const QString &query)
-{
- d = QExplicitlySharedDataPointer<QWebElementCollectionPrivate>(QWebElementCollectionPrivate::create(contextElement.m_element, query));
-}
-
-/*!
- Assigns \a other to this collection and returns a reference to this collection.
-*/
-QWebElementCollection &QWebElementCollection::operator=(const QWebElementCollection &other)
-{
- d = other.d;
- return *this;
-}
-
-/*!
- Destroys the collection.
-*/
-QWebElementCollection::~QWebElementCollection()
-{
-}
-
-/*! \fn QWebElementCollection &QWebElementCollection::operator+=(const QWebElementCollection &other)
-
- Appends the items of the \a other list to this list and returns a
- reference to this list.
-
- \sa operator+(), append()
-*/
-
-/*!
- Returns a collection that contains all the elements of this collection followed
- by all the elements in the \a other collection. Duplicates may occur in the result.
-
- \sa operator+=()
-*/
-QWebElementCollection QWebElementCollection::operator+(const QWebElementCollection &other) const
-{
- QWebElementCollection n = *this; n.d.detach(); n += other; return n;
-}
-
-/*!
- Extends the collection by appending all items of \a other.
-
- The resulting collection may include duplicate elements.
-
- \sa operator+=()
-*/
-void QWebElementCollection::append(const QWebElementCollection &other)
-{
- if (!d) {
- *this = other;
- return;
- }
- if (!other.d)
- return;
- Vector<RefPtr<Node> > nodes;
- RefPtr<NodeList> results[] = { d->m_result, other.d->m_result };
- nodes.reserveInitialCapacity(results[0]->length() + results[1]->length());
-
- for (int i = 0; i < 2; ++i) {
- int j = 0;
- Node* n = results[i]->item(j);
- while (n) {
- nodes.append(n);
- n = results[i]->item(++j);
- }
- }
-
- d->m_result = StaticNodeList::adopt(nodes);
-}
-
-/*!
- Returns the number of elements in the collection.
-*/
-int QWebElementCollection::count() const
-{
- if (!d)
- return 0;
- return d->m_result->length();
-}
-
-/*!
- Returns the element at index position \a i in the collection.
-*/
-QWebElement QWebElementCollection::at(int i) const
-{
- if (!d)
- return QWebElement();
- Node* n = d->m_result->item(i);
- return QWebElement(static_cast<Element*>(n));
-}
-
-/*!
- \fn const QWebElement QWebElementCollection::operator[](int position) const
-
- Returns the element at the specified \a position in the collection.
-*/
-
-/*! \fn QWebElement QWebElementCollection::first() const
-
- Returns the first element in the collection.
-
- \sa last(), operator[](), at(), count()
-*/
-
-/*! \fn QWebElement QWebElementCollection::last() const
-
- Returns the last element in the collection.
-
- \sa first(), operator[](), at(), count()
-*/
-
-/*!
- Returns a QList object with the elements contained in this collection.
-*/
-QList<QWebElement> QWebElementCollection::toList() const
-{
- if (!d)
- return QList<QWebElement>();
- QList<QWebElement> elements;
- int i = 0;
- Node* n = d->m_result->item(i);
- while (n) {
- if (n->isElementNode())
- elements.append(QWebElement(static_cast<Element*>(n)));
- n = d->m_result->item(++i);
- }
- return elements;
-}
-
-/*!
- \fn QWebElementCollection::const_iterator QWebElementCollection::begin() const
-
- Returns an STL-style iterator pointing to the first element in the collection.
-
- \sa end()
-*/
-
-/*!
- \fn QWebElementCollection::const_iterator QWebElementCollection::end() const
-
- Returns an STL-style iterator pointing to the imaginary element after the
- last element in the list.
-
- \sa begin()
-*/
-
-/*!
- \class QWebElementCollection::const_iterator
- \since 4.6
- \brief The QWebElementCollection::const_iterator class provides an STL-style const iterator for QWebElementCollection.
-
- QWebElementCollection provides STL style const iterators for fast low-level access to the elements.
-
- QWebElementCollection::const_iterator allows you to iterate over a QWebElementCollection.
-*/
-
-/*!
- \fn QWebElementCollection::const_iterator::const_iterator(const const_iterator &other)
-
- Constructs a copy of \a other.
-*/
-
-/*!
- \fn QWebElementCollection::const_iterator::const_iterator(const QWebElementCollection *collection, int index)
- \internal
-*/
-
-/*!
- \fn const QWebElement QWebElementCollection::const_iterator::operator*() const
-
- Returns the current element.
-*/
-
-/*!
- \fn bool QWebElementCollection::const_iterator::operator==(const const_iterator &other) const
-
- Returns true if \a other points to the same item as this iterator;
- otherwise returns false.
-
- \sa operator!=()
-*/
-
-/*!
- \fn bool QWebElementCollection::const_iterator::operator!=(const const_iterator &other) const
-
- Returns true if \a other points to a different element than this;
- iterator; otherwise returns false.
-
- \sa operator==()
-*/
-
-/*!
- \fn QWebElementCollection::const_iterator &QWebElementCollection::const_iterator::operator++()
-
- The prefix ++ operator (\c{++it}) advances the iterator to the next element in the collection
- and returns an iterator to the new current element.
-
- Calling this function on QWebElementCollection::end() leads to undefined results.
-
- \sa operator--()
-*/
-
-/*!
- \fn QWebElementCollection::const_iterator QWebElementCollection::const_iterator::operator++(int)
-
- \overload
-
- The postfix ++ operator (\c{it++}) advances the iterator to the next element in the collection
- and returns an iterator to the previously current element.
-
- Calling this function on QWebElementCollection::end() leads to undefined results.
-*/
-
-/*!
- \fn QWebElementCollection::const_iterator &QWebElementCollection::const_iterator::operator--()
-
- The prefix -- operator (\c{--it}) makes the preceding element current and returns an
- iterator to the new current element.
-
- Calling this function on QWebElementCollection::begin() leads to undefined results.
-
- \sa operator++()
-*/
-
-/*!
- \fn QWebElementCollection::const_iterator QWebElementCollection::const_iterator::operator--(int)
-
- \overload
-
- The postfix -- operator (\c{it--}) makes the preceding element current and returns
- an iterator to the previously current element.
-*/
-
-/*!
- \fn QWebElementCollection::const_iterator &QWebElementCollection::const_iterator::operator+=(int j)
-
- Advances the iterator by \a j elements. If \a j is negative, the iterator goes backward.
-
- \sa operator-=(), operator+()
-*/
-
-/*!
- \fn QWebElementCollection::const_iterator &QWebElementCollection::const_iterator::operator-=(int j)
-
- Makes the iterator go back by \a j elements. If \a j is negative, the iterator goes forward.
-
- \sa operator+=(), operator-()
-*/
-
-/*!
- \fn QWebElementCollection::const_iterator QWebElementCollection::const_iterator::operator+(int j) const
-
- Returns an iterator to the element at \a j positions forward from this iterator. If \a j
- is negative, the iterator goes backward.
-
- \sa operator-(), operator+=()
-*/
-
-/*!
- \fn QWebElementCollection::const_iterator QWebElementCollection::const_iterator::operator-(int j) const
-
- Returns an iterator to the element at \a j positiosn backward from this iterator.
- If \a j is negative, the iterator goes forward.
-
- \sa operator+(), operator-=()
-*/
-
-/*!
- \fn int QWebElementCollection::const_iterator::operator-(const_iterator other) const
-
- Returns the number of elements between the item point to by \a other
- and the element pointed to by this iterator.
-*/
-
-/*!
- \fn bool QWebElementCollection::const_iterator::operator<(const const_iterator &other) const
-
- Returns true if the element pointed to by this iterator is less than the element pointed to
- by the \a other iterator.
-*/
-
-/*!
- \fn bool QWebElementCollection::const_iterator::operator<=(const const_iterator &other) const
-
- Returns true if the element pointed to by this iterator is less than or equal to the
- element pointed to by the \a other iterator.
-*/
-
-/*!
- \fn bool QWebElementCollection::const_iterator::operator>(const const_iterator &other) const
-
- Returns true if the element pointed to by this iterator is greater than the element pointed to
- by the \a other iterator.
-*/
-
-/*!
- \fn bool QWebElementCollection::const_iterator::operator>=(const const_iterator &other) const
-
- Returns true if the element pointed to by this iterator is greater than or equal to the
- element pointed to by the \a other iterator.
-*/
-
-/*!
- \fn QWebElementCollection::iterator QWebElementCollection::begin()
-
- Returns an STL-style iterator pointing to the first element in the collection.
-
- \sa end()
-*/
-
-/*!
- \fn QWebElementCollection::iterator QWebElementCollection::end()
-
- Returns an STL-style iterator pointing to the imaginary element after the
- last element in the list.
-
- \sa begin()
-*/
-
-/*!
- \fn QWebElementCollection::const_iterator QWebElementCollection::constBegin() const
-
- Returns an STL-style iterator pointing to the first element in the collection.
-
- \sa end()
-*/
-
-/*!
- \fn QWebElementCollection::const_iterator QWebElementCollection::constEnd() const
-
- Returns an STL-style iterator pointing to the imaginary element after the
- last element in the list.
-
- \sa begin()
-*/
-
-/*!
- \class QWebElementCollection::iterator
- \since 4.6
- \brief The QWebElementCollection::iterator class provides an STL-style iterator for QWebElementCollection.
-
- QWebElementCollection provides STL style iterators for fast low-level access to the elements.
-
- QWebElementCollection::iterator allows you to iterate over a QWebElementCollection.
-*/
-
-/*!
- \fn QWebElementCollection::iterator::iterator(const iterator &other)
-
- Constructs a copy of \a other.
-*/
-
-/*!
- \fn QWebElementCollection::iterator::iterator(const QWebElementCollection *collection, int index)
- \internal
-*/
-
-/*!
- \fn const QWebElement QWebElementCollection::iterator::operator*() const
-
- Returns the current element.
-*/
-
-/*!
- \fn bool QWebElementCollection::iterator::operator==(const iterator &other) const
-
- Returns true if \a other points to the same item as this iterator;
- otherwise returns false.
-
- \sa operator!=()
-*/
-
-/*!
- \fn bool QWebElementCollection::iterator::operator!=(const iterator &other) const
-
- Returns true if \a other points to a different element than this;
- iterator; otherwise returns false.
-
- \sa operator==()
-*/
-
-/*!
- \fn QWebElementCollection::iterator &QWebElementCollection::iterator::operator++()
-
- The prefix ++ operator (\c{++it}) advances the iterator to the next element in the collection
- and returns an iterator to the new current element.
-
- Calling this function on QWebElementCollection::end() leads to undefined results.
-
- \sa operator--()
-*/
-
-/*!
- \fn QWebElementCollection::iterator QWebElementCollection::iterator::operator++(int)
-
- \overload
-
- The postfix ++ operator (\c{it++}) advances the iterator to the next element in the collection
- and returns an iterator to the previously current element.
-
- Calling this function on QWebElementCollection::end() leads to undefined results.
-*/
-
-/*!
- \fn QWebElementCollection::iterator &QWebElementCollection::iterator::operator--()
-
- The prefix -- operator (\c{--it}) makes the preceding element current and returns an
- iterator to the new current element.
-
- Calling this function on QWebElementCollection::begin() leads to undefined results.
-
- \sa operator++()
-*/
-
-/*!
- \fn QWebElementCollection::iterator QWebElementCollection::iterator::operator--(int)
-
- \overload
-
- The postfix -- operator (\c{it--}) makes the preceding element current and returns
- an iterator to the previously current element.
-*/
-
-/*!
- \fn QWebElementCollection::iterator &QWebElementCollection::iterator::operator+=(int j)
-
- Advances the iterator by \a j elements. If \a j is negative, the iterator goes backward.
-
- \sa operator-=(), operator+()
-*/
-
-/*!
- \fn QWebElementCollection::iterator &QWebElementCollection::iterator::operator-=(int j)
-
- Makes the iterator go back by \a j elements. If \a j is negative, the iterator goes forward.
-
- \sa operator+=(), operator-()
-*/
-
-/*!
- \fn QWebElementCollection::iterator QWebElementCollection::iterator::operator+(int j) const
-
- Returns an iterator to the element at \a j positions forward from this iterator. If \a j
- is negative, the iterator goes backward.
-
- \sa operator-(), operator+=()
-*/
-
-/*!
- \fn QWebElementCollection::iterator QWebElementCollection::iterator::operator-(int j) const
-
- Returns an iterator to the element at \a j positiosn backward from this iterator.
- If \a j is negative, the iterator goes forward.
-
- \sa operator+(), operator-=()
-*/
-
-/*!
- \fn int QWebElementCollection::iterator::operator-(iterator other) const
-
- Returns the number of elements between the item point to by \a other
- and the element pointed to by this iterator.
-*/
-
-/*!
- \fn bool QWebElementCollection::iterator::operator<(const iterator &other) const
-
- Returns true if the element pointed to by this iterator is less than the element pointed to
- by the \a other iterator.
-*/
-
-/*!
- \fn bool QWebElementCollection::iterator::operator<=(const iterator &other) const
-
- Returns true if the element pointed to by this iterator is less than or equal to the
- element pointed to by the \a other iterator.
-*/
-
-/*!
- \fn bool QWebElementCollection::iterator::operator>(const iterator &other) const
-
- Returns true if the element pointed to by this iterator is greater than the element pointed to
- by the \a other iterator.
-*/
-
-/*!
- \fn bool QWebElementCollection::iterator::operator>=(const iterator &other) const
-
- Returns true if the element pointed to by this iterator is greater than or equal to the
- element pointed to by the \a other iterator.
-*/