Add UMA metrics for detecting and reporting update certificate changes.

LibcurlHttpFetcher checks if the update server certificate has changed
since last update, and stores an eventual report in prefs. UpdateCheckScheduler
submits to UMA reports from the previous update.

BUG=chromium-os:19842
TEST=Included unittest for the new class and tested locally on an Alex device,
since we need to verify against the actual server certificates.

Change-Id: I5bee5d648982cd7618db09b67d5bff377eaa1fc1
Reviewed-on: http://gerrit.chromium.org/gerrit/7565
Reviewed-by: Bruno Pontes Soares Rocha <bpontes@chromium.org>
Tested-by: Bruno Pontes Soares Rocha <bpontes@chromium.org>
Reviewed-by: Andrew de los Reyes <adlr@chromium.org>
Reviewed-by: Darin Petkov <petkov@chromium.org>
12 files changed
tree: a1b59255f4ffc23c9f66b50961d55263addc1790
  1. .gitignore
  2. action.h
  3. action_mock.h
  4. action_pipe.h
  5. action_pipe_unittest.cc
  6. action_processor.cc
  7. action_processor.h
  8. action_processor_mock.h
  9. action_processor_unittest.cc
  10. action_unittest.cc
  11. buffered_file_writer.cc
  12. buffered_file_writer.h
  13. buffered_file_writer_unittest.cc
  14. bzip.cc
  15. bzip.h
  16. bzip_extent_writer.cc
  17. bzip_extent_writer.h
  18. bzip_extent_writer_unittest.cc
  19. certificate_checker.cc
  20. certificate_checker.h
  21. certificate_checker_mock.h
  22. certificate_checker_unittest.cc
  23. chrome_browser_proxy_resolver.cc
  24. chrome_browser_proxy_resolver.h
  25. chrome_browser_proxy_resolver_unittest.cc
  26. chrome_proxy_resolver.cc
  27. chrome_proxy_resolver.h
  28. chrome_proxy_resolver_unittest.cc
  29. cycle_breaker.cc
  30. cycle_breaker.h
  31. cycle_breaker_unittest.cc
  32. dbus_constants.h
  33. dbus_interface.h
  34. dbus_service.cc
  35. dbus_service.h
  36. decompressing_file_writer.cc
  37. decompressing_file_writer.h
  38. decompressing_file_writer_unittest.cc
  39. delta_diff_generator.cc
  40. delta_diff_generator.h
  41. delta_diff_generator_unittest.cc
  42. delta_performer.cc
  43. delta_performer.h
  44. delta_performer_unittest.cc
  45. download_action.cc
  46. download_action.h
  47. download_action_unittest.cc
  48. extent_mapper.cc
  49. extent_mapper.h
  50. extent_mapper_unittest.cc
  51. extent_ranges.cc
  52. extent_ranges.h
  53. extent_ranges_unittest.cc
  54. extent_writer.cc
  55. extent_writer.h
  56. extent_writer_unittest.cc
  57. file_writer.cc
  58. file_writer.h
  59. file_writer_mock.h
  60. file_writer_unittest.cc
  61. filesystem_copier_action.cc
  62. filesystem_copier_action.h
  63. filesystem_copier_action_unittest.cc
  64. filesystem_iterator.cc
  65. filesystem_iterator.h
  66. filesystem_iterator_unittest.cc
  67. flimflam_proxy.cc
  68. flimflam_proxy.h
  69. flimflam_proxy_unittest.cc
  70. full_update_generator.cc
  71. full_update_generator.h
  72. full_update_generator_unittest.cc
  73. gen_coverage_html.sh
  74. generate_delta_main.cc
  75. graph_types.h
  76. graph_utils.cc
  77. graph_utils.h
  78. graph_utils_unittest.cc
  79. gzip.cc
  80. gzip.h
  81. http_fetcher.cc
  82. http_fetcher.h
  83. http_fetcher_unittest.cc
  84. inherit-review-settings-ok
  85. install_plan.h
  86. integration_unittest.cc
  87. libcurl_http_fetcher.cc
  88. libcurl_http_fetcher.h
  89. LICENSE
  90. local_coverage_rate.sh
  91. main.cc
  92. marshal.list
  93. metadata.cc
  94. metadata.h
  95. metadata_unittest.cc
  96. mock_dbus_interface.h
  97. mock_file_writer.h
  98. mock_http_fetcher.cc
  99. mock_http_fetcher.h
  100. multi_range_http_fetcher.cc
  101. multi_range_http_fetcher.h
  102. omaha_hash_calculator.cc
  103. omaha_hash_calculator.h
  104. omaha_hash_calculator_unittest.cc
  105. omaha_request_action.cc
  106. omaha_request_action.h
  107. omaha_request_action_unittest.cc
  108. omaha_request_params.cc
  109. omaha_request_params.h
  110. omaha_request_params_unittest.cc
  111. omaha_response_handler_action.cc
  112. omaha_response_handler_action.h
  113. omaha_response_handler_action_unittest.cc
  114. org.chromium.UpdateEngine.service
  115. payload_signer.cc
  116. payload_signer.h
  117. payload_signer_unittest.cc
  118. postinstall_runner_action.cc
  119. postinstall_runner_action.h
  120. postinstall_runner_action_unittest.cc
  121. prefs.cc
  122. prefs.h
  123. prefs_interface.h
  124. prefs_mock.h
  125. prefs_unittest.cc
  126. proxy_resolver.cc
  127. proxy_resolver.h
  128. SConstruct
  129. setup_dev_packages
  130. simple_key_value_store.cc
  131. simple_key_value_store.h
  132. simple_key_value_store_unittest.cc
  133. split_file_writer.cc
  134. split_file_writer.h
  135. split_file_writer_unittest.cc
  136. subprocess.cc
  137. subprocess.h
  138. subprocess_unittest.cc
  139. tarjan.cc
  140. tarjan.h
  141. tarjan_unittest.cc
  142. terminator.cc
  143. terminator.h
  144. terminator_unittest.cc
  145. test_http_server.cc
  146. test_utils.cc
  147. test_utils.h
  148. testrunner.cc
  149. topological_sort.cc
  150. topological_sort.h
  151. topological_sort_unittest.cc
  152. unittest_key.pem
  153. unittest_key2.pem
  154. update_attempter.cc
  155. update_attempter.h
  156. update_attempter_mock.h
  157. update_attempter_unittest.cc
  158. update_check_scheduler.cc
  159. update_check_scheduler.h
  160. update_check_scheduler_unittest.cc
  161. update_engine.xml
  162. update_engine_client.cc
  163. update_metadata.proto
  164. UpdateEngine.conf
  165. utils.cc
  166. utils.h
  167. utils_unittest.cc
  168. WATCHLISTS
  169. zip_unittest.cc