Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1214)

Side by Side Diff: components/filesystem/directory_impl_unittest.cc

Issue 2096293002: Eliminate usage of InterfacePtr::WaitForIncomingResponse. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix trybots failure Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | components/filesystem/file_impl_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <map> 8 #include <map>
9 #include <string> 9 #include <string>
10 10
(...skipping 14 matching lines...) Expand all
25 // Make some files. 25 // Make some files.
26 const struct { 26 const struct {
27 const char* name; 27 const char* name;
28 uint32_t open_flags; 28 uint32_t open_flags;
29 } files_to_create[] = { 29 } files_to_create[] = {
30 {"my_file1", mojom::kFlagRead | mojom::kFlagWrite | mojom::kFlagCreate}, 30 {"my_file1", mojom::kFlagRead | mojom::kFlagWrite | mojom::kFlagCreate},
31 {"my_file2", mojom::kFlagWrite | mojom::kFlagCreate}, 31 {"my_file2", mojom::kFlagWrite | mojom::kFlagCreate},
32 {"my_file3", mojom::kFlagAppend | mojom::kFlagCreate}}; 32 {"my_file3", mojom::kFlagAppend | mojom::kFlagCreate}};
33 for (size_t i = 0; i < arraysize(files_to_create); i++) { 33 for (size_t i = 0; i < arraysize(files_to_create); i++) {
34 error = mojom::FileError::FAILED; 34 error = mojom::FileError::FAILED;
35 directory->OpenFile(files_to_create[i].name, nullptr, 35 bool handled = directory->OpenFile(files_to_create[i].name, nullptr,
36 files_to_create[i].open_flags, Capture(&error)); 36 files_to_create[i].open_flags, &error);
37 ASSERT_TRUE(directory.WaitForIncomingResponse()); 37 ASSERT_TRUE(handled);
38 EXPECT_EQ(mojom::FileError::OK, error); 38 EXPECT_EQ(mojom::FileError::OK, error);
39 } 39 }
40 // Make a directory. 40 // Make a directory.
41 error = mojom::FileError::FAILED; 41 error = mojom::FileError::FAILED;
42 directory->OpenDirectory( 42 bool handled = directory->OpenDirectory(
43 "my_dir", nullptr, 43 "my_dir", nullptr,
44 mojom::kFlagRead | mojom::kFlagWrite | mojom::kFlagCreate, 44 mojom::kFlagRead | mojom::kFlagWrite | mojom::kFlagCreate, &error);
45 Capture(&error)); 45 ASSERT_TRUE(handled);
46 ASSERT_TRUE(directory.WaitForIncomingResponse());
47 EXPECT_EQ(mojom::FileError::OK, error); 46 EXPECT_EQ(mojom::FileError::OK, error);
48 47
49 error = mojom::FileError::FAILED; 48 error = mojom::FileError::FAILED;
50 mojo::Array<mojom::DirectoryEntryPtr> directory_contents; 49 mojo::Array<mojom::DirectoryEntryPtr> directory_contents;
51 directory->Read(Capture(&error, &directory_contents)); 50 handled = directory->Read(&error, &directory_contents);
52 ASSERT_TRUE(directory.WaitForIncomingResponse()); 51 ASSERT_TRUE(handled);
53 EXPECT_EQ(mojom::FileError::OK, error); 52 EXPECT_EQ(mojom::FileError::OK, error);
54 53
55 // Expected contents of the directory. 54 // Expected contents of the directory.
56 std::map<std::string, mojom::FsFileType> expected_contents; 55 std::map<std::string, mojom::FsFileType> expected_contents;
57 expected_contents["my_file1"] = mojom::FsFileType::REGULAR_FILE; 56 expected_contents["my_file1"] = mojom::FsFileType::REGULAR_FILE;
58 expected_contents["my_file2"] = mojom::FsFileType::REGULAR_FILE; 57 expected_contents["my_file2"] = mojom::FsFileType::REGULAR_FILE;
59 expected_contents["my_file3"] = mojom::FsFileType::REGULAR_FILE; 58 expected_contents["my_file3"] = mojom::FsFileType::REGULAR_FILE;
60 expected_contents["my_dir"] = mojom::FsFileType::DIRECTORY; 59 expected_contents["my_dir"] = mojom::FsFileType::DIRECTORY;
61 // Note: We don't expose ".." or ".". 60 // Note: We don't expose ".." or ".".
62 61
(...skipping 10 matching lines...) Expand all
73 72
74 // TODO(vtl): Properly test OpenFile() and OpenDirectory() (including flags). 73 // TODO(vtl): Properly test OpenFile() and OpenDirectory() (including flags).
75 74
76 TEST_F(DirectoryImplTest, BasicRenameDelete) { 75 TEST_F(DirectoryImplTest, BasicRenameDelete) {
77 mojom::DirectoryPtr directory; 76 mojom::DirectoryPtr directory;
78 GetTemporaryRoot(&directory); 77 GetTemporaryRoot(&directory);
79 mojom::FileError error; 78 mojom::FileError error;
80 79
81 // Create my_file. 80 // Create my_file.
82 error = mojom::FileError::FAILED; 81 error = mojom::FileError::FAILED;
83 directory->OpenFile("my_file", nullptr, 82 bool handled = directory->OpenFile(
84 mojom::kFlagWrite | mojom::kFlagCreate, Capture(&error)); 83 "my_file", nullptr, mojom::kFlagWrite | mojom::kFlagCreate, &error);
85 ASSERT_TRUE(directory.WaitForIncomingResponse()); 84 ASSERT_TRUE(handled);
86 EXPECT_EQ(mojom::FileError::OK, error); 85 EXPECT_EQ(mojom::FileError::OK, error);
87 86
88 // Opening my_file should succeed. 87 // Opening my_file should succeed.
89 error = mojom::FileError::FAILED; 88 error = mojom::FileError::FAILED;
90 directory->OpenFile("my_file", nullptr, mojom::kFlagRead | mojom::kFlagOpen, 89 handled = directory->OpenFile("my_file", nullptr,
91 Capture(&error)); 90 mojom::kFlagRead | mojom::kFlagOpen, &error);
92 ASSERT_TRUE(directory.WaitForIncomingResponse()); 91 ASSERT_TRUE(handled);
93 EXPECT_EQ(mojom::FileError::OK, error); 92 EXPECT_EQ(mojom::FileError::OK, error);
94 93
95 // Rename my_file to my_new_file. 94 // Rename my_file to my_new_file.
96 directory->Rename("my_file", "my_new_file", Capture(&error)); 95 handled = directory->Rename("my_file", "my_new_file", &error);
97 ASSERT_TRUE(directory.WaitForIncomingResponse()); 96 ASSERT_TRUE(handled);
98 EXPECT_EQ(mojom::FileError::OK, error); 97 EXPECT_EQ(mojom::FileError::OK, error);
99 98
100 // Opening my_file should fail. 99 // Opening my_file should fail.
101 100
102 error = mojom::FileError::FAILED; 101 error = mojom::FileError::FAILED;
103 directory->OpenFile("my_file", nullptr, mojom::kFlagRead | mojom::kFlagOpen, 102 handled = directory->OpenFile("my_file", nullptr,
104 Capture(&error)); 103 mojom::kFlagRead | mojom::kFlagOpen, &error);
105 ASSERT_TRUE(directory.WaitForIncomingResponse()); 104 ASSERT_TRUE(handled);
106 EXPECT_EQ(mojom::FileError::NOT_FOUND, error); 105 EXPECT_EQ(mojom::FileError::NOT_FOUND, error);
107 106
108 // Opening my_new_file should succeed. 107 // Opening my_new_file should succeed.
109 error = mojom::FileError::FAILED; 108 error = mojom::FileError::FAILED;
110 directory->OpenFile("my_new_file", nullptr, 109 handled = directory->OpenFile("my_new_file", nullptr,
111 mojom::kFlagRead | mojom::kFlagOpen, Capture(&error)); 110 mojom::kFlagRead | mojom::kFlagOpen, &error);
112 ASSERT_TRUE(directory.WaitForIncomingResponse()); 111 ASSERT_TRUE(handled);
113 EXPECT_EQ(mojom::FileError::OK, error); 112 EXPECT_EQ(mojom::FileError::OK, error);
114 113
115 // Delete my_new_file (no flags). 114 // Delete my_new_file (no flags).
116 directory->Delete("my_new_file", 0, Capture(&error)); 115 handled = directory->Delete("my_new_file", 0, &error);
117 ASSERT_TRUE(directory.WaitForIncomingResponse()); 116 ASSERT_TRUE(handled);
118 EXPECT_EQ(mojom::FileError::OK, error); 117 EXPECT_EQ(mojom::FileError::OK, error);
119 118
120 // Opening my_new_file should fail. 119 // Opening my_new_file should fail.
121 error = mojom::FileError::FAILED; 120 error = mojom::FileError::FAILED;
122 directory->OpenFile("my_new_file", nullptr, 121 handled = directory->OpenFile("my_new_file", nullptr,
123 mojom::kFlagRead | mojom::kFlagOpen, Capture(&error)); 122 mojom::kFlagRead | mojom::kFlagOpen, &error);
124 ASSERT_TRUE(directory.WaitForIncomingResponse()); 123 ASSERT_TRUE(handled);
125 EXPECT_EQ(mojom::FileError::NOT_FOUND, error); 124 EXPECT_EQ(mojom::FileError::NOT_FOUND, error);
126 } 125 }
127 126
128 TEST_F(DirectoryImplTest, CantOpenDirectoriesAsFiles) { 127 TEST_F(DirectoryImplTest, CantOpenDirectoriesAsFiles) {
129 mojom::DirectoryPtr directory; 128 mojom::DirectoryPtr directory;
130 GetTemporaryRoot(&directory); 129 GetTemporaryRoot(&directory);
131 mojom::FileError error; 130 mojom::FileError error;
132 131
133 { 132 {
134 // Create a directory called 'my_file' 133 // Create a directory called 'my_file'
135 mojom::DirectoryPtr my_file_directory; 134 mojom::DirectoryPtr my_file_directory;
136 error = mojom::FileError::FAILED; 135 error = mojom::FileError::FAILED;
137 directory->OpenDirectory( 136 bool handled = directory->OpenDirectory(
138 "my_file", GetProxy(&my_file_directory), 137 "my_file", GetProxy(&my_file_directory),
139 mojom::kFlagRead | mojom::kFlagWrite | mojom::kFlagCreate, 138 mojom::kFlagRead | mojom::kFlagWrite | mojom::kFlagCreate, &error);
140 Capture(&error)); 139 ASSERT_TRUE(handled);
141 ASSERT_TRUE(directory.WaitForIncomingResponse());
142 EXPECT_EQ(mojom::FileError::OK, error); 140 EXPECT_EQ(mojom::FileError::OK, error);
143 } 141 }
144 142
145 { 143 {
146 // Attempt to open that directory as a file. This must fail! 144 // Attempt to open that directory as a file. This must fail!
147 mojom::FilePtr file; 145 mojom::FilePtr file;
148 error = mojom::FileError::FAILED; 146 error = mojom::FileError::FAILED;
149 directory->OpenFile("my_file", GetProxy(&file), 147 bool handled =
150 mojom::kFlagRead | mojom::kFlagOpen, Capture(&error)); 148 directory->OpenFile("my_file", GetProxy(&file),
151 ASSERT_TRUE(directory.WaitForIncomingResponse()); 149 mojom::kFlagRead | mojom::kFlagOpen, &error);
150 ASSERT_TRUE(handled);
152 EXPECT_EQ(mojom::FileError::NOT_A_FILE, error); 151 EXPECT_EQ(mojom::FileError::NOT_A_FILE, error);
153 } 152 }
154 } 153 }
155 154
156 TEST_F(DirectoryImplTest, Clone) { 155 TEST_F(DirectoryImplTest, Clone) {
157 mojom::DirectoryPtr clone_one; 156 mojom::DirectoryPtr clone_one;
158 mojom::DirectoryPtr clone_two; 157 mojom::DirectoryPtr clone_two;
159 mojom::FileError error; 158 mojom::FileError error;
160 159
161 { 160 {
162 mojom::DirectoryPtr directory; 161 mojom::DirectoryPtr directory;
163 GetTemporaryRoot(&directory); 162 GetTemporaryRoot(&directory);
164 163
165 directory->Clone(GetProxy(&clone_one)); 164 directory->Clone(GetProxy(&clone_one));
166 directory->Clone(GetProxy(&clone_two)); 165 directory->Clone(GetProxy(&clone_two));
167 166
168 // Original temporary directory goes out of scope here; shouldn't be 167 // Original temporary directory goes out of scope here; shouldn't be
169 // deleted since it has clones. 168 // deleted since it has clones.
170 } 169 }
171 170
172 std::string data("one two three"); 171 std::string data("one two three");
173 { 172 {
174 clone_one->WriteFile("data", mojo::Array<uint8_t>::From(data), 173 bool handled =
175 Capture(&error)); 174 clone_one->WriteFile("data", mojo::Array<uint8_t>::From(data), &error);
176 ASSERT_TRUE(clone_one.WaitForIncomingResponse()); 175 ASSERT_TRUE(handled);
177 EXPECT_EQ(mojom::FileError::OK, error); 176 EXPECT_EQ(mojom::FileError::OK, error);
178 } 177 }
179 178
180 { 179 {
181 mojo::Array<uint8_t> file_contents; 180 mojo::Array<uint8_t> file_contents;
182 clone_two->ReadEntireFile("data", Capture(&error, &file_contents)); 181 bool handled = clone_two->ReadEntireFile("data", &error, &file_contents);
183 ASSERT_TRUE(clone_two.WaitForIncomingResponse()); 182 ASSERT_TRUE(handled);
184 EXPECT_EQ(mojom::FileError::OK, error); 183 EXPECT_EQ(mojom::FileError::OK, error);
185 184
186 EXPECT_EQ(data, file_contents.To<std::string>()); 185 EXPECT_EQ(data, file_contents.To<std::string>());
187 } 186 }
188 } 187 }
189 188
190 TEST_F(DirectoryImplTest, WriteFileReadFile) { 189 TEST_F(DirectoryImplTest, WriteFileReadFile) {
191 mojom::DirectoryPtr directory; 190 mojom::DirectoryPtr directory;
192 GetTemporaryRoot(&directory); 191 GetTemporaryRoot(&directory);
193 mojom::FileError error; 192 mojom::FileError error;
194 193
195 std::string data("one two three"); 194 std::string data("one two three");
196 { 195 {
197 directory->WriteFile("data", mojo::Array<uint8_t>::From(data), 196 bool handled =
198 Capture(&error)); 197 directory->WriteFile("data", mojo::Array<uint8_t>::From(data), &error);
199 ASSERT_TRUE(directory.WaitForIncomingResponse()); 198 ASSERT_TRUE(handled);
200 EXPECT_EQ(mojom::FileError::OK, error); 199 EXPECT_EQ(mojom::FileError::OK, error);
201 } 200 }
202 201
203 { 202 {
204 mojo::Array<uint8_t> file_contents; 203 mojo::Array<uint8_t> file_contents;
205 directory->ReadEntireFile("data", Capture(&error, &file_contents)); 204 bool handled = directory->ReadEntireFile("data", &error, &file_contents);
206 ASSERT_TRUE(directory.WaitForIncomingResponse()); 205 ASSERT_TRUE(handled);
207 EXPECT_EQ(mojom::FileError::OK, error); 206 EXPECT_EQ(mojom::FileError::OK, error);
208 207
209 EXPECT_EQ(data, file_contents.To<std::string>()); 208 EXPECT_EQ(data, file_contents.To<std::string>());
210 } 209 }
211 } 210 }
212 211
213 TEST_F(DirectoryImplTest, ReadEmptyFileIsNotFoundError) { 212 TEST_F(DirectoryImplTest, ReadEmptyFileIsNotFoundError) {
214 mojom::DirectoryPtr directory; 213 mojom::DirectoryPtr directory;
215 GetTemporaryRoot(&directory); 214 GetTemporaryRoot(&directory);
216 mojom::FileError error; 215 mojom::FileError error;
217 216
218 { 217 {
219 mojo::Array<uint8_t> file_contents; 218 mojo::Array<uint8_t> file_contents;
220 directory->ReadEntireFile("doesnt_exist", Capture(&error, &file_contents)); 219 bool handled =
221 ASSERT_TRUE(directory.WaitForIncomingResponse()); 220 directory->ReadEntireFile("doesnt_exist", &error, &file_contents);
221 ASSERT_TRUE(handled);
222 EXPECT_EQ(mojom::FileError::NOT_FOUND, error); 222 EXPECT_EQ(mojom::FileError::NOT_FOUND, error);
223 } 223 }
224 } 224 }
225 225
226 TEST_F(DirectoryImplTest, CantReadEntireFileOnADirectory) { 226 TEST_F(DirectoryImplTest, CantReadEntireFileOnADirectory) {
227 mojom::DirectoryPtr directory; 227 mojom::DirectoryPtr directory;
228 GetTemporaryRoot(&directory); 228 GetTemporaryRoot(&directory);
229 mojom::FileError error; 229 mojom::FileError error;
230 230
231 // Create a directory 231 // Create a directory
232 { 232 {
233 mojom::DirectoryPtr my_file_directory; 233 mojom::DirectoryPtr my_file_directory;
234 error = mojom::FileError::FAILED; 234 error = mojom::FileError::FAILED;
235 directory->OpenDirectory( 235 bool handled = directory->OpenDirectory(
236 "my_dir", GetProxy(&my_file_directory), 236 "my_dir", GetProxy(&my_file_directory),
237 mojom::kFlagRead | mojom::kFlagWrite | mojom::kFlagCreate, 237 mojom::kFlagRead | mojom::kFlagWrite | mojom::kFlagCreate, &error);
238 Capture(&error)); 238 ASSERT_TRUE(handled);
239 ASSERT_TRUE(directory.WaitForIncomingResponse());
240 EXPECT_EQ(mojom::FileError::OK, error); 239 EXPECT_EQ(mojom::FileError::OK, error);
241 } 240 }
242 241
243 // Try to read it as a file 242 // Try to read it as a file
244 { 243 {
245 mojo::Array<uint8_t> file_contents; 244 mojo::Array<uint8_t> file_contents;
246 directory->ReadEntireFile("my_dir", Capture(&error, &file_contents)); 245 bool handled = directory->ReadEntireFile("my_dir", &error, &file_contents);
247 ASSERT_TRUE(directory.WaitForIncomingResponse()); 246 ASSERT_TRUE(handled);
248 EXPECT_EQ(mojom::FileError::NOT_A_FILE, error); 247 EXPECT_EQ(mojom::FileError::NOT_A_FILE, error);
249 } 248 }
250 } 249 }
251 250
252 TEST_F(DirectoryImplTest, CantWriteFileOnADirectory) { 251 TEST_F(DirectoryImplTest, CantWriteFileOnADirectory) {
253 mojom::DirectoryPtr directory; 252 mojom::DirectoryPtr directory;
254 GetTemporaryRoot(&directory); 253 GetTemporaryRoot(&directory);
255 mojom::FileError error; 254 mojom::FileError error;
256 255
257 // Create a directory 256 // Create a directory
258 { 257 {
259 mojom::DirectoryPtr my_file_directory; 258 mojom::DirectoryPtr my_file_directory;
260 error = mojom::FileError::FAILED; 259 error = mojom::FileError::FAILED;
261 directory->OpenDirectory( 260 bool handled = directory->OpenDirectory(
262 "my_dir", GetProxy(&my_file_directory), 261 "my_dir", GetProxy(&my_file_directory),
263 mojom::kFlagRead | mojom::kFlagWrite | mojom::kFlagCreate, 262 mojom::kFlagRead | mojom::kFlagWrite | mojom::kFlagCreate, &error);
264 Capture(&error)); 263 ASSERT_TRUE(handled);
265 ASSERT_TRUE(directory.WaitForIncomingResponse());
266 EXPECT_EQ(mojom::FileError::OK, error); 264 EXPECT_EQ(mojom::FileError::OK, error);
267 } 265 }
268 266
269 { 267 {
270 std::string data("one two three"); 268 std::string data("one two three");
271 directory->WriteFile("my_dir", mojo::Array<uint8_t>::From(data), 269 bool handled = directory->WriteFile(
272 Capture(&error)); 270 "my_dir", mojo::Array<uint8_t>::From(data), &error);
273 ASSERT_TRUE(directory.WaitForIncomingResponse()); 271 ASSERT_TRUE(handled);
274 EXPECT_EQ(mojom::FileError::NOT_A_FILE, error); 272 EXPECT_EQ(mojom::FileError::NOT_A_FILE, error);
275 } 273 }
276 } 274 }
277 275
278 // TODO(vtl): Test delete flags. 276 // TODO(vtl): Test delete flags.
279 277
280 } // namespace 278 } // namespace
281 } // namespace filesystem 279 } // namespace filesystem
OLDNEW
« no previous file with comments | « no previous file | components/filesystem/file_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698