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