diff --git a/payload_consumer/download_action.cc b/payload_consumer/download_action.cc
index 0136f49..58e29b2 100644
--- a/payload_consumer/download_action.cc
+++ b/payload_consumer/download_action.cc
@@ -186,9 +186,7 @@
                                               &install_plan_));
     writer_ = delta_performer_.get();
   }
-  if (delegate_) {
-    delegate_->SetDownloadStatus(true);  // Set to active.
-  }
+  download_active_= true;
 
   if (system_state_ != nullptr) {
     const PayloadStateInterface* payload_state = system_state_->payload_state();
@@ -236,9 +234,7 @@
     writer_->Close();
     writer_ = nullptr;
   }
-  if (delegate_) {
-    delegate_->SetDownloadStatus(false);  // Set to inactive.
-  }
+  download_active_= false;
   CloseP2PSharingFd(false);  // Keep p2p file.
   // Terminates the transfer. The action is terminated, if necessary, when the
   // TransferTerminated callback is received.
@@ -258,7 +254,7 @@
   }
 
   bytes_received_ += length;
-  if (delegate_)
+  if (delegate_ && download_active_)
     delegate_->BytesReceived(bytes_received_, install_plan_.payload_size);
   if (writer_ && !writer_->Write(bytes, length, &code_)) {
     LOG(ERROR) << "Error " << code_ << " in DeltaPerformer's Write method when "
@@ -288,9 +284,7 @@
     LOG_IF(WARNING, writer_->Close() != 0) << "Error closing the writer.";
     writer_ = nullptr;
   }
-  if (delegate_) {
-    delegate_->SetDownloadStatus(false);  // Set to inactive.
-  }
+  download_active_= false;
   ErrorCode code =
       successful ? ErrorCode::kSuccess : ErrorCode::kDownloadTransferError;
   if (code == ErrorCode::kSuccess && delta_performer_.get()) {
diff --git a/payload_consumer/download_action.h b/payload_consumer/download_action.h
index c0f0688..e57ffb3 100644
--- a/payload_consumer/download_action.h
+++ b/payload_consumer/download_action.h
@@ -42,15 +42,9 @@
  public:
   virtual ~DownloadActionDelegate() = default;
 
-  // Called right before starting the download with |active| set to
-  // true. Called after completing the download with |active| set to
-  // false.
-  virtual void SetDownloadStatus(bool active) = 0;
-
-  // Called periodically after bytes are received. This method will be
-  // invoked only if the download is active. |bytes_received| is the
-  // number of bytes downloaded thus far. |total| is the number of
-  // bytes expected.
+  // Called periodically after bytes are received. This method will be invoked
+  // only if the DownloadAction is running. |bytes_received| is the number of
+  // bytes downloaded thus far. |total| is the number of bytes expected.
   virtual void BytesReceived(uint64_t bytes_received, uint64_t total) = 0;
 };
 
@@ -142,6 +136,7 @@
   // For reporting status to outsiders
   DownloadActionDelegate* delegate_;
   uint64_t bytes_received_;
+  bool download_active_{false};
 
   // The file-id for the file we're sharing or the empty string
   // if we're not using p2p to share.
diff --git a/payload_consumer/download_action_unittest.cc b/payload_consumer/download_action_unittest.cc
index 3bef196..901dbd6 100644
--- a/payload_consumer/download_action_unittest.cc
+++ b/payload_consumer/download_action_unittest.cc
@@ -62,7 +62,6 @@
 namespace {
 class DownloadActionDelegateMock : public DownloadActionDelegate {
  public:
-  MOCK_METHOD1(SetDownloadStatus, void(bool active));
   MOCK_METHOD2(BytesReceived, void(uint64_t bytes_received, uint64_t total));
 };
 
@@ -177,12 +176,10 @@
   if (use_download_delegate) {
     InSequence s;
     download_action.set_delegate(&download_delegate);
-    EXPECT_CALL(download_delegate, SetDownloadStatus(true)).Times(1);
     if (data.size() > kMockHttpFetcherChunkSize)
       EXPECT_CALL(download_delegate,
                   BytesReceived(1 + kMockHttpFetcherChunkSize, _));
     EXPECT_CALL(download_delegate, BytesReceived(_, _)).Times(AtLeast(1));
-    EXPECT_CALL(download_delegate, SetDownloadStatus(false)).Times(1);
   }
   ErrorCode expected_code = ErrorCode::kSuccess;
   if (fail_write > 0)
@@ -291,10 +288,8 @@
     download_action.SetTestFileWriter(&writer);
     DownloadActionDelegateMock download_delegate;
     if (use_download_delegate) {
-      InSequence s;
       download_action.set_delegate(&download_delegate);
-      EXPECT_CALL(download_delegate, SetDownloadStatus(true)).Times(1);
-      EXPECT_CALL(download_delegate, SetDownloadStatus(false)).Times(1);
+      EXPECT_CALL(download_delegate, BytesReceived(_, _)).Times(0);
     }
     TerminateEarlyTestProcessorDelegate delegate;
     ActionProcessor processor;
