Index: Source/core/html/parser/HTMLParserScheduler.cpp |
diff --git a/Source/core/html/parser/HTMLParserScheduler.cpp b/Source/core/html/parser/HTMLParserScheduler.cpp |
index 68797fcc39e0e387c22f2ce6961b2d62e68c4eed..50f6ddd0ba73722bd7920317f2d595a8b2baeea5 100644 |
--- a/Source/core/html/parser/HTMLParserScheduler.cpp |
+++ b/Source/core/html/parser/HTMLParserScheduler.cpp |
@@ -30,6 +30,8 @@ |
#include "core/html/parser/HTMLDocumentParser.h" |
#include "core/frame/FrameView.h" |
#include "platform/scheduler/Scheduler.h" |
+#include "public/platform/Platform.h" |
+#include "public/platform/WebTraceLocation.h" |
#include "wtf/CurrentTime.h" |
namespace blink { |
@@ -82,44 +84,36 @@ void SpeculationsPumpSession::addedElementTokens(size_t count) |
HTMLParserScheduler::HTMLParserScheduler(HTMLDocumentParser* parser) |
: m_parser(parser) |
- , m_continueNextChunkTimer(this, &HTMLParserScheduler::continueNextChunkTimerFired) |
+ , m_cancelableContinueParse(WTF::bind(&HTMLDocumentParser::resumeParsingAfterYield, m_parser)) |
, m_isSuspendedWithActiveTimer(false) |
{ |
} |
HTMLParserScheduler::~HTMLParserScheduler() |
{ |
- m_continueNextChunkTimer.stop(); |
-} |
- |
-void HTMLParserScheduler::continueNextChunkTimerFired(Timer<HTMLParserScheduler>* timer) |
-{ |
- ASSERT_UNUSED(timer, timer == &m_continueNextChunkTimer); |
- m_parser->resumeParsingAfterYield(); |
} |
void HTMLParserScheduler::scheduleForResume() |
{ |
- ASSERT(!m_isSuspendedWithActiveTimer); |
- m_continueNextChunkTimer.startOneShot(0, FROM_HERE); |
+ Platform::current()->scheduler()->postLoadingTask(WebTraceLocation(FROM_HERE), m_cancelableContinueParse.task()); |
} |
void HTMLParserScheduler::suspend() |
{ |
ASSERT(!m_isSuspendedWithActiveTimer); |
- if (!m_continueNextChunkTimer.isActive()) |
+ if (!m_cancelableContinueParse.isPending()) |
return; |
m_isSuspendedWithActiveTimer = true; |
- m_continueNextChunkTimer.stop(); |
+ m_cancelableContinueParse.cancel(); |
} |
void HTMLParserScheduler::resume() |
{ |
- ASSERT(!m_continueNextChunkTimer.isActive()); |
+ ASSERT(!m_cancelableContinueParse.isPending()); |
if (!m_isSuspendedWithActiveTimer) |
return; |
m_isSuspendedWithActiveTimer = false; |
- m_continueNextChunkTimer.startOneShot(0, FROM_HERE); |
+ Platform::current()->scheduler()->postLoadingTask(WebTraceLocation(FROM_HERE), m_cancelableContinueParse.task()); |
Sami
2015/01/26 17:18:34
I think it's a little unfortunate that we need to
alex clarke (OOO till 29th)
2015/01/26 17:31:35
If we do that we'll have the following nested thin
|
} |
inline bool HTMLParserScheduler::shouldYield(const SpeculationsPumpSession& session, bool startingScript) const |
@@ -158,7 +152,7 @@ bool HTMLParserScheduler::yieldIfNeeded(const SpeculationsPumpSession& session, |
void HTMLParserScheduler::forceResumeAfterYield() |
{ |
- ASSERT(!m_continueNextChunkTimer.isActive()); |
+ ASSERT(!m_cancelableContinueParse.isPending()); |
m_isSuspendedWithActiveTimer = true; |
} |