| 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 92e1e9bcbef548cfef54c3fc71bbd5c7e94bc40c..29a3e2417554c1ebb86bdf8c539ab868264bb371 100644
|
| --- a/chrome/browser/ui/startup/startup_browser_creator_impl.cc
|
| +++ b/chrome/browser/ui/startup/startup_browser_creator_impl.cc
|
| @@ -130,6 +130,8 @@ using extensions::Extension;
|
|
|
| namespace {
|
|
|
| +std::vector<GURL>* g_startup_urls = nullptr;
|
| +
|
| // Utility functions ----------------------------------------------------------
|
|
|
| enum LaunchMode {
|
| @@ -435,6 +437,25 @@ Browser* StartupBrowserCreatorImpl::OpenURLsInBrowser(
|
| return OpenTabsInBrowser(browser, process_startup, tabs);
|
| }
|
|
|
| +// static
|
| +void StartupBrowserCreatorImpl::OpenURLsAfterSessionRestore(
|
| + const std::vector<GURL>& urls) {
|
| + // Save URLs for deferred opening
|
| + if (!g_startup_urls)
|
| + g_startup_urls = new std::vector<GURL>();
|
| + *g_startup_urls = urls;
|
| +}
|
| +
|
| +void StartupBrowserCreatorImpl::OpenDeferredURLs(Browser* browser) {
|
| + if (g_startup_urls && !g_startup_urls->empty()) {
|
| + StartupBrowserCreator::in_synchronous_profile_launch_ = true;
|
| + OpenURLsInBrowser(browser, false, *g_startup_urls);
|
| + StartupBrowserCreator::in_synchronous_profile_launch_ = false;
|
| + delete g_startup_urls;
|
| + g_startup_urls = nullptr;
|
| + }
|
| +}
|
| +
|
| Browser* StartupBrowserCreatorImpl::OpenTabsInBrowser(Browser* browser,
|
| bool process_startup,
|
| const StartupTabs& tabs) {
|
| @@ -762,8 +783,10 @@ Browser* StartupBrowserCreatorImpl::RestoreOrCreateBrowser(
|
| if (behavior == BrowserOpenBehavior::SYNCHRONOUS_RESTORE) {
|
| browser = SessionRestore::RestoreSession(profile_, nullptr, restore_options,
|
| TabsToUrls(tabs));
|
| - if (browser)
|
| + if (browser) {
|
| + OpenDeferredURLs(browser);
|
| return browser;
|
| + }
|
| } else if (behavior == BrowserOpenBehavior::USE_EXISTING) {
|
| browser = chrome::FindTabbedBrowser(profile_, process_startup);
|
| }
|
| @@ -1027,12 +1050,15 @@ bool StartupBrowserCreatorImpl::ProcessStartupURLs(
|
| // should never get here.
|
| Browser* browser = SessionRestore::RestoreSession(
|
| profile_, NULL, restore_behavior, adjusted_urls);
|
| -
|
| + OpenDeferredURLs(browser);
|
| AddInfoBarsIfNecessary(browser, chrome::startup::IS_PROCESS_STARTUP);
|
| return true;
|
| }
|
|
|
| Browser* browser = ProcessSpecifiedURLs(urls_to_open);
|
| + if (pref.type == SessionStartupPref::URLS) {
|
| + OpenDeferredURLs(browser);
|
| + }
|
| if (!browser)
|
| return false;
|
|
|
|
|