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

Unified Diff: third_party/WebKit/public/platform/WebTaskRunner.h

Issue 2266443002: Optimize posting of WTF::Closure and improve scheduler test mocks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix FakeWebTaskRunner leak Created 4 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
Index: third_party/WebKit/public/platform/WebTaskRunner.h
diff --git a/third_party/WebKit/public/platform/WebTaskRunner.h b/third_party/WebKit/public/platform/WebTaskRunner.h
index 6e2bbd8e1647d3efd65dbe8562dcb11905a83621..9c8092064b0c996bf0adc709da58b5fc906cb46d 100644
--- a/third_party/WebKit/public/platform/WebTaskRunner.h
+++ b/third_party/WebKit/public/platform/WebTaskRunner.h
@@ -7,6 +7,7 @@
#include "WebCommon.h"
#include "public/platform/WebTraceLocation.h"
+#include "public/platform/scheduler/base/task_queue.h"
#include <memory>
#ifdef INSIDE_BLINK
@@ -22,10 +23,14 @@ namespace blink {
using SingleThreadTaskRunner = base::SingleThreadTaskRunner;
// The blink representation of a chromium SingleThreadTaskRunner.
+// TODO(alexclarke): Rename to PlatformTaskRunner and move onto the oilpan heap.
+// TODO(alexclarke): Consider using base::TimeDelta for the delays. (crbug.com/402027)
class BLINK_PLATFORM_EXPORT WebTaskRunner {
public:
virtual ~WebTaskRunner() {}
+ using TaskHandle = scheduler::TaskQueue::TaskHandle;
+
class BLINK_PLATFORM_EXPORT Task {
public:
virtual ~Task() { }
@@ -40,6 +45,19 @@ public:
// Takes ownership of |Task|. Can be called from any thread.
virtual void postDelayedTask(const WebTraceLocation&, Task*, double delayMs) = 0;
+ // Posts the given task to be run after |delay| has passed. Returns a handle
+ // which can be passed to cancelTask to cancel the task before it has run.
+ // Note this must be called from the thread the tasks are run on (i.e the
+ // thread where runsTasksOnCurrentThread returns true).
+ virtual TaskHandle postCancellableDelayedTask(const tracked_objects::Location&, const base::Closure&, double delayMs) = 0;
alex clarke (OOO till 29th) 2016/08/22 17:43:01 Daniel on the other patch you expressed some API c
+
+ // Attempts to cancel a task posted by PostCancellableDelayedTask. Returns
+ // true on success or false otherwise. Note this will fail unless called on
+ // the same WebTaskRunner that was used to post the task. Note this must be
+ // called from the thread the tasks are run on (i.e the thread where
+ // runsTasksOnCurrentThread returns true).
+ virtual bool cancelTask(const TaskHandle&) = 0;
+
// Returns a clone of the WebTaskRunner.
virtual std::unique_ptr<WebTaskRunner> clone() = 0;
@@ -66,7 +84,7 @@ public:
virtual double monotonicallyIncreasingVirtualTimeSeconds() const = 0;
// Returns the underlying task runner object.
- virtual SingleThreadTaskRunner* taskRunner() = 0;
+ virtual SingleThreadTaskRunner* toSingleThreadTaskRunner() = 0;
#ifdef INSIDE_BLINK
// Helpers for posting bound functions as tasks.
@@ -78,6 +96,12 @@ public:
// For same-thread posting. Must be called from the associated WebThread.
void postTask(const WebTraceLocation&, std::unique_ptr<WTF::Closure>);
void postDelayedTask(const WebTraceLocation&, std::unique_ptr<WTF::Closure>, long long delayMs);
+
+ // Posts the given same-thread closure to be run after |delay| has passed.
+ // Returns a handle which can be passed to cancelTask to cancel the task
+ // before it has run. Note this must be called from the thread the tasks are
+ // run on (i.e the thread where runsTasksOnCurrentThread returns true).
+ TaskHandle postCancellableDelayedTask(const WebTraceLocation&, std::unique_ptr<WTF::Closure>, double delayMs);
#endif
};

Powered by Google App Engine
This is Rietveld 408576698