#ifndef SERVICES_WEBNN_SEQUENCE_DELETER_H_
#define SERVICES_WEBNN_SEQUENCE_DELETER_H_
#include "base/component_export.h"
#include "base/task/sequenced_task_runner.h"
namespace webnn {
struct COMPONENT_EXPORT(WEBNN_SERVICE) OnTaskRunnerDeleter {
explicit OnTaskRunnerDeleter(
scoped_refptr<base::SequencedTaskRunner> task_runner);
~OnTaskRunnerDeleter();
OnTaskRunnerDeleter(OnTaskRunnerDeleter&&);
OnTaskRunnerDeleter& operator=(OnTaskRunnerDeleter&&);
template <typename T>
void operator()(const T* ptr) {
if (!ptr) {
return;
}
if (task_runner_->RunsTasksInCurrentSequence()) {
delete ptr;
} else {
task_runner_->DeleteSoon(FROM_HERE, ptr);
}
}
scoped_refptr<base::SequencedTaskRunner> task_runner_;
};
}
#endif