Index: extensions/browser/api/networking_private/networking_private_chromeos.cc |
diff --git a/extensions/browser/api/networking_private/networking_private_chromeos.cc b/extensions/browser/api/networking_private/networking_private_chromeos.cc |
index 83db6529f8fb88a56b1f64320e97677ab70478ff..006d09ea7861335bde50aaefe21a9190c647909c 100644 |
--- a/extensions/browser/api/networking_private/networking_private_chromeos.cc |
+++ b/extensions/browser/api/networking_private/networking_private_chromeos.cc |
@@ -166,8 +166,8 @@ NetworkingPrivateChromeOS::NetworkingPrivateChromeOS( |
content::BrowserContext* browser_context, |
scoped_ptr<VerifyDelegate> verify_delegate) |
: NetworkingPrivateDelegate(verify_delegate.Pass()), |
- browser_context_(browser_context) { |
-} |
+ browser_context_(browser_context), |
+ weak_ptr_factory_(this) {} |
NetworkingPrivateChromeOS::~NetworkingPrivateChromeOS() { |
} |
@@ -310,10 +310,28 @@ void NetworkingPrivateChromeOS::StartConnect( |
const bool check_error_state = false; |
NetworkHandler::Get()->network_connection_handler()->ConnectToNetwork( |
service_path, success_callback, |
- base::Bind(&NetworkHandlerFailureCallback, failure_callback), |
+ base::Bind(&NetworkingPrivateChromeOS::ConnectFailureCallback, |
+ weak_ptr_factory_.GetWeakPtr(), guid, success_callback, |
+ failure_callback), |
check_error_state); |
} |
+void NetworkingPrivateChromeOS::ConnectFailureCallback( |
+ const std::string& guid, |
+ const VoidCallback& success_callback, |
+ const FailureCallback& failure_callback, |
+ const std::string& error_name, |
+ scoped_ptr<base::DictionaryValue> error_data) { |
+ // TODO(stevenjb): Temporary workaround to show the configuration UI. |
+ // Eventually the caller (e.g. Settings) should handle any failures and |
+ // show its own configuration UI. crbug.com/380937. |
+ if (ui_delegate()->HandleConnectFailed(guid, error_name)) { |
+ success_callback.Run(); |
+ return; |
+ } |
+ failure_callback.Run(error_name); |
+} |
+ |
void NetworkingPrivateChromeOS::StartDisconnect( |
const std::string& guid, |
const VoidCallback& success_callback, |