| Index: third_party/WebKit/Source/core/animation/Animation.cpp
|
| diff --git a/third_party/WebKit/Source/core/animation/Animation.cpp b/third_party/WebKit/Source/core/animation/Animation.cpp
|
| index 56de1eb35efc75eba918e066a1d71393c6437358..58d7236724b35d060588822f1c74e07cc8d40e10 100644
|
| --- a/third_party/WebKit/Source/core/animation/Animation.cpp
|
| +++ b/third_party/WebKit/Source/core/animation/Animation.cpp
|
| @@ -44,6 +44,7 @@
|
| #include "core/inspector/InspectorTraceEvents.h"
|
| #include "core/probe/CoreProbes.h"
|
| #include "platform/RuntimeEnabledFeatures.h"
|
| +#include "platform/ScriptForbiddenScope.h"
|
| #include "platform/WebTaskRunner.h"
|
| #include "platform/animation/CompositorAnimationPlayer.h"
|
| #include "platform/heap/Persistent.h"
|
| @@ -1038,9 +1039,9 @@ Animation::PlayStateUpdateScope::~PlayStateUpdateScope() {
|
| animation_->ready_promise_->Reject(DOMException::Create(kAbortError));
|
| }
|
| animation_->ready_promise_->Reset();
|
| - animation_->ResolvePromiseAsync(animation_->ready_promise_.Get());
|
| + animation_->ResolvePromiseMaybeAsync(animation_->ready_promise_.Get());
|
| } else if (old_play_state == kPending) {
|
| - animation_->ResolvePromiseAsync(animation_->ready_promise_.Get());
|
| + animation_->ResolvePromiseMaybeAsync(animation_->ready_promise_.Get());
|
| } else if (new_play_state == kPending) {
|
| DCHECK_NE(animation_->ready_promise_->GetState(),
|
| AnimationPromise::kPending);
|
| @@ -1057,7 +1058,7 @@ Animation::PlayStateUpdateScope::~PlayStateUpdateScope() {
|
| }
|
| animation_->finished_promise_->Reset();
|
| } else if (new_play_state == kFinished) {
|
| - animation_->ResolvePromiseAsync(animation_->finished_promise_.Get());
|
| + animation_->ResolvePromiseMaybeAsync(animation_->finished_promise_.Get());
|
| } else if (old_play_state == kFinished) {
|
| animation_->finished_promise_->Reset();
|
| }
|
| @@ -1136,11 +1137,15 @@ void Animation::InvalidateKeyframeEffect(const TreeScope& tree_scope) {
|
| StyleChangeReason::kStyleSheetChange));
|
| }
|
|
|
| -void Animation::ResolvePromiseAsync(AnimationPromise* promise) {
|
| - TaskRunnerHelper::Get(TaskType::kDOMManipulation, GetExecutionContext())
|
| - ->PostTask(BLINK_FROM_HERE,
|
| - WTF::Bind(&AnimationPromise::Resolve<Animation*>,
|
| - WrapPersistent(promise), WrapPersistent(this)));
|
| +void Animation::ResolvePromiseMaybeAsync(AnimationPromise* promise) {
|
| + if (ScriptForbiddenScope::IsScriptForbidden()) {
|
| + TaskRunnerHelper::Get(TaskType::kDOMManipulation, GetExecutionContext())
|
| + ->PostTask(BLINK_FROM_HERE,
|
| + WTF::Bind(&AnimationPromise::Resolve<Animation*>,
|
| + WrapPersistent(promise), WrapPersistent(this)));
|
| + } else {
|
| + promise->Resolve(this);
|
| + }
|
| }
|
|
|
| DEFINE_TRACE(Animation) {
|
|
|