Remove two pointers of delta performer

Test: treehugger
Bug: 176087961
Change-Id: I00fa7b5ba508a31162a986f50034ceeb34becbfd
diff --git a/common/download_action.h b/common/download_action.h
index caa5a7b..7b496b1 100644
--- a/common/download_action.h
+++ b/common/download_action.h
@@ -23,6 +23,7 @@
 
 #include <memory>
 #include <string>
+#include <utility>
 
 #include "update_engine/common/action.h"
 #include "update_engine/common/boot_control_interface.h"
@@ -87,7 +88,9 @@
   std::string Type() const override { return StaticType(); }
 
   // Testing
-  void SetTestFileWriter(DeltaPerformer* writer) { writer_ = writer; }
+  void SetTestFileWriter(std::unique_ptr<DeltaPerformer> writer) {
+    delta_performer_ = std::move(writer);
+  }
 
   int GetHTTPResponseCode() { return http_fetcher_->http_response_code(); }
 
@@ -130,10 +133,6 @@
   // update.
   bool interactive_;
 
-  // The FileWriter that downloaded data should be written to. It will
-  // either point to a writer for unittest or *delta_performer_.
-  DeltaPerformer* writer_;
-
   std::unique_ptr<DeltaPerformer> delta_performer_;
 
   // Used by TransferTerminated to figure if this action terminated itself or
diff --git a/download_action.cc b/download_action.cc
index 0456298..62a8423 100644
--- a/download_action.cc
+++ b/download_action.cc
@@ -47,7 +47,6 @@
       hardware_(hardware),
       http_fetcher_(new MultiRangeHttpFetcher(http_fetcher)),
       interactive_(interactive),
-      writer_(nullptr),
       code_(ErrorCode::kSuccess),
       delegate_(nullptr) {}
 
@@ -105,14 +104,11 @@
     return false;
   }
 
-  if (writer_ && writer_ != delta_performer_.get()) {
-    LOG(INFO) << "Using writer for test.";
-  }
   ErrorCode error;
   const bool success =
-      writer_->Write(
+      delta_performer_->Write(
           cached_manifest_bytes.data(), cached_manifest_bytes.size(), &error) &&
-      writer_->IsManifestValid();
+      delta_performer_->IsManifestValid();
   if (success) {
     LOG(INFO) << "Successfully parsed cached manifest";
   } else {
@@ -127,7 +123,7 @@
   download_active_ = true;
   http_fetcher_->ClearRanges();
 
-  if (writer_ && writer_ != delta_performer_.get()) {
+  if (delta_performer_ != nullptr) {
     LOG(INFO) << "Using writer for test.";
   } else {
     delta_performer_.reset(new DeltaPerformer(prefs_,
@@ -137,7 +133,6 @@
                                               &install_plan_,
                                               payload_,
                                               interactive_));
-    writer_ = delta_performer_.get();
   }
 
   if (install_plan_.is_resume &&
@@ -159,7 +154,6 @@
                                                             &install_plan_,
                                                             payload_,
                                                             interactive_);
-        writer_ = delta_performer_.get();
       }
       http_fetcher_->AddRange(base_offset_,
                               manifest_metadata_size + manifest_signature_size);
@@ -200,9 +194,9 @@
 }
 
 void DownloadAction::TerminateProcessing() {
-  if (writer_) {
-    writer_->Close();
-    writer_ = nullptr;
+  if (delta_performer_) {
+    delta_performer_->Close();
+    delta_performer_.reset();
   }
   download_active_ = false;
   // Terminates the transfer. The action is terminated, if necessary, when the
@@ -223,7 +217,7 @@
   if (delegate_ && download_active_) {
     delegate_->BytesReceived(length, bytes_downloaded_total, bytes_total_);
   }
-  if (writer_ && !writer_->Write(bytes, length, &code_)) {
+  if (delta_performer_ && !delta_performer_->Write(bytes, length, &code_)) {
     if (code_ != ErrorCode::kSuccess) {
       LOG(ERROR) << "Error " << utils::ErrorCodeToString(code_) << " (" << code_
                  << ") in DeltaPerformer's Write method when "
@@ -240,12 +234,9 @@
 }
 
 void DownloadAction::TransferComplete(HttpFetcher* fetcher, bool successful) {
-  if (writer_) {
-    LOG_IF(WARNING, writer_->Close() != 0) << "Error closing the writer.";
-    if (delta_performer_.get() == writer_) {
-      // no delta_performer_ in tests, so leave the test writer in place
-      writer_ = nullptr;
-    }
+  if (delta_performer_) {
+    LOG_IF(WARNING, delta_performer_->Close() != 0)
+        << "Error closing the writer.";
   }
   download_active_ = false;
   ErrorCode code =
diff --git a/download_action_android_unittest.cc b/download_action_android_unittest.cc
index c1ad9c2..b17550b 100644
--- a/download_action_android_unittest.cc
+++ b/download_action_android_unittest.cc
@@ -156,15 +156,15 @@
       &prefs, &boot_control, nullptr, http_fetcher, false /* interactive */);
 
   FakeHardware hardware;
-  DeltaPerformer delta_performer(&prefs,
-                                 &boot_control,
-                                 &hardware,
-                                 nullptr,
-                                 &install_plan,
-                                 &payload,
-                                 false);
-  delta_performer.set_public_key_path(kUnittestPublicKeyPath);
-  download_action->SetTestFileWriter(&delta_performer);
+  auto delta_performer = std::make_unique<DeltaPerformer>(&prefs,
+                                                          &boot_control,
+                                                          &hardware,
+                                                          nullptr,
+                                                          &install_plan,
+                                                          &payload,
+                                                          false);
+  delta_performer->set_public_key_path(kUnittestPublicKeyPath);
+  download_action->SetTestFileWriter(std::move(delta_performer));
   download_action->set_in_pipe(action_pipe);
   MockActionProcessor mock_processor;
   download_action->SetProcessor(&mock_processor);