[cros] Define session_manager component with SessionManager base class
SessionManager is responsible for performing Chrome OS-specific steps to re-launch user session (after crash/stub or in tests) or pre-session UI such as out-of-box or login.
ChromeSessionManager is chrome/browser implementation of SessionManager.
SessionManager is initialized with specific delegate that is reponsible for initial behavior. These delegates are introduced, see ChromeSessionManager::CreateSessionManager():
* LoginOobeSessionManagerDelegate - launches either out-of-box or login UI,
actual branching still happens in ShowLoginWizard()
* RestoreAfterCrashSessionManagerDelegate - responsible for re-launching Chrome into existing user session,
happens after browser process crash or in "stub user" session.
* StubLoginSessionManagerDelegate - starts "stub user" session, when executed on non-CrOS machine w/o parameters or in tests. Extends RestoreAfterCrashSessionManagerDelegate.
* KioskAutoLauncherSessionManagerDelegate - automatically starts kiosk app session.
Code move in ChromeBrowserMainPartsChromeos:
* OptionallyRunChromeOSLoginManager() -> ChromeSessionManager::CreateSessionManager()
* RunAutoLaunchKioskApp() -> KioskAutoLauncherSessionManagerDelegate
* Session restore code in PostProfileInit() -> RestoreAfterCrashSessionManagerDelegate
* Blocks in OptionallyRunChromeOSLoginManager -> to delegates.
BUG=387610
Review URL: https://codereview.chromium.org/363613004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@283437 0039d316-1c4b-4281-b951-d872f2087c98
28 files changed