1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// found in the LICENSE file. 4f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 5f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "content/browser/indexed_db/indexed_db_class_factory.h" 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "content/browser/indexed_db/leveldb/leveldb_iterator_impl.h" 7f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#include "content/browser/indexed_db/leveldb/leveldb_transaction.h" 8f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 9f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)namespace content { 10f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 11f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)static IndexedDBClassFactory::GetterCallback* s_factory_getter; 12f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)static ::base::LazyInstance<IndexedDBClassFactory>::Leaky s_factory = 13f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) LAZY_INSTANCE_INITIALIZER; 14f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 15f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)void IndexedDBClassFactory::SetIndexedDBClassFactoryGetter(GetterCallback* cb) { 16f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) s_factory_getter = cb; 17f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 18f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 19f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)IndexedDBClassFactory* IndexedDBClassFactory::Get() { 20f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) if (s_factory_getter) 21f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return (*s_factory_getter)(); 22f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) else 23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return s_factory.Pointer(); 24f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 25f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 26f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)LevelDBTransaction* IndexedDBClassFactory::CreateLevelDBTransaction( 27f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) LevelDBDatabase* db) { 28f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) return new LevelDBTransaction(db); 29f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 30f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles) 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdochcontent::LevelDBIteratorImpl* IndexedDBClassFactory::CreateIteratorImpl( 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch scoped_ptr<leveldb::Iterator> iterator) { 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return new LevelDBIteratorImpl(iterator.Pass()); 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 36f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} // namespace content 37