UM: Add an expiration timeout for async policy requests.

This enforces a timeout on AsyncPolicyRequest() calls. The timeout
applies to the overall period an async policy takes to be evaluated. If
a timeout fires, the update manager defers straight to evaluating the
default policy.

The actual expiration handling is done by the EvaluationContext,
incorporating it as part of its deferred reevaluation logic. This allows
us to not add (and manage) a separate main loop event for the expiration
timeout.

Unit tests were added to ensure that normal/timeout events are scheduled
and removed correctly, and that evaluation context expiration is
enforced.

BUG=chromium:384094
TEST=Unit tests.

Change-Id: Ia40e0ac3d8ab68eed043013cc930d699f3c3db93
Reviewed-on: https://chromium-review.googlesource.com/205895
Tested-by: Gilad Arnold <garnold@chromium.org>
Reviewed-by: Alex Deymo <deymo@chromium.org>
Commit-Queue: Gilad Arnold <garnold@chromium.org>
7 files changed
tree: 7f9f7f081da04e1160d2f1a888a09efb36d5f1ca
  1. init/
  2. payload_generator/
  3. update_manager/
  4. .gitignore
  5. action.h
  6. action_mock.h
  7. action_pipe.h
  8. action_pipe_unittest.cc
  9. action_processor.cc
  10. action_processor.h
  11. action_processor_mock.h
  12. action_processor_unittest.cc
  13. action_unittest.cc
  14. build
  15. bzip.cc
  16. bzip.h
  17. bzip_extent_writer.cc
  18. bzip_extent_writer.h
  19. bzip_extent_writer_unittest.cc
  20. certificate_checker.cc
  21. certificate_checker.h
  22. certificate_checker_mock.h
  23. certificate_checker_unittest.cc
  24. chrome_browser_proxy_resolver.cc
  25. chrome_browser_proxy_resolver.h
  26. chrome_browser_proxy_resolver_unittest.cc
  27. clock.cc
  28. clock.h
  29. clock_interface.h
  30. connection_manager.cc
  31. connection_manager.h
  32. connection_manager_unittest.cc
  33. constants.cc
  34. constants.h
  35. dbus_constants.h
  36. dbus_service.cc
  37. dbus_service.h
  38. dbus_wrapper_interface.h
  39. delta_performer.cc
  40. delta_performer.h
  41. delta_performer_unittest.cc
  42. download_action.cc
  43. download_action.h
  44. download_action_unittest.cc
  45. error_code.h
  46. extent_ranges.cc
  47. extent_ranges.h
  48. extent_ranges_unittest.cc
  49. extent_writer.cc
  50. extent_writer.h
  51. extent_writer_unittest.cc
  52. fake_clock.h
  53. fake_hardware.h
  54. fake_p2p_manager.h
  55. fake_p2p_manager_configuration.h
  56. fake_prefs.cc
  57. fake_prefs.h
  58. fake_system_state.cc
  59. fake_system_state.h
  60. file_descriptor.cc
  61. file_descriptor.h
  62. file_writer.cc
  63. file_writer.h
  64. file_writer_mock.h
  65. file_writer_unittest.cc
  66. filesystem_copier_action.cc
  67. filesystem_copier_action.h
  68. filesystem_copier_action_unittest.cc
  69. gen_coverage_html
  70. hardware.cc
  71. hardware.h
  72. hardware_interface.h
  73. http_common.cc
  74. http_common.h
  75. http_fetcher.cc
  76. http_fetcher.h
  77. http_fetcher_unittest.cc
  78. hwid_override.cc
  79. hwid_override.h
  80. hwid_override_unittest.cc
  81. inherit-review-settings-ok
  82. install_plan.cc
  83. install_plan.h
  84. libcurl_http_fetcher.cc
  85. libcurl_http_fetcher.h
  86. local_coverage_rate
  87. main.cc
  88. metrics.cc
  89. metrics.h
  90. mock_connection_manager.h
  91. mock_dbus_wrapper.h
  92. mock_file_writer.h
  93. mock_hardware.h
  94. mock_http_fetcher.cc
  95. mock_http_fetcher.h
  96. mock_p2p_manager.h
  97. mock_payload_state.h
  98. multi_range_http_fetcher.cc
  99. multi_range_http_fetcher.h
  100. omaha_hash_calculator.cc
  101. omaha_hash_calculator.h
  102. omaha_hash_calculator_unittest.cc
  103. omaha_request_action.cc
  104. omaha_request_action.h
  105. omaha_request_action_unittest.cc
  106. omaha_request_params.cc
  107. omaha_request_params.h
  108. omaha_request_params_unittest.cc
  109. omaha_response.h
  110. omaha_response_handler_action.cc
  111. omaha_response_handler_action.h
  112. omaha_response_handler_action_unittest.cc
  113. p2p_manager.cc
  114. p2p_manager.h
  115. p2p_manager_unittest.cc
  116. payload_constants.cc
  117. payload_constants.h
  118. payload_signer.cc
  119. payload_signer.h
  120. payload_signer_unittest.cc
  121. payload_state.cc
  122. payload_state.h
  123. payload_state_interface.h
  124. payload_state_unittest.cc
  125. postinstall_runner_action.cc
  126. postinstall_runner_action.h
  127. postinstall_runner_action_unittest.cc
  128. prefs.cc
  129. prefs.h
  130. prefs_interface.h
  131. prefs_mock.h
  132. prefs_unittest.cc
  133. proxy_resolver.cc
  134. proxy_resolver.h
  135. real_dbus_wrapper.h
  136. real_system_state.cc
  137. real_system_state.h
  138. run_unittests
  139. sample_omaha_v3_response.xml
  140. SConstruct
  141. simple_key_value_store.cc
  142. simple_key_value_store.h
  143. simple_key_value_store_unittest.cc
  144. subprocess.cc
  145. subprocess.h
  146. subprocess_unittest.cc
  147. system_state.h
  148. terminator.cc
  149. terminator.h
  150. terminator_unittest.cc
  151. test_http_server.cc
  152. test_utils.cc
  153. test_utils.h
  154. testrunner.cc
  155. unittest_key.pem
  156. unittest_key2.pem
  157. update_attempter.cc
  158. update_attempter.h
  159. update_attempter_mock.h
  160. update_attempter_unittest.cc
  161. update_check_scheduler.cc
  162. update_check_scheduler.h
  163. update_check_scheduler_unittest.cc
  164. update_engine.xml
  165. update_engine_client.cc
  166. update_metadata.proto
  167. UpdateEngine.conf
  168. utils.cc
  169. utils.h
  170. utils_unittest.cc
  171. WATCHLISTS
  172. zip_unittest.cc