AU: Don't use network on expensive connection types

Specifically:

- FlimFlam proxy class to query the current network status and find
out if it's expensive.
- Dbus Interface, so dbus can be mocked.
- Libcurl change to redirect the URL if we are on an expensive
connection. This may seem hacky, but the reason I avoided retooling
the whole class is that we may decide that some network usage is
okay on pricy connections. Perhaps it's okay to throttle. So, for
now this is a more minimal change.

BUG=chromium-os:2397
TEST=Unit tests, tested that flimflam proxy works on the device.

Review URL: http://codereview.chromium.org/4029002

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