This source file includes following definitions.
- TEST
#include "webkit/common/blob/shareable_file_reference.h"
#include "base/file_util.h"
#include "base/files/scoped_temp_dir.h"
#include "base/message_loop/message_loop_proxy.h"
#include "base/run_loop.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace webkit_blob {
TEST(ShareableFileReferenceTest, TestReferences) {
base::MessageLoop message_loop;
scoped_refptr<base::MessageLoopProxy> loop_proxy =
base::MessageLoopProxy::current();
base::ScopedTempDir temp_dir;
ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
base::FilePath file;
base::CreateTemporaryFileInDir(temp_dir.path(), &file);
EXPECT_TRUE(base::PathExists(file));
scoped_refptr<ShareableFileReference> reference1;
reference1 = ShareableFileReference::Get(file);
EXPECT_FALSE(reference1.get());
reference1 = ShareableFileReference::GetOrCreate(
file, ShareableFileReference::DELETE_ON_FINAL_RELEASE, loop_proxy.get());
EXPECT_TRUE(reference1.get());
EXPECT_TRUE(file == reference1->path());
scoped_refptr<ShareableFileReference> reference2;
reference2 = ShareableFileReference::Get(file);
EXPECT_EQ(reference1.get(), reference2.get());
reference2 = ShareableFileReference::GetOrCreate(
file, ShareableFileReference::DELETE_ON_FINAL_RELEASE, loop_proxy.get());
EXPECT_EQ(reference1.get(), reference2.get());
reference1 = NULL;
EXPECT_TRUE(ShareableFileReference::Get(file).get());
base::RunLoop().RunUntilIdle();
EXPECT_TRUE(base::PathExists(file));
reference2 = NULL;
EXPECT_FALSE(ShareableFileReference::Get(file).get());
base::RunLoop().RunUntilIdle();
EXPECT_FALSE(base::PathExists(file));
}
}