OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 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/device_media_async_file_util.h" | 5 #include "chrome/browser/media_galleries/fileapi/device_media_async_file_util.h" |
6 | 6 |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/single_thread_task_runner.h" | 9 #include "base/single_thread_task_runner.h" |
10 #include "base/task_runner_util.h" | 10 #include "base/task_runner_util.h" |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 return snapshot_file_path; | 57 return snapshot_file_path; |
58 } | 58 } |
59 | 59 |
60 } // namespace | 60 } // namespace |
61 | 61 |
62 DeviceMediaAsyncFileUtil::~DeviceMediaAsyncFileUtil() { | 62 DeviceMediaAsyncFileUtil::~DeviceMediaAsyncFileUtil() { |
63 } | 63 } |
64 | 64 |
65 // static | 65 // static |
66 DeviceMediaAsyncFileUtil* DeviceMediaAsyncFileUtil::Create( | 66 DeviceMediaAsyncFileUtil* DeviceMediaAsyncFileUtil::Create( |
67 const base::FilePath& profile_path) { | 67 const base::FilePath& profile_path, |
| 68 MediaFileValidationType validation_type) { |
68 DCHECK(!profile_path.empty()); | 69 DCHECK(!profile_path.empty()); |
69 return new DeviceMediaAsyncFileUtil(profile_path); | 70 return new DeviceMediaAsyncFileUtil(profile_path, validation_type); |
70 } | 71 } |
71 | 72 |
72 bool DeviceMediaAsyncFileUtil::SupportsStreaming( | 73 bool DeviceMediaAsyncFileUtil::SupportsStreaming( |
73 const fileapi::FileSystemURL& url) { | 74 const fileapi::FileSystemURL& url) { |
74 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); | 75 DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
75 MTPDeviceAsyncDelegate* delegate = GetMTPDeviceDelegate(url); | 76 MTPDeviceAsyncDelegate* delegate = GetMTPDeviceDelegate(url); |
76 if (!delegate) | 77 if (!delegate) |
77 return false; | 78 return false; |
78 return delegate->IsStreaming(); | 79 return delegate->IsStreaming(); |
79 } | 80 } |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 int64 offset, | 277 int64 offset, |
277 const base::Time& expected_modification_time, | 278 const base::Time& expected_modification_time, |
278 fileapi::FileSystemContext* context) { | 279 fileapi::FileSystemContext* context) { |
279 MTPDeviceAsyncDelegate* delegate = GetMTPDeviceDelegate(url); | 280 MTPDeviceAsyncDelegate* delegate = GetMTPDeviceDelegate(url); |
280 if (!delegate) | 281 if (!delegate) |
281 return scoped_ptr<webkit_blob::FileStreamReader>(); | 282 return scoped_ptr<webkit_blob::FileStreamReader>(); |
282 | 283 |
283 DCHECK(delegate->IsStreaming()); | 284 DCHECK(delegate->IsStreaming()); |
284 return scoped_ptr<webkit_blob::FileStreamReader>( | 285 return scoped_ptr<webkit_blob::FileStreamReader>( |
285 new ReadaheadFileStreamReader(new MTPFileStreamReader( | 286 new ReadaheadFileStreamReader(new MTPFileStreamReader( |
286 context, url, offset, expected_modification_time))); | 287 context, url, offset, expected_modification_time, |
| 288 validation_type_ == APPLY_MEDIA_FILE_VALIDATION))); |
287 } | 289 } |
288 | 290 |
289 DeviceMediaAsyncFileUtil::DeviceMediaAsyncFileUtil( | 291 DeviceMediaAsyncFileUtil::DeviceMediaAsyncFileUtil( |
290 const base::FilePath& profile_path) | 292 const base::FilePath& profile_path, |
| 293 MediaFileValidationType validation_type) |
291 : profile_path_(profile_path), | 294 : profile_path_(profile_path), |
| 295 validation_type_(validation_type), |
292 weak_ptr_factory_(this) { | 296 weak_ptr_factory_(this) { |
293 } | 297 } |
294 | 298 |
295 void DeviceMediaAsyncFileUtil::OnDidGetFileInfo( | 299 void DeviceMediaAsyncFileUtil::OnDidGetFileInfo( |
296 const AsyncFileUtil::GetFileInfoCallback& callback, | 300 const AsyncFileUtil::GetFileInfoCallback& callback, |
297 const base::File::Info& file_info) { | 301 const base::File::Info& file_info) { |
298 callback.Run(base::File::FILE_OK, file_info); | 302 callback.Run(base::File::FILE_OK, file_info); |
299 } | 303 } |
300 | 304 |
301 void DeviceMediaAsyncFileUtil::OnGetFileInfoError( | 305 void DeviceMediaAsyncFileUtil::OnGetFileInfoError( |
(...skipping 13 matching lines...) Expand all Loading... |
315 const AsyncFileUtil::ReadDirectoryCallback& callback, | 319 const AsyncFileUtil::ReadDirectoryCallback& callback, |
316 base::File::Error error) { | 320 base::File::Error error) { |
317 callback.Run(error, AsyncFileUtil::EntryList(), false /*no more*/); | 321 callback.Run(error, AsyncFileUtil::EntryList(), false /*no more*/); |
318 } | 322 } |
319 | 323 |
320 void DeviceMediaAsyncFileUtil::OnDidCreateSnapshotFile( | 324 void DeviceMediaAsyncFileUtil::OnDidCreateSnapshotFile( |
321 const AsyncFileUtil::CreateSnapshotFileCallback& callback, | 325 const AsyncFileUtil::CreateSnapshotFileCallback& callback, |
322 base::SequencedTaskRunner* media_task_runner, | 326 base::SequencedTaskRunner* media_task_runner, |
323 const base::File::Info& file_info, | 327 const base::File::Info& file_info, |
324 const base::FilePath& platform_path) { | 328 const base::FilePath& platform_path) { |
325 base::PostTaskAndReplyWithResult( | 329 scoped_refptr<webkit_blob::ShareableFileReference> file = |
326 media_task_runner, | 330 ShareableFileReference::GetOrCreate( |
327 FROM_HERE, | 331 platform_path, |
328 base::Bind(&NativeMediaFileUtil::IsMediaFile, platform_path), | 332 ShareableFileReference::DELETE_ON_FINAL_RELEASE, |
329 base::Bind(&DeviceMediaAsyncFileUtil::OnDidCheckMedia, | 333 media_task_runner); |
330 weak_ptr_factory_.GetWeakPtr(), | 334 |
331 callback, | 335 if (validation_type_ == APPLY_MEDIA_FILE_VALIDATION) { |
332 file_info, | 336 base::PostTaskAndReplyWithResult( |
333 ShareableFileReference::GetOrCreate( | 337 media_task_runner, |
334 platform_path, | 338 FROM_HERE, |
335 ShareableFileReference::DELETE_ON_FINAL_RELEASE, | 339 base::Bind(&NativeMediaFileUtil::IsMediaFile, platform_path), |
336 media_task_runner))); | 340 base::Bind(&DeviceMediaAsyncFileUtil::OnDidCheckMedia, |
| 341 weak_ptr_factory_.GetWeakPtr(), |
| 342 callback, |
| 343 file_info, |
| 344 file)); |
| 345 } else { |
| 346 OnDidCheckMedia(callback, file_info, file, base::File::FILE_OK); |
| 347 } |
337 } | 348 } |
338 | 349 |
339 void DeviceMediaAsyncFileUtil::OnDidCheckMedia( | 350 void DeviceMediaAsyncFileUtil::OnDidCheckMedia( |
340 const AsyncFileUtil::CreateSnapshotFileCallback& callback, | 351 const AsyncFileUtil::CreateSnapshotFileCallback& callback, |
341 const base::File::Info& file_info, | 352 const base::File::Info& file_info, |
342 scoped_refptr<webkit_blob::ShareableFileReference> platform_file, | 353 scoped_refptr<webkit_blob::ShareableFileReference> platform_file, |
343 base::File::Error error) { | 354 base::File::Error error) { |
344 base::FilePath platform_path(platform_file.get()->path()); | 355 base::FilePath platform_path(platform_file.get()->path()); |
345 if (error != base::File::FILE_OK) | 356 if (error != base::File::FILE_OK) |
346 platform_file = NULL; | 357 platform_file = NULL; |
(...skipping 26 matching lines...) Expand all Loading... |
373 url.path(), // device file path | 384 url.path(), // device file path |
374 snapshot_file_path, | 385 snapshot_file_path, |
375 base::Bind(&DeviceMediaAsyncFileUtil::OnDidCreateSnapshotFile, | 386 base::Bind(&DeviceMediaAsyncFileUtil::OnDidCreateSnapshotFile, |
376 weak_ptr_factory_.GetWeakPtr(), | 387 weak_ptr_factory_.GetWeakPtr(), |
377 callback, | 388 callback, |
378 make_scoped_refptr(context->task_runner())), | 389 make_scoped_refptr(context->task_runner())), |
379 base::Bind(&DeviceMediaAsyncFileUtil::OnCreateSnapshotFileError, | 390 base::Bind(&DeviceMediaAsyncFileUtil::OnCreateSnapshotFileError, |
380 weak_ptr_factory_.GetWeakPtr(), | 391 weak_ptr_factory_.GetWeakPtr(), |
381 callback)); | 392 callback)); |
382 } | 393 } |
OLD | NEW |