| <!DOCTYPE html> |
| <html> |
| <head> |
| <!-- |
| Copyright 2013 The Chromium Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| --> |
| <title>IDB test that database deletion triggers a compaction</title> |
| <script type="text/javascript" src="common.js"></script> |
| <script> |
| |
| var dbname = 'delete_compact'; |
| |
| // Follow navigation requests from the browser test. |
| window.onhashchange = test; |
| |
| function test() |
| { |
| if (location.hash === '#fill') |
| fill(); |
| else if (location.hash === '#purge') |
| purge(); |
| else if (location.hash !== '#pass' && location.hash !== '#fail') |
| fail('unexpected hash'); |
| } |
| |
| function fill() |
| { |
| var bytes = 0; |
| var request = indexedDB.open(dbname); |
| request.onerror = unexpectedErrorCallback; |
| request.onupgradeneeded = function() { |
| var db = request.result; |
| var store = db.createObjectStore('store'); |
| var kilobyte = Array(512+1).join('\u0100'); // 2 bytes in UTF-8 or UTF-16. |
| var megabyte = Array(1024+1).join(kilobyte); |
| for (var i = 0; i < 5; ++i) { |
| store.put(megabyte, i); |
| bytes += 1024 * 1024; |
| } |
| }; |
| request.onsuccess = function() { |
| var db = request.result; |
| db.close(); |
| done('filled with ' + bytes + ' bytes'); |
| }; |
| } |
| |
| function purge() |
| { |
| var request = indexedDB.deleteDatabase(dbname); |
| request.onerror = unexpectedErrorCallback; |
| request.onsuccess = function() { |
| done('purged'); |
| }; |
| } |
| |
| </script> |
| </head> |
| <body onload="test()"> |
| <div id="status">Starting...</div> |
| </body> |
| </html> |