| 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 "chrome/browser/media_galleries/fileapi/native_media_file_util.h" | 5 #include "chrome/browser/media_galleries/fileapi/native_media_file_util.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 return true; | 67 return true; |
| 68 #endif | 68 #endif |
| 69 return false; | 69 return false; |
| 70 } | 70 } |
| 71 | 71 |
| 72 // Returns true if the current thread is capable of doing IO. | 72 // Returns true if the current thread is capable of doing IO. |
| 73 bool IsOnTaskRunnerThread(fileapi::FileSystemOperationContext* context) { | 73 bool IsOnTaskRunnerThread(fileapi::FileSystemOperationContext* context) { |
| 74 return context->task_runner()->RunsTasksOnCurrentThread(); | 74 return context->task_runner()->RunsTasksOnCurrentThread(); |
| 75 } | 75 } |
| 76 | 76 |
| 77 base::PlatformFileError IsMediaHeader(const char* buf, size_t length) { | 77 base::File::Error IsMediaHeader(const char* buf, size_t length) { |
| 78 if (length == 0) | 78 if (length == 0) |
| 79 return base::PLATFORM_FILE_ERROR_SECURITY; | 79 return base::File::FILE_ERROR_SECURITY; |
| 80 | 80 |
| 81 std::string mime_type; | 81 std::string mime_type; |
| 82 if (!net::SniffMimeTypeFromLocalData(buf, length, &mime_type)) | 82 if (!net::SniffMimeTypeFromLocalData(buf, length, &mime_type)) |
| 83 return base::PLATFORM_FILE_ERROR_SECURITY; | 83 return base::File::FILE_ERROR_SECURITY; |
| 84 | 84 |
| 85 if (StartsWithASCII(mime_type, "image/", true) || | 85 if (StartsWithASCII(mime_type, "image/", true) || |
| 86 StartsWithASCII(mime_type, "audio/", true) || | 86 StartsWithASCII(mime_type, "audio/", true) || |
| 87 StartsWithASCII(mime_type, "video/", true) || | 87 StartsWithASCII(mime_type, "video/", true) || |
| 88 mime_type == "application/x-shockwave-flash") { | 88 mime_type == "application/x-shockwave-flash") { |
| 89 return base::PLATFORM_FILE_OK; | 89 return base::File::FILE_OK; |
| 90 } | 90 } |
| 91 return base::PLATFORM_FILE_ERROR_SECURITY; | 91 return base::File::FILE_ERROR_SECURITY; |
| 92 } | 92 } |
| 93 | 93 |
| 94 } // namespace | 94 } // namespace |
| 95 | 95 |
| 96 NativeMediaFileUtil::NativeMediaFileUtil(MediaPathFilter* media_path_filter) | 96 NativeMediaFileUtil::NativeMediaFileUtil(MediaPathFilter* media_path_filter) |
| 97 : media_path_filter_(media_path_filter), | 97 : media_path_filter_(media_path_filter), |
| 98 weak_factory_(this) { | 98 weak_factory_(this) { |
| 99 } | 99 } |
| 100 | 100 |
| 101 NativeMediaFileUtil::~NativeMediaFileUtil() { | 101 NativeMediaFileUtil::~NativeMediaFileUtil() { |
| 102 } | 102 } |
| 103 | 103 |
| 104 // static | 104 // static |
| 105 base::PlatformFileError NativeMediaFileUtil::IsMediaFile( | 105 base::File::Error NativeMediaFileUtil::IsMediaFile( |
| 106 const base::FilePath& path) { | 106 const base::FilePath& path) { |
| 107 base::PlatformFile file_handle; | 107 base::PlatformFile file_handle; |
| 108 const int flags = base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ; | 108 const int flags = base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ; |
| 109 base::PlatformFileError error = | 109 base::File::Error error = |
| 110 fileapi::NativeFileUtil::CreateOrOpen(path, flags, &file_handle, NULL); | 110 fileapi::NativeFileUtil::CreateOrOpen(path, flags, &file_handle, NULL); |
| 111 if (error != base::PLATFORM_FILE_OK) | 111 if (error != base::File::FILE_OK) |
| 112 return error; | 112 return error; |
| 113 | 113 |
| 114 base::ScopedPlatformFileCloser scoped_platform_file(&file_handle); | 114 base::ScopedPlatformFileCloser scoped_platform_file(&file_handle); |
| 115 char buffer[net::kMaxBytesToSniff]; | 115 char buffer[net::kMaxBytesToSniff]; |
| 116 | 116 |
| 117 // Read as much as net::SniffMimeTypeFromLocalData() will bother looking at. | 117 // Read as much as net::SniffMimeTypeFromLocalData() will bother looking at. |
| 118 int64 len = | 118 int64 len = |
| 119 base::ReadPlatformFile(file_handle, 0, buffer, net::kMaxBytesToSniff); | 119 base::ReadPlatformFile(file_handle, 0, buffer, net::kMaxBytesToSniff); |
| 120 if (len < 0) | 120 if (len < 0) |
| 121 return base::PLATFORM_FILE_ERROR_FAILED; | 121 return base::File::FILE_ERROR_FAILED; |
| 122 | 122 |
| 123 return IsMediaHeader(buffer, len); | 123 return IsMediaHeader(buffer, len); |
| 124 } | 124 } |
| 125 | 125 |
| 126 // static | 126 // static |
| 127 base::PlatformFileError NativeMediaFileUtil::BufferIsMediaHeader( | 127 base::File::Error NativeMediaFileUtil::BufferIsMediaHeader( |
| 128 net::IOBuffer* buf, size_t length) { | 128 net::IOBuffer* buf, size_t length) { |
| 129 return IsMediaHeader(buf->data(), length); | 129 return IsMediaHeader(buf->data(), length); |
| 130 } | 130 } |
| 131 | 131 |
| 132 void NativeMediaFileUtil::CreateOrOpen( | 132 void NativeMediaFileUtil::CreateOrOpen( |
| 133 scoped_ptr<fileapi::FileSystemOperationContext> context, | 133 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 134 const fileapi::FileSystemURL& url, | 134 const fileapi::FileSystemURL& url, |
| 135 int file_flags, | 135 int file_flags, |
| 136 const CreateOrOpenCallback& callback) { | 136 const CreateOrOpenCallback& callback) { |
| 137 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); | 137 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
| 138 // Only called by NaCl, which should not have access to media file systems. | 138 // Only called by NaCl, which should not have access to media file systems. |
| 139 base::PlatformFile invalid_file(base::kInvalidPlatformFileValue); | 139 base::PlatformFile invalid_file(base::kInvalidPlatformFileValue); |
| 140 callback.Run(base::PLATFORM_FILE_ERROR_SECURITY, | 140 callback.Run(base::File::FILE_ERROR_SECURITY, |
| 141 base::PassPlatformFile(&invalid_file), | 141 base::PassPlatformFile(&invalid_file), |
| 142 base::Closure()); | 142 base::Closure()); |
| 143 } | 143 } |
| 144 | 144 |
| 145 void NativeMediaFileUtil::EnsureFileExists( | 145 void NativeMediaFileUtil::EnsureFileExists( |
| 146 scoped_ptr<fileapi::FileSystemOperationContext> context, | 146 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 147 const fileapi::FileSystemURL& url, | 147 const fileapi::FileSystemURL& url, |
| 148 const EnsureFileExistsCallback& callback) { | 148 const EnsureFileExistsCallback& callback) { |
| 149 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); | 149 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
| 150 callback.Run(base::PLATFORM_FILE_ERROR_SECURITY, false); | 150 callback.Run(base::File::FILE_ERROR_SECURITY, false); |
| 151 } | 151 } |
| 152 | 152 |
| 153 void NativeMediaFileUtil::CreateDirectory( | 153 void NativeMediaFileUtil::CreateDirectory( |
| 154 scoped_ptr<fileapi::FileSystemOperationContext> context, | 154 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 155 const fileapi::FileSystemURL& url, | 155 const fileapi::FileSystemURL& url, |
| 156 bool exclusive, | 156 bool exclusive, |
| 157 bool recursive, | 157 bool recursive, |
| 158 const StatusCallback& callback) { | 158 const StatusCallback& callback) { |
| 159 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); | 159 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
| 160 fileapi::FileSystemOperationContext* context_ptr = context.get(); | 160 fileapi::FileSystemOperationContext* context_ptr = context.get(); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 DCHECK(success); | 194 DCHECK(success); |
| 195 } | 195 } |
| 196 | 196 |
| 197 void NativeMediaFileUtil::Touch( | 197 void NativeMediaFileUtil::Touch( |
| 198 scoped_ptr<fileapi::FileSystemOperationContext> context, | 198 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 199 const fileapi::FileSystemURL& url, | 199 const fileapi::FileSystemURL& url, |
| 200 const base::Time& last_access_time, | 200 const base::Time& last_access_time, |
| 201 const base::Time& last_modified_time, | 201 const base::Time& last_modified_time, |
| 202 const StatusCallback& callback) { | 202 const StatusCallback& callback) { |
| 203 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); | 203 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
| 204 callback.Run(base::PLATFORM_FILE_ERROR_SECURITY); | 204 callback.Run(base::File::FILE_ERROR_SECURITY); |
| 205 } | 205 } |
| 206 | 206 |
| 207 void NativeMediaFileUtil::Truncate( | 207 void NativeMediaFileUtil::Truncate( |
| 208 scoped_ptr<fileapi::FileSystemOperationContext> context, | 208 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 209 const fileapi::FileSystemURL& url, | 209 const fileapi::FileSystemURL& url, |
| 210 int64 length, | 210 int64 length, |
| 211 const StatusCallback& callback) { | 211 const StatusCallback& callback) { |
| 212 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); | 212 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
| 213 callback.Run(base::PLATFORM_FILE_ERROR_SECURITY); | 213 callback.Run(base::File::FILE_ERROR_SECURITY); |
| 214 } | 214 } |
| 215 | 215 |
| 216 void NativeMediaFileUtil::CopyFileLocal( | 216 void NativeMediaFileUtil::CopyFileLocal( |
| 217 scoped_ptr<fileapi::FileSystemOperationContext> context, | 217 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 218 const fileapi::FileSystemURL& src_url, | 218 const fileapi::FileSystemURL& src_url, |
| 219 const fileapi::FileSystemURL& dest_url, | 219 const fileapi::FileSystemURL& dest_url, |
| 220 CopyOrMoveOption option, | 220 CopyOrMoveOption option, |
| 221 const CopyFileProgressCallback& progress_callback, | 221 const CopyFileProgressCallback& progress_callback, |
| 222 const StatusCallback& callback) { | 222 const StatusCallback& callback) { |
| 223 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); | 223 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 288 weak_factory_.GetWeakPtr(), base::Passed(&context), | 288 weak_factory_.GetWeakPtr(), base::Passed(&context), |
| 289 url, callback)); | 289 url, callback)); |
| 290 DCHECK(success); | 290 DCHECK(success); |
| 291 } | 291 } |
| 292 | 292 |
| 293 void NativeMediaFileUtil::DeleteRecursively( | 293 void NativeMediaFileUtil::DeleteRecursively( |
| 294 scoped_ptr<fileapi::FileSystemOperationContext> context, | 294 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 295 const fileapi::FileSystemURL& url, | 295 const fileapi::FileSystemURL& url, |
| 296 const StatusCallback& callback) { | 296 const StatusCallback& callback) { |
| 297 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); | 297 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
| 298 callback.Run(base::PLATFORM_FILE_ERROR_INVALID_OPERATION); | 298 callback.Run(base::File::FILE_ERROR_INVALID_OPERATION); |
| 299 } | 299 } |
| 300 | 300 |
| 301 void NativeMediaFileUtil::CreateSnapshotFile( | 301 void NativeMediaFileUtil::CreateSnapshotFile( |
| 302 scoped_ptr<fileapi::FileSystemOperationContext> context, | 302 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 303 const fileapi::FileSystemURL& url, | 303 const fileapi::FileSystemURL& url, |
| 304 const CreateSnapshotFileCallback& callback) { | 304 const CreateSnapshotFileCallback& callback) { |
| 305 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); | 305 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::IO)); |
| 306 fileapi::FileSystemOperationContext* context_ptr = context.get(); | 306 fileapi::FileSystemOperationContext* context_ptr = context.get(); |
| 307 const bool success = context_ptr->task_runner()->PostTask( | 307 const bool success = context_ptr->task_runner()->PostTask( |
| 308 FROM_HERE, | 308 FROM_HERE, |
| 309 base::Bind(&NativeMediaFileUtil::CreateSnapshotFileOnTaskRunnerThread, | 309 base::Bind(&NativeMediaFileUtil::CreateSnapshotFileOnTaskRunnerThread, |
| 310 weak_factory_.GetWeakPtr(), base::Passed(&context), | 310 weak_factory_.GetWeakPtr(), base::Passed(&context), |
| 311 url, callback)); | 311 url, callback)); |
| 312 DCHECK(success); | 312 DCHECK(success); |
| 313 } | 313 } |
| 314 | 314 |
| 315 void NativeMediaFileUtil::CreateDirectoryOnTaskRunnerThread( | 315 void NativeMediaFileUtil::CreateDirectoryOnTaskRunnerThread( |
| 316 scoped_ptr<fileapi::FileSystemOperationContext> context, | 316 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 317 const fileapi::FileSystemURL& url, | 317 const fileapi::FileSystemURL& url, |
| 318 bool exclusive, | 318 bool exclusive, |
| 319 bool recursive, | 319 bool recursive, |
| 320 const StatusCallback& callback) { | 320 const StatusCallback& callback) { |
| 321 DCHECK(IsOnTaskRunnerThread(context.get())); | 321 DCHECK(IsOnTaskRunnerThread(context.get())); |
| 322 base::PlatformFileError error = | 322 base::File::Error error = |
| 323 CreateDirectorySync(context.get(), url, exclusive, recursive); | 323 CreateDirectorySync(context.get(), url, exclusive, recursive); |
| 324 content::BrowserThread::PostTask( | 324 content::BrowserThread::PostTask( |
| 325 content::BrowserThread::IO, | 325 content::BrowserThread::IO, |
| 326 FROM_HERE, | 326 FROM_HERE, |
| 327 base::Bind(callback, error)); | 327 base::Bind(callback, error)); |
| 328 } | 328 } |
| 329 | 329 |
| 330 void NativeMediaFileUtil::GetFileInfoOnTaskRunnerThread( | 330 void NativeMediaFileUtil::GetFileInfoOnTaskRunnerThread( |
| 331 scoped_ptr<fileapi::FileSystemOperationContext> context, | 331 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 332 const fileapi::FileSystemURL& url, | 332 const fileapi::FileSystemURL& url, |
| 333 const GetFileInfoCallback& callback) { | 333 const GetFileInfoCallback& callback) { |
| 334 DCHECK(IsOnTaskRunnerThread(context.get())); | 334 DCHECK(IsOnTaskRunnerThread(context.get())); |
| 335 base::PlatformFileInfo file_info; | 335 base::File::Info file_info; |
| 336 base::PlatformFileError error = | 336 base::File::Error error = |
| 337 GetFileInfoSync(context.get(), url, &file_info, NULL); | 337 GetFileInfoSync(context.get(), url, &file_info, NULL); |
| 338 content::BrowserThread::PostTask( | 338 content::BrowserThread::PostTask( |
| 339 content::BrowserThread::IO, | 339 content::BrowserThread::IO, |
| 340 FROM_HERE, | 340 FROM_HERE, |
| 341 base::Bind(callback, error, file_info)); | 341 base::Bind(callback, error, file_info)); |
| 342 } | 342 } |
| 343 | 343 |
| 344 void NativeMediaFileUtil::ReadDirectoryOnTaskRunnerThread( | 344 void NativeMediaFileUtil::ReadDirectoryOnTaskRunnerThread( |
| 345 scoped_ptr<fileapi::FileSystemOperationContext> context, | 345 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 346 const fileapi::FileSystemURL& url, | 346 const fileapi::FileSystemURL& url, |
| 347 const ReadDirectoryCallback& callback) { | 347 const ReadDirectoryCallback& callback) { |
| 348 DCHECK(IsOnTaskRunnerThread(context.get())); | 348 DCHECK(IsOnTaskRunnerThread(context.get())); |
| 349 EntryList entry_list; | 349 EntryList entry_list; |
| 350 base::PlatformFileError error = | 350 base::File::Error error = |
| 351 ReadDirectorySync(context.get(), url, &entry_list); | 351 ReadDirectorySync(context.get(), url, &entry_list); |
| 352 content::BrowserThread::PostTask( | 352 content::BrowserThread::PostTask( |
| 353 content::BrowserThread::IO, | 353 content::BrowserThread::IO, |
| 354 FROM_HERE, | 354 FROM_HERE, |
| 355 base::Bind(callback, error, entry_list, false /* has_more */)); | 355 base::Bind(callback, error, entry_list, false /* has_more */)); |
| 356 } | 356 } |
| 357 | 357 |
| 358 void NativeMediaFileUtil::CopyOrMoveFileLocalOnTaskRunnerThread( | 358 void NativeMediaFileUtil::CopyOrMoveFileLocalOnTaskRunnerThread( |
| 359 scoped_ptr<fileapi::FileSystemOperationContext> context, | 359 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 360 const fileapi::FileSystemURL& src_url, | 360 const fileapi::FileSystemURL& src_url, |
| 361 const fileapi::FileSystemURL& dest_url, | 361 const fileapi::FileSystemURL& dest_url, |
| 362 CopyOrMoveOption option, | 362 CopyOrMoveOption option, |
| 363 bool copy, | 363 bool copy, |
| 364 const StatusCallback& callback) { | 364 const StatusCallback& callback) { |
| 365 DCHECK(IsOnTaskRunnerThread(context.get())); | 365 DCHECK(IsOnTaskRunnerThread(context.get())); |
| 366 base::PlatformFileError error = | 366 base::File::Error error = |
| 367 CopyOrMoveFileSync(context.get(), src_url, dest_url, option, copy); | 367 CopyOrMoveFileSync(context.get(), src_url, dest_url, option, copy); |
| 368 content::BrowserThread::PostTask( | 368 content::BrowserThread::PostTask( |
| 369 content::BrowserThread::IO, | 369 content::BrowserThread::IO, |
| 370 FROM_HERE, | 370 FROM_HERE, |
| 371 base::Bind(callback, error)); | 371 base::Bind(callback, error)); |
| 372 } | 372 } |
| 373 | 373 |
| 374 void NativeMediaFileUtil::CopyInForeignFileOnTaskRunnerThread( | 374 void NativeMediaFileUtil::CopyInForeignFileOnTaskRunnerThread( |
| 375 scoped_ptr<fileapi::FileSystemOperationContext> context, | 375 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 376 const base::FilePath& src_file_path, | 376 const base::FilePath& src_file_path, |
| 377 const fileapi::FileSystemURL& dest_url, | 377 const fileapi::FileSystemURL& dest_url, |
| 378 const StatusCallback& callback) { | 378 const StatusCallback& callback) { |
| 379 DCHECK(IsOnTaskRunnerThread(context.get())); | 379 DCHECK(IsOnTaskRunnerThread(context.get())); |
| 380 base::PlatformFileError error = | 380 base::File::Error error = |
| 381 CopyInForeignFileSync(context.get(), src_file_path, dest_url); | 381 CopyInForeignFileSync(context.get(), src_file_path, dest_url); |
| 382 content::BrowserThread::PostTask( | 382 content::BrowserThread::PostTask( |
| 383 content::BrowserThread::IO, | 383 content::BrowserThread::IO, |
| 384 FROM_HERE, | 384 FROM_HERE, |
| 385 base::Bind(callback, error)); | 385 base::Bind(callback, error)); |
| 386 } | 386 } |
| 387 | 387 |
| 388 void NativeMediaFileUtil::DeleteFileOnTaskRunnerThread( | 388 void NativeMediaFileUtil::DeleteFileOnTaskRunnerThread( |
| 389 scoped_ptr<fileapi::FileSystemOperationContext> context, | 389 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 390 const fileapi::FileSystemURL& url, | 390 const fileapi::FileSystemURL& url, |
| 391 const StatusCallback& callback) { | 391 const StatusCallback& callback) { |
| 392 DCHECK(IsOnTaskRunnerThread(context.get())); | 392 DCHECK(IsOnTaskRunnerThread(context.get())); |
| 393 base::PlatformFileError error = DeleteFileSync(context.get(), url); | 393 base::File::Error error = DeleteFileSync(context.get(), url); |
| 394 content::BrowserThread::PostTask( | 394 content::BrowserThread::PostTask( |
| 395 content::BrowserThread::IO, | 395 content::BrowserThread::IO, |
| 396 FROM_HERE, | 396 FROM_HERE, |
| 397 base::Bind(callback, error)); | 397 base::Bind(callback, error)); |
| 398 } | 398 } |
| 399 | 399 |
| 400 void NativeMediaFileUtil::DeleteDirectoryOnTaskRunnerThread( | 400 void NativeMediaFileUtil::DeleteDirectoryOnTaskRunnerThread( |
| 401 scoped_ptr<fileapi::FileSystemOperationContext> context, | 401 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 402 const fileapi::FileSystemURL& url, | 402 const fileapi::FileSystemURL& url, |
| 403 const StatusCallback& callback) { | 403 const StatusCallback& callback) { |
| 404 DCHECK(IsOnTaskRunnerThread(context.get())); | 404 DCHECK(IsOnTaskRunnerThread(context.get())); |
| 405 base::PlatformFileError error = DeleteDirectorySync(context.get(), url); | 405 base::File::Error error = DeleteDirectorySync(context.get(), url); |
| 406 content::BrowserThread::PostTask( | 406 content::BrowserThread::PostTask( |
| 407 content::BrowserThread::IO, | 407 content::BrowserThread::IO, |
| 408 FROM_HERE, | 408 FROM_HERE, |
| 409 base::Bind(callback, error)); | 409 base::Bind(callback, error)); |
| 410 } | 410 } |
| 411 | 411 |
| 412 void NativeMediaFileUtil::CreateSnapshotFileOnTaskRunnerThread( | 412 void NativeMediaFileUtil::CreateSnapshotFileOnTaskRunnerThread( |
| 413 scoped_ptr<fileapi::FileSystemOperationContext> context, | 413 scoped_ptr<fileapi::FileSystemOperationContext> context, |
| 414 const fileapi::FileSystemURL& url, | 414 const fileapi::FileSystemURL& url, |
| 415 const CreateSnapshotFileCallback& callback) { | 415 const CreateSnapshotFileCallback& callback) { |
| 416 DCHECK(IsOnTaskRunnerThread(context.get())); | 416 DCHECK(IsOnTaskRunnerThread(context.get())); |
| 417 base::PlatformFileInfo file_info; | 417 base::File::Info file_info; |
| 418 base::FilePath platform_path; | 418 base::FilePath platform_path; |
| 419 scoped_refptr<webkit_blob::ShareableFileReference> file_ref; | 419 scoped_refptr<webkit_blob::ShareableFileReference> file_ref; |
| 420 base::PlatformFileError error = | 420 base::File::Error error = |
| 421 CreateSnapshotFileSync(context.get(), url, &file_info, &platform_path, | 421 CreateSnapshotFileSync(context.get(), url, &file_info, &platform_path, |
| 422 &file_ref); | 422 &file_ref); |
| 423 content::BrowserThread::PostTask( | 423 content::BrowserThread::PostTask( |
| 424 content::BrowserThread::IO, | 424 content::BrowserThread::IO, |
| 425 FROM_HERE, | 425 FROM_HERE, |
| 426 base::Bind(callback, error, file_info, platform_path, file_ref)); | 426 base::Bind(callback, error, file_info, platform_path, file_ref)); |
| 427 } | 427 } |
| 428 | 428 |
| 429 base::PlatformFileError NativeMediaFileUtil::CreateDirectorySync( | 429 base::File::Error NativeMediaFileUtil::CreateDirectorySync( |
| 430 fileapi::FileSystemOperationContext* context, | 430 fileapi::FileSystemOperationContext* context, |
| 431 const fileapi::FileSystemURL& url, | 431 const fileapi::FileSystemURL& url, |
| 432 bool exclusive, | 432 bool exclusive, |
| 433 bool recursive) { | 433 bool recursive) { |
| 434 base::FilePath file_path; | 434 base::FilePath file_path; |
| 435 base::PlatformFileError error = GetLocalFilePath(context, url, &file_path); | 435 base::File::Error error = GetLocalFilePath(context, url, &file_path); |
| 436 if (error != base::PLATFORM_FILE_OK) | 436 if (error != base::File::FILE_OK) |
| 437 return error; | 437 return error; |
| 438 return fileapi::NativeFileUtil::CreateDirectory(file_path, exclusive, | 438 return fileapi::NativeFileUtil::CreateDirectory(file_path, exclusive, |
| 439 recursive); | 439 recursive); |
| 440 } | 440 } |
| 441 | 441 |
| 442 base::PlatformFileError NativeMediaFileUtil::CopyOrMoveFileSync( | 442 base::File::Error NativeMediaFileUtil::CopyOrMoveFileSync( |
| 443 fileapi::FileSystemOperationContext* context, | 443 fileapi::FileSystemOperationContext* context, |
| 444 const fileapi::FileSystemURL& src_url, | 444 const fileapi::FileSystemURL& src_url, |
| 445 const fileapi::FileSystemURL& dest_url, | 445 const fileapi::FileSystemURL& dest_url, |
| 446 CopyOrMoveOption option, | 446 CopyOrMoveOption option, |
| 447 bool copy) { | 447 bool copy) { |
| 448 DCHECK(IsOnTaskRunnerThread(context)); | 448 DCHECK(IsOnTaskRunnerThread(context)); |
| 449 base::FilePath src_file_path; | 449 base::FilePath src_file_path; |
| 450 base::PlatformFileError error = | 450 base::File::Error error = |
| 451 GetFilteredLocalFilePathForExistingFileOrDirectory( | 451 GetFilteredLocalFilePathForExistingFileOrDirectory( |
| 452 context, src_url, | 452 context, src_url, |
| 453 base::PLATFORM_FILE_ERROR_NOT_FOUND, | 453 base::File::FILE_ERROR_NOT_FOUND, |
| 454 &src_file_path); | 454 &src_file_path); |
| 455 if (error != base::PLATFORM_FILE_OK) | 455 if (error != base::File::FILE_OK) |
| 456 return error; | 456 return error; |
| 457 if (fileapi::NativeFileUtil::DirectoryExists(src_file_path)) | 457 if (fileapi::NativeFileUtil::DirectoryExists(src_file_path)) |
| 458 return base::PLATFORM_FILE_ERROR_NOT_A_FILE; | 458 return base::File::FILE_ERROR_NOT_A_FILE; |
| 459 | 459 |
| 460 base::FilePath dest_file_path; | 460 base::FilePath dest_file_path; |
| 461 error = GetLocalFilePath(context, dest_url, &dest_file_path); | 461 error = GetLocalFilePath(context, dest_url, &dest_file_path); |
| 462 if (error != base::PLATFORM_FILE_OK) | 462 if (error != base::File::FILE_OK) |
| 463 return error; | 463 return error; |
| 464 base::PlatformFileInfo file_info; | 464 base::File::Info file_info; |
| 465 error = fileapi::NativeFileUtil::GetFileInfo(dest_file_path, &file_info); | 465 error = fileapi::NativeFileUtil::GetFileInfo(dest_file_path, &file_info); |
| 466 if (error != base::PLATFORM_FILE_OK && | 466 if (error != base::File::FILE_OK && |
| 467 error != base::PLATFORM_FILE_ERROR_NOT_FOUND) | 467 error != base::File::FILE_ERROR_NOT_FOUND) { |
| 468 return error; | 468 return error; |
| 469 if (error == base::PLATFORM_FILE_OK && file_info.is_directory) | 469 } |
| 470 return base::PLATFORM_FILE_ERROR_INVALID_OPERATION; | 470 if (error == base::File::FILE_OK && file_info.is_directory) |
| 471 return base::File::FILE_ERROR_INVALID_OPERATION; |
| 471 if (!media_path_filter_->Match(dest_file_path)) | 472 if (!media_path_filter_->Match(dest_file_path)) |
| 472 return base::PLATFORM_FILE_ERROR_SECURITY; | 473 return base::File::FILE_ERROR_SECURITY; |
| 473 | 474 |
| 474 return fileapi::NativeFileUtil::CopyOrMoveFile( | 475 return fileapi::NativeFileUtil::CopyOrMoveFile( |
| 475 src_file_path, dest_file_path, option, | 476 src_file_path, dest_file_path, option, |
| 476 fileapi::NativeFileUtil::CopyOrMoveModeForDestination(dest_url, copy)); | 477 fileapi::NativeFileUtil::CopyOrMoveModeForDestination(dest_url, copy)); |
| 477 } | 478 } |
| 478 | 479 |
| 479 base::PlatformFileError NativeMediaFileUtil::CopyInForeignFileSync( | 480 base::File::Error NativeMediaFileUtil::CopyInForeignFileSync( |
| 480 fileapi::FileSystemOperationContext* context, | 481 fileapi::FileSystemOperationContext* context, |
| 481 const base::FilePath& src_file_path, | 482 const base::FilePath& src_file_path, |
| 482 const fileapi::FileSystemURL& dest_url) { | 483 const fileapi::FileSystemURL& dest_url) { |
| 483 DCHECK(IsOnTaskRunnerThread(context)); | 484 DCHECK(IsOnTaskRunnerThread(context)); |
| 484 if (src_file_path.empty()) | 485 if (src_file_path.empty()) |
| 485 return base::PLATFORM_FILE_ERROR_INVALID_OPERATION; | 486 return base::File::FILE_ERROR_INVALID_OPERATION; |
| 486 | 487 |
| 487 base::FilePath dest_file_path; | 488 base::FilePath dest_file_path; |
| 488 base::PlatformFileError error = | 489 base::File::Error error = |
| 489 GetFilteredLocalFilePath(context, dest_url, &dest_file_path); | 490 GetFilteredLocalFilePath(context, dest_url, &dest_file_path); |
| 490 if (error != base::PLATFORM_FILE_OK) | 491 if (error != base::File::FILE_OK) |
| 491 return error; | 492 return error; |
| 492 return fileapi::NativeFileUtil::CopyOrMoveFile( | 493 return fileapi::NativeFileUtil::CopyOrMoveFile( |
| 493 src_file_path, dest_file_path, | 494 src_file_path, dest_file_path, |
| 494 fileapi::FileSystemOperation::OPTION_NONE, | 495 fileapi::FileSystemOperation::OPTION_NONE, |
| 495 fileapi::NativeFileUtil::CopyOrMoveModeForDestination(dest_url, | 496 fileapi::NativeFileUtil::CopyOrMoveModeForDestination(dest_url, |
| 496 true /* copy */)); | 497 true /* copy */)); |
| 497 } | 498 } |
| 498 | 499 |
| 499 base::PlatformFileError NativeMediaFileUtil::GetFileInfoSync( | 500 base::File::Error NativeMediaFileUtil::GetFileInfoSync( |
| 500 fileapi::FileSystemOperationContext* context, | 501 fileapi::FileSystemOperationContext* context, |
| 501 const fileapi::FileSystemURL& url, | 502 const fileapi::FileSystemURL& url, |
| 502 base::PlatformFileInfo* file_info, | 503 base::File::Info* file_info, |
| 503 base::FilePath* platform_path) { | 504 base::FilePath* platform_path) { |
| 504 DCHECK(context); | 505 DCHECK(context); |
| 505 DCHECK(IsOnTaskRunnerThread(context)); | 506 DCHECK(IsOnTaskRunnerThread(context)); |
| 506 DCHECK(file_info); | 507 DCHECK(file_info); |
| 507 | 508 |
| 508 base::FilePath file_path; | 509 base::FilePath file_path; |
| 509 base::PlatformFileError error = GetLocalFilePath(context, url, &file_path); | 510 base::File::Error error = GetLocalFilePath(context, url, &file_path); |
| 510 if (error != base::PLATFORM_FILE_OK) | 511 if (error != base::File::FILE_OK) |
| 511 return error; | 512 return error; |
| 512 if (base::IsLink(file_path)) | 513 if (base::IsLink(file_path)) |
| 513 return base::PLATFORM_FILE_ERROR_NOT_FOUND; | 514 return base::File::FILE_ERROR_NOT_FOUND; |
| 514 error = fileapi::NativeFileUtil::GetFileInfo(file_path, file_info); | 515 error = fileapi::NativeFileUtil::GetFileInfo(file_path, file_info); |
| 515 if (error != base::PLATFORM_FILE_OK) | 516 if (error != base::File::FILE_OK) |
| 516 return error; | 517 return error; |
| 517 | 518 |
| 518 if (platform_path) | 519 if (platform_path) |
| 519 *platform_path = file_path; | 520 *platform_path = file_path; |
| 520 if (file_info->is_directory || | 521 if (file_info->is_directory || |
| 521 media_path_filter_->Match(file_path)) { | 522 media_path_filter_->Match(file_path)) { |
| 522 return base::PLATFORM_FILE_OK; | 523 return base::File::FILE_OK; |
| 523 } | 524 } |
| 524 return base::PLATFORM_FILE_ERROR_NOT_FOUND; | 525 return base::File::FILE_ERROR_NOT_FOUND; |
| 525 } | 526 } |
| 526 | 527 |
| 527 base::PlatformFileError NativeMediaFileUtil::GetLocalFilePath( | 528 base::File::Error NativeMediaFileUtil::GetLocalFilePath( |
| 528 fileapi::FileSystemOperationContext* context, | 529 fileapi::FileSystemOperationContext* context, |
| 529 const fileapi::FileSystemURL& url, | 530 const fileapi::FileSystemURL& url, |
| 530 base::FilePath* local_file_path) { | 531 base::FilePath* local_file_path) { |
| 531 DCHECK(local_file_path); | 532 DCHECK(local_file_path); |
| 532 DCHECK(url.is_valid()); | 533 DCHECK(url.is_valid()); |
| 533 if (url.path().empty()) { | 534 if (url.path().empty()) { |
| 534 // Root direcory case, which should not be accessed. | 535 // Root direcory case, which should not be accessed. |
| 535 return base::PLATFORM_FILE_ERROR_ACCESS_DENIED; | 536 return base::File::FILE_ERROR_ACCESS_DENIED; |
| 536 } | 537 } |
| 537 *local_file_path = url.path(); | 538 *local_file_path = url.path(); |
| 538 return base::PLATFORM_FILE_OK; | 539 return base::File::FILE_OK; |
| 539 } | 540 } |
| 540 | 541 |
| 541 base::PlatformFileError NativeMediaFileUtil::ReadDirectorySync( | 542 base::File::Error NativeMediaFileUtil::ReadDirectorySync( |
| 542 fileapi::FileSystemOperationContext* context, | 543 fileapi::FileSystemOperationContext* context, |
| 543 const fileapi::FileSystemURL& url, | 544 const fileapi::FileSystemURL& url, |
| 544 EntryList* file_list) { | 545 EntryList* file_list) { |
| 545 DCHECK(IsOnTaskRunnerThread(context)); | 546 DCHECK(IsOnTaskRunnerThread(context)); |
| 546 DCHECK(file_list); | 547 DCHECK(file_list); |
| 547 DCHECK(file_list->empty()); | 548 DCHECK(file_list->empty()); |
| 548 base::PlatformFileInfo file_info; | 549 base::File::Info file_info; |
| 549 base::FilePath dir_path; | 550 base::FilePath dir_path; |
| 550 base::PlatformFileError error = | 551 base::File::Error error = |
| 551 GetFileInfoSync(context, url, &file_info, &dir_path); | 552 GetFileInfoSync(context, url, &file_info, &dir_path); |
| 552 | 553 |
| 553 if (error != base::PLATFORM_FILE_OK) | 554 if (error != base::File::FILE_OK) |
| 554 return error; | 555 return error; |
| 555 | 556 |
| 556 if (!file_info.is_directory) | 557 if (!file_info.is_directory) |
| 557 return base::PLATFORM_FILE_ERROR_NOT_A_DIRECTORY; | 558 return base::File::FILE_ERROR_NOT_A_DIRECTORY; |
| 558 | 559 |
| 559 base::FileEnumerator file_enum( | 560 base::FileEnumerator file_enum( |
| 560 dir_path, | 561 dir_path, |
| 561 false /* recursive */, | 562 false /* recursive */, |
| 562 base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES); | 563 base::FileEnumerator::FILES | base::FileEnumerator::DIRECTORIES); |
| 563 for (base::FilePath enum_path = file_enum.Next(); | 564 for (base::FilePath enum_path = file_enum.Next(); |
| 564 !enum_path.empty(); | 565 !enum_path.empty(); |
| 565 enum_path = file_enum.Next()) { | 566 enum_path = file_enum.Next()) { |
| 566 // Skip symlinks. | 567 // Skip symlinks. |
| 567 if (base::IsLink(enum_path)) | 568 if (base::IsLink(enum_path)) |
| 568 continue; | 569 continue; |
| 569 | 570 |
| 570 base::FileEnumerator::FileInfo info = file_enum.GetInfo(); | 571 base::FileEnumerator::FileInfo info = file_enum.GetInfo(); |
| 571 | 572 |
| 572 // NativeMediaFileUtil skip criteria. | 573 // NativeMediaFileUtil skip criteria. |
| 573 if (ShouldSkip(enum_path)) | 574 if (ShouldSkip(enum_path)) |
| 574 continue; | 575 continue; |
| 575 if (!info.IsDirectory() && !media_path_filter_->Match(enum_path)) | 576 if (!info.IsDirectory() && !media_path_filter_->Match(enum_path)) |
| 576 continue; | 577 continue; |
| 577 | 578 |
| 578 fileapi::DirectoryEntry entry; | 579 fileapi::DirectoryEntry entry; |
| 579 entry.is_directory = info.IsDirectory(); | 580 entry.is_directory = info.IsDirectory(); |
| 580 entry.name = enum_path.BaseName().value(); | 581 entry.name = enum_path.BaseName().value(); |
| 581 entry.size = info.GetSize(); | 582 entry.size = info.GetSize(); |
| 582 entry.last_modified_time = info.GetLastModifiedTime(); | 583 entry.last_modified_time = info.GetLastModifiedTime(); |
| 583 | 584 |
| 584 file_list->push_back(entry); | 585 file_list->push_back(entry); |
| 585 } | 586 } |
| 586 | 587 |
| 587 return base::PLATFORM_FILE_OK; | 588 return base::File::FILE_OK; |
| 588 } | 589 } |
| 589 | 590 |
| 590 base::PlatformFileError NativeMediaFileUtil::DeleteFileSync( | 591 base::File::Error NativeMediaFileUtil::DeleteFileSync( |
| 591 fileapi::FileSystemOperationContext* context, | 592 fileapi::FileSystemOperationContext* context, |
| 592 const fileapi::FileSystemURL& url) { | 593 const fileapi::FileSystemURL& url) { |
| 593 DCHECK(IsOnTaskRunnerThread(context)); | 594 DCHECK(IsOnTaskRunnerThread(context)); |
| 594 base::PlatformFileInfo file_info; | 595 base::File::Info file_info; |
| 595 base::FilePath file_path; | 596 base::FilePath file_path; |
| 596 base::PlatformFileError error = | 597 base::File::Error error = |
| 597 GetFileInfoSync(context, url, &file_info, &file_path); | 598 GetFileInfoSync(context, url, &file_info, &file_path); |
| 598 if (error != base::PLATFORM_FILE_OK) | 599 if (error != base::File::FILE_OK) |
| 599 return error; | 600 return error; |
| 600 if (file_info.is_directory) | 601 if (file_info.is_directory) |
| 601 return base::PLATFORM_FILE_ERROR_NOT_A_FILE; | 602 return base::File::FILE_ERROR_NOT_A_FILE; |
| 602 return fileapi::NativeFileUtil::DeleteFile(file_path); | 603 return fileapi::NativeFileUtil::DeleteFile(file_path); |
| 603 } | 604 } |
| 604 | 605 |
| 605 base::PlatformFileError NativeMediaFileUtil::DeleteDirectorySync( | 606 base::File::Error NativeMediaFileUtil::DeleteDirectorySync( |
| 606 fileapi::FileSystemOperationContext* context, | 607 fileapi::FileSystemOperationContext* context, |
| 607 const fileapi::FileSystemURL& url) { | 608 const fileapi::FileSystemURL& url) { |
| 608 DCHECK(IsOnTaskRunnerThread(context)); | 609 DCHECK(IsOnTaskRunnerThread(context)); |
| 609 base::FilePath file_path; | 610 base::FilePath file_path; |
| 610 base::PlatformFileError error = GetLocalFilePath(context, url, &file_path); | 611 base::File::Error error = GetLocalFilePath(context, url, &file_path); |
| 611 if (error != base::PLATFORM_FILE_OK) | 612 if (error != base::File::FILE_OK) |
| 612 return error; | 613 return error; |
| 613 return fileapi::NativeFileUtil::DeleteDirectory(file_path); | 614 return fileapi::NativeFileUtil::DeleteDirectory(file_path); |
| 614 } | 615 } |
| 615 | 616 |
| 616 base::PlatformFileError NativeMediaFileUtil::CreateSnapshotFileSync( | 617 base::File::Error NativeMediaFileUtil::CreateSnapshotFileSync( |
| 617 fileapi::FileSystemOperationContext* context, | 618 fileapi::FileSystemOperationContext* context, |
| 618 const fileapi::FileSystemURL& url, | 619 const fileapi::FileSystemURL& url, |
| 619 base::PlatformFileInfo* file_info, | 620 base::File::Info* file_info, |
| 620 base::FilePath* platform_path, | 621 base::FilePath* platform_path, |
| 621 scoped_refptr<webkit_blob::ShareableFileReference>* file_ref) { | 622 scoped_refptr<webkit_blob::ShareableFileReference>* file_ref) { |
| 622 DCHECK(IsOnTaskRunnerThread(context)); | 623 DCHECK(IsOnTaskRunnerThread(context)); |
| 623 base::PlatformFileError error = | 624 base::File::Error error = |
| 624 GetFileInfoSync(context, url, file_info, platform_path); | 625 GetFileInfoSync(context, url, file_info, platform_path); |
| 625 if (error == base::PLATFORM_FILE_OK && file_info->is_directory) | 626 if (error == base::File::FILE_OK && file_info->is_directory) |
| 626 error = base::PLATFORM_FILE_ERROR_NOT_A_FILE; | 627 error = base::File::FILE_ERROR_NOT_A_FILE; |
| 627 if (error == base::PLATFORM_FILE_OK) | 628 if (error == base::File::FILE_OK) |
| 628 error = NativeMediaFileUtil::IsMediaFile(*platform_path); | 629 error = NativeMediaFileUtil::IsMediaFile(*platform_path); |
| 629 | 630 |
| 630 // We're just returning the local file information. | 631 // We're just returning the local file information. |
| 631 *file_ref = scoped_refptr<webkit_blob::ShareableFileReference>(); | 632 *file_ref = scoped_refptr<webkit_blob::ShareableFileReference>(); |
| 632 | 633 |
| 633 return error; | 634 return error; |
| 634 } | 635 } |
| 635 | 636 |
| 636 base::PlatformFileError NativeMediaFileUtil::GetFilteredLocalFilePath( | 637 base::File::Error NativeMediaFileUtil::GetFilteredLocalFilePath( |
| 637 fileapi::FileSystemOperationContext* context, | 638 fileapi::FileSystemOperationContext* context, |
| 638 const fileapi::FileSystemURL& file_system_url, | 639 const fileapi::FileSystemURL& file_system_url, |
| 639 base::FilePath* local_file_path) { | 640 base::FilePath* local_file_path) { |
| 640 DCHECK(IsOnTaskRunnerThread(context)); | 641 DCHECK(IsOnTaskRunnerThread(context)); |
| 641 base::FilePath file_path; | 642 base::FilePath file_path; |
| 642 base::PlatformFileError error = | 643 base::File::Error error = |
| 643 GetLocalFilePath(context, file_system_url, &file_path); | 644 GetLocalFilePath(context, file_system_url, &file_path); |
| 644 if (error != base::PLATFORM_FILE_OK) | 645 if (error != base::File::FILE_OK) |
| 645 return error; | 646 return error; |
| 646 if (!media_path_filter_->Match(file_path)) | 647 if (!media_path_filter_->Match(file_path)) |
| 647 return base::PLATFORM_FILE_ERROR_SECURITY; | 648 return base::File::FILE_ERROR_SECURITY; |
| 648 | 649 |
| 649 *local_file_path = file_path; | 650 *local_file_path = file_path; |
| 650 return base::PLATFORM_FILE_OK; | 651 return base::File::FILE_OK; |
| 651 } | 652 } |
| 652 | 653 |
| 653 base::PlatformFileError | 654 base::File::Error |
| 654 NativeMediaFileUtil::GetFilteredLocalFilePathForExistingFileOrDirectory( | 655 NativeMediaFileUtil::GetFilteredLocalFilePathForExistingFileOrDirectory( |
| 655 fileapi::FileSystemOperationContext* context, | 656 fileapi::FileSystemOperationContext* context, |
| 656 const fileapi::FileSystemURL& file_system_url, | 657 const fileapi::FileSystemURL& file_system_url, |
| 657 base::PlatformFileError failure_error, | 658 base::File::Error failure_error, |
| 658 base::FilePath* local_file_path) { | 659 base::FilePath* local_file_path) { |
| 659 DCHECK(IsOnTaskRunnerThread(context)); | 660 DCHECK(IsOnTaskRunnerThread(context)); |
| 660 base::FilePath file_path; | 661 base::FilePath file_path; |
| 661 base::PlatformFileError error = | 662 base::File::Error error = |
| 662 GetLocalFilePath(context, file_system_url, &file_path); | 663 GetLocalFilePath(context, file_system_url, &file_path); |
| 663 if (error != base::PLATFORM_FILE_OK) | 664 if (error != base::File::FILE_OK) |
| 664 return error; | 665 return error; |
| 665 | 666 |
| 666 if (!base::PathExists(file_path)) | 667 if (!base::PathExists(file_path)) |
| 667 return failure_error; | 668 return failure_error; |
| 668 base::File::Info file_info; | 669 base::File::Info file_info; |
| 669 if (!base::GetFileInfo(file_path, &file_info)) | 670 if (!base::GetFileInfo(file_path, &file_info)) |
| 670 return base::PLATFORM_FILE_ERROR_FAILED; | 671 return base::File::FILE_ERROR_FAILED; |
| 671 | 672 |
| 672 if (!file_info.is_directory && | 673 if (!file_info.is_directory && |
| 673 !media_path_filter_->Match(file_path)) { | 674 !media_path_filter_->Match(file_path)) { |
| 674 return failure_error; | 675 return failure_error; |
| 675 } | 676 } |
| 676 | 677 |
| 677 *local_file_path = file_path; | 678 *local_file_path = file_path; |
| 678 return base::PLATFORM_FILE_OK; | 679 return base::File::FILE_OK; |
| 679 } | 680 } |
| OLD | NEW |