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
// https://html.spec.whatwg.org/multipage/scripting.html#execute-the-script-block
// The single entry point of script execution.
// PendingScript::Dispose() is called in ExecuteScriptBlock().
void ExecuteScriptBlock(const KURL&);
//
// This is virtual only for testing.
virtual void ExecuteScriptBlock(const KURL&);
protected:
PendingScript(ScriptElementBase*, const TextPosition& starting_position);
......
......@@ -750,15 +750,6 @@ PendingScript* ScriptLoader::TakePendingScript(
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) {
DCHECK(!will_be_parser_executed_);
DCHECK_EQ(pending_script_, pending_script);
......@@ -774,6 +765,7 @@ void ScriptLoader::PendingScriptFinished(PendingScript* pending_script) {
DCHECK_EQ(pending_script->GetElement()->Loader(), this);
context_document->GetScriptRunner()->NotifyScriptReady(pending_script);
pending_script_->StopWatchingForLoad();
pending_script_ = nullptr;
}
bool ScriptLoader::IgnoresLoadRequest() const {
......
......@@ -89,9 +89,6 @@ class CORE_EXPORT ScriptLoader : public GarbageCollectedFinalized<ScriptLoader>,
// This should be called only once.
PendingScript* TakePendingScript(ScriptSchedulingType);
// The entry point only for ScriptRunner that wraps ExecuteScriptBlock().
virtual void Execute();
bool WillBeParserExecuted() const { return will_be_parser_executed_; }
bool ReadyToBeParserExecuted() const { return ready_to_be_parser_executed_; }
bool WillExecuteWhenDocumentFinishedParsing() const {
......
......@@ -215,13 +215,7 @@ bool ScriptRunner::ExecuteInOrderTask() {
DCHECK_EQ(pending_script->GetSchedulingType(), ScriptSchedulingType::kInOrder)
<< "In-order scripts queue should not contain any async script.";
// TODO(hiroshige): Move ExecuteScriptBlock() to PendingScript and remove
// 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();
pending_script->ExecuteScriptBlock(NullURL());
document_->DecrementLoadEventDelayCount();
return true;
......@@ -246,13 +240,7 @@ bool ScriptRunner::ExecuteAsyncTask() {
DCHECK_EQ(pending_script->GetSchedulingType(), ScriptSchedulingType::kAsync)
<< "Async scripts queue should not contain any in-order script.";
// TODO(hiroshige): Move ExecuteScriptBlock() to PendingScript and remove
// 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();
pending_script->ExecuteScriptBlock(NullURL());
document_->DecrementLoadEventDelayCount();
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