Copyright © 2009-2010 Collabora Ltd. Copyright © 2009 Nokia Corporation

This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 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 Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

An interface for connections where contacts can be blocked from communicating with this user and receiving this user's presence.

When this interface becomes stable, it will replace the ContactList channel with TargetHandleType Handle_Type_List and TargetID 'deny'.

Direct the server to block some contacts. The precise effect is protocol-dependent, but SHOULD include ignoring all current and subsequent communications from the given contacts, avoiding sending presence to them in future, and if they were already receiving the local user's presence, behaving as if the local user went offline.

FIXME: do we need to allow this on protocols where it won't persist, or where we can't edit the block lists?

Some contacts to block.

In addition to blocking, report these contacts as abusive to the server administrators.

Clients can determine whether this capability is available by checking the ContactBlockingCapabilities property. If the capability is not present and this argument is true, the error NotCapable SHOULD be raised.

Some protocol libraries, in their conformance requirements, require the ability to report blocked contacts as abusive.

Reverse the effects of a previous call to BlockContacts.

Some contacts to unblock.

List the contacts that are blocked.

Clients SHOULD allow a relatively long timeout for calls to this method, since on some protocols contact blocking is part of the contact list, which can take a significant time to retrieve.

The list of blocked contacts.

Emitted when the list of blocked contacts is first retrieved (before returning from any pending calls to RequestBlockedContacts), and whenever the list of blocked contacts subsequently changes.

Contacts added to the result of RequestBlockedContacts. Contacts removed from the result of RequestBlockedContacts.

True if the contact would be in the result of RequestBlockedContacts; False or omitted if the contact is not blocked, or if it is unknown whether the contact is blocked.

Additional capabilities for contact blocking (i.e. whether we can report abusive contacts).

Note: there is no capability for supporting blocking itself, the presence of this interface indicates that contact blocking is supported.

This protocol is capable of reporting abusive contacts to the server administrators.