• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Background
2==========
3
4Profiles are containers for persistent storage of instantiated objects.
5When an object is created in memory we check if state from any previous
6instance was recorded and, if so, update the in-memory data structure
7accordingly.  Doing this depends on all object instances having a unique
8name; this is done using adhoc techniques based on object proprties such
9as WiFi SSID's, device addresses, and security settings.
10
11Multiple profiles may be active simultaneously.  Profiles are organized
12in a stack with the top-most entry termed the "active profile".
13
14When the connection manager starts up it pushes a "global profile" onto
15the profile stack.  Typically a per-user profile is then pushed at login
16and pop'd on logout.  Additional entries may be pushed and pop'd; e.g.
17automated tests push a "throw away profile" to capture state generated
18by tests and then pop the profile at the end to return the system to a
19pristine state.
20
21
22Object Handling
23===============
24Service objects go to the "ephemeral profile" by default, and do
25not report a "Profile" property.  When saved, by default they end
26up in the top-most profile on the stack.
27
28If the "Profile" property is set on a servie, it will be re-parented
29to the named profile (which must be in the profile stack at the time).
30
31Device and IPConfig objects go in the global profile (if any).
32This ensures that enable/disable state is maintained between users
33(and reboots); or possibly discarded (e.g. for testing).
34
35Likewise global state like Offline mode and any Country code are stored
36in the global profile (see above).
37
38
39Profile hierarchy
40=================
41
42Service		org.chromium.flimflam
43Interface	org.chromium.flimflam.Profile
44Object path	[variable prefix]/{profile0,profile1,...}
45
46Methods		dict GetProperties()
47
48			Return properties for the profile object. See
49			the properties section for available properties.
50
51			Possible Errors: [service].Error.InvalidArguments
52
53		void SetProperty(string name, variant value)
54
55			Change the value of the specified property. Only
56			properties that are listed as read-write are
57			changeable. On success a PropertyChanged signal
58			is emitted.
59
60			Possible Errors: [service].Error.InvalidArguments
61					 [service].Error.InvalidProperty
62
63		dict GetEntry(object path)
64
65			Return properties for the specified profile
66			entry.  If the service is currently loaded into
67			memory or visible, the returned result will be
68			as if a "GetProperties" were called on the service.
69			Otherwise, a much more compact dict will be
70			returned:
71
72			string Name [readonly]
73				Name of this profile.
74
75			string GUID [readonly]
76				Globally Unique IDentifier for the service as
77				previously set by the client.
78
79			string Error [readonly]
80				Last error that occured with this service.
81
82			string Mode [readonly]
83				For WiFi services, the operating mode.
84
85			string Security [readonly]
86				For WiFi services, the security type.
87
88			string Type [readonly]
89				Type of this service entry (wifi, vpn, etc).
90
91			string UIData [readonly]
92				The UI data string (ignored by shill) that is
93				maintained for each service and can be used by
94				client code to store metadata.
95
96			string WiFi.HiddenSSID [readonly]
97				For WiFi services, whether or not the
98				network broadcasts it's SSID in beacon
99				frames.
100
101			Possible Errors: [service].Error.NotFound
102					 [service].Error.InvalidArguments
103
104		dict DeleteEntry(string entry_name)
105
106			Remove the entry from the profile.  Any associated
107			service has its security credentials revoked and
108			the service is disconnected.  The service is also
109			disassociated with the profile.
110
111			Possible Errors: [service].Error.InvalidArguments
112					 [service].Error.NotFound
113
114Signals		PropertyChanged(string name, variant value)
115
116			This signal indicates a changed value of the given
117			property.
118
119Properties	string CheckPortalList [readonly]
120
121			The list of technologies for which captive portal
122			checking is enabled. This is a comma-separated
123			string; e.g. "wifi,wimax,vpn". To alter this
124			setting set the Manager.CheckPortalList property.
125
126			This setting is recorded only in the
127			default profile as it affects all users and is
128			used pre-login.
129
130		string Country [readonly]
131
132			The current ISO country code for WiFi operation.
133			This property exists only if the country code
134			was set via the Manager.Country property.
135
136			This setting is recorded only in the
137			default profile as it affects all users and is
138			used pre-login.
139
140		array{object} Entries [readonly]
141
142			List of profile Entry objects.  Use the GetEntry
143			method to retrieve an Entry's contents.
144
145		string Name [readonly]
146
147			Name of this profile.
148
149		boolean OfflineMode [readonly]
150
151			The setting for switching all radios on or
152			off. This setting is recorded only in the
153			default profile as it affects all users and is
154			used pre-login.  To alter this setting set the
155			Manager.OfflineMode property.
156
157		string PortalURL [readonly]
158
159			The URL to use when doing captive portal
160			checking.  To alter this setting set the
161			Manager.CheckPortalList property.
162
163			This setting is recorded only in the default
164			profile as it affects all users and is used
165			pre-login.
166
167		string PortalCheckInterval [readonly]
168
169			The interval in seconds between attempts to
170			check for portal.  To alter this setting set the
171			Manager.PortalCheckInterval property.
172
173			This setting is recorded only in the default
174			profile as it affects all users and is used
175			pre-login.
176
177		array{object} Services [readonly]
178
179			List of service objects.  This property is
180			provided only for the active profile.
181
182		string UserHash [readonly]
183
184			The hash of the username, provided by the
185			the libchromeos SanitizeUsername() method.
186