Add --follow to update_engine_client that follows any AU operation to completion.

Before, this ability was nested in with -update, this CL separates the logic
into a --follow flag. To keep existing behavior, I'm forcing --follow to true
when --update is set.

In this CL I also sort the flags variables and clean up some of the logic.
Now all flags should work together except for explicitly mutually exclusive
flags which I noted in the code (this removes early return 0's).

Finally I changed all the LOG(FATAL)'s to LOG(ERROR)'s because the fatals
throw a stack trace which isn't valuable.

BUG=chromium:309051
TEST=Ran
-rollback with and without -follow (found bug with policy that I also fixed.
tested also with update, check_for_update, status, watch_for_status_updates
and app_version.

Change-Id: I1bc1d5bf760af1df117172443112c4ad5864d8a3
Reviewed-on: https://chromium-review.googlesource.com/174905
Reviewed-by: Chris Sosa <sosa@chromium.org>
Tested-by: Chris Sosa <sosa@chromium.org>
Commit-Queue: Chris Sosa <sosa@chromium.org>
2 files changed
tree: 54abbd019b8132b11ed99d46842e093245196b8a
  1. .gitignore
  2. 99-gpio-dutflag.rules
  3. action.h
  4. action_mock.h
  5. action_pipe.h
  6. action_pipe_unittest.cc
  7. action_processor.cc
  8. action_processor.h
  9. action_processor_mock.h
  10. action_processor_unittest.cc
  11. action_unittest.cc
  12. build
  13. bzip.cc
  14. bzip.h
  15. bzip_extent_writer.cc
  16. bzip_extent_writer.h
  17. bzip_extent_writer_unittest.cc
  18. certificate_checker.cc
  19. certificate_checker.h
  20. certificate_checker_mock.h
  21. certificate_checker_unittest.cc
  22. chrome_browser_proxy_resolver.cc
  23. chrome_browser_proxy_resolver.h
  24. chrome_browser_proxy_resolver_unittest.cc
  25. clock.cc
  26. clock.h
  27. clock_interface.h
  28. connection_manager.cc
  29. connection_manager.h
  30. connection_manager_unittest.cc
  31. constants.cc
  32. constants.h
  33. cycle_breaker.cc
  34. cycle_breaker.h
  35. cycle_breaker_unittest.cc
  36. dbus_constants.h
  37. dbus_interface.h
  38. dbus_service.cc
  39. dbus_service.h
  40. delta_diff_generator.cc
  41. delta_diff_generator.h
  42. delta_diff_generator_unittest.cc
  43. delta_performer.cc
  44. delta_performer.h
  45. delta_performer_unittest.cc
  46. download_action.cc
  47. download_action.h
  48. download_action_unittest.cc
  49. error_code.h
  50. extent_mapper.cc
  51. extent_mapper.h
  52. extent_mapper_unittest.cc
  53. extent_ranges.cc
  54. extent_ranges.h
  55. extent_ranges_unittest.cc
  56. extent_writer.cc
  57. extent_writer.h
  58. extent_writer_unittest.cc
  59. fake_clock.h
  60. fake_hardware.cc
  61. fake_hardware.h
  62. fake_p2p_manager.h
  63. fake_p2p_manager_configuration.h
  64. file_descriptor.cc
  65. file_descriptor.h
  66. file_writer.cc
  67. file_writer.h
  68. file_writer_mock.h
  69. file_writer_unittest.cc
  70. filesystem_copier_action.cc
  71. filesystem_copier_action.h
  72. filesystem_copier_action_unittest.cc
  73. filesystem_iterator.cc
  74. filesystem_iterator.h
  75. filesystem_iterator_unittest.cc
  76. full_update_generator.cc
  77. full_update_generator.h
  78. full_update_generator_unittest.cc
  79. gen_coverage_html
  80. generate_delta_main.cc
  81. gpio_handler.cc
  82. gpio_handler.h
  83. gpio_handler_unittest.cc
  84. gpio_handler_unittest.h
  85. gpio_mock_file_descriptor.cc
  86. gpio_mock_file_descriptor.h
  87. gpio_mock_udev_interface.cc
  88. gpio_mock_udev_interface.h
  89. graph_types.h
  90. graph_utils.cc
  91. graph_utils.h
  92. graph_utils_unittest.cc
  93. hardware.cc
  94. hardware.h
  95. hardware_interface.h
  96. http_common.cc
  97. http_common.h
  98. http_fetcher.cc
  99. http_fetcher.h
  100. http_fetcher_unittest.cc
  101. inherit-review-settings-ok
  102. install_plan.cc
  103. install_plan.h
  104. libcurl_http_fetcher.cc
  105. libcurl_http_fetcher.h
  106. LICENSE
  107. local_coverage_rate
  108. main.cc
  109. marshal.list
  110. metadata.cc
  111. metadata.h
  112. metadata_unittest.cc
  113. mock_connection_manager.h
  114. mock_dbus_interface.h
  115. mock_file_writer.h
  116. mock_gpio_handler.h
  117. mock_http_fetcher.cc
  118. mock_http_fetcher.h
  119. mock_p2p_manager.h
  120. mock_payload_state.h
  121. mock_system_state.cc
  122. mock_system_state.h
  123. multi_range_http_fetcher.cc
  124. multi_range_http_fetcher.h
  125. omaha_hash_calculator.cc
  126. omaha_hash_calculator.h
  127. omaha_hash_calculator_unittest.cc
  128. omaha_request_action.cc
  129. omaha_request_action.h
  130. omaha_request_action_unittest.cc
  131. omaha_request_params.cc
  132. omaha_request_params.h
  133. omaha_request_params_unittest.cc
  134. omaha_response.h
  135. omaha_response_handler_action.cc
  136. omaha_response_handler_action.h
  137. omaha_response_handler_action_unittest.cc
  138. org.chromium.UpdateEngine.service
  139. p2p_manager.cc
  140. p2p_manager.h
  141. p2p_manager_unittest.cc
  142. payload_signer.cc
  143. payload_signer.h
  144. payload_signer_unittest.cc
  145. payload_state.cc
  146. payload_state.h
  147. payload_state_interface.h
  148. payload_state_unittest.cc
  149. postinstall_runner_action.cc
  150. postinstall_runner_action.h
  151. postinstall_runner_action_unittest.cc
  152. prefs.cc
  153. prefs.h
  154. prefs_interface.h
  155. prefs_mock.h
  156. prefs_unittest.cc
  157. proxy_resolver.cc
  158. proxy_resolver.h
  159. real_system_state.h
  160. run_unittests
  161. sample_omaha_v3_response.xml
  162. SConstruct
  163. setup_dev_packages
  164. simple_key_value_store.cc
  165. simple_key_value_store.h
  166. simple_key_value_store_unittest.cc
  167. subprocess.cc
  168. subprocess.h
  169. subprocess_unittest.cc
  170. system_state.cc
  171. system_state.h
  172. tarjan.cc
  173. tarjan.h
  174. tarjan_unittest.cc
  175. terminator.cc
  176. terminator.h
  177. terminator_unittest.cc
  178. test_http_server.cc
  179. test_utils.cc
  180. test_utils.h
  181. testrunner.cc
  182. topological_sort.cc
  183. topological_sort.h
  184. topological_sort_unittest.cc
  185. udev_interface.h
  186. unittest_key.pem
  187. unittest_key2.pem
  188. update_attempter.cc
  189. update_attempter.h
  190. update_attempter_mock.h
  191. update_attempter_unittest.cc
  192. update_check_scheduler.cc
  193. update_check_scheduler.h
  194. update_check_scheduler_unittest.cc
  195. update_engine.xml
  196. update_engine_client.cc
  197. update_metadata.proto
  198. UpdateEngine.conf
  199. utils.cc
  200. utils.h
  201. utils_unittest.cc
  202. WATCHLISTS
  203. zip_unittest.cc