update_engine: UM: Policy to distinguish between P2P downloading and sharing.

Previously, the UpdateCanStart policy returned a single Boolean,
indicating whether "P2P is allowed". However, the policy has been
incorrectly reproducing decisions made by current code, whereas P2P
sharing is always allowed (if P2P is enabled) but P2P downloading has
additional limitations. This CL introduces distinct flags for both
downloading and sharing, and reasons about them specifically.

This also adds a constraints whereas P2P downloading is allowed for
non-interactive updates only.

BUG=chromium:420732
TEST=Unit tests.

Change-Id: Ife4b6b2830c999745a0d4239089034c863de6388
Reviewed-on: https://chromium-review.googlesource.com/222262
Tested-by: Gilad Arnold <garnold@chromium.org>
Reviewed-by: Alex Deymo <deymo@chromium.org>
Commit-Queue: Gilad Arnold <garnold@chromium.org>
5 files changed
tree: 969f6860f5392013288f78584b17ced6314b4844
  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. glib_utils.cc
  71. glib_utils.h
  72. hardware.cc
  73. hardware.h
  74. hardware_interface.h
  75. http_common.cc
  76. http_common.h
  77. http_fetcher.cc
  78. http_fetcher.h
  79. http_fetcher_unittest.cc
  80. hwid_override.cc
  81. hwid_override.h
  82. hwid_override_unittest.cc
  83. install_plan.cc
  84. install_plan.h
  85. libcurl_http_fetcher.cc
  86. libcurl_http_fetcher.h
  87. local_coverage_rate
  88. main.cc
  89. metrics.cc
  90. metrics.h
  91. mock_connection_manager.h
  92. mock_dbus_wrapper.h
  93. mock_file_writer.h
  94. mock_hardware.h
  95. mock_http_fetcher.cc
  96. mock_http_fetcher.h
  97. mock_omaha_request_params.h
  98. mock_p2p_manager.h
  99. mock_payload_state.h
  100. mock_update_attempter.h
  101. multi_range_http_fetcher.cc
  102. multi_range_http_fetcher.h
  103. omaha_hash_calculator.cc
  104. omaha_hash_calculator.h
  105. omaha_hash_calculator_unittest.cc
  106. omaha_request_action.cc
  107. omaha_request_action.h
  108. omaha_request_action_unittest.cc
  109. omaha_request_params.cc
  110. omaha_request_params.h
  111. omaha_request_params_unittest.cc
  112. omaha_response.h
  113. omaha_response_handler_action.cc
  114. omaha_response_handler_action.h
  115. omaha_response_handler_action_unittest.cc
  116. OWNERS
  117. p2p_manager.cc
  118. p2p_manager.h
  119. p2p_manager_unittest.cc
  120. payload_constants.cc
  121. payload_constants.h
  122. payload_state.cc
  123. payload_state.h
  124. payload_state_interface.h
  125. payload_state_unittest.cc
  126. payload_verifier.cc
  127. payload_verifier.h
  128. postinstall_runner_action.cc
  129. postinstall_runner_action.h
  130. postinstall_runner_action_unittest.cc
  131. prefs.cc
  132. prefs.h
  133. prefs_interface.h
  134. prefs_mock.h
  135. prefs_unittest.cc
  136. proxy_resolver.cc
  137. proxy_resolver.h
  138. real_dbus_wrapper.h
  139. real_system_state.cc
  140. real_system_state.h
  141. run_unittests
  142. sample_omaha_v3_response.xml
  143. subprocess.cc
  144. subprocess.h
  145. subprocess_unittest.cc
  146. system_state.h
  147. terminator.cc
  148. terminator.h
  149. terminator_unittest.cc
  150. test_http_server.cc
  151. test_utils.cc
  152. test_utils.h
  153. testrunner.cc
  154. unittest_key.pem
  155. unittest_key2.pem
  156. update_attempter.cc
  157. update_attempter.h
  158. update_attempter_unittest.cc
  159. update_engine.gyp
  160. update_engine.xml
  161. update_engine_client.cc
  162. update_metadata.proto
  163. UpdateEngine.conf
  164. utils.cc
  165. utils.h
  166. utils_unittest.cc
  167. WATCHLISTS
  168. zip_unittest.cc