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

kenneth at webkit.org kenneth at webkit.org
Wed Apr 7 23:26:55 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit 6f92472d0d8086ee35770a11e730c7c41c268238
Author: kenneth at webkit.org <kenneth at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Mon Nov 9 17:22:39 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=30772
            Add a non-const iterator to QWebElementCollection.
            Move the two attributes of the iterator to private.
    
            * Api/qwebelement.h:
            (const_iterator::begin):
            (const_iterator::end):
            (const_iterator::constBegin):
            (const_iterator::constEnd):
            (const_iterator::iterator::iterator):
            (const_iterator::iterator::operator*):
            (const_iterator::iterator::operator==):
            (const_iterator::iterator::operator!=):
            (const_iterator::iterator::operator<):
            (const_iterator::iterator::operator<=):
            (const_iterator::iterator::operator>):
            (const_iterator::iterator::operator>=):
            (const_iterator::iterator::operator++):
            (const_iterator::iterator::operator--):
            (const_iterator::iterator::operator+=):
            (const_iterator::iterator::operator-=):
            (const_iterator::iterator::operator+):
            (const_iterator::iterator::operator-):
            * tests/qwebelement/tst_qwebelement.cpp:
            (tst_QWebElement::nonConstIterator):
            (tst_QWebElement::constIterator):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@50661 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/qt/Api/qwebelement.h b/WebKit/qt/Api/qwebelement.h
index a18d262..9cb1ea1 100644
--- a/WebKit/qt/Api/qwebelement.h
+++ b/WebKit/qt/Api/qwebelement.h
@@ -177,6 +177,7 @@ public:
 
     int count() const;
     QWebElement at(int i) const;
+    inline QWebElement operator[](int i) const { return at(i); }
 
     inline QWebElement first() const { return at(0); }
     inline QWebElement last() const { return at(count() - 1); }
@@ -185,39 +186,69 @@ public:
 
     class const_iterator {
        public:
-           int i;
-           const QWebElementCollection *s;
-
-           inline const_iterator(const QWebElementCollection *collection, int index) : i(index), s(collection) {}
-           inline const_iterator(const const_iterator &o) : i(o.i), s(o.s) {}
+           inline const_iterator(const QWebElementCollection* collection, int index) : i(index), collection(collection) {}
+           inline const_iterator(const const_iterator& o) : i(o.i), collection(o.collection) {}
 
-           inline const QWebElement operator*() const { return s->at(i); }
+           inline const QWebElement operator*() const { return collection->at(i); }
 
-           inline bool operator==(const const_iterator& o) const { return i == o.i && s == o.s; }
-           inline bool operator!=(const const_iterator& o) const { return i != o.i || s != o.s; }
+           inline bool operator==(const const_iterator& o) const { return i == o.i && collection == o.collection; }
+           inline bool operator!=(const const_iterator& o) const { return i != o.i || collection != o.collection; }
            inline bool operator<(const const_iterator& o) const { return i < o.i; }
            inline bool operator<=(const const_iterator& o) const { return i <= o.i; }
            inline bool operator>(const const_iterator& o) const { return i > o.i; }
            inline bool operator>=(const const_iterator& o) const { return i >= o.i; }
 
-           inline const_iterator &operator++() { ++i; return *this; }
-           inline const_iterator operator++(int) { const_iterator n(s, i); ++i; return n; }
-           inline const_iterator &operator--() { i--; return *this; }
-           inline const_iterator operator--(int) { const_iterator n(s, i); i--; return n; }
-           inline const_iterator &operator+=(int j) { i += j; return *this; }
-           inline const_iterator &operator-=(int j) { i -= j; return *this; }
-           inline const_iterator operator+(int j) const { return const_iterator(s, i + j); }
-           inline const_iterator operator-(int j) const { return const_iterator(s, i - j); }
+           inline const_iterator& operator++() { ++i; return *this; }
+           inline const_iterator operator++(int) { const_iterator n(collection, i); ++i; return n; }
+           inline const_iterator& operator--() { i--; return *this; }
+           inline const_iterator operator--(int) { const_iterator n(collection, i); i--; return n; }
+           inline const_iterator& operator+=(int j) { i += j; return *this; }
+           inline const_iterator& operator-=(int j) { i -= j; return *this; }
+           inline const_iterator operator+(int j) const { return const_iterator(collection, i + j); }
+           inline const_iterator operator-(int j) const { return const_iterator(collection, i - j); }
            inline int operator-(const_iterator j) const { return i - j.i; }
        private:
-            inline const_iterator() : i(0), s(0) {}
+            int i;
+            const QWebElementCollection* const collection;
     };
     friend class const_iterator;
 
-    inline const_iterator begin() const { return const_iterator(this, 0); }
-    inline const_iterator end() const { return const_iterator(this, count()); }
-    inline QWebElement operator[](int i) const { return at(i); }
+    inline const_iterator begin() const { return constBegin(); }
+    inline const_iterator end() const { return constEnd(); }
+    inline const_iterator constBegin() const { return const_iterator(this, 0); }
+    inline const_iterator constEnd() const { return const_iterator(this, count()); };
+
+    class iterator {
+    public:
+        inline iterator(const QWebElementCollection* collection, int index) : i(index), collection(collection) {}
+        inline iterator(const iterator& o) : i(o.i), collection(o.collection) {}
+
+        inline QWebElement operator*() const { return collection->at(i); }
+
+        inline bool operator==(const iterator& o) const { return i == o.i && collection == o.collection; }
+        inline bool operator!=(const iterator& o) const { return i != o.i || collection != o.collection; }
+        inline bool operator<(const iterator& o) const { return i < o.i; }
+        inline bool operator<=(const iterator& o) const { return i <= o.i; }
+        inline bool operator>(const iterator& o) const { return i > o.i; }
+        inline bool operator>=(const iterator& o) const { return i >= o.i; }
+
+        inline iterator& operator++() { ++i; return *this; }
+        inline iterator operator++(int) { iterator n(collection, i); ++i; return n; }
+        inline iterator& operator--() { i--; return *this; }
+        inline iterator operator--(int) { iterator n(collection, i); i--; return n; }
+        inline iterator& operator+=(int j) { i += j; return *this; }
+        inline iterator& operator-=(int j) { i -= j; return *this; }
+        inline iterator operator+(int j) const { return iterator(collection, i + j); }
+        inline iterator operator-(int j) const { return iterator(collection, i - j); }
+        inline int operator-(iterator j) const { return i - j.i; }
+    private:
+        int i;
+        const QWebElementCollection* const collection;
+    };
+    friend class iterator;
 
+    inline iterator begin() { return iterator(this, 0); }
+    inline iterator end()  { return iterator(this, count()); }
 private:
     QExplicitlySharedDataPointer<QWebElementCollectionPrivate> d;
 };
diff --git a/WebKit/qt/ChangeLog b/WebKit/qt/ChangeLog
index 286e00a..828beeb 100644
--- a/WebKit/qt/ChangeLog
+++ b/WebKit/qt/ChangeLog
@@ -1,3 +1,34 @@
+2009-11-09  Benjamin Poulain  <benjamin.poulain at nokia.com>
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        https://bugs.webkit.org/show_bug.cgi?id=30772
+        Add a non-const iterator to QWebElementCollection.
+        Move the two attributes of the iterator to private.
+
+        * Api/qwebelement.h:
+        (const_iterator::begin):
+        (const_iterator::end):
+        (const_iterator::constBegin):
+        (const_iterator::constEnd):
+        (const_iterator::iterator::iterator):
+        (const_iterator::iterator::operator*):
+        (const_iterator::iterator::operator==):
+        (const_iterator::iterator::operator!=):
+        (const_iterator::iterator::operator<):
+        (const_iterator::iterator::operator<=):
+        (const_iterator::iterator::operator>):
+        (const_iterator::iterator::operator>=):
+        (const_iterator::iterator::operator++):
+        (const_iterator::iterator::operator--):
+        (const_iterator::iterator::operator+=):
+        (const_iterator::iterator::operator-=):
+        (const_iterator::iterator::operator+):
+        (const_iterator::iterator::operator-):
+        * tests/qwebelement/tst_qwebelement.cpp:
+        (tst_QWebElement::nonConstIterator):
+        (tst_QWebElement::constIterator):
+
 2009-11-09  Laszlo Gombos  <laszlo.1.gombos at nokia.com>
 
         Reviewed by Kenneth Christiansen.
diff --git a/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp b/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp
index cf83fe8..117393a 100644
--- a/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp
+++ b/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp
@@ -71,6 +71,8 @@ private slots:
     void classes();
     void namespaceURI();
     void iteration();
+    void nonConstIterator();
+    void constIterator();
     void foreachManipulation();
     void emptyCollection();
     void appendCollection();
@@ -305,6 +307,37 @@ void tst_QWebElement::iteration()
     QCOMPARE(paras.at(1), paras.last());
 }
 
+void tst_QWebElement::nonConstIterator()
+{
+    QString html = "<body><p>first para</p><p>second para</p></body>";
+    m_mainFrame->setHtml(html);
+    QWebElement body = m_mainFrame->documentElement();
+    QWebElementCollection paras = body.findAll("p");
+
+    QWebElementCollection::iterator it = paras.begin();
+    QCOMPARE(*it, paras.at(0));
+    ++it;
+    (*it).encloseWith("<div>");
+    QCOMPARE(*it, paras.at(1));
+    ++it;
+    QCOMPARE(it,  paras.end());
+}
+
+void tst_QWebElement::constIterator()
+{
+    QString html = "<body><p>first para</p><p>second para</p></body>";
+    m_mainFrame->setHtml(html);
+    QWebElement body = m_mainFrame->documentElement();
+    const QWebElementCollection paras = body.findAll("p");
+
+    QWebElementCollection::const_iterator it = paras.begin();
+    QCOMPARE(*it, paras.at(0));
+    ++it;
+    QCOMPARE(*it, paras.at(1));
+    ++it;
+    QCOMPARE(it,  paras.end());
+}
+
 void tst_QWebElement::foreachManipulation()
 {
     QString html = "<body><p>first para</p><p>second para</p></body>";

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list