| Index: third_party/WebKit/Source/core/workers/WorkerThread.h | 
| diff --git a/third_party/WebKit/Source/core/workers/WorkerThread.h b/third_party/WebKit/Source/core/workers/WorkerThread.h | 
| index eba1dc13bc5ce66fc4567d55980072b57275afa6..d8da5e4a5df375042379c522d010894562c4f527 100644 | 
| --- a/third_party/WebKit/Source/core/workers/WorkerThread.h | 
| +++ b/third_party/WebKit/Source/core/workers/WorkerThread.h | 
| @@ -37,6 +37,7 @@ | 
| #include "platform/LifecycleNotifier.h" | 
| #include "platform/WaitableEvent.h" | 
| #include "platform/WebTaskRunner.h" | 
| +#include "platform/scheduler/child/worker_global_scope_scheduler.h" | 
| #include "platform/wtf/Forward.h" | 
| #include "platform/wtf/Functional.h" | 
| #include "platform/wtf/PassRefPtr.h" | 
| @@ -92,7 +93,6 @@ class CORE_EXPORT WorkerThreadLifecycleContext final | 
| //    If the running task is for debugger, it's guaranteed to finish without | 
| //    any interruptions. | 
| //  - Queued tasks never run. | 
| -//  - postTask() and appendDebuggerTask() reject posting new tasks. | 
| class CORE_EXPORT WorkerThread : public WebThread::TaskObserver { | 
| public: | 
| // Represents how this thread is terminated. Used for UMA. Append only. | 
| @@ -137,9 +137,6 @@ class CORE_EXPORT WorkerThread : public WebThread::TaskObserver { | 
| return worker_reporting_proxy_; | 
| } | 
|  | 
| -  void PostTask(const WebTraceLocation&, std::unique_ptr<WTF::Closure>); | 
| -  void PostTask(const WebTraceLocation&, | 
| -                std::unique_ptr<WTF::CrossThreadClosure>); | 
| void AppendDebuggerTask(std::unique_ptr<CrossThreadClosure>); | 
|  | 
| // Runs only debugger tasks while paused in debugger. | 
| @@ -176,6 +173,10 @@ class CORE_EXPORT WorkerThread : public WebThread::TaskObserver { | 
| return parent_frame_task_runners_.Get(); | 
| } | 
|  | 
| +  scheduler::WorkerGlobalScopeScheduler* GetGlobalScopeScheduler() const { | 
| +    return global_scope_scheduler_.get(); | 
| +  } | 
| + | 
| protected: | 
| WorkerThread(PassRefPtr<WorkerLoaderProxy>, WorkerReportingProxy&); | 
|  | 
| @@ -243,12 +244,7 @@ class CORE_EXPORT WorkerThread : public WebThread::TaskObserver { | 
| // |m_threadStateMutex| acquired. | 
| void ForciblyTerminateExecution(const MutexLocker&, ExitCode); | 
|  | 
| -  // Returns true if termination or shutdown sequence has started. This is | 
| -  // thread safe. | 
| -  // Note that this returns false when the sequence has already started but it | 
| -  // hasn't been notified to the calling thread. | 
| -  bool IsInShutdown(); | 
| - | 
| +  void InitializeSchedulerOnWorkerThread(WaitableEvent*); | 
| void InitializeOnWorkerThread(std::unique_ptr<WorkerThreadStartupData>); | 
| void PrepareForShutdownOnWorkerThread(); | 
| void PerformShutdownOnWorkerThread(); | 
| @@ -294,8 +290,14 @@ class CORE_EXPORT WorkerThread : public WebThread::TaskObserver { | 
|  | 
| RefPtr<WorkerLoaderProxy> worker_loader_proxy_; | 
| WorkerReportingProxy& worker_reporting_proxy_; | 
| + | 
| CrossThreadPersistent<ParentFrameTaskRunners> parent_frame_task_runners_; | 
|  | 
| +  // Tasks managed by this scheduler are canceled when the global scope is | 
| +  // closed. | 
| +  std::unique_ptr<scheduler::WorkerGlobalScopeScheduler> | 
| +      global_scope_scheduler_; | 
| + | 
| // This lock protects |m_globalScope|, |m_requestedToTerminate|, | 
| // |m_threadState|, |m_runningDebuggerTask| and |m_exitCode|. | 
| Mutex thread_state_mutex_; | 
|  |