Index: content/browser/gpu/shader_disk_cache.cc |
diff --git a/content/browser/gpu/shader_disk_cache.cc b/content/browser/gpu/shader_disk_cache.cc |
index a609b85a2376980dd82f9bbcc62db663bd0ee4ec..601edec0c1d04b428fd9a841a7b8a3ece0357c13 100644 |
--- a/content/browser/gpu/shader_disk_cache.cc |
+++ b/content/browser/gpu/shader_disk_cache.cc |
@@ -20,8 +20,6 @@ namespace { |
static const base::FilePath::CharType kGpuCachePath[] = |
FILE_PATH_LITERAL("GPUCache"); |
-static ShaderCacheFactory* factory_instance = nullptr; |
- |
} // namespace |
// ShaderDiskCacheEntry handles the work of caching/updating the cached |
@@ -100,7 +98,8 @@ class ShaderDiskReadHelper : public base::ThreadChecker { |
class ShaderClearHelper : public base::ThreadChecker { |
public: |
- ShaderClearHelper(scoped_refptr<ShaderDiskCache> cache, |
+ ShaderClearHelper(ShaderCacheFactory* factory, |
+ scoped_refptr<ShaderDiskCache> cache, |
const base::FilePath& path, |
const base::Time& delete_begin, |
const base::Time& delete_end, |
@@ -118,6 +117,7 @@ class ShaderClearHelper : public base::ThreadChecker { |
void DoClearShaderCache(int rv); |
+ ShaderCacheFactory* factory_; |
scoped_refptr<ShaderDiskCache> cache_; |
OpType op_type_; |
base::FilePath path_; |
@@ -319,12 +319,14 @@ int ShaderDiskReadHelper::IterationComplete(int rv) { |
//////////////////////////////////////////////////////////////////////////////// |
// ShaderClearHelper |
-ShaderClearHelper::ShaderClearHelper(scoped_refptr<ShaderDiskCache> cache, |
+ShaderClearHelper::ShaderClearHelper(ShaderCacheFactory* factory, |
+ scoped_refptr<ShaderDiskCache> cache, |
const base::FilePath& path, |
const base::Time& delete_begin, |
const base::Time& delete_end, |
const base::Closure& callback) |
- : cache_(std::move(cache)), |
+ : factory_(factory), |
+ cache_(std::move(cache)), |
op_type_(VERIFY_CACHE_SETUP), |
path_(path), |
delete_begin_(delete_begin), |
@@ -360,7 +362,7 @@ void ShaderClearHelper::DoClearShaderCache(int rv) { |
case TERMINATE: |
callback_.Run(); |
// Calling CacheCleared() destroys |this|. |
- ShaderCacheFactory::GetInstance()->CacheCleared(path_); |
+ factory_->CacheCleared(path_); |
rv = net::ERR_IO_PENDING; // Break the loop. |
break; |
} |
@@ -370,25 +372,6 @@ void ShaderClearHelper::DoClearShaderCache(int rv) { |
//////////////////////////////////////////////////////////////////////////////// |
// ShaderCacheFactory |
-// static |
-void ShaderCacheFactory::InitInstance( |
- scoped_refptr<base::SingleThreadTaskRunner> task_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> cache_task_runner) { |
- if (task_runner->BelongsToCurrentThread()) { |
- CreateFactoryInstance(std::move(cache_task_runner)); |
- } else { |
- task_runner->PostTask(FROM_HERE, |
- base::Bind(&ShaderCacheFactory::CreateFactoryInstance, |
- std::move(cache_task_runner))); |
- } |
-} |
- |
-// static |
-ShaderCacheFactory* ShaderCacheFactory::GetInstance() { |
- DCHECK(!factory_instance || factory_instance->CalledOnValidThread()); |
- return factory_instance; |
-} |
- |
ShaderCacheFactory::ShaderCacheFactory( |
scoped_refptr<base::SingleThreadTaskRunner> cache_task_runner) |
: cache_task_runner_(std::move(cache_task_runner)) {} |
@@ -396,13 +379,6 @@ ShaderCacheFactory::ShaderCacheFactory( |
ShaderCacheFactory::~ShaderCacheFactory() { |
} |
-// static |
-void ShaderCacheFactory::CreateFactoryInstance( |
- scoped_refptr<base::SingleThreadTaskRunner> cache_task_runner) { |
- DCHECK(!factory_instance); |
- factory_instance = new ShaderCacheFactory(std::move(cache_task_runner)); |
-} |
- |
void ShaderCacheFactory::SetCacheInfo(int32_t client_id, |
const base::FilePath& path) { |
DCHECK(CalledOnValidThread()); |
@@ -429,7 +405,7 @@ scoped_refptr<ShaderDiskCache> ShaderCacheFactory::GetByPath( |
if (iter != shader_cache_map_.end()) |
return iter->second; |
- ShaderDiskCache* cache = new ShaderDiskCache(path); |
+ ShaderDiskCache* cache = new ShaderDiskCache(this, path); |
cache->Init(cache_task_runner_); |
return cache; |
} |
@@ -453,7 +429,7 @@ void ShaderCacheFactory::ClearByPath(const base::FilePath& path, |
DCHECK(!callback.is_null()); |
auto helper = base::MakeUnique<ShaderClearHelper>( |
- GetByPath(path), path, delete_begin, delete_end, callback); |
+ this, GetByPath(path), path, delete_begin, delete_end, callback); |
// We could receive requests to clear the same path with different |
// begin/end times. So, we keep a list of requests. If we haven't seen this |
@@ -499,15 +475,17 @@ void ShaderCacheFactory::CacheCleared(const base::FilePath& path) { |
//////////////////////////////////////////////////////////////////////////////// |
// ShaderDiskCache |
-ShaderDiskCache::ShaderDiskCache(const base::FilePath& cache_path) |
- : cache_available_(false), |
+ShaderDiskCache::ShaderDiskCache(ShaderCacheFactory* factory, |
+ const base::FilePath& cache_path) |
+ : factory_(factory), |
+ cache_available_(false), |
cache_path_(cache_path), |
is_initialized_(false) { |
- ShaderCacheFactory::GetInstance()->AddToCache(cache_path_, this); |
+ factory_->AddToCache(cache_path_, this); |
} |
ShaderDiskCache::~ShaderDiskCache() { |
- ShaderCacheFactory::GetInstance()->RemoveFromCache(cache_path_); |
+ factory_->RemoveFromCache(cache_path_); |
} |
void ShaderDiskCache::Init( |
@@ -604,4 +582,3 @@ int ShaderDiskCache::SetCacheCompleteCallback( |
} |
} // namespace content |
- |