[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

eric at webkit.org eric at webkit.org
Wed Apr 7 23:27:18 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit ea052f29dc06a1147605c4684287dfada26e7707
Author: eric at webkit.org <eric at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Nov 9 20:22:23 2009 +0000

    2009-11-09  Benjamin Poulain  <benjamin.poulain at nokia.com>
    
            Reviewed by Kenneth Rohde Christiansen.
    
            https://bugs.webkit.org/show_bug.cgi?id=30628
            Add an API to get all the attributes from a QWebElement.
    
            * Api/qwebelement.cpp:
            (QWebElement::attributesName):
            * Api/qwebelement.h:
            * tests/qwebelement/tst_qwebelement.cpp:
            (tst_QWebElement::listAttributes):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@50676 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/qt/Api/qwebelement.cpp b/WebKit/qt/Api/qwebelement.cpp
index 6305d10..1ce7356 100644
--- a/WebKit/qt/Api/qwebelement.cpp
+++ b/WebKit/qt/Api/qwebelement.cpp
@@ -453,6 +453,30 @@ bool QWebElement::hasAttributes() const
 }
 
 /*!
+    Return the list of attributes for the namespace given as an argument.
+
+    \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()
diff --git a/WebKit/qt/Api/qwebelement.h b/WebKit/qt/Api/qwebelement.h
index 9cb1ea1..3833070 100644
--- a/WebKit/qt/Api/qwebelement.h
+++ b/WebKit/qt/Api/qwebelement.h
@@ -21,6 +21,7 @@
 #define QWEBELEMENT_H
 
 #include <QString>
+#include <QStringList>
 #include <QRect>
 #include <QVariant>
 #include <QExplicitlySharedDataPointer>
@@ -72,6 +73,7 @@ public:
     void removeAttribute(const QString& name);
     void removeAttributeNS(const QString& namespaceUri, const QString& name);
     bool hasAttributes() const;
+    QStringList attributeNames(const QString& namespaceUri = QString()) const;
 
     QStringList classes() const;
     bool hasClass(const QString& name) const;
diff --git a/WebKit/qt/ChangeLog b/WebKit/qt/ChangeLog
index f5c8940..a820c31 100644
--- a/WebKit/qt/ChangeLog
+++ b/WebKit/qt/ChangeLog
@@ -1,3 +1,16 @@
+2009-11-09  Benjamin Poulain  <benjamin.poulain at nokia.com>
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        https://bugs.webkit.org/show_bug.cgi?id=30628
+        Add an API to get all the attributes from a QWebElement.
+
+        * Api/qwebelement.cpp:
+        (QWebElement::attributesName):
+        * Api/qwebelement.h:
+        * tests/qwebelement/tst_qwebelement.cpp:
+        (tst_QWebElement::listAttributes):
+
 2009-11-09  Laszlo Gombos  <laszlo.1.gombos at nokia.com>
 
         Reviewed by Kenneth Rohde Christiansen.
diff --git a/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp b/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp
index 117393a..c7d83a1 100644
--- a/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp
+++ b/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp
@@ -68,6 +68,7 @@ private slots:
     void simpleCollection();
     void attributes();
     void attributesNS();
+    void listAttributes();
     void classes();
     void namespaceURI();
     void iteration();
@@ -187,6 +188,29 @@ void tst_QWebElement::attributesNS()
     QCOMPARE(svg.attributeNS("http://www.w3.org/2000/svg", "foobar", "defaultblah"), QString("true"));
 }
 
+void tst_QWebElement::listAttributes()
+{
+    QString content = "<html xmlns=\"http://www.w3.org/1999/xhtml\" "
+                      "xmlns:svg=\"http://www.w3.org/2000/svg\">"
+                      "<body><svg:svg foo=\"\" svg:bar=\"\">"
+                      "</svg:svg></body></html>";
+
+    m_mainFrame->setContent(content.toUtf8(), "application/xhtml+xml");
+
+    QWebElement svg = m_mainFrame->findFirstElement("svg");
+    QVERIFY(!svg.isNull());
+
+    QVERIFY(svg.attributeNames().contains("foo"));
+    QVERIFY(svg.attributeNames("http://www.w3.org/2000/svg").contains("bar"));
+
+    svg.setAttributeNS("http://www.w3.org/2000/svg", "svg:foobar", "true");
+    QVERIFY(svg.attributeNames().contains("foo"));
+    QStringList attributes = svg.attributeNames("http://www.w3.org/2000/svg");
+    QCOMPARE(attributes.size(), 2);
+    QVERIFY(attributes.contains("bar"));
+    QVERIFY(attributes.contains("foobar"));
+}
+
 void tst_QWebElement::classes()
 {
     m_mainFrame->setHtml("<body><p class=\"a b c d a c\">Test");

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list