diff options
Diffstat (limited to 'webkit/blob/deletable_file_reference.cc')
-rw-r--r-- | webkit/blob/deletable_file_reference.cc | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/webkit/blob/deletable_file_reference.cc b/webkit/blob/deletable_file_reference.cc deleted file mode 100644 index b005eeb..0000000 --- a/webkit/blob/deletable_file_reference.cc +++ /dev/null @@ -1,63 +0,0 @@ -// Copyright (c) 2010 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 "webkit/blob/deletable_file_reference.h" - -#include <map> -#include "base/file_util.h" -#include "base/file_util_proxy.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(); -} - -} // namespace - -// static -scoped_refptr<DeletableFileReference> DeletableFileReference::Get( - const FilePath& path) { - DeleteableFileMap::iterator found = map()->find(path); - DeletableFileReference* reference = - (found == map()->end()) ? NULL : found->second; - return scoped_refptr<DeletableFileReference>(reference); -} - -// static -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( - DeleteableFileMap::value_type(path, NULL)); - if (result.second == false) - return scoped_refptr<DeletableFileReference>(result.first->second); - - // Wasn't in the map, create a new reference and store the pointer. - scoped_refptr<DeletableFileReference> reference = - new DeletableFileReference(path, file_thread); - result.first->second = reference.get(); - return reference; -} - -DeletableFileReference::DeletableFileReference( - const FilePath& path, base::MessageLoopProxy* file_thread) - : path_(path), file_thread_(file_thread) { - DCHECK(map()->find(path_)->second == NULL); -} - -DeletableFileReference::~DeletableFileReference() { - DCHECK(map()->find(path_)->second == this); - map()->erase(path_); - base::FileUtilProxy::Delete(file_thread_, path_, NULL); -} - -} // namespace webkit_blob |