update_engine: Add disconnected network type for metrics reporting

On a failed update, correctly report that the network is disconnected
rather than reporting an "unknown" network type, which is set when the
connection type cannot be determined based on the properties of a given
service path.

BUG=chromium:660283
TEST=Added relevant unittests. Also tested manually by updating via cros
flash, unplugging Ethernet after the transfer, and killing the
dev_server. Metrics sends "disconnected" as expected.

Change-Id: Ia681b769208b67fb5c14d41a646d816a42ccf33e
Reviewed-on: https://chromium-review.googlesource.com/1231700
Commit-Ready: Colin Howes <chowes@google.com>
Tested-by: Colin Howes <chowes@google.com>
Reviewed-by: Amin Hassani <ahassani@chromium.org>
9 files changed
tree: ef2626eb7b1d9248c2c4c89ed846dbe29ed596f8
  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. .clang-format
  13. .gitignore
  14. Android.bp
  15. Android.mk
  16. binder_service_android.cc
  17. binder_service_android.h
  18. binder_service_brillo.cc
  19. binder_service_brillo.h
  20. boot_control_android.cc
  21. boot_control_android.h
  22. boot_control_chromeos.cc
  23. boot_control_chromeos.h
  24. boot_control_chromeos_unittest.cc
  25. boot_control_recovery.cc
  26. boot_control_recovery.h
  27. boot_control_recovery_stub.cc
  28. certificate_checker.cc
  29. certificate_checker.h
  30. certificate_checker_unittest.cc
  31. chrome_browser_proxy_resolver.cc
  32. chrome_browser_proxy_resolver.h
  33. COMMIT-QUEUE.ini
  34. common_service.cc
  35. common_service.h
  36. common_service_unittest.cc
  37. connection_manager.cc
  38. connection_manager.h
  39. connection_manager_android.cc
  40. connection_manager_android.h
  41. connection_manager_interface.h
  42. connection_manager_unittest.cc
  43. connection_utils.cc
  44. connection_utils.h
  45. CPPLINT.cfg
  46. daemon.cc
  47. daemon.h
  48. daemon_state_android.cc
  49. daemon_state_android.h
  50. daemon_state_interface.h
  51. dbus_connection.cc
  52. dbus_connection.h
  53. dbus_service.cc
  54. dbus_service.h
  55. dbus_test_utils.h
  56. dlcservice_chromeos.cc
  57. dlcservice_chromeos.h
  58. fake_file_writer.h
  59. fake_p2p_manager.h
  60. fake_p2p_manager_configuration.h
  61. fake_shill_proxy.cc
  62. fake_shill_proxy.h
  63. fake_system_state.cc
  64. fake_system_state.h
  65. generate_pc_file.sh
  66. hardware_android.cc
  67. hardware_android.h
  68. hardware_chromeos.cc
  69. hardware_chromeos.h
  70. hardware_chromeos_unittest.cc
  71. image_properties.h
  72. image_properties_android.cc
  73. image_properties_android_unittest.cc
  74. image_properties_chromeos.cc
  75. image_properties_chromeos_unittest.cc
  76. libcurl_http_fetcher.cc
  77. libcurl_http_fetcher.h
  78. libupdate_engine-client-test.pc.in
  79. libupdate_engine-client.pc.in
  80. local_coverage_rate
  81. main.cc
  82. metrics_constants.h
  83. metrics_reporter_android.cc
  84. metrics_reporter_android.h
  85. metrics_reporter_interface.h
  86. metrics_reporter_omaha.cc
  87. metrics_reporter_omaha.h
  88. metrics_reporter_omaha_unittest.cc
  89. metrics_reporter_stub.cc
  90. metrics_reporter_stub.h
  91. metrics_utils.cc
  92. metrics_utils.h
  93. metrics_utils_unittest.cc
  94. mock_certificate_checker.h
  95. mock_connection_manager.h
  96. mock_file_writer.h
  97. mock_metrics_reporter.h
  98. mock_omaha_request_params.h
  99. mock_p2p_manager.h
  100. mock_payload_state.h
  101. mock_power_manager.h
  102. mock_proxy_resolver.h
  103. mock_service_observer.h
  104. mock_update_attempter.h
  105. MODULE_LICENSE_APACHE2
  106. network_selector.h
  107. network_selector_android.cc
  108. network_selector_android.h
  109. network_selector_interface.h
  110. network_selector_stub.cc
  111. network_selector_stub.h
  112. NOTICE
  113. omaha_request_action.cc
  114. omaha_request_action.h
  115. omaha_request_action_unittest.cc
  116. omaha_request_params.cc
  117. omaha_request_params.h
  118. omaha_request_params_unittest.cc
  119. omaha_response.h
  120. omaha_response_handler_action.cc
  121. omaha_response_handler_action.h
  122. omaha_response_handler_action_unittest.cc
  123. omaha_utils.cc
  124. omaha_utils.h
  125. omaha_utils_unittest.cc
  126. OWNERS
  127. p2p_manager.cc
  128. p2p_manager.h
  129. p2p_manager_unittest.cc
  130. parcelable_update_engine_status.cc
  131. parcelable_update_engine_status.h
  132. parcelable_update_engine_status_unittest.cc
  133. payload_state.cc
  134. payload_state.h
  135. payload_state_interface.h
  136. payload_state_unittest.cc
  137. power_manager_android.cc
  138. power_manager_android.h
  139. power_manager_chromeos.cc
  140. power_manager_chromeos.h
  141. power_manager_interface.h
  142. PRESUBMIT.cfg
  143. PREUPLOAD.cfg
  144. proxy_resolver.cc
  145. proxy_resolver.h
  146. proxy_resolver_unittest.cc
  147. pylintrc
  148. real_system_state.cc
  149. real_system_state.h
  150. run_unittests
  151. sample_omaha_v3_response.xml
  152. service_delegate_android_interface.h
  153. service_observer_interface.h
  154. shill_proxy.cc
  155. shill_proxy.h
  156. shill_proxy_interface.h
  157. sideload_main.cc
  158. system_state.h
  159. tar_bunzip2.gypi
  160. test_http_server.cc
  161. test_subprocess.cc
  162. testrunner.cc
  163. unittest_key.pem
  164. unittest_key2.pem
  165. update_attempter.cc
  166. update_attempter.h
  167. update_attempter_android.cc
  168. update_attempter_android.h
  169. update_attempter_android_unittest.cc
  170. update_attempter_unittest.cc
  171. update_boot_flags_action.cc
  172. update_boot_flags_action.h
  173. update_boot_flags_action_unittest.cc
  174. update_engine-client.gyp
  175. update_engine.conf
  176. update_engine.gyp
  177. update_engine.rc
  178. update_engine_client.cc
  179. update_engine_client_android.cc
  180. update_metadata.proto
  181. update_status_utils.cc
  182. update_status_utils.h
  183. UpdateEngine.conf
  184. utils_android.cc
  185. utils_android.h