Index: ui/app_list/search/history_data_store.cc |
diff --git a/ui/app_list/search/history_data_store.cc b/ui/app_list/search/history_data_store.cc |
deleted file mode 100644 |
index 996adc44e78a04b1c95b792d9976b7d13f837ce1..0000000000000000000000000000000000000000 |
--- a/ui/app_list/search/history_data_store.cc |
+++ /dev/null |
@@ -1,221 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "ui/app_list/search/history_data_store.h" |
- |
-#include "base/callback.h" |
-#include "base/json/json_file_value_serializer.h" |
-#include "base/json/json_string_value_serializer.h" |
-#include "base/strings/string_number_conversions.h" |
-#include "base/values.h" |
- |
-namespace app_list { |
- |
-namespace { |
- |
-const char kKeyVersion[] = "version"; |
-const char kCurrentVersion[] = "1"; |
- |
-const char kKeyAssociations[] = "associations"; |
-const char kKeyPrimary[] = "p"; |
-const char kKeySecondary[] = "s"; |
-const char kKeyUpdateTime[] = "t"; |
- |
-// Extracts strings from ListValue. |
-void GetSecondary(const base::ListValue* list, |
- HistoryData::SecondaryDeque* secondary) { |
- HistoryData::SecondaryDeque results; |
- for (base::ListValue::const_iterator it = list->begin(); it != list->end(); |
- ++it) { |
- std::string str; |
- if (!(*it)->GetAsString(&str)) |
- return; |
- |
- results.push_back(str); |
- } |
- |
- secondary->swap(results); |
-} |
- |
-// V1 format json dictionary: |
-// { |
-// "version": "1", |
-// "associations": { |
-// "user typed query": { |
-// "p" : "result id of primary association", |
-// "s" : [ |
-// "result id of 1st (oldest) secondary association", |
-// ... |
-// "result id of the newest secondary association" |
-// ], |
-// "t" : "last_update_timestamp" |
-// }, |
-// ... |
-// } |
-// } |
-scoped_ptr<HistoryData::Associations> Parse( |
- scoped_ptr<base::DictionaryValue> dict) { |
- std::string version; |
- if (!dict->GetStringWithoutPathExpansion(kKeyVersion, &version) || |
- version != kCurrentVersion) { |
- return scoped_ptr<HistoryData::Associations>(); |
- } |
- |
- const base::DictionaryValue* assoc_dict = NULL; |
- if (!dict->GetDictionaryWithoutPathExpansion(kKeyAssociations, &assoc_dict) || |
- !assoc_dict) { |
- return scoped_ptr<HistoryData::Associations>(); |
- } |
- |
- scoped_ptr<HistoryData::Associations> data(new HistoryData::Associations); |
- for (base::DictionaryValue::Iterator it(*assoc_dict); !it.IsAtEnd(); |
- it.Advance()) { |
- const base::DictionaryValue* entry_dict = NULL; |
- if (!it.value().GetAsDictionary(&entry_dict)) |
- continue; |
- |
- std::string primary; |
- std::string update_time_string; |
- if (!entry_dict->GetStringWithoutPathExpansion(kKeyPrimary, &primary) || |
- !entry_dict->GetStringWithoutPathExpansion(kKeyUpdateTime, |
- &update_time_string)) { |
- continue; |
- } |
- |
- const base::ListValue* secondary_list = NULL; |
- HistoryData::SecondaryDeque secondary; |
- if (entry_dict->GetListWithoutPathExpansion(kKeySecondary, &secondary_list)) |
- GetSecondary(secondary_list, &secondary); |
- |
- const std::string& query = it.key(); |
- HistoryData::Data& association_data = (*data.get())[query]; |
- association_data.primary = primary; |
- association_data.secondary.swap(secondary); |
- |
- int64 update_time_val; |
- base::StringToInt64(update_time_string, &update_time_val); |
- association_data.update_time = |
- base::Time::FromInternalValue(update_time_val); |
- } |
- |
- return data.Pass(); |
-} |
- |
-} // namespace |
- |
-HistoryDataStore::HistoryDataStore() |
- : cached_dict_(new base::DictionaryValue()) { |
- Init(cached_dict_.get()); |
-} |
- |
-HistoryDataStore::HistoryDataStore( |
- scoped_refptr<DictionaryDataStore> data_store) |
- : data_store_(data_store) { |
- Init(data_store_->cached_dict()); |
-} |
- |
-HistoryDataStore::~HistoryDataStore() { |
-} |
- |
-void HistoryDataStore::Init(base::DictionaryValue* cached_dict) { |
- DCHECK(cached_dict); |
- cached_dict->SetString(kKeyVersion, kCurrentVersion); |
- cached_dict->Set(kKeyAssociations, new base::DictionaryValue); |
-} |
- |
-void HistoryDataStore::Flush( |
- const DictionaryDataStore::OnFlushedCallback& on_flushed) { |
- if (data_store_.get()) |
- data_store_->Flush(on_flushed); |
- else |
- on_flushed.Run(); |
-} |
- |
-void HistoryDataStore::Load( |
- const HistoryDataStore::OnLoadedCallback& on_loaded) { |
- if (data_store_.get()) { |
- data_store_->Load(base::Bind( |
- &HistoryDataStore::OnDictionaryLoadedCallback, this, on_loaded)); |
- } else { |
- OnDictionaryLoadedCallback(on_loaded, |
- make_scoped_ptr(cached_dict_->DeepCopy())); |
- } |
-} |
- |
-void HistoryDataStore::SetPrimary(const std::string& query, |
- const std::string& result) { |
- base::DictionaryValue* entry_dict = GetEntryDict(query); |
- entry_dict->SetWithoutPathExpansion(kKeyPrimary, |
- new base::StringValue(result)); |
- if (data_store_.get()) |
- data_store_->ScheduleWrite(); |
-} |
- |
-void HistoryDataStore::SetSecondary( |
- const std::string& query, |
- const HistoryData::SecondaryDeque& results) { |
- scoped_ptr<base::ListValue> results_list(new base::ListValue); |
- for (size_t i = 0; i < results.size(); ++i) |
- results_list->AppendString(results[i]); |
- |
- base::DictionaryValue* entry_dict = GetEntryDict(query); |
- entry_dict->SetWithoutPathExpansion(kKeySecondary, results_list.release()); |
- if (data_store_.get()) |
- data_store_->ScheduleWrite(); |
-} |
- |
-void HistoryDataStore::SetUpdateTime(const std::string& query, |
- const base::Time& update_time) { |
- base::DictionaryValue* entry_dict = GetEntryDict(query); |
- entry_dict->SetWithoutPathExpansion(kKeyUpdateTime, |
- new base::StringValue(base::Int64ToString( |
- update_time.ToInternalValue()))); |
- if (data_store_.get()) |
- data_store_->ScheduleWrite(); |
-} |
- |
-void HistoryDataStore::Delete(const std::string& query) { |
- base::DictionaryValue* assoc_dict = GetAssociationDict(); |
- assoc_dict->RemoveWithoutPathExpansion(query, NULL); |
- if (data_store_.get()) |
- data_store_->ScheduleWrite(); |
-} |
- |
-base::DictionaryValue* HistoryDataStore::GetAssociationDict() { |
- base::DictionaryValue* cached_dict = |
- cached_dict_ ? cached_dict_.get() : data_store_->cached_dict(); |
- DCHECK(cached_dict); |
- |
- base::DictionaryValue* assoc_dict = NULL; |
- CHECK(cached_dict->GetDictionary(kKeyAssociations, &assoc_dict) && |
- assoc_dict); |
- |
- return assoc_dict; |
-} |
- |
-base::DictionaryValue* HistoryDataStore::GetEntryDict( |
- const std::string& query) { |
- base::DictionaryValue* assoc_dict = GetAssociationDict(); |
- |
- base::DictionaryValue* entry_dict = NULL; |
- if (!assoc_dict->GetDictionaryWithoutPathExpansion(query, &entry_dict)) { |
- // Creates one if none exists. Ownership is taken in the set call after. |
- entry_dict = new base::DictionaryValue; |
- assoc_dict->SetWithoutPathExpansion(query, entry_dict); |
- } |
- |
- return entry_dict; |
-} |
- |
-void HistoryDataStore::OnDictionaryLoadedCallback( |
- OnLoadedCallback callback, |
- scoped_ptr<base::DictionaryValue> dict) { |
- if (!dict) { |
- callback.Run(scoped_ptr<HistoryData::Associations>()); |
- } else { |
- callback.Run(Parse(dict.Pass()).Pass()); |
- } |
-} |
- |
-} // namespace app_list |