Source code

Revision control

Copy as Markdown

Other Tools

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