summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/chromeos/net/proxy_config_handler.cc22
-rw-r--r--chromeos/network/network_configuration_handler.cc32
-rw-r--r--chromeos/network/network_connection_handler.cc25
-rw-r--r--chromeos/network/network_connection_handler.h6
-rw-r--r--chromeos/network/network_device_handler.cc47
-rw-r--r--chromeos/network/network_handler_callbacks.cc47
-rw-r--r--chromeos/network/network_handler_callbacks.h23
-rw-r--r--chromeos/network/shill_property_handler.cc12
-rw-r--r--chromeos/network/shill_property_handler.h4
9 files changed, 102 insertions, 116 deletions
diff --git a/chrome/browser/chromeos/net/proxy_config_handler.cc b/chrome/browser/chromeos/net/proxy_config_handler.cc
index b1d2f1e..013fb44 100644
--- a/chrome/browser/chromeos/net/proxy_config_handler.cc
+++ b/chrome/browser/chromeos/net/proxy_config_handler.cc
@@ -19,20 +19,6 @@
namespace chromeos {
-namespace {
-
-void LogError(const std::string& network,
- const std::string& error_name,
- const std::string& error_message) {
- network_handler::ShillErrorCallbackFunction(
- network,
- network_handler::ErrorCallback(),
- "Could not clear or set ProxyConfig",
- error_message);
-}
-
-} // namespace
-
namespace proxy_config {
scoped_ptr<ProxyConfigDictionary> GetProxyConfigForNetwork(
@@ -56,7 +42,9 @@ void SetProxyConfigForNetwork(const ProxyConfigDictionary& proxy_config,
dbus::ObjectPath(network.path()),
flimflam::kProxyConfigProperty,
base::Bind(&base::DoNothing),
- base::Bind(&LogError, network.path()));
+ base::Bind(&network_handler::ShillErrorCallbackFunction,
+ "SetProxyConfig.ClearProperty Failed",
+ network.path(), network_handler::ErrorCallback()));
} else {
std::string proxy_config_str;
base::JSONWriter::Write(&proxy_config.GetDictionary(), &proxy_config_str);
@@ -65,7 +53,9 @@ void SetProxyConfigForNetwork(const ProxyConfigDictionary& proxy_config,
flimflam::kProxyConfigProperty,
base::StringValue(proxy_config_str),
base::Bind(&base::DoNothing),
- base::Bind(&LogError, network.path()));
+ base::Bind(&network_handler::ShillErrorCallbackFunction,
+ "SetProxyConfig.SetProperty Failed",
+ network.path(), network_handler::ErrorCallback()));
}
if (NetworkHandler::IsInitialized()) {
diff --git a/chromeos/network/network_configuration_handler.cc b/chromeos/network/network_configuration_handler.cc
index 613f2d2..b9dbeab 100644
--- a/chromeos/network/network_configuration_handler.cc
+++ b/chromeos/network/network_configuration_handler.cc
@@ -107,6 +107,17 @@ std::string StripQuotations(const std::string& in_str) {
return in_str;
}
+void InvokeErrorCallback(const std::string& error,
+ const std::string& path,
+ const network_handler::ErrorCallback& error_callback) {
+ NET_LOG_ERROR(error, path);
+ if (error_callback.is_null())
+ return;
+ scoped_ptr<base::DictionaryValue> error_data(
+ network_handler::CreateErrorData(path, error, ""));
+ error_callback.Run(error, error_data.Pass());
+}
+
} // namespace
// Helper class to request from Shill the profile entries associated with a
@@ -139,9 +150,8 @@ class NetworkConfigurationHandler::ProfileEntryDeleter
DBusMethodCallStatus call_status,
const base::DictionaryValue& profile_entries) {
if (call_status != DBUS_METHOD_CALL_SUCCESS) {
- network_handler::ShillErrorCallbackFunction(
- service_path_, error_callback_, "GetLoadableProfileEntries Failed",
- "Failed to get Profile Entries for " + service_path_);
+ InvokeErrorCallback(
+ "GetLoadableProfileEntries Failed", service_path_, error_callback_);
owner_->ProfileEntryDeleterCompleted(service_path_); // Deletes this.
return;
}
@@ -195,8 +205,8 @@ class NetworkConfigurationHandler::ProfileEntryDeleter
const std::string& dbus_error_message) {
// Any Shill Error triggers a failure / error.
network_handler::ShillErrorCallbackFunction(
- profile_path, error_callback_, "GetLoadableProfileEntries Shill Error",
- base::StringPrintf("Shill Error for Entry: %s", entry.c_str()));
+ "GetLoadableProfileEntries Failed", profile_path, error_callback_,
+ dbus_error_name, dbus_error_message);
// Delete this even if there are pending deletions; any callbacks will
// safely become no-ops (by invalidating the WeakPtrs).
owner_->ProfileEntryDeleterCompleted(service_path_); // Deletes this.
@@ -236,6 +246,7 @@ void NetworkConfigurationHandler::SetProperties(
properties,
base::Bind(&IgnoreObjectPathCallback, callback),
base::Bind(&network_handler::ShillErrorCallbackFunction,
+ "Config.SetProperties Failed",
service_path, error_callback));
network_state_handler_->RequestUpdateForNetwork(service_path);
}
@@ -254,6 +265,7 @@ void NetworkConfigurationHandler::ClearProperties(
callback,
error_callback),
base::Bind(&network_handler::ShillErrorCallbackFunction,
+ "Config.ClearProperties Failed",
service_path, error_callback));
}
@@ -280,14 +292,14 @@ void NetworkConfigurationHandler::CreateConfiguration(
base::Bind(&NetworkConfigurationHandler::RunCreateNetworkCallback,
AsWeakPtr(), callback),
base::Bind(&network_handler::ShillErrorCallbackFunction,
- "", error_callback));
+ "Config.CreateConfiguration Failed", "", error_callback));
} else {
manager->ConfigureService(
properties,
base::Bind(&NetworkConfigurationHandler::RunCreateNetworkCallback,
AsWeakPtr(), callback),
base::Bind(&network_handler::ShillErrorCallbackFunction,
- "", error_callback));
+ "Config.CreateConfiguration Failed", "", error_callback));
}
}
@@ -298,10 +310,8 @@ void NetworkConfigurationHandler::RemoveConfiguration(
// Service.Remove is not reliable. Instead, request the profile entries
// for the service and remove each entry.
if (profile_entry_deleters_.count(service_path)) {
- network_handler::ShillErrorCallbackFunction(
- service_path, error_callback, "RemoveConfiguration",
- base::StringPrintf("RemoveConfiguration In-Progress for %s",
- service_path.c_str()));
+ InvokeErrorCallback(
+ "RemoveConfiguration In-Progress", service_path, error_callback);
return;
}
NET_LOG_USER("Remove Configuration", service_path);
diff --git a/chromeos/network/network_connection_handler.cc b/chromeos/network/network_connection_handler.cc
index 88d277cb..7200581 100644
--- a/chromeos/network/network_connection_handler.cc
+++ b/chromeos/network/network_connection_handler.cc
@@ -133,6 +133,8 @@ const char NetworkConnectionHandler::kErrorConfigurationRequired[] =
"configuration-required";
const char NetworkConnectionHandler::kErrorShillError[] = "shill-error";
const char NetworkConnectionHandler::kErrorConnectFailed[] = "connect-failed";
+const char NetworkConnectionHandler::kErrorDisconnectFailed[] =
+ "disconnect-failed";
const char NetworkConnectionHandler::kErrorUnknown[] = "unknown-error";
struct NetworkConnectionHandler::ConnectRequest {
@@ -478,15 +480,15 @@ void NetworkConnectionHandler::HandleShillConnectSuccess(
void NetworkConnectionHandler::HandleShillConnectFailure(
const std::string& service_path,
- const std::string& error_name,
- const std::string& error_message) {
+ const std::string& dbus_error_name,
+ const std::string& dbus_error_message) {
ConnectRequest* request = pending_request(service_path);
DCHECK(request);
network_handler::ErrorCallback error_callback = request->error_callback;
pending_requests_.erase(service_path);
- std::string error = "Connect Failure: " + error_name + ": " + error_message;
network_handler::ShillErrorCallbackFunction(
- service_path, error_callback, error_name, error_message);
+ kErrorConnectFailed, service_path, error_callback,
+ dbus_error_name, dbus_error_message);
}
void NetworkConnectionHandler::CheckPendingRequest(
@@ -582,8 +584,8 @@ void NetworkConnectionHandler::CallShillDisconnect(
dbus::ObjectPath(service_path),
base::Bind(&NetworkConnectionHandler::HandleShillDisconnectSuccess,
AsWeakPtr(), service_path, success_callback),
- base::Bind(&NetworkConnectionHandler::HandleShillDisconnectFailure,
- AsWeakPtr(), service_path, error_callback));
+ base::Bind(&network_handler::ShillErrorCallbackFunction,
+ kErrorDisconnectFailed, service_path, error_callback));
}
void NetworkConnectionHandler::HandleShillDisconnectSuccess(
@@ -593,15 +595,4 @@ void NetworkConnectionHandler::HandleShillDisconnectSuccess(
success_callback.Run();
}
-void NetworkConnectionHandler::HandleShillDisconnectFailure(
- const std::string& service_path,
- const network_handler::ErrorCallback& error_callback,
- const std::string& error_name,
- const std::string& error_message) {
- std::string error =
- "Disconnect Failure: " + error_name + ": " + error_message;
- network_handler::ShillErrorCallbackFunction(
- service_path, error_callback, error_name, error_message);
-}
-
} // namespace chromeos
diff --git a/chromeos/network/network_connection_handler.h b/chromeos/network/network_connection_handler.h
index 215b4b5..f229ffd 100644
--- a/chromeos/network/network_connection_handler.h
+++ b/chromeos/network/network_connection_handler.h
@@ -57,6 +57,7 @@ class CHROMEOS_EXPORT NetworkConnectionHandler
static const char kErrorConfigurationRequired[];
static const char kErrorShillError[];
static const char kErrorConnectFailed[];
+ static const char kErrorDisconnectFailed[];
static const char kErrorUnknown[];
// Constants for |error_name| from |error_callback| for Disconnect.
@@ -160,11 +161,6 @@ class CHROMEOS_EXPORT NetworkConnectionHandler
// Handle success or failure from Shill.Service.Disconnect.
void HandleShillDisconnectSuccess(const std::string& service_path,
const base::Closure& success_callback);
- void HandleShillDisconnectFailure(
- const std::string& service_path,
- const network_handler::ErrorCallback& error_callback,
- const std::string& error_name,
- const std::string& error_message);
// Local references to the associated handler instances.
CertLoader* cert_loader_;
diff --git a/chromeos/network/network_device_handler.cc b/chromeos/network/network_device_handler.cc
index c883751..f3e94ae 100644
--- a/chromeos/network/network_device_handler.cc
+++ b/chromeos/network/network_device_handler.cc
@@ -25,17 +25,6 @@ const char kShillErrorFailure[] = "org.chromium.flimflam.Error.Failure";
const char kShillErrorNotSupported[] =
"org.chromium.flimflam.Error.NotSupported";
-base::DictionaryValue* CreateDeviceErrorData(const std::string& device_path,
- const std::string& error_name,
- const std::string& error_message) {
- // Create error data with no 'servicePath' entry.
- base::DictionaryValue* error_data =
- network_handler::CreateErrorData("", error_name, error_message);
- if (!device_path.empty())
- error_data->SetString(kDevicePath, device_path);
- return error_data;
-}
-
std::string GetErrorNameForShillError(const std::string& shill_error_name) {
// TODO(armansito): Use the new SIM error names once the ones below get
// deprecated (crbug.com/256855)
@@ -52,41 +41,17 @@ std::string GetErrorNameForShillError(const std::string& shill_error_name) {
return NetworkDeviceHandler::kErrorUnknown;
}
-void NetworkErrorCallbackFunction(
- const std::string& path,
- const network_handler::ErrorCallback& error_callback,
- const std::string& error_name,
- const std::string& error_description) {
- NET_LOG_ERROR(error_description, path);
- if (error_callback.is_null())
- return;
- scoped_ptr<base::DictionaryValue> error_data(
- CreateDeviceErrorData(path, error_name, error_description));
- error_callback.Run(error_name, error_data.Pass());
-}
-
-void ShillErrorCallbackFunction(
- const std::string& path,
- const network_handler::ErrorCallback& error_callback,
- const std::string& error_name,
- const std::string& shill_error_name,
- const std::string& shill_error_message) {
- std::string description = "Shill Error: name=" + shill_error_name +
- ", message=\"" + shill_error_message + "\"";
- NetworkErrorCallbackFunction(path, error_callback, error_name, description);
-}
-
void InvokeShillErrorCallback(
const std::string& path,
const network_handler::ErrorCallback& error_callback,
const std::string& shill_error_name,
const std::string& shill_error_message) {
- std::string error_name = GetErrorNameForShillError(shill_error_name);
- ShillErrorCallbackFunction(path,
- error_callback,
- error_name,
- shill_error_name,
- shill_error_message);
+ network_handler::ShillErrorCallbackFunction(
+ GetErrorNameForShillError(shill_error_name),
+ path,
+ error_callback,
+ shill_error_name,
+ shill_error_message);
}
} // namespace
diff --git a/chromeos/network/network_handler_callbacks.cc b/chromeos/network/network_handler_callbacks.cc
index c23dc50..bbd4bcc 100644
--- a/chromeos/network/network_handler_callbacks.cc
+++ b/chromeos/network/network_handler_callbacks.cc
@@ -13,34 +13,51 @@ namespace network_handler {
// These are names of fields in the error data dictionary for ErrorCallback.
const char kErrorName[] = "errorName";
-const char kErrorMessage[] = "errorMessage";
-const char kServicePath[] = "servicePath";
+const char kErrorDetail[] = "errorDetail";
+const char kDbusErrorName[] = "dbusErrorName";
+const char kDbusErrorMessage[] = "dbusErrorMessage";
+const char kPath[] = "path";
base::DictionaryValue* CreateErrorData(const std::string& service_path,
const std::string& error_name,
- const std::string& error_message) {
+ const std::string& error_detail) {
+ return CreateDBusErrorData(service_path, error_name, error_detail, "", "");
+}
+
+base::DictionaryValue* CreateDBusErrorData(
+ const std::string& path,
+ const std::string& error_name,
+ const std::string& error_detail,
+ const std::string& dbus_error_name,
+ const std::string& dbus_error_message) {
base::DictionaryValue* error_data(new base::DictionaryValue);
error_data->SetString(kErrorName, error_name);
- error_data->SetString(kErrorMessage, error_message);
- if (!service_path.empty())
- error_data->SetString(kServicePath, service_path);
+ error_data->SetString(kErrorDetail, error_detail);
+ error_data->SetString(kDbusErrorName, dbus_error_name);
+ error_data->SetString(kDbusErrorMessage, dbus_error_message);
+ if (!path.empty())
+ error_data->SetString(kPath, path);
return error_data;
}
-void ShillErrorCallbackFunction(const std::string& path,
+void ShillErrorCallbackFunction(const std::string& error_name,
+ const std::string& path,
const ErrorCallback& error_callback,
- const std::string& error_name,
- const std::string& error_message) {
- std::string error = "Shill Error";
+ const std::string& dbus_error_name,
+ const std::string& dbus_error_message) {
+ std::string detail;
if (!path.empty())
- error += " For " + path;
- error += ": " + error_name;
- NET_LOG_ERROR(error, error_message);
- LOG(ERROR) << error << " : " << error_message;
+ detail += path + ": ";
+ detail += dbus_error_name;
+ if (!dbus_error_message.empty())
+ detail += ": " + dbus_error_message;
+ NET_LOG_ERROR(error_name, detail);
+
if (error_callback.is_null())
return;
scoped_ptr<base::DictionaryValue> error_data(
- CreateErrorData(path, error_name, error_message));
+ CreateDBusErrorData(path, error_name, detail,
+ dbus_error_name, dbus_error_message));
error_callback.Run(error_name, error_data.Pass());
}
diff --git a/chromeos/network/network_handler_callbacks.h b/chromeos/network/network_handler_callbacks.h
index 2e73d28..9134951 100644
--- a/chromeos/network/network_handler_callbacks.h
+++ b/chromeos/network/network_handler_callbacks.h
@@ -31,19 +31,30 @@ typedef base::Callback<
typedef base::Callback<
void(const std::string& service_path)> StringResultCallback;
-// Create a DictionaryValue for passing to ErrorCallback
+// Create a DictionaryValue for passing to ErrorCallback.
CHROMEOS_EXPORT base::DictionaryValue* CreateErrorData(
- const std::string& service_path,
+ const std::string& path,
const std::string& error_name,
- const std::string& error_message);
+ const std::string& error_detail);
-// Callback for Shill errors. |path| may be blank if not relevant.
+CHROMEOS_EXPORT base::DictionaryValue* CreateDBusErrorData(
+ const std::string& path,
+ const std::string& error_name,
+ const std::string& error_detail,
+ const std::string& dbus_error_name,
+ const std::string& dbus_error_message);
+
+// Callback for Shill errors.
+// |error_name| is the error name passed to |error_callback|.
+// |path| is the associated object path or blank if not relevant.
+// |dbus_error_name| and |dbus_error_message| are provided by the DBus handler.
// Logs an error and calls |error_callback| if not null.
CHROMEOS_EXPORT void ShillErrorCallbackFunction(
+ const std::string& error_name,
const std::string& path,
const ErrorCallback& error_callback,
- const std::string& error_name,
- const std::string& error_message);
+ const std::string& dbus_error_name,
+ const std::string& dbus_error_message);
} // namespace network_handler
} // namespace chromeos
diff --git a/chromeos/network/shill_property_handler.cc b/chromeos/network/shill_property_handler.cc
index f611813..87127f8 100644
--- a/chromeos/network/shill_property_handler.cc
+++ b/chromeos/network/shill_property_handler.cc
@@ -164,6 +164,7 @@ void ShillPropertyHandler::SetTechnologyEnabled(
technology,
base::Bind(&base::DoNothing),
base::Bind(&network_handler::ShillErrorCallbackFunction,
+ "SetTechnologyEnabled Failed",
technology, error_callback));
}
}
@@ -176,6 +177,7 @@ void ShillPropertyHandler::SetCheckPortalList(
value,
base::Bind(&base::DoNothing),
base::Bind(&network_handler::ShillErrorCallbackFunction,
+ "SetCheckPortalList Failed",
"", network_handler::ErrorCallback()));
}
@@ -184,6 +186,7 @@ void ShillPropertyHandler::RequestScan() const {
"",
base::Bind(&base::DoNothing),
base::Bind(&network_handler::ShillErrorCallbackFunction,
+ "RequestScan Failed",
"", network_handler::ErrorCallback()));
}
@@ -192,6 +195,7 @@ void ShillPropertyHandler::ConnectToBestServices() const {
shill_manager_->ConnectToBestServices(
base::Bind(&base::DoNothing),
base::Bind(&network_handler::ShillErrorCallbackFunction,
+ "ConnectToBestServices Failed",
"", network_handler::ErrorCallback()));
}
@@ -457,11 +461,13 @@ void ShillPropertyHandler::UpdateUninitializedTechnologies(
void ShillPropertyHandler::EnableTechnologyFailed(
const std::string& technology,
const network_handler::ErrorCallback& error_callback,
- const std::string& error_name,
- const std::string& error_message) {
+ const std::string& dbus_error_name,
+ const std::string& dbus_error_message) {
enabling_technologies_.erase(technology);
network_handler::ShillErrorCallbackFunction(
- technology, error_callback, error_name, error_message);
+ "EnableTechnology Failed",
+ technology, error_callback,
+ dbus_error_name, dbus_error_message);
}
void ShillPropertyHandler::GetPropertiesCallback(
diff --git a/chromeos/network/shill_property_handler.h b/chromeos/network/shill_property_handler.h
index bfb8eaa..73ff8fb 100644
--- a/chromeos/network/shill_property_handler.h
+++ b/chromeos/network/shill_property_handler.h
@@ -170,8 +170,8 @@ class CHROMEOS_EXPORT ShillPropertyHandler
void EnableTechnologyFailed(
const std::string& technology,
const network_handler::ErrorCallback& error_callback,
- const std::string& error_name,
- const std::string& error_message);
+ const std::string& dbus_error_name,
+ const std::string& dbus_error_message);
// Called when Shill returns the properties for a service or device.
void GetPropertiesCallback(ManagedState::ManagedType type,