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

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

Issue 1962503002: Add mojom module suffix in .mojom files for components/filesystem. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 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 | « components/filesystem/util.h ('k') | components/leveldb/env_mojo.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 "components/filesystem/util.h" 5 #include "components/filesystem/util.h"
6 6
7 #include <errno.h> 7 #include <errno.h>
8 #include <fcntl.h> 8 #include <fcntl.h>
9 #include <sys/stat.h> 9 #include <sys/stat.h>
10 #include <time.h> 10 #include <time.h>
11 11
12 #include <limits> 12 #include <limits>
13 13
14 #include "base/logging.h" 14 #include "base/logging.h"
15 #include "base/strings/string_util.h" 15 #include "base/strings/string_util.h"
16 #include "build/build_config.h" 16 #include "build/build_config.h"
17 #include "mojo/public/cpp/bindings/string.h" 17 #include "mojo/public/cpp/bindings/string.h"
18 18
19 #if defined(OS_WIN) 19 #if defined(OS_WIN)
20 #include "base/strings/utf_string_conversions.h" 20 #include "base/strings/utf_string_conversions.h"
21 #endif 21 #endif
22 22
23 // module filesystem has various constants which must line up with enum values 23 // module filesystem has various constants which must line up with enum values
24 // in base::File::Flags. 24 // in base::File::Flags.
25 static_assert(filesystem::kFlagOpen == 25 static_assert(filesystem::mojom::kFlagOpen ==
26 static_cast<uint32_t>(base::File::FLAG_OPEN), 26 static_cast<uint32_t>(base::File::FLAG_OPEN),
27 ""); 27 "");
28 static_assert(filesystem::kFlagCreate == 28 static_assert(filesystem::mojom::kFlagCreate ==
29 static_cast<uint32_t>(base::File::FLAG_CREATE), 29 static_cast<uint32_t>(base::File::FLAG_CREATE),
30 ""); 30 "");
31 static_assert(filesystem::kFlagOpenAlways == 31 static_assert(filesystem::mojom::kFlagOpenAlways ==
32 static_cast<uint32_t>(base::File::FLAG_OPEN_ALWAYS), 32 static_cast<uint32_t>(base::File::FLAG_OPEN_ALWAYS),
33 ""); 33 "");
34 static_assert(filesystem::kCreateAlways == 34 static_assert(filesystem::mojom::kCreateAlways ==
35 static_cast<uint32_t>(base::File::FLAG_CREATE_ALWAYS), 35 static_cast<uint32_t>(base::File::FLAG_CREATE_ALWAYS),
36 ""); 36 "");
37 static_assert(filesystem::kFlagOpenTruncated == 37 static_assert(filesystem::mojom::kFlagOpenTruncated ==
38 static_cast<uint32_t>(base::File::FLAG_OPEN_TRUNCATED), 38 static_cast<uint32_t>(base::File::FLAG_OPEN_TRUNCATED),
39 ""); 39 "");
40 static_assert(filesystem::kFlagRead == 40 static_assert(filesystem::mojom::kFlagRead ==
41 static_cast<uint32_t>(base::File::FLAG_READ), 41 static_cast<uint32_t>(base::File::FLAG_READ),
42 ""); 42 "");
43 static_assert(filesystem::kFlagWrite == 43 static_assert(filesystem::mojom::kFlagWrite ==
44 static_cast<uint32_t>(base::File::FLAG_WRITE), 44 static_cast<uint32_t>(base::File::FLAG_WRITE),
45 ""); 45 "");
46 static_assert(filesystem::kFlagAppend == 46 static_assert(filesystem::mojom::kFlagAppend ==
47 static_cast<uint32_t>(base::File::FLAG_APPEND), 47 static_cast<uint32_t>(base::File::FLAG_APPEND),
48 ""); 48 "");
49 49
50 // filesystem.Error in types.mojom must be the same as base::File::Error. 50 // filesystem.Error in types.mojom must be the same as base::File::Error.
51 static_assert(static_cast<int>(filesystem::FileError::OK) == 51 static_assert(static_cast<int>(filesystem::mojom::FileError::OK) ==
52 static_cast<int>(base::File::FILE_OK), 52 static_cast<int>(base::File::FILE_OK),
53 ""); 53 "");
54 static_assert(static_cast<int>(filesystem::FileError::FAILED) == 54 static_assert(static_cast<int>(filesystem::mojom::FileError::FAILED) ==
55 static_cast<int>(base::File::FILE_ERROR_FAILED), 55 static_cast<int>(base::File::FILE_ERROR_FAILED),
56 ""); 56 "");
57 static_assert(static_cast<int>(filesystem::FileError::IN_USE) == 57 static_assert(static_cast<int>(filesystem::mojom::FileError::IN_USE) ==
58 static_cast<int>(base::File::FILE_ERROR_IN_USE), 58 static_cast<int>(base::File::FILE_ERROR_IN_USE),
59 ""); 59 "");
60 static_assert(static_cast<int>(filesystem::FileError::EXISTS) == 60 static_assert(static_cast<int>(filesystem::mojom::FileError::EXISTS) ==
61 static_cast<int>(base::File::FILE_ERROR_EXISTS), 61 static_cast<int>(base::File::FILE_ERROR_EXISTS),
62 ""); 62 "");
63 static_assert(static_cast<int>(filesystem::FileError::NOT_FOUND) == 63 static_assert(static_cast<int>(filesystem::mojom::FileError::NOT_FOUND) ==
64 static_cast<int>(base::File::FILE_ERROR_NOT_FOUND), 64 static_cast<int>(base::File::FILE_ERROR_NOT_FOUND),
65 ""); 65 "");
66 static_assert(static_cast<int>(filesystem::FileError::ACCESS_DENIED) == 66 static_assert(static_cast<int>(filesystem::mojom::FileError::ACCESS_DENIED) ==
67 static_cast<int>(base::File::FILE_ERROR_ACCESS_DENIED), 67 static_cast<int>(base::File::FILE_ERROR_ACCESS_DENIED),
68 ""); 68 "");
69 static_assert(static_cast<int>(filesystem::FileError::TOO_MANY_OPENED) == 69 static_assert(static_cast<int>(filesystem::mojom::FileError::TOO_MANY_OPENED) ==
70 static_cast<int>(base::File::FILE_ERROR_TOO_MANY_OPENED), 70 static_cast<int>(base::File::FILE_ERROR_TOO_MANY_OPENED),
71 ""); 71 "");
72 static_assert(static_cast<int>(filesystem::FileError::NO_MEMORY) == 72 static_assert(static_cast<int>(filesystem::mojom::FileError::NO_MEMORY) ==
73 static_cast<int>(base::File::FILE_ERROR_NO_MEMORY), 73 static_cast<int>(base::File::FILE_ERROR_NO_MEMORY),
74 ""); 74 "");
75 static_assert(static_cast<int>(filesystem::FileError::NO_SPACE) == 75 static_assert(static_cast<int>(filesystem::mojom::FileError::NO_SPACE) ==
76 static_cast<int>(base::File::FILE_ERROR_NO_SPACE), 76 static_cast<int>(base::File::FILE_ERROR_NO_SPACE),
77 ""); 77 "");
78 static_assert(static_cast<int>(filesystem::FileError::NOT_A_DIRECTORY) == 78 static_assert(static_cast<int>(filesystem::mojom::FileError::NOT_A_DIRECTORY) ==
79 static_cast<int>(base::File::FILE_ERROR_NOT_A_DIRECTORY), 79 static_cast<int>(base::File::FILE_ERROR_NOT_A_DIRECTORY),
80 ""); 80 "");
81 static_assert(static_cast<int>(filesystem::FileError::INVALID_OPERATION) == 81 static_assert(
82 static_cast<int>(base::File::FILE_ERROR_INVALID_OPERATION), 82 static_cast<int>(filesystem::mojom::FileError::INVALID_OPERATION) ==
83 ""); 83 static_cast<int>(base::File::FILE_ERROR_INVALID_OPERATION),
84 static_assert(static_cast<int>(filesystem::FileError::SECURITY) == 84 "");
85 static_assert(static_cast<int>(filesystem::mojom::FileError::SECURITY) ==
85 static_cast<int>(base::File::FILE_ERROR_SECURITY), 86 static_cast<int>(base::File::FILE_ERROR_SECURITY),
86 ""); 87 "");
87 static_assert(static_cast<int>(filesystem::FileError::ABORT) == 88 static_assert(static_cast<int>(filesystem::mojom::FileError::ABORT) ==
88 static_cast<int>(base::File::FILE_ERROR_ABORT), 89 static_cast<int>(base::File::FILE_ERROR_ABORT),
89 ""); 90 "");
90 static_assert(static_cast<int>(filesystem::FileError::NOT_A_FILE) == 91 static_assert(static_cast<int>(filesystem::mojom::FileError::NOT_A_FILE) ==
91 static_cast<int>(base::File::FILE_ERROR_NOT_A_FILE), 92 static_cast<int>(base::File::FILE_ERROR_NOT_A_FILE),
92 ""); 93 "");
93 static_assert(static_cast<int>(filesystem::FileError::NOT_EMPTY) == 94 static_assert(static_cast<int>(filesystem::mojom::FileError::NOT_EMPTY) ==
94 static_cast<int>(base::File::FILE_ERROR_NOT_EMPTY), 95 static_cast<int>(base::File::FILE_ERROR_NOT_EMPTY),
95 ""); 96 "");
96 static_assert(static_cast<int>(filesystem::FileError::INVALID_URL) == 97 static_assert(static_cast<int>(filesystem::mojom::FileError::INVALID_URL) ==
97 static_cast<int>(base::File::FILE_ERROR_INVALID_URL), 98 static_cast<int>(base::File::FILE_ERROR_INVALID_URL),
98 ""); 99 "");
99 static_assert(static_cast<int>(filesystem::FileError::IO) == 100 static_assert(static_cast<int>(filesystem::mojom::FileError::IO) ==
100 static_cast<int>(base::File::FILE_ERROR_IO), 101 static_cast<int>(base::File::FILE_ERROR_IO),
101 ""); 102 "");
102 103
103 // filesystem.Whence in types.mojom must be the same as base::File::Whence. 104 // filesystem.Whence in types.mojom must be the same as base::File::Whence.
104 static_assert(static_cast<int>(filesystem::Whence::FROM_BEGIN) == 105 static_assert(static_cast<int>(filesystem::mojom::Whence::FROM_BEGIN) ==
105 static_cast<int>(base::File::FROM_BEGIN), 106 static_cast<int>(base::File::FROM_BEGIN),
106 ""); 107 "");
107 static_assert(static_cast<int>(filesystem::Whence::FROM_CURRENT) == 108 static_assert(static_cast<int>(filesystem::mojom::Whence::FROM_CURRENT) ==
108 static_cast<int>(base::File::FROM_CURRENT), 109 static_cast<int>(base::File::FROM_CURRENT),
109 ""); 110 "");
110 static_assert(static_cast<int>(filesystem::Whence::FROM_END) == 111 static_assert(static_cast<int>(filesystem::mojom::Whence::FROM_END) ==
111 static_cast<int>(base::File::FROM_END), 112 static_cast<int>(base::File::FROM_END),
112 ""); 113 "");
113 114
114 namespace filesystem { 115 namespace filesystem {
115 116
116 FileError IsWhenceValid(Whence whence) { 117 mojom::FileError IsWhenceValid(mojom::Whence whence) {
117 return (whence == Whence::FROM_CURRENT || whence == Whence::FROM_BEGIN || 118 return (whence == mojom::Whence::FROM_CURRENT ||
118 whence == Whence::FROM_END) 119 whence == mojom::Whence::FROM_BEGIN ||
119 ? FileError::OK 120 whence == mojom::Whence::FROM_END)
120 : FileError::INVALID_OPERATION; 121 ? mojom::FileError::OK
122 : mojom::FileError::INVALID_OPERATION;
121 } 123 }
122 124
123 FileError IsOffsetValid(int64_t offset) { 125 mojom::FileError IsOffsetValid(int64_t offset) {
124 return (offset >= std::numeric_limits<off_t>::min() && 126 return (offset >= std::numeric_limits<off_t>::min() &&
125 offset <= std::numeric_limits<off_t>::max()) 127 offset <= std::numeric_limits<off_t>::max())
126 ? FileError::OK 128 ? mojom::FileError::OK
127 : FileError::INVALID_OPERATION; 129 : mojom::FileError::INVALID_OPERATION;
128 } 130 }
129 131
130 FileError GetError(const base::File& file) { 132 mojom::FileError GetError(const base::File& file) {
131 return static_cast<filesystem::FileError>(file.error_details()); 133 return static_cast<filesystem::mojom::FileError>(file.error_details());
132 } 134 }
133 135
134 FileInformationPtr MakeFileInformation(const base::File::Info& info) { 136 mojom::FileInformationPtr MakeFileInformation(const base::File::Info& info) {
135 FileInformationPtr file_info(FileInformation::New()); 137 mojom::FileInformationPtr file_info(mojom::FileInformation::New());
136 file_info->type = 138 file_info->type = info.is_directory ? mojom::FsFileType::DIRECTORY
137 info.is_directory ? FsFileType::DIRECTORY : FsFileType::REGULAR_FILE; 139 : mojom::FsFileType::REGULAR_FILE;
138 file_info->size = info.size; 140 file_info->size = info.size;
139 141
140 file_info->atime = info.last_accessed.ToDoubleT(); 142 file_info->atime = info.last_accessed.ToDoubleT();
141 file_info->mtime = info.last_modified.ToDoubleT(); 143 file_info->mtime = info.last_modified.ToDoubleT();
142 file_info->ctime = info.creation_time.ToDoubleT(); 144 file_info->ctime = info.creation_time.ToDoubleT();
143 145
144 return file_info; 146 return file_info;
145 } 147 }
146 148
147 FileError ValidatePath(const mojo::String& raw_path, 149 mojom::FileError ValidatePath(const mojo::String& raw_path,
148 const base::FilePath& filesystem_base, 150 const base::FilePath& filesystem_base,
149 base::FilePath* out) { 151 base::FilePath* out) {
150 DCHECK(!raw_path.is_null()); 152 DCHECK(!raw_path.is_null());
151 if (!base::IsStringUTF8(raw_path.get())) 153 if (!base::IsStringUTF8(raw_path.get()))
152 return FileError::INVALID_OPERATION; 154 return mojom::FileError::INVALID_OPERATION;
153 155
154 #if defined(OS_POSIX) 156 #if defined(OS_POSIX)
155 base::FilePath::StringType path = raw_path; 157 base::FilePath::StringType path = raw_path;
156 #elif defined(OS_WIN) 158 #elif defined(OS_WIN)
157 base::FilePath::StringType path = base::UTF8ToUTF16(raw_path.get()); 159 base::FilePath::StringType path = base::UTF8ToUTF16(raw_path.get());
158 #endif 160 #endif
159 161
160 // TODO(erg): This isn't really what we want. FilePath::AppendRelativePath() 162 // TODO(erg): This isn't really what we want. FilePath::AppendRelativePath()
161 // is closer. We need to deal with entirely hostile apps trying to bust this 163 // is closer. We need to deal with entirely hostile apps trying to bust this
162 // function to use a possibly maliciously provided |raw_path| to bust out of 164 // function to use a possibly maliciously provided |raw_path| to bust out of
163 // |filesystem_base|. 165 // |filesystem_base|.
164 base::FilePath full_path = filesystem_base.Append(path); 166 base::FilePath full_path = filesystem_base.Append(path);
165 if (full_path.ReferencesParent()) { 167 if (full_path.ReferencesParent()) {
166 // TODO(erg): For now, if it references a parent, we'll consider this bad. 168 // TODO(erg): For now, if it references a parent, we'll consider this bad.
167 return FileError::ACCESS_DENIED; 169 return mojom::FileError::ACCESS_DENIED;
168 } 170 }
169 171
170 *out = full_path; 172 *out = full_path;
171 return FileError::OK; 173 return mojom::FileError::OK;
172 } 174 }
173 175
174 } // namespace filesystem 176 } // namespace filesystem
OLDNEW
« no previous file with comments | « components/filesystem/util.h ('k') | components/leveldb/env_mojo.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698