Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(632)

Unified Diff: chrome/browser/ui/startup/startup_browser_creator_impl.cc

Issue 2798143004: Fix for URL opening code (Closed)
Patch Set: Fixed opening local file with Chromium on mac while restore session is enabled. File opens in the t… Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698