Merge lp:~rainct/libzeitgeist/event-origin-subject-current-uri into lp:libzeitgeist

Proposed by Siegfried Gevatter
Status: Merged
Approved by: Mikkel Kamstrup Erlandsen
Approved revision: 216
Merged at revision: 216
Proposed branch: lp:~rainct/libzeitgeist/event-origin-subject-current-uri
Merge into: lp:libzeitgeist
Diff against target: 462 lines (+206/-15)
5 files modified
src/zeitgeist-event.c (+62/-3)
src/zeitgeist-event.h (+4/-0)
src/zeitgeist-subject.c (+34/-2)
src/zeitgeist-subject.h (+4/-0)
tests/test-event.c (+102/-10)
To merge this branch: bzr merge lp:~rainct/libzeitgeist/event-origin-subject-current-uri
Reviewer Review Type Date Requested Status
Mikkel Kamstrup Erlandsen Approve
Review via email: mp+90876@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Mikkel Kamstrup Erlandsen (kamstrup) wrote :

Looking good Siegfried, and I am glad we that we can stick this in the ABI stable series. from the principle that any mrq with more than 100 lines must have at least one comment - here goes ;-) :

28 + * This differs from a subject's origin, as it describes where the event comes
29 + * from, not where it resides.

Can you add this event.set_origin() as well?

review: Needs Fixing
216. By Siegfried Gevatter

Improve documentation of zeitgeist_event_set_origin

Revision history for this message
Siegfried Gevatter (rainct) wrote :

Done :)

Revision history for this message
Mikkel Kamstrup Erlandsen (kamstrup) wrote :

Great work!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/zeitgeist-event.c'
--- src/zeitgeist-event.c 2011-07-11 18:05:11 +0000
+++ src/zeitgeist-event.c 2012-02-02 09:59:18 +0000
@@ -82,6 +82,7 @@
82 ZEITGEIST_EVENT_INTERPRETATION,82 ZEITGEIST_EVENT_INTERPRETATION,
83 ZEITGEIST_EVENT_MANIFESTATION,83 ZEITGEIST_EVENT_MANIFESTATION,
84 ZEITGEIST_EVENT_ACTOR,84 ZEITGEIST_EVENT_ACTOR,
85 ZEITGEIST_EVENT_ORIGIN,
85} ZeitgeistEventDataOffset;86} ZeitgeistEventDataOffset;
8687
87typedef struct88typedef struct
@@ -91,6 +92,7 @@
91 gchar *interpretation;92 gchar *interpretation;
92 gchar *manifestation;93 gchar *manifestation;
93 gchar *actor;94 gchar *actor;
95 gchar *origin;
94 GPtrArray *subjects;96 GPtrArray *subjects;
95 GByteArray *payload;97 GByteArray *payload;
96} ZeitgeistEventPrivate;98} ZeitgeistEventPrivate;
@@ -431,6 +433,53 @@
431}433}
432434
433/**435/**
436 * zeitgeist_event_get_origin:
437 * @event: The event to get the origin from
438 *
439 * Get the origin of an event.
440 * This differs from a subject's origin, as it describes where the event comes
441 * from, not where it resides.
442 *
443 * Returns: The origin of @event.
444 */
445const gchar*
446zeitgeist_event_get_origin (ZeitgeistEvent *event)
447{
448 g_return_val_if_fail (ZEITGEIST_IS_EVENT (event), NULL);
449
450 ZeitgeistEventPrivate* priv = ZEITGEIST_EVENT_GET_PRIVATE (event);
451
452 return priv->origin;
453}
454
455/**
456 * zeitgeist_event_set_origin:
457 * @event: The event to set the origin of
458 * @origin: The origin to set
459 *
460 * Set the origin of an event.
461 * This differs from a subject's origin, as it describes where the event comes
462 * from, not where it resides.
463 */
464void
465zeitgeist_event_set_origin (ZeitgeistEvent *event,
466 const gchar *origin)
467{
468 g_return_if_fail (ZEITGEIST_IS_EVENT (event));
469
470 ZeitgeistEventPrivate* priv = ZEITGEIST_EVENT_GET_PRIVATE (event);
471
472 gchar* copy = g_strdup (origin);
473
474 if (priv->origin)
475 {
476 g_free (priv->origin);
477 }
478
479 priv->origin = copy;
480}
481
482/**
434 * zeitgeist_event_get_payload:483 * zeitgeist_event_get_payload:
435 * @event: The event to get the payload for484 * @event: The event to get the payload for
436 *485 *
@@ -439,7 +488,6 @@
439 * Returns: The event payload or %NULL if unset. Do not free. If you want to488 * Returns: The event payload or %NULL if unset. Do not free. If you want to
440 * keep the subject around you need to g_byte_array_ref() it.489 * keep the subject around you need to g_byte_array_ref() it.
441 */490 */
442
443GByteArray*491GByteArray*
444zeitgeist_event_get_payload (ZeitgeistEvent *event)492zeitgeist_event_get_payload (ZeitgeistEvent *event)
445{493{
@@ -491,6 +539,7 @@
491 priv->interpretation = NULL;539 priv->interpretation = NULL;
492 priv->manifestation = NULL;540 priv->manifestation = NULL;
493 priv->actor = NULL;541 priv->actor = NULL;
542 priv->origin = NULL;
494 priv->subjects = g_ptr_array_new_with_free_func (543 priv->subjects = g_ptr_array_new_with_free_func (
495 (GDestroyNotify)g_object_unref);544 (GDestroyNotify)g_object_unref);
496 priv->payload = NULL;545 priv->payload = NULL;
@@ -506,14 +555,15 @@
506555
507 if (priv->subjects)556 if (priv->subjects)
508 {557 {
509 /* Subjects are unreffed by the free-func of the GPtrArray */558 /* Subjects are unreffed by the free-func of the GPtrArray */
510 g_ptr_array_unref (priv->subjects);559 g_ptr_array_unref (priv->subjects);
511 priv->subjects = NULL;560 priv->subjects = NULL;
512 }561 }
513 562
514 zeitgeist_event_set_interpretation (event, NULL);563 zeitgeist_event_set_interpretation (event, NULL);
515 zeitgeist_event_set_manifestation (event, NULL);564 zeitgeist_event_set_manifestation (event, NULL);
516 zeitgeist_event_set_actor (event, NULL); 565 zeitgeist_event_set_actor (event, NULL);
566 zeitgeist_event_set_origin (event, NULL);
517 zeitgeist_event_set_payload (event, NULL);567 zeitgeist_event_set_payload (event, NULL);
518568
519 G_OBJECT_CLASS (zeitgeist_event_parent_class)->finalize (object);569 G_OBJECT_CLASS (zeitgeist_event_parent_class)->finalize (object);
@@ -550,6 +600,7 @@
550 return self;600 return self;
551}601}
552602
603// FIXME: add `origin' parameter
553/** 604/**
554 * zeitgeist_event_new_full:605 * zeitgeist_event_new_full:
555 * @interpretation: The interpretation type of the event.606 * @interpretation: The interpretation type of the event.
@@ -691,6 +742,9 @@
691 zeitgeist_event_set_actor (result, str[0] == '\0' ? NULL : str);742 zeitgeist_event_set_actor (result, str[0] == '\0' ? NULL : str);
692 g_free (str);743 g_free (str);
693744
745 if (g_variant_iter_loop (event_data, "s", &str))
746 zeitgeist_event_set_origin (result, str[0] == '\0' ? NULL : str);
747
694 /* Build the list of subjects */748 /* Build the list of subjects */
695 while (g_variant_iter_loop (subjects, "as", &subject_data))749 while (g_variant_iter_loop (subjects, "as", &subject_data))
696 {750 {
@@ -732,6 +786,9 @@
732 zeitgeist_subject_set_storage (subject, str[0] == '\0' ? NULL : str);786 zeitgeist_subject_set_storage (subject, str[0] == '\0' ? NULL : str);
733 g_free (str);787 g_free (str);
734788
789 if (g_variant_iter_loop (subject_data, "s", &str))
790 zeitgeist_subject_set_current_uri (subject, str[0] == '\0' ? NULL : str);
791
735 zeitgeist_event_add_subject (result, subject);792 zeitgeist_event_add_subject (result, subject);
736 }793 }
737794
@@ -799,6 +856,7 @@
799 g_variant_builder_add (&b, "s", (bif = zeitgeist_event_get_interpretation(event), bif ? bif : ""));856 g_variant_builder_add (&b, "s", (bif = zeitgeist_event_get_interpretation(event), bif ? bif : ""));
800 g_variant_builder_add (&b, "s", (bif = zeitgeist_event_get_manifestation(event), bif ? bif : ""));857 g_variant_builder_add (&b, "s", (bif = zeitgeist_event_get_manifestation(event), bif ? bif : ""));
801 g_variant_builder_add (&b, "s", (bif = zeitgeist_event_get_actor (event), bif ? bif : ""));858 g_variant_builder_add (&b, "s", (bif = zeitgeist_event_get_actor (event), bif ? bif : ""));
859 g_variant_builder_add (&b, "s", (bif = zeitgeist_event_get_origin (event), bif ? bif : ""));
802 g_variant_builder_close (&b);860 g_variant_builder_close (&b);
803861
804 /* Build subjects */862 /* Build subjects */
@@ -815,6 +873,7 @@
815 g_variant_builder_add (&b, "s", (bif = zeitgeist_subject_get_mimetype(su), bif ? bif : ""));873 g_variant_builder_add (&b, "s", (bif = zeitgeist_subject_get_mimetype(su), bif ? bif : ""));
816 g_variant_builder_add (&b, "s", (bif = zeitgeist_subject_get_text(su), bif ? bif : ""));874 g_variant_builder_add (&b, "s", (bif = zeitgeist_subject_get_text(su), bif ? bif : ""));
817 g_variant_builder_add (&b, "s", (bif = zeitgeist_subject_get_storage(su), bif ? bif : ""));875 g_variant_builder_add (&b, "s", (bif = zeitgeist_subject_get_storage(su), bif ? bif : ""));
876 g_variant_builder_add (&b, "s", (bif = zeitgeist_subject_get_current_uri(su), bif ? bif : ""));
818 g_variant_builder_close (&b);877 g_variant_builder_close (&b);
819 }878 }
820 g_variant_builder_close (&b);879 g_variant_builder_close (&b);
821880
=== modified file 'src/zeitgeist-event.h'
--- src/zeitgeist-event.h 2011-03-07 14:19:39 +0000
+++ src/zeitgeist-event.h 2012-02-02 09:59:18 +0000
@@ -104,6 +104,10 @@
104void zeitgeist_event_set_actor (ZeitgeistEvent *event,104void zeitgeist_event_set_actor (ZeitgeistEvent *event,
105 const gchar *actor);105 const gchar *actor);
106106
107const gchar* zeitgeist_event_get_origin (ZeitgeistEvent *event);
108void zeitgeist_event_set_origin (ZeitgeistEvent *event,
109 const gchar *origin);
110
107void zeitgeist_event_set_actor_from_app_info (ZeitgeistEvent *event,111void zeitgeist_event_set_actor_from_app_info (ZeitgeistEvent *event,
108 GAppInfo *appinfo);112 GAppInfo *appinfo);
109 113
110114
=== modified file 'src/zeitgeist-subject.c'
--- src/zeitgeist-subject.c 2011-03-07 14:19:39 +0000
+++ src/zeitgeist-subject.c 2012-02-02 09:59:18 +0000
@@ -43,6 +43,8 @@
43 ZEITGEIST_SUBJECT_MIMETYPE,43 ZEITGEIST_SUBJECT_MIMETYPE,
44 ZEITGEIST_SUBJECT_ORIGIN,44 ZEITGEIST_SUBJECT_ORIGIN,
45 ZEITGEIST_SUBJECT_TEXT,45 ZEITGEIST_SUBJECT_TEXT,
46 ZEITGEIST_SUBJECT_STORAGE,
47 ZEITGEIST_SUBJECT_CURRENT_URI,
46} ZeitgeistSubjectDataOffset;48} ZeitgeistSubjectDataOffset;
4749
48typedef struct50typedef struct
@@ -54,6 +56,7 @@
54 gchar *origin;56 gchar *origin;
55 gchar *text;57 gchar *text;
56 gchar *storage;58 gchar *storage;
59 gchar *current_uri;
57} ZeitgeistSubjectPrivate;60} ZeitgeistSubjectPrivate;
5861
59const gchar*62const gchar*
@@ -245,6 +248,33 @@
245 priv->storage = copy;248 priv->storage = copy;
246}249}
247250
251const gchar*
252zeitgeist_subject_get_current_uri (ZeitgeistSubject *subject)
253{
254 g_return_val_if_fail (ZEITGEIST_IS_SUBJECT (subject), NULL);
255
256 ZeitgeistSubjectPrivate *priv = ZEITGEIST_SUBJECT_GET_PRIVATE (subject);
257 return priv->current_uri;
258}
259
260void
261zeitgeist_subject_set_current_uri (ZeitgeistSubject *subject,
262 const gchar *current_uri)
263{
264 g_return_if_fail (ZEITGEIST_IS_SUBJECT (subject));
265
266 ZeitgeistSubjectPrivate *priv = ZEITGEIST_SUBJECT_GET_PRIVATE (subject);
267
268 gchar* copy = g_strdup (current_uri);
269
270 if (priv->current_uri)
271 {
272 g_free (priv->current_uri);
273 }
274
275 priv->current_uri = copy;
276}
277
248static void278static void
249zeitgeist_subject_init (ZeitgeistSubject *object)279zeitgeist_subject_init (ZeitgeistSubject *object)
250{280{
@@ -258,6 +288,7 @@
258 priv->origin = NULL;288 priv->origin = NULL;
259 priv->text = NULL;289 priv->text = NULL;
260 priv->storage = NULL;290 priv->storage = NULL;
291 priv->current_uri = NULL;
261}292}
262293
263static void294static void
@@ -275,6 +306,7 @@
275 zeitgeist_subject_set_origin (subject, NULL);306 zeitgeist_subject_set_origin (subject, NULL);
276 zeitgeist_subject_set_text (subject, NULL);307 zeitgeist_subject_set_text (subject, NULL);
277 zeitgeist_subject_set_storage (subject, NULL);308 zeitgeist_subject_set_storage (subject, NULL);
309 zeitgeist_subject_set_current_uri (subject, NULL);
278 310
279 G_OBJECT_CLASS (zeitgeist_subject_parent_class)->finalize (object);311 G_OBJECT_CLASS (zeitgeist_subject_parent_class)->finalize (object);
280}312}
@@ -306,6 +338,7 @@
306 return g_object_new (ZEITGEIST_TYPE_SUBJECT, NULL);338 return g_object_new (ZEITGEIST_TYPE_SUBJECT, NULL);
307}339}
308340
341// FIXME: add `current_uri' parameter
309/** 342/**
310 * zeitgeist_subject_new_full:343 * zeitgeist_subject_new_full:
311 * @uri: The URI or URL of the subject344 * @uri: The URI or URL of the subject
@@ -319,7 +352,6 @@
319 * @text: A small textual representation of the subject suitable for display352 * @text: A small textual representation of the subject suitable for display
320 * @storage: String identifier for the storage medium the subject is on.353 * @storage: String identifier for the storage medium the subject is on.
321 * Se zeitgeist_subject_set_storage() for details354 * Se zeitgeist_subject_set_storage() for details
322 *
323 * Create a new subject structure with predefined data355 * Create a new subject structure with predefined data
324 *356 *
325 * Returns: A newly create #ZeitgeistSubject instance. The returned subject will357 * Returns: A newly create #ZeitgeistSubject instance. The returned subject will
@@ -347,6 +379,6 @@
347 zeitgeist_subject_set_origin (self, origin);379 zeitgeist_subject_set_origin (self, origin);
348 zeitgeist_subject_set_text (self, text);380 zeitgeist_subject_set_text (self, text);
349 zeitgeist_subject_set_storage (self, storage);381 zeitgeist_subject_set_storage (self, storage);
350 382
351 return self;383 return self;
352}384}
353385
=== modified file 'src/zeitgeist-subject.h'
--- src/zeitgeist-subject.h 2011-03-07 14:19:39 +0000
+++ src/zeitgeist-subject.h 2012-02-02 09:59:18 +0000
@@ -101,6 +101,10 @@
101void zeitgeist_subject_set_storage (ZeitgeistSubject *subject,101void zeitgeist_subject_set_storage (ZeitgeistSubject *subject,
102 const gchar *storage);102 const gchar *storage);
103103
104const gchar* zeitgeist_subject_get_current_uri (ZeitgeistSubject *subject);
105void zeitgeist_subject_set_current_uri (ZeitgeistSubject *subject,
106 const gchar *current_uri);
107
104G_END_DECLS108G_END_DECLS
105109
106#endif /* _ZEITGEIST_SUBJECT_H_ */110#endif /* _ZEITGEIST_SUBJECT_H_ */
107111
=== modified file 'tests/test-event.c'
--- tests/test-event.c 2011-02-14 08:27:28 +0000
+++ tests/test-event.c 2012-02-02 09:59:18 +0000
@@ -62,6 +62,7 @@
62 g_assert_cmpstr (NULL, ==, zeitgeist_event_get_interpretation (ev));62 g_assert_cmpstr (NULL, ==, zeitgeist_event_get_interpretation (ev));
63 g_assert_cmpstr (NULL, ==, zeitgeist_event_get_manifestation (ev));63 g_assert_cmpstr (NULL, ==, zeitgeist_event_get_manifestation (ev));
64 g_assert_cmpstr (NULL, ==, zeitgeist_event_get_actor (ev));64 g_assert_cmpstr (NULL, ==, zeitgeist_event_get_actor (ev));
65 g_assert_cmpstr (NULL, ==, zeitgeist_event_get_origin (ev));
65 g_assert_cmpint (0, ==, zeitgeist_event_num_subjects (ev));66 g_assert_cmpint (0, ==, zeitgeist_event_num_subjects (ev));
66 g_assert (zeitgeist_event_get_payload (ev) == NULL);67 g_assert (zeitgeist_event_get_payload (ev) == NULL);
6768
@@ -94,6 +95,7 @@
94 g_assert_cmpstr (ZEITGEIST_ZG_ACCESS_EVENT,==, zeitgeist_event_get_interpretation (ev));95 g_assert_cmpstr (ZEITGEIST_ZG_ACCESS_EVENT,==, zeitgeist_event_get_interpretation (ev));
95 g_assert_cmpstr (ZEITGEIST_ZG_USER_ACTIVITY, ==, zeitgeist_event_get_manifestation (ev));96 g_assert_cmpstr (ZEITGEIST_ZG_USER_ACTIVITY, ==, zeitgeist_event_get_manifestation (ev));
96 g_assert_cmpstr ("application://firefox.desktop", ==, zeitgeist_event_get_actor (ev));97 g_assert_cmpstr ("application://firefox.desktop", ==, zeitgeist_event_get_actor (ev));
98 g_assert (zeitgeist_event_get_origin (ev) == NULL);
97 g_assert_cmpint (2, ==, zeitgeist_event_num_subjects (ev));99 g_assert_cmpint (2, ==, zeitgeist_event_num_subjects (ev));
98 g_assert (zeitgeist_event_get_payload (ev) == NULL);100 g_assert (zeitgeist_event_get_payload (ev) == NULL);
99101
@@ -105,6 +107,7 @@
105 g_assert_cmpstr ("http://example.com", ==, zeitgeist_subject_get_origin (su));107 g_assert_cmpstr ("http://example.com", ==, zeitgeist_subject_get_origin (su));
106 g_assert_cmpstr ("example.com", ==, zeitgeist_subject_get_text (su));108 g_assert_cmpstr ("example.com", ==, zeitgeist_subject_get_text (su));
107 g_assert_cmpstr ("net", ==, zeitgeist_subject_get_storage (su));109 g_assert_cmpstr ("net", ==, zeitgeist_subject_get_storage (su));
110 g_assert (zeitgeist_subject_get_current_uri (su) == NULL);
108111
109 su = zeitgeist_event_get_subject (ev, 1);112 su = zeitgeist_event_get_subject (ev, 1);
110 g_assert (zeitgeist_subject_get_uri(su) == NULL);113 g_assert (zeitgeist_subject_get_uri(su) == NULL);
@@ -114,6 +117,7 @@
114 g_assert (zeitgeist_subject_get_origin (su) == NULL);117 g_assert (zeitgeist_subject_get_origin (su) == NULL);
115 g_assert (zeitgeist_subject_get_text (su) == NULL);118 g_assert (zeitgeist_subject_get_text (su) == NULL);
116 g_assert (zeitgeist_subject_get_storage (su) == NULL);119 g_assert (zeitgeist_subject_get_storage (su) == NULL);
120 g_assert (zeitgeist_subject_get_current_uri (su) == NULL);
117121
118 g_object_unref (ev);122 g_object_unref (ev);
119}123}
@@ -183,16 +187,93 @@
183 g_assert_cmpstr (ZEITGEIST_ZG_ACCESS_EVENT,==, zeitgeist_event_get_interpretation (ev));187 g_assert_cmpstr (ZEITGEIST_ZG_ACCESS_EVENT,==, zeitgeist_event_get_interpretation (ev));
184 g_assert_cmpstr (ZEITGEIST_ZG_USER_ACTIVITY, ==, zeitgeist_event_get_manifestation (ev));188 g_assert_cmpstr (ZEITGEIST_ZG_USER_ACTIVITY, ==, zeitgeist_event_get_manifestation (ev));
185 g_assert_cmpstr ("application://foo.desktop", ==, zeitgeist_event_get_actor (ev));189 g_assert_cmpstr ("application://foo.desktop", ==, zeitgeist_event_get_actor (ev));
186 g_assert_cmpint (1, ==, zeitgeist_event_num_subjects (ev));190 g_assert (zeitgeist_event_get_origin (ev) == NULL);
187191 g_assert_cmpint (1, ==, zeitgeist_event_num_subjects (ev));
188 su = zeitgeist_event_get_subject (ev, 0);192
189 g_assert_cmpstr ("file:///tmp/foo.txt", ==, zeitgeist_subject_get_uri(su));193 su = zeitgeist_event_get_subject (ev, 0);
190 g_assert_cmpstr (ZEITGEIST_NFO_DOCUMENT, ==, zeitgeist_subject_get_interpretation (su));194 g_assert_cmpstr ("file:///tmp/foo.txt", ==, zeitgeist_subject_get_uri(su));
191 g_assert_cmpstr (ZEITGEIST_NFO_FILE_DATA_OBJECT, ==, zeitgeist_subject_get_manifestation (su));195 g_assert_cmpstr (ZEITGEIST_NFO_DOCUMENT, ==, zeitgeist_subject_get_interpretation (su));
192 g_assert_cmpstr ("text/plain", ==, zeitgeist_subject_get_mimetype (su));196 g_assert_cmpstr (ZEITGEIST_NFO_FILE_DATA_OBJECT, ==, zeitgeist_subject_get_manifestation (su));
193 g_assert_cmpstr ("file:///tmp", ==, zeitgeist_subject_get_origin (su));197 g_assert_cmpstr ("text/plain", ==, zeitgeist_subject_get_mimetype (su));
194 g_assert_cmpstr ("foo.txt", ==, zeitgeist_subject_get_text (su));198 g_assert_cmpstr ("file:///tmp", ==, zeitgeist_subject_get_origin (su));
195 g_assert_cmpstr ("36e5604e-7e1b-4ebd-bb6a-184c6ea99627", ==, zeitgeist_subject_get_storage (su));199 g_assert_cmpstr ("foo.txt", ==, zeitgeist_subject_get_text (su));
200 g_assert_cmpstr ("36e5604e-7e1b-4ebd-bb6a-184c6ea99627", ==, zeitgeist_subject_get_storage (su));
201 g_assert (zeitgeist_subject_get_current_uri (su) == NULL);
202
203 payload = zeitgeist_event_get_payload (ev);
204 g_assert (payload != NULL);
205 g_assert_cmpint (3, ==, payload->len);
206 g_assert_cmpint (1, ==, payload->data[0]);
207 g_assert_cmpint (2, ==, payload->data[1]);
208 g_assert_cmpint (3, ==, payload->data[2]);
209
210 g_object_unref (ev);
211}
212
213static void
214test_from_variant_with_new_fields (Fixture *fix, gconstpointer data)
215{
216 GVariant *var;
217 GVariantBuilder b;
218 ZeitgeistEvent *ev;
219 ZeitgeistSubject *su;
220 GByteArray *payload;
221
222 g_variant_builder_init (&b, ZEITGEIST_EVENT_VARIANT_TYPE);
223
224 /* Build event data */
225 g_variant_builder_open (&b, G_VARIANT_TYPE ("as"));
226 g_variant_builder_add (&b, "s", "27");
227 g_variant_builder_add (&b, "s", "68");
228 g_variant_builder_add (&b, "s", ZEITGEIST_ZG_ACCESS_EVENT);
229 g_variant_builder_add (&b, "s", ZEITGEIST_ZG_USER_ACTIVITY);
230 g_variant_builder_add (&b, "s", "application://foo.desktop");
231 g_variant_builder_add (&b, "s", "origin");
232 g_variant_builder_close (&b);
233
234 /* Build subjects */
235 g_variant_builder_open (&b, G_VARIANT_TYPE ("aas"));
236 {
237 g_variant_builder_open (&b, G_VARIANT_TYPE ("as"));
238 g_variant_builder_add (&b, "s", "file:///tmp/foo.txt");
239 g_variant_builder_add (&b, "s", ZEITGEIST_NFO_DOCUMENT);
240 g_variant_builder_add (&b, "s", ZEITGEIST_NFO_FILE_DATA_OBJECT);
241 g_variant_builder_add (&b, "s", "file:///tmp");
242 g_variant_builder_add (&b, "s", "text/plain");
243 g_variant_builder_add (&b, "s", "foo.txt");
244 g_variant_builder_add (&b, "s", "36e5604e-7e1b-4ebd-bb6a-184c6ea99627");
245 g_variant_builder_add (&b, "s", "file:///tmp/current.txt");
246 g_variant_builder_close (&b);
247 }
248 g_variant_builder_close (&b);
249
250 /* Build payload */
251 g_variant_builder_open (&b, G_VARIANT_TYPE ("ay"));
252 g_variant_builder_add (&b, "y", 1);
253 g_variant_builder_add (&b, "y", 2);
254 g_variant_builder_add (&b, "y", 3);
255 g_variant_builder_close (&b);
256
257 var = g_variant_builder_end (&b);
258 ev = zeitgeist_event_new_from_variant (var); // var freed
259
260 g_assert_cmpint (27, ==, zeitgeist_event_get_id (ev));
261 g_assert_cmpint (68, ==, zeitgeist_event_get_timestamp (ev));
262 g_assert_cmpstr (ZEITGEIST_ZG_ACCESS_EVENT,==, zeitgeist_event_get_interpretation (ev));
263 g_assert_cmpstr (ZEITGEIST_ZG_USER_ACTIVITY, ==, zeitgeist_event_get_manifestation (ev));
264 g_assert_cmpstr ("application://foo.desktop", ==, zeitgeist_event_get_actor (ev));
265 g_assert_cmpstr ("origin", ==, zeitgeist_event_get_origin (ev));
266 g_assert_cmpint (1, ==, zeitgeist_event_num_subjects (ev));
267
268 su = zeitgeist_event_get_subject (ev, 0);
269 g_assert_cmpstr ("file:///tmp/foo.txt", ==, zeitgeist_subject_get_uri(su));
270 g_assert_cmpstr (ZEITGEIST_NFO_DOCUMENT, ==, zeitgeist_subject_get_interpretation (su));
271 g_assert_cmpstr (ZEITGEIST_NFO_FILE_DATA_OBJECT, ==, zeitgeist_subject_get_manifestation (su));
272 g_assert_cmpstr ("text/plain", ==, zeitgeist_subject_get_mimetype (su));
273 g_assert_cmpstr ("file:///tmp", ==, zeitgeist_subject_get_origin (su));
274 g_assert_cmpstr ("foo.txt", ==, zeitgeist_subject_get_text (su));
275 g_assert_cmpstr ("36e5604e-7e1b-4ebd-bb6a-184c6ea99627", ==, zeitgeist_subject_get_storage (su));
276 g_assert_cmpstr ("file:///tmp/current.txt", ==, zeitgeist_subject_get_current_uri (su));
196277
197 payload = zeitgeist_event_get_payload (ev);278 payload = zeitgeist_event_get_payload (ev);
198 g_assert (payload != NULL);279 g_assert (payload != NULL);
@@ -218,6 +299,7 @@
218 g_assert (zeitgeist_event_get_interpretation (marshalled) == NULL);299 g_assert (zeitgeist_event_get_interpretation (marshalled) == NULL);
219 g_assert (zeitgeist_event_get_manifestation (marshalled) == NULL);300 g_assert (zeitgeist_event_get_manifestation (marshalled) == NULL);
220 g_assert (zeitgeist_event_get_actor (marshalled) == NULL);301 g_assert (zeitgeist_event_get_actor (marshalled) == NULL);
302 g_assert (zeitgeist_event_get_origin (marshalled) == NULL);
221 g_assert_cmpint (0, ==, zeitgeist_event_num_subjects (marshalled));303 g_assert_cmpint (0, ==, zeitgeist_event_num_subjects (marshalled));
222 g_assert (zeitgeist_event_get_payload (marshalled) == NULL);304 g_assert (zeitgeist_event_get_payload (marshalled) == NULL);
223305
@@ -245,6 +327,12 @@
245 "example.com",327 "example.com",
246 "net"),328 "net"),
247 NULL);329 NULL);
330
331 // Set event origin and current_uri
332 zeitgeist_event_set_origin (orig, "origin");
333 zeitgeist_subject_set_current_uri (
334 zeitgeist_event_get_subject (orig, 0), "http://current-example.com");
335
248 payload = g_byte_array_new ();336 payload = g_byte_array_new ();
249 byte = 255;337 byte = 255;
250 g_byte_array_append (payload, &byte, 1);338 g_byte_array_append (payload, &byte, 1);
@@ -257,6 +345,7 @@
257 g_assert_cmpstr (ZEITGEIST_ZG_ACCESS_EVENT,==, zeitgeist_event_get_interpretation (marshalled));345 g_assert_cmpstr (ZEITGEIST_ZG_ACCESS_EVENT,==, zeitgeist_event_get_interpretation (marshalled));
258 g_assert_cmpstr (ZEITGEIST_ZG_USER_ACTIVITY, ==, zeitgeist_event_get_manifestation (marshalled));346 g_assert_cmpstr (ZEITGEIST_ZG_USER_ACTIVITY, ==, zeitgeist_event_get_manifestation (marshalled));
259 g_assert_cmpstr ("application://firefox.desktop", ==, zeitgeist_event_get_actor (marshalled));347 g_assert_cmpstr ("application://firefox.desktop", ==, zeitgeist_event_get_actor (marshalled));
348 g_assert_cmpstr ("origin", ==, zeitgeist_event_get_origin (marshalled));
260 g_assert_cmpint (1, ==, zeitgeist_event_num_subjects (marshalled));349 g_assert_cmpint (1, ==, zeitgeist_event_num_subjects (marshalled));
261350
262 payload = zeitgeist_event_get_payload (marshalled);351 payload = zeitgeist_event_get_payload (marshalled);
@@ -272,6 +361,7 @@
272 g_assert_cmpstr ("http://example.com", ==, zeitgeist_subject_get_origin (su));361 g_assert_cmpstr ("http://example.com", ==, zeitgeist_subject_get_origin (su));
273 g_assert_cmpstr ("example.com", ==, zeitgeist_subject_get_text (su));362 g_assert_cmpstr ("example.com", ==, zeitgeist_subject_get_text (su));
274 g_assert_cmpstr ("net", ==, zeitgeist_subject_get_storage (su));363 g_assert_cmpstr ("net", ==, zeitgeist_subject_get_storage (su));
364 g_assert_cmpstr ("http://current-example.com", ==, zeitgeist_subject_get_current_uri (su));
275365
276 g_object_unref (orig);366 g_object_unref (orig);
277 g_object_unref (marshalled);367 g_object_unref (marshalled);
@@ -333,6 +423,8 @@
333 setup, test_actor_from_app_info, teardown); 423 setup, test_actor_from_app_info, teardown);
334 g_test_add ("/Zeitgeist/Event/FromVariant", Fixture, NULL,424 g_test_add ("/Zeitgeist/Event/FromVariant", Fixture, NULL,
335 setup, test_from_variant, teardown);425 setup, test_from_variant, teardown);
426 g_test_add ("/Zeitgeist/Event/FromVariantWithNewFields", Fixture, NULL,
427 setup, test_from_variant_with_new_fields, teardown);
336 g_test_add ("/Zeitgeist/Event/EmptyToFromVariant", Fixture, NULL,428 g_test_add ("/Zeitgeist/Event/EmptyToFromVariant", Fixture, NULL,
337 setup, test_empty_to_from_variant, teardown);429 setup, test_empty_to_from_variant, teardown);
338 g_test_add ("/Zeitgeist/Event/WithOneSubjectToFromVariant", Fixture, NULL,430 g_test_add ("/Zeitgeist/Event/WithOneSubjectToFromVariant", Fixture, NULL,

Subscribers

People subscribed via source and target branches