summaryrefslogtreecommitdiffstats
path: root/third_party/rust/webext-storage/src/error.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /third_party/rust/webext-storage/src/error.rs
parentInitial commit. (diff)
downloadfirefox-upstream.tar.xz
firefox-upstream.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/webext-storage/src/error.rs')
-rw-r--r--third_party/rust/webext-storage/src/error.rs69
1 files changed, 69 insertions, 0 deletions
diff --git a/third_party/rust/webext-storage/src/error.rs b/third_party/rust/webext-storage/src/error.rs
new file mode 100644
index 0000000000..bbf830efa7
--- /dev/null
+++ b/third_party/rust/webext-storage/src/error.rs
@@ -0,0 +1,69 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+use interrupt_support::Interrupted;
+use sync15_traits::bridged_engine;
+
+#[derive(Debug)]
+pub enum QuotaReason {
+ TotalBytes,
+ ItemBytes,
+ MaxItems,
+}
+
+#[derive(Debug, thiserror::Error)]
+pub enum ErrorKind {
+ #[error("Quota exceeded: {0:?}")]
+ QuotaError(QuotaReason),
+
+ #[error("Error parsing JSON data: {0}")]
+ JsonError(#[from] serde_json::Error),
+
+ #[error("Error executing SQL: {0}")]
+ SqlError(#[from] rusqlite::Error),
+
+ #[error("A connection of this type is already open")]
+ ConnectionAlreadyOpen,
+
+ #[error("An invalid connection type was specified")]
+ InvalidConnectionType,
+
+ #[error("IO error: {0}")]
+ IoError(#[from] std::io::Error),
+
+ #[error("Operation interrupted")]
+ InterruptedError(#[from] Interrupted),
+
+ #[error("Tried to close connection on wrong StorageApi instance")]
+ WrongApiForClose,
+
+ // This will happen if you provide something absurd like
+ // "/" or "" as your database path. For more subtley broken paths,
+ // we'll likely return an IoError.
+ #[error("Illegal database path: {0:?}")]
+ IllegalDatabasePath(std::path::PathBuf),
+
+ #[error("UTF8 Error: {0}")]
+ Utf8Error(#[from] std::str::Utf8Error),
+
+ #[error("Database cannot be upgraded")]
+ DatabaseUpgradeError,
+
+ #[error("Database version {0} is not supported")]
+ UnsupportedDatabaseVersion(i64),
+
+ #[error("{0}")]
+ IncomingPayloadError(#[from] bridged_engine::PayloadError),
+}
+
+error_support::define_error! {
+ ErrorKind {
+ (JsonError, serde_json::Error),
+ (SqlError, rusqlite::Error),
+ (IoError, std::io::Error),
+ (InterruptedError, Interrupted),
+ (Utf8Error, std::str::Utf8Error),
+ (IncomingPayloadError, bridged_engine::PayloadError)
+ }
+}