Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1748)

Unified Diff: chrome/browser/ui/app_list/search/common/webservice_cache.cc

Issue 1763273002: base: Remove OwningMRUCache in favor of scoped_ptrs in MRUCache (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase + fix Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/app_list/search/common/webservice_cache.cc
diff --git a/chrome/browser/ui/app_list/search/common/webservice_cache.cc b/chrome/browser/ui/app_list/search/common/webservice_cache.cc
index 8fa41cad55ff6c3623698ad76363bbc1453b0f2f..d1c745a420178d693c26a7fda7ffd8d5cb16c167 100644
--- a/chrome/browser/ui/app_list/search/common/webservice_cache.cc
+++ b/chrome/browser/ui/app_list/search/common/webservice_cache.cc
@@ -26,10 +26,6 @@ const char kPeopleQueryPrefix[] = "people:";
} // namespace
-void WebserviceCache::CacheDeletor::operator()(const Payload& payload) {
- delete payload.result;
-}
-
WebserviceCache::WebserviceCache(content::BrowserContext* context)
: cache_(Cache::NO_AUTO_EVICT),
cache_loaded_(false) {
@@ -49,11 +45,11 @@ const CacheResult WebserviceCache::Get(QueryType type,
std::string typed_query = PrependType(type, query);
Cache::iterator iter = cache_.Get(typed_query);
if (iter != cache_.end()) {
- if (base::Time::Now() - iter->second.time <=
+ if (base::Time::Now() - iter->second->time <=
base::TimeDelta::FromMinutes(kWebserviceCacheTimeLimitInMinutes)) {
- return std::make_pair(FRESH, iter->second.result);
+ return std::make_pair(FRESH, iter->second->result.get());
} else {
- return std::make_pair(STALE, iter->second.result);
+ return std::make_pair(STALE, iter->second->result.get());
}
}
return std::make_pair(STALE, static_cast<base::DictionaryValue*>(NULL));
@@ -64,15 +60,17 @@ void WebserviceCache::Put(QueryType type,
scoped_ptr<base::DictionaryValue> result) {
if (result) {
std::string typed_query = PrependType(type, query);
- Payload payload(base::Time::Now(), result.release());
+ scoped_ptr<Payload> scoped_payload(
+ new Payload(base::Time::Now(), std::move(result)));
+ Payload* payload = scoped_payload.get();
- cache_.Put(typed_query, payload);
+ cache_.Put(typed_query, std::move(scoped_payload));
// If the cache isn't loaded yet, we're fine with losing queries since
// a 1000 entry cache should load really quickly so the chance of a user
// already having typed a 3 character search before the cache has loaded is
// very unlikely.
if (cache_loaded_) {
- data_store_->cached_dict()->Set(typed_query, DictFromPayload(payload));
+ data_store_->cached_dict()->Set(typed_query, DictFromPayload(*payload));
data_store_->ScheduleWrite();
if (cache_.size() > kWebserviceCacheMaxSize)
TrimCache();
@@ -89,16 +87,16 @@ void WebserviceCache::OnCacheLoaded(scoped_ptr<base::DictionaryValue>) {
!it.IsAtEnd();
it.Advance()) {
const base::DictionaryValue* payload_dict;
- Payload payload;
+ scoped_ptr<Payload> payload(new Payload);
if (!it.value().GetAsDictionary(&payload_dict) ||
!payload_dict ||
- !PayloadFromDict(payload_dict, &payload)) {
+ !PayloadFromDict(payload_dict, payload.get())) {
// In case we don't have a valid payload associated with a given query,
// clean up that query from our data store.
cleanup_keys.push_back(it.key());
continue;
}
- cache_.Put(it.key(), payload);
+ cache_.Put(it.key(), std::move(payload));
}
if (!cleanup_keys.empty()) {
@@ -125,7 +123,7 @@ bool WebserviceCache::PayloadFromDict(const base::DictionaryValue* dict,
// instead of returning the original reference. The new dictionary will be
// owned by our MRU cache.
*payload = Payload(base::Time::FromInternalValue(time_val),
- result->DeepCopy());
+ make_scoped_ptr(result->DeepCopy()));
return true;
}
@@ -163,4 +161,18 @@ std::string WebserviceCache::PrependType(
}
}
+WebserviceCache::Payload::Payload(const base::Time& time,
+ scoped_ptr<base::DictionaryValue> result)
+ : time(time), result(std::move(result)) {}
+
+WebserviceCache::Payload::Payload() = default;
+
+WebserviceCache::Payload::~Payload() = default;
+
+WebserviceCache::Payload& WebserviceCache::Payload::operator=(Payload&& other) {
+ time = std::move(other.time);
+ result = std::move(other.result);
+ return *this;
+}
+
} // namespace app_list

Powered by Google App Engine
This is Rietveld 408576698