OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <windows.h> | 5 #include <windows.h> |
6 | 6 |
7 #include <fstream> | 7 #include <fstream> |
8 | 8 |
9 #include "base/base_paths.h" | 9 #include "base/base_paths.h" |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 file_name_delete_1 = file_name_delete_1.AppendASCII("File_1.txt"); | 78 file_name_delete_1 = file_name_delete_1.AppendASCII("File_1.txt"); |
79 CreateTextFile(file_name_delete_1.value(), text_content_1); | 79 CreateTextFile(file_name_delete_1.value(), text_content_1); |
80 ASSERT_TRUE(file_util::PathExists(file_name_delete_1)); | 80 ASSERT_TRUE(file_util::PathExists(file_name_delete_1)); |
81 | 81 |
82 FilePath file_name_delete_2(dir_name_delete_2); | 82 FilePath file_name_delete_2(dir_name_delete_2); |
83 file_name_delete_2 = file_name_delete_2.AppendASCII("File_2.txt"); | 83 file_name_delete_2 = file_name_delete_2.AppendASCII("File_2.txt"); |
84 CreateTextFile(file_name_delete_2.value(), text_content_1); | 84 CreateTextFile(file_name_delete_2.value(), text_content_1); |
85 ASSERT_TRUE(file_util::PathExists(file_name_delete_2)); | 85 ASSERT_TRUE(file_util::PathExists(file_name_delete_2)); |
86 | 86 |
87 // test Do() | 87 // test Do() |
| 88 std::vector<FilePath> key_files; |
88 scoped_ptr<DeleteTreeWorkItem> work_item( | 89 scoped_ptr<DeleteTreeWorkItem> work_item( |
89 WorkItem::CreateDeleteTreeWorkItem(dir_name_delete.ToWStringHack(), | 90 WorkItem::CreateDeleteTreeWorkItem(dir_name_delete, key_files)); |
90 std::wstring())); | |
91 EXPECT_TRUE(work_item->Do()); | 91 EXPECT_TRUE(work_item->Do()); |
92 | 92 |
93 // everything should be gone | 93 // everything should be gone |
94 EXPECT_FALSE(file_util::PathExists(file_name_delete_1)); | 94 EXPECT_FALSE(file_util::PathExists(file_name_delete_1)); |
95 EXPECT_FALSE(file_util::PathExists(file_name_delete_2)); | 95 EXPECT_FALSE(file_util::PathExists(file_name_delete_2)); |
96 EXPECT_FALSE(file_util::PathExists(dir_name_delete)); | 96 EXPECT_FALSE(file_util::PathExists(dir_name_delete)); |
97 | 97 |
98 work_item->Rollback(); | 98 work_item->Rollback(); |
99 // everything should come back | 99 // everything should come back |
100 EXPECT_TRUE(file_util::PathExists(file_name_delete_1)); | 100 EXPECT_TRUE(file_util::PathExists(file_name_delete_1)); |
(...skipping 25 matching lines...) Expand all Loading... |
126 file_name_delete_1 = file_name_delete_1.AppendASCII("File_1.txt"); | 126 file_name_delete_1 = file_name_delete_1.AppendASCII("File_1.txt"); |
127 CreateTextFile(file_name_delete_1.value(), text_content_1); | 127 CreateTextFile(file_name_delete_1.value(), text_content_1); |
128 ASSERT_TRUE(file_util::PathExists(file_name_delete_1)); | 128 ASSERT_TRUE(file_util::PathExists(file_name_delete_1)); |
129 | 129 |
130 FilePath file_name_delete_2(dir_name_delete_2); | 130 FilePath file_name_delete_2(dir_name_delete_2); |
131 file_name_delete_2 = file_name_delete_2.AppendASCII("File_2.txt"); | 131 file_name_delete_2 = file_name_delete_2.AppendASCII("File_2.txt"); |
132 CreateTextFile(file_name_delete_2.value(), text_content_1); | 132 CreateTextFile(file_name_delete_2.value(), text_content_1); |
133 ASSERT_TRUE(file_util::PathExists(file_name_delete_2)); | 133 ASSERT_TRUE(file_util::PathExists(file_name_delete_2)); |
134 | 134 |
135 // test Do() | 135 // test Do() |
| 136 std::vector<FilePath> key_files(1, file_name_delete_1); |
136 scoped_ptr<DeleteTreeWorkItem> work_item( | 137 scoped_ptr<DeleteTreeWorkItem> work_item( |
137 WorkItem::CreateDeleteTreeWorkItem(dir_name_delete.ToWStringHack(), | 138 WorkItem::CreateDeleteTreeWorkItem(dir_name_delete, key_files)); |
138 file_name_delete_1.ToWStringHack())); | |
139 EXPECT_TRUE(work_item->Do()); | 139 EXPECT_TRUE(work_item->Do()); |
140 | 140 |
141 // everything should be gone | 141 // everything should be gone |
142 EXPECT_FALSE(file_util::PathExists(file_name_delete_1)); | 142 EXPECT_FALSE(file_util::PathExists(file_name_delete_1)); |
143 EXPECT_FALSE(file_util::PathExists(file_name_delete_2)); | 143 EXPECT_FALSE(file_util::PathExists(file_name_delete_2)); |
144 EXPECT_FALSE(file_util::PathExists(dir_name_delete)); | 144 EXPECT_FALSE(file_util::PathExists(dir_name_delete)); |
145 | 145 |
146 work_item->Rollback(); | 146 work_item->Rollback(); |
147 // everything should come back | 147 // everything should come back |
148 EXPECT_TRUE(file_util::PathExists(file_name_delete_1)); | 148 EXPECT_TRUE(file_util::PathExists(file_name_delete_1)); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
195 // Run the key path file to keep it in use. | 195 // Run the key path file to keep it in use. |
196 STARTUPINFOW si = {sizeof(si)}; | 196 STARTUPINFOW si = {sizeof(si)}; |
197 PROCESS_INFORMATION pi = {0}; | 197 PROCESS_INFORMATION pi = {0}; |
198 ASSERT_TRUE( | 198 ASSERT_TRUE( |
199 ::CreateProcessW(NULL, const_cast<wchar_t*>(key_path.value().c_str()), | 199 ::CreateProcessW(NULL, const_cast<wchar_t*>(key_path.value().c_str()), |
200 NULL, NULL, FALSE, CREATE_NO_WINDOW | CREATE_SUSPENDED, | 200 NULL, NULL, FALSE, CREATE_NO_WINDOW | CREATE_SUSPENDED, |
201 NULL, NULL, &si, &pi)); | 201 NULL, NULL, &si, &pi)); |
202 | 202 |
203 // test Do(). | 203 // test Do(). |
204 { | 204 { |
| 205 std::vector<FilePath> key_paths(1, key_path); |
205 scoped_ptr<DeleteTreeWorkItem> work_item( | 206 scoped_ptr<DeleteTreeWorkItem> work_item( |
206 WorkItem::CreateDeleteTreeWorkItem(dir_name_delete.ToWStringHack(), | 207 WorkItem::CreateDeleteTreeWorkItem(dir_name_delete, key_paths)); |
207 key_path.ToWStringHack())); | |
208 | 208 |
209 // delete should fail as file in use. | 209 // delete should fail as file in use. |
210 EXPECT_FALSE(work_item->Do()); | 210 EXPECT_FALSE(work_item->Do()); |
211 } | 211 } |
212 | 212 |
213 // verify everything is still there. | 213 // verify everything is still there. |
214 EXPECT_TRUE(file_util::PathExists(key_path)); | 214 EXPECT_TRUE(file_util::PathExists(key_path)); |
215 EXPECT_TRUE(file_util::PathExists(file_name_delete_1)); | 215 EXPECT_TRUE(file_util::PathExists(file_name_delete_1)); |
216 EXPECT_TRUE(file_util::PathExists(file_name_delete_2)); | 216 EXPECT_TRUE(file_util::PathExists(file_name_delete_2)); |
217 | 217 |
218 TerminateProcess(pi.hProcess, 0); | 218 TerminateProcess(pi.hProcess, 0); |
219 // make sure the handle is closed. | 219 // make sure the handle is closed. |
220 WaitForSingleObject(pi.hProcess, INFINITE); | 220 WaitForSingleObject(pi.hProcess, INFINITE); |
221 } | 221 } |
OLD | NEW |