Home | History | Annotate | Download | only in activity_log
      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