Index: chrome/browser/media_galleries/media_folder_finder.h |
diff --git a/chrome/browser/media_galleries/media_folder_finder.h b/chrome/browser/media_galleries/media_folder_finder.h |
index 0b7f7092b243f1c93eb8a17dc954c1594e86343b..9d5c7ecf343bf7ad6dba67bce4da1a70a9fd25cb 100644 |
--- a/chrome/browser/media_galleries/media_folder_finder.h |
+++ b/chrome/browser/media_galleries/media_folder_finder.h |
@@ -10,8 +10,9 @@ |
#include "base/callback.h" |
#include "base/files/file_path.h" |
+#include "base/memory/ref_counted.h" |
#include "base/memory/weak_ptr.h" |
-#include "base/threading/sequenced_worker_pool.h" |
+#include "base/sequenced_task_runner.h" |
#include "chrome/browser/media_galleries/media_scan_types.h" |
// MediaFolderFinder scans local hard drives and look for folders that contain |
@@ -23,8 +24,6 @@ class MediaFolderFinder { |
typedef base::Callback<void(bool /*success*/, |
const MediaFolderFinderResults& /*results*/)> |
MediaFolderFinderResultsCallback; |
- typedef base::Callback<MediaGalleryScanFileType(const base::FilePath&)> |
- FilterCallback; |
// |callback| will get called when the scan finishes. If the object is deleted |
// before it finishes, the scan will stop and |callback| will get called with |
@@ -40,6 +39,15 @@ class MediaFolderFinder { |
private: |
friend class MediaFolderFinderTest; |
+ class Worker; |
+ struct WorkerReply { |
+ WorkerReply(); |
+ ~WorkerReply(); |
+ |
+ MediaGalleryScanResult scan_result; |
+ std::vector<base::FilePath> new_folders; |
+ }; |
+ |
enum ScanState { |
SCAN_STATE_NOT_STARTED, |
SCAN_STATE_STARTED, |
@@ -53,11 +61,8 @@ class MediaFolderFinder { |
// Scan a folder from |folders_to_scan_|. |
void ScanFolder(); |
- // Callback that returns the |scan_result| for |path| and the |new_folders| |
- // to scan in future calls to ScanFolder(). |
- void GotScanResults(const base::FilePath& path, |
- const MediaGalleryScanResult* scan_result, |
- const std::vector<base::FilePath>* new_folders); |
+ // Callback that handles the |reply| from |worker_| for a scanned |path|. |
+ void GotScanResults(const base::FilePath& path, const WorkerReply& reply); |
const MediaFolderFinderResultsCallback results_callback_; |
MediaFolderFinderResults results_; |
@@ -65,12 +70,10 @@ class MediaFolderFinder { |
std::vector<base::FilePath> folders_to_scan_; |
ScanState scan_state_; |
- // Token to make sure all calls with |filter_callback_| are on the same |
- // sequence. |
- base::SequencedWorkerPool::SequenceToken token_; |
+ scoped_refptr<base::SequencedTaskRunner> worker_task_runner_; |
- // Callback used to filter through files and make sure they are media files. |
- FilterCallback filter_callback_; |
+ // Owned by MediaFolderFinder, but lives on |worker_task_runner_|. |
+ Worker* worker_; |
// Set of roots to scan for testing. |
bool has_roots_for_testing_; |