blob: 8a40637e34d19ba468ef95044886031d6e2a4675 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
== Problem: Containerization == #1992
Activities need to be created inside containers.
Situation:
"Activities" are launched as follows:
1. Clicking on an activity launch icon in Sugar triggers the
`sugar.shell.view.frame.ActivitiesBox._activity_clicked_cb' callback which
in turn fires off a call to `sugar.shell.view.start_activity' with the
corresponding service name.
2. `sugar.shell.start_activity' calls
`sugar.activity.activityfactory.create()' which constructs a
`sugar.activity.activityfactory.ActivityCreationHandler', initialized with
an `ActivityHandle' describing the activity being started.
3. The `__init__' method of ActivityCreationHandler connects to the DBus
session bus, uses a well-known name to locate an appropriate
ActivityFactory _DBus object_, and calls this _DBus object's_ `create'
method.
(The ActivityCreationHandler also installs callbacks to log the success or
failure of the attempt to launch the activity)
4. The appropriate `ActivityServiceFactory' DBus service is automatically
launched by DBus from a service file if necessary. Then it's `create' method
is dispatched, which results in the activity itself being constructed and
presented.
Plan:
We will modify the ActivityCreationHandler to call over DBus to Rainbow.
P1. Replace step (S3) with
3b. The `__init__' method of ActivityCreationHandler connects to the DBus
session bus, locates the `org.laptop.security.Rainbow' service, and calls
the `create_activity' method of Rainbow's `org.laptop.security.Rainbow'
interface.
Followup:
F1. Design and implement the appropriate method in Rainbow.
F2. Step (S4) is now cruft and should be cleaned.
F3. Talk to Marco about how he thinks this really ought to be done.
---
F4. Marco agrees with our proposal so it can move ahead once we're ready to
integrate Rainbow into the builds.
F5. Bert Freudenberg would like us to update a wiki page and rewrite
sugar-native-factory.c for him.
F6. However, Michael is not comfortable depending on the glib/gobject mainloop.
How long until we can get a libevent-based mainloop? (or move away from DBus?)
|