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

Unified Diff: webkit/fileapi/media/device_media_file_util.cc

Issue 10823171: Add path filtering to DeviceMediaFileUtil (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: buildfix for windows Created 8 years, 4 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | webkit/fileapi/media/filtering_file_enumerator.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/fileapi/media/device_media_file_util.cc
diff --git a/webkit/fileapi/media/device_media_file_util.cc b/webkit/fileapi/media/device_media_file_util.cc
index b1cbfca8f85aefeeea010052b735265d7b03a1ea..ec9507656c423202e4bb1727d750c487d0d05def 100644
--- a/webkit/fileapi/media/device_media_file_util.cc
+++ b/webkit/fileapi/media/device_media_file_util.cc
@@ -10,8 +10,10 @@
#include "webkit/fileapi/file_system_operation_context.h"
#include "webkit/fileapi/file_system_url.h"
#include "webkit/fileapi/isolated_context.h"
+#include "webkit/fileapi/media/filtering_file_enumerator.h"
#include "webkit/fileapi/media/media_device_interface_impl.h"
#include "webkit/fileapi/media/media_device_map_service.h"
+#include "webkit/fileapi/media/media_path_filter.h"
using base::PlatformFileError;
using base::PlatformFileInfo;
@@ -65,7 +67,15 @@ PlatformFileError DeviceMediaFileUtil::GetFileInfo(
FilePath* platform_path) {
if (!context->media_device())
return base::PLATFORM_FILE_ERROR_NOT_FOUND;
- return context->media_device()->GetFileInfo(url.path(), file_info);
+ PlatformFileError error =
+ context->media_device()->GetFileInfo(url.path(), file_info);
+ if (error != base::PLATFORM_FILE_OK)
+ return error;
+
+ if (file_info->is_directory ||
+ context->media_path_filter()->Match(url.path()))
+ return base::PLATFORM_FILE_OK;
+ return base::PLATFORM_FILE_ERROR_NOT_FOUND;
}
FileSystemFileUtil::AbstractFileEnumerator*
@@ -75,7 +85,10 @@ DeviceMediaFileUtil::CreateFileEnumerator(
bool recursive) {
if (!context->media_device())
return new FileSystemFileUtil::EmptyFileEnumerator();
- return context->media_device()->CreateFileEnumerator(url.path(), recursive);
+ return new FilteringFileEnumerator(
+ make_scoped_ptr(
+ context->media_device()->CreateFileEnumerator(url.path(), recursive)),
+ context->media_path_filter());
}
PlatformFileError DeviceMediaFileUtil::GetLocalFilePath(
@@ -108,7 +121,11 @@ bool DeviceMediaFileUtil::PathExists(
const FileSystemURL& url) {
if (!context->media_device())
return false;
- return context->media_device()->PathExists(url.path());
+
+ FilePath path;
+ PlatformFileInfo file_info;
+ PlatformFileError error = GetFileInfo(context, url, &file_info, &path);
+ return error == base::PLATFORM_FILE_OK;
}
bool DeviceMediaFileUtil::DirectoryExists(
@@ -124,7 +141,16 @@ bool DeviceMediaFileUtil::IsDirectoryEmpty(
const FileSystemURL& url) {
if (!context->media_device())
return false;
- return context->media_device()->IsDirectoryEmpty(url.path());
+
+ scoped_ptr<AbstractFileEnumerator> enumerator(
+ CreateFileEnumerator(context, url, false));
+ FilePath path;
+ while (!(path = enumerator->Next()).empty()) {
+ if (enumerator->IsDirectory() ||
+ context->media_path_filter()->Match(path))
+ return false;
+ }
+ return true;
}
PlatformFileError DeviceMediaFileUtil::CopyOrMoveFile(
« no previous file with comments | « no previous file | webkit/fileapi/media/filtering_file_enumerator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698