diff options
Diffstat (limited to 'spec/Connection_Interface_Contact_List.xml')
-rw-r--r-- | spec/Connection_Interface_Contact_List.xml | 433 |
1 files changed, 293 insertions, 140 deletions
diff --git a/spec/Connection_Interface_Contact_List.xml b/spec/Connection_Interface_Contact_List.xml index 9db86aa2c..3366b57e2 100644 --- a/spec/Connection_Interface_Contact_List.xml +++ b/spec/Connection_Interface_Contact_List.xml @@ -18,10 +18,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</p> </tp:license> - <interface name="org.freedesktop.Telepathy.Connection.Interface.ContactList.DRAFT2" + <interface name="org.freedesktop.Telepathy.Connection.Interface.ContactList.DRAFT3" tp:causes-havoc="experimental"> <tp:requires interface="org.freedesktop.Telepathy.Connection"/> - <tp:added version="0.19.8">(draft 2)</tp:added> + <tp:added version="0.19.12">(draft 3)</tp:added> <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>An interface for connections that have any concept of a list of @@ -46,87 +46,119 @@ </tp:rationale> <p>The list of contacts is not exposed as a D-Bus property; it can be - fetched using <tp:member-ref>RequestContactList</tp:member-ref>. + fetched using <tp:member-ref>GetContactListAttributes</tp:member-ref>. </p> <tp:rationale> <p>In some protocols, such as XMPP, the contact list may not be available immediately. The - <tp:member-ref>RequestContactList</tp:member-ref> method - will wait until the contact list is available before returning. + <tp:member-ref>GetContactListAttributes</tp:member-ref> method + will fail until the contact list is available. Using a method also allows extra attributes to be retrieved at the same time.</p> </tp:rationale> </tp:docstring> - <method name="RequestContactList" - tp:name-for-bindings="Request_Contact_List"> - <tp:changed version="0.19.8">(in draft: renamed from - GetContactListAttributes)</tp:changed> - <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> - <p>Return some contact attributes for a list of contacts somehow - associated with the user.</p> + <tp:enum name="Contact_List_State" type="u"> + <tp:docstring> + The progress made in retrieving the contact list. + </tp:docstring> + + <tp:enumvalue suffix="None" value="0"> + <tp:docstring>The connection has not started to retrieve the contact + list. If <tp:member-ref>GetContactListAttributes</tp:member-ref> is + called in this state, it will raise NotYet.</tp:docstring> + </tp:enumvalue> + + <tp:enumvalue suffix="Waiting" value="1"> + <tp:docstring>The connection has started to retrieve the contact + list, but has not yet succeeded or failed. + If <tp:member-ref>GetContactListAttributes</tp:member-ref> is called + in this state, it will raise NotYet.</tp:docstring> + </tp:enumvalue> + + <tp:enumvalue suffix="Failure" value="2"> + <tp:docstring> + <p>The connection has tried and failed to retrieve the contact + list. If <tp:member-ref>GetContactListAttributes</tp:member-ref> + is called in this state, it will immediately raise an error + indicating the reason for failure.</p> + + <p>The connection manager SHOULD try again to obtain the contact + list, if appropriate for the protocol. If it succeeds later, + the <tp:member-ref>ContactListState</tp:member-ref> MUST advance + to Success.</p> + </tp:docstring> + </tp:enumvalue> + + <tp:enumvalue suffix="Success" value="3"> + <tp:docstring>The connection has successfully retrieved the contact + list. If <tp:member-ref>GetContactListAttributes</tp:member-ref> + is called in this state, it will return successfully.</tp:docstring> + </tp:enumvalue> + </tp:enum> + + <property name="ContactListState" tp:name-for-bindings="Contact_List_State" + type="u" tp:type="Contact_List_State" access="read"> + <tp:added version="0.19.12">(in draft 3)</tp:added> + <tp:docstring> + The progress made in retrieving the contact list. + Change notification is via + <tp:member-ref>ContactListStateChanged</tp:member-ref>. + </tp:docstring> + </property> + + <signal name="ContactListStateChanged" + tp:name-for-bindings="Contact_List_State_Changed"> + <tp:added version="0.19.12">(in draft 3)</tp:added> + <tp:docstring> + Emitted when <tp:member-ref>ContactListState</tp:member-ref> + changes. + </tp:docstring> + + <arg name="Contact_List_State" type="u" tp:type="Contact_List_State"> + <tp:docstring> + The new value of <tp:member-ref>ContactListState</tp:member-ref>. + </tp:docstring> + </arg> + </signal> - <p>This definition is deliberately vague: in practice, most user - interfaces should display some subset of this list, by filtering it - by some contact attributes (for instance, displaying all contacts - whose "subscribe" attribute is Yes is expected to be a common case). - This list MAY contain any contacts whatsoever, but MUST contain - at least the following:</p> + <method name="GetContactListAttributes" + tp:name-for-bindings="Get_Contact_List_Attributes"> + <tp:changed version="0.19.12">(semantics changed in draft + 3)</tp:changed> + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>Return some contact attributes for a list of contacts + associated with the user. This list MUST include at least:</p> <ul> - <li>all contacts whose "subscribe" attribute is Ask or Yes</li> - <li>all contacts whose "publish" attribute is Ask or Yes</li> - <li>all contacts with a persistently-stored stored alias, if - supported</li> - <li>all contacts in user-defined contact groups, if supported</li> + <li>all contacts whose <tp:token-ref>subscribe</tp:token-ref> + attribute is not No</li> + <li>all contacts whose <tp:token-ref>publish</tp:token-ref> + attribute is not No</li> </ul> - <p>This list does not need to contain every visible contact: for - instance, contacts seen in XMPP or IRC chatrooms SHOULD NOT appear - here. Blocked contacts SHOULD NOT appear here either, unless they - are still stored in a persistent roster/contact list as well as - being blocked.</p> + <p>but MAY contain other contacts.</p> <tp:rationale> - <p>This is basically the union of the historical <tp:dbus-ref - namespace="org.freedesktop.Telepathy.Channel.Type" - >ContactList</tp:dbus-ref> subscribe, publish and stored - channels.</p> - - <p>For example, XMPP, it's the roster; on link-local XMPP, it's the - set of visible users on the local network; on MSN, it's the union - of the forward and reverse buddy lists.</p> - - <p>An easy way for an application to display a contact list is to - call this method with at least this interface in the Interfaces - argument, then check which subset of contacts should be displayed - (perhaps based on their subscribe attribute, for instance) and display - them. Any additional information required to display the contact - list, like aliases or presence, can be retrieved at the same - time.</p> - - <p>In practice, most user interfaces for the contact list will - usually display a large proportion of this list - (for instance, most contacts on the contact list will usually - have subscribe=Yes in practice, so contact lists that display - subscribe=Yes contacts need to display almost the entire list), - so the overhead of returning information about too many contacts - is small.</p> + <p>For instance, on XMPP, all contacts on the roster would appear + here even if they have subscription="none", unless there's + reason to believe the user does not want to see them (such as + having been blocked).</p> </tp:rationale> - <p>This method SHOULD NOT return before the contact list has been - retrieved, on protocols where this is possible. As a result, - clients SHOULD use a longer-than-default timeout for this method - call, since retrieving the contact list can take a significant - time on some servers.</p> + <p>This list does not need to contain every visible contact: for + instance, contacts seen in XMPP or IRC chatrooms SHOULD NOT appear + here. Blocked contacts SHOULD NOT appear here, unless they still + have a non-<tt>No</tt> <tp:token-ref>subscribe</tp:token-ref> or + <tp:token-ref>publish</tp:token-ref> attribute + for some reason.</p> <tp:rationale> - <p>This makes it possible for clients to wait for the contact list. - For instance, on XMPP this method shouldn't return until the - roster has been retrieved, which is an asynchronous process. - However, on link-local XMPP you can't know when you have the - complete list, so this method would have to return immediately.</p> + <p>It's reasonable to assume that blocked contacts should not be + visible to the user unless they specifically go looking for them, + at least in protocols like XMPP where blocking a contact + suppresses presence.</p> </tp:rationale> </tp:docstring> @@ -150,12 +182,6 @@ Equivalent to the corresponding argument to <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface.Contacts" >GetContactAttributes</tp:dbus-ref>.</p> - - <p><em>FIXME: if we do distributed refcounting, we should probably - rename this to 'Reference' and implement handle-refcounting - semantics first? On the other hand, if we make handles persist - for the lifetime of the connection, we can just remove this - parameter.</em></p> </tp:docstring> </arg> @@ -171,31 +197,64 @@ </arg> <tp:possible-errors> - <tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/> + <tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/> + <tp:error name="org.freedesktop.Telepathy.Error.NotImplemented"/> + <tp:error name="org.freedesktop.Telepathy.Error.NotAvailable"/> + <tp:error name="org.freedesktop.Telepathy.Error.ServiceBusy"/> + <tp:error name="org.freedesktop.Telepathy.Error.NotYet"> + <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> + <p>The <tp:member-ref>ContactListState</tp:member-ref> is + None or Waiting. In particular, this error is raised if the + <tp:dbus-ref namespace="ofdT.Connection">Status</tp:dbus-ref> + is not yet Connection_Status_Connected.</p> + </tp:docstring> + </tp:error> </tp:possible-errors> </method> - <tp:enum name="Presence_State" type="u"> + <tp:enum name="Subscription_State" type="u"> <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> - <p>A tristate indicating whether presence subscription is denied, + <p>An enumeration indicating whether presence subscription is denied, denied but pending permission, or allowed. The exact semantics - vary according to where this type is used.</p> + vary according to where this type is used: see the + <tp:token-ref>subscribe</tp:token-ref> and + <tp:token-ref>publish</tp:token-ref> contact attributes for + details.</p> </tp:docstring> - <tp:enumvalue suffix="No" value="0"> - <tp:docstring>Presence information cannot be seen.</tp:docstring> + <tp:enumvalue suffix="Unknown" value="0"> + <tp:docstring>The presence subscription state is + unknown.</tp:docstring> </tp:enumvalue> - <tp:enumvalue suffix="Ask" value="1"> - <tp:docstring>Presence information cannot be seen, but permission - to see presence information has been requested.</tp:docstring> + + <tp:enumvalue suffix="No" value="1"> + <tp:docstring>Presence information cannot be seen, and either the + subscription state Removed_Remotely does not apply, or it is + not known whether that state applies. + </tp:docstring> + </tp:enumvalue> + + <tp:enumvalue suffix="Removed_Remotely" value="2"> + <tp:docstring>Presence information cannot be seen because the + remote contact took action: either the local user's request to + see the remote contact's presence was denied, or the remote + contact requested to see the local user's presence but then + cancelled their request.</tp:docstring> </tp:enumvalue> - <tp:enumvalue suffix="Yes" value="2"> + + <tp:enumvalue suffix="Ask" value="3"> + <tp:docstring>Presence information cannot be seen. Permission + to see presence information has been requested, and the request + has not yet been declined or accepted.</tp:docstring> + </tp:enumvalue> + + <tp:enumvalue suffix="Yes" value="4"> <tp:docstring>Presence information can be seen.</tp:docstring> </tp:enumvalue> </tp:enum> <tp:contact-attribute name="subscribe" - type="u" tp:type="Presence_State"> + type="u" tp:type="Subscription_State"> <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>If this attribute on a contact is Yes, this connection can expect to receive their presence, along with any other information @@ -207,7 +266,7 @@ the local user's buddy list" in ICQ, for example.</p> </tp:rationale> - <p>If this attribute is No or Ask, the local user cannot generally + <p>If this attribute is not Yes, the local user cannot generally expect to receive presence from this contact. Their presence status as returned by <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface.SimplePresence">GetPresences</tp:dbus-ref> @@ -229,18 +288,30 @@ asked during the current session will ever have Ask status.</p> </tp:rationale> - <p>This attribute SHOULD be omitted from the - <tp:type>Contact_Attributes_Map</tp:type> returned by - <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface.Contacts" - >GetContactAttributes</tp:dbus-ref> until the initial contact - list has been received, in protocols where this is applicable. - Clients MAY wait for this by calling - <tp:member-ref>RequestContactList</tp:member-ref>.</p> + <p>If this attribute is Removed_Remotely, this indicates that the + local user has asked to receive the contact's presence at some time, + but the remote contact has rejected that request, and a local + user interface has not yet acknowledged this. It is + implementation-dependent whether contacts' subscribe attributes can + remain set to Removed_Remotely, or are reset to No, when the + connection disconnects.</p> + + <p>After notifying the user, user interfaces MAY acknowledge a change + to <tt>subscribe</tt>=Removed_Remotely by calling either + <tp:member-ref>Unsubscribe</tp:member-ref> or + <tp:member-ref>RemoveContacts</tp:member-ref>, which will set + <tt>subscribe</tt> to No (and perhaps remove the contact). This + allows user interfaces to detect that the user has been notified + about the rejected request.</p> + + <p>This attribute's value will be Unknown or omitted until the + <tp:member-ref>ContactListState</tp:member-ref> has changed to + Success.</p> </tp:docstring> </tp:contact-attribute> <tp:contact-attribute name="publish" - type="u" tp:type="Presence_State"> + type="u" tp:type="Subscription_State"> <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>If this attribute on a contact is Yes, the local user's presence is published to that contact, along with any other information that @@ -254,12 +325,12 @@ the contact's buddy list" in ICQ, for example.</p> </tp:rationale> - <p>If this attribute is No or Ask, the + <p>If this attribute is not Yes, the local user's presence is not published to that contact; however, if it is Ask, the contact has requested that the local user's presence is made available to them.</p> - <p>It is implementation-dependent whether contacts' publish + <p>It is implementation-dependent whether contacts' <tt>publish</tt> attributes can remain set to Ask, or are reset to No, when the connection disconnects.</p> @@ -270,21 +341,32 @@ during the current session will ever have Ask status.</p> </tp:rationale> - <p>This attribute SHOULD be omitted from the - <tp:type>Contact_Attributes_Map</tp:type> returned by - <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface.Contacts" - >GetContactAttributes</tp:dbus-ref> until the initial contact - list has been received, in protocols where this is applicable. - Clients MAY wait for this by calling - <tp:member-ref>RequestContactList</tp:member-ref>.</p> + <p>If this attribute is Removed_Remotely, this indicates that the + remote contact has asked to receive the user's presence at some time, + but has then cancelled that request before a response was given by + the local user. User interfaces MAY reset <tt>publish</tt> from + Removed_Remotely to No, by calling either + <tp:member-ref>Unpublish</tp:member-ref> or + <tp:member-ref>RemoveContacts</tp:member-ref>.</p> + + <p>If multiple factors affect whether a contact can receive the local + user's presence, this attribute SHOULD reflect the overall + result. For instance, an XMPP contact with subscription="to" or + subscription="both", but who has been blocked via + <a href="http://xmpp.org/extensions/xep-0016.html">XEP-0016 Privacy + Lists</a>, SHOULD have publish=No.</p> + + <p>This attribute's value will be Unknown or omitted until the + <tp:member-ref>ContactListState</tp:member-ref> has changed to + Success.</p> </tp:docstring> </tp:contact-attribute> <tp:contact-attribute name="publish-request" type="s"> <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> - <p>If the "publish" attribute is Ask, an optional message that was - sent by the contact asking to receive the local user's presence; - omitted if none was given.</p> + <p>If the <tp:token-ref>publish</tp:token-ref> attribute is Ask, an + optional message that was sent by the contact asking to receive the + local user's presence; omitted if none was given.</p> <tp:rationale> <p>If the contact asking to receive our presence is also using @@ -294,17 +376,15 @@ <p>Otherwise, this SHOULD be omitted.</p> - <p>This attribute SHOULD be omitted from the - <tp:type>Contact_Attributes_Map</tp:type> returned by - <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface.Contacts" - >GetContactAttributes</tp:dbus-ref> until the initial contact - list has been received. Clients MAY wait for this by calling - <tp:member-ref>RequestContactList</tp:member-ref>.</p> + <p>This attribute will also be omitted until the + <tp:member-ref>ContactListState</tp:member-ref> has changed to + Success.</p> </tp:docstring> </tp:contact-attribute> - <property name="SubscriptionsPersist" - tp:name-for-bindings="Subscriptions_Persist" type="b" access="read"> + <property name="ContactListPersists" + tp:name-for-bindings="Contact_List_Persists" type="b" access="read"> + <tp:changed version="0.19.12">(renamed in draft 3)</tp:changed> <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>If true, presence subscriptions (in both directions) on this connection are stored by the server or other infrastructure.</p> @@ -323,17 +403,17 @@ presence from everyone else) so nothing is ever stored.</p> </tp:rationale> - <p>If <tp:member-ref>CanChangeSubscriptions</tp:member-ref> + <p>If <tp:member-ref>CanChangeContactList</tp:member-ref> is true, Telepathy clients (e.g. user interfaces or address books) MAY keep a record of permission to publish and requests to subscribe locally, and attempt to restore it for each Connection. If - SubscriptionsPersist is false, clients MAY do this for all contacts; - if SubscriptionsPersist is true, clients SHOULD NOT change the state + ContactListPersists is false, clients MAY do this for all contacts; + if ContactListPersists is true, clients SHOULD NOT change the state of contacts that were not changed locally.</p> <tp:rationale> - <p>In SIMPLE (SIP), SubscriptionsPersist is false, but - CanChangeSubscriptions is true. Presence will not be received + <p>In SIMPLE (SIP), ContactListPersists is false, but + CanChangeContactList is true. Presence will not be received unless clients renew any subscriptions they have for each connection, in the way described. There is no server-side storage, so clients have no alternative but to maintain independent contact @@ -392,11 +472,12 @@ <p>Contact aliases and groups on MSN have this behaviour.</p> </tp:rationale> - <p>If this type of metadata is set on a contact with subscribe=No, - the Connection MUST cache it until disconnected, and return it - if requested. If subscription to the contact's presence is - subsequently requested, making it possible to store this metadata, - the Connection MUST store the cached value at that time.</p> + <p>If this type of metadata is set on a contact with subscribe=No + or subscribe=Rejected, the Connection MUST cache it until + disconnected, and return it if requested. If subscription to the + contact's presence is subsequently requested, making it possible + to store this metadata, the Connection MUST store the cached + value at that time.</p> <tp:rationale> <p>This supports the recommended calling pattern for adding a @@ -455,13 +536,13 @@ A single contact's subscribe, publish and publish-request attributes. </tp:docstring> - <tp:member name="Subscribe" type="u" tp:type="Presence_State"> + <tp:member name="Subscribe" type="u" tp:type="Subscription_State"> <tp:docstring> The new value of the contact's "subscribe" attribute. </tp:docstring> </tp:member> - <tp:member name="Publish" type="u" tp:type="Presence_State"> + <tp:member name="Publish" type="u" tp:type="Subscription_State"> <tp:docstring> The new value of the contact's "publish" attribute. </tp:docstring> @@ -500,19 +581,32 @@ <p>Emitted when the contact list becomes available, when contacts' basic stored properties change, when new contacts are added to the list that would be returned by - <tp:member-ref>RequestContactList</tp:member-ref>, + <tp:member-ref>GetContactListAttributes</tp:member-ref>, or when contacts are removed from that list.</p> <tp:rationale> <p>This provides change notification for that list, and for - contacts' "subscribe", "publish" and - "publish-request" attributes.</p> + contacts' <tp:token-ref>subscribe</tp:token-ref>, + <tp:token-ref>publish</tp:token-ref> and + <tp:token-ref>publish-request</tp:token-ref> attributes.</p> + </tp:rationale> + + <p>Connection managers SHOULD also emit this signal when a contact + requests that the user's presence is published to them, even if + that contact's <tp:token>publish</tp:token> attribute is already + Ask and the <tp:token>publish-request</tp:token> has not changed.</p> + + <tp:rationale> + <p>If the same contact sends 10 identical requests, 10 identical + signals should be emitted.</p> </tp:rationale> </tp:docstring> <arg type="a{u(uus)}" name="Changes" tp:type="Contact_Subscription_Map"> <tp:docstring> - The new subscribe, publish and publish-request attributes of all the + The new <tp:token-ref>subscribe</tp:token-ref>, + <tp:token-ref>publish</tp:token-ref> and + <tp:token-ref>publish-request</tp:token-ref> attributes of all the contacts that have been added, and all the contacts for which those attributes have changed. </tp:docstring> @@ -522,15 +616,15 @@ <tp:docstring> The contacts that have been removed from the list that would be returned by - <tp:member-ref>RequestContactList</tp:member-ref>. + <tp:member-ref>GetContactListAttributes</tp:member-ref>. This also implies that they have subscribe = No and publish = No; contacts MUST NOT be listed both here and in Changes. </tp:docstring> </arg> </signal> - <property name="CanChangeSubscriptions" type="b" access="read" - tp:name-for-bindings="Can_Change_Subscriptions"> + <property name="CanChangeContactList" type="b" access="read" + tp:name-for-bindings="Can_Change_Contact_List"> <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>If true, presence subscription and publication can be changed using the @@ -590,10 +684,10 @@ request, with the given message, if allowed by the underlying protocol.</p> - <p>For contacts with subscribe=No, this method SHOULD request that - the contact allows the local user to subscribe to their presence; - in general, this will change their publish attribute from No - to Ask (although it could change directly from No to Yes in some + <p>For contacts with subscribe=No or subscribe=Rejected, this method + SHOULD request that the contact allows the local user to subscribe + to their presence; in general, this will change their publish + attribute to Ask (although it could change directly to Yes in some situations).</p> <p>Any state changes that immediately result from this request MUST @@ -606,9 +700,20 @@ </tp:rationale> <p>If the remote contact accepts the request, their subscribe - attribute will later change from Ask to Yes; if they explicitly - reject the request (in protocols that allow this), their subscribe - attribute will later change from Ask to No.</p> + attribute will later change from Ask to Yes.</p> + + <p>If the remote contact explicitly rejects the request (in protocols + that allow this), their subscribe attribute will later change from + Ask to Rejected.</p> + + <p>If the subscription request is cancelled by the local user, the + contact's subscribe attribute will change from Ask to No.</p> + + <p>This method SHOULD NOT be called until the + <tp:member-ref>ContactListState</tp:member-ref> changes to Success. + If the <tp:member-ref>ContactListState</tp:member-ref> changes to + Failure, this method SHOULD raise the same error as + <tp:member-ref>GetContactListAttributes</tp:member-ref>.</p> </tp:docstring> <arg name="Contacts" direction="in" @@ -643,10 +748,16 @@ <tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/> <tp:error name="org.freedesktop.Telepathy.Error.InvalidHandle"/> <tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/> + <tp:error name="org.freedesktop.Telepathy.Error.NotYet"> + <tp:docstring> + The <tp:member-ref>ContactListState</tp:member-ref> is None + or Waiting. + </tp:docstring> + </tp:error> <tp:error name="org.freedesktop.Telepathy.Error.NotImplemented"> <tp:docstring> It was not possible to perform the requested action, because - <tp:member-ref>CanChangeSubscriptions</tp:member-ref> is false. + <tp:member-ref>CanChangeContactList</tp:member-ref> is false. </tp:docstring> </tp:error> </tp:possible-errors> @@ -714,6 +825,12 @@ <p>This makes it easy for user interfaces to see what practical effect this method had.</p> </tp:rationale> + + <p>This method SHOULD NOT be called until the + <tp:member-ref>ContactListState</tp:member-ref> changes to Success. + If the <tp:member-ref>ContactListState</tp:member-ref> changes to + Failure, this method SHOULD raise the same error as + <tp:member-ref>GetContactListAttributes</tp:member-ref>.</p> </tp:docstring> <arg name="Contacts" direction="in" @@ -730,7 +847,13 @@ <tp:error name="org.freedesktop.Telepathy.Error.NotImplemented"> <tp:docstring> It was not possible to perform the requested action, because - <tp:member-ref>CanChangeSubscriptions</tp:member-ref> is false. + <tp:member-ref>CanChangeContactList</tp:member-ref> is false. + </tp:docstring> + </tp:error> + <tp:error name="org.freedesktop.Telepathy.Error.NotYet"> + <tp:docstring> + The <tp:member-ref>ContactListState</tp:member-ref> is None + or Waiting. </tp:docstring> </tp:error> </tp:possible-errors> @@ -745,7 +868,7 @@ <p>If possible, this method SHOULD set the contacts' subscribe and publish attributes to No, remove any stored aliases for those contacts, and remove the contacts from the result of - <tp:member-ref>RequestContactList</tp:member-ref>.</p> + <tp:member-ref>GetContactListAttributes</tp:member-ref>.</p> <p>This method SHOULD succeed even if it was not possible to carry out the request entirely or for all contacts (for instance, if there is an @@ -764,6 +887,12 @@ contact list's state), then consult its local cache of the contact list's state to see whether the contact is still there.</p> </tp:rationale> + + <p>This method SHOULD NOT be called until the + <tp:member-ref>ContactListState</tp:member-ref> changes to Success. + If the <tp:member-ref>ContactListState</tp:member-ref> changes to + Failure, this method SHOULD raise the same error as + <tp:member-ref>GetContactListAttributes</tp:member-ref>.</p> </tp:docstring> <arg name="Contacts" direction="in" @@ -780,7 +909,13 @@ <tp:error name="org.freedesktop.Telepathy.Error.NotImplemented"> <tp:docstring> It was not possible to perform the requested action because - <tp:member-ref>CanChangeSubscriptions</tp:member-ref> is false. + <tp:member-ref>CanChangeContactList</tp:member-ref> is false. + </tp:docstring> + </tp:error> + <tp:error name="org.freedesktop.Telepathy.Error.NotYet"> + <tp:docstring> + The <tp:member-ref>ContactListState</tp:member-ref> is None + or Waiting. </tp:docstring> </tp:error> </tp:possible-errors> @@ -801,6 +936,12 @@ entirely or for all contacts; however, all signals that immediately result from this method call MUST be emitted before it returns.</p> + + <p>This method SHOULD NOT be called until the + <tp:member-ref>ContactListState</tp:member-ref> changes to Success. + If the <tp:member-ref>ContactListState</tp:member-ref> changes to + Failure, this method SHOULD raise the same error as + <tp:member-ref>GetContactListAttributes</tp:member-ref>.</p> </tp:docstring> <arg name="Contacts" direction="in" @@ -817,7 +958,7 @@ <tp:error name="org.freedesktop.Telepathy.Error.NotImplemented"> <tp:docstring> It was not possible to perform the requested action because - <tp:member-ref>CanChangeSubscriptions</tp:member-ref> is false. + <tp:member-ref>CanChangeContactList</tp:member-ref> is false. </tp:docstring> </tp:error> </tp:possible-errors> @@ -838,6 +979,12 @@ entirely or for all contacts; however, all signals that immediately result from this method call MUST be emitted before it returns.</p> + + <p>This method SHOULD NOT be called until the + <tp:member-ref>ContactListState</tp:member-ref> changes to Success. + If the <tp:member-ref>ContactListState</tp:member-ref> changes to + Failure, this method SHOULD raise the same error as + <tp:member-ref>GetContactListAttributes</tp:member-ref>.</p> </tp:docstring> <arg name="Contacts" direction="in" @@ -854,7 +1001,13 @@ <tp:error name="org.freedesktop.Telepathy.Error.NotImplemented"> <tp:docstring> It was not possible to perform the requested action because - <tp:member-ref>CanChangeSubscriptions</tp:member-ref> is false. + <tp:member-ref>CanChangeContactList</tp:member-ref> is false. + </tp:docstring> + </tp:error> + <tp:error name="org.freedesktop.Telepathy.Error.NotYet"> + <tp:docstring> + The <tp:member-ref>ContactListState</tp:member-ref> is None + or Waiting. </tp:docstring> </tp:error> </tp:possible-errors> |