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 "chrome/browser/extensions/activity_log/ad_network_database.h"
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"
12 namespace extensions {
16 class AdNetworkDatabaseFactory {
18 AdNetworkDatabaseFactory();
19 ~AdNetworkDatabaseFactory();
21 const AdNetworkDatabase* GetDatabase();
22 void SetDatabase(scoped_ptr<AdNetworkDatabase> database);
25 scoped_ptr<AdNetworkDatabase> database_;
28 AdNetworkDatabaseFactory::AdNetworkDatabaseFactory() {}
29 AdNetworkDatabaseFactory::~AdNetworkDatabaseFactory() {}
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 ResourceBundle::GetSharedInstance().LoadDataResourceBytes(
36 IDR_AD_NETWORK_HASHES)));
39 return database_.get();
42 void AdNetworkDatabaseFactory::SetDatabase(
43 scoped_ptr<AdNetworkDatabase> database) {
44 database_.reset(database.release());
47 base::LazyInstance<AdNetworkDatabaseFactory> g_factory =
48 LAZY_INSTANCE_INITIALIZER;
52 AdNetworkDatabase::~AdNetworkDatabase() {}
55 const AdNetworkDatabase* AdNetworkDatabase::Get() {
56 return g_factory.Get().GetDatabase();
60 void AdNetworkDatabase::SetForTesting(scoped_ptr<AdNetworkDatabase> database) {
61 g_factory.Get().SetDatabase(database.Pass());
64 } // namespace extensions