Feedback report improvements

- Avoid copying mega bytes of feedback data when
  sending reports.
- Explicitly use OnceCallback and RepeatingCallback
  when appropriate.

BUG=748742
TEST=manual + unittests.

Change-Id: I6fb76e50f41f01a6df57e401cbfe1a1033e4db82
Reviewed-on: https://chromium-review.googlesource.com/1121077
Reviewed-by: Rahul Chaturvedi <[email protected]>
Commit-Queue: Ahmed Fakhry <[email protected]>
Cr-Commit-Position: refs/heads/master@{#571947}
diff --git a/components/feedback/feedback_uploader.h b/components/feedback/feedback_uploader.h
index dc06ea0..1c500fe 100644
--- a/components/feedback/feedback_uploader.h
+++ b/components/feedback/feedback_uploader.h
@@ -43,7 +43,7 @@
   static void SetMinimumRetryDelayForTesting(base::TimeDelta delay);
 
   // Queues a report for uploading.
-  void QueueReport(const std::string& data);
+  void QueueReport(std::unique_ptr<std::string> data);
 
   bool QueueEmpty() const { return reports_queue_.empty(); }
 
@@ -101,7 +101,8 @@
   // Update our timer for uploading the next report.
   void UpdateUploadTimer();
 
-  void QueueReportWithDelay(const std::string& data, base::TimeDelta delay);
+  void QueueReportWithDelay(std::unique_ptr<std::string> data,
+                            base::TimeDelta delay);
 
   // Browser context this uploader was created for.
   content::BrowserContext* context_;