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 ecbc5dc81b1829f603ecab69608efbbcdea3efe3..61fb39c5ec89a5aba77d9a873a74ff5a7b2a32ea 100644 |
--- a/chrome/browser/ui/startup/startup_browser_creator_impl.cc |
+++ b/chrome/browser/ui/startup/startup_browser_creator_impl.cc |
@@ -40,6 +40,8 @@ |
#include "chrome/browser/infobars/infobar_service.h" |
#include "chrome/browser/prefs/incognito_mode_prefs.h" |
#include "chrome/browser/prefs/session_startup_pref.h" |
+#include "chrome/browser/profile_resetter/triggered_profile_resetter.h" |
+#include "chrome/browser/profile_resetter/triggered_profile_resetter_factory.h" |
#include "chrome/browser/profiles/profile.h" |
#include "chrome/browser/profiles/profile_io_data.h" |
#include "chrome/browser/sessions/session_restore.h" |
@@ -55,6 +57,7 @@ |
#include "chrome/browser/ui/browser_tabrestore.h" |
#include "chrome/browser/ui/browser_tabstrip.h" |
#include "chrome/browser/ui/browser_window.h" |
+#include "chrome/browser/ui/chrome_pages.h" |
#include "chrome/browser/ui/extensions/app_launch_params.h" |
#include "chrome/browser/ui/extensions/application_launch.h" |
#include "chrome/browser/ui/host_desktop.h" |
@@ -255,9 +258,12 @@ const Extension* GetPlatformApp(Profile* profile, |
namespace internals { |
+GURL GetResetSettingsURL() { |
+ return GURL(chrome::GetSettingsUrl(chrome::kResetProfileSettingsSubPage)); |
+} |
+ |
GURL GetWelcomePageURL() { |
- std::string welcome_url = l10n_util::GetStringUTF8(IDS_WELCOME_PAGE_URL); |
- return GURL(welcome_url); |
+ return GURL(l10n_util::GetStringUTF8(IDS_WELCOME_PAGE_URL)); |
} |
} // namespace internals |
@@ -530,10 +536,7 @@ void StartupBrowserCreatorImpl::ProcessLaunchURLs( |
// if desired. |
if (!HasPendingUncleanExit(profile_)) { |
std::vector<GURL> adjusted_urls(urls_to_open); |
- if (welcome_run_type_ == WelcomeRunType::FIRST_TAB) { |
- adjusted_urls.insert(adjusted_urls.begin(), |
- internals::GetWelcomePageURL()); |
- } |
+ AddSpecialURLs(&adjusted_urls); |
if (service->RestoreIfNecessary(adjusted_urls)) |
return; |
} |
@@ -614,12 +617,8 @@ bool StartupBrowserCreatorImpl::ProcessStartupURLs( |
} |
#endif |
- // Optionally include the welcome page. |
std::vector<GURL> adjusted_urls(urls_to_open); |
- if (welcome_run_type_ == WelcomeRunType::FIRST_TAB) { |
- adjusted_urls.insert(adjusted_urls.begin(), |
- internals::GetWelcomePageURL()); |
- } |
+ AddSpecialURLs(&adjusted_urls); |
// The startup code only executes for browsers launched in desktop mode. |
// i.e. HOST_DESKTOP_TYPE_NATIVE. Ash should never get here. |
@@ -677,9 +676,10 @@ Browser* StartupBrowserCreatorImpl::ProcessSpecifiedURLs( |
UrlsToTabs(urls, &tabs); |
} else if (pref.type == SessionStartupPref::URLS && !pref.urls.empty() && |
!HasPendingUncleanExit(profile_)) { |
- // Optionally include the welcome page first. |
- if (welcome_run_type_ == WelcomeRunType::FIRST_TAB) |
- UrlsToTabs(std::vector<GURL>(1, internals::GetWelcomePageURL()), &tabs); |
+ std::vector<GURL> extra_urls; |
+ AddSpecialURLs(&extra_urls); |
+ UrlsToTabs(extra_urls, &tabs); |
+ |
// Only use the set of urls specified in preferences if nothing was |
// specified on the command line. Filter out any urls that are to be |
// restored by virtue of having been previously pinned. |
@@ -861,13 +861,13 @@ void StartupBrowserCreatorImpl::AddStartupURLs( |
} |
} |
- // Otherwise open at least the new tab page (and optionally the welcome page |
- // at the front or back as indicated by welcome_run_type_), or the set of URLs |
- // specified on the command line. |
+ // Otherwise open at least the new tab page (and any pages deemed needed by |
+ // AddSpecialURLs()), or the set of URLs specified on the command line. |
if (startup_urls->empty()) { |
- if (welcome_run_type_ == WelcomeRunType::FIRST_TAB) |
- startup_urls->push_back(internals::GetWelcomePageURL()); |
+ AddSpecialURLs(startup_urls); |
startup_urls->push_back(GURL(chrome::kChromeUINewTabURL)); |
+ |
+ // Special case the FIRST_RUN_LAST_TAB case of the welcome page. |
if (welcome_run_type_ == WelcomeRunType::FIRST_RUN_LAST_TAB) |
startup_urls->push_back(internals::GetWelcomePageURL()); |
} |
@@ -901,6 +901,18 @@ void StartupBrowserCreatorImpl::AddStartupURLs( |
} |
} |
+void StartupBrowserCreatorImpl::AddSpecialURLs( |
+ std::vector<GURL>* url_list) const { |
+ // Optionally include the welcome page. |
+ if (welcome_run_type_ == WelcomeRunType::FIRST_TAB) |
+ url_list->insert(url_list->begin(), internals::GetWelcomePageURL()); |
+ |
+ // If this Profile is marked for a reset prompt, ensure the reset |
+ // settings dialog appears. |
+ if (CheckAndClearProfileResetTrigger()) |
+ url_list->insert(url_list->begin(), internals::GetResetSettingsURL()); |
+} |
+ |
// For first-run, the type will be FIRST_RUN_LAST for all systems except for |
// Windows 10+, where it will be FIRST_RUN_FIRST. For non-first run, the type |
// will be NONE for all systems except for Windows 10+, where it will be |
@@ -979,3 +991,17 @@ void StartupBrowserCreatorImpl::RecordRapporOnStartupURLs( |
"Startup.BrowserLaunchURL", url); |
} |
} |
+ |
+bool StartupBrowserCreatorImpl::CheckAndClearProfileResetTrigger() const { |
+ bool has_reset_trigger = false; |
+#if defined(OS_WIN) |
+ TriggeredProfileResetter* triggered_profile_resetter = |
+ TriggeredProfileResetterFactory::GetForBrowserContext(profile_); |
+ // TriggeredProfileResetter instance will be nullptr for incognito profiles. |
+ if (triggered_profile_resetter) { |
+ has_reset_trigger = triggered_profile_resetter->HasResetTrigger(); |
+ triggered_profile_resetter->ClearResetTrigger(); |
+ } |
+#endif // defined(OS_WIN) |
+ return has_reset_trigger; |
+} |