Diff
Modified: trunk/LayoutTests/ChangeLog (280175 => 280176)
--- trunk/LayoutTests/ChangeLog 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/LayoutTests/ChangeLog 2021-07-22 16:49:58 UTC (rev 280176)
@@ -1,3 +1,34 @@
+2021-07-22 Sihui Liu <[email protected]>
+
+ [macOS Debug] Layout Test imported/w3c/web-platform-tests/IndexedDB/open-request-queue.html is a flaky timeout.
+ https://bugs.webkit.org/show_bug.cgi?id=172044
+
+ Reviewed by Chris Dumez.
+
+ * platform/mac-wk1/TestExpectations:
+ * platform/mac-wk2/TestExpectations:
+ * storage/indexeddb/delete-in-upgradeneeded-close-in-open-success-expected.txt:
+ * storage/indexeddb/delete-in-upgradeneeded-close-in-open-success-private-expected.txt:
+ * storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange-expected.txt:
+ * storage/indexeddb/delete-in-upgradeneeded-close-in-versionchange-private-expected.txt:
+ * storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-expected.txt:
+ * storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-private-expected.txt:
+ * storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers-expected.txt:
+ * storage/indexeddb/intversion-long-queue-expected.txt:
+ * storage/indexeddb/intversion-long-queue-private-expected.txt:
+ * storage/indexeddb/modern/deletedatabase-2-private.html: Removed. This test checks if a delete request is
+ started when there are ongoing open requests. We are removing this behavior to match spec so we don't need to
+ keep the test.
+ * storage/indexeddb/modern/deletedatabase-2.html: Removed. Ditto.
+ * storage/indexeddb/modern/resources/deletedatabase-2.js: Removed. Ditto.
+ * storage/indexeddb/resources/delete-in-upgradeneeded-close-in-open-success.js:
+ (versionChangeCallback):
+ (deleteBlockedCallback):
+ * storage/indexeddb/resources/delete-in-upgradeneeded-close-in-versionchange.js:
+ (initiallyDeleted):
+ * storage/indexeddb/resources/deletedatabase-delayed-by-open-and-versionchange.js:
+ (onOpenSuccess):
+
2021-07-22 Alan Bujtas <[email protected]>
REGRESSION(r269745) Google Developers maps does not fully load
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (280175 => 280176)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2021-07-22 16:49:58 UTC (rev 280176)
@@ -1,3 +1,12 @@
+2021-07-22 Sihui Liu <[email protected]>
+
+ [macOS Debug] Layout Test imported/w3c/web-platform-tests/IndexedDB/open-request-queue.html is a flaky timeout.
+ https://bugs.webkit.org/show_bug.cgi?id=172044
+
+ Reviewed by Chris Dumez.
+
+ * web-platform-tests/IndexedDB/open-request-queue-expected.txt:
+
2021-07-21 Rob Buis <[email protected]>
[AspectRatio] Fix select-element-001.html
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/open-request-queue-expected.txt (280175 => 280176)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/open-request-queue-expected.txt 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/IndexedDB/open-request-queue-expected.txt 2021-07-22 16:49:58 UTC (rev 280176)
@@ -1,5 +1,3 @@
-Harness Error (TIMEOUT), message = null
+PASS Opens and deletes are processed in order
-TIMEOUT Opens and deletes are processed in order Test timed out
-
Modified: trunk/LayoutTests/platform/mac-wk1/TestExpectations (280175 => 280176)
--- trunk/LayoutTests/platform/mac-wk1/TestExpectations 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/LayoutTests/platform/mac-wk1/TestExpectations 2021-07-22 16:49:58 UTC (rev 280176)
@@ -719,8 +719,6 @@
webkit.org/b/179775 imported/w3c/web-platform-tests/xhr/firing-events-http-no-content-length.html [ Pass Failure ]
-webkit.org/b/172044 [ Debug ] imported/w3c/web-platform-tests/IndexedDB/open-request-queue.html [ Pass Timeout ]
-
webkit.org/b/184742 accessibility/mac/async-increment-decrement-action.html [ Skip ]
webkit.org/b/185897 accessibility/mac/set-value-editable-types.html [ Skip ]
webkit.org/b/193414 accessibility/mac/relative-frame.html [ Skip ]
Modified: trunk/LayoutTests/platform/mac-wk2/TestExpectations (280175 => 280176)
--- trunk/LayoutTests/platform/mac-wk2/TestExpectations 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/LayoutTests/platform/mac-wk2/TestExpectations 2021-07-22 16:49:58 UTC (rev 280176)
@@ -645,8 +645,6 @@
webkit.org/b/172148 tiled-drawing/scrolling/scroll-snap/scroll-snap-mandatory-mainframe-vertical.html [ Pass Failure ]
-webkit.org/b/172044 [ Debug ] imported/w3c/web-platform-tests/IndexedDB/open-request-queue.html [ Pass Timeout ]
-
webkit.org/b/173779 [ Debug ] fast/scrolling/arrow-key-scroll-in-rtl-document.html [ Pass Failure ]
webkit.org/b/173500 http/tests/loading/basic-auth-remove-credentials.html [ Pass Failure ]
Modified: trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-open-success-expected.txt (280175 => 280176)
--- trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-open-success-expected.txt 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-open-success-expected.txt 2021-07-22 16:49:58 UTC (rev 280176)
@@ -19,11 +19,6 @@
deleteRequest = indexedDB.deleteDatabase(dbname)
request2._onsuccess_ = deleteSuccessCallback
-versionChangeCallback():
-PASS event.oldVersion is 1
-PASS event.newVersion is null
-sawVersionChange = true
-
openSuccess():
PASS sawUpgradeNeeded is true
db = event.target.result
@@ -31,8 +26,8 @@
db.close()
deleteSuccessCallback():
-PASS sawVersionChange is true
-PASS sawDeleteBlocked is true
+PASS sawVersionChange is false
+PASS sawDeleteBlocked is false
PASS successfullyParsed is true
TEST COMPLETE
Modified: trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-open-success-private-expected.txt (280175 => 280176)
--- trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-open-success-private-expected.txt 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/LayoutTests/storage/indexeddb/delete-in-upgradeneeded-close-in-open-success-private-expected.txt 2021-07-22 16:49:58 UTC (rev 280176)
@@ -19,11 +19,6 @@
deleteRequest = indexedDB.deleteDatabase(dbname)
request2._onsuccess_ = deleteSuccessCallback
-versionChangeCallback():
-PASS event.oldVersion is 1
-PASS event.newVersion is null
-sawVersionChange = true
-
openSuccess():
PASS sawUpgradeNeeded is true
db = event.target.result
@@ -31,8 +26,8 @@
db.close()
deleteSuccessCallback():
-PASS sawVersionChange is true
-PASS sawDeleteBlocked is true
+PASS sawVersionChange is false
+PASS sawDeleteBlocked is false
PASS successfullyParsed is true
TEST COMPLETE
Modified: trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-expected.txt (280175 => 280176)
--- trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-expected.txt 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-expected.txt 2021-07-22 16:49:58 UTC (rev 280176)
@@ -15,16 +15,11 @@
indexedDB.deleteDatabase(dbname)
h.createObjectStore('testObjectStore').put('bar', 'foo')
-onVersionChange():
-PASS event.target.version is 1
-PASS event.oldVersion is 1
-PASS event.newVersion is null
-
transactionOnComplete():
versionChangeComplete = true
onOpenSuccess():
-PASS blockedCalled is true
+PASS blockedCalled is false
h = event.target.result
h.close()
Modified: trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-private-expected.txt (280175 => 280176)
--- trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-private-expected.txt 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-private-expected.txt 2021-07-22 16:49:58 UTC (rev 280176)
@@ -15,16 +15,11 @@
indexedDB.deleteDatabase(dbname)
h.createObjectStore('testObjectStore').put('bar', 'foo')
-onVersionChange():
-PASS event.target.version is 1
-PASS event.oldVersion is 1
-PASS event.newVersion is null
-
transactionOnComplete():
versionChangeComplete = true
onOpenSuccess():
-PASS blockedCalled is true
+PASS blockedCalled is false
h = event.target.result
h.close()
Modified: trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers-expected.txt (280175 => 280176)
--- trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers-expected.txt 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/LayoutTests/storage/indexeddb/deletedatabase-delayed-by-open-and-versionchange-workers-expected.txt 2021-07-22 16:49:58 UTC (rev 280176)
@@ -16,16 +16,11 @@
[Worker] indexedDB.deleteDatabase(dbname)
[Worker] h.createObjectStore('testObjectStore').put('bar', 'foo')
[Worker]
-[Worker] onVersionChange():
-PASS [Worker] event.target.version is 1
-PASS [Worker] event.oldVersion is 1
-PASS [Worker] event.newVersion is null
-[Worker]
[Worker] transactionOnComplete():
[Worker] versionChangeComplete = true
[Worker]
[Worker] onOpenSuccess():
-PASS [Worker] blockedCalled is true
+PASS [Worker] blockedCalled is false
[Worker] h = event.target.result
[Worker] h.close()
[Worker]
Modified: trunk/LayoutTests/storage/indexeddb/intversion-long-queue-expected.txt (280175 => 280176)
--- trunk/LayoutTests/storage/indexeddb/intversion-long-queue-expected.txt 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/LayoutTests/storage/indexeddb/intversion-long-queue-expected.txt 2021-07-22 16:49:58 UTC (rev 280176)
@@ -43,10 +43,6 @@
transaction = event.target.transaction
transaction._oncomplete_ = connection2TransactionComplete
-connection2VersionChangeCallback():
-PASS event.oldVersion is 2
-PASS event.newVersion is null
-
connection2TransactionComplete():
PASS db.version is 2
Modified: trunk/LayoutTests/storage/indexeddb/intversion-long-queue-private-expected.txt (280175 => 280176)
--- trunk/LayoutTests/storage/indexeddb/intversion-long-queue-private-expected.txt 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/LayoutTests/storage/indexeddb/intversion-long-queue-private-expected.txt 2021-07-22 16:49:58 UTC (rev 280176)
@@ -43,10 +43,6 @@
transaction = event.target.transaction
transaction._oncomplete_ = connection2TransactionComplete
-connection2VersionChangeCallback():
-PASS event.oldVersion is 2
-PASS event.newVersion is null
-
connection2TransactionComplete():
PASS db.version is 2
Deleted: trunk/LayoutTests/storage/indexeddb/modern/deletedatabase-2-private.html (280175 => 280176)
--- trunk/LayoutTests/storage/indexeddb/modern/deletedatabase-2-private.html 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/LayoutTests/storage/indexeddb/modern/deletedatabase-2-private.html 2021-07-22 16:49:58 UTC (rev 280176)
@@ -1,11 +0,0 @@
-<!-- webkit-test-runner [ useEphemeralSession=true ] -->
-<html>
-<head>
-<script src=""
-<script src=""
-</head>
-<body>
-
-<script src=""
-</body>
-</html>
Deleted: trunk/LayoutTests/storage/indexeddb/modern/deletedatabase-2.html (280175 => 280176)
--- trunk/LayoutTests/storage/indexeddb/modern/deletedatabase-2.html 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/LayoutTests/storage/indexeddb/modern/deletedatabase-2.html 2021-07-22 16:49:58 UTC (rev 280176)
@@ -1,10 +0,0 @@
-<html>
-<head>
-<script src=""
-<script src=""
-</head>
-<body>
-
-<script src=""
-</body>
-</html>
Deleted: trunk/LayoutTests/storage/indexeddb/modern/resources/deletedatabase-2.js (280175 => 280176)
--- trunk/LayoutTests/storage/indexeddb/modern/resources/deletedatabase-2.js 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/LayoutTests/storage/indexeddb/modern/resources/deletedatabase-2.js 2021-07-22 16:49:58 UTC (rev 280176)
@@ -1,147 +0,0 @@
-description("This tests that if deleteDatabase is called while there is already an open connection to the database that the open connection gets the appropriate versionChange event. \
-That open connection also has an in-progress transaction at the time it gets the versionChange event.");
-
-indexedDBTest(prepareDatabase, successCallback);
-
-function done()
-{
- finishJSTest();
-}
-
-function log(message)
-{
- debug(message);
-}
-
-var stopSpinning = false;
-
-function successCallback()
-{
- debug("open db success");
-}
-
-var dbname;
-var resolveTransactionPromise;
-var transactionPromise = new Promise(resolve => resolveTransactionPromise = resolve);
-
-function prepareDatabase(e)
-{
- debug("Initial upgrade old version - " + e.oldVersion + " new version - " + e.newVersion);
-
- event.target._onerror_ = function(e) {
- debug("Open request error: " + event.target.error.name);
- resolveTransactionPromise();
- }
-
- var versionTransaction = event.target.transaction;
- var database = event.target.result;
- dbname = database.name;
- var objectStore = database.createObjectStore("TestObjectStore");
- objectStore.put("This is a record", 1);
-
- // Spin the transaction until told to stop spinning it.
- var keepGoing = function() {
- if (!stopSpinning)
- objectStore.get(1)._onsuccess_ = keepGoing;
- }
- objectStore.get(1)._onsuccess_ = keepGoing;
-
- database._onversionchange_ = function(e)
- {
- debug("First connection received versionchange event: oldVersion " + e.oldVersion + ", newVersion " + e.newVersion);
-
- var shutErDown = function() {
- database.close();
- stopSpinning = true;
- }
- window.setTimeout(shutErDown, 0);
- }
-
- event.target.transaction._oncomplete_ = function()
- {
- debug("First version change complete");
- }
-
- event.target.transaction._onabort_ = function()
- {
- debug("Version change unexpected abort");
- done();
- }
- event.target.transaction._onerror_ = function()
- {
- debug("Version change unexpected error");
- done();
- }
-
- window.setTimeout(continueTest1, 0);
-}
-
-function continueTest1()
-{
- debug("Requesting deleteDatabase");
- var request = window.indexedDB.deleteDatabase(dbname);
- request._onsuccess_ = async function(e)
- {
- await transactionPromise;
- debug("Delete database success: oldVersion " + e.oldVersion + ", newVersion " + e.newVersion);
- continueTest2();
- }
- request._onerror_ = function(e)
- {
- debug("Delete database unexpected error");
- done();
- }
- request._onupgradeneeded_ = function(e)
- {
- debug("Delete database unexpected upgradeneeded");
- done();
- }
-}
-
-function continueTest2()
-{
- debug("Recreating database to make sure it's new and empty");
- var request = window.indexedDB.open(dbname);
-
- request._onupgradeneeded_ = function(e)
- {
- debug("Second upgrade old version - " + e.oldVersion + " new version - " + e.newVersion);
- var versionTransaction = request.transaction;
-
- try {
- var objectStore = versionTransaction.objectStore("TestObjectStore");
- } catch(e) {
- debug("Unable to get object store in second upgrade transaction (which is correct because it should not be there)");
- }
-
- versionTransaction._oncomplete_ = function(e)
- {
- debug("Second database upgrade success");
- done();
- }
-
- versionTransaction._onabort_ = function(e)
- {
- debug("Second database upgrade unexpected abort");
- done();
- }
-
- versionTransaction._onerror_ = function(e)
- {
- debug("Second database upgrade unexpected error");
- done();
- }
- }
-
- request._onsuccess_ = function(e)
- {
- debug("Second database opening unexpected success");
- done();
- }
-
- request._onerror_ = function(e)
- {
- debug("Second database opening unexpected error");
- done();
- }
-}
Modified: trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-open-success.js (280175 => 280176)
--- trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-open-success.js 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-open-success.js 2021-07-22 16:49:58 UTC (rev 280176)
@@ -57,7 +57,7 @@
preamble(evt);
shouldBe("event.oldVersion", "1");
shouldBeNull("event.newVersion");
- evalAndLog("sawVersionChange = true");
+ evalAndLog("sawVersionChange = false");
}
function deleteBlockedCallback(evt)
@@ -64,14 +64,14 @@
{
if (!sawVersionChange)
debug("deleteBlockedCallback was called *before* versionChangeCallback, which is wrong");
- eval("sawDeleteBlocked = true");
+ eval("sawDeleteBlocked = false");
}
function deleteSuccessCallback(evt)
{
preamble(evt);
- shouldBeTrue("sawVersionChange");
- shouldBeTrue("sawDeleteBlocked");
+ shouldBeFalse("sawVersionChange");
+ shouldBeFalse("sawDeleteBlocked");
finishJSTest();
}
Modified: trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-versionchange.js (280175 => 280176)
--- trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-versionchange.js 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/LayoutTests/storage/indexeddb/resources/delete-in-upgradeneeded-close-in-versionchange.js 2021-07-22 16:49:58 UTC (rev 280176)
@@ -23,7 +23,6 @@
preamble(evt);
evalAndLog("request = indexedDB.open(dbname, 1)");
request._onupgradeneeded_ = upgradeNeededCallback;
- request._onsuccess_ = unexpectedSuccessCallback;
}
function upgradeNeededCallback(evt)
Modified: trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-delayed-by-open-and-versionchange.js (280175 => 280176)
--- trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-delayed-by-open-and-versionchange.js 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/LayoutTests/storage/indexeddb/resources/deletedatabase-delayed-by-open-and-versionchange.js 2021-07-22 16:49:58 UTC (rev 280176)
@@ -45,7 +45,7 @@
function onOpenSuccess(evt)
{
preamble(evt);
- shouldBeTrue("blockedCalled");
+ shouldBeFalse("blockedCalled");
evalAndLog("h = event.target.result");
evalAndLog("h.close()");
}
\ No newline at end of file
Modified: trunk/Source/WebCore/ChangeLog (280175 => 280176)
--- trunk/Source/WebCore/ChangeLog 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/Source/WebCore/ChangeLog 2021-07-22 16:49:58 UTC (rev 280176)
@@ -1,3 +1,20 @@
+2021-07-22 Sihui Liu <[email protected]>
+
+ [macOS Debug] Layout Test imported/w3c/web-platform-tests/IndexedDB/open-request-queue.html is a flaky timeout.
+ https://bugs.webkit.org/show_bug.cgi?id=172044
+
+ Reviewed by Chris Dumez.
+
+ We used to start handling delete request when there is still open request in flight. We should start a request
+ after previous requests are done, to match spec (https://www.w3.org/TR/IndexedDB/#delete-a-database) and other
+ browsers' behavior.
+
+ Updated and rebaselined existing tests.
+
+ * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
+ (WebCore::IDBServer::UniqueIDBDatabase::handleDatabaseOperations):
+ (WebCore::IDBServer::UniqueIDBDatabase::startVersionChangeTransaction):
+
2021-07-22 Alan Bujtas <[email protected]>
REGRESSION(r269745) Google Developers maps does not fully load
Modified: trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp (280175 => 280176)
--- trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp 2021-07-22 16:37:56 UTC (rev 280175)
+++ trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp 2021-07-22 16:49:58 UTC (rev 280176)
@@ -337,22 +337,18 @@
ASSERT(!isMainThread());
LOG(IndexedDB, "UniqueIDBDatabase::handleDatabaseOperations - There are %u pending", m_pendingOpenDBRequests.size());
- if (m_versionChangeDatabaseConnection || m_versionChangeTransaction) {
- // We can't start any new open-database operations right now, but we might be able to start handling a delete operation.
- if (!m_currentOpenDBRequest)
- m_currentOpenDBRequest = takeNextRunnableRequest(RequestType::Delete);
- } else if (!m_currentOpenDBRequest || m_currentOpenDBRequest->connection().isClosed())
+ if (!m_currentOpenDBRequest && (m_versionChangeDatabaseConnection || m_versionChangeTransaction))
+ return;
+
+ if (!m_currentOpenDBRequest || m_currentOpenDBRequest->connection().isClosed())
m_currentOpenDBRequest = takeNextRunnableRequest();
while (m_currentOpenDBRequest) {
handleCurrentOperation();
- if (!m_currentOpenDBRequest) {
- if (m_versionChangeTransaction)
- m_currentOpenDBRequest = takeNextRunnableRequest(RequestType::Delete);
- else
- m_currentOpenDBRequest = takeNextRunnableRequest();
- } else // Request need multiple attempts to handle.
+ if (m_versionChangeTransaction || m_currentOpenDBRequest)
break;
+
+ m_currentOpenDBRequest = takeNextRunnableRequest();
}
LOG(IndexedDB, "UniqueIDBDatabase::handleDatabaseOperations - There are %u pending after this round of handling", m_pendingOpenDBRequests.size());
}
@@ -411,7 +407,7 @@
m_inProgressTransactions.set(versionChangeTransactionInfo.identifier(), m_versionChangeTransaction);
auto error = m_backingStore->beginTransaction(versionChangeTransactionInfo);
- auto operation = WTFMove(m_currentOpenDBRequest);
+ auto operation = std::exchange(m_currentOpenDBRequest, nullptr);
IDBResultData result;
if (error.isNull()) {
addOpenDatabaseConnection(*m_versionChangeDatabaseConnection);