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