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

Side by Side Diff: chrome/browser/chromeos/cros/network_library_impl_cros.cc

Issue 10170003: Replace const char* in cros_network_functions.h with const std::stirng& (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Replaced const char[] with strings Created 8 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « chrome/browser/chromeos/cros/network_library_impl_cros.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/chromeos/cros/network_library_impl_cros.h" 5 #include "chrome/browser/chromeos/cros/network_library_impl_cros.h"
6 6
7 #include <dbus/dbus-glib.h> 7 #include <dbus/dbus-glib.h>
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/json/json_writer.h" // for debug output only. 9 #include "base/json/json_writer.h" // for debug output only.
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 // static callback 116 // static callback
117 void NetworkLibraryImplCros::NetworkStatusChangedHandler( 117 void NetworkLibraryImplCros::NetworkStatusChangedHandler(
118 void* object, 118 void* object,
119 const std::string& path, 119 const std::string& path,
120 const std::string& key, 120 const std::string& key,
121 const Value& value) { 121 const Value& value) {
122 DCHECK(CrosLibrary::Get()->libcros_loaded()); 122 DCHECK(CrosLibrary::Get()->libcros_loaded());
123 NetworkLibraryImplCros* networklib = 123 NetworkLibraryImplCros* networklib =
124 static_cast<NetworkLibraryImplCros*>(object); 124 static_cast<NetworkLibraryImplCros*>(object);
125 DCHECK(networklib); 125 DCHECK(networklib);
126 networklib->UpdateNetworkStatus(std::string(path), std::string(key), value); 126 networklib->UpdateNetworkStatus(path, key, value);
127 } 127 }
128 128
129 void NetworkLibraryImplCros::UpdateNetworkStatus( 129 void NetworkLibraryImplCros::UpdateNetworkStatus(
130 const std::string& path, const std::string& key, const Value& value) { 130 const std::string& path, const std::string& key, const Value& value) {
131 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 131 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
132 Network* network = FindNetworkByPath(path); 132 Network* network = FindNetworkByPath(path);
133 if (network) { 133 if (network) {
134 VLOG(2) << "UpdateNetworkStatus: " << network->name() << "." << key; 134 VLOG(2) << "UpdateNetworkStatus: " << network->name() << "." << key;
135 bool prev_connected = network->connected(); 135 bool prev_connected = network->connected();
136 if (!network->UpdateStatus(key, value, NULL)) { 136 if (!network->UpdateStatus(key, value, NULL)) {
(...skipping 12 matching lines...) Expand all
149 // static callback 149 // static callback
150 void NetworkLibraryImplCros::NetworkDevicePropertyChangedHandler( 150 void NetworkLibraryImplCros::NetworkDevicePropertyChangedHandler(
151 void* object, 151 void* object,
152 const std::string& path, 152 const std::string& path,
153 const std::string& key, 153 const std::string& key,
154 const Value& value) { 154 const Value& value) {
155 DCHECK(CrosLibrary::Get()->libcros_loaded()); 155 DCHECK(CrosLibrary::Get()->libcros_loaded());
156 NetworkLibraryImplCros* networklib = 156 NetworkLibraryImplCros* networklib =
157 static_cast<NetworkLibraryImplCros*>(object); 157 static_cast<NetworkLibraryImplCros*>(object);
158 DCHECK(networklib); 158 DCHECK(networklib);
159 networklib->UpdateNetworkDeviceStatus(std::string(path), 159 networklib->UpdateNetworkDeviceStatus(path, key, value);
160 std::string(key),
161 value);
162 } 160 }
163 161
164 void NetworkLibraryImplCros::UpdateNetworkDeviceStatus( 162 void NetworkLibraryImplCros::UpdateNetworkDeviceStatus(
165 const std::string& path, const std::string& key, const Value& value) { 163 const std::string& path, const std::string& key, const Value& value) {
166 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 164 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
167 NetworkDevice* device = FindNetworkDeviceByPath(path); 165 NetworkDevice* device = FindNetworkDeviceByPath(path);
168 if (device) { 166 if (device) {
169 VLOG(2) << "UpdateNetworkDeviceStatus: " << device->name() << "." << key; 167 VLOG(2) << "UpdateNetworkDeviceStatus: " << device->name() << "." << key;
170 PropertyIndex index = PROPERTY_INDEX_UNKNOWN; 168 PropertyIndex index = PROPERTY_INDEX_UNKNOWN;
171 if (device->UpdateStatus(key, value, &index)) { 169 if (device->UpdateStatus(key, value, &index)) {
172 if (device->type() == TYPE_CELLULAR) { 170 if (device->type() == TYPE_CELLULAR) {
173 if (!UpdateCellularDeviceStatus(device, index)) 171 if (!UpdateCellularDeviceStatus(device, index))
174 return; // Update aborted, skip notify. 172 return; // Update aborted, skip notify.
175 } 173 }
176 } else { 174 } else {
177 VLOG(1) << "UpdateNetworkDeviceStatus: Failed to update: " 175 VLOG(1) << "UpdateNetworkDeviceStatus: Failed to update: "
178 << path << "." << key; 176 << path << "." << key;
179 } 177 }
180 // Notify only observers on device property change. 178 // Notify only observers on device property change.
181 NotifyNetworkDeviceChanged(device, index); 179 NotifyNetworkDeviceChanged(device, index);
182 // If a device's power state changes, new properties may become defined. 180 // If a device's power state changes, new properties may become defined.
183 if (index == PROPERTY_INDEX_POWERED) { 181 if (index == PROPERTY_INDEX_POWERED) {
184 CrosRequestNetworkDeviceProperties(path.c_str(), 182 CrosRequestNetworkDeviceProperties(path,
185 base::Bind(&NetworkDeviceUpdate, 183 base::Bind(&NetworkDeviceUpdate,
186 this)); 184 this));
187 } 185 }
188 } 186 }
189 } 187 }
190 188
191 bool NetworkLibraryImplCros::UpdateCellularDeviceStatus( 189 bool NetworkLibraryImplCros::UpdateCellularDeviceStatus(
192 NetworkDevice* device, PropertyIndex index) { 190 NetworkDevice* device, PropertyIndex index) {
193 if (index == PROPERTY_INDEX_CELLULAR_ALLOW_ROAMING) { 191 if (index == PROPERTY_INDEX_CELLULAR_ALLOW_ROAMING) {
194 if (!device->data_roaming_allowed() && IsCellularAlwaysInRoaming()) { 192 if (!device->data_roaming_allowed() && IsCellularAlwaysInRoaming()) {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 << " Error: " << error << " Message: " << error_message; 233 << " Error: " << error << " Message: " << error_message;
236 if (error_message && 234 if (error_message &&
237 strcmp(error_message, flimflam::kErrorPassphraseRequiredMsg) == 0) { 235 strcmp(error_message, flimflam::kErrorPassphraseRequiredMsg) == 0) {
238 status = CONNECT_BAD_PASSPHRASE; 236 status = CONNECT_BAD_PASSPHRASE;
239 } else { 237 } else {
240 status = CONNECT_FAILED; 238 status = CONNECT_FAILED;
241 } 239 }
242 } 240 }
243 NetworkLibraryImplCros* networklib = 241 NetworkLibraryImplCros* networklib =
244 static_cast<NetworkLibraryImplCros*>(object); 242 static_cast<NetworkLibraryImplCros*>(object);
245 Network* network = networklib->FindNetworkByPath(std::string(service_path)); 243 Network* network = networklib->FindNetworkByPath(service_path);
246 if (!network) { 244 if (!network) {
247 LOG(ERROR) << "No network for path: " << service_path; 245 LOG(ERROR) << "No network for path: " << service_path;
248 return; 246 return;
249 } 247 }
250 networklib->NetworkConnectCompleted(network, status); 248 networklib->NetworkConnectCompleted(network, status);
251 } 249 }
252 250
253 void NetworkLibraryImplCros::CallConnectToNetwork(Network* network) { 251 void NetworkLibraryImplCros::CallConnectToNetwork(Network* network) {
254 DCHECK(network); 252 DCHECK(network);
255 CrosRequestNetworkServiceConnect(network->service_path().c_str(), 253 CrosRequestNetworkServiceConnect(network->service_path(),
256 NetworkConnectCallback, this); 254 NetworkConnectCallback, this);
257 } 255 }
258 256
259 // static callback 257 // static callback
260 void NetworkLibraryImplCros::WifiServiceUpdateAndConnect( 258 void NetworkLibraryImplCros::WifiServiceUpdateAndConnect(
261 void* object, 259 void* object,
262 const char* service_path, 260 const std::string& service_path,
263 const base::DictionaryValue* properties) { 261 const base::DictionaryValue* properties) {
264 DCHECK(CrosLibrary::Get()->libcros_loaded()); 262 DCHECK(CrosLibrary::Get()->libcros_loaded());
265 NetworkLibraryImplCros* networklib = 263 NetworkLibraryImplCros* networklib =
266 static_cast<NetworkLibraryImplCros*>(object); 264 static_cast<NetworkLibraryImplCros*>(object);
267 DCHECK(networklib); 265 DCHECK(networklib);
268 if (service_path && properties) { 266 if (properties) {
269 Network* network = 267 Network* network = networklib->ParseNetwork(service_path, *properties);
270 networklib->ParseNetwork(std::string(service_path), *properties);
271 DCHECK_EQ(network->type(), TYPE_WIFI); 268 DCHECK_EQ(network->type(), TYPE_WIFI);
272 networklib->ConnectToWifiNetworkUsingConnectData( 269 networklib->ConnectToWifiNetworkUsingConnectData(
273 static_cast<WifiNetwork*>(network)); 270 static_cast<WifiNetwork*>(network));
274 } 271 }
275 } 272 }
276 273
277 void NetworkLibraryImplCros::CallRequestWifiNetworkAndConnect( 274 void NetworkLibraryImplCros::CallRequestWifiNetworkAndConnect(
278 const std::string& ssid, ConnectionSecurity security) { 275 const std::string& ssid, ConnectionSecurity security) {
279 // Asynchronously request service properties and call 276 // Asynchronously request service properties and call
280 // WifiServiceUpdateAndConnect. 277 // WifiServiceUpdateAndConnect.
281 CrosRequestHiddenWifiNetworkProperties( 278 CrosRequestHiddenWifiNetworkProperties(
282 ssid.c_str(), 279 ssid,
283 SecurityToString(security), 280 SecurityToString(security),
284 base::Bind(&WifiServiceUpdateAndConnect, this)); 281 base::Bind(&WifiServiceUpdateAndConnect, this));
285 } 282 }
286 283
287 // static callback 284 // static callback
288 void NetworkLibraryImplCros::VPNServiceUpdateAndConnect( 285 void NetworkLibraryImplCros::VPNServiceUpdateAndConnect(
289 void* object, 286 void* object,
290 const char* service_path, 287 const std::string& service_path,
291 const base::DictionaryValue* properties) { 288 const base::DictionaryValue* properties) {
292 DCHECK(CrosLibrary::Get()->libcros_loaded()); 289 DCHECK(CrosLibrary::Get()->libcros_loaded());
293 NetworkLibraryImplCros* networklib = 290 NetworkLibraryImplCros* networklib =
294 static_cast<NetworkLibraryImplCros*>(object); 291 static_cast<NetworkLibraryImplCros*>(object);
295 DCHECK(networklib); 292 DCHECK(networklib);
296 if (service_path && properties) { 293 if (properties) {
297 VLOG(1) << "Connecting to new VPN Service: " << service_path; 294 VLOG(1) << "Connecting to new VPN Service: " << service_path;
298 Network* network = 295 Network* network = networklib->ParseNetwork(service_path, *properties);
299 networklib->ParseNetwork(std::string(service_path), *properties);
300 DCHECK_EQ(network->type(), TYPE_VPN); 296 DCHECK_EQ(network->type(), TYPE_VPN);
301 networklib->ConnectToVirtualNetworkUsingConnectData( 297 networklib->ConnectToVirtualNetworkUsingConnectData(
302 static_cast<VirtualNetwork*>(network)); 298 static_cast<VirtualNetwork*>(network));
303 } else { 299 } else {
304 LOG(WARNING) << "Unable to create VPN Service: " << service_path; 300 LOG(WARNING) << "Unable to create VPN Service: " << service_path;
305 } 301 }
306 } 302 }
307 303
308 void NetworkLibraryImplCros::CallRequestVirtualNetworkAndConnect( 304 void NetworkLibraryImplCros::CallRequestVirtualNetworkAndConnect(
309 const std::string& service_name, 305 const std::string& service_name,
310 const std::string& server_hostname, 306 const std::string& server_hostname,
311 ProviderType provider_type) { 307 ProviderType provider_type) {
312 CrosRequestVirtualNetworkProperties( 308 CrosRequestVirtualNetworkProperties(
313 service_name.c_str(), 309 service_name,
314 server_hostname.c_str(), 310 server_hostname,
315 ProviderTypeToString(provider_type), 311 ProviderTypeToString(provider_type),
316 base::Bind(&VPNServiceUpdateAndConnect, this)); 312 base::Bind(&VPNServiceUpdateAndConnect, this));
317 } 313 }
318 314
319 void NetworkLibraryImplCros::CallDeleteRememberedNetwork( 315 void NetworkLibraryImplCros::CallDeleteRememberedNetwork(
320 const std::string& profile_path, 316 const std::string& profile_path,
321 const std::string& service_path) { 317 const std::string& service_path) {
322 CrosDeleteServiceFromProfile( 318 CrosDeleteServiceFromProfile(profile_path, service_path);
323 profile_path.c_str(), service_path.c_str());
324 } 319 }
325 320
326 ////////////////////////////////////////////////////////////////////////////// 321 //////////////////////////////////////////////////////////////////////////////
327 // NetworkLibrary implementation. 322 // NetworkLibrary implementation.
328 323
329 void NetworkLibraryImplCros::SetCheckPortalList( 324 void NetworkLibraryImplCros::SetCheckPortalList(
330 const std::string& check_portal_list) { 325 const std::string& check_portal_list) {
331 base::StringValue value(check_portal_list); 326 base::StringValue value(check_portal_list);
332 CrosSetNetworkManagerProperty(flimflam::kCheckPortalListProperty, value); 327 CrosSetNetworkManagerProperty(flimflam::kCheckPortalListProperty, value);
333 } 328 }
334 329
335 void NetworkLibraryImplCros::SetDefaultCheckPortalList() { 330 void NetworkLibraryImplCros::SetDefaultCheckPortalList() {
336 SetCheckPortalList(kDefaultCheckPortalList); 331 SetCheckPortalList(kDefaultCheckPortalList);
337 } 332 }
338 333
339 void NetworkLibraryImplCros::ChangePin(const std::string& old_pin, 334 void NetworkLibraryImplCros::ChangePin(const std::string& old_pin,
340 const std::string& new_pin) { 335 const std::string& new_pin) {
341 const NetworkDevice* cellular = FindCellularDevice(); 336 const NetworkDevice* cellular = FindCellularDevice();
342 if (!cellular) { 337 if (!cellular) {
343 NOTREACHED() << "Calling ChangePin method w/o cellular device."; 338 NOTREACHED() << "Calling ChangePin method w/o cellular device.";
344 return; 339 return;
345 } 340 }
346 sim_operation_ = SIM_OPERATION_CHANGE_PIN; 341 sim_operation_ = SIM_OPERATION_CHANGE_PIN;
347 CrosRequestChangePin(cellular->device_path().c_str(), 342 CrosRequestChangePin(cellular->device_path(), old_pin, new_pin,
348 old_pin.c_str(), new_pin.c_str(),
349 PinOperationCallback, this); 343 PinOperationCallback, this);
350 } 344 }
351 345
352 void NetworkLibraryImplCros::ChangeRequirePin(bool require_pin, 346 void NetworkLibraryImplCros::ChangeRequirePin(bool require_pin,
353 const std::string& pin) { 347 const std::string& pin) {
354 VLOG(1) << "ChangeRequirePin require_pin: " << require_pin 348 VLOG(1) << "ChangeRequirePin require_pin: " << require_pin
355 << " pin: " << pin; 349 << " pin: " << pin;
356 const NetworkDevice* cellular = FindCellularDevice(); 350 const NetworkDevice* cellular = FindCellularDevice();
357 if (!cellular) { 351 if (!cellular) {
358 NOTREACHED() << "Calling ChangeRequirePin method w/o cellular device."; 352 NOTREACHED() << "Calling ChangeRequirePin method w/o cellular device.";
359 return; 353 return;
360 } 354 }
361 sim_operation_ = SIM_OPERATION_CHANGE_REQUIRE_PIN; 355 sim_operation_ = SIM_OPERATION_CHANGE_REQUIRE_PIN;
362 CrosRequestRequirePin(cellular->device_path().c_str(), 356 CrosRequestRequirePin(cellular->device_path(), pin, require_pin,
363 pin.c_str(), require_pin,
364 PinOperationCallback, this); 357 PinOperationCallback, this);
365 } 358 }
366 359
367 void NetworkLibraryImplCros::EnterPin(const std::string& pin) { 360 void NetworkLibraryImplCros::EnterPin(const std::string& pin) {
368 const NetworkDevice* cellular = FindCellularDevice(); 361 const NetworkDevice* cellular = FindCellularDevice();
369 if (!cellular) { 362 if (!cellular) {
370 NOTREACHED() << "Calling EnterPin method w/o cellular device."; 363 NOTREACHED() << "Calling EnterPin method w/o cellular device.";
371 return; 364 return;
372 } 365 }
373 sim_operation_ = SIM_OPERATION_ENTER_PIN; 366 sim_operation_ = SIM_OPERATION_ENTER_PIN;
374 CrosRequestEnterPin(cellular->device_path().c_str(), 367 CrosRequestEnterPin(cellular->device_path(), pin, PinOperationCallback, this);
375 pin.c_str(),
376 PinOperationCallback, this);
377 } 368 }
378 369
379 void NetworkLibraryImplCros::UnblockPin(const std::string& puk, 370 void NetworkLibraryImplCros::UnblockPin(const std::string& puk,
380 const std::string& new_pin) { 371 const std::string& new_pin) {
381 const NetworkDevice* cellular = FindCellularDevice(); 372 const NetworkDevice* cellular = FindCellularDevice();
382 if (!cellular) { 373 if (!cellular) {
383 NOTREACHED() << "Calling UnblockPin method w/o cellular device."; 374 NOTREACHED() << "Calling UnblockPin method w/o cellular device.";
384 return; 375 return;
385 } 376 }
386 sim_operation_ = SIM_OPERATION_UNBLOCK_PIN; 377 sim_operation_ = SIM_OPERATION_UNBLOCK_PIN;
387 CrosRequestUnblockPin(cellular->device_path().c_str(), 378 CrosRequestUnblockPin(cellular->device_path(), puk, new_pin,
388 puk.c_str(), new_pin.c_str(),
389 PinOperationCallback, this); 379 PinOperationCallback, this);
390 } 380 }
391 381
392 // static callback 382 // static callback
393 void NetworkLibraryImplCros::PinOperationCallback( 383 void NetworkLibraryImplCros::PinOperationCallback(
394 void* object, 384 void* object,
395 const char* path, 385 const char* path,
396 NetworkMethodErrorType error, 386 NetworkMethodErrorType error,
397 const char* error_message) { 387 const char* error_message) {
398 DCHECK(CrosLibrary::Get()->libcros_loaded()); 388 DCHECK(CrosLibrary::Get()->libcros_loaded());
(...skipping 21 matching lines...) Expand all
420 } 410 }
421 networklib->NotifyPinOperationCompleted(pin_error); 411 networklib->NotifyPinOperationCompleted(pin_error);
422 } 412 }
423 413
424 void NetworkLibraryImplCros::RequestCellularScan() { 414 void NetworkLibraryImplCros::RequestCellularScan() {
425 const NetworkDevice* cellular = FindCellularDevice(); 415 const NetworkDevice* cellular = FindCellularDevice();
426 if (!cellular) { 416 if (!cellular) {
427 NOTREACHED() << "Calling RequestCellularScan method w/o cellular device."; 417 NOTREACHED() << "Calling RequestCellularScan method w/o cellular device.";
428 return; 418 return;
429 } 419 }
430 CrosProposeScan(cellular->device_path().c_str()); 420 CrosProposeScan(cellular->device_path());
431 } 421 }
432 422
433 void NetworkLibraryImplCros::RequestCellularRegister( 423 void NetworkLibraryImplCros::RequestCellularRegister(
434 const std::string& network_id) { 424 const std::string& network_id) {
435 const NetworkDevice* cellular = FindCellularDevice(); 425 const NetworkDevice* cellular = FindCellularDevice();
436 if (!cellular) { 426 if (!cellular) {
437 NOTREACHED() << "Calling CellularRegister method w/o cellular device."; 427 NOTREACHED() << "Calling CellularRegister method w/o cellular device.";
438 return; 428 return;
439 } 429 }
440 CrosRequestCellularRegister(cellular->device_path().c_str(), 430 CrosRequestCellularRegister(
441 network_id.c_str(), 431 cellular->device_path(), network_id, CellularRegisterCallback, this);
442 CellularRegisterCallback,
443 this);
444 } 432 }
445 433
446 // static callback 434 // static callback
447 void NetworkLibraryImplCros::CellularRegisterCallback( 435 void NetworkLibraryImplCros::CellularRegisterCallback(
448 void* object, 436 void* object,
449 const char* path, 437 const char* path,
450 NetworkMethodErrorType error, 438 NetworkMethodErrorType error,
451 const char* error_message) { 439 const char* error_message) {
452 DCHECK(CrosLibrary::Get()->libcros_loaded()); 440 DCHECK(CrosLibrary::Get()->libcros_loaded());
453 NetworkLibraryImplCros* networklib = 441 NetworkLibraryImplCros* networklib =
454 static_cast<NetworkLibraryImplCros*>(object); 442 static_cast<NetworkLibraryImplCros*>(object);
455 DCHECK(networklib); 443 DCHECK(networklib);
456 // TODO(dpolukhin): Notify observers about network registration status 444 // TODO(dpolukhin): Notify observers about network registration status
457 // but not UI doesn't assume such notification so just ignore result. 445 // but not UI doesn't assume such notification so just ignore result.
458 } 446 }
459 447
460 void NetworkLibraryImplCros::SetCellularDataRoamingAllowed(bool new_value) { 448 void NetworkLibraryImplCros::SetCellularDataRoamingAllowed(bool new_value) {
461 const NetworkDevice* cellular = FindCellularDevice(); 449 const NetworkDevice* cellular = FindCellularDevice();
462 if (!cellular) { 450 if (!cellular) {
463 NOTREACHED() << "Calling SetCellularDataRoamingAllowed method " 451 NOTREACHED() << "Calling SetCellularDataRoamingAllowed method "
464 "w/o cellular device."; 452 "w/o cellular device.";
465 return; 453 return;
466 } 454 }
467 base::FundamentalValue value(new_value); 455 base::FundamentalValue value(new_value);
468 CrosSetNetworkDeviceProperty(cellular->device_path().c_str(), 456 CrosSetNetworkDeviceProperty(cellular->device_path(),
469 flimflam::kCellularAllowRoamingProperty, 457 flimflam::kCellularAllowRoamingProperty,
470 value); 458 value);
471 } 459 }
472 460
473 bool NetworkLibraryImplCros::IsCellularAlwaysInRoaming() { 461 bool NetworkLibraryImplCros::IsCellularAlwaysInRoaming() {
474 const NetworkDevice* cellular = FindCellularDevice(); 462 const NetworkDevice* cellular = FindCellularDevice();
475 if (!cellular) { 463 if (!cellular) {
476 NOTREACHED() << "Calling IsCellularAlwaysInRoaming method " 464 NOTREACHED() << "Calling IsCellularAlwaysInRoaming method "
477 "w/o cellular device."; 465 "w/o cellular device.";
478 return false; 466 return false;
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
519 result->push_back(ap); 507 result->push_back(ap);
520 } 508 }
521 CrosFreeDeviceNetworkList(network_list); 509 CrosFreeDeviceNetworkList(network_list);
522 return true; 510 return true;
523 } 511 }
524 512
525 void NetworkLibraryImplCros::DisconnectFromNetwork(const Network* network) { 513 void NetworkLibraryImplCros::DisconnectFromNetwork(const Network* network) {
526 DCHECK(network); 514 DCHECK(network);
527 // Asynchronous disconnect request. Network state will be updated through 515 // Asynchronous disconnect request. Network state will be updated through
528 // the network manager once disconnect completes. 516 // the network manager once disconnect completes.
529 CrosRequestNetworkServiceDisconnect(network->service_path().c_str()); 517 CrosRequestNetworkServiceDisconnect(network->service_path());
530 } 518 }
531 519
532 void NetworkLibraryImplCros::CallEnableNetworkDeviceType( 520 void NetworkLibraryImplCros::CallEnableNetworkDeviceType(
533 ConnectionType device, bool enable) { 521 ConnectionType device, bool enable) {
534 busy_devices_ |= 1 << device; 522 busy_devices_ |= 1 << device;
535 CrosRequestNetworkDeviceEnable( 523 CrosRequestNetworkDeviceEnable(ConnectionTypeToString(device), enable);
536 ConnectionTypeToString(device), enable);
537 } 524 }
538 525
539 void NetworkLibraryImplCros::CallRemoveNetwork(const Network* network) { 526 void NetworkLibraryImplCros::CallRemoveNetwork(const Network* network) {
540 const char* service_path = network->service_path().c_str(); 527 const std::string& service_path = network->service_path();
541 if (network->connected()) 528 if (network->connected())
542 CrosRequestNetworkServiceDisconnect(service_path); 529 CrosRequestNetworkServiceDisconnect(service_path);
543 CrosRequestRemoveNetworkService(service_path); 530 CrosRequestRemoveNetworkService(service_path);
544 } 531 }
545 532
546 void NetworkLibraryImplCros::EnableOfflineMode(bool enable) { 533 void NetworkLibraryImplCros::EnableOfflineMode(bool enable) {
547 // If network device is already enabled/disabled, then don't do anything. 534 // If network device is already enabled/disabled, then don't do anything.
548 if (CrosSetOfflineMode(enable)) 535 if (CrosSetOfflineMode(enable))
549 offline_mode_ = enable; 536 offline_mode_ = enable;
550 } 537 }
551 538
552 NetworkIPConfigVector NetworkLibraryImplCros::GetIPConfigs( 539 NetworkIPConfigVector NetworkLibraryImplCros::GetIPConfigs(
553 const std::string& device_path, 540 const std::string& device_path,
554 std::string* hardware_address, 541 std::string* hardware_address,
555 HardwareAddressFormat format) { 542 HardwareAddressFormat format) {
556 DCHECK(hardware_address); 543 DCHECK(hardware_address);
557 hardware_address->clear(); 544 hardware_address->clear();
558 NetworkIPConfigVector ipconfig_vector; 545 NetworkIPConfigVector ipconfig_vector;
559 if (!device_path.empty()) { 546 if (!device_path.empty()) {
560 IPConfigStatus* ipconfig_status = CrosListIPConfigs(device_path.c_str()); 547 IPConfigStatus* ipconfig_status = CrosListIPConfigs(device_path);
561 if (ipconfig_status) { 548 if (ipconfig_status) {
562 for (int i = 0; i < ipconfig_status->size; ++i) { 549 for (int i = 0; i < ipconfig_status->size; ++i) {
563 IPConfig ipconfig = ipconfig_status->ips[i]; 550 IPConfig ipconfig = ipconfig_status->ips[i];
564 ipconfig_vector.push_back( 551 ipconfig_vector.push_back(
565 NetworkIPConfig(device_path, ipconfig.type, ipconfig.address, 552 NetworkIPConfig(device_path, ipconfig.type, ipconfig.address,
566 ipconfig.netmask, ipconfig.gateway, 553 ipconfig.netmask, ipconfig.gateway,
567 ipconfig.name_servers)); 554 ipconfig.name_servers));
568 } 555 }
569 *hardware_address = ipconfig_status->hardware_address; 556 *hardware_address = ipconfig_status->hardware_address;
570 CrosFreeIPConfigStatus(ipconfig_status); 557 CrosFreeIPConfigStatus(ipconfig_status);
(...skipping 19 matching lines...) Expand all
590 } 577 }
591 578
592 void NetworkLibraryImplCros::SetIPConfig(const NetworkIPConfig& ipconfig) { 579 void NetworkLibraryImplCros::SetIPConfig(const NetworkIPConfig& ipconfig) {
593 if (ipconfig.device_path.empty()) 580 if (ipconfig.device_path.empty())
594 return; 581 return;
595 582
596 IPConfig* ipconfig_dhcp = NULL; 583 IPConfig* ipconfig_dhcp = NULL;
597 IPConfig* ipconfig_static = NULL; 584 IPConfig* ipconfig_static = NULL;
598 585
599 IPConfigStatus* ipconfig_status = 586 IPConfigStatus* ipconfig_status =
600 CrosListIPConfigs(ipconfig.device_path.c_str()); 587 CrosListIPConfigs(ipconfig.device_path);
601 if (ipconfig_status) { 588 if (ipconfig_status) {
602 for (int i = 0; i < ipconfig_status->size; ++i) { 589 for (int i = 0; i < ipconfig_status->size; ++i) {
603 if (ipconfig_status->ips[i].type == chromeos::IPCONFIG_TYPE_DHCP) 590 if (ipconfig_status->ips[i].type == chromeos::IPCONFIG_TYPE_DHCP)
604 ipconfig_dhcp = &ipconfig_status->ips[i]; 591 ipconfig_dhcp = &ipconfig_status->ips[i];
605 else if (ipconfig_status->ips[i].type == chromeos::IPCONFIG_TYPE_IPV4) 592 else if (ipconfig_status->ips[i].type == chromeos::IPCONFIG_TYPE_IPV4)
606 ipconfig_static = &ipconfig_status->ips[i]; 593 ipconfig_static = &ipconfig_status->ips[i];
607 } 594 }
608 } 595 }
609 596
610 IPConfigStatus* ipconfig_status2 = NULL; 597 IPConfigStatus* ipconfig_status2 = NULL;
611 if (ipconfig.type == chromeos::IPCONFIG_TYPE_DHCP) { 598 if (ipconfig.type == chromeos::IPCONFIG_TYPE_DHCP) {
612 // If switching from static to dhcp, create new dhcp ip config. 599 // If switching from static to dhcp, create new dhcp ip config.
613 if (!ipconfig_dhcp) 600 if (!ipconfig_dhcp)
614 CrosAddIPConfig(ipconfig.device_path.c_str(), 601 CrosAddIPConfig(ipconfig.device_path, chromeos::IPCONFIG_TYPE_DHCP);
615 chromeos::IPCONFIG_TYPE_DHCP);
616 // User wants DHCP now. So delete the static ip config. 602 // User wants DHCP now. So delete the static ip config.
617 if (ipconfig_static) 603 if (ipconfig_static)
618 CrosRemoveIPConfig(ipconfig_static); 604 CrosRemoveIPConfig(ipconfig_static);
619 } else if (ipconfig.type == chromeos::IPCONFIG_TYPE_IPV4) { 605 } else if (ipconfig.type == chromeos::IPCONFIG_TYPE_IPV4) {
620 // If switching from dhcp to static, create new static ip config. 606 // If switching from dhcp to static, create new static ip config.
621 if (!ipconfig_static) { 607 if (!ipconfig_static) {
622 CrosAddIPConfig(ipconfig.device_path.c_str(), 608 CrosAddIPConfig(ipconfig.device_path, chromeos::IPCONFIG_TYPE_IPV4);
623 chromeos::IPCONFIG_TYPE_IPV4);
624 // Now find the newly created IP config. 609 // Now find the newly created IP config.
625 ipconfig_status2 = 610 ipconfig_status2 =
626 CrosListIPConfigs(ipconfig.device_path.c_str()); 611 CrosListIPConfigs(ipconfig.device_path);
627 if (ipconfig_status2) { 612 if (ipconfig_status2) {
628 for (int i = 0; i < ipconfig_status2->size; ++i) { 613 for (int i = 0; i < ipconfig_status2->size; ++i) {
629 if (ipconfig_status2->ips[i].type == chromeos::IPCONFIG_TYPE_IPV4) 614 if (ipconfig_status2->ips[i].type == chromeos::IPCONFIG_TYPE_IPV4)
630 ipconfig_static = &ipconfig_status2->ips[i]; 615 ipconfig_static = &ipconfig_status2->ips[i];
631 } 616 }
632 } 617 }
633 } 618 }
634 if (ipconfig_static) { 619 if (ipconfig_static) {
635 // Save any changed details. 620 // Save any changed details.
636 if (ipconfig.address != ipconfig_static->address) { 621 if (ipconfig.address != ipconfig_static->address) {
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
776 } 761 }
777 base::TimeDelta delta = base::TimeTicks::Now() - start; 762 base::TimeDelta delta = base::TimeTicks::Now() - start;
778 VLOG(2) << "NetworkManagerStatusChanged: time: " 763 VLOG(2) << "NetworkManagerStatusChanged: time: "
779 << delta.InMilliseconds() << " ms."; 764 << delta.InMilliseconds() << " ms.";
780 HISTOGRAM_TIMES("CROS_NETWORK_UPDATE", delta); 765 HISTOGRAM_TIMES("CROS_NETWORK_UPDATE", delta);
781 } 766 }
782 767
783 // static 768 // static
784 void NetworkLibraryImplCros::NetworkManagerUpdate( 769 void NetworkLibraryImplCros::NetworkManagerUpdate(
785 void* object, 770 void* object,
786 const char* manager_path, 771 const std::string& manager_path,
787 const base::DictionaryValue* properties) { 772 const base::DictionaryValue* properties) {
788 DCHECK(CrosLibrary::Get()->libcros_loaded()); 773 DCHECK(CrosLibrary::Get()->libcros_loaded());
789 NetworkLibraryImplCros* networklib = 774 NetworkLibraryImplCros* networklib =
790 static_cast<NetworkLibraryImplCros*>(object); 775 static_cast<NetworkLibraryImplCros*>(object);
791 DCHECK(networklib); 776 DCHECK(networklib);
792 if (!properties) { 777 if (!properties) {
793 LOG(ERROR) << "Error retrieving manager properties: " << manager_path; 778 LOG(ERROR) << "Error retrieving manager properties: " << manager_path;
794 return; 779 return;
795 } 780 }
796 VLOG(1) << "Received NetworkManagerUpdate."; 781 VLOG(1) << "Received NetworkManagerUpdate.";
797 networklib->ParseNetworkManager(*properties); 782 networklib->ParseNetworkManager(*properties);
798 } 783 }
799 784
800 void NetworkLibraryImplCros::ParseNetworkManager(const DictionaryValue& dict) { 785 void NetworkLibraryImplCros::ParseNetworkManager(const DictionaryValue& dict) {
801 for (DictionaryValue::key_iterator iter = dict.begin_keys(); 786 for (DictionaryValue::key_iterator iter = dict.begin_keys();
802 iter != dict.end_keys(); ++iter) { 787 iter != dict.end_keys(); ++iter) {
803 const std::string& key = *iter; 788 const std::string& key = *iter;
804 Value* value; 789 Value* value;
805 bool res = dict.GetWithoutPathExpansion(key, &value); 790 bool res = dict.GetWithoutPathExpansion(key, &value);
806 CHECK(res); 791 CHECK(res);
807 NetworkManagerStatusChanged(key.c_str(), value); 792 NetworkManagerStatusChanged(key, value);
808 } 793 }
809 // If there is no Profiles entry, request remembered networks here. 794 // If there is no Profiles entry, request remembered networks here.
810 if (!dict.HasKey(flimflam::kProfilesProperty)) 795 if (!dict.HasKey(flimflam::kProfilesProperty))
811 RequestRememberedNetworksUpdate(); 796 RequestRememberedNetworksUpdate();
812 } 797 }
813 798
814 // static 799 // static
815 void NetworkLibraryImplCros::DataPlanUpdateHandler( 800 void NetworkLibraryImplCros::DataPlanUpdateHandler(
816 void* object, 801 void* object,
817 const char* modem_service_path, 802 const char* modem_service_path,
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
913 AddNetwork(found->second); 898 AddNetwork(found->second);
914 old_network_map.erase(found); 899 old_network_map.erase(found);
915 } 900 }
916 // Always request network updates. 901 // Always request network updates.
917 // TODO(stevenjb): Investigate why we are missing updates then 902 // TODO(stevenjb): Investigate why we are missing updates then
918 // rely on watched network updates and only request updates here for 903 // rely on watched network updates and only request updates here for
919 // new networks. 904 // new networks.
920 // Use update_request map to store network priority. 905 // Use update_request map to store network priority.
921 network_update_requests_[service_path] = network_priority_order++; 906 network_update_requests_[service_path] = network_priority_order++;
922 wifi_scanning_ = true; 907 wifi_scanning_ = true;
923 CrosRequestNetworkServiceProperties(service_path.c_str(), 908 CrosRequestNetworkServiceProperties(service_path,
924 base::Bind(&NetworkServiceUpdate, 909 base::Bind(&NetworkServiceUpdate,
925 this)); 910 this));
926 } 911 }
927 } 912 }
928 // Iterate through list of remaining networks that are no longer in the 913 // Iterate through list of remaining networks that are no longer in the
929 // list and delete them or update their status and re-add them to the list. 914 // list and delete them or update their status and re-add them to the list.
930 for (NetworkMap::iterator iter = old_network_map.begin(); 915 for (NetworkMap::iterator iter = old_network_map.begin();
931 iter != old_network_map.end(); ++iter) { 916 iter != old_network_map.end(); ++iter) {
932 Network* network = iter->second; 917 Network* network = iter->second;
933 VLOG(2) << "Delete Network: " << network->name() 918 VLOG(2) << "Delete Network: " << network->name()
(...skipping 25 matching lines...) Expand all
959 // in this list, but if there are they will be added appropriately. 944 // in this list, but if there are they will be added appropriately.
960 void NetworkLibraryImplCros::UpdateWatchedNetworkServiceList( 945 void NetworkLibraryImplCros::UpdateWatchedNetworkServiceList(
961 const ListValue* services) { 946 const ListValue* services) {
962 for (ListValue::const_iterator iter = services->begin(); 947 for (ListValue::const_iterator iter = services->begin();
963 iter != services->end(); ++iter) { 948 iter != services->end(); ++iter) {
964 std::string service_path; 949 std::string service_path;
965 (*iter)->GetAsString(&service_path); 950 (*iter)->GetAsString(&service_path);
966 if (!service_path.empty()) { 951 if (!service_path.empty()) {
967 VLOG(1) << "Watched Service: " << service_path; 952 VLOG(1) << "Watched Service: " << service_path;
968 CrosRequestNetworkServiceProperties( 953 CrosRequestNetworkServiceProperties(
969 service_path.c_str(), 954 service_path,
970 base::Bind(&NetworkServiceUpdate, this)); 955 base::Bind(&NetworkServiceUpdate, this));
971 } 956 }
972 } 957 }
973 } 958 }
974 959
975 // static 960 // static
976 void NetworkLibraryImplCros::NetworkServiceUpdate( 961 void NetworkLibraryImplCros::NetworkServiceUpdate(
977 void* object, 962 void* object,
978 const char* service_path, 963 const std::string& service_path,
979 const base::DictionaryValue* properties) { 964 const base::DictionaryValue* properties) {
980 DCHECK(CrosLibrary::Get()->libcros_loaded()); 965 DCHECK(CrosLibrary::Get()->libcros_loaded());
981 NetworkLibraryImplCros* networklib = 966 NetworkLibraryImplCros* networklib =
982 static_cast<NetworkLibraryImplCros*>(object); 967 static_cast<NetworkLibraryImplCros*>(object);
983 DCHECK(networklib); 968 DCHECK(networklib);
984 if (service_path) { 969 if (!properties)
985 if (!properties) 970 return; // Network no longer in visible list, ignore.
986 return; // Network no longer in visible list, ignore. 971 networklib->ParseNetwork(service_path, *properties);
987 networklib->ParseNetwork(std::string(service_path), *properties);
988 }
989 } 972 }
990 973
991 // Called from NetworkServiceUpdate and WifiServiceUpdateAndConnect. 974 // Called from NetworkServiceUpdate and WifiServiceUpdateAndConnect.
992 Network* NetworkLibraryImplCros::ParseNetwork( 975 Network* NetworkLibraryImplCros::ParseNetwork(
993 const std::string& service_path, const DictionaryValue& info) { 976 const std::string& service_path, const DictionaryValue& info) {
994 Network* network = FindNetworkByPath(service_path); 977 Network* network = FindNetworkByPath(service_path);
995 if (!network) { 978 if (!network) {
996 NativeNetworkParser parser; 979 NativeNetworkParser parser;
997 network = parser.CreateNetworkFromInfo(service_path, info); 980 network = parser.CreateNetworkFromInfo(service_path, info);
998 AddNetwork(network); 981 AddNetwork(network);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
1077 // remembered networks. This list updates infrequently. 1060 // remembered networks. This list updates infrequently.
1078 DeleteRememberedNetworks(); 1061 DeleteRememberedNetworks();
1079 // Request remembered networks from each profile. Later entries will 1062 // Request remembered networks from each profile. Later entries will
1080 // override earlier entries, so default/local entries will override 1063 // override earlier entries, so default/local entries will override
1081 // user entries (as desired). 1064 // user entries (as desired).
1082 for (NetworkProfileList::iterator iter = profile_list_.begin(); 1065 for (NetworkProfileList::iterator iter = profile_list_.begin();
1083 iter != profile_list_.end(); ++iter) { 1066 iter != profile_list_.end(); ++iter) {
1084 NetworkProfile& profile = *iter; 1067 NetworkProfile& profile = *iter;
1085 VLOG(1) << " Requesting Profile: " << profile.path; 1068 VLOG(1) << " Requesting Profile: " << profile.path;
1086 CrosRequestNetworkProfileProperties( 1069 CrosRequestNetworkProfileProperties(
1087 profile.path.c_str(), base::Bind(&ProfileUpdate, this)); 1070 profile.path, base::Bind(&ProfileUpdate, this));
1088 } 1071 }
1089 } 1072 }
1090 1073
1091 // static 1074 // static
1092 void NetworkLibraryImplCros::ProfileUpdate( 1075 void NetworkLibraryImplCros::ProfileUpdate(
1093 void* object, 1076 void* object,
1094 const char* profile_path, 1077 const std::string& profile_path,
1095 const base::DictionaryValue* properties) { 1078 const base::DictionaryValue* properties) {
1096 DCHECK(CrosLibrary::Get()->libcros_loaded()); 1079 DCHECK(CrosLibrary::Get()->libcros_loaded());
1097 NetworkLibraryImplCros* networklib = 1080 NetworkLibraryImplCros* networklib =
1098 static_cast<NetworkLibraryImplCros*>(object); 1081 static_cast<NetworkLibraryImplCros*>(object);
1099 DCHECK(networklib); 1082 DCHECK(networklib);
1100 if (!properties) { 1083 if (!properties) {
1101 LOG(ERROR) << "Error retrieving profile: " << profile_path; 1084 LOG(ERROR) << "Error retrieving profile: " << profile_path;
1102 return; 1085 return;
1103 } 1086 }
1104 VLOG(1) << "Received ProfileUpdate for: " << profile_path; 1087 VLOG(1) << "Received ProfileUpdate for: " << profile_path;
1105 ListValue* entries(NULL); 1088 ListValue* entries(NULL);
1106 properties->GetList(flimflam::kEntriesProperty, &entries); 1089 properties->GetList(flimflam::kEntriesProperty, &entries);
1107 DCHECK(entries); 1090 DCHECK(entries);
1108 networklib->UpdateRememberedServiceList(profile_path, entries); 1091 networklib->UpdateRememberedServiceList(profile_path, entries);
1109 } 1092 }
1110 1093
1111 void NetworkLibraryImplCros::UpdateRememberedServiceList( 1094 void NetworkLibraryImplCros::UpdateRememberedServiceList(
1112 const char* profile_path, const ListValue* profile_entries) { 1095 const std::string& profile_path, const ListValue* profile_entries) {
1113 DCHECK(profile_path);
1114 VLOG(1) << "UpdateRememberedServiceList for path: " << profile_path; 1096 VLOG(1) << "UpdateRememberedServiceList for path: " << profile_path;
1115 NetworkProfileList::iterator iter1; 1097 NetworkProfileList::iterator iter1;
1116 for (iter1 = profile_list_.begin(); iter1 != profile_list_.end(); ++iter1) { 1098 for (iter1 = profile_list_.begin(); iter1 != profile_list_.end(); ++iter1) {
1117 if (iter1->path == profile_path) 1099 if (iter1->path == profile_path)
1118 break; 1100 break;
1119 } 1101 }
1120 if (iter1 == profile_list_.end()) { 1102 if (iter1 == profile_list_.end()) {
1121 // This can happen if flimflam gets restarted while Chrome is running. 1103 // This can happen if flimflam gets restarted while Chrome is running.
1122 LOG(WARNING) << "Profile not in list: " << profile_path; 1104 LOG(WARNING) << "Profile not in list: " << profile_path;
1123 return; 1105 return;
1124 } 1106 }
1125 NetworkProfile& profile = *iter1; 1107 NetworkProfile& profile = *iter1;
1126 // |profile_entries| is a list of remembered networks from |profile_path|. 1108 // |profile_entries| is a list of remembered networks from |profile_path|.
1127 profile.services.clear(); 1109 profile.services.clear();
1128 for (ListValue::const_iterator iter2 = profile_entries->begin(); 1110 for (ListValue::const_iterator iter2 = profile_entries->begin();
1129 iter2 != profile_entries->end(); ++iter2) { 1111 iter2 != profile_entries->end(); ++iter2) {
1130 std::string service_path; 1112 std::string service_path;
1131 (*iter2)->GetAsString(&service_path); 1113 (*iter2)->GetAsString(&service_path);
1132 if (service_path.empty()) { 1114 if (service_path.empty()) {
1133 LOG(WARNING) << "Empty service path in profile."; 1115 LOG(WARNING) << "Empty service path in profile.";
1134 continue; 1116 continue;
1135 } 1117 }
1136 VLOG(1) << " Remembered service: " << service_path; 1118 VLOG(1) << " Remembered service: " << service_path;
1137 // Add service to profile list. 1119 // Add service to profile list.
1138 profile.services.insert(service_path); 1120 profile.services.insert(service_path);
1139 // Request update for remembered network. 1121 // Request update for remembered network.
1140 CrosRequestNetworkProfileEntryProperties( 1122 CrosRequestNetworkProfileEntryProperties(
1141 profile_path, 1123 profile_path,
1142 service_path.c_str(), 1124 service_path,
1143 base::Bind(&RememberedNetworkServiceUpdate, this)); 1125 base::Bind(&RememberedNetworkServiceUpdate, this));
1144 } 1126 }
1145 } 1127 }
1146 1128
1147 // static 1129 // static
1148 void NetworkLibraryImplCros::RememberedNetworkServiceUpdate( 1130 void NetworkLibraryImplCros::RememberedNetworkServiceUpdate(
1149 void* object, 1131 void* object,
1150 const char* service_path, 1132 const std::string& service_path,
1151 const base::DictionaryValue* properties) { 1133 const base::DictionaryValue* properties) {
1152 DCHECK(CrosLibrary::Get()->libcros_loaded()); 1134 DCHECK(CrosLibrary::Get()->libcros_loaded());
1153 NetworkLibraryImplCros* networklib = 1135 NetworkLibraryImplCros* networklib =
1154 static_cast<NetworkLibraryImplCros*>(object); 1136 static_cast<NetworkLibraryImplCros*>(object);
1155 DCHECK(networklib); 1137 DCHECK(networklib);
1156 if (service_path) { 1138 if (!properties) {
1157 if (!properties) { 1139 // Remembered network no longer exists.
1158 // Remembered network no longer exists. 1140 networklib->DeleteRememberedNetwork(service_path);
1159 networklib->DeleteRememberedNetwork(std::string(service_path)); 1141 } else {
1160 } else { 1142 networklib->ParseRememberedNetwork(service_path, *properties);
1161 networklib->ParseRememberedNetwork(
1162 std::string(service_path), *properties);
1163 }
1164 } 1143 }
1165 } 1144 }
1166 1145
1167 // Returns NULL if |service_path| refers to a network that is not a 1146 // Returns NULL if |service_path| refers to a network that is not a
1168 // remembered type. Called from RememberedNetworkServiceUpdate. 1147 // remembered type. Called from RememberedNetworkServiceUpdate.
1169 Network* NetworkLibraryImplCros::ParseRememberedNetwork( 1148 Network* NetworkLibraryImplCros::ParseRememberedNetwork(
1170 const std::string& service_path, const DictionaryValue& info) { 1149 const std::string& service_path, const DictionaryValue& info) {
1171 Network* remembered; 1150 Network* remembered;
1172 NetworkMap::iterator found = remembered_network_map_.find(service_path); 1151 NetworkMap::iterator found = remembered_network_map_.find(service_path);
1173 if (found != remembered_network_map_.end()) { 1152 if (found != remembered_network_map_.end()) {
(...skipping 30 matching lines...) Expand all
1204 if (remembered->type() == TYPE_VPN) { 1183 if (remembered->type() == TYPE_VPN) {
1205 // VPNs are only stored in profiles. If we don't have a network for it, 1184 // VPNs are only stored in profiles. If we don't have a network for it,
1206 // request one. 1185 // request one.
1207 if (!FindNetworkByUniqueId(remembered->unique_id())) { 1186 if (!FindNetworkByUniqueId(remembered->unique_id())) {
1208 VirtualNetwork* vpn = static_cast<VirtualNetwork*>(remembered); 1187 VirtualNetwork* vpn = static_cast<VirtualNetwork*>(remembered);
1209 std::string provider_type = ProviderTypeToString(vpn->provider_type()); 1188 std::string provider_type = ProviderTypeToString(vpn->provider_type());
1210 VLOG(1) << "Requesting VPN: " << vpn->name() 1189 VLOG(1) << "Requesting VPN: " << vpn->name()
1211 << " Server: " << vpn->server_hostname() 1190 << " Server: " << vpn->server_hostname()
1212 << " Type: " << provider_type; 1191 << " Type: " << provider_type;
1213 CrosRequestVirtualNetworkProperties( 1192 CrosRequestVirtualNetworkProperties(
1214 vpn->name().c_str(), 1193 vpn->name(),
1215 vpn->server_hostname().c_str(), 1194 vpn->server_hostname(),
1216 provider_type.c_str(), 1195 provider_type,
1217 base::Bind(&NetworkServiceUpdate, this)); 1196 base::Bind(&NetworkServiceUpdate, this));
1218 } 1197 }
1219 } 1198 }
1220 1199
1221 return remembered; 1200 return remembered;
1222 } 1201 }
1223 1202
1224 //////////////////////////////////////////////////////////////////////////// 1203 ////////////////////////////////////////////////////////////////////////////
1225 // NetworkDevice list management functions. 1204 // NetworkDevice list management functions.
1226 1205
1227 // Update device list, and request associated device updates. 1206 // Update device list, and request associated device updates.
1228 // |devices| represents a complete list of devices. 1207 // |devices| represents a complete list of devices.
1229 void NetworkLibraryImplCros::UpdateNetworkDeviceList(const ListValue* devices) { 1208 void NetworkLibraryImplCros::UpdateNetworkDeviceList(const ListValue* devices) {
1230 NetworkDeviceMap old_device_map = device_map_; 1209 NetworkDeviceMap old_device_map = device_map_;
1231 device_map_.clear(); 1210 device_map_.clear();
1232 VLOG(2) << "Updating Device List."; 1211 VLOG(2) << "Updating Device List.";
1233 for (ListValue::const_iterator iter = devices->begin(); 1212 for (ListValue::const_iterator iter = devices->begin();
1234 iter != devices->end(); ++iter) { 1213 iter != devices->end(); ++iter) {
1235 std::string device_path; 1214 std::string device_path;
1236 (*iter)->GetAsString(&device_path); 1215 (*iter)->GetAsString(&device_path);
1237 if (!device_path.empty()) { 1216 if (!device_path.empty()) {
1238 NetworkDeviceMap::iterator found = old_device_map.find(device_path); 1217 NetworkDeviceMap::iterator found = old_device_map.find(device_path);
1239 if (found != old_device_map.end()) { 1218 if (found != old_device_map.end()) {
1240 VLOG(2) << " Adding existing device: " << device_path; 1219 VLOG(2) << " Adding existing device: " << device_path;
1241 CHECK(found->second) << "Attempted to add NULL device pointer"; 1220 CHECK(found->second) << "Attempted to add NULL device pointer";
1242 device_map_[device_path] = found->second; 1221 device_map_[device_path] = found->second;
1243 old_device_map.erase(found); 1222 old_device_map.erase(found);
1244 } 1223 }
1245 CrosRequestNetworkDeviceProperties( 1224 CrosRequestNetworkDeviceProperties(
1246 device_path.c_str(), 1225 device_path,
1247 base::Bind(&NetworkDeviceUpdate, this)); 1226 base::Bind(&NetworkDeviceUpdate, this));
1248 } 1227 }
1249 } 1228 }
1250 // Delete any old devices that no longer exist. 1229 // Delete any old devices that no longer exist.
1251 for (NetworkDeviceMap::iterator iter = old_device_map.begin(); 1230 for (NetworkDeviceMap::iterator iter = old_device_map.begin();
1252 iter != old_device_map.end(); ++iter) { 1231 iter != old_device_map.end(); ++iter) {
1253 DeleteDeviceFromDeviceObserversMap(iter->first); 1232 DeleteDeviceFromDeviceObserversMap(iter->first);
1254 // Delete device. 1233 // Delete device.
1255 delete iter->second; 1234 delete iter->second;
1256 } 1235 }
1257 } 1236 }
1258 1237
1259 // static 1238 // static
1260 void NetworkLibraryImplCros::NetworkDeviceUpdate( 1239 void NetworkLibraryImplCros::NetworkDeviceUpdate(
1261 void* object, 1240 void* object,
1262 const char* device_path, 1241 const std::string& device_path,
1263 const base::DictionaryValue* properties) { 1242 const base::DictionaryValue* properties) {
1264 DCHECK(CrosLibrary::Get()->libcros_loaded()); 1243 DCHECK(CrosLibrary::Get()->libcros_loaded());
1265 NetworkLibraryImplCros* networklib = 1244 NetworkLibraryImplCros* networklib =
1266 static_cast<NetworkLibraryImplCros*>(object); 1245 static_cast<NetworkLibraryImplCros*>(object);
1267 DCHECK(networklib); 1246 DCHECK(networklib);
1268 if (device_path) { 1247 if (!properties) {
1269 if (!properties) { 1248 // device no longer exists.
1270 // device no longer exists. 1249 networklib->DeleteDevice(device_path);
1271 networklib->DeleteDevice(std::string(device_path)); 1250 } else {
1272 } else { 1251 networklib->ParseNetworkDevice(device_path, *properties);
1273 networklib->ParseNetworkDevice(std::string(device_path), *properties);
1274 }
1275 } 1252 }
1276 } 1253 }
1277 1254
1278 void NetworkLibraryImplCros::ParseNetworkDevice(const std::string& device_path, 1255 void NetworkLibraryImplCros::ParseNetworkDevice(const std::string& device_path,
1279 const DictionaryValue& info) { 1256 const DictionaryValue& info) {
1280 NetworkDeviceMap::iterator found = device_map_.find(device_path); 1257 NetworkDeviceMap::iterator found = device_map_.find(device_path);
1281 NetworkDevice* device; 1258 NetworkDevice* device;
1282 if (found != device_map_.end()) { 1259 if (found != device_map_.end()) {
1283 device = found->second; 1260 device = found->second;
1284 device->device_parser()->UpdateDeviceFromInfo(info, device); 1261 device->device_parser()->UpdateDeviceFromInfo(info, device);
(...skipping 18 matching lines...) Expand all
1303 // Switch back to signed settings value. 1280 // Switch back to signed settings value.
1304 SetCellularDataRoamingAllowed(settings_value); 1281 SetCellularDataRoamingAllowed(settings_value);
1305 } 1282 }
1306 } 1283 }
1307 } 1284 }
1308 NotifyNetworkManagerChanged(false); // Not forced. 1285 NotifyNetworkManagerChanged(false); // Not forced.
1309 AddNetworkDeviceObserver(device_path, network_device_observer_.get()); 1286 AddNetworkDeviceObserver(device_path, network_device_observer_.get());
1310 } 1287 }
1311 1288
1312 } // namespace chromeos 1289 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/cros/network_library_impl_cros.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698