summaryrefslogtreecommitdiffstats
path: root/chrome/browser/extensions/sandboxed_extension_unpacker_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/extensions/sandboxed_extension_unpacker_unittest.cc')
-rw-r--r--chrome/browser/extensions/sandboxed_extension_unpacker_unittest.cc42
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());
}