shill: Move Metrics from singleton to Shill daemon
While implementing chromium-os:24810, it was discovered that Metrics is
cleaner if it is passed around like ControlInterface, Dispatcher,
Manager, etc. This approach also makes Metrics more testable.
BUG=chromium-os:24810
TEST=Unit tests, network_WiFiManager suite
Change-Id: I556a1bd11f21f0b93ecfeaae8855dfb99ed5e5f9
Reviewed-on: https://gerrit.chromium.org/gerrit/14099
Commit-Ready: Thieu Le <thieule@chromium.org>
Reviewed-by: Thieu Le <thieule@chromium.org>
Tested-by: Thieu Le <thieule@chromium.org>
diff --git a/device_info.cc b/device_info.cc
index 79588d2..9849cb6 100644
--- a/device_info.cc
+++ b/device_info.cc
@@ -61,9 +61,11 @@
DeviceInfo::DeviceInfo(ControlInterface *control_interface,
EventDispatcher *dispatcher,
+ Metrics *metrics,
Manager *manager)
: control_interface_(control_interface),
dispatcher_(dispatcher),
+ metrics_(metrics),
manager_(manager),
link_callback_(NewCallback(this, &DeviceInfo::LinkMsgHandler)),
address_callback_(NewCallback(this, &DeviceInfo::AddressMsgHandler)),
@@ -209,18 +211,19 @@
manager_->modem_info()->OnDeviceInfoAvailable(link_name);
return;
case Technology::kEthernet:
- device = new Ethernet(control_interface_, dispatcher_, manager_,
- link_name, address, dev_index);
+ device = new Ethernet(control_interface_, dispatcher_, metrics_,
+ manager_, link_name, address, dev_index);
device->EnableIPv6Privacy();
break;
case Technology::kWifi:
- device = new WiFi(control_interface_, dispatcher_, manager_,
+ device = new WiFi(control_interface_, dispatcher_, metrics_, manager_,
link_name, address, dev_index);
device->EnableIPv6Privacy();
break;
default:
- device = new DeviceStub(control_interface_, dispatcher_, manager_,
- link_name, address, dev_index, technology);
+ device = new DeviceStub(control_interface_, dispatcher_, metrics_,
+ manager_, link_name, address, dev_index,
+ technology);
break;
}
RegisterDevice(device);