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);