1 // Copyright 2014 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 #include "content/browser/indexed_db/indexed_db_class_factory.h"
6 #include "content/browser/indexed_db/indexed_db_transaction.h"
7 #include "content/browser/indexed_db/leveldb/leveldb_iterator_impl.h"
8 #include "content/browser/indexed_db/leveldb/leveldb_transaction.h"
12 static IndexedDBClassFactory::GetterCallback
* s_factory_getter
;
13 static ::base::LazyInstance
<IndexedDBClassFactory
>::Leaky s_factory
=
14 LAZY_INSTANCE_INITIALIZER
;
16 void IndexedDBClassFactory::SetIndexedDBClassFactoryGetter(GetterCallback
* cb
) {
17 s_factory_getter
= cb
;
20 IndexedDBClassFactory
* IndexedDBClassFactory::Get() {
22 return (*s_factory_getter
)();
24 return s_factory
.Pointer();
27 IndexedDBTransaction
* IndexedDBClassFactory::CreateIndexedDBTransaction(
29 scoped_refptr
<IndexedDBDatabaseCallbacks
> callbacks
,
30 const std::set
<int64
>& scope
,
31 blink::WebIDBTransactionMode mode
,
32 IndexedDBDatabase
* db
,
33 IndexedDBBackingStore::Transaction
* backing_store_transaction
) {
34 return new IndexedDBTransaction(id
, callbacks
, scope
, mode
, db
,
35 backing_store_transaction
);
38 LevelDBTransaction
* IndexedDBClassFactory::CreateLevelDBTransaction(
39 LevelDBDatabase
* db
) {
40 return new LevelDBTransaction(db
);
43 content::LevelDBIteratorImpl
* IndexedDBClassFactory::CreateIteratorImpl(
44 scoped_ptr
<leveldb::Iterator
> iterator
) {
45 return new LevelDBIteratorImpl(iterator
.Pass());
48 } // namespace content