Merge lp:~rainct/libzeitgeist/event-origin-subject-current-uri into lp:libzeitgeist
- event-origin-subject-current-uri
- Merge into trunk
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 |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Mikkel Kamstrup Erlandsen | Approve | ||
Review via email:
|
Commit message
Description of the change
To post a comment you must log in.
Revision history for this message
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Mikkel Kamstrup Erlandsen (kamstrup) wrote : | # |
review:
Needs Fixing
- 216. By Siegfried Gevatter
-
Improve documentation of zeitgeist_
event_set_ origin
Revision history for this message
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
Siegfried Gevatter (rainct) wrote : | # |
Done :)
Revision history for this message
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
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
1 | === modified file 'src/zeitgeist-event.c' | |||
2 | --- src/zeitgeist-event.c 2011-07-11 18:05:11 +0000 | |||
3 | +++ src/zeitgeist-event.c 2012-02-02 09:59:18 +0000 | |||
4 | @@ -82,6 +82,7 @@ | |||
5 | 82 | ZEITGEIST_EVENT_INTERPRETATION, | 82 | ZEITGEIST_EVENT_INTERPRETATION, |
6 | 83 | ZEITGEIST_EVENT_MANIFESTATION, | 83 | ZEITGEIST_EVENT_MANIFESTATION, |
7 | 84 | ZEITGEIST_EVENT_ACTOR, | 84 | ZEITGEIST_EVENT_ACTOR, |
8 | 85 | ZEITGEIST_EVENT_ORIGIN, | ||
9 | 85 | } ZeitgeistEventDataOffset; | 86 | } ZeitgeistEventDataOffset; |
10 | 86 | 87 | ||
11 | 87 | typedef struct | 88 | typedef struct |
12 | @@ -91,6 +92,7 @@ | |||
13 | 91 | gchar *interpretation; | 92 | gchar *interpretation; |
14 | 92 | gchar *manifestation; | 93 | gchar *manifestation; |
15 | 93 | gchar *actor; | 94 | gchar *actor; |
16 | 95 | gchar *origin; | ||
17 | 94 | GPtrArray *subjects; | 96 | GPtrArray *subjects; |
18 | 95 | GByteArray *payload; | 97 | GByteArray *payload; |
19 | 96 | } ZeitgeistEventPrivate; | 98 | } ZeitgeistEventPrivate; |
20 | @@ -431,6 +433,53 @@ | |||
21 | 431 | } | 433 | } |
22 | 432 | 434 | ||
23 | 433 | /** | 435 | /** |
24 | 436 | * zeitgeist_event_get_origin: | ||
25 | 437 | * @event: The event to get the origin from | ||
26 | 438 | * | ||
27 | 439 | * Get the origin of an event. | ||
28 | 440 | * This differs from a subject's origin, as it describes where the event comes | ||
29 | 441 | * from, not where it resides. | ||
30 | 442 | * | ||
31 | 443 | * Returns: The origin of @event. | ||
32 | 444 | */ | ||
33 | 445 | const gchar* | ||
34 | 446 | zeitgeist_event_get_origin (ZeitgeistEvent *event) | ||
35 | 447 | { | ||
36 | 448 | g_return_val_if_fail (ZEITGEIST_IS_EVENT (event), NULL); | ||
37 | 449 | |||
38 | 450 | ZeitgeistEventPrivate* priv = ZEITGEIST_EVENT_GET_PRIVATE (event); | ||
39 | 451 | |||
40 | 452 | return priv->origin; | ||
41 | 453 | } | ||
42 | 454 | |||
43 | 455 | /** | ||
44 | 456 | * zeitgeist_event_set_origin: | ||
45 | 457 | * @event: The event to set the origin of | ||
46 | 458 | * @origin: The origin to set | ||
47 | 459 | * | ||
48 | 460 | * Set the origin of an event. | ||
49 | 461 | * This differs from a subject's origin, as it describes where the event comes | ||
50 | 462 | * from, not where it resides. | ||
51 | 463 | */ | ||
52 | 464 | void | ||
53 | 465 | zeitgeist_event_set_origin (ZeitgeistEvent *event, | ||
54 | 466 | const gchar *origin) | ||
55 | 467 | { | ||
56 | 468 | g_return_if_fail (ZEITGEIST_IS_EVENT (event)); | ||
57 | 469 | |||
58 | 470 | ZeitgeistEventPrivate* priv = ZEITGEIST_EVENT_GET_PRIVATE (event); | ||
59 | 471 | |||
60 | 472 | gchar* copy = g_strdup (origin); | ||
61 | 473 | |||
62 | 474 | if (priv->origin) | ||
63 | 475 | { | ||
64 | 476 | g_free (priv->origin); | ||
65 | 477 | } | ||
66 | 478 | |||
67 | 479 | priv->origin = copy; | ||
68 | 480 | } | ||
69 | 481 | |||
70 | 482 | /** | ||
71 | 434 | * zeitgeist_event_get_payload: | 483 | * zeitgeist_event_get_payload: |
72 | 435 | * @event: The event to get the payload for | 484 | * @event: The event to get the payload for |
73 | 436 | * | 485 | * |
74 | @@ -439,7 +488,6 @@ | |||
75 | 439 | * Returns: The event payload or %NULL if unset. Do not free. If you want to | 488 | * Returns: The event payload or %NULL if unset. Do not free. If you want to |
76 | 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. |
77 | 441 | */ | 490 | */ |
78 | 442 | |||
79 | 443 | GByteArray* | 491 | GByteArray* |
80 | 444 | zeitgeist_event_get_payload (ZeitgeistEvent *event) | 492 | zeitgeist_event_get_payload (ZeitgeistEvent *event) |
81 | 445 | { | 493 | { |
82 | @@ -491,6 +539,7 @@ | |||
83 | 491 | priv->interpretation = NULL; | 539 | priv->interpretation = NULL; |
84 | 492 | priv->manifestation = NULL; | 540 | priv->manifestation = NULL; |
85 | 493 | priv->actor = NULL; | 541 | priv->actor = NULL; |
86 | 542 | priv->origin = NULL; | ||
87 | 494 | priv->subjects = g_ptr_array_new_with_free_func ( | 543 | priv->subjects = g_ptr_array_new_with_free_func ( |
88 | 495 | (GDestroyNotify)g_object_unref); | 544 | (GDestroyNotify)g_object_unref); |
89 | 496 | priv->payload = NULL; | 545 | priv->payload = NULL; |
90 | @@ -506,14 +555,15 @@ | |||
91 | 506 | 555 | ||
92 | 507 | if (priv->subjects) | 556 | if (priv->subjects) |
93 | 508 | { | 557 | { |
95 | 509 | /* Subjects are unreffed by the free-func of the GPtrArray */ | 558 | /* Subjects are unreffed by the free-func of the GPtrArray */ |
96 | 510 | g_ptr_array_unref (priv->subjects); | 559 | g_ptr_array_unref (priv->subjects); |
97 | 511 | priv->subjects = NULL; | 560 | priv->subjects = NULL; |
98 | 512 | } | 561 | } |
99 | 513 | 562 | ||
100 | 514 | zeitgeist_event_set_interpretation (event, NULL); | 563 | zeitgeist_event_set_interpretation (event, NULL); |
101 | 515 | zeitgeist_event_set_manifestation (event, NULL); | 564 | zeitgeist_event_set_manifestation (event, NULL); |
103 | 516 | zeitgeist_event_set_actor (event, NULL); | 565 | zeitgeist_event_set_actor (event, NULL); |
104 | 566 | zeitgeist_event_set_origin (event, NULL); | ||
105 | 517 | zeitgeist_event_set_payload (event, NULL); | 567 | zeitgeist_event_set_payload (event, NULL); |
106 | 518 | 568 | ||
107 | 519 | G_OBJECT_CLASS (zeitgeist_event_parent_class)->finalize (object); | 569 | G_OBJECT_CLASS (zeitgeist_event_parent_class)->finalize (object); |
108 | @@ -550,6 +600,7 @@ | |||
109 | 550 | return self; | 600 | return self; |
110 | 551 | } | 601 | } |
111 | 552 | 602 | ||
112 | 603 | // FIXME: add `origin' parameter | ||
113 | 553 | /** | 604 | /** |
114 | 554 | * zeitgeist_event_new_full: | 605 | * zeitgeist_event_new_full: |
115 | 555 | * @interpretation: The interpretation type of the event. | 606 | * @interpretation: The interpretation type of the event. |
116 | @@ -691,6 +742,9 @@ | |||
117 | 691 | zeitgeist_event_set_actor (result, str[0] == '\0' ? NULL : str); | 742 | zeitgeist_event_set_actor (result, str[0] == '\0' ? NULL : str); |
118 | 692 | g_free (str); | 743 | g_free (str); |
119 | 693 | 744 | ||
120 | 745 | if (g_variant_iter_loop (event_data, "s", &str)) | ||
121 | 746 | zeitgeist_event_set_origin (result, str[0] == '\0' ? NULL : str); | ||
122 | 747 | |||
123 | 694 | /* Build the list of subjects */ | 748 | /* Build the list of subjects */ |
124 | 695 | while (g_variant_iter_loop (subjects, "as", &subject_data)) | 749 | while (g_variant_iter_loop (subjects, "as", &subject_data)) |
125 | 696 | { | 750 | { |
126 | @@ -732,6 +786,9 @@ | |||
127 | 732 | zeitgeist_subject_set_storage (subject, str[0] == '\0' ? NULL : str); | 786 | zeitgeist_subject_set_storage (subject, str[0] == '\0' ? NULL : str); |
128 | 733 | g_free (str); | 787 | g_free (str); |
129 | 734 | 788 | ||
130 | 789 | if (g_variant_iter_loop (subject_data, "s", &str)) | ||
131 | 790 | zeitgeist_subject_set_current_uri (subject, str[0] == '\0' ? NULL : str); | ||
132 | 791 | |||
133 | 735 | zeitgeist_event_add_subject (result, subject); | 792 | zeitgeist_event_add_subject (result, subject); |
134 | 736 | } | 793 | } |
135 | 737 | 794 | ||
136 | @@ -799,6 +856,7 @@ | |||
137 | 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 : "")); |
138 | 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 : "")); |
139 | 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 : "")); |
140 | 859 | g_variant_builder_add (&b, "s", (bif = zeitgeist_event_get_origin (event), bif ? bif : "")); | ||
141 | 802 | g_variant_builder_close (&b); | 860 | g_variant_builder_close (&b); |
142 | 803 | 861 | ||
143 | 804 | /* Build subjects */ | 862 | /* Build subjects */ |
144 | @@ -815,6 +873,7 @@ | |||
145 | 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 : "")); |
146 | 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 : "")); |
147 | 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 : "")); |
148 | 876 | g_variant_builder_add (&b, "s", (bif = zeitgeist_subject_get_current_uri(su), bif ? bif : "")); | ||
149 | 818 | g_variant_builder_close (&b); | 877 | g_variant_builder_close (&b); |
150 | 819 | } | 878 | } |
151 | 820 | g_variant_builder_close (&b); | 879 | g_variant_builder_close (&b); |
152 | 821 | 880 | ||
153 | === modified file 'src/zeitgeist-event.h' | |||
154 | --- src/zeitgeist-event.h 2011-03-07 14:19:39 +0000 | |||
155 | +++ src/zeitgeist-event.h 2012-02-02 09:59:18 +0000 | |||
156 | @@ -104,6 +104,10 @@ | |||
157 | 104 | void zeitgeist_event_set_actor (ZeitgeistEvent *event, | 104 | void zeitgeist_event_set_actor (ZeitgeistEvent *event, |
158 | 105 | const gchar *actor); | 105 | const gchar *actor); |
159 | 106 | 106 | ||
160 | 107 | const gchar* zeitgeist_event_get_origin (ZeitgeistEvent *event); | ||
161 | 108 | void zeitgeist_event_set_origin (ZeitgeistEvent *event, | ||
162 | 109 | const gchar *origin); | ||
163 | 110 | |||
164 | 107 | void zeitgeist_event_set_actor_from_app_info (ZeitgeistEvent *event, | 111 | void zeitgeist_event_set_actor_from_app_info (ZeitgeistEvent *event, |
165 | 108 | GAppInfo *appinfo); | 112 | GAppInfo *appinfo); |
166 | 109 | 113 | ||
167 | 110 | 114 | ||
168 | === modified file 'src/zeitgeist-subject.c' | |||
169 | --- src/zeitgeist-subject.c 2011-03-07 14:19:39 +0000 | |||
170 | +++ src/zeitgeist-subject.c 2012-02-02 09:59:18 +0000 | |||
171 | @@ -43,6 +43,8 @@ | |||
172 | 43 | ZEITGEIST_SUBJECT_MIMETYPE, | 43 | ZEITGEIST_SUBJECT_MIMETYPE, |
173 | 44 | ZEITGEIST_SUBJECT_ORIGIN, | 44 | ZEITGEIST_SUBJECT_ORIGIN, |
174 | 45 | ZEITGEIST_SUBJECT_TEXT, | 45 | ZEITGEIST_SUBJECT_TEXT, |
175 | 46 | ZEITGEIST_SUBJECT_STORAGE, | ||
176 | 47 | ZEITGEIST_SUBJECT_CURRENT_URI, | ||
177 | 46 | } ZeitgeistSubjectDataOffset; | 48 | } ZeitgeistSubjectDataOffset; |
178 | 47 | 49 | ||
179 | 48 | typedef struct | 50 | typedef struct |
180 | @@ -54,6 +56,7 @@ | |||
181 | 54 | gchar *origin; | 56 | gchar *origin; |
182 | 55 | gchar *text; | 57 | gchar *text; |
183 | 56 | gchar *storage; | 58 | gchar *storage; |
184 | 59 | gchar *current_uri; | ||
185 | 57 | } ZeitgeistSubjectPrivate; | 60 | } ZeitgeistSubjectPrivate; |
186 | 58 | 61 | ||
187 | 59 | const gchar* | 62 | const gchar* |
188 | @@ -245,6 +248,33 @@ | |||
189 | 245 | priv->storage = copy; | 248 | priv->storage = copy; |
190 | 246 | } | 249 | } |
191 | 247 | 250 | ||
192 | 251 | const gchar* | ||
193 | 252 | zeitgeist_subject_get_current_uri (ZeitgeistSubject *subject) | ||
194 | 253 | { | ||
195 | 254 | g_return_val_if_fail (ZEITGEIST_IS_SUBJECT (subject), NULL); | ||
196 | 255 | |||
197 | 256 | ZeitgeistSubjectPrivate *priv = ZEITGEIST_SUBJECT_GET_PRIVATE (subject); | ||
198 | 257 | return priv->current_uri; | ||
199 | 258 | } | ||
200 | 259 | |||
201 | 260 | void | ||
202 | 261 | zeitgeist_subject_set_current_uri (ZeitgeistSubject *subject, | ||
203 | 262 | const gchar *current_uri) | ||
204 | 263 | { | ||
205 | 264 | g_return_if_fail (ZEITGEIST_IS_SUBJECT (subject)); | ||
206 | 265 | |||
207 | 266 | ZeitgeistSubjectPrivate *priv = ZEITGEIST_SUBJECT_GET_PRIVATE (subject); | ||
208 | 267 | |||
209 | 268 | gchar* copy = g_strdup (current_uri); | ||
210 | 269 | |||
211 | 270 | if (priv->current_uri) | ||
212 | 271 | { | ||
213 | 272 | g_free (priv->current_uri); | ||
214 | 273 | } | ||
215 | 274 | |||
216 | 275 | priv->current_uri = copy; | ||
217 | 276 | } | ||
218 | 277 | |||
219 | 248 | static void | 278 | static void |
220 | 249 | zeitgeist_subject_init (ZeitgeistSubject *object) | 279 | zeitgeist_subject_init (ZeitgeistSubject *object) |
221 | 250 | { | 280 | { |
222 | @@ -258,6 +288,7 @@ | |||
223 | 258 | priv->origin = NULL; | 288 | priv->origin = NULL; |
224 | 259 | priv->text = NULL; | 289 | priv->text = NULL; |
225 | 260 | priv->storage = NULL; | 290 | priv->storage = NULL; |
226 | 291 | priv->current_uri = NULL; | ||
227 | 261 | } | 292 | } |
228 | 262 | 293 | ||
229 | 263 | static void | 294 | static void |
230 | @@ -275,6 +306,7 @@ | |||
231 | 275 | zeitgeist_subject_set_origin (subject, NULL); | 306 | zeitgeist_subject_set_origin (subject, NULL); |
232 | 276 | zeitgeist_subject_set_text (subject, NULL); | 307 | zeitgeist_subject_set_text (subject, NULL); |
233 | 277 | zeitgeist_subject_set_storage (subject, NULL); | 308 | zeitgeist_subject_set_storage (subject, NULL); |
234 | 309 | zeitgeist_subject_set_current_uri (subject, NULL); | ||
235 | 278 | 310 | ||
236 | 279 | G_OBJECT_CLASS (zeitgeist_subject_parent_class)->finalize (object); | 311 | G_OBJECT_CLASS (zeitgeist_subject_parent_class)->finalize (object); |
237 | 280 | } | 312 | } |
238 | @@ -306,6 +338,7 @@ | |||
239 | 306 | return g_object_new (ZEITGEIST_TYPE_SUBJECT, NULL); | 338 | return g_object_new (ZEITGEIST_TYPE_SUBJECT, NULL); |
240 | 307 | } | 339 | } |
241 | 308 | 340 | ||
242 | 341 | // FIXME: add `current_uri' parameter | ||
243 | 309 | /** | 342 | /** |
244 | 310 | * zeitgeist_subject_new_full: | 343 | * zeitgeist_subject_new_full: |
245 | 311 | * @uri: The URI or URL of the subject | 344 | * @uri: The URI or URL of the subject |
246 | @@ -319,7 +352,6 @@ | |||
247 | 319 | * @text: A small textual representation of the subject suitable for display | 352 | * @text: A small textual representation of the subject suitable for display |
248 | 320 | * @storage: String identifier for the storage medium the subject is on. | 353 | * @storage: String identifier for the storage medium the subject is on. |
249 | 321 | * Se zeitgeist_subject_set_storage() for details | 354 | * Se zeitgeist_subject_set_storage() for details |
250 | 322 | * | ||
251 | 323 | * Create a new subject structure with predefined data | 355 | * Create a new subject structure with predefined data |
252 | 324 | * | 356 | * |
253 | 325 | * Returns: A newly create #ZeitgeistSubject instance. The returned subject will | 357 | * Returns: A newly create #ZeitgeistSubject instance. The returned subject will |
254 | @@ -347,6 +379,6 @@ | |||
255 | 347 | zeitgeist_subject_set_origin (self, origin); | 379 | zeitgeist_subject_set_origin (self, origin); |
256 | 348 | zeitgeist_subject_set_text (self, text); | 380 | zeitgeist_subject_set_text (self, text); |
257 | 349 | zeitgeist_subject_set_storage (self, storage); | 381 | zeitgeist_subject_set_storage (self, storage); |
259 | 350 | 382 | ||
260 | 351 | return self; | 383 | return self; |
261 | 352 | } | 384 | } |
262 | 353 | 385 | ||
263 | === modified file 'src/zeitgeist-subject.h' | |||
264 | --- src/zeitgeist-subject.h 2011-03-07 14:19:39 +0000 | |||
265 | +++ src/zeitgeist-subject.h 2012-02-02 09:59:18 +0000 | |||
266 | @@ -101,6 +101,10 @@ | |||
267 | 101 | void zeitgeist_subject_set_storage (ZeitgeistSubject *subject, | 101 | void zeitgeist_subject_set_storage (ZeitgeistSubject *subject, |
268 | 102 | const gchar *storage); | 102 | const gchar *storage); |
269 | 103 | 103 | ||
270 | 104 | const gchar* zeitgeist_subject_get_current_uri (ZeitgeistSubject *subject); | ||
271 | 105 | void zeitgeist_subject_set_current_uri (ZeitgeistSubject *subject, | ||
272 | 106 | const gchar *current_uri); | ||
273 | 107 | |||
274 | 104 | G_END_DECLS | 108 | G_END_DECLS |
275 | 105 | 109 | ||
276 | 106 | #endif /* _ZEITGEIST_SUBJECT_H_ */ | 110 | #endif /* _ZEITGEIST_SUBJECT_H_ */ |
277 | 107 | 111 | ||
278 | === modified file 'tests/test-event.c' | |||
279 | --- tests/test-event.c 2011-02-14 08:27:28 +0000 | |||
280 | +++ tests/test-event.c 2012-02-02 09:59:18 +0000 | |||
281 | @@ -62,6 +62,7 @@ | |||
282 | 62 | g_assert_cmpstr (NULL, ==, zeitgeist_event_get_interpretation (ev)); | 62 | g_assert_cmpstr (NULL, ==, zeitgeist_event_get_interpretation (ev)); |
283 | 63 | g_assert_cmpstr (NULL, ==, zeitgeist_event_get_manifestation (ev)); | 63 | g_assert_cmpstr (NULL, ==, zeitgeist_event_get_manifestation (ev)); |
284 | 64 | g_assert_cmpstr (NULL, ==, zeitgeist_event_get_actor (ev)); | 64 | g_assert_cmpstr (NULL, ==, zeitgeist_event_get_actor (ev)); |
285 | 65 | g_assert_cmpstr (NULL, ==, zeitgeist_event_get_origin (ev)); | ||
286 | 65 | g_assert_cmpint (0, ==, zeitgeist_event_num_subjects (ev)); | 66 | g_assert_cmpint (0, ==, zeitgeist_event_num_subjects (ev)); |
287 | 66 | g_assert (zeitgeist_event_get_payload (ev) == NULL); | 67 | g_assert (zeitgeist_event_get_payload (ev) == NULL); |
288 | 67 | 68 | ||
289 | @@ -94,6 +95,7 @@ | |||
290 | 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)); |
291 | 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)); |
292 | 96 | g_assert_cmpstr ("application://firefox.desktop", ==, zeitgeist_event_get_actor (ev)); | 97 | g_assert_cmpstr ("application://firefox.desktop", ==, zeitgeist_event_get_actor (ev)); |
293 | 98 | g_assert (zeitgeist_event_get_origin (ev) == NULL); | ||
294 | 97 | g_assert_cmpint (2, ==, zeitgeist_event_num_subjects (ev)); | 99 | g_assert_cmpint (2, ==, zeitgeist_event_num_subjects (ev)); |
295 | 98 | g_assert (zeitgeist_event_get_payload (ev) == NULL); | 100 | g_assert (zeitgeist_event_get_payload (ev) == NULL); |
296 | 99 | 101 | ||
297 | @@ -105,6 +107,7 @@ | |||
298 | 105 | g_assert_cmpstr ("http://example.com", ==, zeitgeist_subject_get_origin (su)); | 107 | g_assert_cmpstr ("http://example.com", ==, zeitgeist_subject_get_origin (su)); |
299 | 106 | g_assert_cmpstr ("example.com", ==, zeitgeist_subject_get_text (su)); | 108 | g_assert_cmpstr ("example.com", ==, zeitgeist_subject_get_text (su)); |
300 | 107 | g_assert_cmpstr ("net", ==, zeitgeist_subject_get_storage (su)); | 109 | g_assert_cmpstr ("net", ==, zeitgeist_subject_get_storage (su)); |
301 | 110 | g_assert (zeitgeist_subject_get_current_uri (su) == NULL); | ||
302 | 108 | 111 | ||
303 | 109 | su = zeitgeist_event_get_subject (ev, 1); | 112 | su = zeitgeist_event_get_subject (ev, 1); |
304 | 110 | g_assert (zeitgeist_subject_get_uri(su) == NULL); | 113 | g_assert (zeitgeist_subject_get_uri(su) == NULL); |
305 | @@ -114,6 +117,7 @@ | |||
306 | 114 | g_assert (zeitgeist_subject_get_origin (su) == NULL); | 117 | g_assert (zeitgeist_subject_get_origin (su) == NULL); |
307 | 115 | g_assert (zeitgeist_subject_get_text (su) == NULL); | 118 | g_assert (zeitgeist_subject_get_text (su) == NULL); |
308 | 116 | g_assert (zeitgeist_subject_get_storage (su) == NULL); | 119 | g_assert (zeitgeist_subject_get_storage (su) == NULL); |
309 | 120 | g_assert (zeitgeist_subject_get_current_uri (su) == NULL); | ||
310 | 117 | 121 | ||
311 | 118 | g_object_unref (ev); | 122 | g_object_unref (ev); |
312 | 119 | } | 123 | } |
313 | @@ -183,16 +187,93 @@ | |||
314 | 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)); |
315 | 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)); |
316 | 185 | g_assert_cmpstr ("application://foo.desktop", ==, zeitgeist_event_get_actor (ev)); | 189 | g_assert_cmpstr ("application://foo.desktop", ==, zeitgeist_event_get_actor (ev)); |
327 | 186 | g_assert_cmpint (1, ==, zeitgeist_event_num_subjects (ev)); | 190 | g_assert (zeitgeist_event_get_origin (ev) == NULL); |
328 | 187 | 191 | g_assert_cmpint (1, ==, zeitgeist_event_num_subjects (ev)); | |
329 | 188 | su = zeitgeist_event_get_subject (ev, 0); | 192 | |
330 | 189 | g_assert_cmpstr ("file:///tmp/foo.txt", ==, zeitgeist_subject_get_uri(su)); | 193 | su = zeitgeist_event_get_subject (ev, 0); |
331 | 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)); |
332 | 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)); |
333 | 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)); |
334 | 193 | g_assert_cmpstr ("file:///tmp", ==, zeitgeist_subject_get_origin (su)); | 197 | g_assert_cmpstr ("text/plain", ==, zeitgeist_subject_get_mimetype (su)); |
335 | 194 | g_assert_cmpstr ("foo.txt", ==, zeitgeist_subject_get_text (su)); | 198 | g_assert_cmpstr ("file:///tmp", ==, zeitgeist_subject_get_origin (su)); |
336 | 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)); |
337 | 200 | g_assert_cmpstr ("36e5604e-7e1b-4ebd-bb6a-184c6ea99627", ==, zeitgeist_subject_get_storage (su)); | ||
338 | 201 | g_assert (zeitgeist_subject_get_current_uri (su) == NULL); | ||
339 | 202 | |||
340 | 203 | payload = zeitgeist_event_get_payload (ev); | ||
341 | 204 | g_assert (payload != NULL); | ||
342 | 205 | g_assert_cmpint (3, ==, payload->len); | ||
343 | 206 | g_assert_cmpint (1, ==, payload->data[0]); | ||
344 | 207 | g_assert_cmpint (2, ==, payload->data[1]); | ||
345 | 208 | g_assert_cmpint (3, ==, payload->data[2]); | ||
346 | 209 | |||
347 | 210 | g_object_unref (ev); | ||
348 | 211 | } | ||
349 | 212 | |||
350 | 213 | static void | ||
351 | 214 | test_from_variant_with_new_fields (Fixture *fix, gconstpointer data) | ||
352 | 215 | { | ||
353 | 216 | GVariant *var; | ||
354 | 217 | GVariantBuilder b; | ||
355 | 218 | ZeitgeistEvent *ev; | ||
356 | 219 | ZeitgeistSubject *su; | ||
357 | 220 | GByteArray *payload; | ||
358 | 221 | |||
359 | 222 | g_variant_builder_init (&b, ZEITGEIST_EVENT_VARIANT_TYPE); | ||
360 | 223 | |||
361 | 224 | /* Build event data */ | ||
362 | 225 | g_variant_builder_open (&b, G_VARIANT_TYPE ("as")); | ||
363 | 226 | g_variant_builder_add (&b, "s", "27"); | ||
364 | 227 | g_variant_builder_add (&b, "s", "68"); | ||
365 | 228 | g_variant_builder_add (&b, "s", ZEITGEIST_ZG_ACCESS_EVENT); | ||
366 | 229 | g_variant_builder_add (&b, "s", ZEITGEIST_ZG_USER_ACTIVITY); | ||
367 | 230 | g_variant_builder_add (&b, "s", "application://foo.desktop"); | ||
368 | 231 | g_variant_builder_add (&b, "s", "origin"); | ||
369 | 232 | g_variant_builder_close (&b); | ||
370 | 233 | |||
371 | 234 | /* Build subjects */ | ||
372 | 235 | g_variant_builder_open (&b, G_VARIANT_TYPE ("aas")); | ||
373 | 236 | { | ||
374 | 237 | g_variant_builder_open (&b, G_VARIANT_TYPE ("as")); | ||
375 | 238 | g_variant_builder_add (&b, "s", "file:///tmp/foo.txt"); | ||
376 | 239 | g_variant_builder_add (&b, "s", ZEITGEIST_NFO_DOCUMENT); | ||
377 | 240 | g_variant_builder_add (&b, "s", ZEITGEIST_NFO_FILE_DATA_OBJECT); | ||
378 | 241 | g_variant_builder_add (&b, "s", "file:///tmp"); | ||
379 | 242 | g_variant_builder_add (&b, "s", "text/plain"); | ||
380 | 243 | g_variant_builder_add (&b, "s", "foo.txt"); | ||
381 | 244 | g_variant_builder_add (&b, "s", "36e5604e-7e1b-4ebd-bb6a-184c6ea99627"); | ||
382 | 245 | g_variant_builder_add (&b, "s", "file:///tmp/current.txt"); | ||
383 | 246 | g_variant_builder_close (&b); | ||
384 | 247 | } | ||
385 | 248 | g_variant_builder_close (&b); | ||
386 | 249 | |||
387 | 250 | /* Build payload */ | ||
388 | 251 | g_variant_builder_open (&b, G_VARIANT_TYPE ("ay")); | ||
389 | 252 | g_variant_builder_add (&b, "y", 1); | ||
390 | 253 | g_variant_builder_add (&b, "y", 2); | ||
391 | 254 | g_variant_builder_add (&b, "y", 3); | ||
392 | 255 | g_variant_builder_close (&b); | ||
393 | 256 | |||
394 | 257 | var = g_variant_builder_end (&b); | ||
395 | 258 | ev = zeitgeist_event_new_from_variant (var); // var freed | ||
396 | 259 | |||
397 | 260 | g_assert_cmpint (27, ==, zeitgeist_event_get_id (ev)); | ||
398 | 261 | g_assert_cmpint (68, ==, zeitgeist_event_get_timestamp (ev)); | ||
399 | 262 | g_assert_cmpstr (ZEITGEIST_ZG_ACCESS_EVENT,==, zeitgeist_event_get_interpretation (ev)); | ||
400 | 263 | g_assert_cmpstr (ZEITGEIST_ZG_USER_ACTIVITY, ==, zeitgeist_event_get_manifestation (ev)); | ||
401 | 264 | g_assert_cmpstr ("application://foo.desktop", ==, zeitgeist_event_get_actor (ev)); | ||
402 | 265 | g_assert_cmpstr ("origin", ==, zeitgeist_event_get_origin (ev)); | ||
403 | 266 | g_assert_cmpint (1, ==, zeitgeist_event_num_subjects (ev)); | ||
404 | 267 | |||
405 | 268 | su = zeitgeist_event_get_subject (ev, 0); | ||
406 | 269 | g_assert_cmpstr ("file:///tmp/foo.txt", ==, zeitgeist_subject_get_uri(su)); | ||
407 | 270 | g_assert_cmpstr (ZEITGEIST_NFO_DOCUMENT, ==, zeitgeist_subject_get_interpretation (su)); | ||
408 | 271 | g_assert_cmpstr (ZEITGEIST_NFO_FILE_DATA_OBJECT, ==, zeitgeist_subject_get_manifestation (su)); | ||
409 | 272 | g_assert_cmpstr ("text/plain", ==, zeitgeist_subject_get_mimetype (su)); | ||
410 | 273 | g_assert_cmpstr ("file:///tmp", ==, zeitgeist_subject_get_origin (su)); | ||
411 | 274 | g_assert_cmpstr ("foo.txt", ==, zeitgeist_subject_get_text (su)); | ||
412 | 275 | g_assert_cmpstr ("36e5604e-7e1b-4ebd-bb6a-184c6ea99627", ==, zeitgeist_subject_get_storage (su)); | ||
413 | 276 | g_assert_cmpstr ("file:///tmp/current.txt", ==, zeitgeist_subject_get_current_uri (su)); | ||
414 | 196 | 277 | ||
415 | 197 | payload = zeitgeist_event_get_payload (ev); | 278 | payload = zeitgeist_event_get_payload (ev); |
416 | 198 | g_assert (payload != NULL); | 279 | g_assert (payload != NULL); |
417 | @@ -218,6 +299,7 @@ | |||
418 | 218 | g_assert (zeitgeist_event_get_interpretation (marshalled) == NULL); | 299 | g_assert (zeitgeist_event_get_interpretation (marshalled) == NULL); |
419 | 219 | g_assert (zeitgeist_event_get_manifestation (marshalled) == NULL); | 300 | g_assert (zeitgeist_event_get_manifestation (marshalled) == NULL); |
420 | 220 | g_assert (zeitgeist_event_get_actor (marshalled) == NULL); | 301 | g_assert (zeitgeist_event_get_actor (marshalled) == NULL); |
421 | 302 | g_assert (zeitgeist_event_get_origin (marshalled) == NULL); | ||
422 | 221 | g_assert_cmpint (0, ==, zeitgeist_event_num_subjects (marshalled)); | 303 | g_assert_cmpint (0, ==, zeitgeist_event_num_subjects (marshalled)); |
423 | 222 | g_assert (zeitgeist_event_get_payload (marshalled) == NULL); | 304 | g_assert (zeitgeist_event_get_payload (marshalled) == NULL); |
424 | 223 | 305 | ||
425 | @@ -245,6 +327,12 @@ | |||
426 | 245 | "example.com", | 327 | "example.com", |
427 | 246 | "net"), | 328 | "net"), |
428 | 247 | NULL); | 329 | NULL); |
429 | 330 | |||
430 | 331 | // Set event origin and current_uri | ||
431 | 332 | zeitgeist_event_set_origin (orig, "origin"); | ||
432 | 333 | zeitgeist_subject_set_current_uri ( | ||
433 | 334 | zeitgeist_event_get_subject (orig, 0), "http://current-example.com"); | ||
434 | 335 | |||
435 | 248 | payload = g_byte_array_new (); | 336 | payload = g_byte_array_new (); |
436 | 249 | byte = 255; | 337 | byte = 255; |
437 | 250 | g_byte_array_append (payload, &byte, 1); | 338 | g_byte_array_append (payload, &byte, 1); |
438 | @@ -257,6 +345,7 @@ | |||
439 | 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)); |
440 | 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)); |
441 | 259 | g_assert_cmpstr ("application://firefox.desktop", ==, zeitgeist_event_get_actor (marshalled)); | 347 | g_assert_cmpstr ("application://firefox.desktop", ==, zeitgeist_event_get_actor (marshalled)); |
442 | 348 | g_assert_cmpstr ("origin", ==, zeitgeist_event_get_origin (marshalled)); | ||
443 | 260 | g_assert_cmpint (1, ==, zeitgeist_event_num_subjects (marshalled)); | 349 | g_assert_cmpint (1, ==, zeitgeist_event_num_subjects (marshalled)); |
444 | 261 | 350 | ||
445 | 262 | payload = zeitgeist_event_get_payload (marshalled); | 351 | payload = zeitgeist_event_get_payload (marshalled); |
446 | @@ -272,6 +361,7 @@ | |||
447 | 272 | g_assert_cmpstr ("http://example.com", ==, zeitgeist_subject_get_origin (su)); | 361 | g_assert_cmpstr ("http://example.com", ==, zeitgeist_subject_get_origin (su)); |
448 | 273 | g_assert_cmpstr ("example.com", ==, zeitgeist_subject_get_text (su)); | 362 | g_assert_cmpstr ("example.com", ==, zeitgeist_subject_get_text (su)); |
449 | 274 | g_assert_cmpstr ("net", ==, zeitgeist_subject_get_storage (su)); | 363 | g_assert_cmpstr ("net", ==, zeitgeist_subject_get_storage (su)); |
450 | 364 | g_assert_cmpstr ("http://current-example.com", ==, zeitgeist_subject_get_current_uri (su)); | ||
451 | 275 | 365 | ||
452 | 276 | g_object_unref (orig); | 366 | g_object_unref (orig); |
453 | 277 | g_object_unref (marshalled); | 367 | g_object_unref (marshalled); |
454 | @@ -333,6 +423,8 @@ | |||
455 | 333 | setup, test_actor_from_app_info, teardown); | 423 | setup, test_actor_from_app_info, teardown); |
456 | 334 | g_test_add ("/Zeitgeist/Event/FromVariant", Fixture, NULL, | 424 | g_test_add ("/Zeitgeist/Event/FromVariant", Fixture, NULL, |
457 | 335 | setup, test_from_variant, teardown); | 425 | setup, test_from_variant, teardown); |
458 | 426 | g_test_add ("/Zeitgeist/Event/FromVariantWithNewFields", Fixture, NULL, | ||
459 | 427 | setup, test_from_variant_with_new_fields, teardown); | ||
460 | 336 | g_test_add ("/Zeitgeist/Event/EmptyToFromVariant", Fixture, NULL, | 428 | g_test_add ("/Zeitgeist/Event/EmptyToFromVariant", Fixture, NULL, |
461 | 337 | setup, test_empty_to_from_variant, teardown); | 429 | setup, test_empty_to_from_variant, teardown); |
462 | 338 | g_test_add ("/Zeitgeist/Event/WithOneSubjectToFromVariant", Fixture, NULL, | 430 | g_test_add ("/Zeitgeist/Event/WithOneSubjectToFromVariant", Fixture, NULL, |
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?