| <!DOCTYPE html> |
| <html> |
| <!-- |
| Copyright (c) 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. |
| --> |
| <head> |
| <title>IDB test that origins over quota aren't trapped</title> |
| <script type="text/javascript" src="common.js"></script> |
| </head> |
| <script> |
| function test() { |
| // This file runs after fill_up_5k puts this origin over quota. |
| request = indexedDB.open("fill_up_5k.html"); |
| request.onblocked = unexpectedBlockedCallback; |
| request.onupgradeneeded = unexpectedUpgradeNeededCallback; |
| request.onsuccess = onOpen; |
| request.onerror = unexpectedErrorCallback; |
| } |
| |
| function onOpen() { |
| db = event.target.result; |
| shouldBe("db.objectStoreNames.length", "1"); |
| trans = db.transaction(db.objectStoreNames, "readwrite"); |
| trans.objectStore(db.objectStoreNames[0]).put("dogs", "cats"); |
| trans.oncomplete = unexpectedCompleteCallback; |
| trans.onabort = function() { |
| shouldBeEqualToString("trans.error.name", "QuotaExceededError"); |
| testOnlyDeleteTransaction(); |
| } |
| } |
| |
| function testOnlyDeleteTransaction() { |
| trans = db.transaction(db.objectStoreNames, "readwrite"); |
| request = trans.objectStore(db.objectStoreNames[0]).openCursor(); |
| request.onerror = unexpectedErrorCallback; |
| request.onsuccess = function() { |
| cursor = request.result; |
| shouldBeTrue("cursor != null"); |
| cursor.delete(); |
| } |
| trans.onabort = unexpectedAbortCallback; |
| trans.oncomplete = testReadOnlyTransaction; |
| } |
| |
| function testReadOnlyTransaction() { |
| trans = db.transaction(db.objectStoreNames, "readonly"); |
| trans.objectStore(db.objectStoreNames[0]).get("cats").onerror = |
| unexpectedErrorCallback; |
| trans.onabort = unexpectedAbortCallback; |
| trans.oncomplete = done; |
| } |
| |
| </script> |
| <body onLoad="test()"> |
| <div id="status">Starting...</div> |
| </body> |
| </html> |