Chromium Code Reviews| 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 74ae3ee5a9c3c6732772c91c120f449b4002180f..adce785588222a869f19a1c6b19553f070f30943 100644 |
| --- a/chrome/browser/ui/startup/startup_tab_provider.cc |
| +++ b/chrome/browser/ui/startup/startup_tab_provider.cc |
| @@ -21,24 +21,34 @@ |
| #if defined(OS_WIN) |
| #include "base/win/windows_version.h" |
| +#include "chrome/browser/browser_process.h" |
| +#include "chrome/browser/shell_integration.h" |
| #endif |
| StartupTabs StartupTabProviderImpl::GetOnboardingTabs(Profile* profile) const { |
| + if (!profile) |
| + return StartupTabs(); |
| + |
| #if defined(OS_WIN) |
| // Windows 10 has unique onboarding policies and content. |
| if (base::win::GetVersion() >= base::win::VERSION_WIN10) { |
| - // TODO(tmartino): * Add a function, GetWin10SystemState, which gathers |
| - // system state relevant to Win10 Onboarding and returns |
| - // a struct. |
| - // * Add a function, CheckWin10OnboardingTabPolicy, which |
| - // takes such a struct as input and returns StartupTabs. |
| - return StartupTabs(); |
| + PrefService* prefs = profile->GetPrefs(); |
| + bool has_seen_welcome_page = |
|
tmartino
2016/12/15 16:41:28
Let's define and populate has_seen_welcome_page, i
Patrick Monette
2016/12/15 18:28:09
Done.
|
| + prefs && prefs->GetBoolean(prefs::kHasSeenWelcomePage); |
| + bool has_seen_win10_promo = |
| + prefs && prefs->GetBoolean(prefs::kHasSeenWin10PromoPage); |
| + SigninManagerBase* signin_manager = |
| + SigninManagerFactory::GetForProfile(profile); |
| + bool is_signed_in = signin_manager && signin_manager->IsAuthenticated(); |
| + bool is_default_browser = |
| + g_browser_process->CachedDefaultWebClientState() == |
| + shell_integration::IS_DEFAULT; |
| + return CheckWin10OnboardingTabPolicy( |
| + first_run::IsChromeFirstRun(), has_seen_welcome_page, |
| + has_seen_win10_promo, is_signed_in, is_default_browser); |
| } |
| #endif |
| - if (!profile) |
| - return StartupTabs(); |
| - |
| PrefService* prefs = profile->GetPrefs(); |
| bool has_seen_welcome_page = |
| prefs && prefs->GetBoolean(prefs::kHasSeenWelcomePage); |
| @@ -101,6 +111,23 @@ StartupTabs StartupTabProviderImpl::CheckStandardOnboardingTabPolicy( |
| return tabs; |
| } |
| +#if defined(OS_WIN) |
| +// static |
| +StartupTabs StartupTabProviderImpl::CheckWin10OnboardingTabPolicy( |
| + bool is_first_run, |
| + bool has_seen_welcome_page, |
| + bool has_seen_win10_promo, |
| + bool is_signed_in, |
| + bool is_default_browser) { |
| + StartupTabs tabs; |
| + if (!has_seen_win10_promo && !is_default_browser) |
| + tabs.emplace_back(GetWin10WelcomePageUrl(!is_first_run), false); |
| + else if (!has_seen_welcome_page && !is_signed_in) |
| + tabs.emplace_back(GetWelcomePageUrl(!is_first_run), false); |
| + return tabs; |
| +} |
| +#endif |
| + |
| // static |
| StartupTabs StartupTabProviderImpl::CheckMasterPrefsTabPolicy( |
| bool is_first_run, |
| @@ -169,6 +196,17 @@ GURL StartupTabProviderImpl::GetWelcomePageUrl(bool use_later_run_variant) { |
| : url; |
| } |
| +#if defined(OS_WIN) |
| +// static |
| +GURL StartupTabProviderImpl::GetWin10WelcomePageUrl( |
| + bool use_later_run_variant) { |
| + GURL url(chrome::kChromeUIWelcomeWin10URL); |
| + return use_later_run_variant |
| + ? net::AppendQueryParameter(url, "text", "faster") |
| + : url; |
| +} |
| +#endif |
| + |
| // static |
| GURL StartupTabProviderImpl::GetTriggeredResetSettingsUrl() { |
| return GURL( |