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 protocol PBackgroundIDBDatabaseFile;
include DOMTypes;
include IPCBlob;
include ProtocolTypes;
include "mozilla/dom/indexedDB/SerializationHelpers.h";
include "mozilla/dom/quota/SerializationHelpers.h";
using struct mozilla::null_t from "mozilla/ipc/IPCCore.h";
using struct mozilla::void_t from "mozilla/ipc/IPCCore.h";
using mozilla::dom::IDBCursor::Direction
from "mozilla/dom/IDBCursor.h";
using mozilla::dom::indexedDB::StructuredCloneFileBase::FileType
from "mozilla/dom/IndexedDatabase.h";
using class mozilla::dom::indexedDB::Key
from "mozilla/dom/indexedDB/Key.h";
using class mozilla::dom::indexedDB::KeyPath
from "mozilla/dom/indexedDB/KeyPath.h";
using mozilla::dom::quota::PersistenceType
from "mozilla/dom/quota/PersistenceType.h";
[MoveOnly=data] using mozilla::SerializedStructuredCloneBuffer
from "mozilla/ipc/SerializedStructuredCloneBuffer.h";
namespace mozilla {
namespace dom {
namespace indexedDB {
struct SerializedKeyRange
{
Key lower;
Key upper;
bool lowerOpen;
bool upperOpen;
bool isOnly;
};
union NullableBlob
{
null_t;
IPCBlob;
};
struct SerializedStructuredCloneFile
{
NullableBlob file;
FileType type;
};
struct SerializedStructuredCloneReadInfo
{
SerializedStructuredCloneBuffer data;
SerializedStructuredCloneFile[] files;
bool hasPreprocessInfo;
};
struct SerializedStructuredCloneWriteInfo
{
SerializedStructuredCloneBuffer data;
uint64_t offsetToKeyProp;
};
struct IndexUpdateInfo
{
int64_t indexId;
Key value;
Key localizedValue;
};
struct DatabaseMetadata
{
nsString name;
uint64_t version;
PersistenceType persistenceType;
};
struct ObjectStoreMetadata
{
int64_t id;
nsString name;
KeyPath keyPath;
bool autoIncrement;
};
struct IndexMetadata
{
int64_t id;
nsString name;
KeyPath keyPath;
nsCString locale;
bool unique;
bool multiEntry;
bool autoLocale;
};
struct DatabaseSpec
{
DatabaseMetadata metadata;
ObjectStoreSpec[] objectStores;
};
struct ObjectStoreSpec
{
ObjectStoreMetadata metadata;
IndexMetadata[] indexes;
};
struct CommonOpenCursorParams
{
int64_t objectStoreId;
SerializedKeyRange? optionalKeyRange;
Direction direction;
};
struct ObjectStoreOpenCursorParams
{
CommonOpenCursorParams commonParams;
};
struct ObjectStoreOpenKeyCursorParams
{
CommonOpenCursorParams commonParams;
};
struct CommonIndexOpenCursorParams
{
CommonOpenCursorParams commonParams;
int64_t indexId;
};
struct IndexOpenCursorParams
{
CommonIndexOpenCursorParams commonIndexParams;
};
struct IndexOpenKeyCursorParams
{
CommonIndexOpenCursorParams commonIndexParams;
};
// TODO: Actually, using a union here is not very nice, unless IPDL supported
// struct inheritance. Alternatively, if IPDL supported enums, we could merge
// the subtypes into one. Using a plain integer for discriminating the
// subtypes would be too error-prone.
union OpenCursorParams
{
ObjectStoreOpenCursorParams;
ObjectStoreOpenKeyCursorParams;
IndexOpenCursorParams;
IndexOpenKeyCursorParams;
};
struct FileAddInfo
{
PBackgroundIDBDatabaseFile file;
FileType type;
};
struct ObjectStoreAddPutParams
{
int64_t objectStoreId;
SerializedStructuredCloneWriteInfo cloneInfo;
Key key;
IndexUpdateInfo[] indexUpdateInfos;
FileAddInfo[] fileAddInfos;
};
struct ObjectStoreAddParams
{
ObjectStoreAddPutParams commonParams;
};
struct ObjectStorePutParams
{
ObjectStoreAddPutParams commonParams;
};
struct ObjectStoreGetParams
{
int64_t objectStoreId;
SerializedKeyRange keyRange;
};
struct ObjectStoreGetKeyParams
{
int64_t objectStoreId;
SerializedKeyRange keyRange;
};
struct ObjectStoreGetAllParams
{
int64_t objectStoreId;
SerializedKeyRange? optionalKeyRange;
uint32_t limit;
};
struct ObjectStoreGetAllKeysParams
{
int64_t objectStoreId;
SerializedKeyRange? optionalKeyRange;
uint32_t limit;
};
struct ObjectStoreDeleteParams
{
int64_t objectStoreId;
SerializedKeyRange keyRange;
};
struct ObjectStoreClearParams
{
int64_t objectStoreId;
};
struct ObjectStoreCountParams
{
int64_t objectStoreId;
SerializedKeyRange? optionalKeyRange;
};
struct IndexGetParams
{
int64_t objectStoreId;
int64_t indexId;
SerializedKeyRange keyRange;
};
struct IndexGetKeyParams
{
int64_t objectStoreId;
int64_t indexId;
SerializedKeyRange keyRange;
};
struct IndexGetAllParams
{
int64_t objectStoreId;
int64_t indexId;
SerializedKeyRange? optionalKeyRange;
uint32_t limit;
};
struct IndexGetAllKeysParams
{
int64_t objectStoreId;
int64_t indexId;
SerializedKeyRange? optionalKeyRange;
uint32_t limit;
};
struct IndexCountParams
{
int64_t objectStoreId;
int64_t indexId;
SerializedKeyRange? optionalKeyRange;
};
union RequestParams
{
ObjectStoreAddParams;
ObjectStorePutParams;
ObjectStoreGetParams;
ObjectStoreGetKeyParams;
ObjectStoreGetAllParams;
ObjectStoreGetAllKeysParams;
ObjectStoreDeleteParams;
ObjectStoreClearParams;
ObjectStoreCountParams;
IndexGetParams;
IndexGetKeyParams;
IndexGetAllParams;
IndexGetAllKeysParams;
IndexCountParams;
};
struct LoggingInfo
{
nsID backgroundChildLoggingId;
int64_t nextTransactionSerialNumber;
int64_t nextVersionChangeTransactionSerialNumber;
uint64_t nextRequestSerialNumber;
};
} // namespace indexedDB
} // namespace dom
} // namespace mozilla