Allow to cancel a proxy resolution request.

After calling GetProxiesForUrl(), there was no way to prevent the
proxy resolver from calling the passed callback once the response is
ready. This implies that the object passed in the callback (normally
as the "data" pointer) must be kept alive until the callback comes
back.

This patch allows to cancel an ongoing request and converts the passed
callback to a base::Callback instead of using a raw pointer.

(cherry picked from commit 3582194c10c47ffcda9ad7881e7fa6eed2404406)

Bug: 34178297
Test: Added unittests.
Change-Id: Ie544d0230fd0c2dc85c6b9eaca9b5b13702516fa
Reviewed-on: https://chromium-review.googlesource.com/497490
Commit-Ready: Dan Erat <derat@chromium.org>
Tested-by: Dan Erat <derat@chromium.org>
Reviewed-by: Ben Chan <benchan@chromium.org>
Reviewed-by: Sen Jiang <senj@chromium.org>
12 files changed
tree: bac132ffaaf8ce81b81faafcbad36949ca11d4cb
  1. binder_bindings/
  2. client_library/
  3. common/
  4. dbus_bindings/
  5. include/
  6. init/
  7. payload_consumer/
  8. payload_generator/
  9. sample_images/
  10. scripts/
  11. update_manager/
  12. update_payload_key/
  13. weaved/
  14. .gitignore
  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. chrome_browser_proxy_resolver.cc
  26. chrome_browser_proxy_resolver.h
  27. chrome_browser_proxy_resolver_unittest.cc
  28. common_service.cc
  29. common_service.h
  30. common_service_unittest.cc
  31. connection_manager.cc
  32. connection_manager.h
  33. connection_manager_interface.h
  34. connection_manager_unittest.cc
  35. daemon.cc
  36. daemon.h
  37. daemon_state_android.cc
  38. daemon_state_android.h
  39. daemon_state_interface.h
  40. dbus_service.cc
  41. dbus_service.h
  42. dbus_test_utils.h
  43. fake_file_writer.h
  44. fake_p2p_manager.h
  45. fake_p2p_manager_configuration.h
  46. fake_shill_proxy.cc
  47. fake_shill_proxy.h
  48. fake_system_state.cc
  49. fake_system_state.h
  50. generate_pc_file.sh
  51. hardware_android.cc
  52. hardware_android.h
  53. hardware_chromeos.cc
  54. hardware_chromeos.h
  55. hardware_chromeos_unittest.cc
  56. image_properties.h
  57. image_properties_android.cc
  58. image_properties_chromeos.cc
  59. image_properties_chromeos_unittest.cc
  60. libcros_proxy.cc
  61. libcros_proxy.h
  62. libupdate_engine-client-test.pc.in
  63. libupdate_engine-client.pc.in
  64. local_coverage_rate
  65. main.cc
  66. metrics.cc
  67. metrics.h
  68. metrics_utils.cc
  69. metrics_utils.h
  70. metrics_utils_unittest.cc
  71. mock_connection_manager.h
  72. mock_file_writer.h
  73. mock_omaha_request_params.h
  74. mock_p2p_manager.h
  75. mock_payload_state.h
  76. mock_proxy_resolver.h
  77. mock_update_attempter.h
  78. MODULE_LICENSE_APACHE2
  79. NOTICE
  80. omaha_request_action.cc
  81. omaha_request_action.h
  82. omaha_request_action_unittest.cc
  83. omaha_request_params.cc
  84. omaha_request_params.h
  85. omaha_request_params_unittest.cc
  86. omaha_response.h
  87. omaha_response_handler_action.cc
  88. omaha_response_handler_action.h
  89. omaha_response_handler_action_unittest.cc
  90. omaha_utils.cc
  91. omaha_utils.h
  92. omaha_utils_unittest.cc
  93. OWNERS
  94. p2p_manager.cc
  95. p2p_manager.h
  96. p2p_manager_unittest.cc
  97. parcelable_update_engine_status.cc
  98. parcelable_update_engine_status.h
  99. payload_state.cc
  100. payload_state.h
  101. payload_state_interface.h
  102. payload_state_unittest.cc
  103. PRESUBMIT.cfg
  104. proxy_resolver.cc
  105. proxy_resolver.h
  106. proxy_resolver_unittest.cc
  107. real_system_state.cc
  108. real_system_state.h
  109. run_unittests
  110. sample_omaha_v3_response.xml
  111. service_delegate_android_interface.h
  112. service_observer_interface.h
  113. shill_proxy.cc
  114. shill_proxy.h
  115. shill_proxy_interface.h
  116. system_state.h
  117. tar_bunzip2.gypi
  118. test_http_server.cc
  119. test_subprocess.cc
  120. testrunner.cc
  121. unittest_key.pem
  122. unittest_key2.pem
  123. update_attempter.cc
  124. update_attempter.h
  125. update_attempter_android.cc
  126. update_attempter_android.h
  127. update_attempter_unittest.cc
  128. update_engine-client.gyp
  129. update_engine.conf
  130. update_engine.gyp
  131. update_engine.rc
  132. update_engine_client.cc
  133. update_engine_client_android.cc
  134. update_metadata.proto
  135. update_status_utils.cc
  136. update_status_utils.h
  137. UpdateEngine.conf
  138. WATCHLISTS
  139. weave_service.cc
  140. weave_service.h
  141. weave_service_factory.cc
  142. weave_service_factory.h
  143. weave_service_interface.h