IDB: ObjectStore cursor iterate() support
authorbeidson@apple.com <beidson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 30 Jan 2014 23:06:53 +0000 (23:06 +0000)
committerbeidson@apple.com <beidson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 30 Jan 2014 23:06:53 +0000 (23:06 +0000)
<rdar://problem/15941914> and https://bugs.webkit.org/show_bug.cgi?id=127867

Reviewed by Tim Horton.

* DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
(WebKit::SQLiteIDBCursor::iterate): Implement iterate() using advance()

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@163124 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp

index d300af6..3781a84 100644 (file)
@@ -1,3 +1,13 @@
+2014-01-30  Brady Eidson  <beidson@apple.com>
+
+        IDB: ObjectStore cursor iterate() support
+        <rdar://problem/15941914> and https://bugs.webkit.org/show_bug.cgi?id=127867
+
+        Reviewed by Tim Horton.
+
+        * DatabaseProcess/IndexedDB/sqlite/SQLiteIDBCursor.cpp:
+        (WebKit::SQLiteIDBCursor::iterate): Implement iterate() using advance()
+
 2014-01-30  Anders Carlsson  <andersca@apple.com>
 
         decidePolicyForNewWindowAction should take a NavigationActionData object
index 2b3005c..d699da8 100644 (file)
@@ -171,8 +171,19 @@ bool SQLiteIDBCursor::iterate(const WebCore::IDBKeyData& targetKey)
     ASSERT(m_transaction->sqliteTransaction());
     ASSERT(m_statement);
 
-    LOG_ERROR("IDBCursor.iterate not supported yet");
-    return false;
+    bool result = advance(1);
+
+    // Iterating with no key is equivalent to advancing 1 step.
+    if (targetKey.isNull || !result)
+        return result;
+
+    while (!m_completed && m_currentKey.compare(targetKey)) {
+        result = advance(1);
+        if (!result)
+            return false;
+    }
+
+    return result;
 }
 
 } // namespace WebKit