Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(519)

Side by Side Diff: Source/core/dom/ScriptedIdleTaskController.h

Issue 1119683003: Implement requestIdleCallback API (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698