Roll src/third_party/skia 21b998b:bda7da8
[chromium-blink-merge.git] / content / browser / indexed_db / indexed_db_class_factory.cc
blob284b40cd7881b3bfca71c8f42da427c420ed4c2e
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"
10 namespace content {
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() {
21 if (s_factory_getter)
22 return (*s_factory_getter)();
23 else
24 return s_factory.Pointer();
27 IndexedDBTransaction* IndexedDBClassFactory::CreateIndexedDBTransaction(
28 int64 id,
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