10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
20529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Use of this source code is governed by a BSD-style license that can be
30529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// found in the LICENSE file.
40529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "chrome/browser/extensions/activity_log/ad_network_database.h"
60529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
70529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/lazy_instance.h"
8010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "chrome/browser/extensions/activity_log/hashed_ad_network_database.h"
95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "grit/browser_resources.h"
105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "ui/base/resource/resource_bundle.h"
110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace extensions {
130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace {
150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass AdNetworkDatabaseFactory {
170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public:
180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  AdNetworkDatabaseFactory();
190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  ~AdNetworkDatabaseFactory();
200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  const AdNetworkDatabase* GetDatabase();
220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  void SetDatabase(scoped_ptr<AdNetworkDatabase> database);
230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch private:
250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  scoped_ptr<AdNetworkDatabase> database_;
260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch};
270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
280529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochAdNetworkDatabaseFactory::AdNetworkDatabaseFactory() {}
290529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochAdNetworkDatabaseFactory::~AdNetworkDatabaseFactory() {}
300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuconst AdNetworkDatabase* AdNetworkDatabaseFactory::GetDatabase() {
325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  // Construct a new database, if we don't have one.
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  if (!database_.get())
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    database_.reset(new HashedAdNetworkDatabase());
355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  return database_.get();
375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}
385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvoid AdNetworkDatabaseFactory::SetDatabase(
400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    scoped_ptr<AdNetworkDatabase> database) {
410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  database_.reset(database.release());
420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}
430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochbase::LazyInstance<AdNetworkDatabaseFactory> g_factory =
450529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch    LAZY_INSTANCE_INITIALIZER;
460529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}  // namespace
480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
490529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochAdNetworkDatabase::~AdNetworkDatabase() {}
500529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
510529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// static
520529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochconst AdNetworkDatabase* AdNetworkDatabase::Get() {
535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  return g_factory.Get().GetDatabase();
540529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}
550529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
560529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// static
570529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvoid AdNetworkDatabase::SetForTesting(scoped_ptr<AdNetworkDatabase> database) {
580529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  g_factory.Get().SetDatabase(database.Pass());
590529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}
600529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
610529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}  // namespace extensions
62