shill: vpn: Set the friendly VPN service name.
Also, implement a more concise KeyValueStore string lookup method and add unit
tests.
BUG=chromium-os:27775
TEST=unit tests
Change-Id: If6ab38a9110c09275816bcc6ca992a77425859eb
Reviewed-on: https://gerrit.chromium.org/gerrit/18106
Commit-Ready: Darin Petkov <petkov@chromium.org>
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Darin Petkov <petkov@chromium.org>
diff --git a/vpn_provider.cc b/vpn_provider.cc
index be3c466..8ac7b38 100644
--- a/vpn_provider.cc
+++ b/vpn_provider.cc
@@ -35,7 +35,8 @@
VPNServiceRefPtr VPNProvider::GetService(const KeyValueStore &args,
Error *error) {
VLOG(2) << __func__;
- if (!args.ContainsString(flimflam::kProviderTypeProperty)) {
+ string type = args.LookupString(flimflam::kProviderTypeProperty, "");
+ if (type.empty()) {
Error::PopulateAndLog(
error, Error::kNotSupported, "Missing VPN type property.");
return NULL;
@@ -46,7 +47,6 @@
return NULL;
}
- const string &type = args.GetString(flimflam::kProviderTypeProperty);
scoped_ptr<VPNDriver> driver;
if (type == flimflam::kProviderOpenVpn) {
driver.reset(new OpenVPNDriver(
@@ -61,6 +61,10 @@
VPNServiceRefPtr service = new VPNService(
control_interface_, dispatcher_, metrics_, manager_, driver.release());
service->set_storage_id(storage_id);
+ string name = args.LookupString(flimflam::kProviderNameProperty, "");
+ if (!name.empty()) {
+ service->set_friendly_name(name);
+ }
services_.push_back(service);
manager_->RegisterService(service);
return service;