summaryrefslogtreecommitdiffstats
path: root/dom/indexedDB/IDBFactory.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-12 05:35:29 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-06-12 05:35:29 +0000
commit59203c63bb777a3bacec32fb8830fba33540e809 (patch)
tree58298e711c0ff0575818c30485b44a2f21bf28a0 /dom/indexedDB/IDBFactory.h
parentAdding upstream version 126.0.1. (diff)
downloadfirefox-59203c63bb777a3bacec32fb8830fba33540e809.tar.xz
firefox-59203c63bb777a3bacec32fb8830fba33540e809.zip
Adding upstream version 127.0.upstream/127.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/indexedDB/IDBFactory.h')
-rw-r--r--dom/indexedDB/IDBFactory.h32
1 files changed, 16 insertions, 16 deletions
diff --git a/dom/indexedDB/IDBFactory.h b/dom/indexedDB/IDBFactory.h
index d64d571a05..08663eaec4 100644
--- a/dom/indexedDB/IDBFactory.h
+++ b/dom/indexedDB/IDBFactory.h
@@ -77,11 +77,16 @@ class IDBFactory final : public GlobalTeardownObserver, public nsWrapperCache {
uint32_t mActiveTransactionCount;
uint32_t mActiveDatabaseCount;
+ // When mAllowed is false we throw security errors on all operations. This is
+ // because although we make storage access decisions when we create the
+ // IDBFactory, the spec (and content) expects us to only throw if an attempt
+ // is made to use the resulting IDBFactory.
+ bool mAllowed;
bool mBackgroundActorFailed;
bool mPrivateBrowsingMode;
public:
- explicit IDBFactory(const IDBFactoryGuard&);
+ IDBFactory(const IDBFactoryGuard&, bool aAllowed);
static Result<RefPtr<IDBFactory>, nsresult> CreateForWindow(
nsPIDOMWindowInner* aWindow);
@@ -89,8 +94,9 @@ class IDBFactory final : public GlobalTeardownObserver, public nsWrapperCache {
static Result<RefPtr<IDBFactory>, nsresult> CreateForMainThreadJS(
nsIGlobalObject* aGlobal);
+ // mAllowed shall be false for null aPrincipalInfo.
static Result<RefPtr<IDBFactory>, nsresult> CreateForWorker(
- nsIGlobalObject* aGlobal, const PrincipalInfo& aPrincipalInfo,
+ nsIGlobalObject* aGlobal, UniquePtr<PrincipalInfo>&& aPrincipalInfo,
uint64_t aInnerWindowID);
static bool AllowedForWindow(nsPIDOMWindowInner* aWindow);
@@ -146,21 +152,15 @@ class IDBFactory final : public GlobalTeardownObserver, public nsWrapperCache {
bool IsChrome() const;
- [[nodiscard]] RefPtr<IDBOpenDBRequest> Open(JSContext* aCx,
- const nsAString& aName,
- uint64_t aVersion,
- CallerType aCallerType,
- ErrorResult& aRv);
-
- [[nodiscard]] RefPtr<IDBOpenDBRequest> Open(JSContext* aCx,
- const nsAString& aName,
- const IDBOpenDBOptions& aOptions,
- CallerType aCallerType,
- ErrorResult& aRv);
+ [[nodiscard]] RefPtr<IDBOpenDBRequest> Open(
+ JSContext* aCx, const nsAString& aName,
+ const Optional<uint64_t>& aVersion, CallerType aCallerType,
+ ErrorResult& aRv);
- [[nodiscard]] RefPtr<IDBOpenDBRequest> DeleteDatabase(
- JSContext* aCx, const nsAString& aName, const IDBOpenDBOptions& aOptions,
- CallerType aCallerType, ErrorResult& aRv);
+ [[nodiscard]] RefPtr<IDBOpenDBRequest> DeleteDatabase(JSContext* aCx,
+ const nsAString& aName,
+ CallerType aCallerType,
+ ErrorResult& aRv);
already_AddRefed<Promise> Databases(JSContext* aCx, ErrorResult& aRv);