Now to implement this in the interactive authority...
</annotation>
<annotation name="org.gtk.EggDBus.Struct.Member" value="Dict<String,String>:details">
- <annotation name="org.gtk.EggDBus.DocString" value="Details for the result or empty if not authorized. Known key/value-pairs include <literal>polkit.temporary_authorization_id</literal> (if the authorization is temporary, this is set to the opaque temporary authorization id), <literal>polkit.retains_authorization_after_challenge</literal> (Set to a non-empty string if the authorization will be retained after authentication (if is_challenge is TRUE)) and <literal>polkit.localauthority.lockdown</literal> (set to a non-empty string if the action is locked down via pklalockdown(1))."/>
+ <annotation name="org.gtk.EggDBus.DocString" value="Details for the result or empty if not authorized. Known key/value-pairs include <literal>polkit.temporary_authorization_id</literal> (if the authorization is temporary, this is set to the opaque temporary authorization id), <literal>polkit.retains_authorization_after_challenge</literal> (Set to a non-empty string if the authorization will be retained after authentication (if is_challenge is TRUE)) and <literal>polkit.lockdown</literal> (set to a non-empty string if the action is locked down)."/>
</annotation>
</annotation>
</annotation>
<annotation name="org.gtk.EggDBus.Flags.Member" value="Lockdown">
- <annotation name="org.gtk.EggDBus.DocString" value="The authority supports the XXX method."/>
+ <annotation name="org.gtk.EggDBus.DocString" value="The authority supports the org.freedesktop.PolicyKit1.Authority.AddLockdownForAction() and org.freedesktop.PolicyKit1.Authority.RemoveLockdownForAction() methods."/>
</annotation>
</annotation>
<!-- ---------------------------------------------------------------------------------------------------- -->
+ <method name="AddLockdownForAction">
+ <annotation name="org.gtk.EggDBus.DocString" value="Locks down an action so administrator authentication is always needed to obtain a temporary authorization for the action."/>
+ <arg name="action_id" direction="in" type="s">
+ <annotation name="org.gtk.EggDBus.DocString" value="Identifier for the action."/>
+ </arg>
+ </method>
+
+ <method name="RemoveLockdownForAction">
+ <annotation name="org.gtk.EggDBus.DocString" value="Removes the effect of a previous org.freedesktop.PolicyKit1.Authority.AddLockdownForAction() call."/>
+ <arg name="action_id" direction="in" type="s">
+ <annotation name="org.gtk.EggDBus.DocString" value="Identifier for the action."/>
+ </arg>
+ </method>
+
+ <!-- ---------------------------------------------------------------------------------------------------- -->
+
<signal name="Changed">
<annotation name="org.gtk.EggDBus.DocString" value="This signal is emitted when actions and/or authorizations change"/>
</signal>
polkit_authority_revoke_temporary_authorizations_finish
polkit_authority_revoke_temporary_authorization_by_id
polkit_authority_revoke_temporary_authorization_by_id_finish
+polkit_authority_add_lockdown_for_action
+polkit_authority_add_lockdown_for_action_finish
+polkit_authority_remove_lockdown_for_action
+polkit_authority_remove_lockdown_for_action_finish
polkit_authority_check_authorization_sync
polkit_authority_enumerate_actions_sync
polkit_authority_register_authentication_agent_sync
polkit_authority_enumerate_temporary_authorizations_sync
polkit_authority_revoke_temporary_authorizations_sync
polkit_authority_revoke_temporary_authorization_by_id_sync
+polkit_authority_add_lockdown_for_action_sync
+polkit_authority_remove_lockdown_for_action_sync
<SUBSECTION Standard>
PolkitAuthorityClass
POLKIT_AUTHORITY
polkit_backend_authority_system_bus_name_owner_changed
polkit_backend_authority_enumerate_temporary_authorizations
polkit_backend_authority_revoke_temporary_authorizations
+polkit_backend_authority_add_lockdown_for_action
+polkit_backend_authority_add_lockdown_for_action_finish
+polkit_backend_authority_remove_lockdown_for_action
+polkit_backend_authority_remove_lockdown_for_action_finish
polkit_backend_authority_get
polkit_backend_register_authority
<SUBSECTION Standard>
/* ---------------------------------------------------------------------------------------------------- */
+static guint
+polkit_authority_add_lockdown_for_action_async (PolkitAuthority *authority,
+ const gchar *action_id,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ guint call_id;
+ GSimpleAsyncResult *simple;
+
+ simple = g_simple_async_result_new (G_OBJECT (authority),
+ callback,
+ user_data,
+ polkit_authority_add_lockdown_for_action_async);
+
+ call_id = _polkit_authority_add_lockdown_for_action (authority->real,
+ EGG_DBUS_CALL_FLAGS_NONE,
+ action_id,
+ cancellable,
+ generic_async_cb,
+ simple);
+
+ return call_id;
+}
+
+/**
+ * polkit_authority_add_lockdown_for_action:
+ * @authority: A #PolkitAuthority.
+ * @action_id: The identifier for the action.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: The data to pass to @callback.
+ *
+ * Locks down the action identified by @action_id.
+ *
+ * When the operation is finished, @callback will be invoked. You can then
+ * call polkit_authority_add_lockdown_for_action_finish() to get the result of
+ * the operation.
+ */
+void
+polkit_authority_add_lockdown_for_action (PolkitAuthority *authority,
+ const gchar *action_id,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ polkit_authority_add_lockdown_for_action_async (authority, action_id, cancellable, callback, user_data);
+}
+
+/**
+ * polkit_authority_add_lockdown_for_action_finish:
+ * @authority: A #PolkitAuthority.
+ * @res: A #GAsyncResult obtained from the callback.
+ * @error: Return location for error or %NULL.
+ *
+ * Finished locking down an action.
+ *
+ * Returns: %TRUE if the action was locked down, %FALSE if error is set.
+ **/
+gboolean
+polkit_authority_add_lockdown_for_action_finish (PolkitAuthority *authority,
+ GAsyncResult *res,
+ GError **error)
+{
+ GSimpleAsyncResult *simple;
+ GAsyncResult *real_res;
+ gboolean ret;
+
+ simple = G_SIMPLE_ASYNC_RESULT (res);
+ real_res = G_ASYNC_RESULT (g_simple_async_result_get_op_res_gpointer (simple));
+
+ g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == polkit_authority_add_lockdown_for_action_async);
+
+ ret = _polkit_authority_add_lockdown_for_action_finish (authority->real,
+ real_res,
+ error);
+
+ if (!ret)
+ goto out;
+
+ out:
+ g_object_unref (real_res);
+ return ret;
+}
+
+/**
+ * polkit_authority_add_lockdown_for_action_sync:
+ * @authority: A #PolkitAuthority.
+ * @action_id: The identifier for the action.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously locks down an action.
+ *
+ * Returns: %TRUE if the action was locked down, %FALSE if error is set.
+ **/
+gboolean
+polkit_authority_add_lockdown_for_action_sync (PolkitAuthority *authority,
+ const gchar *action_id,
+ GCancellable *cancellable,
+ GError **error)
+{
+ guint call_id;
+ GAsyncResult *res;
+ gboolean result;
+
+ call_id = polkit_authority_add_lockdown_for_action_async (authority, action_id, cancellable, generic_cb, &res);
+
+ egg_dbus_connection_pending_call_block (authority->system_bus, call_id);
+
+ result = polkit_authority_add_lockdown_for_action_finish (authority, res, error);
+
+ g_object_unref (res);
+
+ return result;
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+static guint
+polkit_authority_remove_lockdown_for_action_async (PolkitAuthority *authority,
+ const gchar *action_id,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ guint call_id;
+ GSimpleAsyncResult *simple;
+
+ simple = g_simple_async_result_new (G_OBJECT (authority),
+ callback,
+ user_data,
+ polkit_authority_remove_lockdown_for_action_async);
+
+ call_id = _polkit_authority_remove_lockdown_for_action (authority->real,
+ EGG_DBUS_CALL_FLAGS_NONE,
+ action_id,
+ cancellable,
+ generic_async_cb,
+ simple);
+
+ return call_id;
+}
+
+/**
+ * polkit_authority_remove_lockdown_for_action:
+ * @authority: A #PolkitAuthority.
+ * @action_id: The identifier for the action.
+ * @cancellable: A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: The data to pass to @callback.
+ *
+ * Removes locks down the action identified by @action_id.
+ *
+ * When the operation is finished, @callback will be invoked. You can then
+ * call polkit_authority_remove_lockdown_for_action_finish() to get the result of
+ * the operation.
+ */
+void
+polkit_authority_remove_lockdown_for_action (PolkitAuthority *authority,
+ const gchar *action_id,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ polkit_authority_remove_lockdown_for_action_async (authority, action_id, cancellable, callback, user_data);
+}
+
+/**
+ * polkit_authority_remove_lockdown_for_action_finish:
+ * @authority: A #PolkitAuthority.
+ * @res: A #GAsyncResult obtained from the callback.
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes removing lock down for an action.
+ *
+ * Returns: %TRUE if the action was locked down, %FALSE if error is set.
+ **/
+gboolean
+polkit_authority_remove_lockdown_for_action_finish (PolkitAuthority *authority,
+ GAsyncResult *res,
+ GError **error)
+{
+ GSimpleAsyncResult *simple;
+ GAsyncResult *real_res;
+ gboolean ret;
+
+ simple = G_SIMPLE_ASYNC_RESULT (res);
+ real_res = G_ASYNC_RESULT (g_simple_async_result_get_op_res_gpointer (simple));
+
+ g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == polkit_authority_remove_lockdown_for_action_async);
+
+ ret = _polkit_authority_remove_lockdown_for_action_finish (authority->real,
+ real_res,
+ error);
+
+ if (!ret)
+ goto out;
+
+ out:
+ g_object_unref (real_res);
+ return ret;
+}
+
+/**
+ * polkit_authority_remove_lockdown_for_action_sync:
+ * @authority: A #PolkitAuthority.
+ * @action_id: The identifier for the action.
+ * @cancellable: A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL.
+ *
+ * Synchronously removes lock down for an action.
+ *
+ * Returns: %TRUE if the action was locked down, %FALSE if error is set.
+ **/
+gboolean
+polkit_authority_remove_lockdown_for_action_sync (PolkitAuthority *authority,
+ const gchar *action_id,
+ GCancellable *cancellable,
+ GError **error)
+{
+ guint call_id;
+ GAsyncResult *res;
+ gboolean result;
+
+ call_id = polkit_authority_remove_lockdown_for_action_async (authority, action_id, cancellable, generic_cb, &res);
+
+ egg_dbus_connection_pending_call_block (authority->system_bus, call_id);
+
+ result = polkit_authority_remove_lockdown_for_action_finish (authority, res, error);
+
+ g_object_unref (res);
+
+ return result;
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
/**
* polkit_authority_get_backend_name:
* @authority: A #PolkitAuthority.
GCancellable *cancellable,
GError **error);
+gboolean polkit_authority_add_lockdown_for_action_sync (PolkitAuthority *authority,
+ const gchar *action_id,
+ GCancellable *cancellable,
+ GError **error);
+
+gboolean polkit_authority_remove_lockdown_for_action_sync (PolkitAuthority *authority,
+ const gchar *action_id,
+ GCancellable *cancellable,
+ GError **error);
+
/* ---------------------------------------------------------------------------------------------------- */
void polkit_authority_enumerate_actions (PolkitAuthority *authority,
GAsyncResult *res,
GError **error);
+void polkit_authority_add_lockdown_for_action (PolkitAuthority *authority,
+ const gchar *action_id,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean polkit_authority_add_lockdown_for_action_finish (PolkitAuthority *authority,
+ GAsyncResult *res,
+ GError **error);
+
+void polkit_authority_remove_lockdown_for_action (PolkitAuthority *authority,
+ const gchar *action_id,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean polkit_authority_remove_lockdown_for_action_finish (PolkitAuthority *authority,
+ GAsyncResult *res,
+ GError **error);
+
/* ---------------------------------------------------------------------------------------------------- */
G_END_DECLS
*
* Revokes a temporary authorizations with opaque identifier @id.
*
- * Returns: %TRUE if the operatoin succeeded, %FALSE if @error is set.
+ * Returns: %TRUE if the operation succeeded, %FALSE if @error is set.
**/
gboolean
polkit_backend_authority_revoke_temporary_authorization_by_id (PolkitBackendAuthority *authority,
}
}
+/**
+ * polkit_backend_authority_add_lockdown_for_action:
+ * @authority: A #PolkitBackendAuthority.
+ * @caller: The system bus name that called the method.
+ * @action_id: The action id.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: The data to pass to @callback.
+ *
+ * Asynchronously add locks down for @action_id.
+ *
+ * When the operation is finished, @callback will be invoked. You can
+ * then call polkit_backend_authority_add_lockdown_for_action_finish()
+ * to get the result of the operation.
+ */
+void
+polkit_backend_authority_add_lockdown_for_action (PolkitBackendAuthority *authority,
+ PolkitSubject *caller,
+ const gchar *action_id,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ PolkitBackendAuthorityClass *klass;
+
+ klass = POLKIT_BACKEND_AUTHORITY_GET_CLASS (authority);
+
+ if (klass->add_lockdown_for_action == NULL)
+ {
+ GSimpleAsyncResult *simple;
+
+ simple = g_simple_async_result_new_error (G_OBJECT (authority),
+ callback,
+ user_data,
+ POLKIT_ERROR,
+ POLKIT_ERROR_NOT_SUPPORTED,
+ "Operation not supported");
+ g_simple_async_result_complete (simple);
+ g_object_unref (simple);
+ }
+ else
+ {
+ klass->add_lockdown_for_action (authority, caller, action_id, callback, user_data);
+ }
+}
+
+/**
+ * polkit_backend_authority_add_lockdown_for_action_finish:
+ * @authority: A #PolkitBackendAuthority.
+ * @res: A #GAsyncResult obtained from the callback.
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes adding lock down for an action.
+ *
+ * Returns: %TRUE if the operation succeeded or, %FALE if @error is set.
+ */
+gboolean
+polkit_backend_authority_add_lockdown_for_action_finish (PolkitBackendAuthority *authority,
+ GAsyncResult *res,
+ GError **error)
+{
+ PolkitBackendAuthorityClass *klass;
+
+ klass = POLKIT_BACKEND_AUTHORITY_GET_CLASS (authority);
+
+ if (klass->add_lockdown_for_action_finish == NULL)
+ {
+ g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error);
+ return FALSE;
+ }
+ else
+ {
+ return klass->add_lockdown_for_action_finish (authority, res, error);
+ }
+}
+
+/**
+ * polkit_backend_authority_remove_lockdown_for_action:
+ * @authority: A #PolkitBackendAuthority.
+ * @caller: The system bus name that called the method.
+ * @action_id: The action id.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: The data to pass to @callback.
+ *
+ * Asynchronously remove locks down for @action_id.
+ *
+ * When the operation is finished, @callback will be invoked. You can
+ * then call polkit_backend_authority_remove_lockdown_for_action_finish()
+ * to get the result of the operation.
+ */
+void
+polkit_backend_authority_remove_lockdown_for_action (PolkitBackendAuthority *authority,
+ PolkitSubject *caller,
+ const gchar *action_id,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ PolkitBackendAuthorityClass *klass;
+
+ klass = POLKIT_BACKEND_AUTHORITY_GET_CLASS (authority);
+
+ if (klass->remove_lockdown_for_action == NULL)
+ {
+ GSimpleAsyncResult *simple;
+
+ simple = g_simple_async_result_new_error (G_OBJECT (authority),
+ callback,
+ user_data,
+ POLKIT_ERROR,
+ POLKIT_ERROR_NOT_SUPPORTED,
+ "Operation not supported");
+ g_simple_async_result_complete (simple);
+ g_object_unref (simple);
+ }
+ else
+ {
+ klass->remove_lockdown_for_action (authority, caller, action_id, callback, user_data);
+ }
+}
+
+/**
+ * polkit_backend_authority_remove_lockdown_for_action_finish:
+ * @authority: A #PolkitBackendAuthority.
+ * @res: A #GAsyncResult obtained from the callback.
+ * @error: Return location for error or %NULL.
+ *
+ * Finishes removing lock down for an action.
+ *
+ * Returns: %TRUE if the operation succeeded or, %FALE if @error is set.
+ */
+gboolean
+polkit_backend_authority_remove_lockdown_for_action_finish (PolkitBackendAuthority *authority,
+ GAsyncResult *res,
+ GError **error)
+{
+ PolkitBackendAuthorityClass *klass;
+
+ klass = POLKIT_BACKEND_AUTHORITY_GET_CLASS (authority);
+
+ if (klass->remove_lockdown_for_action_finish == NULL)
+ {
+ g_simple_async_result_propagate_error (G_SIMPLE_ASYNC_RESULT (res), error);
+ return FALSE;
+ }
+ else
+ {
+ return klass->remove_lockdown_for_action_finish (authority, res, error);
+ }
+}
/* ---------------------------------------------------------------------------------------------------- */
/* ---------------------------------------------------------------------------------------------------- */
static void
+add_lockdown_cb (GObject *source_object,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ EggDBusMethodInvocation *method_invocation = EGG_DBUS_METHOD_INVOCATION (user_data);
+ GError *error;
+
+ error = NULL;
+ polkit_backend_authority_add_lockdown_for_action_finish (POLKIT_BACKEND_AUTHORITY (source_object),
+ res,
+ &error);
+
+ if (error != NULL)
+ {
+ egg_dbus_method_invocation_return_gerror (method_invocation, error);
+ g_error_free (error);
+ }
+ else
+ {
+ _polkit_authority_handle_add_lockdown_for_action_finish (method_invocation);
+ }
+}
+
+static void
+authority_handle_add_lockdown_for_action (_PolkitAuthority *instance,
+ const gchar *action_id,
+ EggDBusMethodInvocation *method_invocation)
+{
+ Server *server = SERVER (instance);
+ const gchar *caller_name;
+ PolkitSubject *caller;
+
+ caller_name = egg_dbus_method_invocation_get_caller (method_invocation);
+ caller = polkit_system_bus_name_new (caller_name);
+
+ polkit_backend_authority_add_lockdown_for_action (server->authority,
+ caller,
+ action_id,
+ add_lockdown_cb,
+ method_invocation);
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+static void
+remove_lockdown_cb (GObject *source_object,
+ GAsyncResult *res,
+ gpointer user_data)
+{
+ EggDBusMethodInvocation *method_invocation = EGG_DBUS_METHOD_INVOCATION (user_data);
+ GError *error;
+
+ error = NULL;
+ polkit_backend_authority_remove_lockdown_for_action_finish (POLKIT_BACKEND_AUTHORITY (source_object),
+ res,
+ &error);
+
+ if (error != NULL)
+ {
+ egg_dbus_method_invocation_return_gerror (method_invocation, error);
+ g_error_free (error);
+ }
+ else
+ {
+ _polkit_authority_handle_remove_lockdown_for_action_finish (method_invocation);
+ }
+}
+
+static void
+authority_handle_remove_lockdown_for_action (_PolkitAuthority *instance,
+ const gchar *action_id,
+ EggDBusMethodInvocation *method_invocation)
+{
+ Server *server = SERVER (instance);
+ const gchar *caller_name;
+ PolkitSubject *caller;
+
+ caller_name = egg_dbus_method_invocation_get_caller (method_invocation);
+ caller = polkit_system_bus_name_new (caller_name);
+
+ polkit_backend_authority_remove_lockdown_for_action (server->authority,
+ caller,
+ action_id,
+ remove_lockdown_cb,
+ method_invocation);
+}
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+static void
authority_iface_init (_PolkitAuthorityIface *authority_iface)
{
authority_iface->handle_enumerate_actions = authority_handle_enumerate_actions;
authority_iface->handle_enumerate_temporary_authorizations = authority_handle_enumerate_temporary_authorizations;
authority_iface->handle_revoke_temporary_authorizations = authority_handle_revoke_temporary_authorizations;
authority_iface->handle_revoke_temporary_authorization_by_id = authority_handle_revoke_temporary_authorization_by_id;
+ authority_iface->handle_add_lockdown_for_action = authority_handle_add_lockdown_for_action;
+ authority_iface->handle_remove_lockdown_for_action = authority_handle_remove_lockdown_for_action;
}
static void
* authorization identified by id or %NULL if the backend doesn't support
* the operation. See polkit_backend_authority_revoke_temporary_authorization_by_id()
* for details.
- * @system_bus_name_owner_changed: temporary VFunc, to be removed before 1.0.
+ * @add_lockdown_for_action: Called to add lock down for an action. See polkit_backend_authority_add_lockdown_for_action() for details. Can be %NULL if not supported by the backend.
+ * @add_lockdown_for_action_finish: Called to finish adding lock down for an an action. See polkit_backend_authority_add_lockdown_for_action_finish() for details. Can be %NULL if not supported by the backend.
+ * @remove_lockdown_for_action: Called when removing lock down for an action. See polkit_backend_authority_remove_lockdown_for_action() for details. Can be %NULL if not supported by the backend.
+ * @remove_lockdown_for_action_finish: Called to finish removing lock down for an action. See polkit_backend_authority_remove_lockdown_for_action_finish() for details. Can be %NULL if not supported by the backend.
+ * @system_bus_name_owner_changed: temporary VFunc, to be removed before API is declared stable.
*
* VFuncs that authority backends need to implement.
*/
const gchar *id,
GError **error);
+ void (*add_lockdown_for_action) (PolkitBackendAuthority *authority,
+ PolkitSubject *caller,
+ const gchar *action_id,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+ gboolean (*add_lockdown_for_action_finish) (PolkitBackendAuthority *authority,
+ GAsyncResult *res,
+ GError **error);
+
+ void (*remove_lockdown_for_action) (PolkitBackendAuthority *authority,
+ PolkitSubject *caller,
+ const gchar *action_id,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+ gboolean (*remove_lockdown_for_action_finish) (PolkitBackendAuthority *authority,
+ GAsyncResult *res,
+ GError **error);
+
/* TODO: need something more efficient such that we don't watch all name changes */
void (*system_bus_name_owner_changed) (PolkitBackendAuthority *authority,
const gchar *name,
const gchar *id,
GError **error);
+void polkit_backend_authority_add_lockdown_for_action (PolkitBackendAuthority *authority,
+ PolkitSubject *caller,
+ const gchar *action_id,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean polkit_backend_authority_add_lockdown_for_action_finish (PolkitBackendAuthority *authority,
+ GAsyncResult *res,
+ GError **error);
+
+void polkit_backend_authority_remove_lockdown_for_action (PolkitBackendAuthority *authority,
+ PolkitSubject *caller,
+ const gchar *action_id,
+ GAsyncReadyCallback callback,
+ gpointer user_data);
+
+gboolean polkit_backend_authority_remove_lockdown_for_action_finish (PolkitBackendAuthority *authority,
+ GAsyncResult *res,
+ GError **error);
+
/* --- */
PolkitBackendAuthority *polkit_backend_authority_get (void);