Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / activity_log / ad_network_database.cc
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         ResourceBundle::GetSharedInstance().LoadDataResourceBytes(
36             IDR_AD_NETWORK_HASHES)));
37   }
38
39   return database_.get();
40 }
41
42 void AdNetworkDatabaseFactory::SetDatabase(
43     scoped_ptr<AdNetworkDatabase> database) {
44   database_.reset(database.release());
45 }
46
47 base::LazyInstance<AdNetworkDatabaseFactory> g_factory =
48     LAZY_INSTANCE_INITIALIZER;
49
50 }  // namespace
51
52 AdNetworkDatabase::~AdNetworkDatabase() {}
53
54 // static
55 const AdNetworkDatabase* AdNetworkDatabase::Get() {
56   return g_factory.Get().GetDatabase();
57 }
58
59 // static
60 void AdNetworkDatabase::SetForTesting(scoped_ptr<AdNetworkDatabase> database) {
61   g_factory.Get().SetDatabase(database.Pass());
62 }
63
64 }  // namespace extensions