| Index: webkit/tools/test_shell/simple_file_writer.cc
|
| diff --git a/webkit/tools/test_shell/simple_file_writer.cc b/webkit/tools/test_shell/simple_file_writer.cc
|
| deleted file mode 100644
|
| index b6e15c6120384b16875fda8635681ba50eb7cc8c..0000000000000000000000000000000000000000
|
| --- a/webkit/tools/test_shell/simple_file_writer.cc
|
| +++ /dev/null
|
| @@ -1,205 +0,0 @@
|
| -// 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/tools/test_shell/simple_file_writer.h"
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/location.h"
|
| -#include "base/logging.h"
|
| -#include "base/message_loop_proxy.h"
|
| -#include "net/url_request/url_request_context.h"
|
| -#include "webkit/browser/fileapi/file_system_context.h"
|
| -#include "webkit/browser/fileapi/file_system_operation.h"
|
| -#include "webkit/browser/fileapi/file_system_url.h"
|
| -#include "webkit/common/fileapi/file_system_types.h"
|
| -#include "webkit/glue/webkit_glue.h"
|
| -#include "webkit/tools/test_shell/simple_resource_loader_bridge.h"
|
| -
|
| -using fileapi::FileSystemURL;
|
| -using fileapi::FileSystemContext;
|
| -using fileapi::FileSystemOperation;
|
| -using fileapi::WebFileWriterBase;
|
| -using WebKit::WebFileWriterClient;
|
| -using WebKit::WebString;
|
| -using WebKit::WebURL;
|
| -
|
| -net::URLRequestContext* SimpleFileWriter::request_context_ = NULL;
|
| -
|
| -// Helper class to proxy to write and truncate calls to the IO thread,
|
| -// and to proxy the results back to the main thead. There is a one-to-one
|
| -// relationship between SimpleFileWriters and IOThreadBackends.
|
| -class SimpleFileWriter::IOThreadProxy
|
| - : public base::RefCountedThreadSafe<SimpleFileWriter::IOThreadProxy> {
|
| - public:
|
| - IOThreadProxy(const base::WeakPtr<SimpleFileWriter>& simple_writer,
|
| - FileSystemContext* file_system_context)
|
| - : simple_writer_(simple_writer),
|
| - operation_(NULL),
|
| - file_system_context_(file_system_context) {
|
| - // The IO thread needs to be running for this class to work.
|
| - SimpleResourceLoaderBridge::EnsureIOThread();
|
| - io_thread_ = SimpleResourceLoaderBridge::GetIoThread();
|
| - main_thread_ = base::MessageLoopProxy::current();
|
| - }
|
| -
|
| - void Truncate(const FileSystemURL& url, int64 offset) {
|
| - if (!io_thread_->BelongsToCurrentThread()) {
|
| - io_thread_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&IOThreadProxy::Truncate, this, url, offset));
|
| - return;
|
| - }
|
| - if (FailIfNotWritable(url))
|
| - return;
|
| - DCHECK(!operation_);
|
| - operation_ = GetNewOperation(url);
|
| - operation_->Truncate(url, offset,
|
| - base::Bind(&IOThreadProxy::DidFinish, this));
|
| - }
|
| -
|
| - void Write(const FileSystemURL& url, const GURL& blob_url, int64 offset) {
|
| - if (!io_thread_->BelongsToCurrentThread()) {
|
| - io_thread_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&IOThreadProxy::Write, this, url, blob_url, offset));
|
| - return;
|
| - }
|
| - if (FailIfNotWritable(url))
|
| - return;
|
| - DCHECK(request_context_);
|
| - DCHECK(!operation_);
|
| - operation_ = GetNewOperation(url);
|
| - operation_->Write(request_context_, url, blob_url, offset,
|
| - base::Bind(&IOThreadProxy::DidWrite, this));
|
| - }
|
| -
|
| - void Cancel() {
|
| - if (!io_thread_->BelongsToCurrentThread()) {
|
| - io_thread_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&IOThreadProxy::Cancel, this));
|
| - return;
|
| - }
|
| - if (!operation_) {
|
| - DidFailOnMainThread(base::PLATFORM_FILE_ERROR_INVALID_OPERATION);
|
| - return;
|
| - }
|
| - operation_->Cancel(base::Bind(&IOThreadProxy::DidFinish, this));
|
| - }
|
| -
|
| - private:
|
| - friend class base::RefCountedThreadSafe<IOThreadProxy>;
|
| - virtual ~IOThreadProxy() {}
|
| -
|
| - FileSystemOperation* GetNewOperation( const FileSystemURL& url) {
|
| - return file_system_context_->CreateFileSystemOperation(url, NULL);
|
| - }
|
| -
|
| - // Returns true if it is not writable.
|
| - bool FailIfNotWritable(const FileSystemURL& url) {
|
| - if (url.type() == fileapi::kFileSystemTypeDragged) {
|
| - // Write is not allowed in isolate file system in SimpleFileWriter.
|
| - DidFailOnMainThread(base::PLATFORM_FILE_ERROR_SECURITY);
|
| - return true;
|
| - }
|
| - return false;
|
| - }
|
| -
|
| - void DidSucceedOnMainThread() {
|
| - if (!main_thread_->BelongsToCurrentThread()) {
|
| - main_thread_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&IOThreadProxy::DidSucceedOnMainThread, this));
|
| - return;
|
| - }
|
| - if (simple_writer_.get())
|
| - simple_writer_->DidSucceed();
|
| - }
|
| -
|
| - void DidFailOnMainThread(base::PlatformFileError error_code) {
|
| - if (!main_thread_->BelongsToCurrentThread()) {
|
| - main_thread_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&IOThreadProxy::DidFailOnMainThread, this, error_code));
|
| - return;
|
| - }
|
| - if (simple_writer_.get())
|
| - simple_writer_->DidFail(error_code);
|
| - }
|
| -
|
| - void DidWriteOnMainThread(int64 bytes, bool complete) {
|
| - if (!main_thread_->BelongsToCurrentThread()) {
|
| - main_thread_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&IOThreadProxy::DidWriteOnMainThread,
|
| - this, bytes, complete));
|
| - return;
|
| - }
|
| - if (simple_writer_.get())
|
| - simple_writer_->DidWrite(bytes, complete);
|
| - }
|
| -
|
| - void ClearOperation() {
|
| - DCHECK(io_thread_->BelongsToCurrentThread());
|
| - operation_ = NULL;
|
| - }
|
| -
|
| - void DidFinish(base::PlatformFileError result) {
|
| - if (result == base::PLATFORM_FILE_OK)
|
| - DidSucceedOnMainThread();
|
| - else
|
| - DidFailOnMainThread(result);
|
| - ClearOperation();
|
| - }
|
| -
|
| - void DidWrite(base::PlatformFileError result, int64 bytes, bool complete) {
|
| - if (result == base::PLATFORM_FILE_OK) {
|
| - DidWriteOnMainThread(bytes, complete);
|
| - if (complete)
|
| - ClearOperation();
|
| - } else {
|
| - DidFailOnMainThread(result);
|
| - ClearOperation();
|
| - }
|
| - }
|
| -
|
| - scoped_refptr<base::MessageLoopProxy> io_thread_;
|
| - scoped_refptr<base::MessageLoopProxy> main_thread_;
|
| -
|
| - // Only used on the main thread.
|
| - base::WeakPtr<SimpleFileWriter> simple_writer_;
|
| -
|
| - // Only used on the io thread.
|
| - FileSystemOperation* operation_;
|
| -
|
| - scoped_refptr<FileSystemContext> file_system_context_;
|
| -};
|
| -
|
| -
|
| -SimpleFileWriter::SimpleFileWriter(
|
| - const GURL& path,
|
| - WebFileWriterClient* client,
|
| - FileSystemContext* file_system_context)
|
| - : WebFileWriterBase(path, client),
|
| - file_system_context_(file_system_context),
|
| - io_thread_proxy_(new IOThreadProxy(AsWeakPtr(), file_system_context)) {
|
| -}
|
| -
|
| -SimpleFileWriter::~SimpleFileWriter() {
|
| -}
|
| -
|
| -void SimpleFileWriter::DoTruncate(const GURL& path, int64 offset) {
|
| - FileSystemURL url = file_system_context_->CrackURL(path);
|
| - io_thread_proxy_->Truncate(url, offset);
|
| -}
|
| -
|
| -void SimpleFileWriter::DoWrite(
|
| - const GURL& path, const GURL& blob_url, int64 offset) {
|
| - FileSystemURL url = file_system_context_->CrackURL(path);
|
| - io_thread_proxy_->Write(url, blob_url, offset);
|
| -}
|
| -
|
| -void SimpleFileWriter::DoCancel() {
|
| - io_thread_proxy_->Cancel();
|
| -}
|
|
|