103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// found in the LICENSE file. 403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#ifndef COMPONENTS_OMNIBOX_ANSWERS_CACHE_H_ 61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define COMPONENTS_OMNIBOX_ANSWERS_CACHE_H_ 703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include <list> 903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "base/basictypes.h" 1103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "base/strings/string16.h" 1203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 1303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)struct AnswersQueryData { 1403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) AnswersQueryData(); 1503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) AnswersQueryData(const base::string16& full_query_text, 1603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const base::string16& query_type); 1703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) base::string16 full_query_text; 1803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) base::string16 query_type; 1903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}; 2003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 2103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)// Cache for the most-recently seen answer for Answers in Suggest. 2203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class AnswersCache { 2303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) public: 2403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) explicit AnswersCache(size_t max_entries); 2503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) ~AnswersCache(); 2603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 2703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // Gets the top answer query completion for the query term. The query data 2803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // will contain empty query text and type if no matching data was found. 2903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) AnswersQueryData GetTopAnswerEntry(const base::string16& query); 3003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 3103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // Registers a query that received an answer suggestion. 3203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) void UpdateRecentAnswers(const base::string16& full_query_text, 3303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) const base::string16& query_type); 3403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 3503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) // Signals if cache is empty. 3603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) bool empty() const { return cache_.empty(); } 3703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 3803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) private: 3903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) size_t max_entries_; 4003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) typedef std::list<AnswersQueryData> Cache; 4103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) Cache cache_; 4203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 4303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(AnswersCache); 4403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}; 4503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#endif // COMPONENTS_OMNIBOX_ANSWERS_CACHE_H_ 47