| #include "update_engine/payload_properties_handler_action.h" |
| #include "update_engine/payload_state.h" |
| |
| namespace chromeos_update_engine { |
| |
| PayloadPropertiesHandlerAction::PayloadPropertiesHandlerAction(SystemState* system_state) |
| : system_state_(system_state) |
| { |
| } |
| |
| PayloadPropertiesHandlerAction::~PayloadPropertiesHandlerAction() |
| { |
| } |
| |
| void PayloadPropertiesHandlerAction::PerformAction() |
| { |
| // Get the InstallPlan and read it |
| CHECK(HasInputObject()); |
| const PayloadProperties &payload_prop = GetInputObject(); |
| |
| LOG(INFO) << "Update URL " << system_state_->payload_state()->GetCurrentUrl();; |
| |
| install_plan_.download_url = system_state_->payload_state()->GetCurrentUrl();; |
| install_plan_.payload_type = InstallPayloadType::kFull; |
| |
| install_plan_.source_slot = system_state_->boot_control()->GetCurrentSlot(); |
| if (install_plan_.source_slot == BootControlInterface::kInvalidSlot) |
| { |
| LOG(ERROR) << "Current slot is invalid! Exit with error."; |
| processor_->ActionComplete(this, ErrorCode::kError); |
| return; |
| } |
| |
| if (!system_state_->boot_control()->IsSlotBootable(install_plan_.source_slot)) |
| { |
| LOG(ERROR) << "Current slot " << system_state_->boot_control() |
| << " is not bootable. Exit with error."; |
| processor_->ActionComplete(this, ErrorCode::kError); |
| return; |
| } |
| |
| install_plan_.target_slot = (install_plan_.source_slot + 1) % system_state_->boot_control()->GetNumSlots(); |
| |
| install_plan_.hash_checks_mandatory = true; |
| install_plan_.powerwash_required = false; |
| install_plan_.version = payload_prop.version; |
| install_plan_.payload_size = payload_prop.size; |
| install_plan_.payload_hash = payload_prop.hash; |
| install_plan_.metadata_size = payload_prop.metadata_size; |
| install_plan_.is_resume = false; |
| if (HasOutputPipe()) |
| SetOutputObject(install_plan_); |
| |
| LOG(INFO) << "Using this install plan:"; |
| install_plan_.Dump(); |
| processor_->ActionComplete(this, ErrorCode::kSuccess); |
| } |
| }; // chromeos_update_engine |