history.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
1// Copyright 2013 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#ifndef CHROME_BROWSER_UI_APP_LIST_SEARCH_HISTORY_H_ 6#define CHROME_BROWSER_UI_APP_LIST_SEARCH_HISTORY_H_ 7 8#include <map> 9#include <string> 10 11#include "base/basictypes.h" 12#include "base/memory/ref_counted.h" 13#include "base/memory/scoped_ptr.h" 14#include "chrome/browser/ui/app_list/search/history_data_observer.h" 15#include "chrome/browser/ui/app_list/search/history_types.h" 16#include "components/keyed_service/core/keyed_service.h" 17 18namespace app_list { 19 20class HistoryData; 21class HistoryDataStore; 22 23namespace test { 24class SearchHistoryTest; 25} 26 27// History tracks the launch events of the search results and uses HistoryData 28// to build user learning data out of these events. The learning data is stored 29// as associations between user typed query and launched result id. There are 30// primary and secondary associations. See HistoryData comments to see how 31// they are built. The learning data is sent to the mixer to boost results that 32// have been launched before. 33class History : public KeyedService, public HistoryDataObserver { 34 public: 35 explicit History(scoped_refptr<HistoryDataStore> store); 36 virtual ~History(); 37 38 // Returns true if the service is ready. 39 bool IsReady() const; 40 41 // Adds a launch event to the learning data. 42 void AddLaunchEvent(const std::string& query, const std::string& result_id); 43 44 // Gets all known search results that were launched using the given |query| 45 // or using queries that |query| is a prefix of. 46 scoped_ptr<KnownResults> GetKnownResults(const std::string& query) const; 47 48 private: 49 friend class app_list::test::SearchHistoryTest; 50 51 // HistoryDataObserver overrides: 52 virtual void OnHistoryDataLoadedFromStore() OVERRIDE; 53 54 scoped_ptr<HistoryData> data_; 55 scoped_refptr<HistoryDataStore> store_; 56 bool data_loaded_; 57 58 DISALLOW_COPY_AND_ASSIGN(History); 59}; 60 61} // namespace app_list 62 63#endif // CHROME_BROWSER_UI_APP_LIST_SEARCH_HISTORY_H_ 64