Update to upstream 1.0.1
[profile/ivi/gsignond.git] / docs / html / GSignondPlugin.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <title>gsignond API Reference Manual: GSignondPlugin</title>
6 <meta name="generator" content="DocBook XSL Stylesheets V1.78.1">
7 <link rel="home" href="index.html" title="gsignond API Reference Manual">
8 <link rel="up" href="ch04.html" title="GSignond API for writing GLib-based authentication plugins">
9 <link rel="prev" href="ch04.html" title="GSignond API for writing GLib-based authentication plugins">
10 <link rel="next" href="gsignond-GSignondDictionary.html" title="GSignondDictionary">
11 <meta name="generator" content="GTK-Doc V1.20 (XML mode)">
12 <link rel="stylesheet" href="style.css" type="text/css">
13 </head>
14 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15 <table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="10"><tr valign="middle">
16 <td width="100%" align="left" class="shortcuts">
17 <a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span> 
18                   <a href="#GSignondPlugin.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 
19                   <a href="#GSignondPlugin.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span> 
20                   <a href="#GSignondPlugin.properties" class="shortcut">Properties</a></span><span id="nav_signals"> <span class="dim">|</span> 
21                   <a href="#GSignondPlugin.signals" class="shortcut">Signals</a></span>
22 </td>
23 <td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
24 <td><a accesskey="u" href="ch04.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
25 <td><a accesskey="p" href="ch04.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
26 <td><a accesskey="n" href="gsignond-GSignondDictionary.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
27 </tr></table>
28 <div class="refentry">
29 <a name="GSignondPlugin"></a><div class="titlepage"></div>
30 <div class="refnamediv"><table width="100%"><tr>
31 <td valign="top">
32 <h2><span class="refentrytitle"><a name="GSignondPlugin.top_of_page"></a>GSignondPlugin</span></h2>
33 <p>GSignondPlugin — an interface for implementing GLib-based authentication plugins</p>
34 </td>
35 <td class="gallery_image" valign="top" align="right"></td>
36 </tr></table></div>
37 <div class="refsect1">
38 <a name="GSignondPlugin.functions"></a><h2>Functions</h2>
39 <div class="informaltable"><table width="100%" border="0">
40 <colgroup>
41 <col width="150px" class="functions_return">
42 <col class="functions_name">
43 </colgroup>
44 <tbody>
45 <tr>
46 <td class="function_type">
47 <span class="returnvalue">void</span>
48 </td>
49 <td class="function_name">
50 <a class="link" href="GSignondPlugin.html#gsignond-plugin-cancel" title="gsignond_plugin_cancel ()">gsignond_plugin_cancel</a> <span class="c_punctuation">()</span>
51 </td>
52 </tr>
53 <tr>
54 <td class="function_type">
55 <span class="returnvalue">void</span>
56 </td>
57 <td class="function_name">
58 <a class="link" href="GSignondPlugin.html#gsignond-plugin-request-initial" title="gsignond_plugin_request_initial ()">gsignond_plugin_request_initial</a> <span class="c_punctuation">()</span>
59 </td>
60 </tr>
61 <tr>
62 <td class="function_type">
63 <span class="returnvalue">void</span>
64 </td>
65 <td class="function_name">
66 <a class="link" href="GSignondPlugin.html#gsignond-plugin-request" title="gsignond_plugin_request ()">gsignond_plugin_request</a> <span class="c_punctuation">()</span>
67 </td>
68 </tr>
69 <tr>
70 <td class="function_type">
71 <span class="returnvalue">void</span>
72 </td>
73 <td class="function_name">
74 <a class="link" href="GSignondPlugin.html#gsignond-plugin-user-action-finished" title="gsignond_plugin_user_action_finished ()">gsignond_plugin_user_action_finished</a> <span class="c_punctuation">()</span>
75 </td>
76 </tr>
77 <tr>
78 <td class="function_type">
79 <span class="returnvalue">void</span>
80 </td>
81 <td class="function_name">
82 <a class="link" href="GSignondPlugin.html#gsignond-plugin-refresh" title="gsignond_plugin_refresh ()">gsignond_plugin_refresh</a> <span class="c_punctuation">()</span>
83 </td>
84 </tr>
85 <tr>
86 <td class="function_type">
87 <span class="returnvalue">void</span>
88 </td>
89 <td class="function_name">
90 <a class="link" href="GSignondPlugin.html#gsignond-plugin-response" title="gsignond_plugin_response ()">gsignond_plugin_response</a> <span class="c_punctuation">()</span>
91 </td>
92 </tr>
93 <tr>
94 <td class="function_type">
95 <span class="returnvalue">void</span>
96 </td>
97 <td class="function_name">
98 <a class="link" href="GSignondPlugin.html#gsignond-plugin-response-final" title="gsignond_plugin_response_final ()">gsignond_plugin_response_final</a> <span class="c_punctuation">()</span>
99 </td>
100 </tr>
101 <tr>
102 <td class="function_type">
103 <span class="returnvalue">void</span>
104 </td>
105 <td class="function_name">
106 <a class="link" href="GSignondPlugin.html#gsignond-plugin-store" title="gsignond_plugin_store ()">gsignond_plugin_store</a> <span class="c_punctuation">()</span>
107 </td>
108 </tr>
109 <tr>
110 <td class="function_type">
111 <span class="returnvalue">void</span>
112 </td>
113 <td class="function_name">
114 <a class="link" href="GSignondPlugin.html#gsignond-plugin-error" title="gsignond_plugin_error ()">gsignond_plugin_error</a> <span class="c_punctuation">()</span>
115 </td>
116 </tr>
117 <tr>
118 <td class="function_type">
119 <span class="returnvalue">void</span>
120 </td>
121 <td class="function_name">
122 <a class="link" href="GSignondPlugin.html#gsignond-plugin-user-action-required" title="gsignond_plugin_user_action_required ()">gsignond_plugin_user_action_required</a> <span class="c_punctuation">()</span>
123 </td>
124 </tr>
125 <tr>
126 <td class="function_type">
127 <span class="returnvalue">void</span>
128 </td>
129 <td class="function_name">
130 <a class="link" href="GSignondPlugin.html#gsignond-plugin-refreshed" title="gsignond_plugin_refreshed ()">gsignond_plugin_refreshed</a> <span class="c_punctuation">()</span>
131 </td>
132 </tr>
133 <tr>
134 <td class="function_type">
135 <span class="returnvalue">void</span>
136 </td>
137 <td class="function_name">
138 <a class="link" href="GSignondPlugin.html#gsignond-plugin-status-changed" title="gsignond_plugin_status_changed ()">gsignond_plugin_status_changed</a> <span class="c_punctuation">()</span>
139 </td>
140 </tr>
141 </tbody>
142 </table></div>
143 </div>
144 <div class="refsect1">
145 <a name="GSignondPlugin.properties"></a><h2>Properties</h2>
146 <div class="informaltable"><table border="0">
147 <colgroup>
148 <col width="150px" class="properties_type">
149 <col width="300px" class="properties_name">
150 <col width="200px" class="properties_flags">
151 </colgroup>
152 <tbody>
153 <tr>
154 <td class="property_type"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Boxed-Types.html#GStrv"><span class="type">GStrv</span></a></td>
155 <td class="property_name"><a class="link" href="GSignondPlugin.html#GSignondPlugin--mechanisms" title="The “mechanisms” property">mechanisms</a></td>
156 <td class="property_flags">Read</td>
157 </tr>
158 <tr>
159 <td class="property_type">
160 <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
161 <td class="property_name"><a class="link" href="GSignondPlugin.html#GSignondPlugin--type" title="The “type” property">type</a></td>
162 <td class="property_flags">Read</td>
163 </tr>
164 </tbody>
165 </table></div>
166 </div>
167 <div class="refsect1">
168 <a name="GSignondPlugin.signals"></a><h2>Signals</h2>
169 <div class="informaltable"><table border="0">
170 <colgroup>
171 <col width="150px" class="signals_return">
172 <col width="300px" class="signals_name">
173 <col width="200px" class="signals_flags">
174 </colgroup>
175 <tbody>
176 <tr>
177 <td class="signal_type"><span class="returnvalue">void</span></td>
178 <td class="signal_name"><a class="link" href="GSignondPlugin.html#GSignondPlugin-error" title="The “error” signal">error</a></td>
179 <td class="signal_flags"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td>
180 </tr>
181 <tr>
182 <td class="signal_type"><span class="returnvalue">void</span></td>
183 <td class="signal_name"><a class="link" href="GSignondPlugin.html#GSignondPlugin-refreshed" title="The “refreshed” signal">refreshed</a></td>
184 <td class="signal_flags"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td>
185 </tr>
186 <tr>
187 <td class="signal_type"><span class="returnvalue">void</span></td>
188 <td class="signal_name"><a class="link" href="GSignondPlugin.html#GSignondPlugin-response" title="The “response” signal">response</a></td>
189 <td class="signal_flags"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td>
190 </tr>
191 <tr>
192 <td class="signal_type"><span class="returnvalue">void</span></td>
193 <td class="signal_name"><a class="link" href="GSignondPlugin.html#GSignondPlugin-response-final" title="The “response-final” signal">response-final</a></td>
194 <td class="signal_flags"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td>
195 </tr>
196 <tr>
197 <td class="signal_type"><span class="returnvalue">void</span></td>
198 <td class="signal_name"><a class="link" href="GSignondPlugin.html#GSignondPlugin-status-changed" title="The “status-changed” signal">status-changed</a></td>
199 <td class="signal_flags"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td>
200 </tr>
201 <tr>
202 <td class="signal_type"><span class="returnvalue">void</span></td>
203 <td class="signal_name"><a class="link" href="GSignondPlugin.html#GSignondPlugin-store" title="The “store” signal">store</a></td>
204 <td class="signal_flags"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td>
205 </tr>
206 <tr>
207 <td class="signal_type"><span class="returnvalue">void</span></td>
208 <td class="signal_name"><a class="link" href="GSignondPlugin.html#GSignondPlugin-user-action-required" title="The “user-action-required” signal">user-action-required</a></td>
209 <td class="signal_flags"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></td>
210 </tr>
211 </tbody>
212 </table></div>
213 </div>
214 <div class="refsect1">
215 <a name="GSignondPlugin.other"></a><h2>Types and Values</h2>
216 <div class="informaltable"><table width="100%" border="0">
217 <colgroup>
218 <col width="150px" class="name">
219 <col class="description">
220 </colgroup>
221 <tbody>
222 <tr>
223 <td class="datatype_keyword">enum</td>
224 <td class="function_name"><a class="link" href="GSignondPlugin.html#GSignondPluginState" title="enum GSignondPluginState">GSignondPluginState</a></td>
225 </tr>
226 <tr>
227 <td class="datatype_keyword">struct</td>
228 <td class="function_name"><a class="link" href="GSignondPlugin.html#GSignondPluginInterface" title="struct GSignondPluginInterface">GSignondPluginInterface</a></td>
229 </tr>
230 </tbody>
231 </table></div>
232 </div>
233 <div class="refsect1">
234 <a name="GSignondPlugin.object-hierarchy"></a><h2>Object Hierarchy</h2>
235 <pre class="screen">    GInterface
236     <span class="lineart">╰──</span> GSignondPlugin
237 </pre>
238 </div>
239 <div class="refsect1">
240 <a name="GSignondPlugin.includes"></a><h2>Includes</h2>
241 <pre class="synopsis">#include &lt;gsignond/gsignond-plugin-interface.h&gt;
242 </pre>
243 </div>
244 <div class="refsect1">
245 <a name="GSignondPlugin.description"></a><h2>Description</h2>
246 <p><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> is an interface for implementing GLib-based authentication plugins.</p>
247 <p>When creating a plugin, write the <a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#GObject"><span class="type">GObject</span></a> boilerplate code as usual, but</p>
248 <p>a) declare the type as follows:</p>
249 <div class="informalexample">
250   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
251     <tbody>
252       <tr>
253         <td class="listing_lines" align="right"><pre>1
254 2
255 3</pre></td>
256         <td class="listing_code"><pre class="programlisting">G_TYPE_OBJECT<span class="gtkdoc opt">,</span>
257 <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#G-IMPLEMENT-INTERFACE:CAPS">G_IMPLEMENT_INTERFACE</a></span> <span class="gtkdoc opt">(</span>GSIGNOND_TYPE_PLUGIN<span class="gtkdoc opt">,</span>
258                        gsignond_plugin_interface_init<span class="gtkdoc opt">));</span></pre></td>
259       </tr>
260     </tbody>
261   </table>
262 </div>
263
264 <p></p>
265 <p>b) implement <code class="function">gsignond_plugin_interface_init</code> as follows:</p>
266 <div class="informalexample">
267   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
268     <tbody>
269       <tr>
270         <td class="listing_lines" align="right"><pre>1
271 2
272 3
273 4
274 5
275 6
276 7
277 8</pre></td>
278         <td class="listing_code"><pre class="programlisting"><span class="function">gsignond_plugin_interface_init</span> <span class="gtkdoc opt">(</span>GSignondPluginInterface <span class="gtkdoc opt">*</span>iface<span class="gtkdoc opt">)</span>
279 <span class="gtkdoc opt">{</span>
280     iface<span class="gtkdoc opt">-&gt;</span>cancel <span class="gtkdoc opt">=</span> gsignond_password_plugin_cancel<span class="gtkdoc opt">;</span>
281     iface<span class="gtkdoc opt">-&gt;</span>request_initial <span class="gtkdoc opt">=</span> gsignond_password_plugin_request_initial<span class="gtkdoc opt">;</span>
282     iface<span class="gtkdoc opt">-&gt;</span>request <span class="gtkdoc opt">=</span> gsignond_password_plugin_request<span class="gtkdoc opt">;</span>
283     iface<span class="gtkdoc opt">-&gt;</span>user_action_finished <span class="gtkdoc opt">=</span> gsignond_password_plugin_user_action_finished<span class="gtkdoc opt">;</span>
284     iface<span class="gtkdoc opt">-&gt;</span>refresh <span class="gtkdoc opt">=</span> gsignond_password_plugin_refresh<span class="gtkdoc opt">;</span>
285 <span class="gtkdoc opt">}</span></pre></td>
286       </tr>
287     </tbody>
288   </table>
289 </div>
290
291 <p></p>
292 <p>where the <code class="function">gsignond_password_plugin_cancel</code> etc. are specific implementations of
293 plugin interface methods that every plugin must provide (see below for when
294 and how they're used by the daemon).</p>
295 <p>c) override <a class="link" href="GSignondPlugin.html#GSignondPlugin--type" title="The “type” property"><span class="type">“type”</span></a> and <a class="link" href="GSignondPlugin.html#GSignondPlugin--mechanisms" title="The “mechanisms” property"><span class="type">“mechanisms”</span></a> property 
296 implementations in the plugin class constructor like this:</p>
297 <div class="informalexample">
298   <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
299     <tbody>
300       <tr>
301         <td class="listing_lines" align="right"><pre>1
302 2
303 3
304 4
305 5
306 6
307 7
308 8
309 9
310 10
311 11</pre></td>
312         <td class="listing_code"><pre class="programlisting"><span class="function">gsignond_password_plugin_class_init</span> <span class="gtkdoc opt">(</span>GSignondPasswordPluginClass <span class="gtkdoc opt">*</span>klass<span class="gtkdoc opt">)</span>
313 <span class="gtkdoc opt">{</span>
314     GObjectClass <span class="gtkdoc opt">*</span>gobject_class <span class="gtkdoc opt">=</span> <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#G-OBJECT-CLASS:CAPS">G_OBJECT_CLASS</a></span> <span class="gtkdoc opt">(</span>klass<span class="gtkdoc opt">);</span>
315     
316     gobject_class<span class="gtkdoc opt">-&gt;</span>set_property <span class="gtkdoc opt">=</span> gsignond_password_plugin_set_property<span class="gtkdoc opt">;</span>
317     gobject_class<span class="gtkdoc opt">-&gt;</span>get_property <span class="gtkdoc opt">=</span> gsignond_password_plugin_get_property<span class="gtkdoc opt">;</span>
318     
319     <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-class-override-property">g_object_class_override_property</a></span> <span class="gtkdoc opt">(</span>gobject_class<span class="gtkdoc opt">,</span> PROP_TYPE<span class="gtkdoc opt">,</span> <span class="string">&quot;type&quot;</span><span class="gtkdoc opt">);</span>
320     <span class="function"><a href="http://library.gnome.org/devel/gobject/unstable/gobject-The-Base-Object-Type.html#g-object-class-override-property">g_object_class_override_property</a></span> <span class="gtkdoc opt">(</span>gobject_class<span class="gtkdoc opt">,</span> PROP_MECHANISMS<span class="gtkdoc opt">,</span> 
321                                       <span class="string">&quot;mechanisms&quot;</span><span class="gtkdoc opt">);</span>
322 <span class="gtkdoc opt">}</span></pre></td>
323       </tr>
324     </tbody>
325   </table>
326 </div>
327
328 <p>
329 (naturally, plugin's property setter should ignore attempts to set these properties,
330 and plugin's property getter should provide their values when asked)</p>
331 <div class="refsect1">
332 <a name="id-1.5.2.9.14"></a><h2>The plugin API</h2>
333 </div>
334 <p>Plugins implement authentication sessions which are controlled through the
335 plugin API. Authentication sessions follow one another so there is only one active
336 session at a time.</p>
337 <p>The plugin API is a set of methods and signals that should be used in a specific
338 sequence:</p>
339 <div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
340 <li class="listitem"><p>successful authentication session begins with <a class="link" href="GSignondPlugin.html#gsignond-plugin-request-initial" title="gsignond_plugin_request_initial ()"><code class="function">gsignond_plugin_request_initial()</code></a> and ends
341 with the plugin issuing a <a class="link" href="GSignondPlugin.html#GSignondPlugin-response-final" title="The “response-final” signal"><span class="type">“response-final”</span></a> signal</p></li>
342 <li class="listitem"><p>at any point the application can cancel an active session with 
343 <a class="link" href="GSignondPlugin.html#gsignond-plugin-cancel" title="gsignond_plugin_cancel ()"><code class="function">gsignond_plugin_cancel()</code></a></p></li>
344 <li class="listitem"><p>at any point the plugin can cancel an active session by issuing <a class="link" href="GSignondPlugin.html#GSignondPlugin-error" title="The “error” signal"><span class="type">“error”</span></a>
345 signal, which also provides some details about the cancellation reason.</p></li>
346 <li class="listitem"><p>if a session is active, and the plugin has an intermediate response or needs
347 additional information, it issues <a class="link" href="GSignondPlugin.html#GSignondPlugin-response" title="The “response” signal"><span class="type">“response”</span></a> signal, which the 
348 application should respond to with <a class="link" href="GSignondPlugin.html#gsignond-plugin-request" title="gsignond_plugin_request ()"><code class="function">gsignond_plugin_request()</code></a> method. This can
349 happen more than once.</p></li>
350 <li class="listitem"><p>if the plugin needs to launch UI interaction with the user, it's issuing
351 <a class="link" href="GSignondPlugin.html#GSignondPlugin-user-action-required" title="The “user-action-required” signal"><span class="type">“user-action-required”</span></a> signal, which the application should
352 follow up with <a class="link" href="GSignondPlugin.html#gsignond-plugin-user-action-finished" title="gsignond_plugin_user_action_finished ()"><code class="function">gsignond_plugin_user_action_finished()</code></a> method. This can happen
353 more than once as well.</p></li>
354 <li class="listitem"><p>if, during an active UI session, the application needs a UI refresh 
355 (for example, to fetch a new captcha image), it's
356 requested from the plugin with <a class="link" href="GSignondPlugin.html#gsignond-plugin-refresh" title="gsignond_plugin_refresh ()"><code class="function">gsignond_plugin_refresh()</code></a> method, followed
357 by the plugin's response via <a class="link" href="GSignondPlugin.html#GSignondPlugin-refreshed" title="The “refreshed” signal"><span class="type">“refreshed”</span></a> signal. This can happen
358 more than once.</p></li>
359 <li class="listitem"><p>changes in plugin state are reported through <a class="link" href="GSignondPlugin.html#GSignondPlugin-status-changed" title="The “status-changed” signal"><span class="type">“status-changed”</span></a> signal.</p></li>
360 <li class="listitem"><p>if the plugin needs to store information in persistent storage, it issues
361 <a class="link" href="GSignondPlugin.html#GSignondPlugin-store" title="The “store” signal"><span class="type">“store”</span></a> signal. Later, that same information is provided as a
362 parameter to <a class="link" href="GSignondPlugin.html#gsignond-plugin-request-initial" title="gsignond_plugin_request_initial ()"><code class="function">gsignond_plugin_request_initial()</code></a>.</p></li>
363 </ul></div>
364 <div class="refsect1">
365 <a name="id-1.5.2.9.18"></a><h2>Example plugins</h2>
366 </div>
367 <p>See example plugin implementation here:</p>
368 <a class="ulink" href="https://code.google.com/p/accounts-sso/source/browse/?repo=gsignond#git%2Fsrc%2Fplugins" target="_top">
369 https://code.google.com/p/accounts-sso/source/browse/?repo=gsignond#git%2Fsrc%2Fplugins</a>.
370 <p>For examples of out of tree plugins, you can have a look at SASL or OAuth plugin
371 implementations:</p>
372 <a class="ulink" href="http://code.google.com/p/accounts-sso/source/browse?repo=gsignond-plugin-sasl" target="_top">
373 http://code.google.com/p/accounts-sso/source/browse?repo=gsignond-plugin-sasl</a>.
374 <a class="ulink" href="http://code.google.com/p/accounts-sso/source/browse?repo=gsignond-plugin-oa" target="_top">
375 http://code.google.com/p/accounts-sso/source/browse?repo=gsignond-plugin-oa</a>.
376
377 </div>
378 <div class="refsect1">
379 <a name="GSignondPlugin.functions_details"></a><h2>Functions</h2>
380 <div class="refsect2">
381 <a name="gsignond-plugin-cancel"></a><h3>gsignond_plugin_cancel ()</h3>
382 <pre class="programlisting"><span class="returnvalue">void</span>
383 gsignond_plugin_cancel (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>);</pre>
384 <p>This method cancels an ongoing authentication session. The plugin implementations
385 should issue a <a class="link" href="GSignondPlugin.html#GSignondPlugin-error" title="The “error” signal"><span class="type">“error”</span></a> signal with <a class="link" href="gsignond-Errors.html#GSIGNOND-ERROR-SESSION-CANCELED:CAPS"><span class="type">GSIGNOND_ERROR_SESSION_CANCELED</span></a>
386 error, and prepare for a new authentication session.</p>
387 <div class="refsect3">
388 <a name="id-1.5.2.10.2.5"></a><h4>Parameters</h4>
389 <div class="informaltable"><table width="100%" border="0">
390 <colgroup>
391 <col width="150px" class="parameters_name">
392 <col class="parameters_description">
393 <col width="200px" class="parameters_annotations">
394 </colgroup>
395 <tbody><tr>
396 <td class="parameter_name"><p>self</p></td>
397 <td class="parameter_description"><p>plugin instance</p></td>
398 <td class="parameter_annotations"> </td>
399 </tr></tbody>
400 </table></div>
401 </div>
402 </div>
403 <hr>
404 <div class="refsect2">
405 <a name="gsignond-plugin-request-initial"></a><h3>gsignond_plugin_request_initial ()</h3>
406 <pre class="programlisting"><span class="returnvalue">void</span>
407 gsignond_plugin_request_initial (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
408                                  <em class="parameter"><code><a href="http://gsignon-docs.accounts-sso.googlecode.com/git/gsignond/gsignond-GSignondSessionData.html#GSignondSessionData"><span class="type">GSignondSessionData</span></a> *session_data</code></em>,
409                                  <em class="parameter"><code><a href="http://gsignon-docs.accounts-sso.googlecode.com/git/gsignond/gsignond-GSignondDictionary.html#GSignondDictionary"><span class="type">GSignondDictionary</span></a> *identity_method_cache</code></em>,
410                                  <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *mechanism</code></em>);</pre>
411 <p>This method starts a new authentication session.</p>
412 <div class="refsect3">
413 <a name="id-1.5.2.10.3.5"></a><h4>Parameters</h4>
414 <div class="informaltable"><table width="100%" border="0">
415 <colgroup>
416 <col width="150px" class="parameters_name">
417 <col class="parameters_description">
418 <col width="200px" class="parameters_annotations">
419 </colgroup>
420 <tbody>
421 <tr>
422 <td class="parameter_name"><p>self</p></td>
423 <td class="parameter_description"><p>plugin instance </p></td>
424 <td class="parameter_annotations"> </td>
425 </tr>
426 <tr>
427 <td class="parameter_name"><p>session_data</p></td>
428 <td class="parameter_description"><p>parameters for the session</p></td>
429 <td class="parameter_annotations"> </td>
430 </tr>
431 <tr>
432 <td class="parameter_name"><p>identity_method_cache</p></td>
433 <td class="parameter_description"><p>data from persistent storage, saved previously via
434 <a class="link" href="GSignondPlugin.html#GSignondPlugin-store" title="The “store” signal"><span class="type">“store”</span></a> signal</p></td>
435 <td class="parameter_annotations"> </td>
436 </tr>
437 <tr>
438 <td class="parameter_name"><p>mechanism</p></td>
439 <td class="parameter_description"><p>mechanism to use for the authentication</p></td>
440 <td class="parameter_annotations"> </td>
441 </tr>
442 </tbody>
443 </table></div>
444 </div>
445 </div>
446 <hr>
447 <div class="refsect2">
448 <a name="gsignond-plugin-request"></a><h3>gsignond_plugin_request ()</h3>
449 <pre class="programlisting"><span class="returnvalue">void</span>
450 gsignond_plugin_request (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
451                          <em class="parameter"><code><a href="http://gsignon-docs.accounts-sso.googlecode.com/git/gsignond/gsignond-GSignondSessionData.html#GSignondSessionData"><span class="type">GSignondSessionData</span></a> *session_data</code></em>);</pre>
452 <p>This method provides the plugin with additional parameters for the session
453 after the plugin has asked for it via <a class="link" href="GSignondPlugin.html#GSignondPlugin-response" title="The “response” signal"><span class="type">“response”</span></a> signal.</p>
454 <div class="refsect3">
455 <a name="id-1.5.2.10.4.5"></a><h4>Parameters</h4>
456 <div class="informaltable"><table width="100%" border="0">
457 <colgroup>
458 <col width="150px" class="parameters_name">
459 <col class="parameters_description">
460 <col width="200px" class="parameters_annotations">
461 </colgroup>
462 <tbody>
463 <tr>
464 <td class="parameter_name"><p>self</p></td>
465 <td class="parameter_description"><p>plugin instance </p></td>
466 <td class="parameter_annotations"> </td>
467 </tr>
468 <tr>
469 <td class="parameter_name"><p>session_data</p></td>
470 <td class="parameter_description"><p>additional parameters for the session</p></td>
471 <td class="parameter_annotations"> </td>
472 </tr>
473 </tbody>
474 </table></div>
475 </div>
476 </div>
477 <hr>
478 <div class="refsect2">
479 <a name="gsignond-plugin-user-action-finished"></a><h3>gsignond_plugin_user_action_finished ()</h3>
480 <pre class="programlisting"><span class="returnvalue">void</span>
481 gsignond_plugin_user_action_finished (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
482                                       <em class="parameter"><code><a href="http://gsignon-docs.accounts-sso.googlecode.com/git/gsignond/gsignond-GSignondSignonuiData.html#GSignondSignonuiData"><span class="type">GSignondSignonuiData</span></a> *ui_data</code></em>);</pre>
483 <p>This method provides the plugin with the results of UI interaction
484 after the plugin has asked for it via <a class="link" href="GSignondPlugin.html#GSignondPlugin-user-action-required" title="The “user-action-required” signal"><span class="type">“user-action-required”</span></a> signal.</p>
485 <div class="refsect3">
486 <a name="id-1.5.2.10.5.5"></a><h4>Parameters</h4>
487 <div class="informaltable"><table width="100%" border="0">
488 <colgroup>
489 <col width="150px" class="parameters_name">
490 <col class="parameters_description">
491 <col width="200px" class="parameters_annotations">
492 </colgroup>
493 <tbody>
494 <tr>
495 <td class="parameter_name"><p>self</p></td>
496 <td class="parameter_description"><p>plugin instance </p></td>
497 <td class="parameter_annotations"> </td>
498 </tr>
499 <tr>
500 <td class="parameter_name"><p>ui_data</p></td>
501 <td class="parameter_description"><p>results of UI interaction</p></td>
502 <td class="parameter_annotations"> </td>
503 </tr>
504 </tbody>
505 </table></div>
506 </div>
507 </div>
508 <hr>
509 <div class="refsect2">
510 <a name="gsignond-plugin-refresh"></a><h3>gsignond_plugin_refresh ()</h3>
511 <pre class="programlisting"><span class="returnvalue">void</span>
512 gsignond_plugin_refresh (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
513                          <em class="parameter"><code><a href="http://gsignon-docs.accounts-sso.googlecode.com/git/gsignond/gsignond-GSignondSignonuiData.html#GSignondSignonuiData"><span class="type">GSignondSignonuiData</span></a> *ui_data</code></em>);</pre>
514 <p>This method asks the plugin to refresh the UI. The plugin responds with
515 <a class="link" href="GSignondPlugin.html#GSignondPlugin-refreshed" title="The “refreshed” signal"><span class="type">“refreshed”</span></a> signal.</p>
516 <div class="refsect3">
517 <a name="id-1.5.2.10.6.5"></a><h4>Parameters</h4>
518 <div class="informaltable"><table width="100%" border="0">
519 <colgroup>
520 <col width="150px" class="parameters_name">
521 <col class="parameters_description">
522 <col width="200px" class="parameters_annotations">
523 </colgroup>
524 <tbody>
525 <tr>
526 <td class="parameter_name"><p>self</p></td>
527 <td class="parameter_description"><p>plugin instance </p></td>
528 <td class="parameter_annotations"> </td>
529 </tr>
530 <tr>
531 <td class="parameter_name"><p>ui_data</p></td>
532 <td class="parameter_description"><p>UI refresh parameters</p></td>
533 <td class="parameter_annotations"> </td>
534 </tr>
535 </tbody>
536 </table></div>
537 </div>
538 </div>
539 <hr>
540 <div class="refsect2">
541 <a name="gsignond-plugin-response"></a><h3>gsignond_plugin_response ()</h3>
542 <pre class="programlisting"><span class="returnvalue">void</span>
543 gsignond_plugin_response (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
544                           <em class="parameter"><code><a href="http://gsignon-docs.accounts-sso.googlecode.com/git/gsignond/gsignond-GSignondSessionData.html#GSignondSessionData"><span class="type">GSignondSessionData</span></a> *session_data</code></em>);</pre>
545 <p>Plugin implementations should use this to issue <a class="link" href="GSignondPlugin.html#GSignondPlugin-response" title="The “response” signal"><span class="type">“response”</span></a>
546 signal. This method should not be used otherwise.</p>
547 <div class="refsect3">
548 <a name="id-1.5.2.10.7.5"></a><h4>Parameters</h4>
549 <div class="informaltable"><table width="100%" border="0">
550 <colgroup>
551 <col width="150px" class="parameters_name">
552 <col class="parameters_description">
553 <col width="200px" class="parameters_annotations">
554 </colgroup>
555 <tbody>
556 <tr>
557 <td class="parameter_name"><p>self</p></td>
558 <td class="parameter_description"><p>plugin instance</p></td>
559 <td class="parameter_annotations"> </td>
560 </tr>
561 <tr>
562 <td class="parameter_name"><p>session_data</p></td>
563 <td class="parameter_description"><p>session data</p></td>
564 <td class="parameter_annotations"> </td>
565 </tr>
566 </tbody>
567 </table></div>
568 </div>
569 </div>
570 <hr>
571 <div class="refsect2">
572 <a name="gsignond-plugin-response-final"></a><h3>gsignond_plugin_response_final ()</h3>
573 <pre class="programlisting"><span class="returnvalue">void</span>
574 gsignond_plugin_response_final (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
575                                 <em class="parameter"><code><a href="http://gsignon-docs.accounts-sso.googlecode.com/git/gsignond/gsignond-GSignondSessionData.html#GSignondSessionData"><span class="type">GSignondSessionData</span></a> *session_data</code></em>);</pre>
576 <p>Plugin implementations should use this to issue <a class="link" href="GSignondPlugin.html#GSignondPlugin-response-final" title="The “response-final” signal"><span class="type">“response-final”</span></a>
577 signal. This method should not be used otherwise.</p>
578 <div class="refsect3">
579 <a name="id-1.5.2.10.8.5"></a><h4>Parameters</h4>
580 <div class="informaltable"><table width="100%" border="0">
581 <colgroup>
582 <col width="150px" class="parameters_name">
583 <col class="parameters_description">
584 <col width="200px" class="parameters_annotations">
585 </colgroup>
586 <tbody>
587 <tr>
588 <td class="parameter_name"><p>self</p></td>
589 <td class="parameter_description"><p>plugin instance</p></td>
590 <td class="parameter_annotations"> </td>
591 </tr>
592 <tr>
593 <td class="parameter_name"><p>session_data</p></td>
594 <td class="parameter_description"><p>session data</p></td>
595 <td class="parameter_annotations"> </td>
596 </tr>
597 </tbody>
598 </table></div>
599 </div>
600 </div>
601 <hr>
602 <div class="refsect2">
603 <a name="gsignond-plugin-store"></a><h3>gsignond_plugin_store ()</h3>
604 <pre class="programlisting"><span class="returnvalue">void</span>
605 gsignond_plugin_store (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
606                        <em class="parameter"><code><a href="http://gsignon-docs.accounts-sso.googlecode.com/git/gsignond/gsignond-GSignondDictionary.html#GSignondDictionary"><span class="type">GSignondDictionary</span></a> *identity_method_cache</code></em>);</pre>
607 <p>Plugin implementations should use this to issue <a class="link" href="GSignondPlugin.html#GSignondPlugin-store" title="The “store” signal"><span class="type">“store”</span></a>
608 signal. This method should not be used otherwise.</p>
609 <div class="refsect3">
610 <a name="id-1.5.2.10.9.5"></a><h4>Parameters</h4>
611 <div class="informaltable"><table width="100%" border="0">
612 <colgroup>
613 <col width="150px" class="parameters_name">
614 <col class="parameters_description">
615 <col width="200px" class="parameters_annotations">
616 </colgroup>
617 <tbody>
618 <tr>
619 <td class="parameter_name"><p>self</p></td>
620 <td class="parameter_description"><p>plugin instance</p></td>
621 <td class="parameter_annotations"> </td>
622 </tr>
623 <tr>
624 <td class="parameter_name"><p>identity_method_cache</p></td>
625 <td class="parameter_description"><p>data to store</p></td>
626 <td class="parameter_annotations"> </td>
627 </tr>
628 </tbody>
629 </table></div>
630 </div>
631 </div>
632 <hr>
633 <div class="refsect2">
634 <a name="gsignond-plugin-error"></a><h3>gsignond_plugin_error ()</h3>
635 <pre class="programlisting"><span class="returnvalue">void</span>
636 gsignond_plugin_error (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
637                        <em class="parameter"><code><a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a> *error</code></em>);</pre>
638 <p>Plugin implementations should use this to issue <a class="link" href="GSignondPlugin.html#GSignondPlugin-error" title="The “error” signal"><span class="type">“error”</span></a>
639 signal. This method should not be used otherwise.</p>
640 <div class="refsect3">
641 <a name="id-1.5.2.10.10.5"></a><h4>Parameters</h4>
642 <div class="informaltable"><table width="100%" border="0">
643 <colgroup>
644 <col width="150px" class="parameters_name">
645 <col class="parameters_description">
646 <col width="200px" class="parameters_annotations">
647 </colgroup>
648 <tbody>
649 <tr>
650 <td class="parameter_name"><p>self</p></td>
651 <td class="parameter_description"><p>plugin instance</p></td>
652 <td class="parameter_annotations"> </td>
653 </tr>
654 <tr>
655 <td class="parameter_name"><p>error</p></td>
656 <td class="parameter_description"><p>the error</p></td>
657 <td class="parameter_annotations"> </td>
658 </tr>
659 </tbody>
660 </table></div>
661 </div>
662 </div>
663 <hr>
664 <div class="refsect2">
665 <a name="gsignond-plugin-user-action-required"></a><h3>gsignond_plugin_user_action_required ()</h3>
666 <pre class="programlisting"><span class="returnvalue">void</span>
667 gsignond_plugin_user_action_required (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
668                                       <em class="parameter"><code><a href="http://gsignon-docs.accounts-sso.googlecode.com/git/gsignond/gsignond-GSignondSignonuiData.html#GSignondSignonuiData"><span class="type">GSignondSignonuiData</span></a> *ui_data</code></em>);</pre>
669 <p>Plugin implementations should use this to issue <a class="link" href="GSignondPlugin.html#GSignondPlugin-user-action-required" title="The “user-action-required” signal"><span class="type">“user-action-required”</span></a>
670 signal. This method should not be used otherwise.</p>
671 <div class="refsect3">
672 <a name="id-1.5.2.10.11.5"></a><h4>Parameters</h4>
673 <div class="informaltable"><table width="100%" border="0">
674 <colgroup>
675 <col width="150px" class="parameters_name">
676 <col class="parameters_description">
677 <col width="200px" class="parameters_annotations">
678 </colgroup>
679 <tbody>
680 <tr>
681 <td class="parameter_name"><p>self</p></td>
682 <td class="parameter_description"><p>plugin instance</p></td>
683 <td class="parameter_annotations"> </td>
684 </tr>
685 <tr>
686 <td class="parameter_name"><p>ui_data</p></td>
687 <td class="parameter_description"><p>UI data</p></td>
688 <td class="parameter_annotations"> </td>
689 </tr>
690 </tbody>
691 </table></div>
692 </div>
693 </div>
694 <hr>
695 <div class="refsect2">
696 <a name="gsignond-plugin-refreshed"></a><h3>gsignond_plugin_refreshed ()</h3>
697 <pre class="programlisting"><span class="returnvalue">void</span>
698 gsignond_plugin_refreshed (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
699                            <em class="parameter"><code><a href="http://gsignon-docs.accounts-sso.googlecode.com/git/gsignond/gsignond-GSignondSignonuiData.html#GSignondSignonuiData"><span class="type">GSignondSignonuiData</span></a> *ui_data</code></em>);</pre>
700 <p>Plugin implementations should use this to issue <a class="link" href="GSignondPlugin.html#GSignondPlugin-refreshed" title="The “refreshed” signal"><span class="type">“refreshed”</span></a>
701 signal. This method should not be used otherwise.</p>
702 <div class="refsect3">
703 <a name="id-1.5.2.10.12.5"></a><h4>Parameters</h4>
704 <div class="informaltable"><table width="100%" border="0">
705 <colgroup>
706 <col width="150px" class="parameters_name">
707 <col class="parameters_description">
708 <col width="200px" class="parameters_annotations">
709 </colgroup>
710 <tbody>
711 <tr>
712 <td class="parameter_name"><p>self</p></td>
713 <td class="parameter_description"><p>plugin instance</p></td>
714 <td class="parameter_annotations"> </td>
715 </tr>
716 <tr>
717 <td class="parameter_name"><p>ui_data</p></td>
718 <td class="parameter_description"><p>UI data</p></td>
719 <td class="parameter_annotations"> </td>
720 </tr>
721 </tbody>
722 </table></div>
723 </div>
724 </div>
725 <hr>
726 <div class="refsect2">
727 <a name="gsignond-plugin-status-changed"></a><h3>gsignond_plugin_status_changed ()</h3>
728 <pre class="programlisting"><span class="returnvalue">void</span>
729 gsignond_plugin_status_changed (<em class="parameter"><code><a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *self</code></em>,
730                                 <em class="parameter"><code><a class="link" href="GSignondPlugin.html#GSignondPluginState" title="enum GSignondPluginState"><span class="type">GSignondPluginState</span></a> state</code></em>,
731                                 <em class="parameter"><code>const <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *message</code></em>);</pre>
732 <p>Plugin implementations should use this to issue <a class="link" href="GSignondPlugin.html#GSignondPlugin-status-changed" title="The “status-changed” signal"><span class="type">“status-changed”</span></a>
733 signal. This method should not be used otherwise.</p>
734 <div class="refsect3">
735 <a name="id-1.5.2.10.13.5"></a><h4>Parameters</h4>
736 <div class="informaltable"><table width="100%" border="0">
737 <colgroup>
738 <col width="150px" class="parameters_name">
739 <col class="parameters_description">
740 <col width="200px" class="parameters_annotations">
741 </colgroup>
742 <tbody>
743 <tr>
744 <td class="parameter_name"><p>self</p></td>
745 <td class="parameter_description"><p>plugin instance</p></td>
746 <td class="parameter_annotations"> </td>
747 </tr>
748 <tr>
749 <td class="parameter_name"><p>state</p></td>
750 <td class="parameter_description"><p>the new state</p></td>
751 <td class="parameter_annotations"> </td>
752 </tr>
753 <tr>
754 <td class="parameter_name"><p>message</p></td>
755 <td class="parameter_description"><p>the message</p></td>
756 <td class="parameter_annotations"> </td>
757 </tr>
758 </tbody>
759 </table></div>
760 </div>
761 </div>
762 </div>
763 <div class="refsect1">
764 <a name="GSignondPlugin.other_details"></a><h2>Types and Values</h2>
765 <div class="refsect2">
766 <a name="GSignondPluginState"></a><h3>enum GSignondPluginState</h3>
767 <p>The plugin provides state updates by emitting <a class="link" href="GSignondPlugin.html#GSignondPlugin-status-changed" title="The “status-changed” signal"><span class="type">“status-changed”</span></a>
768 signal with this enum and a string describing what happened.</p>
769 <div class="refsect3">
770 <a name="id-1.5.2.11.2.4"></a><h4>Members</h4>
771 <div class="informaltable"><table width="100%" border="0">
772 <colgroup>
773 <col width="300px" class="enum_members_name">
774 <col class="enum_members_description">
775 <col width="200px" class="enum_members_annotations">
776 </colgroup>
777 <tbody>
778 <tr>
779 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-NONE:CAPS"></a>GSIGNOND_PLUGIN_STATE_NONE</p></td>
780 <td class="enum_member_description">
781 <p>State unknown</p>
782 </td>
783 <td class="enum_member_annotations"> </td>
784 </tr>
785 <tr>
786 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-RESOLVING:CAPS"></a>GSIGNOND_PLUGIN_STATE_RESOLVING</p></td>
787 <td class="enum_member_description">
788 <p>Resolving remote server host name</p>
789 </td>
790 <td class="enum_member_annotations"> </td>
791 </tr>
792 <tr>
793 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-CONNECTING:CAPS"></a>GSIGNOND_PLUGIN_STATE_CONNECTING</p></td>
794 <td class="enum_member_description">
795 <p>Connecting to remote server</p>
796 </td>
797 <td class="enum_member_annotations"> </td>
798 </tr>
799 <tr>
800 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-SENDING-DATA:CAPS"></a>GSIGNOND_PLUGIN_STATE_SENDING_DATA</p></td>
801 <td class="enum_member_description">
802 <p>Sending data to remote server</p>
803 </td>
804 <td class="enum_member_annotations"> </td>
805 </tr>
806 <tr>
807 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-WAITING:CAPS"></a>GSIGNOND_PLUGIN_STATE_WAITING</p></td>
808 <td class="enum_member_description">
809 <p>Waiting for reply from remote server</p>
810 </td>
811 <td class="enum_member_annotations"> </td>
812 </tr>
813 <tr>
814 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-USER-PENDING:CAPS"></a>GSIGNOND_PLUGIN_STATE_USER_PENDING</p></td>
815 <td class="enum_member_description">
816 <p>Waiting for response from user</p>
817 </td>
818 <td class="enum_member_annotations"> </td>
819 </tr>
820 <tr>
821 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-REFRESHING:CAPS"></a>GSIGNOND_PLUGIN_STATE_REFRESHING</p></td>
822 <td class="enum_member_description">
823 <p>Refreshing ui request</p>
824 </td>
825 <td class="enum_member_annotations"> </td>
826 </tr>
827 <tr>
828 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-PROCESS-PENDING:CAPS"></a>GSIGNOND_PLUGIN_STATE_PROCESS_PENDING</p></td>
829 <td class="enum_member_description">
830 <p>Request has been queued</p>
831 </td>
832 <td class="enum_member_annotations"> </td>
833 </tr>
834 <tr>
835 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-STARTED:CAPS"></a>GSIGNOND_PLUGIN_STATE_STARTED</p></td>
836 <td class="enum_member_description">
837 <p>Request has been dequeued</p>
838 </td>
839 <td class="enum_member_annotations"> </td>
840 </tr>
841 <tr>
842 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-CANCELING:CAPS"></a>GSIGNOND_PLUGIN_STATE_CANCELING</p></td>
843 <td class="enum_member_description">
844 <p>Canceling current process</p>
845 </td>
846 <td class="enum_member_annotations"> </td>
847 </tr>
848 <tr>
849 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-DONE:CAPS"></a>GSIGNOND_PLUGIN_STATE_DONE</p></td>
850 <td class="enum_member_description">
851 <p>Process is finished</p>
852 </td>
853 <td class="enum_member_annotations"> </td>
854 </tr>
855 <tr>
856 <td class="enum_member_name"><p><a name="GSIGNOND-PLUGIN-STATE-HOLDING:CAPS"></a>GSIGNOND_PLUGIN_STATE_HOLDING</p></td>
857 <td class="enum_member_description">
858 <p>Holding long non-expired token</p>
859 </td>
860 <td class="enum_member_annotations"> </td>
861 </tr>
862 </tbody>
863 </table></div>
864 </div>
865 </div>
866 <hr>
867 <div class="refsect2">
868 <a name="GSignondPluginInterface"></a><h3>struct GSignondPluginInterface</h3>
869 <pre class="programlisting">struct GSignondPluginInterface {
870     GTypeInterface parent;
871
872     void (*cancel) (GSignondPlugin *self);
873     void (*request_initial) (GSignondPlugin *self, 
874                      GSignondSessionData *session_data,
875                      GSignondDictionary *identity_method_cache, 
876                      const gchar *mechanism);
877     void (*request) (GSignondPlugin *self, 
878                      GSignondSessionData *session_data);
879     void (*user_action_finished) (GSignondPlugin *self, 
880                                   GSignondSignonuiData *session_data);
881     void (*refresh) (GSignondPlugin *self, 
882                      GSignondSignonuiData *session_data);
883 };
884 </pre>
885 <p><a class="link" href="GSignondPlugin.html#GSignondPluginInterface" title="struct GSignondPluginInterface"><span class="type">GSignondPluginInterface</span></a> interface containing pointers to methods that all
886 plugin implementations should provide.</p>
887 <div class="refsect3">
888 <a name="id-1.5.2.11.3.5"></a><h4>Members</h4>
889 <div class="informaltable"><table width="100%" border="0">
890 <colgroup>
891 <col width="300px" class="struct_members_name">
892 <col class="struct_members_description">
893 <col width="200px" class="struct_members_annotations">
894 </colgroup>
895 <tbody>
896 <tr>
897 <td class="struct_member_name"><p><a href="http://library.gnome.org/devel/gobject/unstable/gobject-Type-Information.html#GTypeInterface"><span class="type">GTypeInterface</span></a> <em class="structfield"><code><a name="GSignondPluginInterface.parent"></a>parent</code></em>;</p></td>
898 <td class="struct_member_description"><p>parent interface type.</p></td>
899 <td class="struct_member_annotations"> </td>
900 </tr>
901 <tr>
902 <td class="struct_member_name"><p><em class="structfield"><code><a name="GSignondPluginInterface.cancel"></a>cancel</code></em> ()</p></td>
903 <td class="struct_member_description"><p>implementation of <a class="link" href="GSignondPlugin.html#gsignond-plugin-cancel" title="gsignond_plugin_cancel ()"><code class="function">gsignond_plugin_cancel()</code></a></p></td>
904 <td class="struct_member_annotations"> </td>
905 </tr>
906 <tr>
907 <td class="struct_member_name"><p><em class="structfield"><code><a name="GSignondPluginInterface.request-initial"></a>request_initial</code></em> ()</p></td>
908 <td class="struct_member_description"><p>implementation of <a class="link" href="GSignondPlugin.html#gsignond-plugin-request-initial" title="gsignond_plugin_request_initial ()"><code class="function">gsignond_plugin_request_initial()</code></a></p></td>
909 <td class="struct_member_annotations"> </td>
910 </tr>
911 <tr>
912 <td class="struct_member_name"><p><em class="structfield"><code><a name="GSignondPluginInterface.request"></a>request</code></em> ()</p></td>
913 <td class="struct_member_description"><p>implementation of <a class="link" href="GSignondPlugin.html#gsignond-plugin-request" title="gsignond_plugin_request ()"><code class="function">gsignond_plugin_request()</code></a></p></td>
914 <td class="struct_member_annotations"> </td>
915 </tr>
916 <tr>
917 <td class="struct_member_name"><p><em class="structfield"><code><a name="GSignondPluginInterface.user-action-finished"></a>user_action_finished</code></em> ()</p></td>
918 <td class="struct_member_description"><p>implementation of <a class="link" href="GSignondPlugin.html#gsignond-plugin-user-action-finished" title="gsignond_plugin_user_action_finished ()"><code class="function">gsignond_plugin_user_action_finished()</code></a></p></td>
919 <td class="struct_member_annotations"> </td>
920 </tr>
921 <tr>
922 <td class="struct_member_name"><p><em class="structfield"><code><a name="GSignondPluginInterface.refresh"></a>refresh</code></em> ()</p></td>
923 <td class="struct_member_description"><p>implementation of <a class="link" href="GSignondPlugin.html#gsignond-plugin-refresh" title="gsignond_plugin_refresh ()"><code class="function">gsignond_plugin_refresh()</code></a></p></td>
924 <td class="struct_member_annotations"> </td>
925 </tr>
926 </tbody>
927 </table></div>
928 </div>
929 </div>
930 </div>
931 <div class="refsect1">
932 <a name="GSignondPlugin.property-details"></a><h2>Property Details</h2>
933 <div class="refsect2">
934 <a name="GSignondPlugin--mechanisms"></a><h3>The <code class="literal">“mechanisms”</code> property</h3>
935 <pre class="programlisting">  “mechanisms”               <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Boxed-Types.html#GStrv"><span class="type">GStrv</span></a></pre>
936 <p>This property holds a list of authentication mechanisms that the plugin
937 implements, all specified within the authentication method. For example,
938 OAuth plugin could implement "oauth1" and "oauth2" mechanisms.</p>
939 <p>Flags: Read</p>
940 </div>
941 <hr>
942 <div class="refsect2">
943 <a name="GSignondPlugin--type"></a><h3>The <code class="literal">“type”</code> property</h3>
944 <pre class="programlisting">  “type”                     <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
945 <p>This property holds a plugin type, or authentication method it implements
946 (for example "oauth" or "sasl").</p>
947 <p>Flags: Read</p>
948 <p>Default value: "none"</p>
949 </div>
950 </div>
951 <div class="refsect1">
952 <a name="GSignondPlugin.signal-details"></a><h2>Signal Details</h2>
953 <div class="refsect2">
954 <a name="GSignondPlugin-error"></a><h3>The <code class="literal">“error”</code> signal</h3>
955 <pre class="programlisting"><span class="returnvalue">void</span>
956 user_function (<a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *plugin,
957                <a href="http://library.gnome.org/devel/glib/unstable/glib-Error-Reporting.html#GError"><span class="type">GError</span></a>         *error,
958                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
959 <p>This signal is issued by the plugin when an error has occured, or the
960 plugin otherwise has a reason to cancel the authentication session. The
961 <em class="parameter"><code>error</code></em>
962  should be specified according to </p>
963 <a class="link" href="gsignond-Errors.html" title="Errors">GSignond errors.</a><div class="refsect3">
964 <a name="id-1.5.2.13.2.6"></a><h4>Parameters</h4>
965 <div class="informaltable"><table width="100%" border="0">
966 <colgroup>
967 <col width="150px" class="parameters_name">
968 <col class="parameters_description">
969 <col width="200px" class="parameters_annotations">
970 </colgroup>
971 <tbody>
972 <tr>
973 <td class="parameter_name"><p>plugin</p></td>
974 <td class="parameter_description"><p>the plugin which emitted the signal</p></td>
975 <td class="parameter_annotations"> </td>
976 </tr>
977 <tr>
978 <td class="parameter_name"><p>error</p></td>
979 <td class="parameter_description"><p>the details of the error</p></td>
980 <td class="parameter_annotations"> </td>
981 </tr>
982 <tr>
983 <td class="parameter_name"><p>user_data</p></td>
984 <td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
985 <td class="parameter_annotations"> </td>
986 </tr>
987 </tbody>
988 </table></div>
989 </div>
990 <p>Flags: <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
991 </div>
992 <hr>
993 <div class="refsect2">
994 <a name="GSignondPlugin-refreshed"></a><h3>The <code class="literal">“refreshed”</code> signal</h3>
995 <pre class="programlisting"><span class="returnvalue">void</span>
996 user_function (<a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *plugin,
997                <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a>     *ui_data,
998                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
999 <p>This signal is issued by the plugin when the UI interaction is ongoing
1000 and the UI needs to be refreshed. This can be used for example to update
1001 captcha image in the UI.</p>
1002 <div class="refsect3">
1003 <a name="id-1.5.2.13.3.5"></a><h4>Parameters</h4>
1004 <div class="informaltable"><table width="100%" border="0">
1005 <colgroup>
1006 <col width="150px" class="parameters_name">
1007 <col class="parameters_description">
1008 <col width="200px" class="parameters_annotations">
1009 </colgroup>
1010 <tbody>
1011 <tr>
1012 <td class="parameter_name"><p>plugin</p></td>
1013 <td class="parameter_description"><p>the plugin which emitted the signal</p></td>
1014 <td class="parameter_annotations"> </td>
1015 </tr>
1016 <tr>
1017 <td class="parameter_name"><p>ui_data</p></td>
1018 <td class="parameter_description"><p>parameters for UI refresh</p></td>
1019 <td class="parameter_annotations"> </td>
1020 </tr>
1021 <tr>
1022 <td class="parameter_name"><p>user_data</p></td>
1023 <td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
1024 <td class="parameter_annotations"> </td>
1025 </tr>
1026 </tbody>
1027 </table></div>
1028 </div>
1029 <p>Flags: <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
1030 </div>
1031 <hr>
1032 <div class="refsect2">
1033 <a name="GSignondPlugin-response"></a><h3>The <code class="literal">“response”</code> signal</h3>
1034 <pre class="programlisting"><span class="returnvalue">void</span>
1035 user_function (<a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *plugin,
1036                <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a>     *session_data,
1037                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
1038 <p>This signal is issued by the plugin when it wants to provide an intermediate
1039 response to the application or needs additional information from the application.</p>
1040 <p>After issuing this signal the plugin expects a <a class="link" href="GSignondPlugin.html#gsignond-plugin-response" title="gsignond_plugin_response ()"><code class="function">gsignond_plugin_response()</code></a> call.</p>
1041 <div class="refsect3">
1042 <a name="id-1.5.2.13.4.6"></a><h4>Parameters</h4>
1043 <div class="informaltable"><table width="100%" border="0">
1044 <colgroup>
1045 <col width="150px" class="parameters_name">
1046 <col class="parameters_description">
1047 <col width="200px" class="parameters_annotations">
1048 </colgroup>
1049 <tbody>
1050 <tr>
1051 <td class="parameter_name"><p>plugin</p></td>
1052 <td class="parameter_description"><p>the plugin which emitted the signal</p></td>
1053 <td class="parameter_annotations"> </td>
1054 </tr>
1055 <tr>
1056 <td class="parameter_name"><p>session_data</p></td>
1057 <td class="parameter_description"><p>a <a href="http://gsignon-docs.accounts-sso.googlecode.com/git/gsignond/gsignond-GSignondSessionData.html#GSignondSessionData"><span class="type">GSignondSessionData</span></a> containing signal parameters</p></td>
1058 <td class="parameter_annotations"> </td>
1059 </tr>
1060 <tr>
1061 <td class="parameter_name"><p>user_data</p></td>
1062 <td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
1063 <td class="parameter_annotations"> </td>
1064 </tr>
1065 </tbody>
1066 </table></div>
1067 </div>
1068 <p>Flags: <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
1069 </div>
1070 <hr>
1071 <div class="refsect2">
1072 <a name="GSignondPlugin-response-final"></a><h3>The <code class="literal">“response-final”</code> signal</h3>
1073 <pre class="programlisting"><span class="returnvalue">void</span>
1074 user_function (<a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *plugin,
1075                <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a>     *session_data,
1076                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
1077 <p>This signal is issued by the plugin when it has completed the authentication
1078 sequence and is used to provide the final response to the application.</p>
1079 <p>After issuing this signal the plugin is idle and is ready for a new
1080 authentication session.</p>
1081 <div class="refsect3">
1082 <a name="id-1.5.2.13.5.6"></a><h4>Parameters</h4>
1083 <div class="informaltable"><table width="100%" border="0">
1084 <colgroup>
1085 <col width="150px" class="parameters_name">
1086 <col class="parameters_description">
1087 <col width="200px" class="parameters_annotations">
1088 </colgroup>
1089 <tbody>
1090 <tr>
1091 <td class="parameter_name"><p>plugin</p></td>
1092 <td class="parameter_description"><p>the plugin which emitted the signal</p></td>
1093 <td class="parameter_annotations"> </td>
1094 </tr>
1095 <tr>
1096 <td class="parameter_name"><p>session_data</p></td>
1097 <td class="parameter_description"><p>a <a href="http://gsignon-docs.accounts-sso.googlecode.com/git/gsignond/gsignond-GSignondSessionData.html#GSignondSessionData"><span class="type">GSignondSessionData</span></a> containing signal parameters</p></td>
1098 <td class="parameter_annotations"> </td>
1099 </tr>
1100 <tr>
1101 <td class="parameter_name"><p>user_data</p></td>
1102 <td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
1103 <td class="parameter_annotations"> </td>
1104 </tr>
1105 </tbody>
1106 </table></div>
1107 </div>
1108 <p>Flags: <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
1109 </div>
1110 <hr>
1111 <div class="refsect2">
1112 <a name="GSignondPlugin-status-changed"></a><h3>The <code class="literal">“status-changed”</code> signal</h3>
1113 <pre class="programlisting"><span class="returnvalue">void</span>
1114 user_function (<a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a>     *plugin,
1115                <a class="link" href="GSignondPlugin.html#GSignondPluginState" title="enum GSignondPluginState"><span class="type">GSignondPluginState</span></a> state,
1116                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gchar"><span class="type">gchar</span></a>              *message,
1117                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>            user_data)</pre>
1118 <p>This signal is issued by the plugin when plugin state has changed. This
1119 can be used by applications to report authentication progress.</p>
1120 <div class="refsect3">
1121 <a name="id-1.5.2.13.6.5"></a><h4>Parameters</h4>
1122 <div class="informaltable"><table width="100%" border="0">
1123 <colgroup>
1124 <col width="150px" class="parameters_name">
1125 <col class="parameters_description">
1126 <col width="200px" class="parameters_annotations">
1127 </colgroup>
1128 <tbody>
1129 <tr>
1130 <td class="parameter_name"><p>plugin</p></td>
1131 <td class="parameter_description"><p>the plugin which emitted the signal</p></td>
1132 <td class="parameter_annotations"> </td>
1133 </tr>
1134 <tr>
1135 <td class="parameter_name"><p>state</p></td>
1136 <td class="parameter_description"><p>the plugin state</p></td>
1137 <td class="parameter_annotations"> </td>
1138 </tr>
1139 <tr>
1140 <td class="parameter_name"><p>message</p></td>
1141 <td class="parameter_description"><p>the message that accompanies the state change</p></td>
1142 <td class="parameter_annotations"> </td>
1143 </tr>
1144 <tr>
1145 <td class="parameter_name"><p>user_data</p></td>
1146 <td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
1147 <td class="parameter_annotations"> </td>
1148 </tr>
1149 </tbody>
1150 </table></div>
1151 </div>
1152 <p>Flags: <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
1153 </div>
1154 <hr>
1155 <div class="refsect2">
1156 <a name="GSignondPlugin-store"></a><h3>The <code class="literal">“store”</code> signal</h3>
1157 <pre class="programlisting"><span class="returnvalue">void</span>
1158 user_function (<a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *plugin,
1159                <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a>     *data,
1160                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
1161 <p>This signal is issued by the plugin when it has data to store in persistant
1162 storage. The same data would later be provided to plugin via
1163
1164 gsignond_plugin_request_initial <em class="parameter"><code>identity_method_cache</code></em>
1165  parameter.</p>
1166 <div class="refsect3">
1167 <a name="id-1.5.2.13.7.5"></a><h4>Parameters</h4>
1168 <div class="informaltable"><table width="100%" border="0">
1169 <colgroup>
1170 <col width="150px" class="parameters_name">
1171 <col class="parameters_description">
1172 <col width="200px" class="parameters_annotations">
1173 </colgroup>
1174 <tbody>
1175 <tr>
1176 <td class="parameter_name"><p>plugin</p></td>
1177 <td class="parameter_description"><p>the plugin which emitted the signal</p></td>
1178 <td class="parameter_annotations"> </td>
1179 </tr>
1180 <tr>
1181 <td class="parameter_name"><p>data</p></td>
1182 <td class="parameter_description"><p>a <a href="http://gsignon-docs.accounts-sso.googlecode.com/git/gsignond/gsignond-GSignondDictionary.html#GSignondDictionary"><span class="type">GSignondDictionary</span></a> containing data to place in persistent storage</p></td>
1183 <td class="parameter_annotations"> </td>
1184 </tr>
1185 <tr>
1186 <td class="parameter_name"><p>user_data</p></td>
1187 <td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
1188 <td class="parameter_annotations"> </td>
1189 </tr>
1190 </tbody>
1191 </table></div>
1192 </div>
1193 <p>Flags: <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
1194 </div>
1195 <hr>
1196 <div class="refsect2">
1197 <a name="GSignondPlugin-user-action-required"></a><h3>The <code class="literal">“user-action-required”</code> signal</h3>
1198 <pre class="programlisting"><span class="returnvalue">void</span>
1199 user_function (<a class="link" href="GSignondPlugin.html" title="GSignondPlugin"><span class="type">GSignondPlugin</span></a> *plugin,
1200                <a href="http://library.gnome.org/devel/glib/unstable/glib-Hash-Tables.html#GHashTable"><span class="type">GHashTable</span></a>     *ui_data,
1201                <a href="http://library.gnome.org/devel/glib/unstable/glib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a>        user_data)</pre>
1202 <p>This signal is issued by the plugin when it needs a UI interaction with
1203 the user to happen. When the interaction is complete, <a class="link" href="GSignondPlugin.html#gsignond-plugin-user-action-finished" title="gsignond_plugin_user_action_finished ()"><code class="function">gsignond_plugin_user_action_finished()</code></a>
1204 should be issued.</p>
1205 <div class="refsect3">
1206 <a name="id-1.5.2.13.8.5"></a><h4>Parameters</h4>
1207 <div class="informaltable"><table width="100%" border="0">
1208 <colgroup>
1209 <col width="150px" class="parameters_name">
1210 <col class="parameters_description">
1211 <col width="200px" class="parameters_annotations">
1212 </colgroup>
1213 <tbody>
1214 <tr>
1215 <td class="parameter_name"><p>plugin</p></td>
1216 <td class="parameter_description"><p>the plugin which emitted the signal</p></td>
1217 <td class="parameter_annotations"> </td>
1218 </tr>
1219 <tr>
1220 <td class="parameter_name"><p>ui_data</p></td>
1221 <td class="parameter_description"><p>parameters for UI interaction</p></td>
1222 <td class="parameter_annotations"> </td>
1223 </tr>
1224 <tr>
1225 <td class="parameter_name"><p>user_data</p></td>
1226 <td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
1227 <td class="parameter_annotations"> </td>
1228 </tr>
1229 </tbody>
1230 </table></div>
1231 </div>
1232 <p>Flags: <a href="http://library.gnome.org/devel/gobject/unstable/gobject-Signals.html#G-SIGNAL-RUN-FIRST:CAPS">Run First</a></p>
1233 </div>
1234 </div>
1235 </div>
1236 <div class="footer">
1237 <hr>
1238           Generated by GTK-Doc V1.20</div>
1239 </body>
1240 </html>