[shill] Use composition instead of inheritance with PropertyStore
Instead of having Device, Manager, etc all inherit from PropertyStore
and have it be difficult to follow the getting/setting property code,
have each include a PropertyStore as a data member. Provide an
accessor so that RPC adaptor classes can get and set properties
directly and continue to handle any necessary type conversion
themselves.
BUG=None
TEST=unit tests
Change-Id: I34781bde4de0e152550ca636e28d472abde756af
Reviewed-on: http://gerrit.chromium.org/gerrit/3616
Tested-by: Chris Masone <cmasone@chromium.org>
Reviewed-by: Darin Petkov <petkov@chromium.org>
diff --git a/service_unittest.cc b/service_unittest.cc
index 1fdfbab..367107c 100644
--- a/service_unittest.cc
+++ b/service_unittest.cc
@@ -63,10 +63,10 @@
{
::DBus::Error dbus_error;
string expected("portal_list");
- service_->SetStringProperty(flimflam::kCheckPortalProperty,
- expected,
- &error);
- DBusAdaptor::GetProperties(service_.get(), &props, &dbus_error);
+ service_->store()->SetStringProperty(flimflam::kCheckPortalProperty,
+ expected,
+ &error);
+ DBusAdaptor::GetProperties(service_->store(), &props, &dbus_error);
ASSERT_FALSE(props.find(flimflam::kCheckPortalProperty) == props.end());
EXPECT_EQ(props[flimflam::kCheckPortalProperty].reader().get_string(),
expected);
@@ -74,30 +74,34 @@
{
::DBus::Error dbus_error;
bool expected = true;
- service_->SetBoolProperty(flimflam::kAutoConnectProperty, expected, &error);
- DBusAdaptor::GetProperties(service_.get(), &props, &dbus_error);
+ service_->store()->SetBoolProperty(flimflam::kAutoConnectProperty,
+ expected,
+ &error);
+ DBusAdaptor::GetProperties(service_->store(), &props, &dbus_error);
ASSERT_FALSE(props.find(flimflam::kAutoConnectProperty) == props.end());
EXPECT_EQ(props[flimflam::kAutoConnectProperty].reader().get_bool(),
expected);
}
{
::DBus::Error dbus_error;
- DBusAdaptor::GetProperties(service_.get(), &props, &dbus_error);
+ DBusAdaptor::GetProperties(service_->store(), &props, &dbus_error);
ASSERT_FALSE(props.find(flimflam::kConnectableProperty) == props.end());
EXPECT_EQ(props[flimflam::kConnectableProperty].reader().get_bool(), false);
}
{
::DBus::Error dbus_error;
int32 expected = 127;
- service_->SetInt32Property(flimflam::kPriorityProperty, expected, &error);
- DBusAdaptor::GetProperties(service_.get(), &props, &dbus_error);
+ service_->store()->SetInt32Property(flimflam::kPriorityProperty,
+ expected,
+ &error);
+ DBusAdaptor::GetProperties(service_->store(), &props, &dbus_error);
ASSERT_FALSE(props.find(flimflam::kPriorityProperty) == props.end());
EXPECT_EQ(props[flimflam::kPriorityProperty].reader().get_int32(),
expected);
}
{
::DBus::Error dbus_error;
- DBusAdaptor::GetProperties(service_.get(), &props, &dbus_error);
+ DBusAdaptor::GetProperties(service_->store(), &props, &dbus_error);
ASSERT_FALSE(props.find(flimflam::kDeviceProperty) == props.end());
EXPECT_EQ(props[flimflam::kDeviceProperty].reader().get_string(),
string(ServiceTest::kMockDeviceRpcId));
@@ -107,21 +111,21 @@
TEST_F(ServiceTest, Dispatch) {
{
::DBus::Error error;
- EXPECT_TRUE(DBusAdaptor::DispatchOnType(service_.get(),
+ EXPECT_TRUE(DBusAdaptor::DispatchOnType(service_->store(),
flimflam::kSaveCredentialsProperty,
PropertyStoreTest::kBoolV,
&error));
}
{
::DBus::Error error;
- EXPECT_TRUE(DBusAdaptor::DispatchOnType(service_.get(),
+ EXPECT_TRUE(DBusAdaptor::DispatchOnType(service_->store(),
flimflam::kPriorityProperty,
PropertyStoreTest::kInt32V,
&error));
}
{
::DBus::Error error;
- EXPECT_TRUE(DBusAdaptor::DispatchOnType(service_.get(),
+ EXPECT_TRUE(DBusAdaptor::DispatchOnType(service_->store(),
flimflam::kEAPEAPProperty,
PropertyStoreTest::kStringV,
&error));
@@ -129,7 +133,7 @@
// Ensure that an attempt to write a R/O property returns InvalidArgs error.
{
::DBus::Error error;
- EXPECT_FALSE(DBusAdaptor::DispatchOnType(service_.get(),
+ EXPECT_FALSE(DBusAdaptor::DispatchOnType(service_->store(),
flimflam::kFavoriteProperty,
PropertyStoreTest::kBoolV,
&error));
@@ -140,7 +144,7 @@
TEST_P(ServiceTest, TestProperty) {
// Ensure that an attempt to write unknown properties returns InvalidProperty.
::DBus::Error error;
- EXPECT_FALSE(DBusAdaptor::DispatchOnType(service_.get(),
+ EXPECT_FALSE(DBusAdaptor::DispatchOnType(service_->store(),
"",
GetParam(),
&error));