/* 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