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

Unified Diff: sky/engine/core/loader/MojoLoader.cpp

Issue 650903006: Factor DrainDataPipeJob out of MojoLoader (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 2 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: sky/engine/core/loader/MojoLoader.cpp
diff --git a/sky/engine/core/loader/MojoLoader.cpp b/sky/engine/core/loader/MojoLoader.cpp
index 64a3c4c5364e4328adcd259addba8552e28be90b..f56f48ba9c5d75f0f90a6f94d4e5c534ed3a297e 100644
--- a/sky/engine/core/loader/MojoLoader.cpp
+++ b/sky/engine/core/loader/MojoLoader.cpp
@@ -21,7 +21,6 @@ using namespace mojo;
MojoLoader::MojoLoader(LocalFrame& frame)
: m_frame(frame)
- , m_weakFactory(this)
{
}
@@ -44,39 +43,18 @@ void MojoLoader::load(const KURL& url, ScopedDataPipeConsumerHandle responseStre
// response headers and set them on Document::contentLanguage.
document->startParsing();
- m_responseStream = responseStream.Pass();
- readMore();
-}
-void MojoLoader::readMore()
-{
- const void* buf = nullptr;
- uint32_t buf_size = 0;
- MojoResult rv = BeginReadDataRaw(m_responseStream.get(),
- &buf, &buf_size, MOJO_READ_DATA_FLAG_NONE);
- if (rv == MOJO_RESULT_OK) {
- m_frame.document()->parser()->appendBytes(static_cast<const char*>(buf), buf_size);
- EndReadDataRaw(m_responseStream.get(), buf_size);
- waitToReadMore();
- } else if (rv == MOJO_RESULT_SHOULD_WAIT) {
- waitToReadMore();
- } else if (rv == MOJO_RESULT_FAILED_PRECONDITION) {
- m_frame.document()->parser()->finish();
- } else {
- ASSERT_NOT_REACHED();
- }
+ m_drainJob = adoptPtr(new DrainDataPipeJob(this, responseStream.Pass()));
}
-void MojoLoader::waitToReadMore()
+void MojoLoader::OnDataAvailable(const void* data, size_t numberOfBytes)
{
- m_handleWatcher.Start(m_responseStream.get(),
- MOJO_HANDLE_SIGNAL_READABLE, MOJO_DEADLINE_INDEFINITE,
- base::Bind(&MojoLoader::moreDataReady,m_weakFactory.GetWeakPtr()));
+ m_frame.document()->parser()->appendBytes(static_cast<const char*>(data), numberOfBytes);
}
-void MojoLoader::moreDataReady(MojoResult result)
+void MojoLoader::OnDataComplete()
{
- readMore();
+ m_frame.document()->parser()->finish();
}
}

Powered by Google App Engine
This is Rietveld 408576698