1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_INDEX_WRITER_H_
6 #define CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_INDEX_WRITER_H_
11 #include "base/basictypes.h"
12 #include "base/memory/scoped_vector.h"
13 #include "content/browser/indexed_db/indexed_db_backing_store.h"
14 #include "content/browser/indexed_db/indexed_db_database.h"
15 #include "content/browser/indexed_db/indexed_db_metadata.h"
16 #include "content/common/indexed_db/indexed_db_key_path.h"
20 class IndexedDBTransaction
;
21 struct IndexedDBObjectStoreMetadata
;
25 explicit IndexWriter(const IndexedDBIndexMetadata
& index_metadata
);
27 IndexWriter(const IndexedDBIndexMetadata
& index_metadata
,
28 const IndexedDBDatabase::IndexKeys
& index_keys
);
30 bool VerifyIndexKeys(IndexedDBBackingStore
* store
,
31 IndexedDBBackingStore::Transaction
* transaction
,
33 int64 object_store_id
,
36 const IndexedDBKey
& primary_key
,
37 base::string16
* error_message
) const WARN_UNUSED_RESULT
;
39 void WriteIndexKeys(const IndexedDBBackingStore::RecordIdentifier
& record
,
40 IndexedDBBackingStore
* store
,
41 IndexedDBBackingStore::Transaction
* transaction
,
43 int64 object_store_id
) const;
48 bool AddingKeyAllowed(IndexedDBBackingStore
* store
,
49 IndexedDBBackingStore::Transaction
* transaction
,
51 int64 object_store_id
,
53 const IndexedDBKey
& index_key
,
54 const IndexedDBKey
& primary_key
,
55 bool* allowed
) const WARN_UNUSED_RESULT
;
57 const IndexedDBIndexMetadata index_metadata_
;
58 IndexedDBDatabase::IndexKeys index_keys_
;
61 bool MakeIndexWriters(
62 scoped_refptr
<IndexedDBTransaction
> transaction
,
63 IndexedDBBackingStore
* store
,
65 const IndexedDBObjectStoreMetadata
& metadata
,
66 const IndexedDBKey
& primary_key
,
67 bool key_was_generated
,
68 const std::vector
<IndexedDBDatabase::IndexKeys
>& index_keys
,
69 ScopedVector
<IndexWriter
>* index_writers
,
70 base::string16
* error_message
,
71 bool* completed
) WARN_UNUSED_RESULT
;
73 } // namespace content
75 #endif // CONTENT_BROWSER_INDEXED_DB_INDEXED_DB_INDEX_WRITER_H_