Background ========== Profiles are containers for persistent storage of instantiated objects. When an object is created in memory we check if state from any previous instance was recorded and, if so, update the in-memory data structure accordingly. Doing this depends on all object instances having a unique name; this is done using adhoc techniques based on object proprties such as WiFi SSID's, device addresses, and security settings. Multiple profiles may be active simultaneously. Profiles are organized in a stack with the top-most entry termed the "active profile". When the connection manager starts up it pushes a "global profile" onto the profile stack. Typically a per-user profile is then pushed at login and pop'd on logout. Additional entries may be pushed and pop'd; e.g. automated tests push a "throw away profile" to capture state generated by tests and then pop the profile at the end to return the system to a pristine state. Object Handling =============== Service objects go to the "ephemeral profile" by default, and do not report a "Profile" property. When saved, by default they end up in the top-most profile on the stack. If the "Profile" property is set on a servie, it will be re-parented to the named profile (which must be in the profile stack at the time). Device and IPConfig objects go in the global profile (if any). This ensures that enable/disable state is maintained between users (and reboots); or possibly discarded (e.g. for testing). Likewise global state like Offline mode and any Country code are stored in the global profile (see above). Profile hierarchy ================= Service org.chromium.flimflam Interface org.chromium.flimflam.Profile Object path [variable prefix]/{profile0,profile1,...} Methods dict GetProperties() Return properties for the profile object. See the properties section for available properties. Possible Errors: [service].Error.InvalidArguments void SetProperty(string name, variant value) Change the value of the specified property. Only properties that are listed as read-write are changeable. On success a PropertyChanged signal is emitted. Possible Errors: [service].Error.InvalidArguments [service].Error.InvalidProperty dict GetEntry(object path) Return properties for the specified profile entry. If the service is currently loaded into memory or visible, the returned result will be as if a "GetProperties" were called on the service. Otherwise, a much more compact dict will be returned: string Name [readonly] Name of this profile. string GUID [readonly] Globally Unique IDentifier for the service as previously set by the client. string Error [readonly] Last error that occured with this service. string Mode [readonly] For WiFi services, the operating mode. string Security [readonly] For WiFi services, the security type. string Type [readonly] Type of this service entry (wifi, vpn, etc). string UIData [readonly] The UI data string (ignored by shill) that is maintained for each service and can be used by client code to store metadata. string WiFi.HiddenSSID [readonly] For WiFi services, whether or not the network broadcasts it's SSID in beacon frames. Possible Errors: [service].Error.NotFound [service].Error.InvalidArguments dict DeleteEntry(string entry_name) Remove the entry from the profile. Any associated service has its security credentials revoked and the service is disconnected. The service is also disassociated with the profile. Possible Errors: [service].Error.InvalidArguments [service].Error.NotFound Signals PropertyChanged(string name, variant value) This signal indicates a changed value of the given property. Properties string CheckPortalList [readonly] The list of technologies for which captive portal checking is enabled. This is a comma-separated string; e.g. "wifi,wimax,vpn". To alter this setting set the Manager.CheckPortalList property. This setting is recorded only in the default profile as it affects all users and is used pre-login. string Country [readonly] The current ISO country code for WiFi operation. This property exists only if the country code was set via the Manager.Country property. This setting is recorded only in the default profile as it affects all users and is used pre-login. array{object} Entries [readonly] List of profile Entry objects. Use the GetEntry method to retrieve an Entry's contents. string Name [readonly] Name of this profile. boolean OfflineMode [readonly] The setting for switching all radios on or off. This setting is recorded only in the default profile as it affects all users and is used pre-login. To alter this setting set the Manager.OfflineMode property. string PortalURL [readonly] The URL to use when doing captive portal checking. To alter this setting set the Manager.CheckPortalList property. This setting is recorded only in the default profile as it affects all users and is used pre-login. string PortalCheckInterval [readonly] The interval in seconds between attempts to check for portal. To alter this setting set the Manager.PortalCheckInterval property. This setting is recorded only in the default profile as it affects all users and is used pre-login. array{object} Services [readonly] List of service objects. This property is provided only for the active profile. string UserHash [readonly] The hash of the username, provided by the the libchromeos SanitizeUsername() method.