| Index: webkit/blob/deletable_file_reference.cc
|
| ===================================================================
|
| --- webkit/blob/deletable_file_reference.cc (revision 60424)
|
| +++ webkit/blob/deletable_file_reference.cc (working copy)
|
| @@ -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
|
|
|