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#include "chrome/browser/ui/app_list/search/history.h" 6 7#include "base/strings/string_util.h" 8#include "base/strings/utf_string_conversions.h" 9#include "chrome/browser/ui/app_list/search/history_data.h" 10#include "chrome/browser/ui/app_list/search/history_data_store.h" 11#include "ui/app_list/search/tokenized_string.h" 12 13namespace app_list { 14 15namespace { 16 17// Normalize the given string by joining all its tokens with a space. 18std::string NormalizeString(const std::string& utf8) { 19 TokenizedString tokenized(base::UTF8ToUTF16(utf8)); 20 return base::UTF16ToUTF8(JoinString(tokenized.tokens(), ' ')); 21} 22 23} // namespace 24 25History::History(scoped_refptr<HistoryDataStore> store) 26 : store_(store), 27 data_loaded_(false) { 28 const size_t kMaxQueryEntries = 1000; 29 const size_t kMaxSecondaryQueries = 5; 30 31 data_.reset( 32 new HistoryData(store_.get(), kMaxQueryEntries, kMaxSecondaryQueries)); 33 data_->AddObserver(this); 34} 35 36History::~History() { 37 data_->RemoveObserver(this); 38} 39 40bool History::IsReady() const { 41 return data_loaded_; 42} 43 44void History::AddLaunchEvent(const std::string& query, 45 const std::string& result_id) { 46 DCHECK(IsReady()); 47 data_->Add(NormalizeString(query), result_id); 48} 49 50scoped_ptr<KnownResults> History::GetKnownResults( 51 const std::string& query) const { 52 DCHECK(IsReady()); 53 return data_->GetKnownResults(NormalizeString(query)).Pass(); 54} 55 56void History::OnHistoryDataLoadedFromStore() { 57 data_loaded_ = true; 58} 59 60} // namespace app_list 61