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.
5 #include "chrome/browser/extensions/updater/extension_cache.h"
7 #include "base/memory/singleton.h"
9 #if defined(OS_CHROMEOS)
10 #include "chrome/browser/extensions/updater/extension_cache_impl.h"
13 namespace extensions {
16 #if !defined(OS_CHROMEOS)
18 // Implementation of ExtensionCache that doesn't cache anything.
19 // Real cache is used only on Chrome OS other OSes use this null implementation.
20 class ExtensionCacheNullImpl : public ExtensionCache {
22 static ExtensionCacheNullImpl* GetInstance() {
23 return Singleton<ExtensionCacheNullImpl>::get();
26 // Implementation of ExtensionCache.
27 virtual void Start(const base::Closure& callback) OVERRIDE {
31 virtual void Shutdown(const base::Closure& callback) OVERRIDE {
35 virtual void AllowCaching(const std::string& id) OVERRIDE {
38 virtual bool GetExtension(const std::string& id,
39 base::FilePath* file_path,
40 std::string* version) OVERRIDE {
44 virtual void PutExtension(const std::string& id,
45 const base::FilePath& file_path,
46 const std::string& version,
47 const PutExtensionCallback& callback) OVERRIDE {
48 callback.Run(file_path, true);
52 friend struct DefaultSingletonTraits<ExtensionCacheNullImpl>;
54 ExtensionCacheNullImpl() {}
55 virtual ~ExtensionCacheNullImpl() {}
58 #endif // !OS_CHROMEOS
60 static ExtensionCache* g_extension_cache_override = NULL;
65 ExtensionCache* ExtensionCache::GetInstance() {
66 if (g_extension_cache_override) {
67 return g_extension_cache_override;
69 #if defined(OS_CHROMEOS)
70 return ExtensionCacheImpl::GetInstance();
72 return ExtensionCacheNullImpl::GetInstance();
78 ExtensionCache* ExtensionCache::SetForTesting(ExtensionCache* cache) {
79 ExtensionCache* temp = g_extension_cache_override;
80 g_extension_cache_override = cache;
84 } // namespace extensions