summaryrefslogtreecommitdiffstats
path: root/content/child/fileapi
diff options
context:
space:
mode:
authorkinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-06 04:57:51 +0000
committerkinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-06 04:57:51 +0000
commit6ae1107bb2e65db6f4b098c584bae62ed7029dfb (patch)
treed5f20491ad4e5591b56f855cc42f5808264a785d /content/child/fileapi
parentbfa5b86995b246b5da53fe424d0bb8ec7d18302c (diff)
downloadchromium_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.cc9
-rw-r--r--content/child/fileapi/webfilewriter_impl.cc55
-rw-r--r--content/child/fileapi/webfilewriter_impl.h6
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();