update_engine: New BootControlInterface class.

The new BootControlInterface class is a platform-independent
abstraction to control the bootloader. It provides methods for setting
what partition slots are available for booting and getting the
bootloader status about the available slots.

The Chrome OS specific implementation of the bootloader was moved to
the BootControlChromeOS which now depends on the vboot_host
implementation used in Chrome OS. Follow up CL will implement the
equivalent class for Brillo.

BUG=b:23010637
TEST=unittests; cros flash from the new image and rolled back from it.

Change-Id: I0a03aeeb8c21d8c99e1866b625e6e8c96628215b
40 files changed
tree: 7f0da302e2ee26f95c6fdd5b4667a696181f699a
  1. dbus_bindings/
  2. init/
  3. payload_generator/
  4. sample_images/
  5. update_manager/
  6. .gitignore
  7. action.h
  8. action_pipe.h
  9. action_pipe_unittest.cc
  10. action_processor.cc
  11. action_processor.h
  12. action_processor_unittest.cc
  13. action_unittest.cc
  14. boot_control_chromeos.cc
  15. boot_control_chromeos.h
  16. boot_control_chromeos_unittest.cc
  17. boot_control_interface.h
  18. bzip.cc
  19. bzip.h
  20. bzip_extent_writer.cc
  21. bzip_extent_writer.h
  22. bzip_extent_writer_unittest.cc
  23. certificate_checker.cc
  24. certificate_checker.h
  25. certificate_checker_unittest.cc
  26. chrome_browser_proxy_resolver.cc
  27. chrome_browser_proxy_resolver.h
  28. chrome_browser_proxy_resolver_unittest.cc
  29. clock.cc
  30. clock.h
  31. clock_interface.h
  32. connection_manager.cc
  33. connection_manager.h
  34. connection_manager_interface.h
  35. connection_manager_unittest.cc
  36. constants.cc
  37. constants.h
  38. daemon.cc
  39. daemon.h
  40. dbus_constants.h
  41. dbus_service.cc
  42. dbus_service.h
  43. dbus_service_unittest.cc
  44. dbus_test_utils.h
  45. delta_performer.cc
  46. delta_performer.h
  47. delta_performer_unittest.cc
  48. download_action.cc
  49. download_action.h
  50. download_action_unittest.cc
  51. error_code.h
  52. extent_writer.cc
  53. extent_writer.h
  54. extent_writer_unittest.cc
  55. fake_boot_control.h
  56. fake_clock.h
  57. fake_file_writer.h
  58. fake_hardware.h
  59. fake_p2p_manager.h
  60. fake_p2p_manager_configuration.h
  61. fake_prefs.cc
  62. fake_prefs.h
  63. fake_shill_proxy.cc
  64. fake_shill_proxy.h
  65. fake_system_state.cc
  66. fake_system_state.h
  67. file_descriptor.cc
  68. file_descriptor.h
  69. file_writer.cc
  70. file_writer.h
  71. file_writer_unittest.cc
  72. filesystem_verifier_action.cc
  73. filesystem_verifier_action.h
  74. filesystem_verifier_action_unittest.cc
  75. generate_pc_file.sh
  76. hardware.cc
  77. hardware.h
  78. hardware_interface.h
  79. http_common.cc
  80. http_common.h
  81. http_fetcher.cc
  82. http_fetcher.h
  83. http_fetcher_unittest.cc
  84. hwid_override.cc
  85. hwid_override.h
  86. hwid_override_unittest.cc
  87. install_plan.cc
  88. install_plan.h
  89. libcros_proxy.cc
  90. libcros_proxy.h
  91. libcurl_http_fetcher.cc
  92. libcurl_http_fetcher.h
  93. libupdate_engine-client-test.pc.in
  94. libupdate_engine-client.pc.in
  95. local_coverage_rate
  96. main.cc
  97. metrics.cc
  98. metrics.h
  99. mock_action.h
  100. mock_action_processor.h
  101. mock_certificate_checker.h
  102. mock_connection_manager.h
  103. mock_file_writer.h
  104. mock_hardware.h
  105. mock_http_fetcher.cc
  106. mock_http_fetcher.h
  107. mock_omaha_request_params.h
  108. mock_p2p_manager.h
  109. mock_payload_state.h
  110. mock_prefs.h
  111. mock_update_attempter.h
  112. MODULE_LICENSE_APACHE2
  113. mtd_file_descriptor.cc
  114. mtd_file_descriptor.h
  115. multi_range_http_fetcher.cc
  116. multi_range_http_fetcher.h
  117. NOTICE
  118. omaha_hash_calculator.cc
  119. omaha_hash_calculator.h
  120. omaha_hash_calculator_unittest.cc
  121. omaha_request_action.cc
  122. omaha_request_action.h
  123. omaha_request_action_unittest.cc
  124. omaha_request_params.cc
  125. omaha_request_params.h
  126. omaha_request_params_unittest.cc
  127. omaha_response.h
  128. omaha_response_handler_action.cc
  129. omaha_response_handler_action.h
  130. omaha_response_handler_action_unittest.cc
  131. OWNERS
  132. p2p_manager.cc
  133. p2p_manager.h
  134. p2p_manager_unittest.cc
  135. payload_constants.cc
  136. payload_constants.h
  137. payload_state.cc
  138. payload_state.h
  139. payload_state_interface.h
  140. payload_state_unittest.cc
  141. payload_verifier.cc
  142. payload_verifier.h
  143. postinstall_runner_action.cc
  144. postinstall_runner_action.h
  145. postinstall_runner_action_unittest.cc
  146. prefs.cc
  147. prefs.h
  148. prefs_interface.h
  149. prefs_unittest.cc
  150. PRESUBMIT.cfg
  151. proxy_resolver.cc
  152. proxy_resolver.h
  153. real_system_state.cc
  154. real_system_state.h
  155. run_unittests
  156. sample_omaha_v3_response.xml
  157. shill_proxy.cc
  158. shill_proxy.h
  159. shill_proxy_interface.h
  160. subprocess.cc
  161. subprocess.h
  162. subprocess_unittest.cc
  163. system_state.h
  164. tar_bunzip2.gypi
  165. terminator.cc
  166. terminator.h
  167. terminator_unittest.cc
  168. test_http_server.cc
  169. test_utils.cc
  170. test_utils.h
  171. test_utils_unittest.cc
  172. testrunner.cc
  173. unittest_key.pem
  174. unittest_key2.pem
  175. update_attempter.cc
  176. update_attempter.h
  177. update_attempter_unittest.cc
  178. update_engine.conf
  179. update_engine.gyp
  180. update_engine_client.cc
  181. update_metadata.proto
  182. UpdateEngine.conf
  183. utils.cc
  184. utils.h
  185. utils_unittest.cc
  186. WATCHLISTS
  187. zip_unittest.cc