Commit 849d5f90 authored by Hiroshige Hayashizaki's avatar Hiroshige Hayashizaki Committed by Commit Bot

Remove ScriptLoader::Execute()

This CL replaces ScriptLoader::Execute() with
PendingScript::ExecuteScriptBlock().

To do this, this CL clears ScriptLoader::pending_script_ in
ScriptLoader::PendingScriptFinished(), i.e. slightly before
ScriptLoader::Execute().

Bug: 842349
Change-Id: Ia010d370ce1e139808b39e66ad4557f9151e2a47
Reviewed-on: https://chromium-review.googlesource.com/1054553
Commit-Queue: Hiroshige Hayashizaki <hiroshige@chromium.org>
Reviewed-by: default avatarKouhei Ueno <kouhei@chromium.org>
Cr-Commit-Position: refs/heads/master@{#561351}
parent 4c718426
...@@ -134,7 +134,9 @@ class CORE_EXPORT PendingScript ...@@ -134,7 +134,9 @@ class CORE_EXPORT PendingScript
// https://html.spec.whatwg.org/multipage/scripting.html#execute-the-script-block // https://html.spec.whatwg.org/multipage/scripting.html#execute-the-script-block
// The single entry point of script execution. // The single entry point of script execution.
// PendingScript::Dispose() is called in ExecuteScriptBlock(). // PendingScript::Dispose() is called in ExecuteScriptBlock().
void ExecuteScriptBlock(const KURL&); //
// This is virtual only for testing.
virtual void ExecuteScriptBlock(const KURL&);
protected: protected:
PendingScript(ScriptElementBase*, const TextPosition& starting_position); PendingScript(ScriptElementBase*, const TextPosition& starting_position);
......
...@@ -750,15 +750,6 @@ PendingScript* ScriptLoader::TakePendingScript( ...@@ -750,15 +750,6 @@ PendingScript* ScriptLoader::TakePendingScript(
return pending_script; return pending_script;
} }
void ScriptLoader::Execute() {
DCHECK(!will_be_parser_executed_);
DCHECK(pending_script_->IsControlledByScriptRunner());
DCHECK(pending_script_->IsExternalOrModule());
PendingScript* pending_script = pending_script_;
pending_script_ = nullptr;
pending_script->ExecuteScriptBlock(NullURL());
}
void ScriptLoader::PendingScriptFinished(PendingScript* pending_script) { void ScriptLoader::PendingScriptFinished(PendingScript* pending_script) {
DCHECK(!will_be_parser_executed_); DCHECK(!will_be_parser_executed_);
DCHECK_EQ(pending_script_, pending_script); DCHECK_EQ(pending_script_, pending_script);
...@@ -774,6 +765,7 @@ void ScriptLoader::PendingScriptFinished(PendingScript* pending_script) { ...@@ -774,6 +765,7 @@ void ScriptLoader::PendingScriptFinished(PendingScript* pending_script) {
DCHECK_EQ(pending_script->GetElement()->Loader(), this); DCHECK_EQ(pending_script->GetElement()->Loader(), this);
context_document->GetScriptRunner()->NotifyScriptReady(pending_script); context_document->GetScriptRunner()->NotifyScriptReady(pending_script);
pending_script_->StopWatchingForLoad(); pending_script_->StopWatchingForLoad();
pending_script_ = nullptr;
} }
bool ScriptLoader::IgnoresLoadRequest() const { bool ScriptLoader::IgnoresLoadRequest() const {
......
...@@ -89,9 +89,6 @@ class CORE_EXPORT ScriptLoader : public GarbageCollectedFinalized<ScriptLoader>, ...@@ -89,9 +89,6 @@ class CORE_EXPORT ScriptLoader : public GarbageCollectedFinalized<ScriptLoader>,
// This should be called only once. // This should be called only once.
PendingScript* TakePendingScript(ScriptSchedulingType); PendingScript* TakePendingScript(ScriptSchedulingType);
// The entry point only for ScriptRunner that wraps ExecuteScriptBlock().
virtual void Execute();
bool WillBeParserExecuted() const { return will_be_parser_executed_; } bool WillBeParserExecuted() const { return will_be_parser_executed_; }
bool ReadyToBeParserExecuted() const { return ready_to_be_parser_executed_; } bool ReadyToBeParserExecuted() const { return ready_to_be_parser_executed_; }
bool WillExecuteWhenDocumentFinishedParsing() const { bool WillExecuteWhenDocumentFinishedParsing() const {
......
...@@ -215,13 +215,7 @@ bool ScriptRunner::ExecuteInOrderTask() { ...@@ -215,13 +215,7 @@ bool ScriptRunner::ExecuteInOrderTask() {
DCHECK_EQ(pending_script->GetSchedulingType(), ScriptSchedulingType::kInOrder) DCHECK_EQ(pending_script->GetSchedulingType(), ScriptSchedulingType::kInOrder)
<< "In-order scripts queue should not contain any async script."; << "In-order scripts queue should not contain any async script.";
// TODO(hiroshige): Move ExecuteScriptBlock() to PendingScript and remove pending_script->ExecuteScriptBlock(NullURL());
// the use of ScriptLoader here.
ScriptLoader* script_loader = pending_script->GetElement()->Loader();
DCHECK(script_loader);
DCHECK_EQ(script_loader->GetPendingScriptIfControlledByScriptRunner(),
pending_script);
script_loader->Execute();
document_->DecrementLoadEventDelayCount(); document_->DecrementLoadEventDelayCount();
return true; return true;
...@@ -246,13 +240,7 @@ bool ScriptRunner::ExecuteAsyncTask() { ...@@ -246,13 +240,7 @@ bool ScriptRunner::ExecuteAsyncTask() {
DCHECK_EQ(pending_script->GetSchedulingType(), ScriptSchedulingType::kAsync) DCHECK_EQ(pending_script->GetSchedulingType(), ScriptSchedulingType::kAsync)
<< "Async scripts queue should not contain any in-order script."; << "Async scripts queue should not contain any in-order script.";
// TODO(hiroshige): Move ExecuteScriptBlock() to PendingScript and remove pending_script->ExecuteScriptBlock(NullURL());
// the use of ScriptLoader here.
ScriptLoader* script_loader = pending_script->GetElement()->Loader();
DCHECK(script_loader);
DCHECK_EQ(script_loader->GetPendingScriptIfControlledByScriptRunner(),
pending_script);
script_loader->Execute();
document_->DecrementLoadEventDelayCount(); document_->DecrementLoadEventDelayCount();
return true; return true;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment