| Index: webkit/blob/deletable_file_reference.cc
|
| diff --git a/webkit/blob/deletable_file_reference.cc b/webkit/blob/deletable_file_reference.cc
|
| index 87ef4cc4565d305498e158a7c5c4e95885e40742..7a5cfacb46155005a7bb76e8b22a05156cf1fd39 100644
|
| --- a/webkit/blob/deletable_file_reference.cc
|
| +++ b/webkit/blob/deletable_file_reference.cc
|
| @@ -7,27 +7,25 @@
|
| #include <map>
|
| #include "base/file_util.h"
|
| #include "base/file_util_proxy.h"
|
| +#include "base/lazy_instance.h"
|
| #include "base/message_loop_proxy.h"
|
| -#include "base/singleton.h"
|
|
|
| namespace webkit_blob {
|
|
|
| namespace {
|
|
|
| typedef std::map<FilePath, DeletableFileReference*> DeleteableFileMap;
|
| -
|
| -DeleteableFileMap* map() {
|
| - return Singleton<DeleteableFileMap>::get();
|
| -}
|
| +static base::LazyInstance<DeleteableFileMap> g_deletable_file_map(
|
| + base::LINKER_INITIALIZED);
|
|
|
| } // namespace
|
|
|
| // static
|
| scoped_refptr<DeletableFileReference> DeletableFileReference::Get(
|
| const FilePath& path) {
|
| - DeleteableFileMap::iterator found = map()->find(path);
|
| + DeleteableFileMap::iterator found = g_deletable_file_map.Get().find(path);
|
| DeletableFileReference* reference =
|
| - (found == map()->end()) ? NULL : found->second;
|
| + (found == g_deletable_file_map.Get().end()) ? NULL : found->second;
|
| return scoped_refptr<DeletableFileReference>(reference);
|
| }
|
|
|
| @@ -36,7 +34,7 @@ scoped_refptr<DeletableFileReference> DeletableFileReference::GetOrCreate(
|
| const FilePath& path, base::MessageLoopProxy* file_thread) {
|
| DCHECK(file_thread);
|
| typedef std::pair<DeleteableFileMap::iterator, bool> InsertResult;
|
| - InsertResult result = map()->insert(
|
| + InsertResult result = g_deletable_file_map.Get().insert(
|
| DeleteableFileMap::value_type(path, NULL));
|
| if (result.second == false)
|
| return scoped_refptr<DeletableFileReference>(result.first->second);
|
| @@ -51,12 +49,12 @@ scoped_refptr<DeletableFileReference> DeletableFileReference::GetOrCreate(
|
| DeletableFileReference::DeletableFileReference(
|
| const FilePath& path, base::MessageLoopProxy* file_thread)
|
| : path_(path), file_thread_(file_thread) {
|
| - DCHECK(map()->find(path_)->second == NULL);
|
| + DCHECK(g_deletable_file_map.Get().find(path_)->second == NULL);
|
| }
|
|
|
| DeletableFileReference::~DeletableFileReference() {
|
| - DCHECK(map()->find(path_)->second == this);
|
| - map()->erase(path_);
|
| + DCHECK(g_deletable_file_map.Get().find(path_)->second == this);
|
| + g_deletable_file_map.Get().erase(path_);
|
| base::FileUtilProxy::Delete(file_thread_, path_, false /* recursive */, NULL);
|
| }
|
|
|
|
|