Index: third_party/WebKit/Source/modules/indexeddb/indexed_db.mojom |
diff --git a/third_party/WebKit/Source/modules/indexeddb/indexed_db.mojom b/third_party/WebKit/Source/modules/indexeddb/indexed_db.mojom |
new file mode 100644 |
index 0000000000000000000000000000000000000000..21a58aa5ff203eb745ee61675fcb5822b9608d00 |
--- /dev/null |
+++ b/third_party/WebKit/Source/modules/indexeddb/indexed_db.mojom |
@@ -0,0 +1,250 @@ |
+// Copyright 2016 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+module indexed_db.mojom; |
+ |
+import "url/mojo/origin.mojom"; |
+ |
+enum KeyPathType { |
+ NONE, |
+ STRING, |
+ ARRAY, |
+}; |
+ |
+enum CursorDirection { |
+ Next, |
+ NextNoDuplicate, |
+ Prev, |
+ PrevNoDuplicate, |
+ Last = PrevNoDuplicate, |
+}; |
+ |
+enum PutMode { |
+ AddOrUpdate, |
+ AddOnly, |
+ CursorUpdate, |
+ Last = CursorUpdate, |
+}; |
+ |
+enum TaskType { |
+ Normal, |
+ Preemptive, |
+ Last = Preemptive, |
+}; |
+ |
+enum DataLoss { |
+ None, |
+ Total, |
+}; |
+ |
+enum KeyType { |
+ Invalid, |
+ Array, |
+ Binary, |
+ String, |
+ Date, |
+ Number, |
+}; |
+ |
+enum TransactionMode { |
+ ReadOnly, |
+ ReadWrite, |
+ VersionChange, |
+}; |
+ |
+union KeyPathData { |
+ string str; |
+ array<string> arr; |
+}; |
+ |
+union KeyData { |
+ array<Key> array_data; |
+ array<uint8> binary_data; |
+ string string_data; |
+ double date; |
+ double number; |
+}; |
+ |
+struct DataLossInfo { |
+ DataLoss status; |
+ string message; |
+}; |
+ |
+// TODO(cmumford): Can we make KeyPath a union, and pass a NULL value for type none? |
+struct KeyPath { |
+ KeyPathType type; |
+ KeyPathData data; |
+}; |
+ |
+struct Key { |
+ KeyData data; |
+ KeyType type; |
+}; |
+ |
+struct KeyRange { |
+ Key upper; |
+ Key lower; |
+ bool upper_open; |
+ bool lower_open; |
+}; |
+ |
+struct BlobInfo { |
+ bool is_file; |
+ string uuid; |
+ string type; // MIME type |
+ int64 size; |
+ string file_path; // Only for File |
+ string file_name; // Only for File |
+ double last_modified; // Only for File |
+}; |
+ |
+struct IndexMetadata { |
+ string name; |
+ KeyPath key_path; |
+ bool unique = false; |
+ bool multi_entry = false; |
+ int64 id; |
+}; |
+ |
+struct ObjectStoreMetadata { |
+ string name; |
+ KeyPath key_path; |
+ bool auto_increment = false; |
+ int64 id; |
+ int64 max_index_id; |
+ map<int64, IndexMetadata> indexes; |
+}; |
+ |
+struct Value { |
+ array<int8> data; |
+ array<BlobInfo> blob_info; |
+ // The auto-generated primary key and key path. Both are set when IDB is |
+ // generating keys (and not JavaScript). Optional; If set then a property |
+ // named |key_path| will be set to |primary_key| on the deserialized |data| |
+ // object before calling the event handler. |
+ Key primary_key; |
+ KeyPath key_path; |
+}; |
+ |
+struct DatabaseMetadata { |
+ |
+ const int64 NoVersion = -1; |
+ |
+ string name; |
+ int64 version; |
+ int64 id; |
+ int64 max_object_store_id; |
+ map<int64, ObjectStoreMetadata> object_stores; |
+}; |
+ |
+struct ErrorInfo { |
+ int16 code; |
+ string message; |
+}; |
+ |
+union GetResult { |
+ ErrorInfo error; |
+}; |
+ |
+// Data for a newly opened database connection. |
+struct DatabaseOpenData { |
+ Database database; |
+ DatabaseMetadata metadata; |
+}; |
+ |
+union OpenResult { |
+ DatabaseOpenData data; |
+ ErrorInfo error; |
+}; |
+ |
+// An observer that lives for the lifetime of an open database connection. Used |
+// by the server to send unsolicited messages to the client. |
+interface DatabaseObserver { |
+ OnTransactionAborted(int64 host_transaction_id, ErrorInfo error); |
+ OnTransactionCompleted(int64 host_transaction_id); |
+ OnForcedClosed(); |
+ OnVersionChange(int64 old_version, int64 new_version); |
+}; |
+ |
+// Used during database open and delete. Maps to IDBOpenDBRequest. |
+interface OpenRequestObserver { |
+ OnBlocked(int64 old_version); |
+ OnUpgradeNeeded(int64 old_version, Database database, DatabaseMetadata metadata, DataLossInfo dataLoss); |
+}; |
+ |
+interface DatabaseFactory { |
+ |
+ Open(string name, int64 version, int64 transaction_id, |
+ url.mojom.Origin origin, OpenRequestObserver open_observer, |
+ DatabaseObserver database_observer) |
+ => (OpenResult out); |
+ |
+ GetDatabaseNames(url.mojom.Origin origin); |
+ |
+ DeleteDatabase(string name, url.mojom.Origin origin); |
+}; |
+ |
+interface Database { |
+ |
+ const int64 minimumIndexId = 30; |
+ |
+ CreateObjectStore(int64 transaction_id, int64 object_store_id, string name, |
+ KeyPath key_path, bool auto_increment); |
+ |
+ Close(); |
+ |
+ DeleteObjectStore(int64 transaction_id, int64 object_store_id); |
+ |
+ CreateTransaction(int64 transaction_id, array<int64> scope, |
+ TransactionMode transaction_mode); |
+ |
+ VersionChangeIgnored(); |
+ |
+ Abort(int64 transaction_id); |
+ |
+ Commit(int64 transaction_id); |
+ |
+ Get(int64 transaction_id, int64 object_store_id, int64 index_id, |
+ KeyRange key_range, bool key_only) => (GetResult out); |
+ |
+ GetAll(int64 transaction_id, int64 object_store_id, int64 index_id, |
+ KeyRange key_range, int64 max_count, bool key_only); |
+ |
+ Put(int64 transaction_id, int64 object_store_id, array<int8> value, |
+ array<BlobInfo> blob_info, Key key, PutMode put_mode, |
+ array<int64> index_ids, array<array<Key>> index_keys); |
+ |
+ DeleteRange(int64 transaction_id, int64 object_store_id, KeyRange key_range); |
+ |
+ Clear(int64 transaction_id, int64 object_store_id); |
+ |
+ CreateIndex(int64 transaction_id, int64 object_store_id, int64 index_id, |
+ string name, KeyPath key_path, bool unique, bool multi_entry); |
+ |
+ DeleteIndex(int64 transaction_id, int64 object_store_id, int64 index_id); |
+ |
+ SetIndexKeys(int64 transaction_id, int64 object_store_id, Key primary_key, |
+ array<int64> index_ids, array<array<Key>> index_keys); |
+ |
+ SetIndexesReady(int64 transaction_id, int64 object_store_id, |
+ array<int64> index_ids); |
+ |
+ OpenCursor(int64 transaction_id, int64 object_store_id, int64 index_id, |
+ KeyRange key_range, CursorDirection direction, bool key_only, |
+ TaskType task_type); |
+ |
+ Count(int64 transaction_id, int64 object_store_id, int64 index_id, |
+ KeyRange key_range); |
+ |
+ AckReceivedBlobs(array<string> uuids); |
+}; |
+ |
+interface Cursor { |
+ |
+ Advance(uint32 count); |
+ |
+ ContinueFunction(Key key, Key primary_key); |
+ |
+ PostSuccessHandlerCallback(); |
+}; |