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

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

Issue 2319783002: mash: Allow a subset of D-Bus clients to be created in DBusThreadManager (Closed)
Patch Set: WIP, add DBusThreadManagerAsh and DBusThreadManagerChrome 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
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 for (size_t i = 0; i < arraysize(client_type_map); i++) { 89 for (size_t i = 0; i < arraysize(client_type_map); i++) {
90 if (base::LowerCaseEqualsASCII(client_type_name, 90 if (base::LowerCaseEqualsASCII(client_type_name,
91 client_type_map[i].param_name)) 91 client_type_map[i].param_name))
92 return client_type_map[i].client_type; 92 return client_type_map[i].client_type;
93 } 93 }
94 return DBusClientBundle::NO_CLIENT; 94 return DBusClientBundle::NO_CLIENT;
95 } 95 }
96 96
97 } // namespace 97 } // namespace
98 98
99 DBusClientBundle::DBusClientBundle(DBusClientTypeMask unstub_client_mask) 99 DBusClientBundle::DBusClientBundle(DBusClientTypeMask real_client_mask,
100 : unstub_client_mask_(unstub_client_mask) { 100 DBusClientTypeMask fake_client_mask)
101 if (!IsUsingStub(ARC_OBB_MOUNTER)) 101 : real_client_mask_(real_client_mask), fake_client_mask_(fake_client_mask) {
102 DCHECK(!(real_client_mask & fake_client_mask))
103 << "D-Bus clients cannot be both fake and real.";
104 DCHECK(real_client_mask | fake_client_mask)
105 << "Must initialize at least one D-Bus client.";
106
107 if (IsUsingReal(ARC_OBB_MOUNTER))
102 arc_obb_mounter_client_.reset(ArcObbMounterClient::Create()); 108 arc_obb_mounter_client_.reset(ArcObbMounterClient::Create());
103 else 109 else if (IsUsingFake(ARC_OBB_MOUNTER))
104 arc_obb_mounter_client_.reset(new FakeArcObbMounterClient); 110 arc_obb_mounter_client_.reset(new FakeArcObbMounterClient);
105 111
106 if (!IsUsingStub(CRAS)) 112 if (IsUsingReal(CRAS))
107 cras_audio_client_.reset(CrasAudioClient::Create()); 113 cras_audio_client_.reset(CrasAudioClient::Create());
108 else 114 else if (IsUsingFake(CRAS))
109 cras_audio_client_.reset(new FakeCrasAudioClient); 115 cras_audio_client_.reset(new FakeCrasAudioClient);
110 116
111 cros_disks_client_.reset(CrosDisksClient::Create( 117 if (IsUsingReal(CROS_DISKS)) {
112 IsUsingStub(CROS_DISKS) ? STUB_DBUS_CLIENT_IMPLEMENTATION 118 cros_disks_client_.reset(
113 : REAL_DBUS_CLIENT_IMPLEMENTATION)); 119 CrosDisksClient::Create(REAL_DBUS_CLIENT_IMPLEMENTATION));
120 } else if (IsUsingFake(CROS_DISKS)) {
121 cros_disks_client_.reset(
122 CrosDisksClient::Create(FAKE_DBUS_CLIENT_IMPLEMENTATION));
123 }
114 124
115 if (!IsUsingStub(CRYPTOHOME)) 125 if (IsUsingReal(CRYPTOHOME))
116 cryptohome_client_.reset(CryptohomeClient::Create()); 126 cryptohome_client_.reset(CryptohomeClient::Create());
117 else 127 else if (IsUsingFake(CRYPTOHOME))
118 cryptohome_client_.reset(new FakeCryptohomeClient); 128 cryptohome_client_.reset(new FakeCryptohomeClient);
119 129
120 if (!IsUsingStub(DEBUG_DAEMON)) 130 if (IsUsingReal(DEBUG_DAEMON))
121 debug_daemon_client_.reset(DebugDaemonClient::Create()); 131 debug_daemon_client_.reset(DebugDaemonClient::Create());
122 else 132 else if (IsUsingFake(DEBUG_DAEMON))
123 debug_daemon_client_.reset(new FakeDebugDaemonClient); 133 debug_daemon_client_.reset(new FakeDebugDaemonClient);
124 134
125 if (!IsUsingStub(EASY_UNLOCK)) 135 if (IsUsingReal(EASY_UNLOCK))
126 easy_unlock_client_.reset(EasyUnlockClient::Create()); 136 easy_unlock_client_.reset(EasyUnlockClient::Create());
127 else 137 else if (IsUsingFake(EASY_UNLOCK))
128 easy_unlock_client_.reset(new FakeEasyUnlockClient); 138 easy_unlock_client_.reset(new FakeEasyUnlockClient);
129 139
130 if (!IsUsingStub(LORGNETTE_MANAGER)) 140 if (IsUsingReal(LORGNETTE_MANAGER))
131 lorgnette_manager_client_.reset(LorgnetteManagerClient::Create()); 141 lorgnette_manager_client_.reset(LorgnetteManagerClient::Create());
132 else 142 else if (IsUsingFake(LORGNETTE_MANAGER))
133 lorgnette_manager_client_.reset(new FakeLorgnetteManagerClient); 143 lorgnette_manager_client_.reset(new FakeLorgnetteManagerClient);
134 144
135 if (!IsUsingStub(SHILL)) { 145 if (IsUsingReal(SHILL)) {
136 shill_manager_client_.reset(ShillManagerClient::Create()); 146 shill_manager_client_.reset(ShillManagerClient::Create());
137 shill_device_client_.reset(ShillDeviceClient::Create()); 147 shill_device_client_.reset(ShillDeviceClient::Create());
138 shill_ipconfig_client_.reset(ShillIPConfigClient::Create()); 148 shill_ipconfig_client_.reset(ShillIPConfigClient::Create());
139 shill_service_client_.reset(ShillServiceClient::Create()); 149 shill_service_client_.reset(ShillServiceClient::Create());
140 shill_profile_client_.reset(ShillProfileClient::Create()); 150 shill_profile_client_.reset(ShillProfileClient::Create());
141 shill_third_party_vpn_driver_client_.reset( 151 shill_third_party_vpn_driver_client_.reset(
142 ShillThirdPartyVpnDriverClient::Create()); 152 ShillThirdPartyVpnDriverClient::Create());
143 } else { 153 } else if (IsUsingFake(SHILL)) {
144 shill_manager_client_.reset(new FakeShillManagerClient); 154 shill_manager_client_.reset(new FakeShillManagerClient);
145 shill_device_client_.reset(new FakeShillDeviceClient); 155 shill_device_client_.reset(new FakeShillDeviceClient);
146 shill_ipconfig_client_.reset(new FakeShillIPConfigClient); 156 shill_ipconfig_client_.reset(new FakeShillIPConfigClient);
147 shill_service_client_.reset(new FakeShillServiceClient); 157 shill_service_client_.reset(new FakeShillServiceClient);
148 shill_profile_client_.reset(new FakeShillProfileClient); 158 shill_profile_client_.reset(new FakeShillProfileClient);
149 shill_third_party_vpn_driver_client_.reset( 159 shill_third_party_vpn_driver_client_.reset(
150 new FakeShillThirdPartyVpnDriverClient); 160 new FakeShillThirdPartyVpnDriverClient);
151 } 161 }
152 162
153 if (!IsUsingStub(GSM_SMS)) { 163 if (IsUsingReal(GSM_SMS)) {
154 gsm_sms_client_.reset(GsmSMSClient::Create()); 164 gsm_sms_client_.reset(GsmSMSClient::Create());
155 } else { 165 } else if (IsUsingFake(GSM_SMS)) {
156 FakeGsmSMSClient* gsm_sms_client = new FakeGsmSMSClient(); 166 FakeGsmSMSClient* gsm_sms_client = new FakeGsmSMSClient();
157 gsm_sms_client->set_sms_test_message_switch_present( 167 gsm_sms_client->set_sms_test_message_switch_present(
158 base::CommandLine::ForCurrentProcess()->HasSwitch( 168 base::CommandLine::ForCurrentProcess()->HasSwitch(
159 chromeos::switches::kSmsTestMessages)); 169 chromeos::switches::kSmsTestMessages));
160 gsm_sms_client_.reset(gsm_sms_client); 170 gsm_sms_client_.reset(gsm_sms_client);
161 } 171 }
162 172
163 if (!IsUsingStub(IMAGE_BURNER)) 173 if (IsUsingReal(IMAGE_BURNER))
164 image_burner_client_.reset(ImageBurnerClient::Create()); 174 image_burner_client_.reset(ImageBurnerClient::Create());
165 else 175 else if (IsUsingFake(IMAGE_BURNER))
166 image_burner_client_.reset(new FakeImageBurnerClient); 176 image_burner_client_.reset(new FakeImageBurnerClient);
167 177
168 if (!IsUsingStub(MODEM_MESSAGING)) 178 if (IsUsingReal(MODEM_MESSAGING))
169 modem_messaging_client_.reset(ModemMessagingClient::Create()); 179 modem_messaging_client_.reset(ModemMessagingClient::Create());
170 else 180 else if (IsUsingFake(MODEM_MESSAGING))
171 modem_messaging_client_.reset(new FakeModemMessagingClient); 181 modem_messaging_client_.reset(new FakeModemMessagingClient);
172 182
173 if (!IsUsingStub(PERMISSION_BROKER)) 183 if (IsUsingReal(PERMISSION_BROKER))
174 permission_broker_client_.reset(PermissionBrokerClient::Create()); 184 permission_broker_client_.reset(PermissionBrokerClient::Create());
175 else 185 else if (IsUsingFake(PERMISSION_BROKER))
176 permission_broker_client_.reset(new FakePermissionBrokerClient); 186 permission_broker_client_.reset(new FakePermissionBrokerClient);
177 187
178 power_manager_client_.reset(PowerManagerClient::Create( 188 if (IsUsingReal(POWER_MANAGER)) {
179 IsUsingStub(POWER_MANAGER) ? STUB_DBUS_CLIENT_IMPLEMENTATION 189 power_manager_client_.reset(
180 : REAL_DBUS_CLIENT_IMPLEMENTATION)); 190 PowerManagerClient::Create(REAL_DBUS_CLIENT_IMPLEMENTATION));
191 } else if (IsUsingFake(POWER_MANAGER)) {
192 power_manager_client_.reset(
193 PowerManagerClient::Create(FAKE_DBUS_CLIENT_IMPLEMENTATION));
194 }
181 195
182 session_manager_client_.reset(SessionManagerClient::Create( 196 if (IsUsingReal(SESSION_MANAGER)) {
183 IsUsingStub(SESSION_MANAGER) ? STUB_DBUS_CLIENT_IMPLEMENTATION 197 session_manager_client_.reset(
184 : REAL_DBUS_CLIENT_IMPLEMENTATION)); 198 SessionManagerClient::Create(REAL_DBUS_CLIENT_IMPLEMENTATION));
199 } else if (IsUsingFake(SESSION_MANAGER)) {
200 session_manager_client_.reset(
201 SessionManagerClient::Create(FAKE_DBUS_CLIENT_IMPLEMENTATION));
202 }
185 203
186 if (!IsUsingStub(SMS)) 204 if (IsUsingReal(SMS))
187 sms_client_.reset(SMSClient::Create()); 205 sms_client_.reset(SMSClient::Create());
188 else 206 else if (IsUsingFake(SMS))
189 sms_client_.reset(new FakeSMSClient); 207 sms_client_.reset(new FakeSMSClient);
190 208
191 if (!IsUsingStub(SYSTEM_CLOCK)) 209 if (IsUsingReal(SYSTEM_CLOCK))
192 system_clock_client_.reset(SystemClockClient::Create()); 210 system_clock_client_.reset(SystemClockClient::Create());
193 else 211 else if (IsUsingFake(SYSTEM_CLOCK))
194 system_clock_client_.reset(new FakeSystemClockClient); 212 system_clock_client_.reset(new FakeSystemClockClient);
195 213
196 update_engine_client_.reset(UpdateEngineClient::Create( 214 if (IsUsingReal(UPDATE_ENGINE)) {
197 IsUsingStub(UPDATE_ENGINE) ? STUB_DBUS_CLIENT_IMPLEMENTATION 215 update_engine_client_.reset(
198 : REAL_DBUS_CLIENT_IMPLEMENTATION)); 216 UpdateEngineClient::Create(REAL_DBUS_CLIENT_IMPLEMENTATION));
217 } else if (IsUsingFake(UPDATE_ENGINE)) {
218 update_engine_client_.reset(
219 UpdateEngineClient::Create(FAKE_DBUS_CLIENT_IMPLEMENTATION));
220 }
199 } 221 }
200 222
201 DBusClientBundle::~DBusClientBundle() { 223 DBusClientBundle::~DBusClientBundle() {
202 } 224 }
203 225
204 bool DBusClientBundle::IsUsingStub(DBusClientType client) { 226 bool DBusClientBundle::IsUsingFake(DBusClientType client) const {
205 return !(unstub_client_mask_ & client); 227 return fake_client_mask_ & client;
228 }
229
230 bool DBusClientBundle::IsUsingReal(DBusClientType client) const {
231 return real_client_mask_ & client;
206 } 232 }
207 233
208 bool DBusClientBundle::IsUsingAnyRealClient() { 234 bool DBusClientBundle::IsUsingAnyRealClient() {
209 // 'Using any real client' is equivalent to 'Unstubbed any client'. 235 return real_client_mask_ != 0;
210 return unstub_client_mask_ != 0;
211 } 236 }
212 237
213 void DBusClientBundle::SetupDefaultEnvironment() { 238 void DBusClientBundle::SetupDefaultEnvironment() {
239 if (!shill_manager_client_)
240 return;
214 ShillManagerClient::TestInterface* manager = 241 ShillManagerClient::TestInterface* manager =
215 shill_manager_client_->GetTestInterface(); 242 shill_manager_client_->GetTestInterface();
216 if (manager) 243 if (manager)
217 manager->SetupDefaultEnvironment(); 244 manager->SetupDefaultEnvironment();
218 } 245 }
219 246
220 // static 247 // static
221 DBusClientBundle::DBusClientTypeMask DBusClientBundle::ParseUnstubList( 248 DBusClientTypeMask DBusClientBundle::ParseUnstubList(
222 const std::string& unstub_list) { 249 const std::string& unstub_list) {
223 DBusClientTypeMask unstub_mask = 0; 250 DBusClientTypeMask unstub_mask = 0;
224 for (const std::string& cur : base::SplitString( 251 for (const std::string& cur : base::SplitString(
225 unstub_list, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) { 252 unstub_list, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) {
226 DBusClientBundle::DBusClientType client = GetDBusClientType(cur); 253 DBusClientBundle::DBusClientType client = GetDBusClientType(cur);
227 if (client != NO_CLIENT) { 254 if (client != NO_CLIENT) {
228 LOG(WARNING) << "Unstubbing dbus client for " << cur; 255 LOG(WARNING) << "Unstubbing dbus client for " << cur;
229 unstub_mask |= client; 256 unstub_mask |= client;
230 } else { 257 } else {
231 LOG(ERROR) << "Unknown dbus client: " << cur; 258 LOG(ERROR) << "Unknown dbus client: " << cur;
232 } 259 }
233 } 260 }
234 261
235 return unstub_mask; 262 return unstub_mask;
236 } 263 }
237 264
238 } // namespace chromeos 265 } // 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