| 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..c2d0eb3d56fcee74a3b84c99a99d888706dbe9c7 100644
|
| --- a/Source/core/html/parser/HTMLParserScheduler.cpp
|
| +++ b/Source/core/html/parser/HTMLParserScheduler.cpp
|
| @@ -82,44 +82,38 @@ void SpeculationsPumpSession::addedElementTokens(size_t count)
|
|
|
| HTMLParserScheduler::HTMLParserScheduler(HTMLDocumentParser* parser)
|
| : m_parser(parser)
|
| - , m_continueNextChunkTimer(this, &HTMLParserScheduler::continueNextChunkTimerFired)
|
| + , m_cancellableContinueParse(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);
|
| + Scheduler::shared()->postLoadingTask(FROM_HERE, m_cancellableContinueParse.task());
|
| }
|
|
|
| void HTMLParserScheduler::suspend()
|
| {
|
| ASSERT(!m_isSuspendedWithActiveTimer);
|
| - if (!m_continueNextChunkTimer.isActive())
|
| + if (!m_cancellableContinueParse.isPending())
|
| return;
|
| m_isSuspendedWithActiveTimer = true;
|
| - m_continueNextChunkTimer.stop();
|
| + m_cancellableContinueParse.cancel();
|
| }
|
|
|
| void HTMLParserScheduler::resume()
|
| {
|
| - ASSERT(!m_continueNextChunkTimer.isActive());
|
| + ASSERT(!m_cancellableContinueParse.isPending());
|
| if (!m_isSuspendedWithActiveTimer)
|
| return;
|
| m_isSuspendedWithActiveTimer = false;
|
| - m_continueNextChunkTimer.startOneShot(0, FROM_HERE);
|
| +
|
| + Scheduler::shared()->postLoadingTask(FROM_HERE, m_cancellableContinueParse.task());
|
| }
|
|
|
| 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_cancellableContinueParse.isPending());
|
| m_isSuspendedWithActiveTimer = true;
|
| }
|
|
|
|
|