• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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/extensions/updater/extension_cache_fake.h"
6 
7 #include "base/bind.h"
8 #include "base/stl_util.h"
9 #include "content/public/browser/browser_thread.h"
10 
11 namespace extensions {
12 
ExtensionCacheFake()13 ExtensionCacheFake::ExtensionCacheFake() {
14   ExtensionCache::SetForTesting(this);
15 }
16 
~ExtensionCacheFake()17 ExtensionCacheFake::~ExtensionCacheFake() {
18   ExtensionCache::SetForTesting(NULL);
19 }
20 
Start(const base::Closure & callback)21 void ExtensionCacheFake::Start(const base::Closure& callback) {
22   content::BrowserThread::PostTask(
23       content::BrowserThread::UI,
24       FROM_HERE,
25       callback);
26 }
27 
Shutdown(const base::Closure & callback)28 void ExtensionCacheFake::Shutdown(const base::Closure& callback) {
29   content::BrowserThread::PostTask(
30       content::BrowserThread::UI,
31       FROM_HERE,
32       callback);
33 }
34 
AllowCaching(const std::string & id)35 void ExtensionCacheFake::AllowCaching(const std::string& id) {
36   allowed_extensions_.insert(id);
37 }
38 
GetExtension(const std::string & id,base::FilePath * file_path,std::string * version)39 bool ExtensionCacheFake::GetExtension(const std::string& id,
40                                       base::FilePath* file_path,
41                                       std::string* version) {
42   Map::iterator it = cache_.find(id);
43   if (it == cache_.end()) {
44     return false;
45   } else {
46     if (version)
47       *version = it->second.first;
48     if (file_path)
49       *file_path = it->second.second;
50     return true;
51   }
52 }
53 
PutExtension(const std::string & id,const base::FilePath & file_path,const std::string & version,const PutExtensionCallback & callback)54 void ExtensionCacheFake::PutExtension(const std::string& id,
55                                       const base::FilePath& file_path,
56                                       const std::string& version,
57                                       const PutExtensionCallback& callback) {
58   if (ContainsKey(allowed_extensions_, id)) {
59     cache_[id].first = version;
60     cache_[id].second = file_path;
61     content::BrowserThread::PostTask(
62         content::BrowserThread::UI,
63         FROM_HERE,
64         base::Bind(callback, file_path, false));
65   } else {
66     callback.Run(file_path, true);
67   }
68 }
69 
70 }  // namespace extensions
71