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. 4 5 #include "chrome/browser/extensions/activity_log/ad_network_database.h" 6 7 #include "base/lazy_instance.h" 8 #include "chrome/browser/extensions/activity_log/hashed_ad_network_database.h" 9 #include "grit/browser_resources.h" 10 #include "ui/base/resource/resource_bundle.h" 11 12 namespace extensions { 13 14 namespace { 15 16 class AdNetworkDatabaseFactory { 17 public: 18 AdNetworkDatabaseFactory(); 19 ~AdNetworkDatabaseFactory(); 20 21 const AdNetworkDatabase* GetDatabase(); 22 void SetDatabase(scoped_ptr<AdNetworkDatabase> database); 23 24 private: 25 scoped_ptr<AdNetworkDatabase> database_; 26 }; 27 28 AdNetworkDatabaseFactory::AdNetworkDatabaseFactory() {} 29 AdNetworkDatabaseFactory::~AdNetworkDatabaseFactory() {} 30 31 const AdNetworkDatabase* AdNetworkDatabaseFactory::GetDatabase() { 32 // Construct a new database, if we don't have one. 33 if (!database_.get()) 34 database_.reset(new HashedAdNetworkDatabase()); 35 36 return database_.get(); 37 } 38 39 void AdNetworkDatabaseFactory::SetDatabase( 40 scoped_ptr<AdNetworkDatabase> database) { 41 database_.reset(database.release()); 42 } 43 44 base::LazyInstance<AdNetworkDatabaseFactory> g_factory = 45 LAZY_INSTANCE_INITIALIZER; 46 47 } // namespace 48 49 AdNetworkDatabase::~AdNetworkDatabase() {} 50 51 // static 52 const AdNetworkDatabase* AdNetworkDatabase::Get() { 53 return g_factory.Get().GetDatabase(); 54 } 55 56 // static 57 void AdNetworkDatabase::SetForTesting(scoped_ptr<AdNetworkDatabase> database) { 58 g_factory.Get().SetDatabase(database.Pass()); 59 } 60 61 } // namespace extensions 62