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)#ifndef CHROME_BROWSER_UI_APP_LIST_SEARCH_HISTORY_FACTORY_H_
690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#define CHROME_BROWSER_UI_APP_LIST_SEARCH_HISTORY_FACTORY_H_
790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)template<typename T> struct DefaultSingletonTraits;
1190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace content {
1390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class BrowserContext;
1490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}
1590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)namespace app_list {
1790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
1890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class History;
1990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)// Singleton that owns all History and associates them with profiles;
2190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)class HistoryFactory : public BrowserContextKeyedServiceFactory {
2290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) public:
2390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Returns singleton instance of HistoryFactory.
2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  static HistoryFactory* GetInstance();
2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // Returns History associated with |context|.
2790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  static History* GetForBrowserContext(content::BrowserContext* context);
2890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
2990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) private:
3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  friend struct DefaultSingletonTraits<HistoryFactory>;
3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
3290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  HistoryFactory();
3390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  virtual ~HistoryFactory();
3490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  // BrowserContextKeyedServiceFactory overrides:
36a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  virtual KeyedService* BuildServiceInstanceFor(
3790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)      content::BrowserContext* context) const OVERRIDE;
3890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
3990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(HistoryFactory);
4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)};
4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)}  // namespace app_list
4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)
4490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#endif  // CHROME_BROWSER_UI_APP_LIST_SEARCH_HISTORY_FACTORY_H_
45