190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// found in the LICENSE file.
490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/ui/app_list/search/history_factory.h"
690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/memory/ref_counted.h"
890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "base/memory/singleton.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/ui/app_list/search/common/dictionary_data_store.h"
1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/ui/app_list/search/history.h"
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/browser/ui/app_list/search/history_data_store.h"
12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_dependency_manager.h"
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "content/public/browser/browser_context.h"
1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace app_list {
1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// static
1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)HistoryFactory* HistoryFactory::GetInstance() {
1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return Singleton<HistoryFactory>::get();
2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// static
2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)History* HistoryFactory::GetForBrowserContext(
2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    content::BrowserContext* context) {
2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  return static_cast<History*>(
2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      GetInstance()->GetServiceForBrowserContext(context, true));
2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)HistoryFactory::HistoryFactory()
3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    : BrowserContextKeyedServiceFactory(
3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)          "app_list::History",
3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)          BrowserContextDependencyManager::GetInstance()) {}
3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)HistoryFactory::~HistoryFactory() {}
3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)KeyedService* HistoryFactory::BuildServiceInstanceFor(
3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)    content::BrowserContext* context) const {
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  const char kStoreDataFileName[] = "App Launcher Search";
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  const base::FilePath data_file =
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      context->GetPath().AppendASCII(kStoreDataFileName);
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_refptr<DictionaryDataStore> dictionary_data_store(
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      new DictionaryDataStore(data_file));
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  scoped_refptr<HistoryDataStore> history_data_store(
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci      new HistoryDataStore(dictionary_data_store));
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return new History(history_data_store);
4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
4890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}  // namespace app_list
49