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

Side by Side Diff: chromeos/dbus/dbus_client_bundle.cc

Issue 2338063002: chromeos: Refactor D-Bus client type enum and stub vs. fake naming (Closed)
Patch Set: review comments Created 4 years, 3 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 unified diff | Download patch
« no previous file with comments | « chromeos/dbus/dbus_client_bundle.h ('k') | chromeos/dbus/dbus_client_bundle_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chromeos/dbus/dbus_client_bundle.h" 5 #include "chromeos/dbus/dbus_client_bundle.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/strings/string_split.h"
13 #include "base/strings/string_util.h"
14 #include "chromeos/chromeos_switches.h" 12 #include "chromeos/chromeos_switches.h"
15 #include "chromeos/dbus/arc_obb_mounter_client.h" 13 #include "chromeos/dbus/arc_obb_mounter_client.h"
16 #include "chromeos/dbus/cras_audio_client.h" 14 #include "chromeos/dbus/cras_audio_client.h"
17 #include "chromeos/dbus/cros_disks_client.h" 15 #include "chromeos/dbus/cros_disks_client.h"
18 #include "chromeos/dbus/cryptohome_client.h" 16 #include "chromeos/dbus/cryptohome_client.h"
19 #include "chromeos/dbus/debug_daemon_client.h" 17 #include "chromeos/dbus/debug_daemon_client.h"
20 #include "chromeos/dbus/easy_unlock_client.h" 18 #include "chromeos/dbus/easy_unlock_client.h"
21 #include "chromeos/dbus/fake_arc_obb_mounter_client.h" 19 #include "chromeos/dbus/fake_arc_obb_mounter_client.h"
22 #include "chromeos/dbus/fake_cras_audio_client.h" 20 #include "chromeos/dbus/fake_cras_audio_client.h"
23 #include "chromeos/dbus/fake_cryptohome_client.h" 21 #include "chromeos/dbus/fake_cryptohome_client.h"
(...skipping 25 matching lines...) Expand all
49 #include "chromeos/dbus/shill_manager_client.h" 47 #include "chromeos/dbus/shill_manager_client.h"
50 #include "chromeos/dbus/shill_profile_client.h" 48 #include "chromeos/dbus/shill_profile_client.h"
51 #include "chromeos/dbus/shill_service_client.h" 49 #include "chromeos/dbus/shill_service_client.h"
52 #include "chromeos/dbus/shill_third_party_vpn_driver_client.h" 50 #include "chromeos/dbus/shill_third_party_vpn_driver_client.h"
53 #include "chromeos/dbus/sms_client.h" 51 #include "chromeos/dbus/sms_client.h"
54 #include "chromeos/dbus/system_clock_client.h" 52 #include "chromeos/dbus/system_clock_client.h"
55 #include "chromeos/dbus/update_engine_client.h" 53 #include "chromeos/dbus/update_engine_client.h"
56 54
57 namespace chromeos { 55 namespace chromeos {
58 56
59 namespace { 57 DBusClientBundle::DBusClientBundle(DBusClientTypeMask real_client_mask)
60 58 : real_client_mask_(real_client_mask) {
61 // Command line switch mapping for --dbus-unstub-clients. 59 if (IsUsingReal(DBusClientType::ARC_OBB_MOUNTER))
62 const struct {
63 const char* param_name;
64 DBusClientBundle::DBusClientType client_type;
65 } client_type_map[] = {
66 { "bluetooth", DBusClientBundle::BLUETOOTH },
67 { "cras", DBusClientBundle::CRAS },
68 { "cros_disks", DBusClientBundle::CROS_DISKS },
69 { "cryptohome", DBusClientBundle::CRYPTOHOME },
70 { "debug_daemon", DBusClientBundle::DEBUG_DAEMON },
71 { "easy_unlock", DBusClientBundle::EASY_UNLOCK },
72 { "lorgnette_manager", DBusClientBundle::LORGNETTE_MANAGER },
73 { "shill", DBusClientBundle::SHILL },
74 { "gsm_sms", DBusClientBundle::GSM_SMS },
75 { "image_burner", DBusClientBundle::IMAGE_BURNER },
76 { "modem_messaging", DBusClientBundle::MODEM_MESSAGING },
77 { "permission_broker", DBusClientBundle::PERMISSION_BROKER },
78 { "power_manager", DBusClientBundle::POWER_MANAGER },
79 { "session_manager", DBusClientBundle::SESSION_MANAGER },
80 { "sms", DBusClientBundle::SMS },
81 { "system_clock", DBusClientBundle::SYSTEM_CLOCK },
82 { "update_engine", DBusClientBundle::UPDATE_ENGINE },
83 };
84
85 // Parses single command line param value for dbus subsystem. If successful,
86 // returns its enum representation. Otherwise returns NO_CLIENT.
87 DBusClientBundle::DBusClientType GetDBusClientType(
88 const std::string& client_type_name) {
89 for (size_t i = 0; i < arraysize(client_type_map); i++) {
90 if (base::LowerCaseEqualsASCII(client_type_name,
91 client_type_map[i].param_name))
92 return client_type_map[i].client_type;
93 }
94 return DBusClientBundle::NO_CLIENT;
95 }
96
97 } // namespace
98
99 DBusClientBundle::DBusClientBundle(DBusClientTypeMask unstub_client_mask)
100 : unstub_client_mask_(unstub_client_mask) {
101 if (!IsUsingStub(ARC_OBB_MOUNTER))
102 arc_obb_mounter_client_.reset(ArcObbMounterClient::Create()); 60 arc_obb_mounter_client_.reset(ArcObbMounterClient::Create());
103 else 61 else
104 arc_obb_mounter_client_.reset(new FakeArcObbMounterClient); 62 arc_obb_mounter_client_.reset(new FakeArcObbMounterClient);
105 63
106 if (!IsUsingStub(CRAS)) 64 if (IsUsingReal(DBusClientType::CRAS))
107 cras_audio_client_.reset(CrasAudioClient::Create()); 65 cras_audio_client_.reset(CrasAudioClient::Create());
108 else 66 else
109 cras_audio_client_.reset(new FakeCrasAudioClient); 67 cras_audio_client_.reset(new FakeCrasAudioClient);
110 68
111 cros_disks_client_.reset(CrosDisksClient::Create( 69 cros_disks_client_.reset(
112 IsUsingStub(CROS_DISKS) ? STUB_DBUS_CLIENT_IMPLEMENTATION 70 CrosDisksClient::Create(IsUsingReal(DBusClientType::CROS_DISKS)
113 : REAL_DBUS_CLIENT_IMPLEMENTATION)); 71 ? REAL_DBUS_CLIENT_IMPLEMENTATION
72 : FAKE_DBUS_CLIENT_IMPLEMENTATION));
114 73
115 if (!IsUsingStub(CRYPTOHOME)) 74 if (IsUsingReal(DBusClientType::CRYPTOHOME))
116 cryptohome_client_.reset(CryptohomeClient::Create()); 75 cryptohome_client_.reset(CryptohomeClient::Create());
117 else 76 else
118 cryptohome_client_.reset(new FakeCryptohomeClient); 77 cryptohome_client_.reset(new FakeCryptohomeClient);
119 78
120 if (!IsUsingStub(DEBUG_DAEMON)) 79 if (IsUsingReal(DBusClientType::DEBUG_DAEMON))
121 debug_daemon_client_.reset(DebugDaemonClient::Create()); 80 debug_daemon_client_.reset(DebugDaemonClient::Create());
122 else 81 else
123 debug_daemon_client_.reset(new FakeDebugDaemonClient); 82 debug_daemon_client_.reset(new FakeDebugDaemonClient);
124 83
125 if (!IsUsingStub(EASY_UNLOCK)) 84 if (IsUsingReal(DBusClientType::EASY_UNLOCK))
126 easy_unlock_client_.reset(EasyUnlockClient::Create()); 85 easy_unlock_client_.reset(EasyUnlockClient::Create());
127 else 86 else
128 easy_unlock_client_.reset(new FakeEasyUnlockClient); 87 easy_unlock_client_.reset(new FakeEasyUnlockClient);
129 88
130 if (!IsUsingStub(LORGNETTE_MANAGER)) 89 if (IsUsingReal(DBusClientType::LORGNETTE_MANAGER))
131 lorgnette_manager_client_.reset(LorgnetteManagerClient::Create()); 90 lorgnette_manager_client_.reset(LorgnetteManagerClient::Create());
132 else 91 else
133 lorgnette_manager_client_.reset(new FakeLorgnetteManagerClient); 92 lorgnette_manager_client_.reset(new FakeLorgnetteManagerClient);
134 93
135 if (!IsUsingStub(SHILL)) { 94 if (IsUsingReal(DBusClientType::SHILL)) {
136 shill_manager_client_.reset(ShillManagerClient::Create()); 95 shill_manager_client_.reset(ShillManagerClient::Create());
137 shill_device_client_.reset(ShillDeviceClient::Create()); 96 shill_device_client_.reset(ShillDeviceClient::Create());
138 shill_ipconfig_client_.reset(ShillIPConfigClient::Create()); 97 shill_ipconfig_client_.reset(ShillIPConfigClient::Create());
139 shill_service_client_.reset(ShillServiceClient::Create()); 98 shill_service_client_.reset(ShillServiceClient::Create());
140 shill_profile_client_.reset(ShillProfileClient::Create()); 99 shill_profile_client_.reset(ShillProfileClient::Create());
141 shill_third_party_vpn_driver_client_.reset( 100 shill_third_party_vpn_driver_client_.reset(
142 ShillThirdPartyVpnDriverClient::Create()); 101 ShillThirdPartyVpnDriverClient::Create());
143 } else { 102 } else {
144 shill_manager_client_.reset(new FakeShillManagerClient); 103 shill_manager_client_.reset(new FakeShillManagerClient);
145 shill_device_client_.reset(new FakeShillDeviceClient); 104 shill_device_client_.reset(new FakeShillDeviceClient);
146 shill_ipconfig_client_.reset(new FakeShillIPConfigClient); 105 shill_ipconfig_client_.reset(new FakeShillIPConfigClient);
147 shill_service_client_.reset(new FakeShillServiceClient); 106 shill_service_client_.reset(new FakeShillServiceClient);
148 shill_profile_client_.reset(new FakeShillProfileClient); 107 shill_profile_client_.reset(new FakeShillProfileClient);
149 shill_third_party_vpn_driver_client_.reset( 108 shill_third_party_vpn_driver_client_.reset(
150 new FakeShillThirdPartyVpnDriverClient); 109 new FakeShillThirdPartyVpnDriverClient);
151 } 110 }
152 111
153 if (!IsUsingStub(GSM_SMS)) { 112 if (IsUsingReal(DBusClientType::GSM_SMS)) {
154 gsm_sms_client_.reset(GsmSMSClient::Create()); 113 gsm_sms_client_.reset(GsmSMSClient::Create());
155 } else { 114 } else {
156 FakeGsmSMSClient* gsm_sms_client = new FakeGsmSMSClient(); 115 FakeGsmSMSClient* gsm_sms_client = new FakeGsmSMSClient();
157 gsm_sms_client->set_sms_test_message_switch_present( 116 gsm_sms_client->set_sms_test_message_switch_present(
158 base::CommandLine::ForCurrentProcess()->HasSwitch( 117 base::CommandLine::ForCurrentProcess()->HasSwitch(
159 chromeos::switches::kSmsTestMessages)); 118 chromeos::switches::kSmsTestMessages));
160 gsm_sms_client_.reset(gsm_sms_client); 119 gsm_sms_client_.reset(gsm_sms_client);
161 } 120 }
162 121
163 if (!IsUsingStub(IMAGE_BURNER)) 122 if (IsUsingReal(DBusClientType::IMAGE_BURNER))
164 image_burner_client_.reset(ImageBurnerClient::Create()); 123 image_burner_client_.reset(ImageBurnerClient::Create());
165 else 124 else
166 image_burner_client_.reset(new FakeImageBurnerClient); 125 image_burner_client_.reset(new FakeImageBurnerClient);
167 126
168 if (!IsUsingStub(MODEM_MESSAGING)) 127 if (IsUsingReal(DBusClientType::MODEM_MESSAGING))
169 modem_messaging_client_.reset(ModemMessagingClient::Create()); 128 modem_messaging_client_.reset(ModemMessagingClient::Create());
170 else 129 else
171 modem_messaging_client_.reset(new FakeModemMessagingClient); 130 modem_messaging_client_.reset(new FakeModemMessagingClient);
172 131
173 if (!IsUsingStub(PERMISSION_BROKER)) 132 if (IsUsingReal(DBusClientType::PERMISSION_BROKER))
174 permission_broker_client_.reset(PermissionBrokerClient::Create()); 133 permission_broker_client_.reset(PermissionBrokerClient::Create());
175 else 134 else
176 permission_broker_client_.reset(new FakePermissionBrokerClient); 135 permission_broker_client_.reset(new FakePermissionBrokerClient);
177 136
178 power_manager_client_.reset(PowerManagerClient::Create( 137 power_manager_client_.reset(
179 IsUsingStub(POWER_MANAGER) ? STUB_DBUS_CLIENT_IMPLEMENTATION 138 PowerManagerClient::Create(IsUsingReal(DBusClientType::POWER_MANAGER)
180 : REAL_DBUS_CLIENT_IMPLEMENTATION)); 139 ? REAL_DBUS_CLIENT_IMPLEMENTATION
140 : FAKE_DBUS_CLIENT_IMPLEMENTATION));
181 141
182 session_manager_client_.reset(SessionManagerClient::Create( 142 session_manager_client_.reset(
183 IsUsingStub(SESSION_MANAGER) ? STUB_DBUS_CLIENT_IMPLEMENTATION 143 SessionManagerClient::Create(IsUsingReal(DBusClientType::SESSION_MANAGER)
184 : REAL_DBUS_CLIENT_IMPLEMENTATION)); 144 ? REAL_DBUS_CLIENT_IMPLEMENTATION
145 : FAKE_DBUS_CLIENT_IMPLEMENTATION));
185 146
186 if (!IsUsingStub(SMS)) 147 if (IsUsingReal(DBusClientType::SMS))
187 sms_client_.reset(SMSClient::Create()); 148 sms_client_.reset(SMSClient::Create());
188 else 149 else
189 sms_client_.reset(new FakeSMSClient); 150 sms_client_.reset(new FakeSMSClient);
190 151
191 if (!IsUsingStub(SYSTEM_CLOCK)) 152 if (IsUsingReal(DBusClientType::SYSTEM_CLOCK))
192 system_clock_client_.reset(SystemClockClient::Create()); 153 system_clock_client_.reset(SystemClockClient::Create());
193 else 154 else
194 system_clock_client_.reset(new FakeSystemClockClient); 155 system_clock_client_.reset(new FakeSystemClockClient);
195 156
196 update_engine_client_.reset(UpdateEngineClient::Create( 157 update_engine_client_.reset(
197 IsUsingStub(UPDATE_ENGINE) ? STUB_DBUS_CLIENT_IMPLEMENTATION 158 UpdateEngineClient::Create(IsUsingReal(DBusClientType::UPDATE_ENGINE)
198 : REAL_DBUS_CLIENT_IMPLEMENTATION)); 159 ? REAL_DBUS_CLIENT_IMPLEMENTATION
160 : FAKE_DBUS_CLIENT_IMPLEMENTATION));
199 } 161 }
200 162
201 DBusClientBundle::~DBusClientBundle() { 163 DBusClientBundle::~DBusClientBundle() {}
164
165 bool DBusClientBundle::IsUsingReal(DBusClientType client) const {
166 return real_client_mask_ & static_cast<DBusClientTypeMask>(client);
202 } 167 }
203 168
204 bool DBusClientBundle::IsUsingStub(DBusClientType client) { 169 bool DBusClientBundle::IsUsingAnyRealClient() const {
205 return !(unstub_client_mask_ & client); 170 return real_client_mask_ !=
206 } 171 static_cast<DBusClientTypeMask>(DBusClientType::NONE);
207
208 bool DBusClientBundle::IsUsingAnyRealClient() {
209 // 'Using any real client' is equivalent to 'Unstubbed any client'.
210 return unstub_client_mask_ != 0;
211 } 172 }
212 173
213 void DBusClientBundle::SetupDefaultEnvironment() { 174 void DBusClientBundle::SetupDefaultEnvironment() {
214 ShillManagerClient::TestInterface* manager = 175 ShillManagerClient::TestInterface* manager =
215 shill_manager_client_->GetTestInterface(); 176 shill_manager_client_->GetTestInterface();
216 if (manager) 177 if (manager)
217 manager->SetupDefaultEnvironment(); 178 manager->SetupDefaultEnvironment();
218 } 179 }
219 180
220 // static
221 DBusClientBundle::DBusClientTypeMask DBusClientBundle::ParseUnstubList(
222 const std::string& unstub_list) {
223 DBusClientTypeMask unstub_mask = 0;
224 for (const std::string& cur : base::SplitString(
225 unstub_list, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) {
226 DBusClientBundle::DBusClientType client = GetDBusClientType(cur);
227 if (client != NO_CLIENT) {
228 LOG(WARNING) << "Unstubbing dbus client for " << cur;
229 unstub_mask |= client;
230 } else {
231 LOG(ERROR) << "Unknown dbus client: " << cur;
232 }
233 }
234
235 return unstub_mask;
236 }
237
238 } // namespace chromeos 181 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/dbus_client_bundle.h ('k') | chromeos/dbus/dbus_client_bundle_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698