| // Copyright 2014 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 "chrome/browser/extensions/updater/extension_cache.h" |
| |
| #include "base/memory/singleton.h" |
| |
| #if defined(OS_CHROMEOS) |
| #include "chrome/browser/extensions/updater/extension_cache_impl.h" |
| #endif // OS_CHROMEOS |
| |
| namespace extensions { |
| namespace { |
| |
| #if !defined(OS_CHROMEOS) |
| |
| // Implementation of ExtensionCache that doesn't cache anything. |
| // Real cache is used only on Chrome OS other OSes use this null implementation. |
| class ExtensionCacheNullImpl : public ExtensionCache { |
| public: |
| static ExtensionCacheNullImpl* GetInstance() { |
| return Singleton<ExtensionCacheNullImpl>::get(); |
| } |
| |
| // Implementation of ExtensionCache. |
| virtual void Start(const base::Closure& callback) OVERRIDE { |
| callback.Run(); |
| } |
| |
| virtual void Shutdown(const base::Closure& callback) OVERRIDE { |
| callback.Run(); |
| } |
| |
| virtual void AllowCaching(const std::string& id) OVERRIDE { |
| } |
| |
| virtual bool GetExtension(const std::string& id, |
| base::FilePath* file_path, |
| std::string* version) OVERRIDE { |
| return false; |
| } |
| |
| virtual void PutExtension(const std::string& id, |
| const base::FilePath& file_path, |
| const std::string& version, |
| const PutExtensionCallback& callback) OVERRIDE { |
| callback.Run(file_path, true); |
| } |
| |
| private: |
| friend struct DefaultSingletonTraits<ExtensionCacheNullImpl>; |
| |
| ExtensionCacheNullImpl() {} |
| virtual ~ExtensionCacheNullImpl() {} |
| }; |
| |
| #endif // !OS_CHROMEOS |
| |
| static ExtensionCache* g_extension_cache_override = NULL; |
| |
| } // namespace |
| |
| // static |
| ExtensionCache* ExtensionCache::GetInstance() { |
| if (g_extension_cache_override) { |
| return g_extension_cache_override; |
| } else { |
| #if defined(OS_CHROMEOS) |
| return ExtensionCacheImpl::GetInstance(); |
| #else |
| return ExtensionCacheNullImpl::GetInstance(); |
| #endif |
| } |
| } |
| |
| // static |
| ExtensionCache* ExtensionCache::SetForTesting(ExtensionCache* cache) { |
| ExtensionCache* temp = g_extension_cache_override; |
| g_extension_cache_override = cache; |
| return temp; |
| } |
| |
| } // namespace extensions |