diff options
author | Jonny Lamb <jonny.lamb@collabora.co.uk> | 2012-01-27 16:55:06 -0500 |
---|---|---|
committer | Jonny Lamb <jonny.lamb@collabora.co.uk> | 2012-01-31 11:56:26 -0500 |
commit | ee37854515a60e06ef97456db2329571d736d7e2 (patch) | |
tree | e7393545b0f57cd04ba06addced65230c13445f6 | |
parent | d8e55a00c68443763f6826c4057684ec290ad0dd (diff) |
channel: remove deprecated methods & signals
Signed-off-by: Jonny Lamb <jonny.lamb@collabora.co.uk>
-rw-r--r-- | docs/reference/telepathy-glib-sections.txt | 18 | ||||
-rw-r--r-- | examples/future/call-cm/call-channel.c | 29 | ||||
-rw-r--r-- | spec/Channel.xml | 196 | ||||
-rw-r--r-- | telepathy-glib/base-channel.c | 37 | ||||
-rw-r--r-- | telepathy-glib/channel.c | 193 | ||||
-rw-r--r-- | tests/dbus/base-client.c | 4 | ||||
-rw-r--r-- | tests/dbus/channel-dispatch-operation.c | 4 | ||||
-rw-r--r-- | tests/dbus/channel-introspect.c | 54 | ||||
-rw-r--r-- | tests/dbus/channel.c | 6 | ||||
-rw-r--r-- | tests/dbus/finalized-in-invalidated-handler.c | 2 | ||||
-rw-r--r-- | tests/dbus/simple-approver.c | 2 | ||||
-rw-r--r-- | tests/dbus/simple-handler.c | 2 | ||||
-rw-r--r-- | tests/dbus/simple-observer.c | 2 | ||||
-rw-r--r-- | tests/lib/simple-conn.c | 2 | ||||
-rw-r--r-- | tests/lib/textchan-null.c | 39 | ||||
-rw-r--r-- | tests/lib/textchan-null.h | 4 |
16 files changed, 109 insertions, 485 deletions
diff --git a/docs/reference/telepathy-glib-sections.txt b/docs/reference/telepathy-glib-sections.txt index 3a0738bcd..6f38d0e52 100644 --- a/docs/reference/telepathy-glib-sections.txt +++ b/docs/reference/telepathy-glib-sections.txt @@ -348,15 +348,6 @@ TpSvcChannelClass tp_svc_channel_close_impl tp_svc_channel_implement_close tp_svc_channel_return_from_close -tp_svc_channel_get_channel_type_impl -tp_svc_channel_implement_get_channel_type -tp_svc_channel_return_from_get_channel_type -tp_svc_channel_get_handle_impl -tp_svc_channel_implement_get_handle -tp_svc_channel_return_from_get_handle -tp_svc_channel_get_interfaces_impl -tp_svc_channel_implement_get_interfaces -tp_svc_channel_return_from_get_interfaces tp_svc_channel_emit_closed <SUBSECTION> TpSvcChannelInterfaceDestroyable @@ -2761,17 +2752,8 @@ TP_IS_CHANNEL TP_IS_CHANNEL_CLASS <SUBSECTION> tp_cli_channel_call_close -tp_cli_channel_call_get_channel_type -tp_cli_channel_call_get_handle -tp_cli_channel_call_get_interfaces tp_cli_channel_callback_for_close -tp_cli_channel_callback_for_get_channel_type -tp_cli_channel_callback_for_get_handle -tp_cli_channel_callback_for_get_interfaces tp_cli_channel_run_close -tp_cli_channel_run_get_channel_type -tp_cli_channel_run_get_handle -tp_cli_channel_run_get_interfaces tp_cli_channel_connect_to_closed tp_cli_channel_signal_callback_closed <SUBSECTION> diff --git a/examples/future/call-cm/call-channel.c b/examples/future/call-cm/call-channel.c index 85c87d625..5c0093007 100644 --- a/examples/future/call-cm/call-channel.c +++ b/examples/future/call-cm/call-channel.c @@ -902,32 +902,6 @@ channel_close (TpSvcChannel *iface, } static void -channel_get_channel_type (TpSvcChannel *iface G_GNUC_UNUSED, - DBusGMethodInvocation *context) -{ - tp_svc_channel_return_from_get_channel_type (context, - FUTURE_IFACE_CHANNEL_TYPE_CALL); -} - -static void -channel_get_handle (TpSvcChannel *iface, - DBusGMethodInvocation *context) -{ - ExampleCallChannel *self = EXAMPLE_CALL_CHANNEL (iface); - - tp_svc_channel_return_from_get_handle (context, TP_HANDLE_TYPE_CONTACT, - self->priv->handle); -} - -static void -channel_get_interfaces (TpSvcChannel *iface G_GNUC_UNUSED, - DBusGMethodInvocation *context) -{ - tp_svc_channel_return_from_get_interfaces (context, - example_call_channel_interfaces); -} - -static void channel_iface_init (gpointer iface, gpointer data) { @@ -935,9 +909,6 @@ channel_iface_init (gpointer iface, #define IMPLEMENT(x) tp_svc_channel_implement_##x (klass, channel_##x) IMPLEMENT (close); - IMPLEMENT (get_channel_type); - IMPLEMENT (get_handle); - IMPLEMENT (get_interfaces); #undef IMPLEMENT } diff --git a/spec/Channel.xml b/spec/Channel.xml index 11d3e509c..12c85f84e 100644 --- a/spec/Channel.xml +++ b/spec/Channel.xml @@ -18,7 +18,7 @@ Lesser General Public License for more details.</p> License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</p> </tp:license> - <interface name="org.freedesktop.Telepathy.Channel"> + <interface name="im.telepathy1.Channel"> <property name="ChannelType" type="s" tp:type="DBus_Interface" access="read" tp:name-for-bindings="Channel_Type"> @@ -27,11 +27,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ <p>The channel's type. This cannot change once the channel has been created.</p> - <p>For compatibility between older connection managers and newer - clients, if this is unavailable or is an empty string, - clients MUST use the result of calling - <tp:member-ref>GetChannelType</tp:member-ref>.</p> - <tp:rationale> The GetAll method lets clients retrieve all properties in one round-trip, which is desirable. @@ -55,21 +50,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ the channel type and the Channel interface itself, and cannot change once the channel has been created.</p> - <p>For compatibility between older connection managers and newer - clients, if this is unavailable, or if this is an empty list and - <tp:member-ref>ChannelType</tp:member-ref> is an empty string, - clients MUST use the result of calling - <tp:member-ref>GetInterfaces</tp:member-ref> instead. If this is an - empty list but ChannelType is non-empty, clients SHOULD NOT call - GetInterfaces; this implies that connection managers that implement - the ChannelType property MUST also implement the Interfaces property - correctly.</p> - - <tp:rationale> - The GetAll method lets clients retrieve all properties in one - round-trip, which is desirable. - </tp:rationale> - <p>When requesting a channel with a particular value for this property, the request must fail without side-effects unless the connection manager expects to be able to provide a channel whose @@ -102,7 +82,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ MUST be present and not Handle_Type_None, and <tp:member-ref>TargetID</tp:member-ref> MUST NOT be present. Properties from - <tp:dbus-ref namespace="org.freedesktop.Telepathy.Channel.Interface">Addressing.DRAFT</tp:dbus-ref> + <tp:dbus-ref namespace="im.telepathy1.Channel.Interface">Addressing1</tp:dbus-ref> MUST NOT be present.</p> <p>The channel that satisfies the request MUST either:</p> @@ -136,11 +116,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ <ul> <li>New channel C is signalled with target handle T</li> <li>Client calls <tp:dbus-ref - namespace="org.freedesktop.Telepathy.Connection">InspectHandles</tp:dbus-ref>(CONTACT, + namespace="im.telepathy1.Connection">InspectHandles</tp:dbus-ref>(CONTACT, [T])</li> <li>Channel C closes, removing the last reference to handle T</li> <li><tp:dbus-ref - namespace="org.freedesktop.Telepathy.Connection">InspectHandles</tp:dbus-ref>(CONTACT, + namespace="im.telepathy1.Connection">InspectHandles</tp:dbus-ref>(CONTACT, [T]) returns an error</li> </ul> </tp:rationale> @@ -150,11 +130,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ MUST be present and not Handle_Type_None, and <tp:member-ref>TargetHandle</tp:member-ref> MUST NOT be present. Properties from - <tp:dbus-ref namespace="org.freedesktop.Telepathy.Channel.Interface">Addressing.DRAFT</tp:dbus-ref> + <tp:dbus-ref namespace="im.telepathy1.Channel.Interface">Addressing1</tp:dbus-ref> MUST NOT be present.The request MUST fail with error InvalidHandle, without side-effects, if the requested TargetID would not be accepted by - <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection">RequestHandles</tp:dbus-ref>.</p> + <tp:dbus-ref namespace="im.telepathy1.Connection">RequestHandles</tp:dbus-ref>.</p> <p>The returned channel must be related to the handle corresponding to the given identifier, in the same way as if TargetHandle @@ -197,14 +177,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ such as contact list channels may not be closed. </tp:docstring> <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="im.telepathy1.Error.Disconnected"/> + <tp:error name="im.telepathy1.Error.NetworkError"/> + <tp:error name="im.telepathy1.Error.NotImplemented"> <tp:docstring> This channel may never be closed, e.g. a contact list </tp:docstring> </tp:error> - <tp:error name="org.freedesktop.Telepathy.Error.NotAvailable"> + <tp:error name="im.telepathy1.Error.NotAvailable"> <tp:docstring> This channel is not currently in a state where it can be closed, e.g. a non-empty user-defined contact group @@ -222,84 +202,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ </tp:docstring> </signal> - <method name="GetChannelType" tp:name-for-bindings="Get_Channel_Type"> - <tp:deprecated version="0.17.7">Use the ChannelType - property if possible.</tp:deprecated> - <arg direction="out" type="s" tp:type="DBus_Interface" - name="Channel_Type"> - <tp:docstring>The interface name</tp:docstring> - </arg> - <tp:docstring> - Returns the interface name for the type of this channel. Clients - SHOULD use the <tp:member-ref>ChannelType</tp:member-ref> property - instead, falling back to this method only if necessary. - - <tp:rationale> - The GetAll method lets clients retrieve all properties in one - round-trip. - </tp:rationale> - </tp:docstring> - </method> - - <method name="GetHandle" tp:name-for-bindings="Get_Handle"> - <tp:deprecated version="0.17.7">Use the TargetHandleType - and TargetHandle properties if possible.</tp:deprecated> - <arg direction="out" type="u" tp:type="Handle_Type" - name="Target_Handle_Type"> - <tp:docstring> - The same as TargetHandleType. - </tp:docstring> - </arg> - <arg direction="out" type="u" tp:type="Handle" name="Target_Handle"> - <tp:docstring> - The same as TargetHandle. - </tp:docstring> - </arg> - <tp:docstring> - Returns the handle type and number if this channel represents a - communication with a particular contact, room or server-stored list, or - zero if it is transient and defined only by its contents. Clients - SHOULD use the <tp:member-ref>TargetHandle</tp:member-ref> and - <tp:member-ref>TargetHandleType</tp:member-ref> properties instead, - falling back to this method only if necessary. - - <tp:rationale> - The GetAll method lets clients retrieve all properties in one - round-trip. - </tp:rationale> - </tp:docstring> - </method> - - <method name="GetInterfaces" tp:name-for-bindings="Get_Interfaces"> - <tp:deprecated version="0.17.7">Use the Interfaces - property if possible.</tp:deprecated> - <arg direction="out" type="as" tp:type="DBus_Interface[]" - name="Interfaces"> - <tp:docstring> - An array of the D-Bus interface names - </tp:docstring> - </arg> - <tp:docstring> - Get the optional interfaces implemented by the channel. - Clients SHOULD use the <tp:member-ref>Interfaces</tp:member-ref> - property instead, falling back to this method only if necessary. - - <tp:rationale> - The GetAll method lets clients retrieve all properties in one - round-trip. - </tp:rationale> - </tp:docstring> - </method> - <property name="Requested" tp:name-for-bindings="Requested" type="b" access="read"> <tp:added version="0.17.13">(as stable API)</tp:added> <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>True if this channel was created in response to a local request, such as a call to - <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection.RequestChannel</tp:dbus-ref> - or - <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection.Interface.Requests.CreateChannel</tp:dbus-ref>.</p> + <tp:dbus-ref namespace="im.telepathy1">Connection.Interface.Requests.CreateChannel</tp:dbus-ref>.</p> <tp:rationale> <p>The idea of this property is to distinguish between "incoming" @@ -320,34 +229,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ e.g. because joining a Tube in a MUC context on XMPP implies joining that MUC), then this property is false.</p> - <p>For compatibility with older connection managers, clients SHOULD - assume that this property is true if they see a channel announced - by the - <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection.NewChannel</tp:dbus-ref> - signal with the suppress_handler parameter set to true.</p> - - <tp:rationale> - <p>In a correct connection manager, the only way to get such a - channel is to request it.</p> - </tp:rationale> - - <p>Clients MAY additionally assume that this property is false - if they see a channel announced by the NewChannel signal with the - suppress_handler parameter set to false.</p> - - <tp:rationale> - <p>This is more controversial, since it's possible to get that - parameter set to false by requesting a channel. However, there's - no good reason to do so, and we've deprecated this practice.</p> - - <p>In the particular case of the channel dispatcher, the only - side-effect of wrongly thinking a channel is unrequested - is likely to be that the user has to confirm that they want to - use it, so it seems fairly harmless to assume in the channel - dispatcher that channels with suppress_handler false are - indeed unrequested.</p> - </tp:rationale> - <p>It does not make sense for this property to be in channel requests—it will always be true for channels returned by CreateChannel, and callers of EnsureChannel cannot control whether an @@ -383,14 +264,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ <p>For channels requested by the local user, this MUST be the value of - <tp:dbus-ref namespace="org.freedesktop.Telepathy">Connection.SelfHandle</tp:dbus-ref> + <tp:dbus-ref namespace="im.telepathy1">Connection.SelfHandle</tp:dbus-ref> at the time the channel was created (i.e. not a channel-specific handle).</p> <tp:rationale> <p>On some protocols, the SelfHandle may change (as signalled by <tp:dbus-ref - namespace="org.freedesktop.Telepathy">Connection.SelfHandleChanged</tp:dbus-ref>), + namespace="im.telepathy1">Connection.SelfHandleChanged</tp:dbus-ref>), but this property is immutable. Hence, locally-requested channels' InitiatorHandle and InitiatorID may not match the current SelfHandle; <tp:member-ref>Requested</tp:member-ref> can be used to @@ -404,7 +285,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ anonymous).</p> <p>For channels with the <tp:dbus-ref - namespace="org.freedesktop.Telepathy.Channel.Interface">Group</tp:dbus-ref> + namespace="im.telepathy1.Channel.Interface">Group1</tp:dbus-ref> interface, this SHOULD be the same contact who is signalled as the "Actor" causing the self-handle to be placed in the local-pending set.</p> @@ -430,14 +311,14 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ condition:</p> <ul> - <li>New StreamedMedia channel C is signalled with initiator + <li>New Call channel C is signalled with initiator handle I</li> <li>Client calls <tp:dbus-ref - namespace="org.freedesktop.Telepathy.Connection">InspectHandles</tp:dbus-ref>(CONTACT, + namespace="im.telepathy1.Connection">InspectHandles</tp:dbus-ref>(CONTACT, [I])</li> <li>Channel C closes, removing the last reference to handle I</li> <li><tp:dbus-ref - namespace="org.freedesktop.Telepathy.Connection">InspectHandles</tp:dbus-ref>(CONTACT, + namespace="im.telepathy1.Connection">InspectHandles</tp:dbus-ref>(CONTACT, [I]) returns an error</li> <li>Client can indicate that a call was missed, but not who called!</li> @@ -451,18 +332,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ </property> <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> - <p>All communication in the Telepathy framework is carried out via channel - objects which are created and managed by connections. This interface must - be implemented by all channel objects, along with one single channel type, - such as <tp:dbus-ref - namespace="org.freedesktop.Telepathy">Channel.Type.ContactList</tp:dbus-ref> - which represents a list of people (such as a buddy list) or <tp:dbus-ref - namespace="org.freedesktop.Telepathy">Channel.Type.Text</tp:dbus-ref> which - represents a channel over which textual messages are sent and received.</p> + <p> + All communication in the Telepathy framework is carried out via + channel objects which are created and managed by + connections. This interface must be implemented by all channel + objects, along with one single channel type, such as + <tp:dbus-ref + namespace="im.telepathy1">Channel.Type.Text</tp:dbus-ref> which + represents a channel over which textual messages are sent and + received.</p> <p>Each Channel's object path MUST start with the object path of its associated <tp:dbus-ref - namespace="org.freedesktop.Telepathy">Connection</tp:dbus-ref>, followed + namespace="im.telepathy1">Connection</tp:dbus-ref>, followed by '/'. There MAY be any number of additional object-path components, which clients MUST NOT attempt to parse.</p> @@ -479,11 +361,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ <p>Each channel has a number of immutable properties (which cannot vary after the channel has been announced with <tp:dbus-ref - namespace='ofdT.Connection.Interface.Requests'>NewChannels</tp:dbus-ref>), + namespace='imt1.Connection.Interface.Requests'>NewChannels</tp:dbus-ref>), provided to clients in the - <tp:dbus-ref namespace='ofdT.Client.Observer'>ObserveChannels</tp:dbus-ref>, - <tp:dbus-ref namespace='ofdT.Client.Approver'>AddDispatchOperation</tp:dbus-ref> and - <tp:dbus-ref namespace='ofdT.Client.Handler'>HandleChannels</tp:dbus-ref> + <tp:dbus-ref namespace='imt1.Client.Observer'>ObserveChannels</tp:dbus-ref>, + <tp:dbus-ref namespace='imt1.Client.Approver'>AddDispatchOperation</tp:dbus-ref> and + <tp:dbus-ref namespace='imt1.Client.Handler'>HandleChannels</tp:dbus-ref> methods to permit immediate identification of the channel. This interface contains immutable properties common to all channels. In brief:</p> @@ -507,12 +389,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ <p>Other optional <tp:member-ref>Interfaces</tp:member-ref> can be implemented to indicate other available functionality, such as <tp:dbus-ref - namespace="org.freedesktop.Telepathy">Channel.Interface.Group</tp:dbus-ref> + namespace="im.telepathy1">Channel.Interface.Group1</tp:dbus-ref> if the channel contains a number of contacts, <tp:dbus-ref - namespace="org.freedesktop.Telepathy">Channel.Interface.Password</tp:dbus-ref> + namespace="im.telepathy1">Channel.Interface.Password1</tp:dbus-ref> to indicate that a channel may have a password set to require entry, and <tp:dbus-ref - namespace="org.freedesktop.Telepathy">Channel.Interface.ChatState</tp:dbus-ref> + namespace="im.telepathy1">Channel.Interface.ChatState1</tp:dbus-ref> for typing notifications. The interfaces implemented may not vary after the channel has been created. These other interfaces (along with the interface named by <tp:member-ref>ChannelType</tp:member-ref>) may @@ -524,11 +406,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ which indicates that the channel is defined by some other properties. For instance, transient ad-hoc chat rooms may be defined only by their members (as visible through the <tp:dbus-ref - namespace="ofdT.Channel.Interface">Group</tp:dbus-ref> + namespace="imt1.Channel.Interface">Group1</tp:dbus-ref> interface), and <tp:dbus-ref - namespace='ofdT.Channel.Type'>ContactSearch</tp:dbus-ref> + namespace='imt1.Channel.Type'>ContactSearch1</tp:dbus-ref> channels represent a single search attempt for a particular <tp:dbus-ref - namespace='ofdT.Channel.Type.ContactSearch'>Server</tp:dbus-ref>.</p> + namespace='imt1.Channel.Type.ContactSearch1'>Server</tp:dbus-ref>.</p> <p>Specific connection manager implementations may implement channel types and interfaces which are not contained within this specification in order to @@ -552,6 +434,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</ guarantee that Channels' object paths had the Connection's object path as a prefix. </tp:changed> + + <tp:changed version="UNRELEASED">Deprecated methods + (GetChannelType, GetHandle, and GetInterfaces) have been removed + from this interface.</tp:changed> </interface> </node> <!-- vim:set sw=2 sts=2 et ft=xml: --> diff --git a/telepathy-glib/base-channel.c b/telepathy-glib/base-channel.c index 43c173406..ae865ec16 100644 --- a/telepathy-glib/base-channel.c +++ b/telepathy-glib/base-channel.c @@ -881,36 +881,6 @@ tp_base_channel_class_init (TpBaseChannelClass *tp_base_channel_class) } static void -tp_base_channel_get_channel_type (TpSvcChannel *iface, - DBusGMethodInvocation *context) -{ - TpBaseChannelClass *klass = TP_BASE_CHANNEL_GET_CLASS (iface); - - tp_svc_channel_return_from_get_channel_type (context, klass->channel_type); -} - -static void -tp_base_channel_get_handle (TpSvcChannel *iface, - DBusGMethodInvocation *context) -{ - TpBaseChannelClass *klass = TP_BASE_CHANNEL_GET_CLASS (iface); - TpBaseChannel *chan = TP_BASE_CHANNEL (iface); - - tp_svc_channel_return_from_get_handle (context, klass->target_handle_type, - chan->priv->target); -} - -static void -tp_base_channel_get_interfaces (TpSvcChannel *iface, - DBusGMethodInvocation *context) -{ - TpBaseChannel *chan = TP_BASE_CHANNEL (iface); - TpBaseChannelClass *klass = TP_BASE_CHANNEL_GET_CLASS (chan); - - tp_svc_channel_return_from_get_interfaces (context, klass->interfaces); -} - -static void tp_base_channel_close_dbus ( TpSvcChannel *iface, DBusGMethodInvocation *context) @@ -935,12 +905,5 @@ channel_iface_init (gpointer g_iface, { TpSvcChannelClass *klass = (TpSvcChannelClass *) g_iface; -#define IMPLEMENT(x) tp_svc_channel_implement_##x (\ - klass, tp_base_channel_##x) - IMPLEMENT(get_channel_type); - IMPLEMENT(get_handle); - IMPLEMENT(get_interfaces); -#undef IMPLEMENT - tp_svc_channel_implement_close (klass, tp_base_channel_close_dbus); } diff --git a/telepathy-glib/channel.c b/telepathy-glib/channel.c index f4fda7b54..4765dea3b 100644 --- a/telepathy-glib/channel.c +++ b/telepathy-glib/channel.c @@ -810,57 +810,6 @@ _tp_channel_continue_introspection (TpChannel *self) } } - -static void -tp_channel_got_interfaces_cb (TpChannel *self, - const gchar **interfaces, - const GError *error, - gpointer unused, - GObject *unused2) -{ - if (error != NULL) - { - _tp_channel_abort_introspection (self, "GetInterfaces() failed", error); - return; - } - - self->priv->exists = TRUE; - _tp_channel_maybe_set_interfaces (self, interfaces); - - /* FIXME: give subclasses a chance to influence the definition of "ready" - * now that we have our interfaces? */ - - _tp_channel_continue_introspection (self); -} - - -static void -_tp_channel_get_interfaces (TpChannel *self) -{ - DEBUG ("%p", self); - - if (tp_asv_lookup (self->priv->channel_properties, - TP_PROP_CHANNEL_INTERFACES) != NULL && - (self->priv->exists || - tp_proxy_has_interface_by_id (self, - TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP))) - { - /* If we already know the channel's interfaces, and either have already - * successfully called a method on the channel (so know it's alive) or - * are going to call one on it when we introspect the Group properties, - * then we don't need to do anything here. - */ - _tp_channel_continue_introspection (self); - } - else - { - /* either we don't know the Interfaces, or we just want to verify the - * channel's existence */ - tp_cli_channel_call_get_interfaces (self, -1, - tp_channel_got_interfaces_cb, NULL, NULL, NULL); - } -} - static void _tp_channel_got_properties (TpProxy *proxy, GHashTable *asv, @@ -869,116 +818,75 @@ _tp_channel_got_properties (TpProxy *proxy, GObject *object G_GNUC_UNUSED) { TpChannel *self = TP_CHANNEL (proxy); + gboolean valid; + guint u; + const gchar *s; + gboolean b; + - if (error == NULL) + if (error != NULL) { - gboolean valid; - guint u; - const gchar *s; - gboolean b; + _tp_channel_abort_introspection (self, "GetAll failed", error); + return; + } - DEBUG ("Received %u channel properties", g_hash_table_size (asv)); + DEBUG ("Received %u channel properties", g_hash_table_size (asv)); - self->priv->exists = TRUE; + self->priv->exists = TRUE; - _tp_channel_maybe_set_channel_type (self, - tp_asv_get_string (asv, "ChannelType")); - _tp_channel_maybe_set_interfaces (self, - tp_asv_get_boxed (asv, "Interfaces", G_TYPE_STRV)); + _tp_channel_maybe_set_channel_type (self, + tp_asv_get_string (asv, "ChannelType")); + _tp_channel_maybe_set_interfaces (self, + tp_asv_get_boxed (asv, "Interfaces", G_TYPE_STRV)); - u = tp_asv_get_uint32 (asv, "TargetHandleType", &valid); - _tp_channel_maybe_set_handle_type (self, u, valid); + u = tp_asv_get_uint32 (asv, "TargetHandleType", &valid); + _tp_channel_maybe_set_handle_type (self, u, valid); - u = tp_asv_get_uint32 (asv, "TargetHandle", &valid); - _tp_channel_maybe_set_handle (self, u, valid); + u = tp_asv_get_uint32 (asv, "TargetHandle", &valid); + _tp_channel_maybe_set_handle (self, u, valid); - _tp_channel_maybe_set_identifier (self, - tp_asv_get_string (asv, "TargetID")); + _tp_channel_maybe_set_identifier (self, + tp_asv_get_string (asv, "TargetID")); - u = tp_asv_get_uint32 (asv, "InitiatorHandle", &valid); + u = tp_asv_get_uint32 (asv, "InitiatorHandle", &valid); - if (valid) - { - g_hash_table_insert (self->priv->channel_properties, - g_strdup (TP_PROP_CHANNEL_INITIATOR_HANDLE), - tp_g_value_slice_new_uint (u)); - } + if (valid) + { + g_hash_table_insert (self->priv->channel_properties, + g_strdup (TP_PROP_CHANNEL_INITIATOR_HANDLE), + tp_g_value_slice_new_uint (u)); + } - s = tp_asv_get_string (asv, "InitiatorID"); + s = tp_asv_get_string (asv, "InitiatorID"); - if (s != NULL) - { - g_hash_table_insert (self->priv->channel_properties, - g_strdup (TP_PROP_CHANNEL_INITIATOR_ID), - tp_g_value_slice_new_string (s)); - } - - b = tp_asv_get_boolean (asv, "Requested", &valid); + if (s != NULL) + { + g_hash_table_insert (self->priv->channel_properties, + g_strdup (TP_PROP_CHANNEL_INITIATOR_ID), + tp_g_value_slice_new_string (s)); + } - if (valid) - { - g_hash_table_insert (self->priv->channel_properties, - g_strdup (TP_PROP_CHANNEL_REQUESTED), - tp_g_value_slice_new_boolean (b)); - } + b = tp_asv_get_boolean (asv, "Requested", &valid); - g_object_notify ((GObject *) self, "channel-type"); - g_object_notify ((GObject *) self, "interfaces"); - g_object_notify ((GObject *) self, "handle-type"); - g_object_notify ((GObject *) self, "handle"); - g_object_notify ((GObject *) self, "identifier"); - } - else + if (valid) { - /* GetAll failed; it's not mandatory, so continue with the separate - * (spec 0.16.x-style) method calls */ - DEBUG ("GetAll failed, falling back to 0.16 API:" - " %s", error->message); + g_hash_table_insert (self->priv->channel_properties, + g_strdup (TP_PROP_CHANNEL_REQUESTED), + tp_g_value_slice_new_boolean (b)); } - /* Either way, we'll fill in any other gaps in the properties, then - * continue with any other introspection */ + g_object_notify ((GObject *) self, "channel-type"); + g_object_notify ((GObject *) self, "interfaces"); + g_object_notify ((GObject *) self, "handle-type"); + g_object_notify ((GObject *) self, "handle"); + g_object_notify ((GObject *) self, "identifier"); + _tp_channel_continue_introspection (self); } - static void _tp_channel_get_properties (TpChannel *self) { - /* skip it if we already have all the details we want */ - if (self->priv->handle_type != TP_UNKNOWN_HANDLE_TYPE - && (self->priv->handle != 0 || - self->priv->handle_type == TP_HANDLE_TYPE_NONE) - && self->priv->channel_type != 0 - /* currently we always re-fetch the interfaces later, so don't check: - && tp_asv_get_boxed (self->priv->channel_properties, - TP_PROP_CHANNEL_INTERFACES, G_TYPE_STRV) != NULL - */ - && tp_asv_get_string (self->priv->channel_properties, - TP_PROP_CHANNEL_TARGET_ID) != NULL - && tp_asv_get_string (self->priv->channel_properties, - TP_PROP_CHANNEL_INITIATOR_ID) != NULL - ) - { - gboolean valid; - - tp_asv_get_uint32 (self->priv->channel_properties, - TP_PROP_CHANNEL_INITIATOR_HANDLE, &valid); - - if (!valid) - goto missing; - - tp_asv_get_boolean (self->priv->channel_properties, - TP_PROP_CHANNEL_REQUESTED, &valid); - - if (!valid) - goto missing; - - _tp_channel_continue_introspection (self); - return; - } - -missing: tp_cli_dbus_properties_call_get_all (self, -1, TP_IFACE_CHANNEL, _tp_channel_got_properties, NULL, NULL, NULL); } @@ -1125,15 +1033,6 @@ tp_channel_constructor (GType type, g_queue_push_tail (self->priv->introspect_needed, _tp_channel_create_contacts); - /* This makes a call unless (a) we already know the Interfaces by now, and - * (b) priv->exists is TRUE (i.e. either GetAll, GetHandle or GetChannelType - * has succeeded). - * - * This means the channel never becomes ready until we re-enter the - * main loop, and we always verify that the channel does actually exist. */ - g_queue_push_tail (self->priv->introspect_needed, - _tp_channel_get_interfaces); - /* this needs doing *after* GetInterfaces so we know whether we're a group */ g_queue_push_tail (self->priv->introspect_needed, _tp_channel_get_group_properties); diff --git a/tests/dbus/base-client.c b/tests/dbus/base-client.c index 080f28b5e..18539a0b0 100644 --- a/tests/dbus/base-client.c +++ b/tests/dbus/base-client.c @@ -129,7 +129,7 @@ setup (Test *test, test->text_chan_service = TP_TESTS_TEXT_CHANNEL_NULL ( tp_tests_object_new_static_class ( - TP_TESTS_TYPE_TEXT_CHANNEL_NULL, + TP_TESTS_TYPE_PROPS_TEXT_CHANNEL, "connection", test->base_connection, "object-path", chan_path, "handle", handle, @@ -152,7 +152,7 @@ setup (Test *test, test->text_chan_service_2 = TP_TESTS_TEXT_CHANNEL_NULL ( tp_tests_object_new_static_class ( - TP_TESTS_TYPE_TEXT_CHANNEL_NULL, + TP_TESTS_TYPE_PROPS_TEXT_CHANNEL, "connection", test->base_connection, "object-path", chan_path, "handle", handle, diff --git a/tests/dbus/channel-dispatch-operation.c b/tests/dbus/channel-dispatch-operation.c index e8cae5452..db4810819 100644 --- a/tests/dbus/channel-dispatch-operation.c +++ b/tests/dbus/channel-dispatch-operation.c @@ -107,7 +107,7 @@ setup_services (Test *test, test->text_chan_service = TP_TESTS_TEXT_CHANNEL_NULL ( tp_tests_object_new_static_class ( - TP_TESTS_TYPE_TEXT_CHANNEL_NULL, + TP_TESTS_TYPE_PROPS_TEXT_CHANNEL, "connection", test->base_connection, "object-path", chan_path, "handle", handle, @@ -130,7 +130,7 @@ setup_services (Test *test, test->text_chan_service_2 = TP_TESTS_TEXT_CHANNEL_NULL ( tp_tests_object_new_static_class ( - TP_TESTS_TYPE_TEXT_CHANNEL_NULL, + TP_TESTS_TYPE_PROPS_TEXT_CHANNEL, "connection", test->base_connection, "object-path", chan_path, "handle", handle, diff --git a/tests/dbus/channel-introspect.c b/tests/dbus/channel-introspect.c index b1e182849..86370f2c6 100644 --- a/tests/dbus/channel-introspect.c +++ b/tests/dbus/channel-introspect.c @@ -190,10 +190,6 @@ main (int argc, tp_tests_proxy_run_until_dbus_queue_processed (conn); - TP_TESTS_TEXT_CHANNEL_NULL (service_props_chan)->get_handle_called = 0; - TP_TESTS_TEXT_CHANNEL_NULL (service_props_chan)->get_interfaces_called = 0; - TP_TESTS_TEXT_CHANNEL_NULL (service_props_chan)->get_channel_type_called = 0; - chan = tp_channel_new (conn, props_chan_path, NULL, TP_UNKNOWN_HANDLE_TYPE, 0, &error); g_assert_no_error (error); @@ -209,15 +205,6 @@ main (int argc, MYASSERT (tp_channel_run_until_ready (chan, &error, NULL), ""); g_assert_no_error (error); - g_assert_cmpuint ( - TP_TESTS_TEXT_CHANNEL_NULL (service_props_chan)->get_handle_called, ==, - 0); - g_assert_cmpuint ( - TP_TESTS_TEXT_CHANNEL_NULL (service_props_chan)->get_channel_type_called, - ==, 0); - g_assert_cmpuint ( - TP_TESTS_TEXT_CHANNEL_NULL (service_props_chan)->get_interfaces_called, - ==, 0); g_assert_cmpint (tp_proxy_is_prepared (chan, TP_CHANNEL_FEATURE_CORE), ==, TRUE); @@ -260,10 +247,6 @@ main (int argc, tp_tests_proxy_run_until_dbus_queue_processed (conn); - TP_TESTS_TEXT_CHANNEL_NULL (service_props_chan)->get_handle_called = 0; - TP_TESTS_TEXT_CHANNEL_NULL (service_props_chan)->get_interfaces_called = 0; - TP_TESTS_TEXT_CHANNEL_NULL (service_props_chan)->get_channel_type_called = 0; - g_hash_table_remove_all (TP_TESTS_PROPS_TEXT_CHANNEL (service_props_chan) ->dbus_property_interfaces_retrieved); @@ -288,20 +271,10 @@ main (int argc, MYASSERT (tp_channel_run_until_ready (chan, &error, NULL), ""); g_assert_no_error (error); g_assert_cmpuint (g_hash_table_size ( - service_props_chan->dbus_property_interfaces_retrieved), ==, 0); - g_assert_cmpuint ( - TP_TESTS_TEXT_CHANNEL_NULL (service_props_chan)->get_handle_called, ==, 0); - g_assert_cmpuint ( - TP_TESTS_TEXT_CHANNEL_NULL (service_props_chan)->get_channel_type_called, - ==, 0); - /* FIXME: with an improved fast-path we could avoid this one too maybe? */ - /* - g_assert_cmpuint ( - TP_TESTS_TEXT_CHANNEL_NULL (service_props_chan)->get_interfaces_called, - ==, 0); - */ + service_props_chan->dbus_property_interfaces_retrieved), ==, 1); - assert_chan_sane (chan, handle, FALSE, handle, IDENTIFIER); + assert_chan_sane (chan, handle, TRUE, service_conn_as_base->self_handle, + tp_handle_inspect (contact_repo, service_conn_as_base->self_handle)); g_object_unref (chan); chan = NULL; @@ -311,11 +284,6 @@ main (int argc, tp_tests_proxy_run_until_dbus_queue_processed (conn); - TP_TESTS_TEXT_CHANNEL_NULL (service_props_group_chan)->get_handle_called = 0; - TP_TESTS_TEXT_CHANNEL_NULL (service_props_group_chan)->get_interfaces_called = 0; - TP_TESTS_TEXT_CHANNEL_NULL (service_props_group_chan)->get_channel_type_called - = 0; - g_hash_table_remove_all (TP_TESTS_PROPS_TEXT_CHANNEL ( service_props_group_chan) ->dbus_property_interfaces_retrieved); @@ -348,22 +316,20 @@ main (int argc, MYASSERT (tp_channel_run_until_ready (chan, &error, NULL), ""); g_assert_no_error (error); - g_assert_cmpuint (TP_TESTS_TEXT_CHANNEL_NULL (service_props_group_chan) - ->get_handle_called, ==, 0); - g_assert_cmpuint (TP_TESTS_TEXT_CHANNEL_NULL (service_props_group_chan) - ->get_channel_type_called, ==, 0); - g_assert_cmpuint (TP_TESTS_TEXT_CHANNEL_NULL (service_props_group_chan) - ->get_interfaces_called, ==, 0); g_assert_cmpuint (g_hash_table_size ( TP_TESTS_PROPS_TEXT_CHANNEL (service_props_group_chan) - ->dbus_property_interfaces_retrieved), ==, 1); - /* Only Chan.I.Group's properties should have been retrieved */ + ->dbus_property_interfaces_retrieved), ==, 2); g_assert (g_hash_table_lookup ( TP_TESTS_PROPS_TEXT_CHANNEL (service_props_group_chan) ->dbus_property_interfaces_retrieved, GUINT_TO_POINTER (TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP)) != NULL); + g_assert (g_hash_table_lookup ( + TP_TESTS_PROPS_TEXT_CHANNEL (service_props_group_chan) + ->dbus_property_interfaces_retrieved, + GUINT_TO_POINTER (TP_IFACE_QUARK_CHANNEL)) != NULL); - assert_chan_sane (chan, handle, FALSE, handle, IDENTIFIER); + assert_chan_sane (chan, handle, TRUE, service_conn_as_base->self_handle, + tp_handle_inspect (contact_repo, service_conn_as_base->self_handle)); g_object_unref (chan); chan = NULL; diff --git a/tests/dbus/channel.c b/tests/dbus/channel.c index de162a8ed..ae520ae88 100644 --- a/tests/dbus/channel.c +++ b/tests/dbus/channel.c @@ -49,7 +49,7 @@ create_contact_chan (Test *test) tp_clear_object (&test->chan_room_service); /* Create service-side channel object */ - chan_path = g_strdup_printf ("%s/Channel", + chan_path = g_strdup_printf ("%s/ContactChannel", tp_proxy_get_object_path (test->connection)); test->contact_repo = tp_base_connection_get_handles (test->base_connection, @@ -61,7 +61,7 @@ create_contact_chan (Test *test) g_assert_no_error (test->error); test->chan_contact_service = tp_tests_object_new_static_class ( - TP_TESTS_TYPE_TEXT_CHANNEL_NULL, + TP_TESTS_TYPE_PROPS_TEXT_CHANNEL, "connection", test->base_connection, "handle", handle, "object-path", chan_path, @@ -88,7 +88,7 @@ create_room_chan (Test *test) tp_clear_object (&test->chan_room_service); /* Create service-side channel object */ - chan_path = g_strdup_printf ("%s/Channel2", + chan_path = g_strdup_printf ("%s/RoomChannel", tp_proxy_get_object_path (test->connection)); test->room_repo = tp_base_connection_get_handles (test->base_connection, diff --git a/tests/dbus/finalized-in-invalidated-handler.c b/tests/dbus/finalized-in-invalidated-handler.c index 90edd8925..0eeee5f40 100644 --- a/tests/dbus/finalized-in-invalidated-handler.c +++ b/tests/dbus/finalized-in-invalidated-handler.c @@ -121,7 +121,7 @@ main (int argc, chan_path = g_strdup_printf ("%s/Channel", conn_path); service_chan = TP_TESTS_TEXT_CHANNEL_NULL (tp_tests_object_new_static_class ( - TP_TESTS_TYPE_TEXT_CHANNEL_NULL, + TP_TESTS_TYPE_PROPS_TEXT_CHANNEL, "connection", service_conn, "object-path", chan_path, "handle", handle, diff --git a/tests/dbus/simple-approver.c b/tests/dbus/simple-approver.c index fbd298cfa..d9465c943 100644 --- a/tests/dbus/simple-approver.c +++ b/tests/dbus/simple-approver.c @@ -94,7 +94,7 @@ setup (Test *test, test->text_chan_service = TP_TESTS_TEXT_CHANNEL_NULL ( tp_tests_object_new_static_class ( - TP_TESTS_TYPE_TEXT_CHANNEL_NULL, + TP_TESTS_TYPE_PROPS_TEXT_CHANNEL, "connection", test->base_connection, "object-path", chan_path, "handle", handle, diff --git a/tests/dbus/simple-handler.c b/tests/dbus/simple-handler.c index 9e4594d45..fc10933d7 100644 --- a/tests/dbus/simple-handler.c +++ b/tests/dbus/simple-handler.c @@ -85,7 +85,7 @@ setup (Test *test, test->text_chan_service = TP_TESTS_TEXT_CHANNEL_NULL ( tp_tests_object_new_static_class ( - TP_TESTS_TYPE_TEXT_CHANNEL_NULL, + TP_TESTS_TYPE_PROPS_TEXT_CHANNEL, "connection", test->base_connection, "object-path", chan_path, "handle", handle, diff --git a/tests/dbus/simple-observer.c b/tests/dbus/simple-observer.c index 9d532dc8f..7e64dfaf2 100644 --- a/tests/dbus/simple-observer.c +++ b/tests/dbus/simple-observer.c @@ -85,7 +85,7 @@ setup (Test *test, test->text_chan_service = TP_TESTS_TEXT_CHANNEL_NULL ( tp_tests_object_new_static_class ( - TP_TESTS_TYPE_TEXT_CHANNEL_NULL, + TP_TESTS_TYPE_PROPS_TEXT_CHANNEL, "connection", test->base_connection, "object-path", chan_path, "handle", handle, diff --git a/tests/lib/simple-conn.c b/tests/lib/simple-conn.c index 338ddd5c9..e3f6f7941 100644 --- a/tests/lib/simple-conn.c +++ b/tests/lib/simple-conn.c @@ -351,7 +351,7 @@ tp_tests_simple_connection_ensure_text_chan (TpTestsSimpleConnection *self, chan = TP_TESTS_TEXT_CHANNEL_NULL ( tp_tests_object_new_static_class ( - TP_TESTS_TYPE_TEXT_CHANNEL_NULL, + TP_TESTS_TYPE_PROPS_TEXT_CHANNEL, "connection", self, "object-path", chan_path, "handle", handle, diff --git a/tests/lib/textchan-null.c b/tests/lib/textchan-null.c index 89a0198f3..c0455d5fc 100644 --- a/tests/lib/textchan-null.c +++ b/tests/lib/textchan-null.c @@ -475,42 +475,6 @@ channel_close (TpSvcChannel *iface, } static void -channel_get_channel_type (TpSvcChannel *iface, - DBusGMethodInvocation *context) -{ - TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (iface); - - self->get_channel_type_called++; - - tp_svc_channel_return_from_get_channel_type (context, - TP_IFACE_CHANNEL_TYPE_TEXT); -} - -static void -channel_get_handle (TpSvcChannel *iface, - DBusGMethodInvocation *context) -{ - TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (iface); - - self->get_handle_called++; - - tp_svc_channel_return_from_get_handle (context, TP_HANDLE_TYPE_CONTACT, - self->priv->handle); -} - -static void -channel_get_interfaces (TpSvcChannel *iface, - DBusGMethodInvocation *context) -{ - TpTestsTextChannelNull *self = TP_TESTS_TEXT_CHANNEL_NULL (iface); - - self->get_interfaces_called++; - - tp_svc_channel_return_from_get_interfaces (context, - tp_tests_text_channel_null_interfaces); -} - -static void channel_iface_init (gpointer iface, gpointer data) { @@ -518,9 +482,6 @@ channel_iface_init (gpointer iface, #define IMPLEMENT(x) tp_svc_channel_implement_##x (klass, channel_##x) IMPLEMENT (close); - IMPLEMENT (get_channel_type); - IMPLEMENT (get_handle); - IMPLEMENT (get_interfaces); #undef IMPLEMENT } diff --git a/tests/lib/textchan-null.h b/tests/lib/textchan-null.h index 0f5db8cff..96542c5e4 100644 --- a/tests/lib/textchan-null.h +++ b/tests/lib/textchan-null.h @@ -49,10 +49,6 @@ struct _TpTestsTextChannelNull { GObject parent; TpMessageMixin message; - guint get_handle_called; - guint get_interfaces_called; - guint get_channel_type_called; - TpTestsTextChannelNullPrivate *priv; }; |