From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../storage/ExtensionStorageComponents.h | 40 ++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 toolkit/components/extensions/storage/ExtensionStorageComponents.h (limited to 'toolkit/components/extensions/storage/ExtensionStorageComponents.h') diff --git a/toolkit/components/extensions/storage/ExtensionStorageComponents.h b/toolkit/components/extensions/storage/ExtensionStorageComponents.h new file mode 100644 index 0000000000..53af177432 --- /dev/null +++ b/toolkit/components/extensions/storage/ExtensionStorageComponents.h @@ -0,0 +1,40 @@ +/* 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/. */ + +#ifndef mozilla_extensions_storage_ExtensionStorageComponents_h_ +#define mozilla_extensions_storage_ExtensionStorageComponents_h_ + +#include "mozIExtensionStorageArea.h" +#include "nsCOMPtr.h" + +extern "C" { + +// Implemented in Rust, in the `webext_storage_bridge` crate. +nsresult NS_NewExtensionStorageSyncArea(mozIExtensionStorageArea** aResult); + +} // extern "C" + +namespace mozilla { +namespace extensions { +namespace storage { + +// The C++ constructor for a `storage.sync` area. This wrapper exists because +// `components.conf` requires a component class constructor to return an +// `already_AddRefed`, but Rust doesn't have such a type. So we call the +// Rust constructor using a `nsCOMPtr` (which is compatible with Rust's +// `xpcom::RefPtr`) out param, and return that. +already_AddRefed NewSyncArea() { + nsCOMPtr storage; + nsresult rv = NS_NewExtensionStorageSyncArea(getter_AddRefs(storage)); + if (NS_WARN_IF(NS_FAILED(rv))) { + return nullptr; + } + return storage.forget(); +} + +} // namespace storage +} // namespace extensions +} // namespace mozilla + +#endif // mozilla_extensions_storage_ExtensionStorageComponents_h_ -- cgit v1.2.3