| Index: Source/core/dom/ScriptedIdleTaskController.h | 
| diff --git a/Source/core/dom/ScriptedIdleTaskController.h b/Source/core/dom/ScriptedIdleTaskController.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..f6805a19d8f5acf9c9772d4d200efbc4ff27683a | 
| --- /dev/null | 
| +++ b/Source/core/dom/ScriptedIdleTaskController.h | 
| @@ -0,0 +1,59 @@ | 
| +// Copyright 2015 The Chromium Authors. All rights reserved. | 
| +// Use of this source code is governed by a BSD-style license that can be | 
| +// found in the LICENSE file. | 
| + | 
| +#ifndef ScriptedIdleTaskController_h | 
| +#define ScriptedIdleTaskController_h | 
| + | 
| +#include "core/dom/ActiveDOMObject.h" | 
| +#include "core/dom/IdleCallbackDeadline.h" | 
| +#include "platform/Timer.h" | 
| +#include "platform/heap/Handle.h" | 
| +#include "wtf/RefCounted.h" | 
| +#include "wtf/RefPtr.h" | 
| +#include "wtf/Vector.h" | 
| + | 
| +namespace blink { | 
| + | 
| +class ExecutionContext; | 
| +class IdleRequestCallback; | 
| +class DocumentLoadTiming; | 
| + | 
| +class ScriptedIdleTaskController : public RefCountedWillBeGarbageCollected<ScriptedIdleTaskController>, public ActiveDOMObject { | 
| +    DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(ScriptedIdleTaskController); | 
| +public: | 
| +    static PassRefPtrWillBeRawPtr<ScriptedIdleTaskController> create(ExecutionContext* context, const DocumentLoadTiming& timing) | 
| +    { | 
| +        return adoptRefWillBeNoop(new ScriptedIdleTaskController(context, timing)); | 
| +    } | 
| +    DECLARE_TRACE(); | 
| + | 
| +    using CallbackId = int; | 
| + | 
| +    int registerCallback(IdleRequestCallback*, double timeoutMillis); | 
| +    void cancelCallback(CallbackId); | 
| + | 
| +    // ActiveDOMObject interface. | 
| +    void stop() override; | 
| +    void suspend() override; | 
| +    void resume() override; | 
| +    bool hasPendingActivity() const override; | 
| + | 
| +    void callbackFired(CallbackId, double deadlineSeconds, IdleCallbackDeadline::CallbackType); | 
| + | 
| +private: | 
| +    ScriptedIdleTaskController(ExecutionContext*, const DocumentLoadTiming&); | 
| + | 
| +    void runCallback(CallbackId, double deadlineMillis, IdleCallbackDeadline::CallbackType); | 
| + | 
| +    const DocumentLoadTiming& m_timing; | 
| +    WebScheduler* m_scheduler; // Not owned. | 
| +    PersistentHeapHashMapWillBeHeapHashMap<CallbackId, Member<IdleRequestCallback>> m_callbacks; | 
| +    Vector<CallbackId> m_pendingTimeouts; | 
| +    CallbackId m_nextCallbackId; | 
| +    bool m_suspended; | 
| +}; | 
| + | 
| +} // namespace blink | 
| + | 
| +#endif // ScriptedIdleTaskController_h | 
|  |