Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Unified Diff: webkit/tools/test_shell/simple_file_writer.cc

Issue 15946006: Move C++ code from webkit/tools/test_shell to webkit/support (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix npapi_test_plugin Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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();
-}
« no previous file with comments | « webkit/tools/test_shell/simple_file_writer.h ('k') | webkit/tools/test_shell/simple_resource_loader_bridge.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698