| <!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" |
| "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd"> |
| <node name="/org/chromium/SessionManager" |
| xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd"> |
| <!-- |
| Copyright (c) 2012 The Chromium OS Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| |
| --> |
| |
| <!-- ********************************************************************* --> |
| |
| <!-- |
| org.chromium.SessionManagerInterface: |
| @short_description: User session manager. |
| |
| Interface for user session manager. Also handles persisting and |
| retrieving device and per-user enterprise policy blobs and |
| brokering certain privileged operations on the browser's behalf. |
| --> |
| <interface name="org.chromium.SessionManagerInterface"> |
| <!-- |
| EmitLoginPromptVisible: |
| |
| Emits the "login-prompt-visible" upstart signal and LoginPromptVisible |
| DBus signal on the browser's behalf. |
| --> |
| <method name="EmitLoginPromptVisible"> |
| </method> |
| <!-- |
| LoginPromptVisible: |
| |
| Emitted when the browser indicates that the sign in screen is visible. |
| --> |
| <signal name="LoginPromptVisible"> |
| </signal> |
| <!-- |
| EnableChromeTesting: |
| @force_relaunch: Restart the browser no matter what. |
| @extra_arguments: Extra command line arguments to pass on restart. |
| @filepath: The named pipe to be used for testing communication. |
| |
| Restarts the browser, leaving it open for testing automation. |
| Adds an argument to the chrome child job command line that causes it, |
| upon restart, to open a testing channel. Next, kills and restarts |
| chrome. The name of the pipe to be used for testing is returned in |
| @filepath. |
| If @force_relaunch is true, Chrome will be restarted with each |
| invocation. Otherwise, it will only be restarted if |
| automation is not yet enabled. @extra_arguments can |
| include any additional arguments that need to be passed to |
| Chrome on subsequent launches. |
| --> |
| <method name="EnableChromeTesting"> |
| <arg type="b" name="force_relaunch" direction="in" /> |
| <arg type="as" name="extra_arguments" direction="in" /> |
| <arg type="s" name="filepath" direction="out" /> |
| </method> |
| |
| <!-- |
| StartSession: |
| @email_address: Human-readable ID of the user to start a session for. |
| @unique_identifier: Unused. |
| @done: True on success. Error returned on failure, so likely redundant. |
| |
| Updates bookkeeping to know about a session for |
| @email_address. Also emits "start-user-session" upstart signal |
| and "SessionStateChanged:started" D-Bus signal. |
| --> |
| <method name="StartSession"> |
| <arg type="s" name="email_address" direction="in" /> |
| <arg type="s" name="unique_identifier" direction="in" /> |
| <arg type="b" name="done" direction="out" /> |
| </method> |
| |
| <!-- |
| StopSession: |
| @unique_identifier: Unused. |
| @done: True on success. Error returned on failure, so likely redundant. |
| |
| Terminates all active user sessions, announces this over upstart |
| ("stop-user-session") and DBus (SessionStateChanges:stopped). |
| --> |
| <method name="StopSession"> |
| <arg type="s" name="unique_identifier" direction="in" /> |
| <arg type="b" name="done" direction="out" /> |
| </method> |
| |
| <!-- |
| SessionStateChanged: |
| @state: State the device has changed to. |
| @user: User for whom a session has changed state. |
| |
| Signal emitted to announce session state changes. Supported values for |
| @state include <quote>started</quote>, <quote>stopping</quote>, and |
| <quote>stopped</quote>. Currently, @user will only be populated when |
| we're announcing the beginning of a session. |
| --> |
| <signal name="SessionStateChanged"> |
| <arg type="s" name="state" /> |
| <arg type="s" name="user" /> |
| </signal> |
| |
| <!-- |
| StorePolicy: |
| @policy_blob: Serialized protobuffer containing a device policy and |
| a signature over that policy |
| @done: True on success. Error returned on failure, so likely redundant. |
| |
| Stores a device policy. This method will verify the sig in @policy_blob |
| and persist the blob to disk. |
| The signature is a SHA1 with RSA signature over the policy, |
| verifiable with the device-wide policy key. |
| --> |
| <method name="StorePolicy"> |
| <arg type="ay" name="policy_blob" direction="in" /> |
| <arg type="b" name="done" direction="out"></arg> |
| </method> |
| |
| <!-- |
| RetrievePolicy: |
| @policy_blob: Serialized protobuffer containing a device policy and |
| a signature over that policy. |
| |
| Retrieve device policy stored by StorePolicy. |
| --> |
| <method name="RetrievePolicy"> |
| <arg type="ay" name="policy_blob" direction="out" /> |
| </method> |
| |
| <!-- |
| StorePolicyForUser: |
| @user_email: User whose policy is to be stored. |
| @policy_blob: A serialized PolicyFetchResponse protobuf. |
| @done: True on success. Error returned on failure, so likely redundant. |
| |
| Similar to StorePolicy() above, but for user policy. |
| @policy_blob should contain a serialized PolicyFetchResponse protobuf |
| which wraps the actual policy data along with an SHA1-RSA signature |
| over the policy data. The policy data is opaque to session_manager, |
| the exact definition is only relevant to client code in Chrome. |
| |
| Calling this function attempts to persist the policy blob for |
| a given user. Policy is stored in a root-owned location |
| within the user's cryptohome (for privacy reasons). The |
| first attempt to store policy also installs the signing |
| key for user policy. This key is used later to verify policy |
| updates pushed by Chrome. |
| --> |
| <method name="StorePolicyForUser"> |
| <arg type="s" name="user_email" direction="in" /> |
| <arg type="ay" name="policy_blob" direction="in" /> |
| <arg type="b" name="done" direction="out" /> |
| </method> |
| |
| <!-- |
| RetrievePolicyForUser: |
| @user_email: User whose policy the caller wants. |
| @policy_blob: Serialized protobuffer containing a PolicyFetchResponse |
| a signature over that policy. |
| |
| Retrieves user policy for a given user. |
| --> |
| <method name="RetrievePolicyForUser"> |
| <arg type="s" name="user_email" direction="in" /> |
| <arg type="ay" name="policy_blob" direction="out" /> |
| </method> |
| |
| <!-- |
| StoreDeviceLocalAccountPolicy: |
| @account_id: Account whose policy is to be stored. |
| @policy_blob: A serialized PolicyFetchResponse protobuf. |
| @done: True on success. Error returned on failure, so likely redundant. |
| |
| Similar to StorePolicyForUser() above, but for device-local |
| accounts. @policy_blob should contain a serialized |
| PolicyFetchResponse protobuf which wraps the actual policy |
| data along with an SHA1-RSA signature over the policy |
| data. The policy data is opaque to session manager, the exact |
| definition is only relevant to client code in Chrome. |
| |
| Calling this function attempts to persist the policy blob for |
| the device-local account specified in the method call. Policy |
| is stored in the root-owned /var/lib/device_local_accounts |
| directory in the stateful partition. Signatures are checked |
| against the owner key, key rotation is not allowed. |
| --> |
| <method name="StoreDeviceLocalAccountPolicy"> |
| <arg type="s" name="account_id" direction="in" /> |
| <arg type="ay" name="policy_blob" direction="in" /> |
| <arg type="b" name="done" direction="out" /> |
| </method> |
| |
| <!-- |
| RetrieveDeviceLocalAccountPolicy: |
| @account_id: Account whose policy is to be stored. |
| @policy_blob: Serialized protobuffer containing a PolicyFetchResponse |
| a signature over that policy. |
| |
| Retrieves device-local account policy for the specified @account_id. |
| --> |
| <method name="RetrieveDeviceLocalAccountPolicy"> |
| <arg type="s" name="account_id" direction="in" /> |
| <arg type="ay" name="policy_blob" direction="out" /> |
| </method> |
| |
| <!-- |
| RetrieveSessionState: |
| @state: The current session state. |
| |
| Get information about the current session. Will be one of |
| <quote>started</quote>, <quote>stopping</quote>, <quote>stopped</quote>. |
| --> |
| <method name="RetrieveSessionState"> |
| <arg type="s" name="state" direction="out" /> |
| </method> |
| |
| <!-- |
| RetrieveActiveSessions: |
| @sessions: A map describing the currently active user sessions. |
| |
| Enumerate active user sessions. |
| @sessions is a dictionary mapping { username: sanitized_user_name }. |
| --> |
| <method name="RetrieveActiveSessions"> |
| <arg type="a{ss}" name="sessions" direction="out" /> |
| </method> |
| |
| <!-- |
| LockScreen: |
| |
| Allows other processes to request screen locking. |
| Emits LockScreen signal to Chromium Browser to tell it to lock the |
| screen. The browser should call the HandleScreenLocked |
| method when the screen is actually locked. |
| --> |
| <method name="LockScreen"> |
| </method> |
| |
| <!-- |
| HandleLockScreenShown: |
| |
| Handle notification from Chrome that the lock screen is visible. |
| Emits ScreenIsLocked. |
| --> |
| <method name="HandleLockScreenShown"> |
| </method> |
| |
| <!-- |
| HandleLockScreenDismissed: |
| |
| Handle notification from Chrome that the lock screen is hidden. |
| Emits ScreenIsUnlocked. |
| --> |
| <method name="HandleLockScreenDismissed"> |
| </method> |
| |
| <!-- |
| ScreenIsLocked: |
| Broadcast that the browser locked the screen. |
| --> |
| <signal name="ScreenIsLocked"> |
| </signal> |
| <!-- |
| ScreenIsUnlocked: |
| Broadcast that the browser unlocked the screen. |
| --> |
| <signal name="ScreenIsUnlocked"> |
| </signal> |
| |
| <!-- |
| RestartJob: |
| @pid: PID of the job to restart. |
| @command_line: Command line arguments to restart the job with. |
| @done: True on success. Error returned on failure, so likely redundant. |
| |
| Restarts job with specified @pid replacing its command line arguments |
| with those provided. Only works for the browser process managed by |
| the SessionManager. |
| --> |
| <method name="RestartJob"> |
| <arg type="i" name="pid" direction="in" /> |
| <arg type="s" name="command_line" direction="in" /> |
| <arg type="b" name="done" direction="out" /> |
| </method> |
| |
| <!-- |
| StartDeviceWipe: |
| @done: True on success. Error returned on failure, so likely redundant. |
| |
| Sets the device up to "Powerwash" on reboot, and triggers a reboot. |
| --> |
| <method name="StartDeviceWipe"> |
| <arg type="b" name="done" direction="out" /> |
| </method> |
| |
| <!-- |
| SetFlagsForUser: |
| @user_email: User to set flags for. |
| @flags: array of flags to be set for the user. |
| |
| Sets browser @flags to be applied on next in-session restart. |
| --> |
| <method name="SetFlagsForUser"> |
| <arg type="s" name="user_email" direction="in" /> |
| <arg type="as" name="flags" direction="in" /> |
| </method> |
| |
| <!-- |
| GetServerBackedStateKeys: |
| @state_keys: The array of currently valid state keys. |
| |
| Requests server-backed state keys to be computed and returned. A |
| server-backed state key is an opaque client-determined identifier |
| that's used to stage state in a server to be retrieved after device |
| recovery. These are used to figure out device state such as previous |
| enrollment domain and whether the device got marked as stolen by its |
| owner. The keys are time-dependent, with each key being valid only for |
| a window of time, and this call returns the currently valid state key |
| plus a number of subsequent state keys that span a year of time in |
| coverage. |
| --> |
| <method name="GetServerBackedStateKeys"> |
| <arg type="aay" name="state_keys" direction="out" /> |
| </method> |
| |
| <!-- |
| InitMachineInfo: |
| @data: A string containing newline-separated key=value pairs. |
| |
| Initializes supplemental machine information for use by session manager |
| that has be asynchronously determined in the boot process after |
| starting session_manager. This method gets invoked by the ui-init-late |
| init job; nothing else should call this method. |
| --> |
| <method name="InitMachineInfo"> |
| <arg type="s" name="data" direction="in" /> |
| </method> |
| </interface> |
| <!-- ********************************************************************* --> |
| </node> |