Index: base/sequenced_task_runner.h |
diff --git a/base/sequenced_task_runner.h b/base/sequenced_task_runner.h |
index 6bb3f2b8717b0bac60c64fa8c7bb6525eec01a44..0bedf2e1b9251190b09dd3a409a4db4689f3e81c 100644 |
--- a/base/sequenced_task_runner.h |
+++ b/base/sequenced_task_runner.h |
@@ -154,6 +154,24 @@ class BASE_EXPORT SequencedTaskRunner : public TaskRunner { |
const void* object); |
}; |
+struct BASE_EXPORT OnTaskRunnerDeleter { |
+ explicit OnTaskRunnerDeleter(scoped_refptr<SequencedTaskRunner> task_runner); |
+ ~OnTaskRunnerDeleter(); |
+ |
+ OnTaskRunnerDeleter(OnTaskRunnerDeleter&&); |
+ OnTaskRunnerDeleter& operator=(OnTaskRunnerDeleter&&); |
+ |
+ template <typename T> |
+ void operator()(const T* ptr) { |
+ if (task_runner_->RunsTasksOnCurrentThread()) |
+ delete ptr; |
+ else if (ptr) |
+ task_runner_->DeleteSoon(FROM_HERE, ptr); |
+ } |
+ |
+ scoped_refptr<SequencedTaskRunner> task_runner_; |
+}; |
+ |
} // namespace base |
#endif // BASE_SEQUENCED_TASK_RUNNER_H_ |