libnm-core, settings: move NMAgentManagerError to nm-errors

Move the definition of NMAgentManagerError to nm-errors, register it
with D-Bus, and verify in the tests that it maps correctly.
This commit is contained in:
Dan Winship 2014-10-15 15:27:25 -04:00
parent d13bfe3cf8
commit 86331d9ef4
7 changed files with 47 additions and 45 deletions

View file

@ -26,6 +26,7 @@
#include "nm-dbus-interface.h"
#include "nm-core-internal.h"
G_DEFINE_QUARK (nm-agent-manager-error-quark, nm_agent_manager_error)
G_DEFINE_QUARK (nm-connection-error-quark, nm_connection_error)
G_DEFINE_QUARK (nm-crypto-error-quark, nm_crypto_error)
G_DEFINE_QUARK (nm-device-error-quark, nm_device_error)
@ -57,6 +58,9 @@ register_error_domain (GQuark domain,
void
_nm_dbus_errors_init (void)
{
register_error_domain (NM_AGENT_MANAGER_ERROR,
NM_DBUS_INTERFACE_AGENT_MANAGER,
NM_TYPE_AGENT_MANAGER_ERROR);
register_error_domain (NM_CONNECTION_ERROR,
NM_DBUS_INTERFACE_SETTINGS_CONNECTION,
NM_TYPE_CONNECTION_ERROR);

View file

@ -20,6 +20,38 @@
#ifndef __NM_ERRORS_H__
#define __NM_ERRORS_H__
/**
* NMAgentManagerError:
* @NM_AGENT_MANAGER_ERROR_FAILED: unknown or unspecified error
* @NM_AGENT_MANAGER_ERROR_PERMISSION_DENIED: The caller does not have permission
* to register a secret agent, or is trying to register the same secret agent
* twice.
* @NM_AGENT_MANAGER_ERROR_INVALID_IDENTIFIER: The identifier is not a valid
* secret agent identifier.
* @NM_AGENT_MANAGER_ERROR_NOT_REGISTERED: The caller tried to unregister an agent
* that was not registered.
* @NM_AGENT_MANAGER_ERROR_NO_SECRETS: No secret agent returned secrets for this
* request
* @NM_AGENT_MANAGER_ERROR_USER_CANCELED: The user canceled the secrets request.
*
* Errors returned from the secret-agent manager.
*
* These errors may be returned from operations that could cause secrets to be
* requested (such as nm_client_activate_connection()), and correspond to D-Bus
* errors in the "org.freedesktop.NetworkManager.AgentManager" namespace.
*/
typedef enum {
NM_AGENT_MANAGER_ERROR_FAILED = 0, /*< nick=Failed >*/
NM_AGENT_MANAGER_ERROR_PERMISSION_DENIED, /*< nick=PermissionDenied >*/
NM_AGENT_MANAGER_ERROR_INVALID_IDENTIFIER, /*< nick=InvalidIdentifier >*/
NM_AGENT_MANAGER_ERROR_NOT_REGISTERED, /*< nick=NotRegistered >*/
NM_AGENT_MANAGER_ERROR_NO_SECRETS, /*< nick=NoSecrets >*/
NM_AGENT_MANAGER_ERROR_USER_CANCELED, /*< nick=UserCanceled >*/
} NMAgentManagerError;
GQuark nm_agent_manager_error_quark (void);
#define NM_AGENT_MANAGER_ERROR (nm_agent_manager_error_quark ())
/**
* NMConnectionError:
* @NM_CONNECTION_ERROR_FAILED: unknown or unclassified error

View file

@ -32,6 +32,8 @@ global:
nm_active_connection_get_uuid;
nm_active_connection_get_vpn;
nm_active_connection_state_get_type;
nm_agent_manager_error_get_type;
nm_agent_manager_error_quark;
nm_bluetooth_capabilities_get_type;
nm_client_activate_connection_async;
nm_client_activate_connection_finish;

View file

@ -354,10 +354,7 @@ connection_activated_none_cb (GObject *c,
GError *error = NULL;
ac = nm_client_activate_connection_finish (sadata->client, result, &error);
g_assert (error != NULL);
g_dbus_error_strip_remote_error (error);
g_assert_cmpstr (error->message, ==, "No secret agent available");
g_assert_error (error, NM_AGENT_MANAGER_ERROR, NM_AGENT_MANAGER_ERROR_NO_SECRETS);
g_main_loop_quit (sadata->loop);
}
@ -403,11 +400,7 @@ connection_activated_no_secrets_cb (GObject *c,
GError *error = NULL;
ac = nm_client_activate_connection_finish (sadata->client, result, &error);
g_assert (error != NULL);
g_dbus_error_strip_remote_error (error);
g_assert_cmpstr (error->message, ==, "No secrets provided");
g_assert_error (error, NM_AGENT_MANAGER_ERROR, NM_AGENT_MANAGER_ERROR_NO_SECRETS);
g_main_loop_quit (sadata->loop);
}
@ -442,11 +435,7 @@ connection_activated_cancel_cb (GObject *c,
GError *error = NULL;
ac = nm_client_activate_connection_finish (sadata->client, result, &error);
g_assert (error != NULL);
g_dbus_error_strip_remote_error (error);
g_assert_cmpstr (error->message, ==, "User canceled");
g_assert_error (error, NM_AGENT_MANAGER_ERROR, NM_AGENT_MANAGER_ERROR_USER_CANCELED);
g_main_loop_quit (sadata->loop);
}

View file

@ -276,7 +276,7 @@ endif
GLIB_GENERATED = nm-enum-types.h nm-enum-types.c
GLIB_MKENUMS_H_FLAGS = --identifier-prefix NM
GLIB_MKENUMS_H_FLAGS = --identifier-prefix NM --fhead '\#include <nm-core-enum-types.h>\n'
GLIB_MKENUMS_C_FLAGS = --identifier-prefix NM
nm_enum_types_sources = $(nm_sources)

View file

@ -94,20 +94,6 @@ static void impl_agent_manager_unregister (NMAgentManager *self,
#include "nm-agent-manager-glue.h"
/********************************************************************/
#define NM_AGENT_MANAGER_ERROR (nm_agent_manager_error_quark ())
static GQuark
nm_agent_manager_error_quark (void)
{
static GQuark ret = 0;
if (G_UNLIKELY (ret == 0))
ret = g_quark_from_static_string ("nm-agent-manager-error");
return ret;
}
/*************************************************************/
static gboolean
@ -293,7 +279,7 @@ impl_agent_manager_register_with_capabilities (NMAgentManager *self,
subject = nm_auth_subject_new_unix_process_from_context (context);
if (!subject) {
error = g_error_new_literal (NM_AGENT_MANAGER_ERROR,
NM_AGENT_MANAGER_ERROR_SENDER_UNKNOWN,
NM_AGENT_MANAGER_ERROR_PERMISSION_DENIED,
"Unable to determine request sender and UID.");
goto done;
}
@ -305,7 +291,7 @@ impl_agent_manager_register_with_capabilities (NMAgentManager *self,
NULL,
&local)) {
error = g_error_new_literal (NM_AGENT_MANAGER_ERROR,
NM_AGENT_MANAGER_ERROR_SESSION_NOT_FOUND,
NM_AGENT_MANAGER_ERROR_PERMISSION_DENIED,
local && local->message ? local->message : "Session not found");
goto done;
}
@ -326,7 +312,7 @@ impl_agent_manager_register_with_capabilities (NMAgentManager *self,
agent = nm_secret_agent_new (context, subject, identifier, capabilities);
if (!agent) {
error = g_error_new_literal (NM_AGENT_MANAGER_ERROR,
NM_AGENT_MANAGER_ERROR_INTERNAL_ERROR,
NM_AGENT_MANAGER_ERROR_FAILED,
"Failed to initialize the agent");
goto done;
}
@ -344,7 +330,7 @@ impl_agent_manager_register_with_capabilities (NMAgentManager *self,
priv->chains = g_slist_append (priv->chains, chain);
} else {
error = g_error_new_literal (NM_AGENT_MANAGER_ERROR,
NM_AGENT_MANAGER_ERROR_SENDER_UNKNOWN,
NM_AGENT_MANAGER_ERROR_FAILED,
"Unable to start agent authentication.");
}
@ -378,7 +364,7 @@ impl_agent_manager_unregister (NMAgentManager *self,
NULL,
NULL)) {
error = g_error_new_literal (NM_AGENT_MANAGER_ERROR,
NM_AGENT_MANAGER_ERROR_SENDER_UNKNOWN,
NM_AGENT_MANAGER_ERROR_PERMISSION_DENIED,
"Unable to determine request sender.");
goto done;
}

View file

@ -34,17 +34,6 @@
#define NM_IS_AGENT_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), NM_TYPE_AGENT_MANAGER))
#define NM_AGENT_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_AGENT_MANAGER, NMAgentManagerClass))
typedef enum {
NM_AGENT_MANAGER_ERROR_SENDER_UNKNOWN = 0, /*< nick=SenderUnknown >*/
NM_AGENT_MANAGER_ERROR_PERMISSION_DENIED, /*< nick=PermissionDenied >*/
NM_AGENT_MANAGER_ERROR_SESSION_NOT_FOUND, /*< nick=SessionNotFound >*/
NM_AGENT_MANAGER_ERROR_INVALID_IDENTIFIER, /*< nick=InvalidIdentifier >*/
NM_AGENT_MANAGER_ERROR_NOT_REGISTERED, /*< nick=NotRegistered >*/
NM_AGENT_MANAGER_ERROR_INTERNAL_ERROR, /*< nick=InternalError >*/
NM_AGENT_MANAGER_ERROR_NO_SECRETS, /*< nick=NoSecrets >*/
NM_AGENT_MANAGER_ERROR_USER_CANCELED /*< nick=UserCanceled >*/
} NMAgentManagerError;
struct _NMAgentManager {
GObject parent;
};