Reviewed by Darin's rubberstamp
authorbeidson@apple.com <beidson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 8 Dec 2007 00:02:46 +0000 (00:02 +0000)
committerbeidson@apple.com <beidson@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 8 Dec 2007 00:02:46 +0000 (00:02 +0000)
        When developing the Database feature and dealing with UI Delegate issues, it is important to have
        live examples on the web to help reproduce certain situations.

        This file is a dumping ground for such examples, and starts out with one function - the ability to add
        arbitrary amounts of data to a database to test the quota-related mechanisms of the UI

        * misc/DatabaseTester.html: Added.

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

WebKitSite/ChangeLog
WebKitSite/misc/DatabaseTester.html [new file with mode: 0644]

index e26d046..8bbdde2 100644 (file)
@@ -1,5 +1,17 @@
 2007-12-07  Brady Eidson  <beidson@apple.com>
 
+        Reviewed by Darin's rubberstamp
+
+        When developing the Database feature and dealing with UI Delegate issues, it is important to have
+        live examples on the web to help reproduce certain situations.
+
+        This file is a dumping ground for such examples, and starts out with one function - the ability to add
+        arbitrary amounts of data to a database to test the quota-related mechanisms of the UI
+
+        * misc/DatabaseTester.html: Added.
+
+2007-12-07  Brady Eidson  <beidson@apple.com>
+
         Reviewed by Adam Roben
 
         * misc/DatabaseExample.html: Changed to differentiate failure between running with an
diff --git a/WebKitSite/misc/DatabaseTester.html b/WebKitSite/misc/DatabaseTester.html
new file mode 100644 (file)
index 0000000..ee19383
--- /dev/null
@@ -0,0 +1,99 @@
+<html>
+<head>
+<title>Database Tester</title>
+<style>
+div.Experiment { border: 1px solid black; 
+                 padding: 1 1 1 1; }
+</style>
+<script>
+
+var junkDB;
+
+openJunkDatabase();
+
+function openJunkDatabase()
+{
+    if (!window.openDatabase)
+        return;
+        
+    try {
+        junkDB = openDatabase("JunkDataTest", "1.0", "Repository for junk data to test quota management", 1);
+    } catch(err) { alert("Failed to open database - " + err); }
+    
+    junkDB.transaction(function(tx) {
+        tx.executeSql("SELECT COUNT(*) FROM JunkDataTable", [], null, function(tx, error) {
+            tx.executeSql("CREATE TABLE JunkDataTable (data TEXT)", []);
+        });
+    }, function(err) {
+        alert("Error - " + err.code);
+    });
+    
+    return junkDB;
+}
+
+var totalAdded = 0;
+
+function addData()
+{
+    if (!junkDB && !openJunkDatabase())
+        return;
+        
+    var length = Number(dataSizeElement().value);
+    var data = makeStringOfLength(length);
+    
+    junkDB.transaction(function(tx) {
+        tx.executeSql("INSERT INTO JunkDataTable (data) VALUES (?)", [data], function(tx, result) {
+            totalAdded += length;
+            updateTotal();
+        }, function(tx, err) {
+            alert("Failed to insert data into database - (" + err.code + ") " + err.message);
+        });
+    }, function(err) {
+        alert("Failed to open transaction with junk database - (" + err.code + ") " + err.message);
+    });
+}
+
+function makeStringOfLength(n)
+{
+    var str = "X";
+    while (str.length < n)
+        str += ((str.length << 1) < n ? str : makeStringOfLength(n - str.length));
+
+    return str;
+}
+
+var _dataSizeElement;
+function dataSizeElement()
+{
+    if (!_dataSizeElement)
+        _dataSizeElement = document.getElementById("DataSize");
+    
+    return _dataSizeElement;
+}
+
+function updateDataSize()
+{
+    var num = Number(dataSizeElement().value);
+    document.getElementById("DataSizeDisplay").value = "Data size: " + num; 
+}
+
+function updateTotal()
+{
+    document.getElementById("TotalAdded").innerHTML = "Total characters added: " + totalAdded;
+}
+
+</script>
+</head>
+<body>
+<p>This page is a dumping ground for various tests and features for the HTML5 client side database storage spec.</p>
+<p>Any manual tests or experiments needing for development of the storage API can be placed here so they are accessible on a live web page</p>
+
+<div class="Experiment">
+<input id="DataSize" type="range" min="0" max="1048576" step="1024" value="1024" oninput="updateDataSize();"><br>
+<textarea id="DataSizeDisplay" rows="1" cols="15" readonly style="resize:none"></textarea><br>
+<textarea id="TotalAdded" rows="1" cols="25" readonly style="resize:none">Total characters added: 0</textarea><br>
+<script>updateDataSize();</script>
+<button onclick="addData();">Add Data</button>
+</div>
+</body>
+</html>