Add TaskQueue::PostDelayedTaskWithPrecision helper method.

Just like the other PostTask methods, this is just short-hand for
invoking the TaskQueueBase's version of the method.

Drive-by fix: remove unnecessary return statement of void methods.

Bug: webrtc:13604
Change-Id: I3d5cae66bfa06334058386909f041916dbfa5ab8
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/255342
Reviewed-by: Mirko Bonadei <mbonadei@google.com>
Commit-Queue: Henrik Boström <hbos@webrtc.org>
Auto-Submit: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#36194}
diff --git a/rtc_base/task_queue.cc b/rtc_base/task_queue.cc
index f0dbdb3..0b54178 100644
--- a/rtc_base/task_queue.cc
+++ b/rtc_base/task_queue.cc
@@ -30,18 +30,25 @@
 }
 
 void TaskQueue::PostTask(std::unique_ptr<webrtc::QueuedTask> task) {
-  return impl_->PostTask(std::move(task));
+  impl_->PostTask(std::move(task));
 }
 
 void TaskQueue::PostDelayedTask(std::unique_ptr<webrtc::QueuedTask> task,
                                 uint32_t milliseconds) {
-  return impl_->PostDelayedTask(std::move(task), milliseconds);
+  impl_->PostDelayedTask(std::move(task), milliseconds);
 }
 
 void TaskQueue::PostDelayedHighPrecisionTask(
     std::unique_ptr<webrtc::QueuedTask> task,
     uint32_t milliseconds) {
-  return impl_->PostDelayedHighPrecisionTask(std::move(task), milliseconds);
+  impl_->PostDelayedHighPrecisionTask(std::move(task), milliseconds);
+}
+
+void TaskQueue::PostDelayedTaskWithPrecision(
+    webrtc::TaskQueueBase::DelayPrecision precision,
+    std::unique_ptr<webrtc::QueuedTask> task,
+    uint32_t milliseconds) {
+  impl_->PostDelayedTaskWithPrecision(precision, std::move(task), milliseconds);
 }
 
 }  // namespace rtc
diff --git a/rtc_base/task_queue.h b/rtc_base/task_queue.h
index 4ad3fed..ef97646 100644
--- a/rtc_base/task_queue.h
+++ b/rtc_base/task_queue.h
@@ -100,6 +100,10 @@
                        uint32_t milliseconds);
   void PostDelayedHighPrecisionTask(std::unique_ptr<webrtc::QueuedTask> task,
                                     uint32_t milliseconds);
+  void PostDelayedTaskWithPrecision(
+      webrtc::TaskQueueBase::DelayPrecision precision,
+      std::unique_ptr<webrtc::QueuedTask> task,
+      uint32_t milliseconds);
 
   // std::enable_if is used here to make sure that calls to PostTask() with
   // std::unique_ptr<SomeClassDerivedFromQueuedTask> would not end up being
@@ -127,6 +131,18 @@
     PostDelayedHighPrecisionTask(
         webrtc::ToQueuedTask(std::forward<Closure>(closure)), milliseconds);
   }
+  template <class Closure,
+            typename std::enable_if<!std::is_convertible<
+                Closure,
+                std::unique_ptr<webrtc::QueuedTask>>::value>::type* = nullptr>
+  void PostDelayedTaskWithPrecision(
+      webrtc::TaskQueueBase::DelayPrecision precision,
+      Closure&& closure,
+      uint32_t milliseconds) {
+    PostDelayedTaskWithPrecision(
+        precision, webrtc::ToQueuedTask(std::forward<Closure>(closure)),
+        milliseconds);
+  }
 
  private:
   webrtc::TaskQueueBase* const impl_;