Index: third_party/WebKit/LayoutTests/http/tests/inspector/indexeddb/database-refresh-view.html |
diff --git a/third_party/WebKit/LayoutTests/http/tests/inspector/indexeddb/database-refresh-view.html b/third_party/WebKit/LayoutTests/http/tests/inspector/indexeddb/database-refresh-view.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..30e915d55687aab659b8e1251a450d144a69ce0f |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/http/tests/inspector/indexeddb/database-refresh-view.html |
@@ -0,0 +1,110 @@ |
+<html> |
+<head> |
+<script src="../inspector-test.js"></script> |
+<script src="../resources-test.js"></script> |
+<script src="../console-test.js"></script> |
+<script src="indexeddb-test.js"></script> |
+<script> |
+ |
+var createDatabase = function(databaseName) { |
dgozman
2017/05/26 19:10:46
function createDatabase(
kristipark
2017/05/26 22:42:15
Done.
|
+ var callback; |
+ var promise = new Promise((fulfill) => callback = fulfill); |
+ var request = indexedDB.open(databaseName); |
+ request.onerror = function(event) { |
+ console.error("IndexedDB error: " + event); |
+ } |
+ request.onsuccess = function(event) { |
+ request.result.close(); |
+ callback(); |
+ } |
+ return promise; |
+} |
+ |
+var createObjectStore = function(databaseName, objectStoreName, indexName) { |
dgozman
2017/05/26 19:10:46
function createObjectStore(
kristipark
2017/05/26 22:42:16
Done.
|
+ var callback; |
+ var promise = new Promise((fulfill) => callback = fulfill); |
+ var request = indexedDB.open(databaseName); |
+ request.onerror = function(event) { |
+ console.error("IndexedDB error: " + event); |
+ } |
+ request.onsuccess = function(event) { |
+ var db = request.result; |
+ var version = db.version; |
+ db.close(); |
+ |
+ var upgradeRequest = indexedDB.open(databaseName, version + 1); |
+ |
+ upgradeRequest.onupgradeneeded = function(e) { |
+ var upgradeDb = e.target.result; |
+ var store = upgradeDb.createObjectStore(objectStoreName, { keyPath: "", autoIncrement: false }); |
+ store.createIndex(indexName, "", { unique: false, multiEntry: false }); |
+ callback(); |
+ } |
+ upgradeRequest.onsuccess = function(e) { |
+ var upgradeDb = e.target.result; |
+ upgradeDb.close(); |
+ callback(); |
+ } |
+ } |
+ return promise; |
+} |
+ |
+window.debugTest = true; |
dgozman
2017/05/26 19:10:46
Remove?
kristipark
2017/05/26 22:42:16
Done.
|
+async function test() |
+{ |
+ var databaseName = "testDatabase"; |
+ var objectStoreName1 = "testObjectStore1"; |
+ var objectStoreName2 = "testObjectStore2"; |
+ var indexName = "testIndex"; |
+ |
+ var indexedDBModel = InspectorTest.mainTarget.model(Resources.IndexedDBModel); |
+ var mainFrameId = InspectorTest.resourceTreeModel.mainFrame.id; |
+ var securityOrigin = "http://127.0.0.1:8000"; |
+ var databaseId; |
+ |
+ var refreshDatabase = function(databaseId, callback) { |
dgozman
2017/05/26 19:10:46
function refreshDatabase(
kristipark
2017/05/26 22:42:16
Done.
|
+ var event = indexedDBModel.addEventListener(Resources.IndexedDBModel.Events.DatabaseLoaded, () => { |
+ Common.EventTarget.removeEventListeners([event]); |
+ callback(); |
+ }); |
+ indexedDBModel.refreshDatabase(databaseId); |
dgozman
2017/05/26 19:10:46
It's better to get a view and emulate click on the
kristipark
2017/05/26 22:42:15
Done.
|
+ } |
+ |
+ // Initial tree |
+ InspectorTest.dumpIndexedDBTree(); |
+ |
+ // Create database |
+ await InspectorTest.evaluateInPageAsync("createDatabase('" + databaseName + "')"); |
+ var waitUntilAdded = function(callback) { |
dgozman
2017/05/26 19:10:46
function waitUntilAdded(callback) {
kristipark
2017/05/26 22:42:16
Done.
|
+ var event = indexedDBModel.addEventListener(Resources.IndexedDBModel.Events.DatabaseAdded, () => { |
+ Common.EventTarget.removeEventListeners([event]); |
+ callback(); |
+ }); |
+ UI.panels.resources._sidebar.indexedDBListTreeElement.refreshIndexedDB(); |
+ } |
+ await new Promise(waitUntilAdded); |
+ var idbDatabaseTreeElement = UI.panels.resources._sidebar.indexedDBListTreeElement._idbDatabaseTreeElements[0]; |
+ databaseId = idbDatabaseTreeElement._databaseId; |
+ InspectorTest.addResult("Created database."); |
+ InspectorTest.dumpIndexedDBTree(); |
+ |
+ // Create first objectstore |
+ await InspectorTest.evaluateInPageAsync("createObjectStore('" + databaseName + "', '" + objectStoreName1 + "', '" + indexName + "')"); |
+ await new Promise(resolve => refreshDatabase(databaseId, resolve)); |
+ InspectorTest.addResult("Created first objectstore."); |
+ InspectorTest.dumpIndexedDBTree(); |
+ |
+ // Create second objectstore |
+ await InspectorTest.evaluateInPageAsync("createObjectStore('" + databaseName + "', '" + objectStoreName2 + "', '" + indexName + "')"); |
+ await new Promise(resolve => refreshDatabase(databaseId, resolve)); |
+ InspectorTest.addResult("Created second objectstore."); |
+ InspectorTest.dumpIndexedDBTree(); |
+ |
+ InspectorTest.completeTest(); |
+} |
+</script> |
+</head> |
+<body onload="runTest()"> |
+<p>Tests refreshing the database information and data views.</p> |
+</body> |
+</html> |