OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 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/plugins/ppapi/ppb_file_ref_impl.h" | 5 #include "webkit/plugins/ppapi/ppb_file_ref_impl.h" |
6 | 6 |
7 #include "base/string_util.h" | 7 #include "base/string_util.h" |
8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
9 #include "googleurl/src/gurl.h" | 9 #include "googleurl/src/gurl.h" |
10 #include "ppapi/c/pp_errors.h" | 10 #include "ppapi/c/pp_errors.h" |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
90 | 90 |
91 if (file_system->type() != PP_FILESYSTEMTYPE_LOCALPERSISTENT && | 91 if (file_system->type() != PP_FILESYSTEMTYPE_LOCALPERSISTENT && |
92 file_system->type() != PP_FILESYSTEMTYPE_LOCALTEMPORARY) | 92 file_system->type() != PP_FILESYSTEMTYPE_LOCALTEMPORARY) |
93 return 0; | 93 return 0; |
94 | 94 |
95 std::string validated_path(path); | 95 std::string validated_path(path); |
96 if (!IsValidLocalPath(validated_path)) | 96 if (!IsValidLocalPath(validated_path)) |
97 return 0; | 97 return 0; |
98 TrimTrailingSlash(&validated_path); | 98 TrimTrailingSlash(&validated_path); |
99 | 99 |
100 PPB_FileRef_Impl* file_ref = | 100 return (new PPB_FileRef_Impl(file_system->instance(), |
101 new PPB_FileRef_Impl(file_system->instance(), | 101 file_system, validated_path))->GetReference(); |
102 file_system, validated_path); | |
103 return file_ref->GetReference(); | |
104 } | 102 } |
105 | 103 |
106 PPB_FileRef_API* PPB_FileRef_Impl::AsPPB_FileRef_API() { | 104 PPB_FileRef_API* PPB_FileRef_Impl::AsPPB_FileRef_API() { |
107 return this; | 105 return this; |
108 } | 106 } |
109 | 107 |
110 PPB_FileRef_Impl* PPB_FileRef_Impl::AsPPB_FileRef_Impl() { | 108 PPB_FileRef_Impl* PPB_FileRef_Impl::AsPPB_FileRef_Impl() { |
111 return this; | 109 return this; |
112 } | 110 } |
113 | 111 |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
169 return parent_ref->GetReference(); | 167 return parent_ref->GetReference(); |
170 } | 168 } |
171 | 169 |
172 int32_t PPB_FileRef_Impl::MakeDirectory(PP_Bool make_ancestors, | 170 int32_t PPB_FileRef_Impl::MakeDirectory(PP_Bool make_ancestors, |
173 PP_CompletionCallback callback) { | 171 PP_CompletionCallback callback) { |
174 if (!IsValidNonExternalFileSystem()) | 172 if (!IsValidNonExternalFileSystem()) |
175 return PP_ERROR_NOACCESS; | 173 return PP_ERROR_NOACCESS; |
176 if (!instance()->delegate()->MakeDirectory( | 174 if (!instance()->delegate()->MakeDirectory( |
177 GetFileSystemURL(), PP_ToBool(make_ancestors), | 175 GetFileSystemURL(), PP_ToBool(make_ancestors), |
178 new FileCallbacks(instance()->module()->AsWeakPtr(), | 176 new FileCallbacks(instance()->module()->AsWeakPtr(), |
179 GetReferenceNoAddRef(), callback, | 177 pp_resource(), callback, NULL, NULL, NULL))) |
180 NULL, NULL, NULL))) | |
181 return PP_ERROR_FAILED; | 178 return PP_ERROR_FAILED; |
182 return PP_OK_COMPLETIONPENDING; | 179 return PP_OK_COMPLETIONPENDING; |
183 } | 180 } |
184 | 181 |
185 int32_t PPB_FileRef_Impl::Touch(PP_Time last_access_time, | 182 int32_t PPB_FileRef_Impl::Touch(PP_Time last_access_time, |
186 PP_Time last_modified_time, | 183 PP_Time last_modified_time, |
187 PP_CompletionCallback callback) { | 184 PP_CompletionCallback callback) { |
188 if (!IsValidNonExternalFileSystem()) | 185 if (!IsValidNonExternalFileSystem()) |
189 return PP_ERROR_NOACCESS; | 186 return PP_ERROR_NOACCESS; |
190 if (!instance()->delegate()->Touch( | 187 if (!instance()->delegate()->Touch( |
191 GetFileSystemURL(), | 188 GetFileSystemURL(), |
192 PPTimeToTime(last_access_time), | 189 PPTimeToTime(last_access_time), |
193 PPTimeToTime(last_modified_time), | 190 PPTimeToTime(last_modified_time), |
194 new FileCallbacks(instance()->module()->AsWeakPtr(), | 191 new FileCallbacks(instance()->module()->AsWeakPtr(), |
195 GetReferenceNoAddRef(), callback, | 192 pp_resource(), callback, NULL, NULL, NULL))) |
196 NULL, NULL, NULL))) | |
197 return PP_ERROR_FAILED; | 193 return PP_ERROR_FAILED; |
198 return PP_OK_COMPLETIONPENDING; | 194 return PP_OK_COMPLETIONPENDING; |
199 } | 195 } |
200 | 196 |
201 int32_t PPB_FileRef_Impl::Delete(PP_CompletionCallback callback) { | 197 int32_t PPB_FileRef_Impl::Delete(PP_CompletionCallback callback) { |
202 if (!IsValidNonExternalFileSystem()) | 198 if (!IsValidNonExternalFileSystem()) |
203 return PP_ERROR_NOACCESS; | 199 return PP_ERROR_NOACCESS; |
204 if (!instance()->delegate()->Delete( | 200 if (!instance()->delegate()->Delete( |
205 GetFileSystemURL(), | 201 GetFileSystemURL(), |
206 new FileCallbacks(instance()->module()->AsWeakPtr(), | 202 new FileCallbacks(instance()->module()->AsWeakPtr(), |
207 GetReferenceNoAddRef(), callback, | 203 pp_resource(), callback, NULL, NULL, NULL))) |
208 NULL, NULL, NULL))) | |
209 return PP_ERROR_FAILED; | 204 return PP_ERROR_FAILED; |
210 return PP_OK_COMPLETIONPENDING; | 205 return PP_OK_COMPLETIONPENDING; |
211 } | 206 } |
212 | 207 |
213 int32_t PPB_FileRef_Impl::Rename(PP_Resource new_pp_file_ref, | 208 int32_t PPB_FileRef_Impl::Rename(PP_Resource new_pp_file_ref, |
214 PP_CompletionCallback callback) { | 209 PP_CompletionCallback callback) { |
215 EnterResourceNoLock<PPB_FileRef_API> enter(new_pp_file_ref, true); | 210 EnterResourceNoLock<PPB_FileRef_API> enter(new_pp_file_ref, true); |
216 if (enter.failed()) | 211 if (enter.failed()) |
217 return PP_ERROR_BADRESOURCE; | 212 return PP_ERROR_BADRESOURCE; |
218 PPB_FileRef_Impl* new_file_ref = | 213 PPB_FileRef_Impl* new_file_ref = |
219 static_cast<PPB_FileRef_Impl*>(enter.object()); | 214 static_cast<PPB_FileRef_Impl*>(enter.object()); |
220 | 215 |
221 if (!IsValidNonExternalFileSystem() || | 216 if (!IsValidNonExternalFileSystem() || |
222 file_system_.get() != new_file_ref->file_system_.get()) | 217 file_system_.get() != new_file_ref->file_system_.get()) |
223 return PP_ERROR_NOACCESS; | 218 return PP_ERROR_NOACCESS; |
224 | 219 |
225 // TODO(viettrungluu): Also cancel when the new file ref is destroyed? | 220 // TODO(viettrungluu): Also cancel when the new file ref is destroyed? |
226 // http://crbug.com/67624 | 221 // http://crbug.com/67624 |
227 if (!instance()->delegate()->Rename( | 222 if (!instance()->delegate()->Rename( |
228 GetFileSystemURL(), new_file_ref->GetFileSystemURL(), | 223 GetFileSystemURL(), new_file_ref->GetFileSystemURL(), |
229 new FileCallbacks(instance()->module()->AsWeakPtr(), | 224 new FileCallbacks(instance()->module()->AsWeakPtr(), |
230 GetReferenceNoAddRef(), callback, | 225 pp_resource(), callback, NULL, NULL, NULL))) |
231 NULL, NULL, NULL))) | |
232 return PP_ERROR_FAILED; | 226 return PP_ERROR_FAILED; |
233 return PP_OK_COMPLETIONPENDING; | 227 return PP_OK_COMPLETIONPENDING; |
234 } | 228 } |
235 | 229 |
236 FilePath PPB_FileRef_Impl::GetSystemPath() const { | 230 FilePath PPB_FileRef_Impl::GetSystemPath() const { |
237 if (GetFileSystemType() != PP_FILESYSTEMTYPE_EXTERNAL) { | 231 if (GetFileSystemType() != PP_FILESYSTEMTYPE_EXTERNAL) { |
238 NOTREACHED(); | 232 NOTREACHED(); |
239 return FilePath(); | 233 return FilePath(); |
240 } | 234 } |
241 return system_path_; | 235 return system_path_; |
(...skipping 15 matching lines...) Expand all Loading... |
257 return GURL(file_system_->root_url().spec() + virtual_path_.substr(1)); | 251 return GURL(file_system_->root_url().spec() + virtual_path_.substr(1)); |
258 } | 252 } |
259 | 253 |
260 bool PPB_FileRef_Impl::IsValidNonExternalFileSystem() const { | 254 bool PPB_FileRef_Impl::IsValidNonExternalFileSystem() const { |
261 return file_system_ && file_system_->opened() && | 255 return file_system_ && file_system_->opened() && |
262 file_system_->type() != PP_FILESYSTEMTYPE_EXTERNAL; | 256 file_system_->type() != PP_FILESYSTEMTYPE_EXTERNAL; |
263 } | 257 } |
264 | 258 |
265 } // namespace ppapi | 259 } // namespace ppapi |
266 } // namespace webkit | 260 } // namespace webkit |
OLD | NEW |