Allow Policies to defer updates

The OmahaResponseHandlerAction consults with the Policy to confirm if
the generated InstallPlan can be actioned or not.  If not, then the
UpdateAttempter reports to Omaha that the update has been deferred and
reverts to a status of IDLE.

This causes an API-visible transition through REPORTING_ERROR, before
ending at IDLE.

Bug: 66016687
Test: unit-tests, manual OTA
Exempt-From-Owner-Approval: cherry-pick from nyc-iot-dev
Change-Id: I5c31a04975586630dd6a9c373022f1b407bef4e8
(cherry picked from commit 8a5f6317a60c6e54917f115bdf190f46653a225a)
(cherry picked from commit 68b15c64e731cf5f8d2b93fb9f33da3da5f37a92)
12 files changed
tree: 1753d3c5817678b00618f51d08bb097de2bbc00c
  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