shill: Implement write-only properties

Certain properties (e.g. WIFI Passphrase) are write only and must
not be returned when Service.GetProperties() is called over D-Bus.

This CL implements WriteOnlyProperties, a write-only analog of the
read-only ConstProperties.

Also add a ReadablePropertyConstIterator which only returns the
readable properties. Switch over DBus adaptor and PropertyStore
to use that.

BUG=chromium-os:21196
TEST=Added 2 new unittests.

Change-Id: I52815cc395650e0b49e1acac8d4954deeebcee5d
Reviewed-on: https://gerrit.chromium.org/gerrit/11402
Commit-Ready: Gaurav Shah <gauravsh@chromium.org>
Reviewed-by: Gaurav Shah <gauravsh@chromium.org>
Tested-by: Gaurav Shah <gauravsh@chromium.org>
33 files changed
tree: 1bffa47b7dd9a98d8c33045860ddc31c6a58cdae
  1. dbus_bindings/
  2. accessor_interface.h
  3. adaptor_interfaces.h
  4. byte_string.cc
  5. byte_string.h
  6. byte_string_unittest.cc
  7. cellular.cc
  8. cellular.h
  9. cellular_capability.cc
  10. cellular_capability.h
  11. cellular_capability_cdma.cc
  12. cellular_capability_cdma.h
  13. cellular_capability_cdma_unittest.cc
  14. cellular_capability_gsm.cc
  15. cellular_capability_gsm.h
  16. cellular_capability_gsm_unittest.cc
  17. cellular_service.cc
  18. cellular_service.h
  19. cellular_unittest.cc
  20. connection.cc
  21. connection.h
  22. connection_unittest.cc
  23. control_interface.h
  24. crypto_des_cbc.cc
  25. crypto_des_cbc.h
  26. crypto_des_cbc_unittest.cc
  27. crypto_interface.h
  28. crypto_provider.cc
  29. crypto_provider.h
  30. crypto_provider_unittest.cc
  31. crypto_rot47.cc
  32. crypto_rot47.h
  33. crypto_rot47_unittest.cc
  34. dbus_adaptor.cc
  35. dbus_adaptor.h
  36. dbus_adaptor_unittest.cc
  37. dbus_control.cc
  38. dbus_control.h
  39. dbus_properties.cc
  40. dbus_properties.h
  41. dbus_properties_proxy.cc
  42. dbus_properties_proxy.h
  43. dbus_properties_proxy_interface.h
  44. dbus_properties_unittest.cc
  45. default_profile.cc
  46. default_profile.h
  47. default_profile_unittest.cc
  48. device.cc
  49. device.h
  50. device_dbus_adaptor.cc
  51. device_dbus_adaptor.h
  52. device_info.cc
  53. device_info.h
  54. device_info_unittest.cc
  55. device_stub.h
  56. device_unittest.cc
  57. dhcp_config.cc
  58. dhcp_config.h
  59. dhcp_config_unittest.cc
  60. dhcp_provider.cc
  61. dhcp_provider.h
  62. dhcp_provider_unittest.cc
  63. dhcp_proxy_interface.h
  64. dhcpcd_proxy.cc
  65. dhcpcd_proxy.h
  66. dns_client.cc
  67. dns_client.h
  68. dns_client_unittest.cc
  69. endpoint.cc
  70. endpoint.h
  71. ephemeral_profile.cc
  72. ephemeral_profile.h
  73. error.cc
  74. error.h
  75. error_unittest.cc
  76. ethernet.cc
  77. ethernet.h
  78. ethernet_service.cc
  79. ethernet_service.h
  80. event_dispatcher.cc
  81. event_dispatcher.h
  82. glib.cc
  83. glib.h
  84. glib_io_input_handler.cc
  85. glib_io_input_handler.h
  86. glib_io_ready_handler.cc
  87. glib_io_ready_handler.h
  88. HACKING
  89. ieee80211.h
  90. io_handler.h
  91. ip_address.cc
  92. ip_address.h
  93. ip_address_unittest.cc
  94. ipconfig.cc
  95. ipconfig.h
  96. ipconfig_dbus_adaptor.cc
  97. ipconfig_dbus_adaptor.h
  98. ipconfig_unittest.cc
  99. key_file_store.cc
  100. key_file_store.h
  101. key_file_store_unittest.cc
  102. key_value_store.cc
  103. key_value_store.h
  104. LICENSE
  105. Makefile
  106. manager.cc
  107. manager.h
  108. manager_dbus_adaptor.cc
  109. manager_dbus_adaptor.h
  110. manager_unittest.cc
  111. mock_adaptors.cc
  112. mock_adaptors.h
  113. mock_ares.cc
  114. mock_ares.h
  115. mock_control.cc
  116. mock_control.h
  117. mock_dbus_properties_proxy.cc
  118. mock_dbus_properties_proxy.h
  119. mock_device.cc
  120. mock_device.h
  121. mock_device_info.cc
  122. mock_device_info.h
  123. mock_dhcp_config.cc
  124. mock_dhcp_config.h
  125. mock_dhcp_provider.cc
  126. mock_dhcp_provider.h
  127. mock_dhcp_proxy.cc
  128. mock_dhcp_proxy.h
  129. mock_event_dispatcher.cc
  130. mock_event_dispatcher.h
  131. mock_glib.cc
  132. mock_glib.h
  133. mock_ipconfig.cc
  134. mock_ipconfig.h
  135. mock_manager.cc
  136. mock_manager.h
  137. mock_modem_cdma_proxy.cc
  138. mock_modem_cdma_proxy.h
  139. mock_modem_gsm_card_proxy.cc
  140. mock_modem_gsm_card_proxy.h
  141. mock_modem_gsm_network_proxy.cc
  142. mock_modem_gsm_network_proxy.h
  143. mock_modem_manager_proxy.cc
  144. mock_modem_manager_proxy.h
  145. mock_modem_proxy.cc
  146. mock_modem_proxy.h
  147. mock_modem_simple_proxy.cc
  148. mock_modem_simple_proxy.h
  149. mock_power_manager_proxy.cc
  150. mock_power_manager_proxy.h
  151. mock_profile.cc
  152. mock_profile.h
  153. mock_property_store.cc
  154. mock_property_store.h
  155. mock_resolver.cc
  156. mock_resolver.h
  157. mock_routing_table.cc
  158. mock_routing_table.h
  159. mock_rtnl_handler.cc
  160. mock_rtnl_handler.h
  161. mock_service.cc
  162. mock_service.h
  163. mock_sockets.cc
  164. mock_sockets.h
  165. mock_store.cc
  166. mock_store.h
  167. mock_supplicant_interface_proxy.cc
  168. mock_supplicant_interface_proxy.h
  169. mock_supplicant_process_proxy.cc
  170. mock_supplicant_process_proxy.h
  171. mock_time.cc
  172. mock_time.h
  173. mock_wifi.cc
  174. mock_wifi.h
  175. modem.cc
  176. modem.h
  177. modem_cdma_proxy.cc
  178. modem_cdma_proxy.h
  179. modem_cdma_proxy_interface.h
  180. modem_gsm_card_proxy.cc
  181. modem_gsm_card_proxy.h
  182. modem_gsm_card_proxy_interface.h
  183. modem_gsm_network_proxy.cc
  184. modem_gsm_network_proxy.h
  185. modem_gsm_network_proxy_interface.h
  186. modem_info.cc
  187. modem_info.h
  188. modem_info_unittest.cc
  189. modem_manager.cc
  190. modem_manager.h
  191. modem_manager_proxy.cc
  192. modem_manager_proxy.h
  193. modem_manager_proxy_interface.h
  194. modem_manager_unittest.cc
  195. modem_proxy.cc
  196. modem_proxy.h
  197. modem_proxy_interface.h
  198. modem_simple_proxy.cc
  199. modem_simple_proxy.h
  200. modem_simple_proxy_interface.h
  201. modem_unittest.cc
  202. nice_mock_control.cc
  203. nice_mock_control.h
  204. power_manager_proxy.cc
  205. power_manager_proxy.h
  206. power_manager_proxy_interface.h
  207. profile.cc
  208. profile.h
  209. profile_dbus_adaptor.cc
  210. profile_dbus_adaptor.h
  211. profile_unittest.cc
  212. property_accessor.h
  213. property_accessor_unittest.cc
  214. property_iterator.h
  215. property_store.cc
  216. property_store.h
  217. property_store_unittest.cc
  218. property_store_unittest.h
  219. provider_db_unittest.bfd
  220. proxy_factory.cc
  221. proxy_factory.h
  222. refptr_types.h
  223. resolver.cc
  224. resolver.h
  225. resolver_unittest.cc
  226. routing_table.cc
  227. routing_table.h
  228. routing_table_entry.h
  229. routing_table_unittest.cc
  230. rtnl_handler.cc
  231. rtnl_handler.h
  232. rtnl_handler_unittest.cc
  233. rtnl_listener.cc
  234. rtnl_listener.h
  235. rtnl_listener_unittest.cc
  236. rtnl_message.cc
  237. rtnl_message.h
  238. rtnl_message_unittest.cc
  239. service.cc
  240. service.h
  241. service_dbus_adaptor.cc
  242. service_dbus_adaptor.h
  243. service_sorter.h
  244. service_under_test.cc
  245. service_under_test.h
  246. service_unittest.cc
  247. shill.conf
  248. shill_ares.cc
  249. shill_ares.h
  250. shill_config.cc
  251. shill_config.h
  252. shill_daemon.cc
  253. shill_daemon.h
  254. shill_main.cc
  255. shill_test_config.cc
  256. shill_test_config.h
  257. shill_time.cc
  258. shill_time.h
  259. shill_unittest.cc
  260. sockets.cc
  261. sockets.h
  262. store_interface.h
  263. supplicant_interface_proxy.cc
  264. supplicant_interface_proxy.h
  265. supplicant_interface_proxy_interface.h
  266. supplicant_process_proxy.cc
  267. supplicant_process_proxy.h
  268. supplicant_process_proxy_interface.h
  269. technology.cc
  270. technology.h
  271. TESTING
  272. testrunner.cc
  273. wifi.cc
  274. wifi.h
  275. wifi_endpoint.cc
  276. wifi_endpoint.h
  277. wifi_endpoint_unittest.cc
  278. wifi_service.cc
  279. wifi_service.h
  280. wifi_service_unittest.cc
  281. wifi_unittest.cc
  282. wpa_supplicant.cc
  283. wpa_supplicant.h