OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // TODO: This will move to //third_party/WebKit when //content/child/indexed_db | 5 // TODO: This will move to //third_party/WebKit when //content/child/indexed_db |
6 // is deleted but for now this will depend on //content/common types and so | 6 // is deleted but for now this will depend on //content/common types and so |
7 // so belongs here. | 7 // so belongs here. |
8 | 8 |
9 module indexed_db.mojom; | 9 module indexed_db.mojom; |
10 | 10 |
11 import "mojo/common/common_custom_types.mojom"; | 11 import "mojo/common/common_custom_types.mojom"; |
12 import "url/mojo/origin.mojom"; | 12 import "url/mojo/origin.mojom"; |
13 | 13 |
14 [Native] | 14 [Native] |
15 enum CursorDirection; | |
16 | |
17 [Native] | |
15 enum DataLoss; | 18 enum DataLoss; |
16 | 19 |
17 [Native] | 20 [Native] |
21 struct Key; | |
22 | |
23 [Native] | |
18 struct KeyPath; | 24 struct KeyPath; |
19 | 25 |
26 [Native] | |
27 struct KeyRange; | |
28 | |
29 [Native] | |
30 enum PutMode; | |
31 | |
32 [Native] | |
33 enum TaskType; | |
34 | |
35 [Native] | |
36 enum TransactionMode; | |
37 | |
20 struct IndexMetadata { | 38 struct IndexMetadata { |
21 int64 id; | 39 int64 id; |
22 mojo.common.mojom.String16 name; | 40 mojo.common.mojom.String16 name; |
23 KeyPath key_path; | 41 KeyPath key_path; |
24 bool unique; | 42 bool unique; |
25 bool multi_entry; | 43 bool multi_entry; |
26 }; | 44 }; |
27 | 45 |
28 struct ObjectStoreMetadata { | 46 struct ObjectStoreMetadata { |
29 int64 id; | 47 int64 id; |
30 mojo.common.mojom.String16 name; | 48 mojo.common.mojom.String16 name; |
31 KeyPath key_path; | 49 KeyPath key_path; |
32 bool auto_increment; | 50 bool auto_increment; |
33 int64 max_index_id; | 51 int64 max_index_id; |
34 array<IndexMetadata> indexes; | 52 array<IndexMetadata> indexes; |
35 }; | 53 }; |
36 | 54 |
37 struct DatabaseMetadata { | 55 struct DatabaseMetadata { |
38 int64 id; | 56 int64 id; |
39 mojo.common.mojom.String16 name; | 57 mojo.common.mojom.String16 name; |
40 int64 version; | 58 int64 version; |
41 int64 max_object_store_id; | 59 int64 max_object_store_id; |
42 array<ObjectStoreMetadata> object_stores; | 60 array<ObjectStoreMetadata> object_stores; |
43 }; | 61 }; |
44 | 62 |
63 struct IndexKeys { | |
64 int64 index_id; | |
65 array<Key> index_keys; | |
66 }; | |
67 | |
68 struct BlobOrFileInfo { | |
69 bool is_file; | |
dcheng
2016/11/03 04:27:04
Perhaps this could have a union to separate the bl
Reilly Grant (use Gerrit)
2016/11/03 21:32:22
Since files are a subset of blobs I've made the fi
| |
70 string uuid; | |
71 mojo.common.mojom.String16 mime_type; | |
72 uint64 size; | |
73 mojo.common.mojom.String16 file_path; | |
dcheng
2016/11/03 04:27:04
Does mojo.mojom.FilePath work?
Reilly Grant (use Gerrit)
2016/11/03 21:32:22
Done.
| |
74 mojo.common.mojom.String16 file_name; | |
75 double last_modified; | |
dcheng
2016/11/03 04:27:04
Is it possible to use mojo.common.mojom.Time for t
Reilly Grant (use Gerrit)
2016/11/03 21:32:22
Done.
| |
76 }; | |
77 | |
78 struct Value { | |
79 string bits; | |
80 array<BlobOrFileInfo> blob_or_file_info; | |
81 }; | |
82 | |
83 struct ReturnValue { | |
84 Value value; | |
85 Key primary_key; | |
86 KeyPath key_path; | |
87 }; | |
88 | |
45 // The Callbacks interface is used to return results for individual requests. | 89 // The Callbacks interface is used to return results for individual requests. |
46 // Some requests may return multiple results before completion, such as | 90 // Some requests may return multiple results before completion, such as |
47 // UpgradeNeeded before SuccessDatabase. | 91 // UpgradeNeeded before SuccessDatabase. |
48 // | 92 // |
49 // TODO(https://crbug.com/627484): Many of these could be replaced with | 93 // TODO(https://crbug.com/627484): Many of these could be replaced with |
50 // replies associated with particular messages. | 94 // replies associated with particular messages. |
51 interface Callbacks { | 95 interface Callbacks { |
52 Error(int32 code, mojo.common.mojom.String16 message); | 96 Error(int32 code, mojo.common.mojom.String16 message); |
53 | 97 |
54 // Factory::GetDatabaseNames | 98 // Factory::GetDatabaseNames |
55 SuccessStringList(array<mojo.common.mojom.String16> value); | 99 SuccessStringList(array<mojo.common.mojom.String16> value); |
56 | 100 |
57 // Factory::Open / DeleteDatabase | 101 // Factory::Open / DeleteDatabase |
58 Blocked(int64 existing_version); | 102 Blocked(int64 existing_version); |
59 | 103 |
60 // Factory::Open | 104 // Factory::Open |
61 UpgradeNeeded(int32 database_id, int64 old_version, DataLoss data_loss, | 105 UpgradeNeeded(associated Database database, int64 old_version, |
62 string data_loss_message, DatabaseMetadata db_metadata); | 106 DataLoss data_loss, string data_loss_message, |
63 SuccessDatabase(int32 database_id, DatabaseMetadata metadata); | 107 DatabaseMetadata db_metadata); |
108 SuccessDatabase(associated Database? database, DatabaseMetadata metadata); | |
64 | 109 |
110 // Database::OpenCursor | |
111 SuccessCursor(int32 cursor_id, Key key, Key primary_key, Value? value); | |
112 | |
113 // Database::Get / Cursor::Advance | |
114 SuccessValue(ReturnValue? value); | |
115 | |
116 // Database::GetAll | |
117 SuccessArray(array<ReturnValue> values); | |
118 | |
119 // Database::Put / Cursor::Update | |
120 SuccessKey(Key key); | |
121 | |
122 // Database::Count / DeleteRange | |
65 // Factory::DeleteDatabase | 123 // Factory::DeleteDatabase |
66 SuccessInteger(int64 value); | 124 SuccessInteger(int64 value); |
125 | |
126 // Cursor::Continue / Advance | |
127 Success(); | |
67 }; | 128 }; |
68 | 129 |
69 // The DatabaseCallbacks interface is used to notification of events out of | 130 // The DatabaseCallbacks interface is used to notification of events out of |
70 // band to individual requests. A single instance is used for the lifetime of | 131 // band to individual requests. A single instance is used for the lifetime of |
71 // a database connection. | 132 // a database connection. |
72 interface DatabaseCallbacks { | 133 interface DatabaseCallbacks { |
73 ForcedClose(); | 134 ForcedClose(); |
74 VersionChange(int64 old_version, int64 new_version); | 135 VersionChange(int64 old_version, int64 new_version); |
75 Abort(int64 transaction_id, int32 code, | 136 Abort(int64 transaction_id, int32 code, |
76 mojo.common.mojom.String16 message); | 137 mojo.common.mojom.String16 message); |
77 Complete(int64 transaction_id); | 138 Complete(int64 transaction_id); |
78 }; | 139 }; |
79 | 140 |
141 interface Database { | |
142 CreateObjectStore(int64 transaction_id, | |
143 int64 object_store_id, | |
144 mojo.common.mojom.String16 name, | |
145 KeyPath key_path, | |
146 bool auto_increment); | |
147 DeleteObjectStore(int64 transaction_id, | |
148 int64 object_store_id); | |
149 RenameObjectStore(int64 transaction_id, | |
150 int64 object_store_id, | |
151 mojo.common.mojom.String16 new_name); | |
152 CreateTransaction(int64 transaction_id, | |
153 array<int64> object_store_ids, | |
154 TransactionMode mode); | |
155 Close(); | |
156 VersionChangeIgnored(); | |
157 AddObserver(int64 transaction_id, | |
158 int32 observer_id, | |
159 bool include_transaction, | |
160 bool no_records, | |
161 bool values, | |
162 uint16 operation_types); | |
163 RemoveObservers(array<int32> observers); | |
164 Get(int64 transaction_id, | |
165 int64 object_store_id, | |
166 int64 index_id, | |
167 KeyRange key_range, | |
168 bool key_only, | |
169 associated Callbacks callbacks); | |
170 GetAll(int64 transaction_id, | |
171 int64 object_store_id, | |
172 int64 index_id, | |
173 KeyRange key_range, | |
174 bool key_only, | |
175 int64 max_count, | |
176 associated Callbacks callbacks); | |
177 Put(int64 transaction_id, | |
178 int64 object_store_id, | |
179 Value value, | |
180 Key key, | |
181 PutMode mode, | |
182 array<IndexKeys> index_keys, | |
183 associated Callbacks callbacks); | |
184 SetIndexKeys(int64 transaction_id, | |
185 int64 object_store_id, | |
186 Key primary_key, | |
187 array<IndexKeys> index_keys); | |
188 SetIndexesReady(int64 transaction_id, | |
189 int64 object_store_id, | |
190 array<int64> index_ids); | |
191 OpenCursor(int64 transaction_id, | |
192 int64 object_store_id, | |
193 int64 index_id, | |
194 KeyRange key_range, | |
195 CursorDirection direction, | |
196 bool key_only, | |
197 TaskType task_type, | |
198 associated Callbacks callbacks); | |
199 Count(int64 transaction_id, | |
200 int64 object_store_id, | |
201 int64 index_id, | |
202 KeyRange key_range, | |
203 associated Callbacks callbacks); | |
204 DeleteRange(int64 transaction_id, | |
205 int64 object_store_id, | |
206 KeyRange key_range, | |
207 associated Callbacks callbacks); | |
208 Clear(int64 transaction_id, | |
209 int64 object_store_id, | |
210 associated Callbacks callbacks); | |
211 CreateIndex(int64 transaction_id, | |
212 int64 object_store_id, | |
213 int64 index_id, | |
214 mojo.common.mojom.String16 name, | |
215 KeyPath key_path, | |
216 bool unique, | |
217 bool multi_entry); | |
218 DeleteIndex(int64 transaction_id, | |
219 int64 object_store_id, | |
220 int64 index_id); | |
221 RenameIndex(int64 transaction_id, | |
222 int64 object_store_id, | |
223 int64 index_id, | |
224 mojo.common.mojom.String16 new_name); | |
225 Abort(int64 transaction_id); | |
226 Commit(int64 transaction_id); | |
227 AckReceivedBlobs(array<string> uuids); | |
228 }; | |
229 | |
80 interface Factory { | 230 interface Factory { |
81 GetDatabaseNames(associated Callbacks callbacks, url.mojom.Origin origin); | 231 GetDatabaseNames(associated Callbacks callbacks, url.mojom.Origin origin); |
82 Open(int32 worker_thread, associated Callbacks callbacks, | 232 Open(int32 worker_thread, associated Callbacks callbacks, |
83 associated DatabaseCallbacks database_callbacks, url.mojom.Origin origin, | 233 associated DatabaseCallbacks database_callbacks, url.mojom.Origin origin, |
84 mojo.common.mojom.String16 name, int64 version, int64 transaction_id); | 234 mojo.common.mojom.String16 name, int64 version, int64 transaction_id); |
85 DeleteDatabase(associated Callbacks callbacks, url.mojom.Origin origin, | 235 DeleteDatabase(associated Callbacks callbacks, url.mojom.Origin origin, |
86 mojo.common.mojom.String16 name); | 236 mojo.common.mojom.String16 name); |
87 }; | 237 }; |
OLD | NEW |