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

Unified Diff: Source/core/dom/ScriptedIdleTaskController.h

Issue 1119683003: Implement requestIdleCallback API (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebased Created 5 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/dom/IdleRequestCallback.idl ('k') | Source/core/dom/ScriptedIdleTaskController.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « Source/core/dom/IdleRequestCallback.idl ('k') | Source/core/dom/ScriptedIdleTaskController.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698