1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/files/file.h"
7 // TODO(rvargas): remove this (needed for kInvalidPlatformFileValue).
8 #include "base/platform_file.h"
15 is_symbolic_link(false) {
22 : file_(kInvalidPlatformFileValue
),
23 error_details_(FILE_ERROR_FAILED
),
29 File::File(const FilePath
& name
, uint32 flags
)
30 : file_(kInvalidPlatformFileValue
),
31 error_details_(FILE_OK
),
34 Initialize(name
, flags
);
38 File::File(PlatformFile platform_file
)
39 : file_(platform_file
),
40 error_details_(FILE_OK
),
44 DCHECK_GE(platform_file
, -1);
48 File::File(Error error_details
)
49 : file_(kInvalidPlatformFileValue
),
50 error_details_(error_details
),
55 File::File(RValue other
)
56 : file_(other
.object
->TakePlatformFile()),
57 error_details_(other
.object
->error_details()),
58 created_(other
.object
->created()),
59 async_(other
.object
->async_
) {
63 // Go through the AssertIOAllowed logic.
67 File
& File::operator=(RValue other
) {
68 if (this != other
.object
) {
70 SetPlatformFile(other
.object
->TakePlatformFile());
71 error_details_
= other
.object
->error_details();
72 created_
= other
.object
->created();
73 async_
= other
.object
->async_
;
79 void File::Initialize(const FilePath
& name
, uint32 flags
) {
80 if (name
.ReferencesParent()) {
81 error_details_
= FILE_ERROR_ACCESS_DENIED
;
84 InitializeUnsafe(name
, flags
);
88 std::string
File::ErrorToString(Error error
) {
92 case FILE_ERROR_FAILED
:
93 return "FILE_ERROR_FAILED";
94 case FILE_ERROR_IN_USE
:
95 return "FILE_ERROR_IN_USE";
96 case FILE_ERROR_EXISTS
:
97 return "FILE_ERROR_EXISTS";
98 case FILE_ERROR_NOT_FOUND
:
99 return "FILE_ERROR_NOT_FOUND";
100 case FILE_ERROR_ACCESS_DENIED
:
101 return "FILE_ERROR_ACCESS_DENIED";
102 case FILE_ERROR_TOO_MANY_OPENED
:
103 return "FILE_ERROR_TOO_MANY_OPENED";
104 case FILE_ERROR_NO_MEMORY
:
105 return "FILE_ERROR_NO_MEMORY";
106 case FILE_ERROR_NO_SPACE
:
107 return "FILE_ERROR_NO_SPACE";
108 case FILE_ERROR_NOT_A_DIRECTORY
:
109 return "FILE_ERROR_NOT_A_DIRECTORY";
110 case FILE_ERROR_INVALID_OPERATION
:
111 return "FILE_ERROR_INVALID_OPERATION";
112 case FILE_ERROR_SECURITY
:
113 return "FILE_ERROR_SECURITY";
114 case FILE_ERROR_ABORT
:
115 return "FILE_ERROR_ABORT";
116 case FILE_ERROR_NOT_A_FILE
:
117 return "FILE_ERROR_NOT_A_FILE";
118 case FILE_ERROR_NOT_EMPTY
:
119 return "FILE_ERROR_NOT_EMPTY";
120 case FILE_ERROR_INVALID_URL
:
121 return "FILE_ERROR_INVALID_URL";
123 return "FILE_ERROR_IO";