2014-09-27 03:21:57 +04:00
|
|
|
/* 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 PBackgroundIDBTransaction;
|
|
|
|
include protocol PBackgroundIDBVersionChangeTransaction;
|
2015-09-09 14:15:05 +03:00
|
|
|
include protocol PBackgroundMutableFile;
|
2017-05-23 08:50:33 +03:00
|
|
|
include protocol PChildToParentStream; // FIXME: bug 792908
|
|
|
|
include protocol PFileDescriptorSet; // FIXME: bug 792908
|
|
|
|
include protocol PIPCBlobInputStream; // FIXME: bug 792908
|
|
|
|
include protocol PParentToChildStream; // FIXME: bug 792908
|
2014-09-27 03:21:57 +04:00
|
|
|
|
|
|
|
include PBackgroundIDBSharedTypes;
|
|
|
|
|
|
|
|
include "mozilla/dom/indexedDB/SerializationHelpers.h";
|
|
|
|
|
|
|
|
using struct mozilla::void_t
|
|
|
|
from "ipc/IPCMessageUtils.h";
|
|
|
|
|
|
|
|
using class mozilla::dom::indexedDB::Key
|
|
|
|
from "mozilla/dom/indexedDB/Key.h";
|
|
|
|
|
|
|
|
namespace mozilla {
|
|
|
|
namespace dom {
|
|
|
|
namespace indexedDB {
|
|
|
|
|
|
|
|
struct ObjectStoreAddResponse
|
|
|
|
{
|
|
|
|
Key key;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct ObjectStorePutResponse
|
|
|
|
{
|
|
|
|
Key key;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct ObjectStoreGetResponse
|
|
|
|
{
|
|
|
|
SerializedStructuredCloneReadInfo cloneInfo;
|
|
|
|
};
|
|
|
|
|
2016-07-21 11:31:59 +03:00
|
|
|
struct ObjectStoreGetKeyResponse
|
|
|
|
{
|
|
|
|
Key key;
|
|
|
|
};
|
|
|
|
|
2014-09-27 03:21:57 +04:00
|
|
|
struct ObjectStoreGetAllResponse
|
|
|
|
{
|
|
|
|
SerializedStructuredCloneReadInfo[] cloneInfos;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct ObjectStoreGetAllKeysResponse
|
|
|
|
{
|
|
|
|
Key[] keys;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct ObjectStoreDeleteResponse
|
|
|
|
{ };
|
|
|
|
|
|
|
|
struct ObjectStoreClearResponse
|
|
|
|
{ };
|
|
|
|
|
|
|
|
struct ObjectStoreCountResponse
|
|
|
|
{
|
|
|
|
uint64_t count;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct IndexGetResponse
|
|
|
|
{
|
|
|
|
SerializedStructuredCloneReadInfo cloneInfo;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct IndexGetKeyResponse
|
|
|
|
{
|
|
|
|
Key key;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct IndexGetAllResponse
|
|
|
|
{
|
|
|
|
SerializedStructuredCloneReadInfo[] cloneInfos;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct IndexGetAllKeysResponse
|
|
|
|
{
|
|
|
|
Key[] keys;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct IndexCountResponse
|
|
|
|
{
|
|
|
|
uint64_t count;
|
|
|
|
};
|
|
|
|
|
|
|
|
union RequestResponse
|
|
|
|
{
|
|
|
|
nsresult;
|
|
|
|
ObjectStoreGetResponse;
|
2016-07-21 11:31:59 +03:00
|
|
|
ObjectStoreGetKeyResponse;
|
2014-09-27 03:21:57 +04:00
|
|
|
ObjectStoreAddResponse;
|
|
|
|
ObjectStorePutResponse;
|
|
|
|
ObjectStoreDeleteResponse;
|
|
|
|
ObjectStoreClearResponse;
|
|
|
|
ObjectStoreCountResponse;
|
|
|
|
ObjectStoreGetAllResponse;
|
|
|
|
ObjectStoreGetAllKeysResponse;
|
|
|
|
IndexGetResponse;
|
|
|
|
IndexGetKeyResponse;
|
|
|
|
IndexGetAllResponse;
|
|
|
|
IndexGetAllKeysResponse;
|
|
|
|
IndexCountResponse;
|
|
|
|
};
|
|
|
|
|
2016-10-25 22:19:06 +03:00
|
|
|
struct WasmModulePreprocessInfo
|
|
|
|
{
|
|
|
|
SerializedStructuredCloneFile[] files;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct ObjectStoreGetPreprocessParams
|
|
|
|
{
|
|
|
|
WasmModulePreprocessInfo preprocessInfo;
|
|
|
|
};
|
|
|
|
|
2016-10-26 07:51:33 +03:00
|
|
|
struct ObjectStoreGetAllPreprocessParams
|
|
|
|
{
|
|
|
|
WasmModulePreprocessInfo[] preprocessInfos;
|
|
|
|
};
|
|
|
|
|
2016-10-25 22:19:06 +03:00
|
|
|
union PreprocessParams
|
|
|
|
{
|
|
|
|
ObjectStoreGetPreprocessParams;
|
2016-10-26 07:51:33 +03:00
|
|
|
ObjectStoreGetAllPreprocessParams;
|
2016-10-25 22:19:06 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
struct ObjectStoreGetPreprocessResponse
|
|
|
|
{
|
|
|
|
};
|
|
|
|
|
2016-10-26 07:51:33 +03:00
|
|
|
struct ObjectStoreGetAllPreprocessResponse
|
|
|
|
{
|
|
|
|
};
|
|
|
|
|
2016-10-25 22:19:06 +03:00
|
|
|
// The nsresult is used if an error occurs for any preprocess request type.
|
|
|
|
// The specific response types are sent on success.
|
|
|
|
union PreprocessResponse
|
|
|
|
{
|
|
|
|
nsresult;
|
|
|
|
ObjectStoreGetPreprocessResponse;
|
2016-10-26 07:51:33 +03:00
|
|
|
ObjectStoreGetAllPreprocessResponse;
|
2016-10-25 22:19:06 +03:00
|
|
|
};
|
|
|
|
|
2014-09-27 03:21:57 +04:00
|
|
|
protocol PBackgroundIDBRequest
|
|
|
|
{
|
|
|
|
manager PBackgroundIDBTransaction or PBackgroundIDBVersionChangeTransaction;
|
|
|
|
|
2016-10-25 22:19:06 +03:00
|
|
|
parent:
|
|
|
|
async Continue(PreprocessResponse response);
|
|
|
|
|
2014-09-27 03:21:57 +04:00
|
|
|
child:
|
2016-01-27 00:51:53 +03:00
|
|
|
async __delete__(RequestResponse response);
|
2016-10-25 22:19:06 +03:00
|
|
|
|
|
|
|
// Preprocess is used in cases where response processing needs to do something
|
|
|
|
// asynchronous off of the child actor's thread before returning the actual
|
|
|
|
// result to user code. This is necessary because RequestResponse processing
|
|
|
|
// occurs in __delete__ and the PBackgroundIDBRequest implementations'
|
|
|
|
// life-cycles are controlled by IPC and are not otherwise reference counted.
|
|
|
|
// By introducing the (optional) Preprocess/Continue steps reference counting
|
|
|
|
// or the introduction of additional runnables are avoided.
|
|
|
|
async Preprocess(PreprocessParams params);
|
2014-09-27 03:21:57 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace indexedDB
|
|
|
|
} // namespace dom
|
|
|
|
} // namespace mozilla
|