| Index: chrome/browser/file_system_proxy.cc
|
| ===================================================================
|
| --- chrome/browser/file_system_proxy.cc (revision 56780)
|
| +++ chrome/browser/file_system_proxy.cc (working copy)
|
| @@ -1,180 +0,0 @@
|
| -// Copyright (c) 2010 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 "chrome/browser/file_system_proxy.h"
|
| -
|
| -#include "base/file_util.h"
|
| -#include "chrome/browser/chrome_thread_relay.h"
|
| -
|
| -namespace {
|
| -
|
| -class RelayCreateOrOpen : public ChromeThreadRelay {
|
| - public:
|
| - RelayCreateOrOpen(
|
| - const FilePath& file_path,
|
| - int file_flags,
|
| - FileSystemProxy::CreateOrOpenCallback* callback)
|
| - : file_path_(file_path),
|
| - file_flags_(file_flags),
|
| - callback_(callback),
|
| - file_handle_(base::kInvalidPlatformFileValue),
|
| - created_(false) {
|
| - DCHECK(callback);
|
| - }
|
| -
|
| - protected:
|
| - virtual ~RelayCreateOrOpen() {
|
| - if (file_handle_ != base::kInvalidPlatformFileValue)
|
| - FileSystemProxy::Close(file_handle_, NULL);
|
| - }
|
| -
|
| - virtual void RunWork() {
|
| - file_handle_ = base::CreatePlatformFile(file_path_, file_flags_, &created_);
|
| - }
|
| -
|
| - virtual void RunCallback() {
|
| - callback_->Run(base::PassPlatformFile(&file_handle_), created_);
|
| - delete callback_;
|
| - }
|
| -
|
| - private:
|
| - FilePath file_path_;
|
| - int file_flags_;
|
| - FileSystemProxy::CreateOrOpenCallback* callback_;
|
| - base::PlatformFile file_handle_;
|
| - bool created_;
|
| -};
|
| -
|
| -class RelayCreateTemporary : public ChromeThreadRelay {
|
| - public:
|
| - explicit RelayCreateTemporary(
|
| - FileSystemProxy::CreateTemporaryCallback* callback)
|
| - : callback_(callback),
|
| - file_handle_(base::kInvalidPlatformFileValue) {
|
| - DCHECK(callback);
|
| - }
|
| -
|
| - protected:
|
| - virtual ~RelayCreateTemporary() {
|
| - if (file_handle_ != base::kInvalidPlatformFileValue)
|
| - FileSystemProxy::Close(file_handle_, NULL);
|
| - }
|
| -
|
| - virtual void RunWork() {
|
| - // TODO(darin): file_util should have a variant of CreateTemporaryFile
|
| - // that returns a FilePath and a PlatformFile.
|
| - file_util::CreateTemporaryFile(&file_path_);
|
| -
|
| - // Use a fixed set of flags that are appropriate for writing to a temporary
|
| - // file from the IO thread using a net::FileStream.
|
| - int file_flags =
|
| - base::PLATFORM_FILE_CREATE_ALWAYS |
|
| - base::PLATFORM_FILE_WRITE |
|
| - base::PLATFORM_FILE_ASYNC |
|
| - base::PLATFORM_FILE_TEMPORARY;
|
| - file_handle_ = base::CreatePlatformFile(file_path_, file_flags, NULL);
|
| - }
|
| -
|
| - virtual void RunCallback() {
|
| - callback_->Run(base::PassPlatformFile(&file_handle_), file_path_);
|
| - delete callback_;
|
| - }
|
| -
|
| - private:
|
| - FileSystemProxy::CreateTemporaryCallback* callback_;
|
| - base::PlatformFile file_handle_;
|
| - FilePath file_path_;
|
| -};
|
| -
|
| -class RelayWithStatusCallback : public ChromeThreadRelay {
|
| - public:
|
| - explicit RelayWithStatusCallback(FileSystemProxy::StatusCallback* callback)
|
| - : callback_(callback),
|
| - succeeded_(false) {
|
| - // It is OK for callback to be NULL.
|
| - }
|
| -
|
| - protected:
|
| - virtual void RunCallback() {
|
| - // The caller may not have been interested in the result.
|
| - if (callback_) {
|
| - callback_->Run(succeeded_);
|
| - delete callback_;
|
| - }
|
| - }
|
| -
|
| - void SetStatus(bool succeeded) { succeeded_ = succeeded; }
|
| -
|
| - private:
|
| - FileSystemProxy::StatusCallback* callback_;
|
| - bool succeeded_;
|
| -};
|
| -
|
| -class RelayClose : public RelayWithStatusCallback {
|
| - public:
|
| - RelayClose(base::PlatformFile file_handle,
|
| - FileSystemProxy::StatusCallback* callback)
|
| - : RelayWithStatusCallback(callback),
|
| - file_handle_(file_handle) {
|
| - }
|
| -
|
| - protected:
|
| - virtual void RunWork() {
|
| - SetStatus(base::ClosePlatformFile(file_handle_));
|
| - }
|
| -
|
| - private:
|
| - base::PlatformFile file_handle_;
|
| -};
|
| -
|
| -class RelayDelete : public RelayWithStatusCallback {
|
| - public:
|
| - RelayDelete(const FilePath& file_path,
|
| - bool recursive,
|
| - FileSystemProxy::StatusCallback* callback)
|
| - : RelayWithStatusCallback(callback),
|
| - file_path_(file_path),
|
| - recursive_(recursive) {
|
| - }
|
| -
|
| - protected:
|
| - virtual void RunWork() {
|
| - SetStatus(file_util::Delete(file_path_, recursive_));
|
| - }
|
| -
|
| - private:
|
| - FilePath file_path_;
|
| - bool recursive_;
|
| -};
|
| -
|
| -void Start(const tracked_objects::Location& from_here,
|
| - scoped_refptr<ChromeThreadRelay> relay) {
|
| - relay->Start(ChromeThread::FILE, from_here);
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -void FileSystemProxy::CreateOrOpen(const FilePath& file_path, int file_flags,
|
| - CreateOrOpenCallback* callback) {
|
| - Start(FROM_HERE, new RelayCreateOrOpen(file_path, file_flags, callback));
|
| -}
|
| -
|
| -void FileSystemProxy::CreateTemporary(CreateTemporaryCallback* callback) {
|
| - Start(FROM_HERE, new RelayCreateTemporary(callback));
|
| -}
|
| -
|
| -void FileSystemProxy::Close(base::PlatformFile file_handle,
|
| - StatusCallback* callback) {
|
| - Start(FROM_HERE, new RelayClose(file_handle, callback));
|
| -}
|
| -
|
| -void FileSystemProxy::Delete(const FilePath& file_path,
|
| - StatusCallback* callback) {
|
| - Start(FROM_HERE, new RelayDelete(file_path, false, callback));
|
| -}
|
| -
|
| -void FileSystemProxy::RecursiveDelete(const FilePath& file_path,
|
| - StatusCallback* callback) {
|
| - Start(FROM_HERE, new RelayDelete(file_path, true, callback));
|
| -}
|
|
|