PolicyManager: EvaluationContext caches null values.

When a variable fails during an evaluation, we don't want to retry it
on that evaluation. That would imply that the same policy could get
more than one value for that variable (one null and one not null)
which can make bugs harder to find.

Const variables that fail, should fail during the whole program, and
reflect that a given subsystem isn't present on the build.

BUG=None
TEST=unittest modified.

Change-Id: Icb69623318d31883e0a857ce0d1fb900ca68290f
Reviewed-on: https://chromium-review.googlesource.com/196704
Reviewed-by: Alex Deymo <deymo@chromium.org>
Commit-Queue: Alex Deymo <deymo@chromium.org>
Tested-by: Alex Deymo <deymo@chromium.org>
2 files changed
tree: 27b5fd2926647b4e417c8573c0f1a5c0e880b5f2
  1. init/
  2. policy_manager/
  3. .gitignore
  4. 99-gpio-dutflag.rules
  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. cycle_breaker.cc
  36. cycle_breaker.h
  37. cycle_breaker_unittest.cc
  38. dbus_constants.h
  39. dbus_service.cc
  40. dbus_service.h
  41. dbus_wrapper_interface.h
  42. delta_diff_generator.cc
  43. delta_diff_generator.h
  44. delta_diff_generator_unittest.cc
  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_mapper.cc
  53. extent_mapper.h
  54. extent_mapper_unittest.cc
  55. extent_ranges.cc
  56. extent_ranges.h
  57. extent_ranges_unittest.cc
  58. extent_writer.cc
  59. extent_writer.h
  60. extent_writer_unittest.cc
  61. fake_clock.h
  62. fake_hardware.h
  63. fake_p2p_manager.h
  64. fake_p2p_manager_configuration.h
  65. fake_prefs.cc
  66. fake_prefs.h
  67. fake_system_state.cc
  68. fake_system_state.h
  69. file_descriptor.cc
  70. file_descriptor.h
  71. file_writer.cc
  72. file_writer.h
  73. file_writer_mock.h
  74. file_writer_unittest.cc
  75. filesystem_copier_action.cc
  76. filesystem_copier_action.h
  77. filesystem_copier_action_unittest.cc
  78. filesystem_iterator.cc
  79. filesystem_iterator.h
  80. filesystem_iterator_unittest.cc
  81. full_update_generator.cc
  82. full_update_generator.h
  83. full_update_generator_unittest.cc
  84. gen_coverage_html
  85. generate_delta_main.cc
  86. gpio_handler.cc
  87. gpio_handler.h
  88. gpio_handler_unittest.cc
  89. gpio_handler_unittest.h
  90. gpio_mock_file_descriptor.cc
  91. gpio_mock_file_descriptor.h
  92. gpio_mock_udev_interface.cc
  93. gpio_mock_udev_interface.h
  94. graph_types.h
  95. graph_utils.cc
  96. graph_utils.h
  97. graph_utils_unittest.cc
  98. hardware.cc
  99. hardware.h
  100. hardware_interface.h
  101. http_common.cc
  102. http_common.h
  103. http_fetcher.cc
  104. http_fetcher.h
  105. http_fetcher_unittest.cc
  106. hwid_override.cc
  107. hwid_override.h
  108. hwid_override_unittest.cc
  109. inherit-review-settings-ok
  110. install_plan.cc
  111. install_plan.h
  112. libcurl_http_fetcher.cc
  113. libcurl_http_fetcher.h
  114. LICENSE
  115. local_coverage_rate
  116. main.cc
  117. metadata.cc
  118. metadata.h
  119. metadata_unittest.cc
  120. metrics.cc
  121. metrics.h
  122. mock_connection_manager.h
  123. mock_dbus_wrapper.h
  124. mock_file_writer.h
  125. mock_gpio_handler.h
  126. mock_hardware.h
  127. mock_http_fetcher.cc
  128. mock_http_fetcher.h
  129. mock_p2p_manager.h
  130. mock_payload_state.h
  131. multi_range_http_fetcher.cc
  132. multi_range_http_fetcher.h
  133. omaha_hash_calculator.cc
  134. omaha_hash_calculator.h
  135. omaha_hash_calculator_unittest.cc
  136. omaha_request_action.cc
  137. omaha_request_action.h
  138. omaha_request_action_unittest.cc
  139. omaha_request_params.cc
  140. omaha_request_params.h
  141. omaha_request_params_unittest.cc
  142. omaha_response.h
  143. omaha_response_handler_action.cc
  144. omaha_response_handler_action.h
  145. omaha_response_handler_action_unittest.cc
  146. p2p_manager.cc
  147. p2p_manager.h
  148. p2p_manager_unittest.cc
  149. payload_signer.cc
  150. payload_signer.h
  151. payload_signer_unittest.cc
  152. payload_state.cc
  153. payload_state.h
  154. payload_state_interface.h
  155. payload_state_unittest.cc
  156. postinstall_runner_action.cc
  157. postinstall_runner_action.h
  158. postinstall_runner_action_unittest.cc
  159. prefs.cc
  160. prefs.h
  161. prefs_interface.h
  162. prefs_mock.h
  163. prefs_unittest.cc
  164. proxy_resolver.cc
  165. proxy_resolver.h
  166. real_dbus_wrapper.h
  167. real_system_state.cc
  168. real_system_state.h
  169. run_unittests
  170. sample_omaha_v3_response.xml
  171. SConstruct
  172. simple_key_value_store.cc
  173. simple_key_value_store.h
  174. simple_key_value_store_unittest.cc
  175. subprocess.cc
  176. subprocess.h
  177. subprocess_unittest.cc
  178. system_state.h
  179. tarjan.cc
  180. tarjan.h
  181. tarjan_unittest.cc
  182. terminator.cc
  183. terminator.h
  184. terminator_unittest.cc
  185. test_http_server.cc
  186. test_utils.cc
  187. test_utils.h
  188. testrunner.cc
  189. topological_sort.cc
  190. topological_sort.h
  191. topological_sort_unittest.cc
  192. udev_interface.h
  193. unittest_key.pem
  194. unittest_key2.pem
  195. update_attempter.cc
  196. update_attempter.h
  197. update_attempter_mock.h
  198. update_attempter_unittest.cc
  199. update_check_scheduler.cc
  200. update_check_scheduler.h
  201. update_check_scheduler_unittest.cc
  202. update_engine.xml
  203. update_engine_client.cc
  204. update_metadata.proto
  205. UpdateEngine.conf
  206. utils.cc
  207. utils.h
  208. utils_unittest.cc
  209. WATCHLISTS
  210. zip_unittest.cc