15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved. 25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be 35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file. 45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/chromeos/fileapi/mtp_file_system_backend_delegate.h" 65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "chrome/browser/media_galleries/fileapi/device_media_async_file_util.h" 75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "webkit/browser/blob/file_stream_reader.h" 85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "webkit/browser/fileapi/file_stream_writer.h" 95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "webkit/browser/fileapi/file_system_url.h" 105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace chromeos { 125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuMTPFileSystemBackendDelegate::MTPFileSystemBackendDelegate( 145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const base::FilePath& storage_partition_path) 155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu : device_media_async_file_util_( 165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu DeviceMediaAsyncFileUtil::Create(storage_partition_path, 175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu NO_MEDIA_FILE_VALIDATION)) { 185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuMTPFileSystemBackendDelegate::~MTPFileSystemBackendDelegate() { 215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liufileapi::AsyncFileUtil* MTPFileSystemBackendDelegate::GetAsyncFileUtil( 245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu fileapi::FileSystemType type) { 255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu DCHECK_EQ(fileapi::kFileSystemTypeDeviceMediaAsFileStorage, type); 265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return device_media_async_file_util_.get(); 285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuscoped_ptr<webkit_blob::FileStreamReader> 315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuMTPFileSystemBackendDelegate::CreateFileStreamReader( 325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const fileapi::FileSystemURL& url, 335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu int64 offset, 345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const base::Time& expected_modification_time, 355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu fileapi::FileSystemContext* context) { 365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu DCHECK_EQ(fileapi::kFileSystemTypeDeviceMediaAsFileStorage, url.type()); 375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return device_media_async_file_util_->GetFileStreamReader( 395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu url, offset, expected_modification_time, context); 405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liuscoped_ptr<fileapi::FileStreamWriter> 435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo LiuMTPFileSystemBackendDelegate::CreateFileStreamWriter( 445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const fileapi::FileSystemURL& url, 455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu int64 offset, 465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu fileapi::FileSystemContext* context) { 475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu DCHECK_EQ(fileapi::kFileSystemTypeDeviceMediaAsFileStorage, url.type()); 485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // TODO(kinaba): support writing. 505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return scoped_ptr<fileapi::FileStreamWriter>(); 515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} 525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} // namespace chromeos 54