diff options
Diffstat (limited to 'dom/localstorage/PBackgroundLSSharedTypes.ipdlh')
-rw-r--r-- | dom/localstorage/PBackgroundLSSharedTypes.ipdlh | 96 |
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 |