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

Unified Diff: third_party/WebKit/Source/core/html/parser/HTMLParserScheduler.cpp

Issue 2554813002: Make HTMLParserScheduler inherit from ActiveDOMObject
Patch Set: Created 4 years 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
« no previous file with comments | « third_party/WebKit/Source/core/html/parser/HTMLParserScheduler.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/html/parser/HTMLParserScheduler.cpp
diff --git a/third_party/WebKit/Source/core/html/parser/HTMLParserScheduler.cpp b/third_party/WebKit/Source/core/html/parser/HTMLParserScheduler.cpp
index f651555f931ad06a7169e80c743029b2b23ade5b..2d25ce634468e995891ef09ab8cd554a0d3c7da1 100644
--- a/third_party/WebKit/Source/core/html/parser/HTMLParserScheduler.cpp
+++ b/third_party/WebKit/Source/core/html/parser/HTMLParserScheduler.cpp
@@ -56,9 +56,18 @@ void SpeculationsPumpSession::addedElementTokens(size_t count) {
m_processedElementTokens += count;
}
-HTMLParserScheduler::HTMLParserScheduler(HTMLDocumentParser* parser,
+HTMLParserScheduler* HTMLParserScheduler::create(
+ Document& document,
+ HTMLDocumentParser* parser,
+ WebTaskRunner* loadingTaskRunner) {
+ return new HTMLParserScheduler(document, parser, loadingTaskRunner);
+}
+
+HTMLParserScheduler::HTMLParserScheduler(Document& document,
+ HTMLDocumentParser* parser,
WebTaskRunner* loadingTaskRunner)
- : m_parser(parser),
+ : ActiveDOMObject(&document),
+ m_parser(parser),
m_loadingTaskRunner(loadingTaskRunner->clone()),
m_isSuspendedWithActiveTimer(false) {}
@@ -66,6 +75,7 @@ HTMLParserScheduler::~HTMLParserScheduler() {}
DEFINE_TRACE(HTMLParserScheduler) {
visitor->trace(m_parser);
+ ActiveDOMObject::trace(visitor);
}
bool HTMLParserScheduler::isScheduledForResume() const {
@@ -74,6 +84,11 @@ bool HTMLParserScheduler::isScheduledForResume() const {
}
void HTMLParserScheduler::scheduleForResume() {
+ if (getExecutionContext()->activeDOMObjectsAreSuspended()) {
+ DCHECK(!m_cancellableContinueParseTaskHandle.isActive());
+ m_isSuspendedWithActiveTimer = true;
+ return;
+ }
DCHECK(!m_isSuspendedWithActiveTimer);
m_cancellableContinueParseTaskHandle =
m_loadingTaskRunner->postCancellableTask(
@@ -140,11 +155,6 @@ bool HTMLParserScheduler::yieldIfNeeded(const SpeculationsPumpSession& session,
return false;
}
-void HTMLParserScheduler::forceResumeAfterYield() {
- DCHECK(!m_cancellableContinueParseTaskHandle.isActive());
- m_isSuspendedWithActiveTimer = true;
-}
-
void HTMLParserScheduler::continueParsing() {
m_parser->resumeParsingAfterYield();
}
« no previous file with comments | « third_party/WebKit/Source/core/html/parser/HTMLParserScheduler.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698