diff --git a/libpurple/action.h b/libpurple/action.h
deleted file mode 100644
--- a/libpurple/action.h
+++ /dev/null
@@ -1,272 +0,0 @@
-/*
- * Purple - Internet Messaging Library
- * Copyright (C) Pidgin Developers <devel@pidgin.im>
- *
- * Purple is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This library is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This library is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this library; if not, see <https://www.gnu.org/licenses/>.
- */
-
-#if !defined(PURPLE_GLOBAL_HEADER_INSIDE) && !defined(PURPLE_COMPILATION)
-# error "only <purple.h> may be included directly"
-#endif
-
-#ifndef PURPLE_ACTION_H
-#define PURPLE_ACTION_H
-
-#include <glib.h>
-#include <glib-object.h>
-
-#include "purpleversion.h"
-
-#define PURPLE_TYPE_PROTOCOL_ACTION (purple_protocol_action_get_type())
-
-PURPLE_AVAILABLE_TYPE_IN_3_0
-typedef struct _PurpleProtocolAction PurpleProtocolAction;
-
-/**
- * PurpleProtocolActionCallback:
- * @action: The action that was activated.
- *
- * The callback function for [type@ProtocolAction].
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_TYPE_IN_3_0
-typedef void (*PurpleProtocolActionCallback)(PurpleProtocolAction *action);
-
-/**
- * PurpleActionMenu:
- *
- * A generic structure that contains information about an "action".  One
- * place this is used is by protocols to tell the core the list of available
- * right-click actions for a buddy list row.
- */
-PURPLE_AVAILABLE_TYPE_IN_3_0
-typedef struct _PurpleActionMenu PurpleActionMenu;
-
-#include "connection.h"
-
-/**
- * PurpleProtocolAction:
- * @label: A translated string to be shown in a user interface.
- * @callback: The function to call when the user wants to perform this action.
- * @connection: The connection that this action should be performed against.
- * @user_data: User data to pass to @callback.
- *
- * Represents an action that the protocol can perform. This shows up in the
- * Accounts menu, under a submenu with the name of the account.
- */
-struct _PurpleProtocolAction {
-	gchar *label;
-	PurpleProtocolActionCallback callback;
-	PurpleConnection *connection;
-	gpointer user_data;
-};
-
-G_BEGIN_DECLS
-
-/******************************************************************************
- * Menu Action API
- *****************************************************************************/
-
-/**
- * purple_action_menu_new:
- * @label:    The text label to display for this action.
- * @callback: (scope notified): The function to be called when the action is used on
- *                 the selected item.
- * @data:     Additional data to be passed to the callback.
- * @children: (element-type PurpleActionMenu) (transfer full): Menu actions to
- *            be added as a submenu of this action.
- *
- * Creates a new PurpleActionMenu.
- *
- * Returns: (transfer full): The PurpleActionMenu.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-PurpleActionMenu *purple_action_menu_new(const gchar *label, GCallback callback, gpointer data, GList *children);
-
-/**
- * purple_action_menu_free:
- * @act: The PurpleActionMenu to free.
- *
- * Frees a PurpleActionMenu
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-void purple_action_menu_free(PurpleActionMenu *act);
-
-/**
- * purple_action_menu_get_label:
- * @act:	The PurpleActionMenu.
- *
- * Returns the label of the PurpleActionMenu.
- *
- * Returns: The label string.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-const gchar *purple_action_menu_get_label(const PurpleActionMenu *act);
-
-/**
- * purple_action_menu_get_callback:
- * @act:	The PurpleActionMenu.
- *
- * Returns the callback of the PurpleActionMenu.
- *
- * Returns: (transfer none): The callback function.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-GCallback purple_action_menu_get_callback(const PurpleActionMenu *act);
-
-/**
- * purple_action_menu_get_data:
- * @act:	The PurpleActionMenu.
- *
- * Returns the data stored in the PurpleActionMenu.
- *
- * Returns: The data.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-gpointer purple_action_menu_get_data(const PurpleActionMenu *act);
-
-/**
- * purple_action_menu_get_children:
- * @act:	The PurpleActionMenu.
- *
- * Returns the children of the PurpleActionMenu.
- *
- * Returns: (element-type PurpleActionMenu) (transfer none): The menu children.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-GList* purple_action_menu_get_children(const PurpleActionMenu *act);
-
-/**
- * purple_action_menu_set_label:
- * @act:   The menu action.
- * @label: The label for the menu action.
- *
- * Set the label to the PurpleActionMenu.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-void purple_action_menu_set_label(PurpleActionMenu *act, const gchar *label);
-
-/**
- * purple_action_menu_set_callback:
- * @act:        The menu action.
- * @callback: (scope notified):  The callback.
- *
- * Set the callback that will be used by the PurpleActionMenu.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-void purple_action_menu_set_callback(PurpleActionMenu *act, GCallback callback);
-
-/**
- * purple_action_menu_set_data:
- * @act:   The menu action.
- * @data:  The data used by this PurpleActionMenu
- *
- * Set the label to the PurpleActionMenu.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-void purple_action_menu_set_data(PurpleActionMenu *act, gpointer data);
-
-/**
- * purple_action_menu_set_children:
- * @act:       The menu action.
- * @children: (element-type PurpleActionMenu) (transfer full): The menu children
- *
- * Set the children of the PurpleActionMenu.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-void purple_action_menu_set_children(PurpleActionMenu *act, GList *children);
-
-/******************************************************************************
- * Protocol Action API
- *****************************************************************************/
-
-/**
- * purple_protocol_action_get_type:
- *
- * Returns: The #GType for the #PurpleProtocolAction boxed structure.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-GType purple_protocol_action_get_type(void);
-
-/**
- * purple_protocol_action_new:
- * @label:    The description of the action to show to the user.
- * @callback: (scope call): The callback to call when the user selects this
- *            action.
- *
- * Allocates and returns a new PurpleProtocolAction. Use this to add actions in
- * a list in the get_actions function of the protocol.
- *
- * Returns: (transfer full): The new #PurpleProtocolAction.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-PurpleProtocolAction *purple_protocol_action_new(const gchar *label, PurpleProtocolActionCallback callback);
-
-/**
- * purple_protocol_action_copy:
- * @action: The #PurpleProtocolAction to copy.
- *
- * Creates a newly allocated copy of @action.
- *
- * Returns: (transfer full): A copy of @action.
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-PurpleProtocolAction *purple_protocol_action_copy(PurpleProtocolAction *action);
-
-/**
- * purple_protocol_action_free:
- * @action: The PurpleProtocolAction to free.
- *
- * Frees a PurpleProtocolAction
- *
- * Since: 3.0
- */
-PURPLE_AVAILABLE_IN_3_0
-void purple_protocol_action_free(PurpleProtocolAction *action);
-
-
-G_END_DECLS
-
-#endif /* PURPLE_ACTION_H */
# HG changeset patch
# Node ID ad4f9c998497
# Parent  ccb1d93c9df1
diff --git a/libpurple/action.c b/libpurple/action.c
deleted file mode 100644
--- a/libpurple/action.c
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Purple - Internet Messaging Library
- * Copyright (C) Pidgin Developers <devel@pidgin.im>
- *
- * Purple is the legal property of its developers, whose names are too numerous
- * to list here. Please refer to the COPYRIGHT file distributed with this
- * source distribution.
- *
- * This library is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the Free
- * Software Foundation; either version 2 of the License, or (at your option)
- * any later version.
- *
- * This library is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this library; if not, see <https://www.gnu.org/licenses/>.
- */
-
-#include "action.h"
-
-struct _PurpleActionMenu {
-	gchar *label;
-	GCallback callback;
-	gpointer data;
-	GList *children;
-};
-
-/******************************************************************************
- * ActionMenu API
- *****************************************************************************/
-PurpleActionMenu *
-purple_action_menu_new(const gchar *label, GCallback callback, gpointer data,
-                       GList *children)
-{
-	PurpleActionMenu *act = g_new(PurpleActionMenu, 1);
-
-	act->label = g_strdup(label);
-	act->callback = callback;
-	act->data = data;
-	act->children = children;
-
-	return act;
-}
-
-void
-purple_action_menu_free(PurpleActionMenu *act) {
-	g_return_if_fail(act != NULL);
-
-	purple_action_menu_set_children(act, NULL);
-
-	g_free(act->label);
-	g_free(act);
-}
-
-const gchar *
-purple_action_menu_get_label(const PurpleActionMenu *act) {
-	g_return_val_if_fail(act != NULL, NULL);
-
-	return act->label;
-}
-
-GCallback
-purple_action_menu_get_callback(const PurpleActionMenu *act) {
-	g_return_val_if_fail(act != NULL, NULL);
-
-	return act->callback;
-}
-
-gpointer
-purple_action_menu_get_data(const PurpleActionMenu *act) {
-	g_return_val_if_fail(act != NULL, NULL);
-
-	return act->data;
-}
-
-GList *
-purple_action_menu_get_children(const PurpleActionMenu *act) {
-	g_return_val_if_fail(act != NULL, NULL);
-
-	return act->children;
-}
-
-void
-purple_action_menu_set_label(PurpleActionMenu *act, const gchar *label) {
-	g_return_if_fail(act != NULL);
-
-	g_free(act->label);
-
-	act->label = g_strdup(label);
-}
-
-void
-purple_action_menu_set_callback(PurpleActionMenu *act, GCallback callback) {
-	g_return_if_fail(act != NULL);
-
-	act->callback = callback;
-}
-
-void
-purple_action_menu_set_data(PurpleActionMenu *act, gpointer data) {
-	g_return_if_fail(act != NULL);
-
-	act->data = data;
-}
-
-void
-purple_action_menu_set_children(PurpleActionMenu *act, GList *children) {
-	g_return_if_fail(act != NULL);
-
-	g_list_free_full(act->children, (GDestroyNotify)purple_action_menu_free);
-
-	act->children = children;
-}
-
-/******************************************************************************
- * Protocol Action API
- *****************************************************************************/
-PurpleProtocolAction *
-purple_protocol_action_new(const gchar* label, PurpleProtocolActionCallback callback) {
-	PurpleProtocolAction *action;
-
-	g_return_val_if_fail(label != NULL, NULL);
-	g_return_val_if_fail(callback != NULL, NULL);
-
-	action = g_new0(PurpleProtocolAction, 1);
-
-	action->label    = g_strdup(label);
-	action->callback = callback;
-
-	return action;
-}
-
-void
-purple_protocol_action_free(PurpleProtocolAction *action) {
-	g_return_if_fail(action != NULL);
-
-	g_free(action->label);
-	g_free(action);
-}
-
-PurpleProtocolAction *
-purple_protocol_action_copy(PurpleProtocolAction *action) {
-	g_return_val_if_fail(action != NULL, NULL);
-
-	return purple_protocol_action_new(action->label, action->callback);
-}
-
-G_DEFINE_BOXED_TYPE(
-	PurpleProtocolAction,
-	purple_protocol_action,
-	purple_protocol_action_copy,
-	purple_protocol_action_free
-);
diff --git a/libpurple/meson.build b/libpurple/meson.build
--- a/libpurple/meson.build
+++ b/libpurple/meson.build
@@ -1,6 +1,5 @@
 purple_coresources = [
 	'accounts.c',
-	'action.c',
 	'circularbuffer.c',
 	'connection.c',
 	'core.c',
@@ -98,7 +97,6 @@
 
 purple_coreheaders = [
 	'accounts.h',
-	'action.h',
 	'circularbuffer.h',
 	'connection.h',
 	'core.h',
diff --git a/libpurple/tests/meson.build b/libpurple/tests/meson.build
--- a/libpurple/tests/meson.build
+++ b/libpurple/tests/meson.build
@@ -30,7 +30,6 @@
     'presence',
     'presence_manager',
     'protocol',
-    'protocol_action',
     'protocol_contacts',
     'protocol_conversation',
     'protocol_file_transfer',
diff --git a/libpurple/tests/test_protocol_action.c b/libpurple/tests/test_protocol_action.c
deleted file mode 100644
--- a/libpurple/tests/test_protocol_action.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Purple
- *
- * Purple is the legal property of its developers, whose names are too
- * numerous to list here. Please refer to the COPYRIGHT file distributed
- * with this source distribution
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or (at
- * your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- */
-
-#include <glib.h>
-
-#include <purple.h>
-
-/******************************************************************************
- * Helpers
- *****************************************************************************/
-static void
-_test_purple_protocol_action_callback(G_GNUC_UNUSED PurpleProtocolAction *action) {
-}
-
-/******************************************************************************
- * Tests
- *****************************************************************************/
-static void
-test_purple_protocol_action_new(void) {
-	PurpleProtocolAction *action = NULL;
-
-	action = purple_protocol_action_new(
-		"label",
-		_test_purple_protocol_action_callback
-	);
-	g_assert_nonnull(action);
-
-	g_assert_cmpstr(action->label, ==, "label");
-	g_assert(action->callback == _test_purple_protocol_action_callback);
-
-	purple_protocol_action_free(action);
-}
-
-static void
-test_purple_protocol_action_copy(void) {
-	PurpleProtocolAction *orig = NULL, *copy = NULL;
-
-	orig = purple_protocol_action_new(
-		"label",
-		_test_purple_protocol_action_callback
-	);
-	g_assert_nonnull(orig);
-
-	copy = purple_protocol_action_copy(orig);
-	purple_protocol_action_free(orig);
-
-	g_assert_cmpstr(copy->label, ==, "label");
-	g_assert(copy->callback == _test_purple_protocol_action_callback);
-
-	purple_protocol_action_free(copy);
-}
-
-/******************************************************************************
- * Main
- *****************************************************************************/
-gint
-main(gint argc, gchar **argv) {
-	gint res = 0;
-
-	g_test_init(&argc, &argv, NULL);
-
-	g_test_set_nonfatal_assertions();
-
-	g_test_add_func(
-		"/protocol-action/new",
-		test_purple_protocol_action_new
-	);
-
-	g_test_add_func(
-		"/protocol-action/copy",
-		test_purple_protocol_action_copy
-	);
-
-	res = g_test_run();
-
-	return res;
-}
diff --git a/po/POTFILES.in b/po/POTFILES.in
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,5 +1,4 @@
 libpurple/accounts.c
-libpurple/action.c
 libpurple/circularbuffer.c
 libpurple/connection.c
 libpurple/core.c
@@ -89,7 +88,6 @@
 libpurple/tests/test_image.c
 libpurple/tests/test_keyvaluepair.c
 libpurple/tests/test_markup.c
-libpurple/tests/test_protocol_action.c
 libpurple/tests/test_purplepath.c
 libpurple/tests/test_ui.c
 libpurple/tests/test_util.c
