blob: d3847ca50feb3194890cc103a8a1af30ad96640b [file] [log] [blame]
Avi Drissman4e1b7bc32022-09-15 14:03:501// Copyright 2012 The Chromium Authors
[email protected]29ffc1d32011-03-03 00:10:162// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Evan Stade1a8d9d42024-09-10 19:37:195#include "content/browser/indexed_db/instance/database_callbacks.h"
[email protected]29ffc1d32011-03-03 00:10:166
Joshua Bell98475ae2019-08-15 01:43:367#include <utility>
8
Avi Drissmanadac21992023-01-11 23:46:399#include "base/functional/bind.h"
Sean Maher52fa5a72022-11-14 15:53:2510#include "base/task/sequenced_task_runner.h"
[email protected]affe4c62013-06-28 01:03:2511#include "content/browser/indexed_db/indexed_db_database_error.h"
Evan Stade1a8d9d42024-09-10 19:37:1912#include "content/browser/indexed_db/instance/transaction.h"
Ari Chivukula13eb7432021-06-10 23:12:2213#include "third_party/blink/public/common/storage_key/storage_key.h"
[email protected]29ffc1d32011-03-03 00:10:1614
Evan Stadecbb1e002024-09-13 20:06:5715namespace content::indexed_db {
[email protected]95e81082012-10-29 02:43:2016
Evan Stadecbb1e002024-09-13 20:06:5717DatabaseCallbacks::DatabaseCallbacks(
Mario Sanchez Prada9acc6da42019-08-30 12:19:1718 mojo::PendingAssociatedRemote<blink::mojom::IDBDatabaseCallbacks>
Evan Stade1c0fbe672023-11-01 18:20:0419 callbacks_remote) {
Evan Stade1a8d9d42024-09-10 19:37:1920 if (!callbacks_remote.is_valid()) {
Chase Phillips76be86e2019-03-14 17:08:0221 return;
Evan Stade1a8d9d42024-09-10 19:37:1922 }
Mario Sanchez Prada7e8fde82019-08-30 12:38:3223 callbacks_.Bind(std::move(callbacks_remote));
reillyga7233873f2016-10-20 20:33:1424}
[email protected]29ffc1d32011-03-03 00:10:1625
Evan Stadecbb1e002024-09-13 20:06:5726DatabaseCallbacks::~DatabaseCallbacks() {}
[email protected]29ffc1d32011-03-03 00:10:1627
Evan Stadecbb1e002024-09-13 20:06:5728void DatabaseCallbacks::OnForcedClose() {
Evan Stade1a8d9d42024-09-10 19:37:1929 if (complete_) {
[email protected]e67c0cc2013-07-01 20:21:1830 return;
Evan Stade1a8d9d42024-09-10 19:37:1931 }
[email protected]e67c0cc2013-07-01 20:21:1832
Evan Stade1a8d9d42024-09-10 19:37:1933 if (callbacks_) {
Chase Phillips76be86e2019-03-14 17:08:0234 callbacks_->ForcedClose();
Evan Stade1a8d9d42024-09-10 19:37:1935 }
dmurph1f18ca92017-04-11 21:51:0836 complete_ = true;
[email protected]2f014b02012-09-06 00:42:3737}
38
Evan Stadecbb1e002024-09-13 20:06:5739void DatabaseCallbacks::OnVersionChange(int64_t old_version,
40 int64_t new_version) {
Evan Stade1a8d9d42024-09-10 19:37:1941 if (complete_) {
[email protected]e67c0cc2013-07-01 20:21:1842 return;
Evan Stade1a8d9d42024-09-10 19:37:1943 }
[email protected]e67c0cc2013-07-01 20:21:1844
Evan Stade1a8d9d42024-09-10 19:37:1945 if (callbacks_) {
Chase Phillips76be86e2019-03-14 17:08:0246 callbacks_->VersionChange(old_version, new_version);
Evan Stade1a8d9d42024-09-10 19:37:1947 }
[email protected]0563ebe42012-07-27 00:21:0248}
49
Evan Stadecbb1e002024-09-13 20:06:5750void DatabaseCallbacks::OnAbort(const Transaction& transaction,
51 const DatabaseError& error) {
Evan Stade1a8d9d42024-09-10 19:37:1952 if (complete_) {
[email protected]e67c0cc2013-07-01 20:21:1853 return;
Evan Stade1a8d9d42024-09-10 19:37:1954 }
[email protected]e67c0cc2013-07-01 20:21:1855
Evan Stade1a8d9d42024-09-10 19:37:1956 if (callbacks_) {
Chase Phillips76be86e2019-03-14 17:08:0257 callbacks_->Abort(transaction.id(), error.code(), error.message());
Evan Stade1a8d9d42024-09-10 19:37:1958 }
[email protected]c7b6f612013-01-18 21:47:2659}
60
Evan Stadecbb1e002024-09-13 20:06:5761void DatabaseCallbacks::OnComplete(const Transaction& transaction) {
Evan Stade1a8d9d42024-09-10 19:37:1962 if (complete_) {
[email protected]e67c0cc2013-07-01 20:21:1863 return;
Evan Stade1a8d9d42024-09-10 19:37:1964 }
[email protected]e67c0cc2013-07-01 20:21:1865
Evan Stade1a8d9d42024-09-10 19:37:1966 if (callbacks_) {
Chase Phillips76be86e2019-03-14 17:08:0267 callbacks_->Complete(transaction.id());
Evan Stade1a8d9d42024-09-10 19:37:1968 }
[email protected]c7b6f612013-01-18 21:47:2669}
70
Evan Stadecbb1e002024-09-13 20:06:5771} // namespace content::indexed_db