Upstream version 11.39.266.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / app_list / search / history.cc
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
13 namespace app_list {
14
15 namespace {
16
17 // Normalize the given string by joining all its tokens with a space.
18 std::string NormalizeString(const std::string& utf8) {
19   TokenizedString tokenized(base::UTF8ToUTF16(utf8));
20   return base::UTF16ToUTF8(JoinString(tokenized.tokens(), ' '));
21 }
22
23 }  // namespace
24
25 History::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
36 History::~History() {
37   data_->RemoveObserver(this);
38 }
39
40 bool History::IsReady() const {
41   return data_loaded_;
42 }
43
44 void History::AddLaunchEvent(const std::string& query,
45                              const std::string& result_id) {
46   DCHECK(IsReady());
47   data_->Add(NormalizeString(query), result_id);
48 }
49
50 scoped_ptr<KnownResults> History::GetKnownResults(
51     const std::string& query) const {
52   DCHECK(IsReady());
53   return data_->GetKnownResults(NormalizeString(query)).Pass();
54 }
55
56 void History::OnHistoryDataLoadedFromStore() {
57   data_loaded_ = true;
58 }
59
60 }  // namespace app_list