webservice_cache.cc revision 4e180b6a0b4720a9b8e9e959a882386f690f08ff
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/common/webservice_cache.h" 6 7#include "base/values.h" 8 9namespace app_list { 10namespace { 11 12const int kWebserviceCacheMaxSize = 100; 13const int kWebserviceCacheTimeLimitInMinutes = 1; 14 15} // namespace 16 17void WebserviceCache::CacheDeletor::operator()( 18 WebserviceCache::Payload& payload) { 19 delete payload.second; 20} 21 22WebserviceCache::WebserviceCache() 23 : cache_(kWebserviceCacheMaxSize) { 24} 25 26WebserviceCache::~WebserviceCache() { 27} 28 29const base::DictionaryValue* WebserviceCache::Get(const std::string& query) { 30 Cache::iterator iter = cache_.Get(query); 31 if (iter != cache_.end()) { 32 if (base::Time::Now() - iter->second.first <= 33 base::TimeDelta::FromMinutes(kWebserviceCacheTimeLimitInMinutes)) { 34 return iter->second.second; 35 } else { 36 cache_.Erase(iter); 37 } 38 } 39 return NULL; 40} 41 42void WebserviceCache::Put(const std::string& query, 43 scoped_ptr<base::DictionaryValue> result) { 44 if (result) 45 cache_.Put(query, std::make_pair(base::Time::Now(), result.release())); 46} 47 48} // namespace app_list 49