summaryrefslogtreecommitdiffstats
path: root/chromeos
diff options
context:
space:
mode:
authorgauravsh@chromium.org <gauravsh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-31 01:16:38 +0000
committergauravsh@chromium.org <gauravsh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-31 01:16:38 +0000
commit68196e45a35c9d55beeddd2ba08a6d5fd1cdb4e6 (patch)
tree3779d78cf7e33ee4f4d502165412c841cf3e471b /chromeos
parent12aa48584359ba553468696ddaf3b2aee8400a3f (diff)
downloadchromium_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.cc1
-rw-r--r--chromeos/network/network_state_handler.cc13
-rw-r--r--chromeos/network/network_state_handler.h16
-rw-r--r--chromeos/network/shill_property_handler.cc17
-rw-r--r--chromeos/network/shill_property_handler.h7
-rw-r--r--chromeos/network/shill_property_handler_unittest.cc4
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));