OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "webkit/fileapi/file_system_util.h" | 5 #include "webkit/fileapi/file_system_util.h" |
6 | 6 |
7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
8 | 8 |
9 #include "base/file_path.h" | 9 #include "base/file_path.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
11 #include "base/string_util.h" | 11 #include "base/string_util.h" |
12 #include "base/sys_string_conversions.h" | 12 #include "base/sys_string_conversions.h" |
13 #include "base/utf_string_conversions.h" | 13 #include "base/utf_string_conversions.h" |
14 #include "googleurl/src/gurl.h" | 14 #include "googleurl/src/gurl.h" |
15 #include "third_party/WebKit/Source/Platform/chromium/public/WebCString.h" | 15 #include "third_party/WebKit/Source/Platform/chromium/public/WebCString.h" |
16 #include "third_party/WebKit/Source/Platform/chromium/public/WebString.h" | 16 #include "third_party/WebKit/Source/Platform/chromium/public/WebString.h" |
17 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" | 17 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityOrigin.h" |
18 #include "webkit/fileapi/file_system_types.h" | 18 #include "webkit/fileapi/file_system_types.h" |
19 | 19 |
20 namespace fileapi { | 20 namespace fileapi { |
21 | 21 |
22 const char kPersistentDir[] = "/persistent"; | 22 const char kPersistentDir[] = "/persistent"; |
23 const char kTemporaryDir[] = "/temporary"; | 23 const char kTemporaryDir[] = "/temporary"; |
24 const char kIsolatedDir[] = "/isolated"; | 24 const char kIsolatedDir[] = "/isolated"; |
25 const char kExternalDir[] = "/external"; | 25 const char kExternalDir[] = "/external"; |
26 const char kTestDir[] = "/test"; | 26 const char kTestDir[] = "/test"; |
27 | 27 |
28 // TODO(ericu): Consider removing support for '\', even on Windows, if possible. | 28 // TODO(ericu): Consider removing support for '\', even on Windows, if possible. |
29 // There's a lot of test code that will need reworking, and we may have trouble | 29 // There's a lot of test code that will need reworking, and we may have trouble |
30 // with FilePath elsewhere [e.g. DirName and other methods may also need | 30 // with base::FilePath elsewhere [e.g. DirName and other methods may also need |
31 // replacement]. | 31 // replacement]. |
32 FilePath VirtualPath::BaseName(const FilePath& virtual_path) { | 32 base::FilePath VirtualPath::BaseName(const base::FilePath& virtual_path) { |
33 FilePath::StringType path = virtual_path.value(); | 33 base::FilePath::StringType path = virtual_path.value(); |
34 | 34 |
35 // Keep everything after the final separator, but if the pathname is only | 35 // Keep everything after the final separator, but if the pathname is only |
36 // one character and it's a separator, leave it alone. | 36 // one character and it's a separator, leave it alone. |
37 while (path.size() > 1 && FilePath::IsSeparator(path[path.size() - 1])) | 37 while (path.size() > 1 && base::FilePath::IsSeparator(path[path.size() - 1])) |
38 path.resize(path.size() - 1); | 38 path.resize(path.size() - 1); |
39 FilePath::StringType::size_type last_separator = | 39 base::FilePath::StringType::size_type last_separator = |
40 path.find_last_of(FilePath::kSeparators); | 40 path.find_last_of(base::FilePath::kSeparators); |
41 if (last_separator != FilePath::StringType::npos && | 41 if (last_separator != base::FilePath::StringType::npos && |
42 last_separator < path.size() - 1) | 42 last_separator < path.size() - 1) |
43 path.erase(0, last_separator + 1); | 43 path.erase(0, last_separator + 1); |
44 | 44 |
45 return FilePath(path); | 45 return base::FilePath(path); |
46 } | 46 } |
47 | 47 |
48 void VirtualPath::GetComponents( | 48 void VirtualPath::GetComponents( |
49 const FilePath& path, std::vector<FilePath::StringType>* components) { | 49 const base::FilePath& path, std::vector<base::FilePath::StringType>* compone
nts) { |
50 DCHECK(components); | 50 DCHECK(components); |
51 if (!components) | 51 if (!components) |
52 return; | 52 return; |
53 components->clear(); | 53 components->clear(); |
54 if (path.value().empty()) | 54 if (path.value().empty()) |
55 return; | 55 return; |
56 | 56 |
57 std::vector<FilePath::StringType> ret_val; | 57 std::vector<base::FilePath::StringType> ret_val; |
58 FilePath current = path; | 58 base::FilePath current = path; |
59 FilePath base; | 59 base::FilePath base; |
60 | 60 |
61 // Due to the way things are implemented, FilePath::DirName works here, | 61 // Due to the way things are implemented, base::FilePath::DirName works here, |
62 // whereas FilePath::BaseName doesn't. | 62 // whereas base::FilePath::BaseName doesn't. |
63 while (current != current.DirName()) { | 63 while (current != current.DirName()) { |
64 base = BaseName(current); | 64 base = BaseName(current); |
65 ret_val.push_back(base.value()); | 65 ret_val.push_back(base.value()); |
66 current = current.DirName(); | 66 current = current.DirName(); |
67 } | 67 } |
68 | 68 |
69 *components = | 69 *components = |
70 std::vector<FilePath::StringType>(ret_val.rbegin(), ret_val.rend()); | 70 std::vector<base::FilePath::StringType>(ret_val.rbegin(), ret_val.rend()); |
71 } | 71 } |
72 | 72 |
73 GURL GetFileSystemRootURI(const GURL& origin_url, FileSystemType type) { | 73 GURL GetFileSystemRootURI(const GURL& origin_url, FileSystemType type) { |
74 // origin_url is based on a security origin, so http://foo.com or file:/// | 74 // origin_url is based on a security origin, so http://foo.com or file:/// |
75 // instead of the corresponding filesystem URL. | 75 // instead of the corresponding filesystem URL. |
76 DCHECK(!origin_url.SchemeIsFileSystem()); | 76 DCHECK(!origin_url.SchemeIsFileSystem()); |
77 | 77 |
78 std::string url = "filesystem:" + origin_url.GetWithEmptyPath().spec(); | 78 std::string url = "filesystem:" + origin_url.GetWithEmptyPath().spec(); |
79 switch (type) { | 79 switch (type) { |
80 case kFileSystemTypeTemporary: | 80 case kFileSystemTypeTemporary: |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 return "Drive"; | 186 return "Drive"; |
187 case kFileSystemTypeSyncable: | 187 case kFileSystemTypeSyncable: |
188 return "Syncable"; | 188 return "Syncable"; |
189 case kFileSystemTypeUnknown: | 189 case kFileSystemTypeUnknown: |
190 return "Unknown"; | 190 return "Unknown"; |
191 } | 191 } |
192 NOTREACHED(); | 192 NOTREACHED(); |
193 return std::string(); | 193 return std::string(); |
194 } | 194 } |
195 | 195 |
196 std::string FilePathToString(const FilePath& file_path) { | 196 std::string FilePathToString(const base::FilePath& file_path) { |
197 #if defined(OS_WIN) | 197 #if defined(OS_WIN) |
198 return UTF16ToUTF8(file_path.value()); | 198 return UTF16ToUTF8(file_path.value()); |
199 #elif defined(OS_POSIX) | 199 #elif defined(OS_POSIX) |
200 return file_path.value(); | 200 return file_path.value(); |
201 #endif | 201 #endif |
202 } | 202 } |
203 | 203 |
204 FilePath StringToFilePath(const std::string& file_path_string) { | 204 base::FilePath StringToFilePath(const std::string& file_path_string) { |
205 #if defined(OS_WIN) | 205 #if defined(OS_WIN) |
206 return FilePath(UTF8ToUTF16(file_path_string)); | 206 return base::FilePath(UTF8ToUTF16(file_path_string)); |
207 #elif defined(OS_POSIX) | 207 #elif defined(OS_POSIX) |
208 return FilePath(file_path_string); | 208 return base::FilePath(file_path_string); |
209 #endif | 209 #endif |
210 } | 210 } |
211 | 211 |
212 WebKit::WebFileError PlatformFileErrorToWebFileError( | 212 WebKit::WebFileError PlatformFileErrorToWebFileError( |
213 base::PlatformFileError error_code) { | 213 base::PlatformFileError error_code) { |
214 switch (error_code) { | 214 switch (error_code) { |
215 case base::PLATFORM_FILE_ERROR_NOT_FOUND: | 215 case base::PLATFORM_FILE_ERROR_NOT_FOUND: |
216 return WebKit::WebFileErrorNotFound; | 216 return WebKit::WebFileErrorNotFound; |
217 case base::PLATFORM_FILE_ERROR_INVALID_OPERATION: | 217 case base::PLATFORM_FILE_ERROR_INVALID_OPERATION: |
218 case base::PLATFORM_FILE_ERROR_EXISTS: | 218 case base::PLATFORM_FILE_ERROR_EXISTS: |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
275 | 275 |
276 std::string GetIsolatedFileSystemRootURIString( | 276 std::string GetIsolatedFileSystemRootURIString( |
277 const GURL& origin_url, | 277 const GURL& origin_url, |
278 const std::string& filesystem_id, | 278 const std::string& filesystem_id, |
279 const std::string& optional_root_name) { | 279 const std::string& optional_root_name) { |
280 std::string root = GetFileSystemRootURI(origin_url, | 280 std::string root = GetFileSystemRootURI(origin_url, |
281 kFileSystemTypeIsolated).spec(); | 281 kFileSystemTypeIsolated).spec(); |
282 root.append(filesystem_id); | 282 root.append(filesystem_id); |
283 root.append("/"); | 283 root.append("/"); |
284 if (!optional_root_name.empty()) { | 284 if (!optional_root_name.empty()) { |
285 DCHECK(!FilePath::FromUTF8Unsafe(optional_root_name).ReferencesParent()); | 285 DCHECK(!base::FilePath::FromUTF8Unsafe(optional_root_name).ReferencesParent(
)); |
286 root.append(optional_root_name); | 286 root.append(optional_root_name); |
287 root.append("/"); | 287 root.append("/"); |
288 } | 288 } |
289 return root; | 289 return root; |
290 } | 290 } |
291 | 291 |
292 } // namespace fileapi | 292 } // namespace fileapi |
OLD | NEW |