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

Side by Side Diff: runtime/bin/directory.cc

Issue 2480793002: clang-format runtime/bin (Closed)
Patch Set: Created 4 years, 1 month 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 | « runtime/bin/directory.h ('k') | runtime/bin/directory_android.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 (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #if !defined(DART_IO_DISABLED) 5 #if !defined(DART_IO_DISABLED)
6 6
7 #include "bin/directory.h" 7 #include "bin/directory.h"
8 8
9 #include "bin/dartutils.h" 9 #include "bin/dartutils.h"
10 #include "bin/log.h" 10 #include "bin/log.h"
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 72
73 void FUNCTION_NAME(Directory_SystemTemp)(Dart_NativeArguments args) { 73 void FUNCTION_NAME(Directory_SystemTemp)(Dart_NativeArguments args) {
74 const char* result = Directory::SystemTemp(); 74 const char* result = Directory::SystemTemp();
75 Dart_SetReturnValue(args, DartUtils::NewString(result)); 75 Dart_SetReturnValue(args, DartUtils::NewString(result));
76 } 76 }
77 77
78 78
79 void FUNCTION_NAME(Directory_CreateTemp)(Dart_NativeArguments args) { 79 void FUNCTION_NAME(Directory_CreateTemp)(Dart_NativeArguments args) {
80 Dart_Handle path = Dart_GetNativeArgument(args, 0); 80 Dart_Handle path = Dart_GetNativeArgument(args, 0);
81 if (!Dart_IsString(path)) { 81 if (!Dart_IsString(path)) {
82 Dart_SetReturnValue(args, DartUtils::NewDartArgumentError( 82 Dart_SetReturnValue(
83 "Prefix argument of CreateSystemTempSync is not a String")); 83 args, DartUtils::NewDartArgumentError(
84 "Prefix argument of CreateSystemTempSync is not a String"));
84 return; 85 return;
85 } 86 }
86 const char* result = 87 const char* result = Directory::CreateTemp(DartUtils::GetStringValue(path));
87 Directory::CreateTemp(DartUtils::GetStringValue(path));
88 if (result != NULL) { 88 if (result != NULL) {
89 Dart_SetReturnValue(args, DartUtils::NewString(result)); 89 Dart_SetReturnValue(args, DartUtils::NewString(result));
90 } else { 90 } else {
91 Dart_SetReturnValue(args, DartUtils::NewDartOSError()); 91 Dart_SetReturnValue(args, DartUtils::NewDartOSError());
92 } 92 }
93 } 93 }
94 94
95 95
96 void FUNCTION_NAME(Directory_Delete)(Dart_NativeArguments args) { 96 void FUNCTION_NAME(Directory_Delete)(Dart_NativeArguments args) {
97 Dart_Handle path = Dart_GetNativeArgument(args, 0); 97 Dart_Handle path = Dart_GetNativeArgument(args, 0);
(...skipping 21 matching lines...) Expand all
119 119
120 void FUNCTION_NAME(Directory_FillWithDirectoryListing)( 120 void FUNCTION_NAME(Directory_FillWithDirectoryListing)(
121 Dart_NativeArguments args) { 121 Dart_NativeArguments args) {
122 // The list that we should fill. 122 // The list that we should fill.
123 Dart_Handle results = Dart_GetNativeArgument(args, 0); 123 Dart_Handle results = Dart_GetNativeArgument(args, 0);
124 Dart_Handle path = Dart_GetNativeArgument(args, 1); 124 Dart_Handle path = Dart_GetNativeArgument(args, 1);
125 Dart_Handle recursive = Dart_GetNativeArgument(args, 2); 125 Dart_Handle recursive = Dart_GetNativeArgument(args, 2);
126 Dart_Handle follow_links = Dart_GetNativeArgument(args, 3); 126 Dart_Handle follow_links = Dart_GetNativeArgument(args, 3);
127 // Pass the list that should hold the directory listing to the 127 // Pass the list that should hold the directory listing to the
128 // SyncDirectoryListing object, which adds elements to it. 128 // SyncDirectoryListing object, which adds elements to it.
129 SyncDirectoryListing sync_listing(results, 129 SyncDirectoryListing sync_listing(results, DartUtils::GetStringValue(path),
130 DartUtils::GetStringValue(path),
131 DartUtils::GetBooleanValue(recursive), 130 DartUtils::GetBooleanValue(recursive),
132 DartUtils::GetBooleanValue(follow_links)); 131 DartUtils::GetBooleanValue(follow_links));
133 Directory::List(&sync_listing); 132 Directory::List(&sync_listing);
134 } 133 }
135 134
136 135
137 static const int kAsyncDirectoryListerFieldIndex = 0; 136 static const int kAsyncDirectoryListerFieldIndex = 0;
138 137
139 138
140 void FUNCTION_NAME(Directory_GetAsyncDirectoryListerPointer)( 139 void FUNCTION_NAME(Directory_GetAsyncDirectoryListerPointer)(
141 Dart_NativeArguments args) { 140 Dart_NativeArguments args) {
142 AsyncDirectoryListing* listing; 141 AsyncDirectoryListing* listing;
143 Dart_Handle dart_this = ThrowIfError(Dart_GetNativeArgument(args, 0)); 142 Dart_Handle dart_this = ThrowIfError(Dart_GetNativeArgument(args, 0));
144 ASSERT(Dart_IsInstance(dart_this)); 143 ASSERT(Dart_IsInstance(dart_this));
145 ThrowIfError(Dart_GetNativeInstanceField( 144 ThrowIfError(
146 dart_this, 145 Dart_GetNativeInstanceField(dart_this, kAsyncDirectoryListerFieldIndex,
147 kAsyncDirectoryListerFieldIndex, 146 reinterpret_cast<intptr_t*>(&listing)));
148 reinterpret_cast<intptr_t*>(&listing)));
149 if (listing != NULL) { 147 if (listing != NULL) {
150 intptr_t listing_pointer = reinterpret_cast<intptr_t>(listing); 148 intptr_t listing_pointer = reinterpret_cast<intptr_t>(listing);
151 // Increment the listing's reference count. This native should only be 149 // Increment the listing's reference count. This native should only be
152 // be called when we are about to send the AsyncDirectoryListing* to the 150 // be called when we are about to send the AsyncDirectoryListing* to the
153 // IO service. 151 // IO service.
154 listing->Retain(); 152 listing->Retain();
155 Dart_SetReturnValue(args, Dart_NewInteger(listing_pointer)); 153 Dart_SetReturnValue(args, Dart_NewInteger(listing_pointer));
156 } 154 }
157 } 155 }
158 156
159 157
160 static void ReleaseListing(void* isolate_callback_data, 158 static void ReleaseListing(void* isolate_callback_data,
161 Dart_WeakPersistentHandle handle, 159 Dart_WeakPersistentHandle handle,
162 void* peer) { 160 void* peer) {
163 AsyncDirectoryListing* listing = 161 AsyncDirectoryListing* listing =
164 reinterpret_cast<AsyncDirectoryListing*>(peer); 162 reinterpret_cast<AsyncDirectoryListing*>(peer);
165 listing->Release(); 163 listing->Release();
166 } 164 }
167 165
168 166
169 void FUNCTION_NAME(Directory_SetAsyncDirectoryListerPointer)( 167 void FUNCTION_NAME(Directory_SetAsyncDirectoryListerPointer)(
170 Dart_NativeArguments args) { 168 Dart_NativeArguments args) {
171 Dart_Handle dart_this = ThrowIfError(Dart_GetNativeArgument(args, 0)); 169 Dart_Handle dart_this = ThrowIfError(Dart_GetNativeArgument(args, 0));
172 intptr_t listing_pointer = 170 intptr_t listing_pointer =
173 DartUtils::GetIntptrValue(Dart_GetNativeArgument(args, 1)); 171 DartUtils::GetIntptrValue(Dart_GetNativeArgument(args, 1));
174 AsyncDirectoryListing* listing = 172 AsyncDirectoryListing* listing =
175 reinterpret_cast<AsyncDirectoryListing*>(listing_pointer); 173 reinterpret_cast<AsyncDirectoryListing*>(listing_pointer);
176 Dart_NewWeakPersistentHandle( 174 Dart_NewWeakPersistentHandle(dart_this, reinterpret_cast<void*>(listing),
177 dart_this, 175 sizeof(*listing), ReleaseListing);
178 reinterpret_cast<void*>(listing),
179 sizeof(*listing),
180 ReleaseListing);
181 Dart_Handle result = Dart_SetNativeInstanceField( 176 Dart_Handle result = Dart_SetNativeInstanceField(
182 dart_this, 177 dart_this, kAsyncDirectoryListerFieldIndex, listing_pointer);
183 kAsyncDirectoryListerFieldIndex,
184 listing_pointer);
185 if (Dart_IsError(result)) { 178 if (Dart_IsError(result)) {
186 Log::PrintErr("SetAsyncDirectoryListerPointer failed\n"); 179 Log::PrintErr("SetAsyncDirectoryListerPointer failed\n");
187 Dart_PropagateError(result); 180 Dart_PropagateError(result);
188 } 181 }
189 } 182 }
190 183
191 184
192 void Directory::SetSystemTemp(const char* path) { 185 void Directory::SetSystemTemp(const char* path) {
193 if (system_temp_path_override_ != NULL) { 186 if (system_temp_path_override_ != NULL) {
194 free(system_temp_path_override_); 187 free(system_temp_path_override_);
(...skipping 12 matching lines...) Expand all
207 return CObject::True(); 200 return CObject::True();
208 } else { 201 } else {
209 return CObject::NewOSError(); 202 return CObject::NewOSError();
210 } 203 }
211 } 204 }
212 return CObject::IllegalArgumentError(); 205 return CObject::IllegalArgumentError();
213 } 206 }
214 207
215 208
216 CObject* Directory::DeleteRequest(const CObjectArray& request) { 209 CObject* Directory::DeleteRequest(const CObjectArray& request) {
217 if ((request.Length() == 2) && 210 if ((request.Length() == 2) && request[0]->IsString() &&
218 request[0]->IsString() && request[1]->IsBool()) { 211 request[1]->IsBool()) {
219 CObjectString path(request[0]); 212 CObjectString path(request[0]);
220 CObjectBool recursive(request[1]); 213 CObjectBool recursive(request[1]);
221 if (Directory::Delete(path.CString(), recursive.Value())) { 214 if (Directory::Delete(path.CString(), recursive.Value())) {
222 return CObject::True(); 215 return CObject::True();
223 } else { 216 } else {
224 return CObject::NewOSError(); 217 return CObject::NewOSError();
225 } 218 }
226 } 219 }
227 return CObject::IllegalArgumentError(); 220 return CObject::IllegalArgumentError();
228 } 221 }
(...skipping 29 matching lines...) Expand all
258 } 251 }
259 } 252 }
260 return CObject::IllegalArgumentError(); 253 return CObject::IllegalArgumentError();
261 } 254 }
262 255
263 256
264 static CObject* CreateIllegalArgumentError() { 257 static CObject* CreateIllegalArgumentError() {
265 // Respond with an illegal argument list error message. 258 // Respond with an illegal argument list error message.
266 CObjectArray* error = new CObjectArray(CObject::NewArray(3)); 259 CObjectArray* error = new CObjectArray(CObject::NewArray(3));
267 error->SetAt(0, new CObjectInt32( 260 error->SetAt(0, new CObjectInt32(
268 CObject::NewInt32(AsyncDirectoryListing::kListError))); 261 CObject::NewInt32(AsyncDirectoryListing::kListError)));
269 error->SetAt(1, CObject::Null()); 262 error->SetAt(1, CObject::Null());
270 error->SetAt(2, CObject::IllegalArgumentError()); 263 error->SetAt(2, CObject::IllegalArgumentError());
271 return error; 264 return error;
272 } 265 }
273 266
274 267
275 CObject* Directory::ListStartRequest(const CObjectArray& request) { 268 CObject* Directory::ListStartRequest(const CObjectArray& request) {
276 if ((request.Length() == 3) && 269 if ((request.Length() == 3) && request[0]->IsString() &&
277 request[0]->IsString() && 270 request[1]->IsBool() && request[2]->IsBool()) {
278 request[1]->IsBool() &&
279 request[2]->IsBool()) {
280 CObjectString path(request[0]); 271 CObjectString path(request[0]);
281 CObjectBool recursive(request[1]); 272 CObjectBool recursive(request[1]);
282 CObjectBool follow_links(request[2]); 273 CObjectBool follow_links(request[2]);
283 AsyncDirectoryListing* dir_listing = 274 AsyncDirectoryListing* dir_listing = new AsyncDirectoryListing(
284 new AsyncDirectoryListing(path.CString(), 275 path.CString(), recursive.Value(), follow_links.Value());
285 recursive.Value(),
286 follow_links.Value());
287 if (dir_listing->error()) { 276 if (dir_listing->error()) {
288 // Report error now, so we capture the correct OSError. 277 // Report error now, so we capture the correct OSError.
289 CObject* err = CObject::NewOSError(); 278 CObject* err = CObject::NewOSError();
290 dir_listing->Release(); 279 dir_listing->Release();
291 CObjectArray* error = new CObjectArray(CObject::NewArray(3)); 280 CObjectArray* error = new CObjectArray(CObject::NewArray(3));
292 error->SetAt(0, new CObjectInt32( 281 error->SetAt(0, new CObjectInt32(CObject::NewInt32(
293 CObject::NewInt32(AsyncDirectoryListing::kListError))); 282 AsyncDirectoryListing::kListError)));
294 error->SetAt(1, request[0]); 283 error->SetAt(1, request[0]);
295 error->SetAt(2, err); 284 error->SetAt(2, err);
296 return error; 285 return error;
297 } 286 }
298 // TODO(ajohnsen): Consider returning the first few results. 287 // TODO(ajohnsen): Consider returning the first few results.
299 return new CObjectIntptr(CObject::NewIntptr( 288 return new CObjectIntptr(
300 reinterpret_cast<intptr_t>(dir_listing))); 289 CObject::NewIntptr(reinterpret_cast<intptr_t>(dir_listing)));
301 } 290 }
302 return CreateIllegalArgumentError(); 291 return CreateIllegalArgumentError();
303 } 292 }
304 293
305 294
306 CObject* Directory::ListNextRequest(const CObjectArray& request) { 295 CObject* Directory::ListNextRequest(const CObjectArray& request) {
307 if ((request.Length() == 1) && request[0]->IsIntptr()) { 296 if ((request.Length() == 1) && request[0]->IsIntptr()) {
308 CObjectIntptr ptr(request[0]); 297 CObjectIntptr ptr(request[0]);
309 AsyncDirectoryListing* dir_listing = 298 AsyncDirectoryListing* dir_listing =
310 reinterpret_cast<AsyncDirectoryListing*>(ptr.Value()); 299 reinterpret_cast<AsyncDirectoryListing*>(ptr.Value());
(...skipping 28 matching lines...) Expand all
339 // we don't delete the weak persistent handle. The file is closed here, but 328 // we don't delete the weak persistent handle. The file is closed here, but
340 // the memory for the listing will be cleaned up when the finalizer runs. 329 // the memory for the listing will be cleaned up when the finalizer runs.
341 dir_listing->PopAll(); 330 dir_listing->PopAll();
342 return new CObjectBool(CObject::Bool(true)); 331 return new CObjectBool(CObject::Bool(true));
343 } 332 }
344 return CreateIllegalArgumentError(); 333 return CreateIllegalArgumentError();
345 } 334 }
346 335
347 336
348 CObject* Directory::RenameRequest(const CObjectArray& request) { 337 CObject* Directory::RenameRequest(const CObjectArray& request) {
349 if ((request.Length() == 2) && 338 if ((request.Length() == 2) && request[0]->IsString() &&
350 request[0]->IsString() &&
351 request[1]->IsString()) { 339 request[1]->IsString()) {
352 CObjectString path(request[0]); 340 CObjectString path(request[0]);
353 CObjectString new_path(request[1]); 341 CObjectString new_path(request[1]);
354 bool completed = Directory::Rename(path.CString(), new_path.CString()); 342 bool completed = Directory::Rename(path.CString(), new_path.CString());
355 if (completed) { 343 if (completed) {
356 return CObject::True(); 344 return CObject::True();
357 } 345 }
358 return CObject::NewOSError(); 346 return CObject::NewOSError();
359 } 347 }
360 return CObject::IllegalArgumentError(); 348 return CObject::IllegalArgumentError();
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 382
395 383
396 bool AsyncDirectoryListing::HandleError() { 384 bool AsyncDirectoryListing::HandleError() {
397 CObject* err = CObject::NewOSError(); 385 CObject* err = CObject::NewOSError();
398 array_->SetAt(index_++, new CObjectInt32(CObject::NewInt32(kListError))); 386 array_->SetAt(index_++, new CObjectInt32(CObject::NewInt32(kListError)));
399 CObjectArray* response = new CObjectArray(CObject::NewArray(3)); 387 CObjectArray* response = new CObjectArray(CObject::NewArray(3));
400 response->SetAt(0, new CObjectInt32(CObject::NewInt32(kListError))); 388 response->SetAt(0, new CObjectInt32(CObject::NewInt32(kListError)));
401 // Delay calling CurrentPath() until after CObject::NewOSError() in case 389 // Delay calling CurrentPath() until after CObject::NewOSError() in case
402 // CurrentPath() pollutes the OS error code. 390 // CurrentPath() pollutes the OS error code.
403 response->SetAt(1, new CObjectString(CObject::NewString( 391 response->SetAt(1, new CObjectString(CObject::NewString(
404 error() ? "Invalid path" : CurrentPath()))); 392 error() ? "Invalid path" : CurrentPath())));
405 response->SetAt(2, err); 393 response->SetAt(2, err);
406 array_->SetAt(index_++, response); 394 array_->SetAt(index_++, response);
407 return index_ < length_; 395 return index_ < length_;
408 } 396 }
409 397
410 398
411 bool SyncDirectoryListing::HandleDirectory(const char* dir_name) { 399 bool SyncDirectoryListing::HandleDirectory(const char* dir_name) {
412 Dart_Handle dir_name_dart = DartUtils::NewString(dir_name); 400 Dart_Handle dir_name_dart = DartUtils::NewString(dir_name);
413 Dart_Handle dir = 401 Dart_Handle dir = Dart_New(directory_type_, Dart_Null(), 1, &dir_name_dart);
414 Dart_New(directory_type_, Dart_Null(), 1, &dir_name_dart);
415 Dart_Handle result = Dart_Invoke(results_, add_string_, 1, &dir); 402 Dart_Handle result = Dart_Invoke(results_, add_string_, 1, &dir);
416 if (Dart_IsError(result)) { 403 if (Dart_IsError(result)) {
417 Dart_PropagateError(result); 404 Dart_PropagateError(result);
418 } 405 }
419 return true; 406 return true;
420 } 407 }
421 408
422 409
423 bool SyncDirectoryListing::HandleLink(const char* link_name) { 410 bool SyncDirectoryListing::HandleLink(const char* link_name) {
424 Dart_Handle link_name_dart = DartUtils::NewString(link_name); 411 Dart_Handle link_name_dart = DartUtils::NewString(link_name);
425 Dart_Handle link = 412 Dart_Handle link = Dart_New(link_type_, Dart_Null(), 1, &link_name_dart);
426 Dart_New(link_type_, Dart_Null(), 1, &link_name_dart);
427 Dart_Handle result = Dart_Invoke(results_, add_string_, 1, &link); 413 Dart_Handle result = Dart_Invoke(results_, add_string_, 1, &link);
428 if (Dart_IsError(result)) { 414 if (Dart_IsError(result)) {
429 Dart_PropagateError(result); 415 Dart_PropagateError(result);
430 } 416 }
431 return true; 417 return true;
432 } 418 }
433 419
434 420
435 bool SyncDirectoryListing::HandleFile(const char* file_name) { 421 bool SyncDirectoryListing::HandleFile(const char* file_name) {
436 Dart_Handle file_name_dart = DartUtils::NewString(file_name); 422 Dart_Handle file_name_dart = DartUtils::NewString(file_name);
437 Dart_Handle file = 423 Dart_Handle file = Dart_New(file_type_, Dart_Null(), 1, &file_name_dart);
438 Dart_New(file_type_, Dart_Null(), 1, &file_name_dart);
439 Dart_Handle result = Dart_Invoke(results_, add_string_, 1, &file); 424 Dart_Handle result = Dart_Invoke(results_, add_string_, 1, &file);
440 if (Dart_IsError(result)) { 425 if (Dart_IsError(result)) {
441 Dart_PropagateError(result); 426 Dart_PropagateError(result);
442 } 427 }
443 return true; 428 return true;
444 } 429 }
445 430
446 431
447 bool SyncDirectoryListing::HandleError() { 432 bool SyncDirectoryListing::HandleError() {
448 Dart_Handle dart_os_error = DartUtils::NewDartOSError(); 433 Dart_Handle dart_os_error = DartUtils::NewDartOSError();
449 Dart_Handle args[3]; 434 Dart_Handle args[3];
450 args[0] = DartUtils::NewString("Directory listing failed"); 435 args[0] = DartUtils::NewString("Directory listing failed");
451 args[1] = DartUtils::NewString(error() ? "Invalid path" : CurrentPath()); 436 args[1] = DartUtils::NewString(error() ? "Invalid path" : CurrentPath());
452 args[2] = dart_os_error; 437 args[2] = dart_os_error;
453 Dart_ThrowException(Dart_New( 438 Dart_ThrowException(Dart_New(
454 DartUtils::GetDartType(DartUtils::kIOLibURL, "FileSystemException"), 439 DartUtils::GetDartType(DartUtils::kIOLibURL, "FileSystemException"),
455 Dart_Null(), 440 Dart_Null(), 3, args));
456 3,
457 args));
458 return true; 441 return true;
459 } 442 }
460 443
461 444
462 static bool ListNext(DirectoryListing* listing) { 445 static bool ListNext(DirectoryListing* listing) {
463 switch (listing->top()->Next(listing)) { 446 switch (listing->top()->Next(listing)) {
464 case kListFile: 447 case kListFile:
465 return listing->HandleFile(listing->CurrentPath()); 448 return listing->HandleFile(listing->CurrentPath());
466 449
467 case kListLink: 450 case kListLink:
(...skipping 22 matching lines...) Expand all
490 } 473 }
491 return false; 474 return false;
492 } 475 }
493 476
494 477
495 void Directory::List(DirectoryListing* listing) { 478 void Directory::List(DirectoryListing* listing) {
496 if (listing->error()) { 479 if (listing->error()) {
497 listing->HandleError(); 480 listing->HandleError();
498 listing->HandleDone(); 481 listing->HandleDone();
499 } else { 482 } else {
500 while (ListNext(listing)) {} 483 while (ListNext(listing)) {
484 }
501 } 485 }
502 } 486 }
503 487
504 } // namespace bin 488 } // namespace bin
505 } // namespace dart 489 } // namespace dart
506 490
507 #endif // !defined(DART_IO_DISABLED) 491 #endif // !defined(DART_IO_DISABLED)
OLDNEW
« no previous file with comments | « runtime/bin/directory.h ('k') | runtime/bin/directory_android.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698