diff options
-rw-r--r-- | chrome/browser/chromeos/net/proxy_config_handler.cc | 22 | ||||
-rw-r--r-- | chromeos/network/network_configuration_handler.cc | 32 | ||||
-rw-r--r-- | chromeos/network/network_connection_handler.cc | 25 | ||||
-rw-r--r-- | chromeos/network/network_connection_handler.h | 6 | ||||
-rw-r--r-- | chromeos/network/network_device_handler.cc | 47 | ||||
-rw-r--r-- | chromeos/network/network_handler_callbacks.cc | 47 | ||||
-rw-r--r-- | chromeos/network/network_handler_callbacks.h | 23 | ||||
-rw-r--r-- | chromeos/network/shill_property_handler.cc | 12 | ||||
-rw-r--r-- | chromeos/network/shill_property_handler.h | 4 |
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, |