diff options
author | skerner@chromium.org <skerner@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-30 17:00:09 +0000 |
---|---|---|
committer | skerner@chromium.org <skerner@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-04-30 17:00:09 +0000 |
commit | b0b3abd98a59384a83349c83a5ef9b14851816da (patch) | |
tree | 790628087c773280456dffae7cfb0ea8f744649f /chrome/browser/extensions/sandboxed_extension_unpacker_unittest.cc | |
parent | ec2717e405abc8f618133fe3c9f5051fff224e71 (diff) | |
download | chromium_src-b0b3abd98a59384a83349c83a5ef9b14851816da.zip chromium_src-b0b3abd98a59384a83349c83a5ef9b14851816da.tar.gz chromium_src-b0b3abd98a59384a83349c83a5ef9b14851816da.tar.bz2 |
Unpack extensions inside chrome's profile directory.
Other users of the temp directory will be altered in a subsequent CL.
BUG=13044
TEST=SandboxedExtensionUnpackerTest.*, ScopedTempDir.UniqueTempDirUnderPath, FileUtilTest.CreateNewTempDirInDirTest, manual testing on win, linux, mac.
Review URL: http://codereview.chromium.org/1582022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46078 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/sandboxed_extension_unpacker_unittest.cc')
-rw-r--r-- | chrome/browser/extensions/sandboxed_extension_unpacker_unittest.cc | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/chrome/browser/extensions/sandboxed_extension_unpacker_unittest.cc b/chrome/browser/extensions/sandboxed_extension_unpacker_unittest.cc index f320cc0..748cd46 100644 --- a/chrome/browser/extensions/sandboxed_extension_unpacker_unittest.cc +++ b/chrome/browser/extensions/sandboxed_extension_unpacker_unittest.cc @@ -87,15 +87,20 @@ class SandboxedExtensionUnpackerTest : public testing::Test { unpacker_.reset(new ExtensionUnpacker(crx_path)); - // It will delete itself. + + // Build a temp area where the extension will be unpacked. + ASSERT_TRUE(PathService::Get(base::DIR_TEMP, &temp_dir_)); + temp_dir_ = temp_dir_.AppendASCII("sandboxed_extension_unpacker_test_Temp"); + file_util::CreateDirectory(temp_dir_); + sandboxed_unpacker_ = - new SandboxedExtensionUnpacker(crx_path, NULL, client_); + new SandboxedExtensionUnpacker(crx_path, temp_dir_, NULL, client_); PrepareUnpackerEnv(); } void PrepareUnpackerEnv() { sandboxed_unpacker_->extension_root_ = - install_dir_.AppendASCII("TEMP_INSTALL"); + install_dir_.AppendASCII(extension_filenames::kTempExtensionName); sandboxed_unpacker_->temp_dir_.Set(install_dir_); sandboxed_unpacker_->public_key_ = @@ -108,11 +113,36 @@ class SandboxedExtensionUnpackerTest : public testing::Test { } FilePath GetInstallPath() { - return install_dir_.AppendASCII("TEMP_INSTALL"); + return install_dir_.AppendASCII(extension_filenames::kTempExtensionName); + } + + bool TempFilesRemoved() { + // Check that temporary files were cleaned up. + file_util::FileEnumerator::FILE_TYPE files_and_dirs = + static_cast<file_util::FileEnumerator::FILE_TYPE>( + file_util::FileEnumerator::DIRECTORIES | + file_util::FileEnumerator::FILES); + + file_util::FileEnumerator temp_iterator( + temp_dir_, + true, // recursive + files_and_dirs + ); + int items_not_removed = 0; + FilePath item_in_temp; + item_in_temp = temp_iterator.Next(); + while (!item_in_temp.value().empty()) { + items_not_removed++; + EXPECT_STREQ(FILE_PATH_LITERAL(""), item_in_temp.value().c_str()) + << "File was not removed on success."; + item_in_temp = temp_iterator.Next(); + } + return (items_not_removed == 0); } protected: FilePath install_dir_; + FilePath temp_dir_; MockSandboxedExtensionUnpackerClient* client_; scoped_ptr<ExtensionUnpacker> unpacker_; scoped_refptr<SandboxedExtensionUnpacker> sandboxed_unpacker_; @@ -135,6 +165,8 @@ TEST_F(SandboxedExtensionUnpackerTest, NoCatalogsSuccess) { // Check that there still is no _locales folder. EXPECT_FALSE(file_util::PathExists(install_path)); + + ASSERT_TRUE(TempFilesRemoved()); } TEST_F(SandboxedExtensionUnpackerTest, WithCatalogsSuccess) { @@ -164,4 +196,6 @@ TEST_F(SandboxedExtensionUnpackerTest, WithCatalogsSuccess) { EXPECT_TRUE(file_util::GetFileInfo(messages_file, &new_info)); EXPECT_TRUE(new_info.last_modified > old_info.last_modified); + + ASSERT_TRUE(TempFilesRemoved()); } |