<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>156438</bug_id>
          
          <creation_ts>2016-04-09 11:07:09 -0700</creation_ts>
          <short_desc>[GTK] IndexedDB tests failing with Modern IDB</short_desc>
          <delta_ts>2023-01-25 19:34:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>Other</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>149117</dependson>
          <blocked>165889</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Catanzaro">mcatanzaro</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>beidson</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cturner</cc>
    
    <cc>magomez</cc>
    
    <cc>mcatanzaro</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1182469</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-04-09 11:07:09 -0700</bug_when>
    <thetext>Since Modern IDB has landed, I unskipped many IndexedDB tests in r199270. Unfortunately four of the tests are failing on the GTK port:

imported/w3c/web-platform-tests/IndexedDB/idbindex-multientry-big.htm
imported/w3c/web-platform-tests/IndexedDB/keyorder.htm
inspector/indexeddb/requestDatabaseNames.html
storage/indexeddb/cursor-key-order.html

All other IndexedDB tests appear to be passing, which is an awesome improvement.


--- /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/imported/w3c/web-platform-tests/IndexedDB/idbindex-multientry-big-expected.txt
+++ /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/imported/w3c/web-platform-tests/IndexedDB/idbindex-multientry-big-actual.txt
@@ -1,4 +1,6 @@
+
+Harness Error (TIMEOUT), message = null
 
 PASS Adding one item with 1000 multiEntry keys 
-PASS Getting the one item by 1000 indeced keys  
+TIMEOUT Getting the one item by 1000 indeced keys  Test timed out


--- /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/imported/w3c/web-platform-tests/IndexedDB/keyorder-expected.txt
+++ /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/imported/w3c/web-platform-tests/IndexedDB/keyorder-actual.txt
@@ -1,3 +1,5 @@
+
+Harness Error (TIMEOUT), message = null
 
 PASS Database readback sort - String &lt; Array 
 PASS IDBKey.cmp sorted - String &lt; Array 
@@ -17,10 +19,10 @@
 PASS IDBKey.cmp sorted - &quot;&quot; &lt; &quot;a&quot; &lt; &quot;ab&quot; &lt; &quot;b&quot; &lt; &quot;ba&quot; 
 PASS Database readback sort - Arrays 
 PASS IDBKey.cmp sorted - Arrays 
-PASS Database readback sort - Array.length: 10,000 &lt; Array.length: 10,001 
+TIMEOUT Database readback sort - Array.length: 10,000 &lt; Array.length: 10,001 Test timed out
 PASS IDBKey.cmp sorted - Array.length: 10,000 &lt; Array.length: 10,001 
-PASS Database readback sort - Infinity inside arrays 
+TIMEOUT Database readback sort - Infinity inside arrays Test timed out
 PASS IDBKey.cmp sorted - Infinity inside arrays 
-PASS Database readback sort - Test different stuff at once 
+TIMEOUT Database readback sort - Test different stuff at once Test timed out
 PASS IDBKey.cmp sorted - Test different stuff at once


--- /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/inspector/indexeddb/requestDatabaseNames-expected.txt
+++ /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/inspector/indexeddb/requestDatabaseNames-actual.txt
@@ -1,11 +1,4 @@
-CONSOLE MESSAGE: line 10: Created Database &apos;Database1&apos;
-CONSOLE MESSAGE: line 10: Created Database &apos;Database2&apos;
 
-PASS: No IndexedDB databases should exist initially
-Created Database &apos;Database1&apos;
-PASS: A single IndexedDB database should exist
-[&quot;Database1&quot;]
-Created Database &apos;Database2&apos;
-PASS: Two IndexedDB databases should exist
-[&quot;Database1&quot;,&quot;Database2&quot;]
+PROTOCOL ERROR: Could not obtain database names.
+ERROR: Uncaught exception in inspector page while dispatching callback for command IndexedDB.requestDatabaseNames PROTOCOL ERROR


--- /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/storage/indexeddb/cursor-key-order-expected.txt
+++ /home/slave/webkitgtk/gtk-linux-64-release-tests/build/layout-test-results/storage/indexeddb/cursor-key-order-actual.txt
@@ -119,156 +119,148 @@
 cursor = curreq.result
 PASS compare(cursor.key, &apos;&apos;) is true
 getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, &apos;\0&apos;) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, &apos;a&apos;) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, &apos;aa&apos;) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, &apos;b&apos;) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, &apos;ba&apos;) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, &apos;¢&apos;) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, &apos;水&apos;) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, &apos;𝄞&apos;) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, &apos;�&apos;) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, []) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [-Infinity]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [-Number.MAX_VALUE]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [-1]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [-Number.MIN_VALUE]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [0]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [Number.MIN_VALUE]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [1]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [Number.MAX_VALUE]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [Infinity]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [new Date(0)]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [new Date(1000)]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [new Date(1317399931023)]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [&apos;&apos;]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [&apos;\0&apos;]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [&apos;a&apos;]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [&apos;aa&apos;]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [&apos;b&apos;]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [&apos;ba&apos;]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [&apos;¢&apos;]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [&apos;水&apos;]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [&apos;𝄞&apos;]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [&apos;�&apos;]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [[]]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [[], []]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [[], [], []]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [[[]]]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-cursor = curreq.result
-PASS compare(cursor.key, [[[[]]]]) is true
-getreq = store.get(cursor.key)
-PASS getreq.result is count++
-PASS count is keys.length
+FAIL getreq.result should be 12. Was 13.
+cursor = curreq.result
+FAIL compare(cursor.key, &apos;\0&apos;) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 13. Was 14.
+cursor = curreq.result
+FAIL compare(cursor.key, &apos;a&apos;) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 14. Was 15.
+cursor = curreq.result
+FAIL compare(cursor.key, &apos;aa&apos;) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 15. Was 16.
+cursor = curreq.result
+FAIL compare(cursor.key, &apos;b&apos;) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 16. Was 17.
+cursor = curreq.result
+FAIL compare(cursor.key, &apos;ba&apos;) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 17. Was 18.
+cursor = curreq.result
+FAIL compare(cursor.key, &apos;¢&apos;) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 18. Was 19.
+cursor = curreq.result
+FAIL compare(cursor.key, &apos;水&apos;) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 19. Was 20.
+cursor = curreq.result
+FAIL compare(cursor.key, &apos;𝄞&apos;) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 20. Was 21.
+cursor = curreq.result
+FAIL compare(cursor.key, &apos;�&apos;) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 21. Was 22.
+cursor = curreq.result
+FAIL compare(cursor.key, []) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 22. Was 23.
+cursor = curreq.result
+FAIL compare(cursor.key, [-Infinity]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 23. Was 24.
+cursor = curreq.result
+FAIL compare(cursor.key, [-Number.MAX_VALUE]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 24. Was 25.
+cursor = curreq.result
+FAIL compare(cursor.key, [-1]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 25. Was 26.
+cursor = curreq.result
+FAIL compare(cursor.key, [-Number.MIN_VALUE]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 26. Was 27.
+cursor = curreq.result
+FAIL compare(cursor.key, [0]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 27. Was 28.
+cursor = curreq.result
+FAIL compare(cursor.key, [Number.MIN_VALUE]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 28. Was 29.
+cursor = curreq.result
+FAIL compare(cursor.key, [1]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 29. Was 30.
+cursor = curreq.result
+FAIL compare(cursor.key, [Number.MAX_VALUE]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 30. Was 31.
+cursor = curreq.result
+FAIL compare(cursor.key, [Infinity]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 31. Was 32.
+cursor = curreq.result
+FAIL compare(cursor.key, [new Date(0)]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 32. Was 33.
+cursor = curreq.result
+FAIL compare(cursor.key, [new Date(1000)]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 33. Was 34.
+cursor = curreq.result
+FAIL compare(cursor.key, [new Date(1317399931023)]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 34. Was 36.
+cursor = curreq.result
+FAIL compare(cursor.key, [&apos;&apos;]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 35. Was 37.
+cursor = curreq.result
+FAIL compare(cursor.key, [&apos;\0&apos;]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 36. Was 38.
+cursor = curreq.result
+FAIL compare(cursor.key, [&apos;a&apos;]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 37. Was 39.
+cursor = curreq.result
+FAIL compare(cursor.key, [&apos;aa&apos;]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 38. Was 40.
+cursor = curreq.result
+FAIL compare(cursor.key, [&apos;b&apos;]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 39. Was 41.
+cursor = curreq.result
+FAIL compare(cursor.key, [&apos;ba&apos;]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 40. Was 42.
+cursor = curreq.result
+FAIL compare(cursor.key, [&apos;¢&apos;]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 41. Was 43.
+cursor = curreq.result
+FAIL compare(cursor.key, [&apos;水&apos;]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 42. Was 44.
+cursor = curreq.result
+FAIL compare(cursor.key, [&apos;𝄞&apos;]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 43. Was 45.
+cursor = curreq.result
+FAIL compare(cursor.key, [&apos;�&apos;]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 44. Was 46.
+cursor = curreq.result
+FAIL compare(cursor.key, [[]]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 45. Was 47.
+cursor = curreq.result
+FAIL compare(cursor.key, [[], []]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 46. Was 48.
+cursor = curreq.result
+FAIL compare(cursor.key, [[], [], []]) should be true. Was false.
+getreq = store.get(cursor.key)
+FAIL getreq.result should be 47. Was 49.
+FAIL count should be 50. Was 48.
 
 validate compare function
 PASS compare(undefined, undefined) is true</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1182471</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-04-09 11:12:03 -0700</bug_when>
    <thetext>Updated expectations in r199272.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331939</commentid>
    <comment_count>2</comment_count>
    <who name="Charlie Turner">cturner</who>
    <bug_when>2017-07-25 08:53:57 -0700</bug_when>
    <thetext>imported/w3c/web-platform-tests/IndexedDB/idbindex-multientry-big.htm appears to have been fixed by r209824.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1331969</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2017-07-25 09:55:09 -0700</bug_when>
    <thetext>(In reply to Charlie Turner from comment #2)
&gt; imported/w3c/web-platform-tests/IndexedDB/idbindex-multientry-big.htm
&gt; appears to have been fixed by r209824.

It&apos;s *much* better now, especially in release. I think it still occasionally times out in debug builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1503680</commentid>
    <comment_count>4</comment_count>
    <who name="Miguel Gomez">magomez</who>
    <bug_when>2019-02-07 01:59:04 -0800</bug_when>
    <thetext>inspector/indexeddb/requestDatabaseNames.html is passing since r240969</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1928445</commentid>
    <comment_count>5</comment_count>
    <who name="Diego Pino">dpino</who>
    <bug_when>2023-01-25 19:34:04 -0800</bug_when>
    <thetext>There are no references to this bug in any TestExpectations. It&apos;s probable this bug was solved at some point but it wasn&apos;t marked as closed. I&apos;m closing this bug now. If you think this bug report is still valid, please reopen it and add an entry to TestExpectations.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>