summaryrefslogtreecommitdiffstats
path: root/dom/localstorage/PBackgroundLSSharedTypes.ipdlh
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /dom/localstorage/PBackgroundLSSharedTypes.ipdlh
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/localstorage/PBackgroundLSSharedTypes.ipdlh')
-rw-r--r--dom/localstorage/PBackgroundLSSharedTypes.ipdlh96
1 files changed, 96 insertions, 0 deletions
diff --git a/dom/localstorage/PBackgroundLSSharedTypes.ipdlh b/dom/localstorage/PBackgroundLSSharedTypes.ipdlh
new file mode 100644
index 0000000000..d71b0e6111
--- /dev/null
+++ b/dom/localstorage/PBackgroundLSSharedTypes.ipdlh
@@ -0,0 +1,96 @@
+/* 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/. */
+
+include PBackgroundSharedTypes;
+include ProtocolTypes;
+
+include "mozilla/dom/localstorage/SerializationHelpers.h";
+
+using mozilla::dom::LSValue
+ from "mozilla/dom/LSValue.h";
+
+namespace mozilla {
+namespace dom {
+
+struct LSRequestCommonParams
+{
+ PrincipalInfo principalInfo;
+ PrincipalInfo storagePrincipalInfo;
+ nsCString originKey;
+};
+
+struct LSRequestPreloadDatastoreParams
+{
+ LSRequestCommonParams commonParams;
+};
+
+struct LSRequestPrepareDatastoreParams
+{
+ LSRequestCommonParams commonParams;
+ nsID? clientId;
+ PrincipalInfo? clientPrincipalInfo;
+};
+
+/**
+ * In order to validate the principal with the client, we need to provide an
+ * additional principalInfo for the client. The client is using the foreign
+ * principal, see StoragePrincipalHelper.h for details, which is different from
+ * the principalInfo. So, we need to pass the principalInfo from the client So
+ * that we can verify it with the given client Id.
+ *
+ * Note that the storagePrincipalInfo is used to access the right cookie jar
+ * according to the Storage Access. This is passed in order to access the
+ * correct local storage. Essentially, the storage principal and the client
+ * principal are using the PartitionKey in their OriginAttributes. But, the
+ * existence of the PartitionKey between them is depending on different
+ * conditions. Namely, the storage principal depends on the Storage Access but
+ * the client principal depends on whether it's in a third party.
+ */
+struct LSRequestPrepareObserverParams
+{
+ PrincipalInfo principalInfo;
+ PrincipalInfo storagePrincipalInfo;
+ nsID? clientId;
+ PrincipalInfo? clientPrincipalInfo;
+};
+
+union LSRequestParams
+{
+ LSRequestPreloadDatastoreParams;
+ LSRequestPrepareDatastoreParams;
+ LSRequestPrepareObserverParams;
+};
+
+struct LSSimpleRequestPreloadedParams
+{
+ PrincipalInfo principalInfo;
+ PrincipalInfo storagePrincipalInfo;
+};
+
+struct LSSimpleRequestGetStateParams
+{
+ PrincipalInfo principalInfo;
+ PrincipalInfo storagePrincipalInfo;
+};
+
+union LSSimpleRequestParams
+{
+ LSSimpleRequestPreloadedParams;
+ LSSimpleRequestGetStateParams;
+};
+
+/**
+ * LocalStorage key/value pair wire representations. `value` may be void in
+ * cases where there is a value but it is not being sent for memory/bandwidth
+ * conservation purposes. (It's not possible to have a null/undefined `value`
+ * as Storage is defined explicitly as a String store.)
+ */
+struct LSItemInfo
+{
+ nsString key;
+ LSValue value;
+};
+
+} // namespace dom
+} // namespace mozilla