diff options
author | michaeln@chromium.org <michaeln@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-23 23:16:45 +0000 |
---|---|---|
committer | michaeln@chromium.org <michaeln@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-09-23 23:16:45 +0000 |
commit | 145d22229a434580485e7059cf97f2fd5b6f5242 (patch) | |
tree | 5b6bf96cea21ba4e704912077c6de0f4af7b26ed /webkit/blob/deletable_file_reference_unittest.cc | |
parent | 508f9b4095e005aaf949f925042d9283c71020a5 (diff) | |
download | chromium_src-145d22229a434580485e7059cf97f2fd5b6f5242.zip chromium_src-145d22229a434580485e7059cf97f2fd5b6f5242.tar.gz chromium_src-145d22229a434580485e7059cf97f2fd5b6f5242.tar.bz2 |
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
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@60378 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'webkit/blob/deletable_file_reference_unittest.cc')
-rw-r--r-- | webkit/blob/deletable_file_reference_unittest.cc | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/webkit/blob/deletable_file_reference_unittest.cc b/webkit/blob/deletable_file_reference_unittest.cc new file mode 100644 index 0000000..4a92612 --- /dev/null +++ b/webkit/blob/deletable_file_reference_unittest.cc @@ -0,0 +1,51 @@ +// 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 "base/file_util.h" +#include "base/message_loop.h" +#include "base/message_loop_proxy.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace webkit_blob { + +TEST(DeletableFileReferenceTest, TestReferences) { + scoped_refptr<base::MessageLoopProxy> loop_proxy = + base::MessageLoopProxy::CreateForCurrentThread(); + + // Create a file. + FilePath file; + file_util::CreateTemporaryFile(&file); + EXPECT_TRUE(file_util::PathExists(file)); + + // Create a first reference to that file. + scoped_refptr<DeletableFileReference> reference1; + reference1 = DeletableFileReference::Get(file); + EXPECT_FALSE(reference1.get()); + reference1 = DeletableFileReference::GetOrCreate(file, loop_proxy); + EXPECT_TRUE(reference1.get()); + EXPECT_TRUE(file == reference1->path()); + + // Get a second reference to that file. + scoped_refptr<DeletableFileReference> reference2; + reference2 = DeletableFileReference::Get(file); + EXPECT_EQ(reference1.get(), reference2.get()); + reference2 = DeletableFileReference::GetOrCreate(file, loop_proxy); + EXPECT_EQ(reference1.get(), reference2.get()); + + // Drop the first reference, the file and reference should still be there. + reference1 = NULL; + EXPECT_TRUE(DeletableFileReference::Get(file).get()); + MessageLoop::current()->RunAllPending(); + EXPECT_TRUE(file_util::PathExists(file)); + + // Drop the second reference, the file and reference should get deleted. + reference2 = NULL; + EXPECT_FALSE(DeletableFileReference::Get(file).get()); + MessageLoop::current()->RunAllPending(); + EXPECT_FALSE(file_util::PathExists(file)); +} + +} // namespace webkit_blob |