Add ScopedMessageData::Release.

This CL removes an unused ScopedMessageData ctor and introduces
ScopedMessageData::Release which is the first step in order to remove
the data() methods that return a reference to a std::unique_ptr (which
is an anti-pattern).

Bug: None
Change-Id: I8f3c3fcfebd127c07fe0b667ca3442a20f458f0c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/226870
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34563}
diff --git a/rtc_base/thread.cc b/rtc_base/thread.cc
index b54cded..c3a83af 100644
--- a/rtc_base/thread.cc
+++ b/rtc_base/thread.cc
@@ -1032,7 +1032,7 @@
 void Thread::QueuedTaskHandler::OnMessage(Message* msg) {
   RTC_DCHECK(msg);
   auto* data = static_cast<ScopedMessageData<webrtc::QueuedTask>*>(msg->pdata);
-  std::unique_ptr<webrtc::QueuedTask> task = std::move(data->data());
+  std::unique_ptr<webrtc::QueuedTask> task(data->Release());
   // Thread expects handler to own Message::pdata when OnMessage is called
   // Since MessageData is no longer needed, delete it.
   delete data;
diff --git a/rtc_base/thread_message.h b/rtc_base/thread_message.h
index 80824e2..e44ad7a 100644
--- a/rtc_base/thread_message.h
+++ b/rtc_base/thread_message.h
@@ -47,9 +47,6 @@
   explicit ScopedMessageData(std::unique_ptr<T> data)
       : data_(std::move(data)) {}
   // Deprecated.
-  // TODO(deadbeef): Remove this once downstream applications stop using it.
-  explicit ScopedMessageData(T* data) : data_(data) {}
-  // Deprecated.
   // TODO(deadbeef): Returning a reference to a unique ptr? Why. Get rid of
   // this once downstream applications stop using it, then rename inner_data to
   // just data.
@@ -59,6 +56,8 @@
   const T& inner_data() const { return *data_; }
   T& inner_data() { return *data_; }
 
+  T* Release() { return data_.release(); }
+
  private:
   std::unique_ptr<T> data_;
 };