Index: chrome/browser/extensions/api/networking_private/networking_private_api_chromeos.cc |
diff --git a/chrome/browser/extensions/api/networking_private/networking_private_api_chromeos.cc b/chrome/browser/extensions/api/networking_private/networking_private_api_chromeos.cc |
index 091e564ed63cb1587927f3836a014812ae5c0ffe..564d035f6ae18915d5abc2210cc8e0bf99d2fb87 100644 |
--- a/chrome/browser/extensions/api/networking_private/networking_private_api_chromeos.cc |
+++ b/chrome/browser/extensions/api/networking_private/networking_private_api_chromeos.cc |
@@ -10,6 +10,7 @@ |
#include "base/command_line.h" |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/browser_process_platform_part_chromeos.h" |
+#include "chrome/browser/chromeos/net/network_portal_detector.h" |
#include "chrome/browser/chromeos/profiles/profile_helper.h" |
#include "chrome/common/chrome_switches.h" |
#include "chrome/common/extensions/api/networking_private.h" |
@@ -31,6 +32,7 @@ namespace api = extensions::api::networking_private; |
using chromeos::DBusThreadManager; |
using chromeos::ManagedNetworkConfigurationHandler; |
using chromeos::NetworkHandler; |
+using chromeos::NetworkPortalDetector; |
using chromeos::NetworkState; |
using chromeos::NetworkStateHandler; |
using chromeos::NetworkTypePattern; |
@@ -688,3 +690,32 @@ void NetworkingPrivateGetWifiTDLSStatusFunction::Failure( |
error_ = error_name; |
SendResponse(false); |
} |
+ |
+//////////////////////////////////////////////////////////////////////////////// |
+// NetworkingPrivateGetCaptivePortalStatusFunction |
+ |
+NetworkingPrivateGetCaptivePortalStatusFunction:: |
+ ~NetworkingPrivateGetCaptivePortalStatusFunction() {} |
+ |
+bool NetworkingPrivateGetCaptivePortalStatusFunction::RunImpl() { |
+ scoped_ptr<api::GetCaptivePortalStatus::Params> params = |
+ api::GetCaptivePortalStatus::Params::Create(*args_); |
+ EXTENSION_FUNCTION_VALIDATE(params); |
+ |
+ // The |network_guid| parameter is storing the service path. |
+ const std::string& service_path = params->network_guid; |
+ |
+ NetworkPortalDetector* detector = NetworkPortalDetector::Get(); |
+ if (!detector) { |
+ error_ = "Error.NotReady"; |
+ return false; |
+ } |
+ |
+ NetworkPortalDetector::CaptivePortalState state = |
+ detector->GetCaptivePortalState(service_path); |
+ |
+ SetResult(new base::StringValue( |
+ NetworkPortalDetector::CaptivePortalStatusString(state.status))); |
+ SendResponse(true); |
+ return true; |
+} |