OLD | NEW |
(Empty) | |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #ifndef ScriptedIdleTaskController_h |
| 6 #define ScriptedIdleTaskController_h |
| 7 |
| 8 #include "platform/heap/Handle.h" |
| 9 #include "wtf/RefCounted.h" |
| 10 #include "wtf/RefPtr.h" |
| 11 |
| 12 namespace blink { |
| 13 |
| 14 class Document; |
| 15 class IdleRequestCallback; |
| 16 |
| 17 class ScriptedIdleTaskController : public RefCountedWillBeGarbageCollected<Scrip
tedIdleTaskController> { |
| 18 DECLARE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(ScriptedIdleTaskController); |
| 19 public: |
| 20 static PassRefPtrWillBeRawPtr<ScriptedIdleTaskController> create(Document* d
ocument) |
| 21 { |
| 22 return adoptRefWillBeNoop(new ScriptedIdleTaskController(document)); |
| 23 } |
| 24 DECLARE_TRACE(); |
| 25 void clearDocumentPointer() { m_document = nullptr; } |
| 26 |
| 27 using CallbackId = int; |
| 28 |
| 29 int registerCallback(IdleRequestCallback*); |
| 30 void cancelCallback(CallbackId); |
| 31 |
| 32 private: |
| 33 class IdleRequestCallbackWrapper : public RefCounted<IdleRequestCallbackWrap
per> { |
| 34 public: |
| 35 static PassRefPtr<IdleRequestCallbackWrapper> create(IdleRequestCallback
* callback) |
| 36 { |
| 37 return adoptRef(new IdleRequestCallbackWrapper(callback)); |
| 38 } |
| 39 ~IdleRequestCallbackWrapper(); |
| 40 |
| 41 static void runCallback(PassRefPtr<IdleRequestCallbackWrapper>, double d
eadlineSeconds); |
| 42 |
| 43 private: |
| 44 explicit IdleRequestCallbackWrapper(IdleRequestCallback*); |
| 45 |
| 46 Persistent<IdleRequestCallback> m_callback; |
| 47 }; |
| 48 |
| 49 explicit ScriptedIdleTaskController(Document*); |
| 50 |
| 51 void runCallback(IdleRequestCallback*, double deadlineSeconds); |
| 52 |
| 53 RawPtrWillBeMember<Document> m_document; |
| 54 PersistentHeapHashMapWillBeHeapHashMap<CallbackId, Member<IdleRequestCallbac
k>> m_callbacks; |
| 55 CallbackId m_nextCallbackId; |
| 56 }; |
| 57 |
| 58 } // namespace blink |
| 59 |
| 60 #endif // ScriptedIdleTaskController_h |
OLD | NEW |