Blame egg/mock-interaction.c

Packit b00eeb
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
Packit b00eeb
/* mock-interaction.c
Packit b00eeb
Packit b00eeb
   Copyright (C) 2011 Collabora Ltd
Packit b00eeb
Packit b00eeb
   The Gnome Keyring Library is free software; you can redistribute it and/or
Packit b00eeb
   modify it under the terms of the GNU Library General Public License as
Packit b00eeb
   published by the Free Software Foundation; either version 2 of the
Packit b00eeb
   License, or (at your option) any later version.
Packit b00eeb
Packit b00eeb
   The Gnome Keyring Library is distributed in the hope that it will be useful,
Packit b00eeb
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit b00eeb
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit b00eeb
   Library General Public License for more details.
Packit b00eeb
Packit b00eeb
   You should have received a copy of the GNU Library General Public
Packit b00eeb
   License along with the Gnome Library; see the file COPYING.LIB.  If not,
Packit b00eeb
   see <http://www.gnu.org/licenses/>.
Packit b00eeb
Packit b00eeb
   Author: Stef Walter <stefw@collabora.co.uk>
Packit b00eeb
*/
Packit b00eeb
Packit b00eeb
#include "config.h"
Packit b00eeb
Packit b00eeb
#include "mock-interaction.h"
Packit b00eeb
Packit b00eeb
#define MOCK_INTERACTION_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), MOCK_TYPE_INTERACTION, MockInteraction))
Packit b00eeb
#define MOCK_IS_INTERACTION_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), MOCK_TYPE_INTERACTION))
Packit b00eeb
#define MOCK_INTERACTION_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), MOCK_TYPE_INTERACTION, MockInteractionClass))
Packit b00eeb
Packit b00eeb
typedef struct _MockInteractionClass MockInteractionClass;
Packit b00eeb
Packit b00eeb
struct _MockInteraction {
Packit b00eeb
	GTlsInteraction interaction;
Packit b00eeb
	gchar *password;
Packit b00eeb
};
Packit b00eeb
Packit b00eeb
struct _MockInteractionClass {
Packit b00eeb
	GTlsInteractionClass parent;
Packit b00eeb
};
Packit b00eeb
Packit b00eeb
G_DEFINE_TYPE (MockInteraction, mock_interaction, G_TYPE_TLS_INTERACTION);
Packit b00eeb
Packit b00eeb
static void
Packit b00eeb
mock_interaction_init (MockInteraction *self)
Packit b00eeb
{
Packit b00eeb
Packit b00eeb
}
Packit b00eeb
Packit b00eeb
static void
Packit b00eeb
mock_interaction_finalize (GObject *obj)
Packit b00eeb
{
Packit b00eeb
	MockInteraction *self = MOCK_INTERACTION (obj);
Packit b00eeb
Packit b00eeb
	g_free (self->password);
Packit b00eeb
Packit b00eeb
	G_OBJECT_CLASS (mock_interaction_parent_class)->dispose (obj);
Packit b00eeb
}
Packit b00eeb
Packit b00eeb
static GTlsInteractionResult
Packit b00eeb
mock_interaction_ask_password (GTlsInteraction *interaction,
Packit b00eeb
                               GTlsPassword *password,
Packit b00eeb
                               GCancellable *cancellable,
Packit b00eeb
                               GError **error)
Packit b00eeb
{
Packit b00eeb
	MockInteraction *self = MOCK_INTERACTION (interaction);
Packit b00eeb
Packit b00eeb
	if (self->password) {
Packit b00eeb
		g_tls_password_set_value (password, (const guchar *)self->password, -1);
Packit b00eeb
		return G_TLS_INTERACTION_HANDLED;
Packit b00eeb
	} else {
Packit b00eeb
		return G_TLS_INTERACTION_UNHANDLED;
Packit b00eeb
	}
Packit b00eeb
}
Packit b00eeb
Packit b00eeb
static void
Packit b00eeb
mock_interaction_class_init (MockInteractionClass *klass)
Packit b00eeb
{
Packit b00eeb
	GObjectClass *object_class = G_OBJECT_CLASS (klass);
Packit b00eeb
	GTlsInteractionClass *interaction_class = G_TLS_INTERACTION_CLASS (klass);
Packit b00eeb
Packit b00eeb
	object_class->finalize = mock_interaction_finalize;
Packit b00eeb
Packit b00eeb
	interaction_class->ask_password = mock_interaction_ask_password;
Packit b00eeb
}
Packit b00eeb
Packit b00eeb
GTlsInteraction *
Packit b00eeb
mock_interaction_new (const gchar *password)
Packit b00eeb
{
Packit b00eeb
	MockInteraction *result;
Packit b00eeb
Packit b00eeb
	result = g_object_new (MOCK_TYPE_INTERACTION, NULL);
Packit b00eeb
	result->password = g_strdup (password);
Packit b00eeb
Packit b00eeb
	return G_TLS_INTERACTION (result);
Packit b00eeb
}