OLD | NEW |
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 "chromeos/network/shill_property_handler.h" | 5 #include "chromeos/network/shill_property_handler.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <set> | 8 #include <set> |
9 #include <string> | 9 #include <string> |
10 | 10 |
(...skipping 29 matching lines...) Expand all Loading... |
40 errors_(0) { | 40 errors_(0) { |
41 } | 41 } |
42 | 42 |
43 virtual void UpdateManagedList(ManagedState::ManagedType type, | 43 virtual void UpdateManagedList(ManagedState::ManagedType type, |
44 const base::ListValue& entries) OVERRIDE { | 44 const base::ListValue& entries) OVERRIDE { |
45 VLOG(1) << "UpdateManagedList[" << ManagedState::TypeToString(type) << "]: " | 45 VLOG(1) << "UpdateManagedList[" << ManagedState::TypeToString(type) << "]: " |
46 << entries.GetSize(); | 46 << entries.GetSize(); |
47 UpdateEntries(GetTypeString(type), entries); | 47 UpdateEntries(GetTypeString(type), entries); |
48 } | 48 } |
49 | 49 |
50 virtual void UpdateVisibleNetworks(const base::ListValue& entries) OVERRIDE { | |
51 VLOG(1) << "UpdateVisibleNetworks: " << entries.GetSize(); | |
52 UpdateEntries(shill::kServicesProperty, entries); | |
53 } | |
54 | |
55 virtual void UpdateManagedStateProperties( | 50 virtual void UpdateManagedStateProperties( |
56 ManagedState::ManagedType type, | 51 ManagedState::ManagedType type, |
57 const std::string& path, | 52 const std::string& path, |
58 const base::DictionaryValue& properties) OVERRIDE { | 53 const base::DictionaryValue& properties) OVERRIDE { |
59 VLOG(2) << "UpdateManagedStateProperties: " << GetTypeString(type); | 54 VLOG(2) << "UpdateManagedStateProperties: " << GetTypeString(type); |
60 initial_property_updates(GetTypeString(type))[path] += 1; | 55 initial_property_updates(GetTypeString(type))[path] += 1; |
61 } | 56 } |
62 | 57 |
63 virtual void ProfileListChanged() OVERRIDE { | 58 virtual void ProfileListChanged() OVERRIDE { |
64 } | 59 } |
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
298 }; | 293 }; |
299 | 294 |
300 TEST_F(ShillPropertyHandlerTest, ShillPropertyHandlerStub) { | 295 TEST_F(ShillPropertyHandlerTest, ShillPropertyHandlerStub) { |
301 EXPECT_TRUE(shill_property_handler_->IsTechnologyAvailable(shill::kTypeWifi)); | 296 EXPECT_TRUE(shill_property_handler_->IsTechnologyAvailable(shill::kTypeWifi)); |
302 EXPECT_TRUE(shill_property_handler_->IsTechnologyEnabled(shill::kTypeWifi)); | 297 EXPECT_TRUE(shill_property_handler_->IsTechnologyEnabled(shill::kTypeWifi)); |
303 const size_t kNumShillManagerClientStubImplDevices = 2; | 298 const size_t kNumShillManagerClientStubImplDevices = 2; |
304 EXPECT_EQ(kNumShillManagerClientStubImplDevices, | 299 EXPECT_EQ(kNumShillManagerClientStubImplDevices, |
305 listener_->entries(shill::kDevicesProperty).size()); | 300 listener_->entries(shill::kDevicesProperty).size()); |
306 const size_t kNumShillManagerClientStubImplServices = 4; | 301 const size_t kNumShillManagerClientStubImplServices = 4; |
307 EXPECT_EQ(kNumShillManagerClientStubImplServices, | 302 EXPECT_EQ(kNumShillManagerClientStubImplServices, |
308 listener_->entries(shill::kServicesProperty).size()); | 303 listener_->entries(shill::kServiceCompleteListProperty).size()); |
309 | 304 |
310 EXPECT_EQ(0, listener_->errors()); | 305 EXPECT_EQ(0, listener_->errors()); |
311 } | 306 } |
312 | 307 |
313 TEST_F(ShillPropertyHandlerTest, ShillPropertyHandlerTechnologyChanged) { | 308 TEST_F(ShillPropertyHandlerTest, ShillPropertyHandlerTechnologyChanged) { |
314 const int initial_technology_updates = 2; // Available and Enabled lists | 309 const int initial_technology_updates = 2; // Available and Enabled lists |
315 EXPECT_EQ(initial_technology_updates, listener_->technology_list_updates()); | 310 EXPECT_EQ(initial_technology_updates, listener_->technology_list_updates()); |
316 | 311 |
317 // Remove an enabled technology. Updates both the Available and Enabled lists. | 312 // Remove an enabled technology. Updates both the Available and Enabled lists. |
318 listener_->reset_list_updates(); | 313 listener_->reset_list_updates(); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
361 EXPECT_EQ(1, listener_->list_updates(shill::kDevicesProperty)); | 356 EXPECT_EQ(1, listener_->list_updates(shill::kDevicesProperty)); |
362 EXPECT_EQ(kNumShillManagerClientStubImplDevices, | 357 EXPECT_EQ(kNumShillManagerClientStubImplDevices, |
363 listener_->entries(shill::kDevicesProperty).size()); | 358 listener_->entries(shill::kDevicesProperty).size()); |
364 | 359 |
365 EXPECT_EQ(0, listener_->errors()); | 360 EXPECT_EQ(0, listener_->errors()); |
366 } | 361 } |
367 | 362 |
368 TEST_F(ShillPropertyHandlerTest, ShillPropertyHandlerServicePropertyChanged) { | 363 TEST_F(ShillPropertyHandlerTest, ShillPropertyHandlerServicePropertyChanged) { |
369 const size_t kNumShillManagerClientStubImplServices = 4; | 364 const size_t kNumShillManagerClientStubImplServices = 4; |
370 EXPECT_EQ(kNumShillManagerClientStubImplServices, | 365 EXPECT_EQ(kNumShillManagerClientStubImplServices, |
371 listener_->entries(shill::kServicesProperty).size()); | 366 listener_->entries(shill::kServiceCompleteListProperty).size()); |
372 | 367 |
373 // Add a service. | 368 // Add a service. |
374 listener_->reset_list_updates(); | 369 listener_->reset_list_updates(); |
375 const std::string kTestServicePath("test_wifi_service1"); | 370 const std::string kTestServicePath("test_wifi_service1"); |
376 AddService(shill::kTypeWifi, kTestServicePath, shill::kStateIdle); | 371 AddService(shill::kTypeWifi, kTestServicePath, shill::kStateIdle); |
377 message_loop_.RunUntilIdle(); | 372 message_loop_.RunUntilIdle(); |
378 // Add should trigger a service list update and update entries. | 373 // Add should trigger a service list update and update entries. |
379 EXPECT_EQ(1, listener_->list_updates(shill::kServiceCompleteListProperty)); | 374 EXPECT_EQ(1, listener_->list_updates(shill::kServiceCompleteListProperty)); |
380 EXPECT_EQ(kNumShillManagerClientStubImplServices + 1, | 375 EXPECT_EQ(kNumShillManagerClientStubImplServices + 1, |
381 listener_->entries(shill::kServicesProperty).size()); | 376 listener_->entries(shill::kServiceCompleteListProperty).size()); |
382 // Service receives an initial property update. | 377 // Service receives an initial property update. |
383 EXPECT_EQ(1, listener_->initial_property_updates( | 378 EXPECT_EQ(1, listener_->initial_property_updates( |
384 shill::kServiceCompleteListProperty)[kTestServicePath]); | 379 shill::kServiceCompleteListProperty)[kTestServicePath]); |
385 // Change a property. | 380 // Change a property. |
386 base::FundamentalValue scan_interval(3); | 381 base::FundamentalValue scan_interval(3); |
387 DBusThreadManager::Get()->GetShillServiceClient()->SetProperty( | 382 DBusThreadManager::Get()->GetShillServiceClient()->SetProperty( |
388 dbus::ObjectPath(kTestServicePath), | 383 dbus::ObjectPath(kTestServicePath), |
389 shill::kScanIntervalProperty, | 384 shill::kScanIntervalProperty, |
390 scan_interval, | 385 scan_interval, |
391 base::Bind(&base::DoNothing), base::Bind(&ErrorCallbackFunction)); | 386 base::Bind(&base::DoNothing), base::Bind(&ErrorCallbackFunction)); |
392 message_loop_.RunUntilIdle(); | 387 message_loop_.RunUntilIdle(); |
393 // Property change triggers an update (but not a service list update). | 388 // Property change triggers an update (but not a service list update). |
394 EXPECT_EQ(1, listener_->property_updates( | 389 EXPECT_EQ(1, listener_->property_updates( |
395 shill::kServiceCompleteListProperty)[kTestServicePath]); | 390 shill::kServiceCompleteListProperty)[kTestServicePath]); |
396 | 391 |
397 // Change the visibility of a service. This will signal two service list | 392 // Change the visibility of a service. This will trigger a service list |
398 // updates, one for the complete list and one for the visible list. | 393 // updates. |
399 listener_->reset_list_updates(); | 394 listener_->reset_list_updates(); |
400 DBusThreadManager::Get()->GetShillServiceClient()->SetProperty( | 395 DBusThreadManager::Get()->GetShillServiceClient()->SetProperty( |
401 dbus::ObjectPath(kTestServicePath), | 396 dbus::ObjectPath(kTestServicePath), |
402 shill::kVisibleProperty, | 397 shill::kVisibleProperty, |
403 base::FundamentalValue(false), | 398 base::FundamentalValue(false), |
404 base::Bind(&base::DoNothing), base::Bind(&ErrorCallbackFunction)); | 399 base::Bind(&base::DoNothing), base::Bind(&ErrorCallbackFunction)); |
405 message_loop_.RunUntilIdle(); | 400 message_loop_.RunUntilIdle(); |
406 EXPECT_EQ(2, listener_->list_updates(shill::kServiceCompleteListProperty)); | 401 EXPECT_EQ(1, listener_->list_updates(shill::kServiceCompleteListProperty)); |
407 | 402 |
408 // Remove a service. This will update the entries and signal a service list | 403 // Remove a service. This will update the entries and signal a service list |
409 // update. | 404 // update. |
410 listener_->reset_list_updates(); | 405 listener_->reset_list_updates(); |
411 RemoveService(kTestServicePath); | 406 RemoveService(kTestServicePath); |
412 message_loop_.RunUntilIdle(); | 407 message_loop_.RunUntilIdle(); |
413 EXPECT_EQ(1, listener_->list_updates(shill::kServiceCompleteListProperty)); | 408 EXPECT_EQ(1, listener_->list_updates(shill::kServiceCompleteListProperty)); |
414 EXPECT_EQ(kNumShillManagerClientStubImplServices, | 409 EXPECT_EQ(kNumShillManagerClientStubImplServices, |
415 listener_->entries(shill::kServicesProperty).size()); | 410 listener_->entries(shill::kServiceCompleteListProperty).size()); |
416 | 411 |
417 EXPECT_EQ(0, listener_->errors()); | 412 EXPECT_EQ(0, listener_->errors()); |
418 } | 413 } |
419 | 414 |
420 TEST_F(ShillPropertyHandlerTest, ShillPropertyHandlerIPConfigPropertyChanged) { | 415 TEST_F(ShillPropertyHandlerTest, ShillPropertyHandlerIPConfigPropertyChanged) { |
421 // Set the properties for an IP Config object. | 416 // Set the properties for an IP Config object. |
422 const std::string kTestIPConfigPath("test_ip_config_path"); | 417 const std::string kTestIPConfigPath("test_ip_config_path"); |
423 | 418 |
424 base::StringValue ip_address("192.168.1.1"); | 419 base::StringValue ip_address("192.168.1.1"); |
425 DBusThreadManager::Get()->GetShillIPConfigClient()->SetProperty( | 420 DBusThreadManager::Get()->GetShillIPConfigClient()->SetProperty( |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
473 EXPECT_EQ(2, listener_->property_updates( | 468 EXPECT_EQ(2, listener_->property_updates( |
474 shill::kIPConfigsProperty)[kTestIPConfigPath]); | 469 shill::kIPConfigsProperty)[kTestIPConfigPath]); |
475 } | 470 } |
476 | 471 |
477 TEST_F(ShillPropertyHandlerTest, ShillPropertyHandlerServiceList) { | 472 TEST_F(ShillPropertyHandlerTest, ShillPropertyHandlerServiceList) { |
478 // Add an entry to the profile only. | 473 // Add an entry to the profile only. |
479 const std::string kTestServicePath1("stub_wifi_profile_only1"); | 474 const std::string kTestServicePath1("stub_wifi_profile_only1"); |
480 AddServiceToProfile(shill::kTypeWifi, kTestServicePath1, false /* visible */); | 475 AddServiceToProfile(shill::kTypeWifi, kTestServicePath1, false /* visible */); |
481 message_loop_.RunUntilIdle(); | 476 message_loop_.RunUntilIdle(); |
482 | 477 |
483 // Update the Manager properties. This should trigger a single list update | 478 // Update the Manager properties. This should trigger a single list update, |
484 // and a single initial property update. | 479 // an initial property update, and a regular property update. |
485 listener_->reset_list_updates(); | 480 listener_->reset_list_updates(); |
486 shill_property_handler_->UpdateManagerProperties(); | 481 shill_property_handler_->UpdateManagerProperties(); |
487 message_loop_.RunUntilIdle(); | 482 message_loop_.RunUntilIdle(); |
488 EXPECT_EQ(1, listener_->list_updates(shill::kServiceCompleteListProperty)); | 483 EXPECT_EQ(1, listener_->list_updates(shill::kServiceCompleteListProperty)); |
489 EXPECT_EQ(1, listener_->initial_property_updates( | 484 EXPECT_EQ(1, listener_->initial_property_updates( |
490 shill::kServiceCompleteListProperty)[kTestServicePath1]); | 485 shill::kServiceCompleteListProperty)[kTestServicePath1]); |
491 | 486 EXPECT_EQ(1, listener_->property_updates( |
492 EXPECT_EQ(0, listener_->property_updates( | |
493 shill::kServiceCompleteListProperty)[kTestServicePath1]); | 487 shill::kServiceCompleteListProperty)[kTestServicePath1]); |
494 | 488 |
495 // Add a new entry to the services and the profile; should also trigger a | 489 // Add a new entry to the services and the profile; should also trigger a |
496 // service list update, and a property update. | 490 // service list update, and a property update. |
497 listener_->reset_list_updates(); | 491 listener_->reset_list_updates(); |
498 const std::string kTestServicePath2("stub_wifi_profile_only2"); | 492 const std::string kTestServicePath2("stub_wifi_profile_only2"); |
499 AddServiceToProfile(shill::kTypeWifi, kTestServicePath2, true); | 493 AddServiceToProfile(shill::kTypeWifi, kTestServicePath2, true); |
500 shill_property_handler_->UpdateManagerProperties(); | 494 shill_property_handler_->UpdateManagerProperties(); |
501 message_loop_.RunUntilIdle(); | 495 message_loop_.RunUntilIdle(); |
502 EXPECT_EQ(1, listener_->list_updates(shill::kServiceCompleteListProperty)); | 496 EXPECT_EQ(1, listener_->list_updates(shill::kServiceCompleteListProperty)); |
503 EXPECT_EQ(1, listener_->initial_property_updates( | 497 EXPECT_EQ(1, listener_->initial_property_updates( |
504 shill::kServiceCompleteListProperty)[kTestServicePath2]); | 498 shill::kServiceCompleteListProperty)[kTestServicePath2]); |
505 EXPECT_EQ(1, listener_->property_updates( | 499 EXPECT_EQ(1, listener_->property_updates( |
506 shill::kServiceCompleteListProperty)[kTestServicePath2]); | 500 shill::kServiceCompleteListProperty)[kTestServicePath2]); |
507 } | 501 } |
508 | 502 |
509 } // namespace chromeos | 503 } // namespace chromeos |
OLD | NEW |