Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(55)

Unified Diff: chromeos/dbus/fake_shill_profile_client.cc

Issue 284673004: Improve functionality of FakeShillProfileClient (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chromeos/dbus/fake_shill_profile_client.cc
diff --git a/chromeos/dbus/fake_shill_profile_client.cc b/chromeos/dbus/fake_shill_profile_client.cc
index d0ff0f64a05ee5ac5f08764439d3e841189139ba..19ae6d131bb510b30830e19bd2b8cada02fabef9 100644
--- a/chromeos/dbus/fake_shill_profile_client.cc
+++ b/chromeos/dbus/fake_shill_profile_client.cc
@@ -22,8 +22,8 @@
namespace chromeos {
struct FakeShillProfileClient::ProfileProperties {
- base::DictionaryValue entries;
- base::DictionaryValue properties;
+ base::DictionaryValue entries; // Dictionary of Service Dictionaries
+ base::DictionaryValue properties; // Dictionary of Profile properties
};
namespace {
@@ -143,8 +143,7 @@ void FakeShillProfileClient::AddEntry(const std::string& profile_path,
ProfileProperties* profile = GetProfile(dbus::ObjectPath(profile_path),
ErrorCallback());
DCHECK(profile);
- profile->entries.SetWithoutPathExpansion(entry_path,
- properties.DeepCopy());
+ profile->entries.SetWithoutPathExpansion(entry_path, properties.DeepCopy());
DBusThreadManager::Get()->GetShillManagerClient()->GetTestInterface()->
AddManagerService(entry_path, false /* visible */, false /* watch */);
}
@@ -154,10 +153,37 @@ bool FakeShillProfileClient::AddService(const std::string& profile_path,
ProfileProperties* profile = GetProfile(dbus::ObjectPath(profile_path),
ErrorCallback());
if (!profile) {
- LOG(ERROR) << "No matching profile: " << profile_path;
+ LOG(ERROR) << "AddService: No matching profile: " << profile_path;
return false;
}
+ if (profile->entries.HasKey(service_path)) {
+ LOG(ERROR) << "AddService: Profile: " << profile_path
+ << " already contains Service: " << service_path;
+ return false;
+ }
+ return AddOrUpdateServiceImpl(profile, profile_path, service_path);
+}
+bool FakeShillProfileClient::UpdateService(const std::string& profile_path,
+ const std::string& service_path) {
+ ProfileProperties* profile = GetProfile(dbus::ObjectPath(profile_path),
+ ErrorCallback());
+ if (!profile) {
+ LOG(ERROR) << "UpdateService: No matching profile: " << profile_path;
+ return false;
+ }
+ if (!profile->entries.HasKey(service_path)) {
+ LOG(ERROR) << "UpdateService: Profile: " << profile_path
+ << " does not contain Service: " << service_path;
+ return false;
+ }
+ return AddOrUpdateServiceImpl(profile, profile_path, service_path);
+}
+
+bool FakeShillProfileClient::AddOrUpdateServiceImpl(
+ ProfileProperties* profile,
+ const std::string& profile_path,
+ const std::string& service_path) {
ShillServiceClient::TestInterface* service_test =
DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface();
const base::DictionaryValue* service_properties =
@@ -169,16 +195,17 @@ bool FakeShillProfileClient::AddService(const std::string& profile_path,
std::string service_profile_path;
service_properties->GetStringWithoutPathExpansion(shill::kProfileProperty,
&service_profile_path);
- if (!service_profile_path.empty() && service_profile_path != profile_path) {
+ if (service_profile_path.empty()) {
+ base::StringValue profile_path_value(profile_path);
+ service_test->SetServiceProperty(service_path,
+ shill::kProfileProperty,
+ profile_path_value);
+ } else if (service_profile_path != profile_path) {
LOG(ERROR) << "Service has non matching profile path: "
<< service_profile_path;
return false;
}
- base::StringValue profile_path_value(profile_path);
- service_test->SetServiceProperty(service_path,
- shill::kProfileProperty,
- profile_path_value);
profile->entries.SetWithoutPathExpansion(service_path,
service_properties->DeepCopy());
return true;
@@ -192,6 +219,30 @@ void FakeShillProfileClient::GetProfilePaths(
}
}
+bool FakeShillProfileClient::GetService(const std::string& service_path,
+ std::string* profile_path,
+ base::DictionaryValue* properties) {
+ properties->Clear();
+ for (ProfileMap::const_iterator iter = profiles_.begin();
+ iter != profiles_.end(); ++iter) {
+ const ProfileProperties* profile = iter->second;
+ const base::DictionaryValue* entry;
+ if (!profile->entries.GetDictionaryWithoutPathExpansion(
+ service_path, &entry)) {
+ continue;
+ }
+ *profile_path = iter->first;
+ properties->MergeDictionary(entry);
+ return true;
+ }
+ return false;
+}
+
+void FakeShillProfileClient::ClearProfiles() {
+ STLDeleteValues(&profiles_);
+ profiles_.clear();
pneubeck (no reviews) 2014/05/14 08:12:17 Redundant, STLDeleteValues also clears.
stevenjb 2014/05/14 17:08:10 So it does. done.
+}
+
FakeShillProfileClient::ProfileProperties* FakeShillProfileClient::GetProfile(
const dbus::ObjectPath& profile_path,
const ErrorCallback& error_callback) {

Powered by Google App Engine
This is Rietveld 408576698