diff options
author | thakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-24 05:19:13 +0000 |
---|---|---|
committer | thakis@chromium.org <thakis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-24 05:19:13 +0000 |
commit | 61b4a61bf1ea2a610c076cb28de59aa1137b3c4f (patch) | |
tree | 4a2b6465bcea096b8410c1e0a5dbb279fa34c1ba /webkit/blob/deletable_file_reference.cc | |
parent | 4e5ae20ff403cdcd14d3b86b18a0d0bcec2f47cc (diff) | |
download | chromium_src-61b4a61bf1ea2a610c076cb28de59aa1137b3c4f.zip chromium_src-61b4a61bf1ea2a610c076cb28de59aa1137b3c4f.tar.gz chromium_src-61b4a61bf1ea2a610c076cb28de59aa1137b3c4f.tar.bz2 |
Revert 60378 (trying to track down http://crbug.com/56752 )- Flesh out URLLoader's download_to_file function.
* tie the lifetime of the resulting temp file to the lifetime of the URLLoader
(the plan is to later extend the lifetime of the temp file to support xhr.responseBlob)
* make it work in test_shell
* make it work for sync requests
* added OnDataDownloaded messages to report progress
A related BlobURL loading change.
* grab a reference to the blob early on to ensure it's still there when the 'job' is finally started.
TEST=manual and deletable_file_reference_unittest.cc
BUG=52486
Review URL: http://codereview.chromium.org/3165062
TBR=michaeln@chromium.org
Review URL: http://codereview.chromium.org/3455022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60425 0039d316-1c4b-4281-b951-d872f2087c98
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 |