summaryrefslogtreecommitdiffstats
path: root/dom/indexedDB/PBackgroundIDBRequest.ipdl
diff options
context:
space:
mode:
Diffstat (limited to 'dom/indexedDB/PBackgroundIDBRequest.ipdl')
-rw-r--r--dom/indexedDB/PBackgroundIDBRequest.ipdl169
1 files changed, 169 insertions, 0 deletions
diff --git a/dom/indexedDB/PBackgroundIDBRequest.ipdl b/dom/indexedDB/PBackgroundIDBRequest.ipdl
new file mode 100644
index 0000000000..77a8e7c2dc
--- /dev/null
+++ b/dom/indexedDB/PBackgroundIDBRequest.ipdl
@@ -0,0 +1,169 @@
+/* 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;
+include protocol PBackgroundMutableFile;
+
+include PBackgroundIDBSharedTypes;
+
+include "mozilla/dom/indexedDB/SerializationHelpers.h";
+include "mozilla/dom/indexedDB/ActorsChild.h";
+
+using struct mozilla::void_t from "mozilla/ipc/IPCCore.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;
+};
+
+struct ObjectStoreGetKeyResponse
+{
+ Key key;
+};
+
+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;
+ ObjectStoreGetKeyResponse;
+ ObjectStoreAddResponse;
+ ObjectStorePutResponse;
+ ObjectStoreDeleteResponse;
+ ObjectStoreClearResponse;
+ ObjectStoreCountResponse;
+ ObjectStoreGetAllResponse;
+ ObjectStoreGetAllKeysResponse;
+ IndexGetResponse;
+ IndexGetKeyResponse;
+ IndexGetAllResponse;
+ IndexGetAllKeysResponse;
+ IndexCountResponse;
+};
+
+struct PreprocessInfo
+{
+ SerializedStructuredCloneFile[] files;
+};
+
+struct ObjectStoreGetPreprocessParams
+{
+ PreprocessInfo preprocessInfo;
+};
+
+struct ObjectStoreGetAllPreprocessParams
+{
+ PreprocessInfo[] preprocessInfos;
+};
+
+union PreprocessParams
+{
+ ObjectStoreGetPreprocessParams;
+ ObjectStoreGetAllPreprocessParams;
+};
+
+struct ObjectStoreGetPreprocessResponse
+{
+};
+
+struct ObjectStoreGetAllPreprocessResponse
+{
+};
+
+// 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;
+ ObjectStoreGetAllPreprocessResponse;
+};
+
+[ManualDealloc, ChildImpl="indexedDB::BackgroundRequestChild", ParentImpl=virtual]
+protocol PBackgroundIDBRequest
+{
+ manager PBackgroundIDBTransaction or PBackgroundIDBVersionChangeTransaction;
+
+parent:
+ async Continue(PreprocessResponse response);
+
+child:
+ async __delete__(RequestResponse response);
+
+ // 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);
+};
+
+} // namespace indexedDB
+} // namespace dom
+} // namespace mozilla