| Index: webkit/fileapi/media_file_util.cc
|
| diff --git a/webkit/fileapi/media_file_util.cc b/webkit/fileapi/media_file_util.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1c7227efbc0041e2a4c1435e011155d652db70d6
|
| --- /dev/null
|
| +++ b/webkit/fileapi/media_file_util.cc
|
| @@ -0,0 +1,213 @@
|
| +// 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 "webkit/fileapi/media_file_util.h"
|
| +
|
| +#include "base/memory/scoped_ptr.h"
|
| +#include "webkit/blob/shareable_file_reference.h"
|
| +#include "webkit/fileapi/file_system_operation_context.h"
|
| +#include "webkit/fileapi/file_system_url.h"
|
| +#include "webkit/fileapi/media_device_map_service.h"
|
| +#include "webkit/fileapi/isolated_context.h"
|
| +
|
| +#if defined(OS_WIN)
|
| +#include "webkit/fileapi/mtp_device_interface_win.h"
|
| +#elif defined(OS_POSIX) && !defined(OS_MACOSX)
|
| +#include "webkit/fileapi/mtp_device_interface_linux.h"
|
| +#endif
|
| +
|
| +using base::PlatformFileError;
|
| +using base::PlatformFileInfo;
|
| +
|
| +namespace fileapi {
|
| +
|
| +MediaFileUtil::MediaFileUtil() {
|
| +}
|
| +
|
| +PlatformFileError MediaFileUtil::CreateOrOpen(
|
| + FileSystemOperationContext* context,
|
| + const FileSystemURL& url, int file_flags,
|
| + PlatformFile* file_handle, bool* created) {
|
| + return base::PLATFORM_FILE_ERROR_SECURITY;
|
| +}
|
| +
|
| +PlatformFileError MediaFileUtil::Close(
|
| + FileSystemOperationContext* context,
|
| + PlatformFile file_handle) {
|
| + // We don't allow open thus Close won't be called.
|
| + return base::PLATFORM_FILE_ERROR_SECURITY;
|
| +}
|
| +
|
| +PlatformFileError MediaFileUtil::EnsureFileExists(
|
| + FileSystemOperationContext* context,
|
| + const FileSystemURL& url,
|
| + bool* created) {
|
| + return base::PLATFORM_FILE_ERROR_SECURITY;
|
| +}
|
| +
|
| +PlatformFileError MediaFileUtil::CreateDirectory(
|
| + FileSystemOperationContext* context,
|
| + const FileSystemURL& url,
|
| + bool exclusive,
|
| + bool recursive) {
|
| + return base::PLATFORM_FILE_ERROR_SECURITY;
|
| +}
|
| +
|
| +PlatformFileError MediaFileUtil::GetFileInfo(
|
| + FileSystemOperationContext* context,
|
| + const FileSystemURL& url,
|
| + PlatformFileInfo* file_info,
|
| + FilePath* platform_path) {
|
| + if (!GetPlatformPath(url, platform_path))
|
| + return base::PLATFORM_FILE_ERROR_INVALID_URL;
|
| +
|
| + scoped_refptr<MediaDeviceInterfaceImpl> device;
|
| + if (!MediaDeviceMapService::GetInstance()->GetMediaDevice(
|
| + platform_path->value(), &device)) {
|
| + return base::PLATFORM_FILE_ERROR_INVALID_URL;
|
| + }
|
| + return device->GetFileInfo(*platform_path, file_info);
|
| +}
|
| +
|
| +FileSystemFileUtil::AbstractFileEnumerator*
|
| +MediaFileUtil::CreateFileEnumerator(
|
| + FileSystemOperationContext* context,
|
| + const FileSystemURL& root,
|
| + bool recursive) {
|
| + FilePath platform_path;
|
| + if (!GetPlatformPath(root, &platform_path))
|
| + return new FileSystemFileUtil::EmptyFileEnumerator();
|
| +
|
| + scoped_refptr<MediaDeviceInterfaceImpl> device;
|
| + if (!MediaDeviceMapService::GetInstance()->GetMediaDevice(
|
| + platform_path.value(), &device)) {
|
| + return new FileSystemFileUtil::EmptyFileEnumerator();
|
| + }
|
| + return device->CreateFileEnumerator(platform_path, recursive);
|
| +}
|
| +
|
| +PlatformFileError MediaFileUtil::GetLocalFilePath(
|
| + FileSystemOperationContext* context,
|
| + const FileSystemURL& file_system_url,
|
| + FilePath* local_file_path) {
|
| + return base::PLATFORM_FILE_ERROR_SECURITY;
|
| +}
|
| +
|
| +PlatformFileError MediaFileUtil::Touch(
|
| + FileSystemOperationContext* context,
|
| + const FileSystemURL& url,
|
| + const base::Time& last_access_time,
|
| + const base::Time& last_modified_time) {
|
| + FilePath platform_path;
|
| + if (!GetPlatformPath(url, &platform_path))
|
| + return base::PLATFORM_FILE_ERROR_INVALID_URL;
|
| +
|
| + scoped_refptr<MediaDeviceInterfaceImpl> device;
|
| + if (!MediaDeviceMapService::GetInstance()->GetMediaDevice(
|
| + platform_path.value(), &device)) {
|
| + return base::PLATFORM_FILE_ERROR_INVALID_URL;
|
| + }
|
| + return device->Touch(platform_path, last_access_time, last_modified_time);
|
| +}
|
| +
|
| +PlatformFileError MediaFileUtil::Truncate(
|
| + FileSystemOperationContext* context,
|
| + const FileSystemURL& url,
|
| + int64 length) {
|
| + return base::PLATFORM_FILE_ERROR_SECURITY;
|
| +}
|
| +
|
| +bool MediaFileUtil::PathExists(
|
| + FileSystemOperationContext* context,
|
| + const FileSystemURL& url) {
|
| + FilePath platform_path;
|
| + if (!GetPlatformPath(url, &platform_path))
|
| + return false;
|
| +
|
| + scoped_refptr<MediaDeviceInterfaceImpl> device;
|
| + if (!MediaDeviceMapService::GetInstance()->GetMediaDevice(
|
| + platform_path.value(), &device)) {
|
| + return false;
|
| + }
|
| + return device->PathExists(platform_path);
|
| +}
|
| +
|
| +bool MediaFileUtil::DirectoryExists(
|
| + FileSystemOperationContext* context,
|
| + const FileSystemURL& url) {
|
| + FilePath platform_path;
|
| + if (!GetPlatformPath(url, &platform_path))
|
| + return false;
|
| +
|
| + scoped_refptr<MediaDeviceInterfaceImpl> device;
|
| + if (!MediaDeviceMapService::GetInstance()->GetMediaDevice(
|
| + platform_path.value(), &device)) {
|
| + return false;
|
| + }
|
| + return device->DirectoryExists(platform_path);
|
| +}
|
| +
|
| +bool MediaFileUtil::IsDirectoryEmpty(
|
| + FileSystemOperationContext* context,
|
| + const FileSystemURL& url) {
|
| + FilePath platform_path;
|
| + if (!GetPlatformPath(url, &platform_path))
|
| + return false;
|
| +
|
| + scoped_refptr<MediaDeviceInterfaceImpl> device;
|
| + if (!MediaDeviceMapService::GetInstance()->GetMediaDevice(
|
| + platform_path.value(), &device)) {
|
| + return false;
|
| + }
|
| + return device->IsDirectoryEmpty(platform_path);
|
| +}
|
| +
|
| +PlatformFileError MediaFileUtil::CopyOrMoveFile(
|
| + FileSystemOperationContext* context,
|
| + const FileSystemURL& src_url,
|
| + const FileSystemURL& dest_url,
|
| + bool copy) {
|
| + return base::PLATFORM_FILE_ERROR_SECURITY;
|
| +}
|
| +
|
| +PlatformFileError MediaFileUtil::CopyInForeignFile(
|
| + FileSystemOperationContext* context,
|
| + const FilePath& src_file_path,
|
| + const FileSystemURL& dest_url) {
|
| + return base::PLATFORM_FILE_ERROR_SECURITY;
|
| +}
|
| +
|
| +PlatformFileError MediaFileUtil::DeleteFile(
|
| + FileSystemOperationContext* context,
|
| + const FileSystemURL& url) {
|
| + return base::PLATFORM_FILE_ERROR_SECURITY;
|
| +}
|
| +
|
| +PlatformFileError MediaFileUtil::DeleteSingleDirectory(
|
| + FileSystemOperationContext* context,
|
| + const FileSystemURL& url) {
|
| + return base::PLATFORM_FILE_ERROR_SECURITY;
|
| +}
|
| +
|
| +scoped_refptr<webkit_blob::ShareableFileReference>
|
| + MediaFileUtil::CreateSnapshotFile(
|
| + FileSystemOperationContext* context,
|
| + const FileSystemURL& url,
|
| + base::PlatformFileError* result,
|
| + base::PlatformFileInfo* file_info,
|
| + FilePath* platform_path) {
|
| + return NULL;
|
| +}
|
| +
|
| +bool MediaFileUtil::GetPlatformPath(const FileSystemURL& url,
|
| + FilePath* platform_path) const {
|
| + DCHECK(platform_path);
|
| + std::string filesystem_id;
|
| + if (!IsolatedContext::GetInstance()->CrackIsolatedPath(
|
| + url.path(), &filesystem_id, NULL, platform_path))
|
| + return false;
|
| + return true;
|
| +}
|
| +
|
| +} // namespace
|
|
|