Make Task a ref counted object in the UpdateClient implementation.

Bug: 819645
Change-Id: Iff4fbf906aa5e066db462aa41365e158969bc9b2
Reviewed-on: https://chromium-review.googlesource.com/953065
Commit-Queue: Sorin Jianu <[email protected]>
Reviewed-by: Joshua Pawlicki <[email protected]>
Cr-Commit-Position: refs/heads/master@{#541571}
diff --git a/components/update_client/task_send_uninstall_ping.cc b/components/update_client/task_send_uninstall_ping.cc
index 45a1164..53989056 100644
--- a/components/update_client/task_send_uninstall_ping.cc
+++ b/components/update_client/task_send_uninstall_ping.cc
@@ -40,8 +40,7 @@
 
   update_engine_->SendUninstallPing(
       id_, version_, reason_,
-      base::BindOnce(&TaskSendUninstallPing::TaskComplete,
-                     base::Unretained(this)));
+      base::BindOnce(&TaskSendUninstallPing::TaskComplete, this));
 }
 
 void TaskSendUninstallPing::Cancel() {
@@ -58,7 +57,8 @@
   DCHECK(thread_checker_.CalledOnValidThread());
 
   base::ThreadTaskRunnerHandle::Get()->PostTask(
-      FROM_HERE, base::BindOnce(std::move(callback_), this, error));
+      FROM_HERE,
+      base::BindOnce(std::move(callback_), scoped_refptr<Task>(this), error));
 }
 
 }  // namespace update_client