Chromium Code Reviews| 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> |