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); |
} |