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

Unified Diff: third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h

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/DataConsumerHandleTestUtil.h
diff --git a/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h b/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h
index 2506af4e00842c49be6d5ccd8afc48e7940f5f76..b9d1967cfefcee51cc9591e008a2f142389a1862 100644
--- a/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h
+++ b/third_party/WebKit/Source/modules/fetch/DataConsumerHandleTestUtil.h
@@ -38,6 +38,10 @@ public:
DISALLOW_NEW();
public:
void didGetReadable() override { }
+ WebTaskRunner* getTaskRunner() override
+ {
+ return Platform::current()->currentThread()->getWebTaskRunner();
+ }
};
// Thread has a WebThreadSupportingGC. It initializes / shutdowns
@@ -60,6 +64,7 @@ public:
~Thread();
WebThreadSupportingGC* thread() { return m_thread.get(); }
+ WebTaskRunner* taskRunner() { return m_thread->platformThread().getWebTaskRunner(); }
ExecutionContext* getExecutionContext() { return m_executionContext.get(); }
ScriptState* getScriptState() { return m_scriptState.get(); }
v8::Isolate* isolate() { return m_isolateHolder->isolate(); }
@@ -127,6 +132,11 @@ public:
m_holder->updatingThread()->postTask(location, std::move(task));
}
+ WebTaskRunner* getReadingThreadTaskRunner()
+ {
+ return m_holder->readingThread()->platformThread().getWebTaskRunner();
+ }
+
private:
Context()
: m_holder(nullptr) { }
@@ -270,6 +280,10 @@ public:
postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::resetReader, wrapPassRefPtr(this)));
postTaskToReadingThread(BLINK_FROM_HERE, crossThreadBind(&Self::signalDone, wrapPassRefPtr(this)));
}
+ WebTaskRunner* getTaskRunner() override
+ {
+ return m_context->getReadingThreadTaskRunner();
+ }
std::unique_ptr<WebDataConsumerHandle> m_handle;
};
@@ -300,6 +314,10 @@ public:
{
ASSERT_NOT_REACHED();
}
+ WebTaskRunner* getTaskRunner() override
+ {
+ return m_context->getReadingThreadTaskRunner();
+ }
std::unique_ptr<WebDataConsumerHandle> m_handle;
};
@@ -346,6 +364,7 @@ public:
MOCK_METHOD1(didFetchDataLoadedString, void(const String&));
MOCK_METHOD0(didFetchDataLoadStream, void());
MOCK_METHOD0(didFetchDataLoadFailed, void());
+ MOCK_METHOD0(getTaskRunner, WebTaskRunner*());
void didFetchDataLoadedArrayBuffer(DOMArrayBuffer* arrayBuffer) override
{
@@ -419,7 +438,7 @@ public:
Deque<Command> m_commands;
size_t m_offset;
- WebThread* m_readerThread;
+ std::unique_ptr<WebTaskRunner> m_readerTaskRunner;
Client* m_client;
Result m_result;
bool m_isHandleAttached;
@@ -459,12 +478,14 @@ public:
public:
using OnFinishedReading = WTF::Function<void(std::unique_ptr<HandleReadResult>)>;
- HandleReader(std::unique_ptr<WebDataConsumerHandle>, std::unique_ptr<OnFinishedReading>);
+ HandleReader(std::unique_ptr<WebDataConsumerHandle>, std::unique_ptr<OnFinishedReading>, std::unique_ptr<WebTaskRunner> readerTaskRunner);
void didGetReadable() override;
+ WebTaskRunner* getTaskRunner() override;
private:
void runOnFinishedReading(std::unique_ptr<HandleReadResult>);
+ std::unique_ptr<WebTaskRunner> m_readerTaskRunner;
std::unique_ptr<WebDataConsumerHandle::Reader> m_reader;
std::unique_ptr<OnFinishedReading> m_onFinishedReading;
Vector<char> m_data;
@@ -477,12 +498,14 @@ public:
public:
using OnFinishedReading = WTF::Function<void(std::unique_ptr<HandleReadResult>)>;
- HandleTwoPhaseReader(std::unique_ptr<WebDataConsumerHandle>, std::unique_ptr<OnFinishedReading>);
+ HandleTwoPhaseReader(std::unique_ptr<WebDataConsumerHandle>, std::unique_ptr<OnFinishedReading>, std::unique_ptr<WebTaskRunner>);
void didGetReadable() override;
+ WebTaskRunner* getTaskRunner() override;
private:
void runOnFinishedReading(std::unique_ptr<HandleReadResult>);
+ std::unique_ptr<WebTaskRunner> m_readerTaskRunner;
std::unique_ptr<WebDataConsumerHandle::Reader> m_reader;
std::unique_ptr<OnFinishedReading> m_onFinishedReading;
Vector<char> m_data;
@@ -499,7 +522,7 @@ public:
, m_event(wrapUnique(new WaitableEvent()))
, m_isDone(false)
{
- m_thread->thread()->postTask(BLINK_FROM_HERE, crossThreadBind(&HandleReaderRunner::start, crossThreadUnretained(this), passed(std::move(handle))));
+ m_thread->thread()->postTask(BLINK_FROM_HERE, crossThreadBind(&HandleReaderRunner::start, crossThreadUnretained(this), passed(std::move(handle)), passed(m_thread->taskRunner()->clone())));
}
~HandleReaderRunner()
{
@@ -516,9 +539,9 @@ public:
}
private:
- void start(std::unique_ptr<WebDataConsumerHandle> handle)
+ void start(std::unique_ptr<WebDataConsumerHandle> handle, std::unique_ptr<WebTaskRunner> readerTaskRunner)
{
- m_handleReader = wrapUnique(new T(std::move(handle), WTF::bind(&HandleReaderRunner::onFinished, WTF::unretained(this))));
+ m_handleReader = wrapUnique(new T(std::move(handle), WTF::bind(&HandleReaderRunner::onFinished, WTF::unretained(this)), std::move(readerTaskRunner)));
}
void onFinished(std::unique_ptr<HandleReadResult> result)

Powered by Google App Engine
This is Rietveld 408576698