| 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(object path) |
| |
| 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. |