| Index: Source/web/SuspendableScriptExecutor.cpp
 | 
| diff --git a/Source/web/SuspendableScriptExecutor.cpp b/Source/web/SuspendableScriptExecutor.cpp
 | 
| index 13118aac8071be0c0ce566063326d75baf742a6c..4fdcd988907156aa5e1cc12251e0ac5132618c2f 100644
 | 
| --- a/Source/web/SuspendableScriptExecutor.cpp
 | 
| +++ b/Source/web/SuspendableScriptExecutor.cpp
 | 
| @@ -22,22 +22,17 @@ void SuspendableScriptExecutor::createAndRun(LocalFrame* frame, int worldID, con
 | 
|      executor->run();
 | 
|  }
 | 
|  
 | 
| -void SuspendableScriptExecutor::resume()
 | 
| -{
 | 
| -    executeAndDestroySelf();
 | 
| -}
 | 
| -
 | 
|  void SuspendableScriptExecutor::contextDestroyed()
 | 
|  {
 | 
|      // this method can only be called if the script was not called in run()
 | 
|      // and context remained suspend (method resume has never called)
 | 
| -    ActiveDOMObject::contextDestroyed();
 | 
| +    SuspendableTimer::contextDestroyed();
 | 
|      m_callback->completed(Vector<v8::Local<v8::Value>>());
 | 
|      deref();
 | 
|  }
 | 
|  
 | 
|  SuspendableScriptExecutor::SuspendableScriptExecutor(LocalFrame* frame, int worldID, const WillBeHeapVector<ScriptSourceCode>& sources, int extensionGroup, bool userGesture, WebScriptExecutionCallback* callback)
 | 
| -    : ActiveDOMObject(frame->document())
 | 
| +    : SuspendableTimer(frame->document())
 | 
|      , m_frame(frame)
 | 
|      , m_worldID(worldID)
 | 
|      , m_sources(sources)
 | 
| @@ -51,13 +46,21 @@ SuspendableScriptExecutor::~SuspendableScriptExecutor()
 | 
|  {
 | 
|  }
 | 
|  
 | 
| +void SuspendableScriptExecutor::fired()
 | 
| +{
 | 
| +    executeAndDestroySelf();
 | 
| +}
 | 
| +
 | 
|  void SuspendableScriptExecutor::run()
 | 
|  {
 | 
| -    suspendIfNeeded();
 | 
|      ExecutionContext* context = executionContext();
 | 
|      ASSERT(context);
 | 
| -    if (context && !context->activeDOMObjectsAreSuspended())
 | 
| +    if (!context->activeDOMObjectsAreSuspended()) {
 | 
|          executeAndDestroySelf();
 | 
| +        return;
 | 
| +    }
 | 
| +    startOneShot(0, FROM_HERE);
 | 
| +    suspendIfNeeded();
 | 
|  }
 | 
|  
 | 
|  void SuspendableScriptExecutor::executeAndDestroySelf()
 | 
| @@ -86,7 +89,7 @@ void SuspendableScriptExecutor::trace(Visitor* visitor)
 | 
|      visitor->trace(m_frame);
 | 
|      visitor->trace(m_sources);
 | 
|  #endif
 | 
| -    ActiveDOMObject::trace(visitor);
 | 
| +    SuspendableTimer::trace(visitor);
 | 
|  }
 | 
|  
 | 
|  } // namespace blink
 | 
| 
 |