diff options
author | gauravsh@chromium.org <gauravsh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-31 01:16:38 +0000 |
---|---|---|
committer | gauravsh@chromium.org <gauravsh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-05-31 01:16:38 +0000 |
commit | 68196e45a35c9d55beeddd2ba08a6d5fd1cdb4e6 (patch) | |
tree | 3779d78cf7e33ee4f4d502165412c841cf3e471b /chromeos | |
parent | 12aa48584359ba553468696ddaf3b2aee8400a3f (diff) | |
download | chromium_src-68196e45a35c9d55beeddd2ba08a6d5fd1cdb4e6.zip chromium_src-68196e45a35c9d55beeddd2ba08a6d5fd1cdb4e6.tar.gz chromium_src-68196e45a35c9d55beeddd2ba08a6d5fd1cdb4e6.tar.bz2 |
Add CheckPortalList manager property to NetworkStateHandler
Also, gets rid of the code for handling this in NetworkLibrary and moves
WizardController to use NetworkStateHandler instead.
BUG=189035
Review URL: https://chromiumcodereview.appspot.com/15899015
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@203296 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos')
-rw-r--r-- | chromeos/dbus/shill_manager_client_stub.cc | 1 | ||||
-rw-r--r-- | chromeos/network/network_state_handler.cc | 13 | ||||
-rw-r--r-- | chromeos/network/network_state_handler.h | 16 | ||||
-rw-r--r-- | chromeos/network/shill_property_handler.cc | 17 | ||||
-rw-r--r-- | chromeos/network/shill_property_handler.h | 7 | ||||
-rw-r--r-- | chromeos/network/shill_property_handler_unittest.cc | 4 |
6 files changed, 58 insertions, 0 deletions
diff --git a/chromeos/dbus/shill_manager_client_stub.cc b/chromeos/dbus/shill_manager_client_stub.cc index 2949332..dbfc2b6 100644 --- a/chromeos/dbus/shill_manager_client_stub.cc +++ b/chromeos/dbus/shill_manager_client_stub.cc @@ -88,6 +88,7 @@ void ShillManagerClientStub::SetProperty(const std::string& name, const base::Closure& callback, const ErrorCallback& error_callback) { stub_properties_.SetWithoutPathExpansion(name, value.DeepCopy()); + CallNotifyObserversPropertyChanged(name, 0); if (callback.is_null()) return; base::MessageLoop::current()->PostTask(FROM_HERE, callback); diff --git a/chromeos/network/network_state_handler.cc b/chromeos/network/network_state_handler.cc index ca214e9..8889b94 100644 --- a/chromeos/network/network_state_handler.cc +++ b/chromeos/network/network_state_handler.cc @@ -70,6 +70,8 @@ const char NetworkStateHandler::kMatchTypeDefault[] = "default"; const char NetworkStateHandler::kMatchTypeWireless[] = "wireless"; const char NetworkStateHandler::kMatchTypeMobile[] = "mobile"; const char NetworkStateHandler::kMatchTypeNonVirtual[] = "non-virtual"; +const char NetworkStateHandler::kDefaultCheckPortalList[] = + "ethernet,wifi,cellular"; NetworkStateHandler::NetworkStateHandler() { } @@ -306,6 +308,12 @@ void NetworkStateHandler::SetConnectingNetwork( NET_LOG_ERROR("SetConnectingNetwork to unknown network", service_path); } +void NetworkStateHandler::SetCheckPortalList( + const std::string& check_portal_list) { + NET_LOG_EVENT("SetCheckPortalList", check_portal_list); + shill_property_handler_->SetCheckPortalList(check_portal_list); +} + void NetworkStateHandler::GetNetworkStatePropertiesForTest( base::DictionaryValue* dictionary) const { for (ManagedStateList::const_iterator iter = network_list_.begin(); @@ -461,6 +469,11 @@ void NetworkStateHandler::UpdateDeviceProperty(const std::string& device_path, ScanCompleted(device->type()); } +void NetworkStateHandler::CheckPortalListChanged( + const std::string& check_portal_list) { + check_portal_list_ = check_portal_list; +} + void NetworkStateHandler::NotifyManagerPropertyChanged() { NET_LOG_DEBUG("NotifyManagerPropertyChanged", ""); FOR_EACH_OBSERVER(NetworkStateHandlerObserver, observers_, diff --git a/chromeos/network/network_state_handler.h b/chromeos/network/network_state_handler.h index a361e25..8f5d906 100644 --- a/chromeos/network/network_state_handler.h +++ b/chromeos/network/network_state_handler.h @@ -162,7 +162,11 @@ class CHROMEOS_EXPORT NetworkStateHandler // Set the user initiated connecting network. void SetConnectingNetwork(const std::string& service_path); + // Set the list of devices on which portal check is enabled. + void SetCheckPortalList(const std::string& check_portal_list); + const std::string& connecting_network() const { return connecting_network_; } + const std::string& check_portal_list() const { return check_portal_list_; } // Generates a DictionaryValue of all NetworkState properties. Currently // provided for debugging purposes only. @@ -177,6 +181,10 @@ class CHROMEOS_EXPORT NetworkStateHandler static const char kMatchTypeMobile[]; static const char kMatchTypeNonVirtual[]; + // Default set of comma separated interfaces on which to enable + // portal checking. + static const char kDefaultCheckPortalList[]; + protected: friend class NetworkHandler; NetworkStateHandler(); @@ -211,6 +219,11 @@ class CHROMEOS_EXPORT NetworkStateHandler const std::string& key, const base::Value& value) OVERRIDE; + // Called by ShillPropertyHandler when the portal check list manager property + // changes. + virtual void CheckPortalListChanged( + const std::string& check_portal_list) OVERRIDE; + // Sends NetworkManagerChanged() to observers and logs an event. virtual void NotifyManagerPropertyChanged() OVERRIDE; @@ -281,6 +294,9 @@ class CHROMEOS_EXPORT NetworkStateHandler // TODO(stevenjb): Move this to NetworkConfigurationHandler. std::string connecting_network_; + // List of interfaces on which portal check is enabled. + std::string check_portal_list_; + // Callbacks to run when a scan for the technology type completes. ScanCompleteCallbackMap scan_complete_callbacks_; diff --git a/chromeos/network/shill_property_handler.cc b/chromeos/network/shill_property_handler.cc index 81d9221..64ea14d 100644 --- a/chromeos/network/shill_property_handler.cc +++ b/chromeos/network/shill_property_handler.cc @@ -162,6 +162,17 @@ void ShillPropertyHandler::SetTechnologyEnabled( } } +void ShillPropertyHandler::SetCheckPortalList( + const std::string& check_portal_list) { + base::StringValue value(check_portal_list); + shill_manager_->SetProperty( + flimflam::kCheckPortalListProperty, + value, + base::Bind(&base::DoNothing), + base::Bind(&network_handler::ShillErrorCallbackFunction, + "", network_handler::ErrorCallback())); +} + void ShillPropertyHandler::RequestScan() const { shill_manager_->RequestScan( "", @@ -296,6 +307,12 @@ bool ShillPropertyHandler::ManagerPropertyChanged(const std::string& key, } } else if (key == flimflam::kProfilesProperty) { listener_->ProfileListChanged(); + } else if (key == flimflam::kCheckPortalListProperty) { + std::string check_portal_list; + if (value.GetAsString(&check_portal_list)) { + listener_->CheckPortalListChanged(check_portal_list); + notify_manager_changed = true; + } } return notify_manager_changed; } diff --git a/chromeos/network/shill_property_handler.h b/chromeos/network/shill_property_handler.h index eea30fd..4ca119e 100644 --- a/chromeos/network/shill_property_handler.h +++ b/chromeos/network/shill_property_handler.h @@ -71,6 +71,10 @@ class CHROMEOS_EXPORT ShillPropertyHandler const std::string& key, const base::Value& value) = 0; + // Called when the list of devices with portal check enabled changes. + virtual void CheckPortalListChanged( + const std::string& check_portal_list) = 0; + // Called when one or more manager properties (e.g. a technology list) // changes. virtual void NotifyManagerPropertyChanged() = 0; @@ -103,6 +107,9 @@ class CHROMEOS_EXPORT ShillPropertyHandler bool enabled, const network_handler::ErrorCallback& error_callback); + // Sets the list of devices on which portal check is enabled. + void SetCheckPortalList(const std::string& check_portal_list); + // Requests an immediate network scan. void RequestScan() const; diff --git a/chromeos/network/shill_property_handler_unittest.cc b/chromeos/network/shill_property_handler_unittest.cc index 0fa49c1..362b219 100644 --- a/chromeos/network/shill_property_handler_unittest.cc +++ b/chromeos/network/shill_property_handler_unittest.cc @@ -71,6 +71,10 @@ class TestListener : public internal::ShillPropertyHandler::Listener { ++manager_updates_; } + virtual void CheckPortalListChanged( + const std::string& check_portal_list) OVERRIDE { + } + virtual void ManagedStateListChanged( ManagedState::ManagedType type) OVERRIDE { AddStateListUpdate(GetTypeString(type)); |