Index: chrome/browser/ui/startup/startup_tab_provider.cc |
diff --git a/chrome/browser/ui/startup/startup_tab_provider.cc b/chrome/browser/ui/startup/startup_tab_provider.cc |
index 5d4206cd68ed3fc64e1485f684ecfddf322f0ccc..4b9c540ef8e99e2376bf2476c5210d8ba3ab6d6b 100644 |
--- a/chrome/browser/ui/startup/startup_tab_provider.cc |
+++ b/chrome/browser/ui/startup/startup_tab_provider.cc |
@@ -8,17 +8,22 @@ |
#include "chrome/browser/first_run/first_run.h" |
#include "chrome/browser/profile_resetter/triggered_profile_resetter.h" |
#include "chrome/browser/profile_resetter/triggered_profile_resetter_factory.h" |
+#include "chrome/browser/signin/signin_manager_factory.h" |
#include "chrome/browser/ui/chrome_pages.h" |
#include "chrome/browser/ui/tabs/pinned_tab_codec.h" |
+#include "chrome/common/pref_names.h" |
#include "chrome/common/url_constants.h" |
#include "chrome/grit/locale_settings.h" |
+#include "components/prefs/pref_service.h" |
+#include "components/signin/core/browser/signin_manager.h" |
+#include "net/base/url_util.h" |
#include "ui/base/l10n/l10n_util.h" |
#if defined(OS_WIN) |
#include "base/win/windows_version.h" |
#endif |
-StartupTabs StartupTabProviderImpl::GetOnboardingTabs() const { |
+StartupTabs StartupTabProviderImpl::GetOnboardingTabs(Profile* profile) const { |
#if defined(OS_WIN) |
// Windows 10 has unique onboarding policies and content. |
if (base::win::GetVersion() >= base::win::VERSION_WIN10) { |
@@ -31,7 +36,17 @@ StartupTabs StartupTabProviderImpl::GetOnboardingTabs() const { |
} |
#endif |
- return CheckStandardOnboardingTabPolicy(first_run::IsChromeFirstRun()); |
+ if (!profile) |
+ return StartupTabs(); |
+ |
+ PrefService* prefs = profile->GetPrefs(); |
+ bool has_seen_welcome = prefs && prefs->GetBoolean(prefs::kHasSeenWelcomeUI); |
+ SigninManagerBase* signin_manager = |
+ SigninManagerFactory::GetForProfile(profile); |
+ bool is_signed_in = signin_manager && signin_manager->IsAuthenticated(); |
+ |
Peter Kasting
2016/11/20 07:32:09
Nit: I'd probably remove this blank line since the
tmartino
2016/11/21 00:27:34
Done
|
+ return CheckStandardOnboardingTabPolicy(first_run::IsChromeFirstRun(), |
+ has_seen_welcome, is_signed_in); |
} |
StartupTabs StartupTabProviderImpl::GetDistributionFirstRunTabs( |
@@ -77,10 +92,12 @@ StartupTabs StartupTabProviderImpl::GetNewTabPageTabs( |
// static |
StartupTabs StartupTabProviderImpl::CheckStandardOnboardingTabPolicy( |
- bool is_first_run) { |
+ bool is_first_run, |
+ bool has_seen_welcome, |
+ bool is_signed_in) { |
StartupTabs tabs; |
- if (is_first_run) |
- tabs.emplace_back(GetWelcomePageUrl(), false); |
+ if (!has_seen_welcome && !is_signed_in) |
+ tabs.emplace_back(GetWelcomePageUrl(!is_first_run), false); |
return tabs; |
} |
@@ -100,7 +117,7 @@ StartupTabs StartupTabProviderImpl::CheckMasterPrefsTabPolicy( |
if (url.host_piece() == kNewTabUrlHost) |
url = GURL(chrome::kChromeUINewTabURL); |
else if (url.host_piece() == kWelcomePageUrlHost) |
- url = GetWelcomePageUrl(); |
+ url = GetWelcomePageUrl(false); |
tabs.emplace_back(url, false); |
} |
} |
@@ -145,8 +162,11 @@ StartupTabs StartupTabProviderImpl::CheckNewTabPageTabPolicy( |
} |
// static |
-GURL StartupTabProviderImpl::GetWelcomePageUrl() { |
- return GURL(chrome::kChromeUIWelcomeURL); |
+GURL StartupTabProviderImpl::GetWelcomePageUrl(bool use_later_run_variant) { |
+ GURL url(chrome::kChromeUIWelcomeURL); |
+ return use_later_run_variant |
+ ? net::AppendQueryParameter(url, "variant", "everywhere") |
+ : url; |
} |
// static |