summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/browser_init.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/ui/browser_init.cc')
-rw-r--r--chrome/browser/ui/browser_init.cc12
1 files changed, 11 insertions, 1 deletions
diff --git a/chrome/browser/ui/browser_init.cc b/chrome/browser/ui/browser_init.cc
index 0de3697..626af94 100644
--- a/chrome/browser/ui/browser_init.cc
+++ b/chrome/browser/ui/browser_init.cc
@@ -898,9 +898,16 @@ bool BrowserInit::LaunchWithProfile::Launch(
// opened an app shortcut. Don't restore tabs or open initial
// URLs in that case. The user should see the window as an app,
// not as chrome.
- if (OpenApplicationWindow(profile)) {
+ // Special case is when app switches are passed but we do want to restore
+ // session. In that case open app window + focus it after session is restored.
+ if (OpenApplicationWindow(profile) && !browser_defaults::kAppRestoreSession) {
RecordLaunchModeHistogram(LM_AS_WEBAPP);
} else {
+ Browser* browser_to_focus = NULL;
+ // In case of app mode + session restore we want to focus that app.
+ if (browser_defaults::kAppRestoreSession)
+ browser_to_focus = BrowserList::GetLastActive();
+
RecordLaunchModeHistogram(urls_to_open.empty()?
LM_TO_BE_DECIDED : LM_WITH_URLS);
@@ -914,6 +921,9 @@ bool BrowserInit::LaunchWithProfile::Launch(
// be an app tab.
OpenApplicationTab(profile);
+ if (browser_to_focus)
+ browser_to_focus->GetSelectedWebContents()->GetView()->SetInitialFocus();
+
if (process_startup) {
if (browser_defaults::kOSSupportsOtherBrowsers &&
!command_line_.HasSwitch(switches::kNoDefaultBrowserCheck)) {