diff options
author | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-06 04:57:51 +0000 |
---|---|---|
committer | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-06 04:57:51 +0000 |
commit | 6ae1107bb2e65db6f4b098c584bae62ed7029dfb (patch) | |
tree | d5f20491ad4e5591b56f855cc42f5808264a785d /content/child/fileapi | |
parent | bfa5b86995b246b5da53fe424d0bb8ec7d18302c (diff) | |
download | chromium_src-6ae1107bb2e65db6f4b098c584bae62ed7029dfb.zip chromium_src-6ae1107bb2e65db6f4b098c584bae62ed7029dfb.tar.gz chromium_src-6ae1107bb2e65db6f4b098c584bae62ed7029dfb.tar.bz2 |
Revert 215787 "Support synchronous mode in WebFileWriterImpl"
> Support synchronous mode in WebFileWriterImpl
>
> BUG=257349
> TEST=no behavioral change yet
> R=tzik@chromium.org
>
> Review URL: https://codereview.chromium.org/21902002
TBR=kinuko@chromium.org
Review URL: https://codereview.chromium.org/22300004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@215794 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/child/fileapi')
-rw-r--r-- | content/child/fileapi/webfilesystem_impl.cc | 9 | ||||
-rw-r--r-- | content/child/fileapi/webfilewriter_impl.cc | 55 | ||||
-rw-r--r-- | content/child/fileapi/webfilewriter_impl.h | 6 |
3 files changed, 12 insertions, 58 deletions
diff --git a/content/child/fileapi/webfilesystem_impl.cc b/content/child/fileapi/webfilesystem_impl.cc index 052bce4..78952b5 100644 --- a/content/child/fileapi/webfilesystem_impl.cc +++ b/content/child/fileapi/webfilesystem_impl.cc @@ -252,11 +252,8 @@ void DidCreateFileWriter( callbacks->didFail(WebKit::WebFileErrorInvalidState); return; } - WebFileWriterImpl::Type type = callbacks->shouldBlockUntilCompletion() ? - WebFileWriterImpl::TYPE_SYNC : WebFileWriterImpl::TYPE_ASYNC; callbacks->didCreateFileWriter( - new WebFileWriterImpl(path, client, type, main_thread_loop), - file_info.size); + new WebFileWriterImpl(path, client, main_thread_loop), file_info.size); } void CreateFileWriterCallbackAdapter( @@ -491,9 +488,7 @@ base::Unretained(waitable_results))), WebKit::WebFileWriter* WebFileSystemImpl::createFileWriter( const WebURL& path, WebKit::WebFileWriterClient* client) { - return new WebFileWriterImpl(GURL(path), client, - WebFileWriterImpl::TYPE_ASYNC, - main_thread_loop_.get()); + return new WebFileWriterImpl(GURL(path), client, main_thread_loop_.get()); } void WebFileSystemImpl::createFileWriter( diff --git a/content/child/fileapi/webfilewriter_impl.cc b/content/child/fileapi/webfilewriter_impl.cc index 8a08b28..881c57c 100644 --- a/content/child/fileapi/webfilewriter_impl.cc +++ b/content/child/fileapi/webfilewriter_impl.cc @@ -6,7 +6,6 @@ #include "base/bind.h" #include "base/platform_file.h" -#include "base/synchronization/waitable_event.h" #include "content/child/child_thread.h" #include "content/child/fileapi/file_system_dispatcher.h" #include "webkit/child/worker_task_runner.h" @@ -32,13 +31,9 @@ typedef FileSystemDispatcher::WriteCallback WriteCallback; class WebFileWriterImpl::WriterBridge : public base::RefCountedThreadSafe<WriterBridge> { public: - WriterBridge(WebFileWriterImpl::Type type) + WriterBridge() : request_id_(0), - thread_id_(WorkerTaskRunner::Instance()->CurrentWorkerId()), - written_bytes_(0) { - if (type == WebFileWriterImpl::TYPE_SYNC) - waitable_event_.reset(new base::WaitableEvent(false, false)); - } + thread_id_(WorkerTaskRunner::Instance()->CurrentWorkerId()) {} void Truncate(const GURL& path, int64 offset, const StatusCallback& status_callback) { @@ -72,26 +67,12 @@ class WebFileWriterImpl::WriterBridge base::Bind(&WriterBridge::DidFinish, this)); } - base::WaitableEvent* waitable_event() { - return waitable_event_.get(); - } - - void WaitAndRun() { - waitable_event_->Wait(); - DCHECK(!results_closure_.is_null()); - results_closure_.Run(); - written_bytes_ = 0; - } - private: friend class base::RefCountedThreadSafe<WriterBridge>; virtual ~WriterBridge() {} void DidWrite(int64 bytes, bool complete) { - written_bytes_ += bytes; - if (waitable_event_ && !complete) - return; - PostTaskToWorker(base::Bind(write_callback_, written_bytes_, complete)); + PostTaskToWorker(base::Bind(write_callback_, bytes, complete)); } void DidFinish(base::PlatformFileError status) { @@ -99,36 +80,24 @@ class WebFileWriterImpl::WriterBridge } void PostTaskToWorker(const base::Closure& closure) { - if (!thread_id_) { - DCHECK(!waitable_event_); + if (!thread_id_) closure.Run(); - return; - } - if (waitable_event_) { - results_closure_ = closure; - waitable_event_->Signal(); - return; - } - WorkerTaskRunner::Instance()->PostTask(thread_id_, closure); - written_bytes_ = 0; + else + WorkerTaskRunner::Instance()->PostTask(thread_id_, closure); } StatusCallback status_callback_; WriteCallback write_callback_; int request_id_; int thread_id_; - int written_bytes_; - scoped_ptr<base::WaitableEvent> waitable_event_; - base::Closure results_closure_; }; WebFileWriterImpl::WebFileWriterImpl( const GURL& path, WebKit::WebFileWriterClient* client, - Type type, base::MessageLoopProxy* main_thread_loop) : WebFileWriterBase(path, client), main_thread_loop_(main_thread_loop), - bridge_(new WriterBridge(type)) { + bridge_(new WriterBridge) { } WebFileWriterImpl::~WebFileWriterImpl() { @@ -154,14 +123,10 @@ void WebFileWriterImpl::DoCancel() { } void WebFileWriterImpl::RunOnMainThread(const base::Closure& closure) { - if (main_thread_loop_->RunsTasksOnCurrentThread()) { - DCHECK(!bridge_->waitable_event()); + if (main_thread_loop_->RunsTasksOnCurrentThread()) closure.Run(); - return; - } - main_thread_loop_->PostTask(FROM_HERE, closure); - if (bridge_->waitable_event()) - bridge_->WaitAndRun(); + else + main_thread_loop_->PostTask(FROM_HERE, closure); } } // namespace content diff --git a/content/child/fileapi/webfilewriter_impl.h b/content/child/fileapi/webfilewriter_impl.h index e7b49b6..a9e574e 100644 --- a/content/child/fileapi/webfilewriter_impl.h +++ b/content/child/fileapi/webfilewriter_impl.h @@ -16,14 +16,8 @@ namespace content { class WebFileWriterImpl : public fileapi::WebFileWriterBase, public base::SupportsWeakPtr<WebFileWriterImpl> { public: - enum Type { - TYPE_SYNC, - TYPE_ASYNC, - }; - WebFileWriterImpl(const GURL& path, WebKit::WebFileWriterClient* client, - Type type, base::MessageLoopProxy* main_thread_loop); virtual ~WebFileWriterImpl(); |