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

Unified Diff: third_party/WebKit/Source/modules/fetch/FetchFormDataConsumerHandle.cpp

Issue 2177243002: Use per-frame TaskRunner instead of thread's default in DataConsumerHandle (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@data_consumer_handle_unique_ptr
Patch Set: update Created 4 years, 5 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: third_party/WebKit/Source/modules/fetch/FetchFormDataConsumerHandle.cpp
diff --git a/third_party/WebKit/Source/modules/fetch/FetchFormDataConsumerHandle.cpp b/third_party/WebKit/Source/modules/fetch/FetchFormDataConsumerHandle.cpp
index 2f326a1afa11716bf190636642bbbfd6632d60dd..bd95692fa59ed16ac208f6ff409b3c3e094ddefb 100644
--- a/third_party/WebKit/Source/modules/fetch/FetchFormDataConsumerHandle.cpp
+++ b/third_party/WebKit/Source/modules/fetch/FetchFormDataConsumerHandle.cpp
@@ -6,6 +6,7 @@
#include "modules/fetch/DataConsumerHandleUtil.h"
#include "modules/fetch/FetchBlobDataConsumerHandle.h"
+#include "public/platform/WebTaskRunner.h"
#include "wtf/PtrUtil.h"
#include "wtf/ThreadingPrimitives.h"
#include "wtf/Vector.h"
@@ -36,7 +37,7 @@ class FetchFormDataConsumerHandle::Context : public ThreadSafeRefCounted<Context
WTF_MAKE_NONCOPYABLE(Context);
public:
virtual ~Context() {}
- virtual std::unique_ptr<FetchDataConsumerHandle::Reader> obtainReader(Client*) = 0;
+ virtual std::unique_ptr<FetchDataConsumerHandle::Reader> obtainReader(Client*, std::unique_ptr<WebTaskRunner>) = 0;
protected:
explicit Context() {}
@@ -49,12 +50,12 @@ public:
static PassRefPtr<SimpleContext> create(const void* data, size_t size) { return adoptRef(new SimpleContext(data, size)); }
static PassRefPtr<SimpleContext> create(PassRefPtr<EncodedFormData> body) { return adoptRef(new SimpleContext(body)); }
- std::unique_ptr<Reader> obtainReader(Client* client) override
+ std::unique_ptr<Reader> obtainReader(Client* client, std::unique_ptr<WebTaskRunner> readerTaskRunner) override
{
// For memory barrier.
Mutex m;
MutexLocker locker(m);
- return ReaderImpl::create(this, client);
+ return ReaderImpl::create(this, client, std::move(readerTaskRunner));
}
PassRefPtr<BlobDataHandle> drainAsBlobDataHandle()
@@ -122,7 +123,10 @@ private:
class ReaderImpl final : public FetchDataConsumerHandle::Reader {
WTF_MAKE_NONCOPYABLE(ReaderImpl);
public:
- static std::unique_ptr<ReaderImpl> create(PassRefPtr<SimpleContext> context, Client* client) { return wrapUnique(new ReaderImpl(context, client)); }
+ static std::unique_ptr<ReaderImpl> create(PassRefPtr<SimpleContext> context, Client* client, std::unique_ptr<WebTaskRunner> readerTaskRunner)
+ {
+ return wrapUnique(new ReaderImpl(context, client, std::move(readerTaskRunner)));
+ }
Result read(void* data, size_t size, Flags flags, size_t* readSize) override
{
return m_context->read(data, size, flags, readSize);
@@ -146,7 +150,9 @@ private:
}
private:
- ReaderImpl(PassRefPtr<SimpleContext> context, Client* client) : m_context(context), m_notifier(client) {}
+ ReaderImpl(PassRefPtr<SimpleContext> context, Client* client, std::unique_ptr<WebTaskRunner> readerTaskRunner)
+ : m_context(context)
+ , m_notifier(client, readerTaskRunner.get()) {}
RefPtr<SimpleContext> m_context;
NotifyOnReaderCreationHelper m_notifier;
@@ -185,19 +191,22 @@ public:
return adoptRef(new ComplexContext(executionContext, formData, factory));
}
- std::unique_ptr<FetchFormDataConsumerHandle::Reader> obtainReader(Client* client) override
+ std::unique_ptr<FetchFormDataConsumerHandle::Reader> obtainReader(Client* client, std::unique_ptr<WebTaskRunner> readerTaskRunner) override
{
// For memory barrier.
Mutex m;
MutexLocker locker(m);
- return ReaderImpl::create(this, client);
+ return ReaderImpl::create(this, client, std::move(readerTaskRunner));
}
private:
class ReaderImpl final : public FetchDataConsumerHandle::Reader {
WTF_MAKE_NONCOPYABLE(ReaderImpl);
public:
- static std::unique_ptr<ReaderImpl> create(PassRefPtr<ComplexContext> context, Client* client) { return wrapUnique(new ReaderImpl(context, client)); }
+ static std::unique_ptr<ReaderImpl> create(PassRefPtr<ComplexContext> context, Client* client, std::unique_ptr<WebTaskRunner> readerTaskRunner)
+ {
+ return wrapUnique(new ReaderImpl(context, client, std::move(readerTaskRunner)));
+ }
Result read(void* data, size_t size, Flags flags, size_t* readSize) override
{
Result r = m_reader->read(data, size, flags, readSize);
@@ -237,7 +246,9 @@ private:
return formData.release();
}
private:
- ReaderImpl(PassRefPtr<ComplexContext> context, Client* client) : m_context(context), m_reader(m_context->m_handle->obtainFetchDataReader(client)) {}
+ ReaderImpl(PassRefPtr<ComplexContext> context, Client* client, std::unique_ptr<WebTaskRunner> readerTaskRunner)
+ : m_context(context)
+ , m_reader(m_context->m_handle->obtainFetchDataReader(client, std::move(readerTaskRunner))) {}
RefPtr<ComplexContext> m_context;
std::unique_ptr<FetchDataConsumerHandle::Reader> m_reader;
@@ -330,9 +341,9 @@ FetchFormDataConsumerHandle::FetchFormDataConsumerHandle(ExecutionContext* execu
}
FetchFormDataConsumerHandle::~FetchFormDataConsumerHandle() {}
-std::unique_ptr<FetchDataConsumerHandle::Reader> FetchFormDataConsumerHandle::obtainFetchDataReader(Client* client)
+std::unique_ptr<FetchDataConsumerHandle::Reader> FetchFormDataConsumerHandle::obtainFetchDataReader(Client* client, std::unique_ptr<WebTaskRunner> readerTaskRunner)
{
- return m_context->obtainReader(client);
+ return m_context->obtainReader(client, std::move(readerTaskRunner));
}
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698