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

Side by Side Diff: chrome/browser/media_gallery/linux/mtp_recursive_device_object_enumerator.cc

Issue 11348337: Move MTPDeviceDelegateImplLinux worker classes to its own files. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed review comments Created 8 years 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 | Annotate | Revision Log
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/browser/media_gallery/linux/mtp_recursive_device_object_enumera tor.h"
6
7 #include "base/sequenced_task_runner.h"
8 #include "base/synchronization/waitable_event.h"
9 #include "chrome/browser/media_gallery/linux/mtp_device_object_enumerator.h"
10 #include "chrome/browser/media_gallery/linux/mtp_read_directory_worker.h"
11
12 namespace chrome {
13
14 MTPRecursiveDeviceObjectEnumerator::MTPRecursiveDeviceObjectEnumerator(
15 const std::string& handle,
16 base::SequencedTaskRunner* task_runner,
17 const std::vector<MtpFileEntry>& entries,
18 base::WaitableEvent* task_completed_event,
19 base::WaitableEvent* shutdown_event)
20 : device_handle_(handle),
21 media_task_runner_(task_runner),
22 file_entries_(entries),
23 file_entry_iter_(file_entries_.begin()),
24 on_task_completed_event_(task_completed_event),
25 on_shutdown_event_(shutdown_event) {
26 DCHECK(on_task_completed_event_);
27 DCHECK(on_shutdown_event_);
28 current_enumerator_.reset(new MTPDeviceObjectEnumerator(entries));
29 }
30
31 MTPRecursiveDeviceObjectEnumerator::~MTPRecursiveDeviceObjectEnumerator() {
32 }
33
34 FilePath MTPRecursiveDeviceObjectEnumerator::Next() {
35 if (on_shutdown_event_->IsSignaled()) {
36 // Process is in shut down mode.
37 return FilePath();
38 }
39
40 FilePath path = current_enumerator_->Next();
41 if (!path.empty())
42 return path;
43
44 // We reached the end.
45 if (file_entry_iter_ == file_entries_.end())
46 return FilePath();
47
48 // Enumerate subdirectories of the next media file entry.
49 MtpFileEntry next_file_entry = *file_entry_iter_;
50 ++file_entry_iter_;
51
52 // Create a MTPReadDirectoryWorker object to enumerate sub directories.
53 scoped_refptr<MTPReadDirectoryWorker> worker(new MTPReadDirectoryWorker(
54 device_handle_, next_file_entry.item_id(), media_task_runner_,
55 on_task_completed_event_, on_shutdown_event_));
56 worker->Run();
57 if (!worker->get_file_entries().empty()) {
58 current_enumerator_.reset(
59 new MTPDeviceObjectEnumerator(worker->get_file_entries()));
60 } else {
61 current_enumerator_.reset(
62 new fileapi::FileSystemFileUtil::EmptyFileEnumerator());
63 }
64 return current_enumerator_->Next();
65 }
66
67 int64 MTPRecursiveDeviceObjectEnumerator::Size() {
68 return current_enumerator_->Size();
69 }
70
71 bool MTPRecursiveDeviceObjectEnumerator::IsDirectory() {
72 return current_enumerator_->IsDirectory();
73 }
74
75 base::Time MTPRecursiveDeviceObjectEnumerator::LastModifiedTime() {
76 return current_enumerator_->LastModifiedTime();
77 }
78
79 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698