1d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt// Use of this source code is governed by a BSD-style license that can be 3d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt// found in the LICENSE file. 4d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt 5d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt#ifndef CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_METADATA_H_ 6d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt#define CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_METADATA_H_ 7d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt 8d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt#include <map> 9d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt 10d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt#include "base/basictypes.h" 11d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt#include "base/strings/string16.h" 12d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt#include "content/common/indexed_db/indexed_db_key_path.h" 13d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt 14d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholtnamespace content { 15d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt 16d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholtstruct IndexedDBIndexMetadata { 17d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt static const int64 kInvalidId = -1; 18d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt 19d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt IndexedDBIndexMetadata() {} 20d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt IndexedDBIndexMetadata(const base::string16& name, 21d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt int64 id, 22d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt const IndexedDBKeyPath& key_path, 23d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt bool unique, 24d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt bool multi_entry) 25d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt : name(name), 26d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt id(id), 27d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt key_path(key_path), 28d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt unique(unique), 29d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt multi_entry(multi_entry) {} 30d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt base::string16 name; 31d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt int64 id; 32d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt IndexedDBKeyPath key_path; 33d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt bool unique; 34d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt bool multi_entry; 35d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt}; 36d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt 37d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholtstruct CONTENT_EXPORT IndexedDBObjectStoreMetadata { 38d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt typedef std::map<int64, IndexedDBIndexMetadata> IndexMap; 39d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt 40d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt static const int64 kInvalidId = -1; 41d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt 42d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt IndexedDBObjectStoreMetadata(); 43d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt IndexedDBObjectStoreMetadata(const base::string16& name, 44d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt int64 id, 45d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt const IndexedDBKeyPath& key_path, 46d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt bool auto_increment, 47d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt int64 max_index_id); 48d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt ~IndexedDBObjectStoreMetadata(); 492f0edc60f4bd2ae5999a6afa656e3bb3f181bf0fChad Versace base::string16 name; 502f0edc60f4bd2ae5999a6afa656e3bb3f181bf0fChad Versace int64 id; 512f0edc60f4bd2ae5999a6afa656e3bb3f181bf0fChad Versace IndexedDBKeyPath key_path; 52d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt bool auto_increment; 53d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt int64 max_index_id; 54d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt 55d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt IndexMap indexes; 56d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt}; 57d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt 58d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholtstruct CONTENT_EXPORT IndexedDBDatabaseMetadata { 59d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt // TODO(jsbell): These can probably be collapsed into 0. 60d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt enum { 61d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt NO_INT_VERSION = -1, 62d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt DEFAULT_INT_VERSION = 0 63d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt }; 64d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt 65d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt typedef std::map<int64, IndexedDBObjectStoreMetadata> ObjectStoreMap; 66d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt 67d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt IndexedDBDatabaseMetadata(); 68d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt IndexedDBDatabaseMetadata(const base::string16& name, 69d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt int64 id, 70d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt const base::string16& version, 71d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt int64 int_version, 726d874d0ee18b3694c49e0206fa519bd8b746ec24Eric Anholt int64 max_object_store_id); 736d874d0ee18b3694c49e0206fa519bd8b746ec24Eric Anholt ~IndexedDBDatabaseMetadata(); 74d1f70a8a6c6ec7007bad22d3d6013415be2d243aEric Anholt 7529362875f2613ad87abe7725ce3c56c36d16cf9bEric Anholt base::string16 name; 7629362875f2613ad87abe7725ce3c56c36d16cf9bEric Anholt int64 id; 7729362875f2613ad87abe7725ce3c56c36d16cf9bEric Anholt base::string16 version; 7829362875f2613ad87abe7725ce3c56c36d16cf9bEric Anholt int64 int_version; 7929362875f2613ad87abe7725ce3c56c36d16cf9bEric Anholt int64 max_object_store_id; 806d874d0ee18b3694c49e0206fa519bd8b746ec24Eric Anholt 811e188f2daef1ae31224d2429bcc1fab75c81fb36Eric Anholt ObjectStoreMap object_stores; 826d874d0ee18b3694c49e0206fa519bd8b746ec24Eric Anholt}; 832f18698220d8b27991fab550c4721590d17278e0Kenneth Graunke} // namespace content 846d874d0ee18b3694c49e0206fa519bd8b746ec24Eric Anholt 856d874d0ee18b3694c49e0206fa519bd8b746ec24Eric Anholt#endif // CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_METADATA_H_ 866d874d0ee18b3694c49e0206fa519bd8b746ec24Eric Anholt