Index: chrome/browser/ui/startup/startup_browser_creator_impl.cc |
diff --git a/chrome/browser/ui/startup/startup_browser_creator_impl.cc b/chrome/browser/ui/startup/startup_browser_creator_impl.cc |
index 355fbe3876506bc5b300128042bfabd6767b1aee..d36078fbc90ad0bbbabf4c97ee9e4dbf214d6a18 100644 |
--- a/chrome/browser/ui/startup/startup_browser_creator_impl.cc |
+++ b/chrome/browser/ui/startup/startup_browser_creator_impl.cc |
@@ -355,14 +355,15 @@ bool StartupBrowserCreatorImpl::Launch(Profile* profile, |
// not as chrome. |
// 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. |
- content::WebContents* app_contents = NULL; |
+ content::WebContents* app_contents = nullptr; |
+ Browser* browser = nullptr; |
if (OpenApplicationWindow(profile, &app_contents)) { |
RecordLaunchModeHistogram(LM_AS_WEBAPP); |
} else { |
RecordLaunchModeHistogram(urls_to_open.empty() ? |
LM_TO_BE_DECIDED : LM_WITH_URLS); |
- ProcessLaunchURLs(process_startup, urls_to_open, desktop_type); |
+ browser = ProcessLaunchURLs(process_startup, urls_to_open, desktop_type); |
if (command_line_.HasSwitch(switches::kInstallChromeApp)) { |
install_chrome_app::InstallChromeApp( |
@@ -389,7 +390,6 @@ bool StartupBrowserCreatorImpl::Launch(Profile* profile, |
// It's possible for there to be no browser window, e.g. if someone |
// specified a non-sensical combination of options |
// ("--kiosk --no_startup_window"); do nothing in that case. |
- Browser* browser = BrowserList::GetInstance(desktop_type)->GetLastActive(); |
if (browser) |
chrome::ToggleFullscreenMode(browser); |
} |
@@ -522,7 +522,7 @@ bool StartupBrowserCreatorImpl::OpenApplicationWindow( |
return false; |
} |
-void StartupBrowserCreatorImpl::ProcessLaunchURLs( |
+Browser* StartupBrowserCreatorImpl::ProcessLaunchURLs( |
bool process_startup, |
const std::vector<GURL>& urls_to_open, |
chrome::HostDesktopType desktop_type) { |
@@ -532,7 +532,7 @@ void StartupBrowserCreatorImpl::ProcessLaunchURLs( |
if (process_startup && |
command_line_.HasSwitch(switches::kNoStartupWindow) && |
!command_line_.HasSwitch(switches::kAutoLaunchAtStartup)) { |
- return; |
+ return nullptr; |
} |
// TODO(tapted): Move this to startup_browser_creator_win.cc after refactor. |
@@ -544,9 +544,12 @@ void StartupBrowserCreatorImpl::ProcessLaunchURLs( |
} |
#endif |
- if (process_startup && ProcessStartupURLs(urls_to_open, desktop_type)) { |
- // ProcessStartupURLs processed the urls, nothing else to do. |
- return; |
+ if (process_startup) { |
+ Browser* browser = ProcessStartupURLs(urls_to_open, desktop_type); |
+ if (browser) { |
+ // ProcessStartupURLs processed the urls, nothing else to do. |
+ return browser; |
+ } |
} |
chrome::startup::IsProcessStartup is_process_startup = process_startup ? |
@@ -564,19 +567,19 @@ void StartupBrowserCreatorImpl::ProcessLaunchURLs( |
// Restore the last session if any. |
if (!HasPendingUncleanExit(profile_) && |
service->RestoreIfNecessary(urls_to_open)) { |
- return; |
+ return nullptr; |
} |
// Open user-specified URLs like pinned tabs and startup tabs. |
Browser* browser = ProcessSpecifiedURLs(urls_to_open, desktop_type); |
if (browser) { |
AddInfoBarsIfNecessary(browser, is_process_startup); |
- return; |
+ return browser; |
} |
} |
} |
// Session startup didn't occur, open the urls. |
- Browser* browser = NULL; |
+ Browser* browser = nullptr; |
std::vector<GURL> adjust_urls = urls_to_open; |
if (adjust_urls.empty()) { |
AddStartupURLs(&adjust_urls); |
@@ -591,9 +594,10 @@ void StartupBrowserCreatorImpl::ProcessLaunchURLs( |
desktop_type); |
StartupBrowserCreator::in_synchronous_profile_launch_ = false; |
AddInfoBarsIfNecessary(browser, is_process_startup); |
+ return browser; |
} |
-bool StartupBrowserCreatorImpl::ProcessStartupURLs( |
+Browser* StartupBrowserCreatorImpl::ProcessStartupURLs( |
const std::vector<GURL>& urls_to_open, |
chrome::HostDesktopType desktop_type) { |
VLOG(1) << "StartupBrowserCreatorImpl::ProcessStartupURLs"; |
@@ -622,7 +626,7 @@ bool StartupBrowserCreatorImpl::ProcessStartupURLs( |
// To avoid this, don't restore on startup but instead show the crashed |
// infobar. |
VLOG(1) << "Unclean exit; not processing"; |
- return false; |
+ return nullptr; |
} |
uint32 restore_behavior = SessionRestore::SYNCHRONOUS; |
@@ -649,12 +653,12 @@ bool StartupBrowserCreatorImpl::ProcessStartupURLs( |
urls_to_open); |
AddInfoBarsIfNecessary(browser, chrome::startup::IS_PROCESS_STARTUP); |
- return true; |
+ return browser; |
} |
Browser* browser = ProcessSpecifiedURLs(urls_to_open, desktop_type); |
if (!browser) |
- return false; |
+ return nullptr; |
AddInfoBarsIfNecessary(browser, chrome::startup::IS_PROCESS_STARTUP); |
@@ -667,7 +671,7 @@ bool StartupBrowserCreatorImpl::ProcessStartupURLs( |
GetDOMStorageContext()->StartScavengingUnusedSessionStorage(); |
} |
- return true; |
+ return browser; |
} |
Browser* StartupBrowserCreatorImpl::ProcessSpecifiedURLs( |