Index: webkit/fileapi/media/filtering_file_enumerator.cc |
diff --git a/webkit/fileapi/media/filtering_file_enumerator.cc b/webkit/fileapi/media/filtering_file_enumerator.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e1b9cc51e257fec9ecc2bdfccb9a31161449aa01 |
--- /dev/null |
+++ b/webkit/fileapi/media/filtering_file_enumerator.cc |
@@ -0,0 +1,44 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "base/logging.h" |
+#include "webkit/fileapi/media/filtering_file_enumerator.h" |
+ |
+namespace fileapi { |
+ |
+FilteringFileEnumerator::FilteringFileEnumerator( |
+ scoped_ptr<FileSystemFileUtil::AbstractFileEnumerator> base_enumerator, |
+ MediaPathFilter* filter) |
+ : base_enumerator_(base_enumerator.Pass()), |
+ filter_(filter) { |
+ DCHECK(base_enumerator_.get()); |
+ DCHECK(filter); |
+} |
+ |
+FilteringFileEnumerator::~FilteringFileEnumerator() { |
+} |
+ |
+FilePath FilteringFileEnumerator::Next() { |
+ while (true) { |
+ FilePath next = base_enumerator_->Next(); |
+ if (next.empty() || |
+ base_enumerator_->IsDirectory() || |
+ filter_->Match(next)) |
+ return next; |
+ } |
+} |
+ |
+int64 FilteringFileEnumerator::Size() { |
+ return base_enumerator_->Size(); |
+} |
+ |
+base::Time FilteringFileEnumerator::LastModifiedTime() { |
+ return base_enumerator_->LastModifiedTime(); |
+} |
+ |
+bool FilteringFileEnumerator::IsDirectory() { |
+ return base_enumerator_->IsDirectory(); |
+} |
+ |
+} // namespace fileapi |