Add support for new payload property headers to delay switching slots.

Set SWITCH_SLOT_ON_REBOOT=0 to skip marking new slot as active.
When ready to reboot to the new update, call applyPayload() again to
switch the slots, download will be skipped because it has already
finished, filesystem verification will always happen, and postinstall
can be skipped if it succeeded before for this update and
RUN_POST_INSTALL is set to 0.

Also removed reset update progress when update succeeded to support
reverting to current slot with resetStatus() without clearing download
progress. If the next update is a different payload then we will still
reset the progress on next update.

Bug: 35212183
Test: update_device.py --extra-headers 'SWITCH_SLOT_ON_REBOOT=0' ...

Merged-In: I52e2371ea4a9e6a6d026b4dd04bb1a60d95c9d5c
Change-Id: I52e2371ea4a9e6a6d026b4dd04bb1a60d95c9d5c
14 files changed
tree: 1f85d90f065bf0486dbe9a3b32ac10510ed2ef76
  1. binder_bindings/
  2. client_library/
  3. common/
  4. dbus_bindings/
  5. init/
  6. payload_consumer/
  7. payload_generator/
  8. sample_images/
  9. scripts/
  10. update_manager/
  11. update_payload_key/
  12. .gitignore
  13. Android.mk
  14. binder_service_android.cc
  15. binder_service_android.h
  16. binder_service_brillo.cc
  17. binder_service_brillo.h
  18. boot_control_android.cc
  19. boot_control_android.h
  20. boot_control_chromeos.cc
  21. boot_control_chromeos.h
  22. boot_control_chromeos_unittest.cc
  23. boot_control_recovery.cc
  24. boot_control_recovery.h
  25. boot_control_recovery_stub.cc
  26. certificate_checker.cc
  27. certificate_checker.h
  28. certificate_checker_unittest.cc
  29. chrome_browser_proxy_resolver.cc
  30. chrome_browser_proxy_resolver.h
  31. chrome_browser_proxy_resolver_unittest.cc
  32. common_service.cc
  33. common_service.h
  34. common_service_unittest.cc
  35. connection_manager.cc
  36. connection_manager.h
  37. connection_manager_android.cc
  38. connection_manager_android.h
  39. connection_manager_interface.h
  40. connection_manager_unittest.cc
  41. connection_utils.cc
  42. connection_utils.h
  43. CPPLINT.cfg
  44. daemon.cc
  45. daemon.h
  46. daemon_state_android.cc
  47. daemon_state_android.h
  48. daemon_state_interface.h
  49. dbus_connection.cc
  50. dbus_connection.h
  51. dbus_service.cc
  52. dbus_service.h
  53. dbus_test_utils.h
  54. fake_file_writer.h
  55. fake_p2p_manager.h
  56. fake_p2p_manager_configuration.h
  57. fake_shill_proxy.cc
  58. fake_shill_proxy.h
  59. fake_system_state.cc
  60. fake_system_state.h
  61. generate_pc_file.sh
  62. hardware_android.cc
  63. hardware_android.h
  64. hardware_chromeos.cc
  65. hardware_chromeos.h
  66. hardware_chromeos_unittest.cc
  67. image_properties.h
  68. image_properties_android.cc
  69. image_properties_android_unittest.cc
  70. image_properties_chromeos.cc
  71. image_properties_chromeos_unittest.cc
  72. libcurl_http_fetcher.cc
  73. libcurl_http_fetcher.h
  74. libupdate_engine-client-test.pc.in
  75. libupdate_engine-client.pc.in
  76. local_coverage_rate
  77. main.cc
  78. metrics_constants.h
  79. metrics_reporter_android.cc
  80. metrics_reporter_android.h
  81. metrics_reporter_interface.h
  82. metrics_reporter_omaha.cc
  83. metrics_reporter_omaha.h
  84. metrics_reporter_omaha_unittest.cc
  85. metrics_reporter_stub.cc
  86. metrics_reporter_stub.h
  87. metrics_utils.cc
  88. metrics_utils.h
  89. metrics_utils_unittest.cc
  90. mock_certificate_checker.h
  91. mock_connection_manager.h
  92. mock_file_writer.h
  93. mock_metrics_reporter.h
  94. mock_omaha_request_params.h
  95. mock_p2p_manager.h
  96. mock_payload_state.h
  97. mock_power_manager.h
  98. mock_proxy_resolver.h
  99. mock_service_observer.h
  100. mock_update_attempter.h
  101. MODULE_LICENSE_APACHE2
  102. network_selector.h
  103. network_selector_android.cc
  104. network_selector_android.h
  105. network_selector_interface.h
  106. network_selector_stub.cc
  107. network_selector_stub.h
  108. NOTICE
  109. omaha_request_action.cc
  110. omaha_request_action.h
  111. omaha_request_action_unittest.cc
  112. omaha_request_params.cc
  113. omaha_request_params.h
  114. omaha_request_params_unittest.cc
  115. omaha_response.h
  116. omaha_response_handler_action.cc
  117. omaha_response_handler_action.h
  118. omaha_response_handler_action_unittest.cc
  119. omaha_utils.cc
  120. omaha_utils.h
  121. omaha_utils_unittest.cc
  122. OWNERS
  123. p2p_manager.cc
  124. p2p_manager.h
  125. p2p_manager_unittest.cc
  126. parcelable_update_engine_status.cc
  127. parcelable_update_engine_status.h
  128. parcelable_update_engine_status_unittest.cc
  129. payload_state.cc
  130. payload_state.h
  131. payload_state_interface.h
  132. payload_state_unittest.cc
  133. power_manager_android.cc
  134. power_manager_android.h
  135. power_manager_chromeos.cc
  136. power_manager_chromeos.h
  137. power_manager_interface.h
  138. PRESUBMIT.cfg
  139. PREUPLOAD.cfg
  140. proxy_resolver.cc
  141. proxy_resolver.h
  142. proxy_resolver_unittest.cc
  143. pylintrc
  144. real_system_state.cc
  145. real_system_state.h
  146. run_unittests
  147. sample_omaha_v3_response.xml
  148. service_delegate_android_interface.h
  149. service_observer_interface.h
  150. shill_proxy.cc
  151. shill_proxy.h
  152. shill_proxy_interface.h
  153. sideload_main.cc
  154. system_state.h
  155. tar_bunzip2.gypi
  156. test_http_server.cc
  157. test_subprocess.cc
  158. testrunner.cc
  159. unittest_key.pem
  160. unittest_key2.pem
  161. update_attempter.cc
  162. update_attempter.h
  163. update_attempter_android.cc
  164. update_attempter_android.h
  165. update_attempter_android_unittest.cc
  166. update_attempter_unittest.cc
  167. update_engine-client.gyp
  168. update_engine.conf
  169. update_engine.gyp
  170. update_engine.rc
  171. update_engine_client.cc
  172. update_engine_client_android.cc
  173. update_metadata.proto
  174. update_status_utils.cc
  175. update_status_utils.h
  176. UpdateEngine.conf
  177. utils_android.cc
  178. utils_android.h
  179. WATCHLISTS