| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/startup/startup_tab_provider.h" | 5 #include "chrome/browser/ui/startup/startup_tab_provider.h" |
| 6 | 6 |
| 7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
| 8 #include "chrome/browser/first_run/first_run.h" | 8 #include "chrome/browser/first_run/first_run.h" |
| 9 #include "chrome/browser/profile_resetter/triggered_profile_resetter.h" | 9 #include "chrome/browser/profile_resetter/triggered_profile_resetter.h" |
| 10 #include "chrome/browser/profile_resetter/triggered_profile_resetter_factory.h" | 10 #include "chrome/browser/profile_resetter/triggered_profile_resetter_factory.h" |
| 11 #include "chrome/browser/signin/signin_manager_factory.h" |
| 11 #include "chrome/browser/ui/chrome_pages.h" | 12 #include "chrome/browser/ui/chrome_pages.h" |
| 12 #include "chrome/browser/ui/tabs/pinned_tab_codec.h" | 13 #include "chrome/browser/ui/tabs/pinned_tab_codec.h" |
| 14 #include "chrome/common/pref_names.h" |
| 13 #include "chrome/common/url_constants.h" | 15 #include "chrome/common/url_constants.h" |
| 14 #include "chrome/grit/locale_settings.h" | 16 #include "chrome/grit/locale_settings.h" |
| 17 #include "components/prefs/pref_service.h" |
| 18 #include "components/signin/core/browser/signin_manager.h" |
| 19 #include "net/base/url_util.h" |
| 15 #include "ui/base/l10n/l10n_util.h" | 20 #include "ui/base/l10n/l10n_util.h" |
| 16 | 21 |
| 17 #if defined(OS_WIN) | 22 #if defined(OS_WIN) |
| 18 #include "base/win/windows_version.h" | 23 #include "base/win/windows_version.h" |
| 19 #endif | 24 #endif |
| 20 | 25 |
| 21 StartupTabs StartupTabProviderImpl::GetOnboardingTabs() const { | 26 StartupTabs StartupTabProviderImpl::GetOnboardingTabs(Profile* profile) const { |
| 22 #if defined(OS_WIN) | 27 #if defined(OS_WIN) |
| 23 // Windows 10 has unique onboarding policies and content. | 28 // Windows 10 has unique onboarding policies and content. |
| 24 if (base::win::GetVersion() >= base::win::VERSION_WIN10) { | 29 if (base::win::GetVersion() >= base::win::VERSION_WIN10) { |
| 25 // TODO(tmartino): * Add a function, GetWin10SystemState, which gathers | 30 // TODO(tmartino): * Add a function, GetWin10SystemState, which gathers |
| 26 // system state relevant to Win10 Onboarding and returns | 31 // system state relevant to Win10 Onboarding and returns |
| 27 // a struct. | 32 // a struct. |
| 28 // * Add a function, CheckWin10OnboardingTabPolicy, which | 33 // * Add a function, CheckWin10OnboardingTabPolicy, which |
| 29 // takes such a struct as input and returns StartupTabs. | 34 // takes such a struct as input and returns StartupTabs. |
| 30 return StartupTabs(); | 35 return StartupTabs(); |
| 31 } | 36 } |
| 32 #endif | 37 #endif |
| 33 | 38 |
| 34 return CheckStandardOnboardingTabPolicy(first_run::IsChromeFirstRun()); | 39 if (!profile) |
| 40 return StartupTabs(); |
| 41 |
| 42 PrefService* prefs = profile->GetPrefs(); |
| 43 bool has_seen_welcome_page = |
| 44 prefs && prefs->GetBoolean(prefs::kHasSeenWelcomePage); |
| 45 SigninManagerBase* signin_manager = |
| 46 SigninManagerFactory::GetForProfile(profile); |
| 47 bool is_signed_in = signin_manager && signin_manager->IsAuthenticated(); |
| 48 return CheckStandardOnboardingTabPolicy(first_run::IsChromeFirstRun(), |
| 49 has_seen_welcome_page, is_signed_in); |
| 35 } | 50 } |
| 36 | 51 |
| 37 StartupTabs StartupTabProviderImpl::GetDistributionFirstRunTabs( | 52 StartupTabs StartupTabProviderImpl::GetDistributionFirstRunTabs( |
| 38 StartupBrowserCreator* browser_creator) const { | 53 StartupBrowserCreator* browser_creator) const { |
| 39 if (!browser_creator) | 54 if (!browser_creator) |
| 40 return StartupTabs(); | 55 return StartupTabs(); |
| 41 StartupTabs tabs = CheckMasterPrefsTabPolicy( | 56 StartupTabs tabs = CheckMasterPrefsTabPolicy( |
| 42 first_run::IsChromeFirstRun(), browser_creator->first_run_tabs_); | 57 first_run::IsChromeFirstRun(), browser_creator->first_run_tabs_); |
| 43 browser_creator->first_run_tabs_.clear(); | 58 browser_creator->first_run_tabs_.clear(); |
| 44 return tabs; | 59 return tabs; |
| (...skipping 25 matching lines...) Expand all Loading... |
| 70 | 85 |
| 71 StartupTabs StartupTabProviderImpl::GetNewTabPageTabs( | 86 StartupTabs StartupTabProviderImpl::GetNewTabPageTabs( |
| 72 const base::CommandLine& command_line, | 87 const base::CommandLine& command_line, |
| 73 Profile* profile) const { | 88 Profile* profile) const { |
| 74 return CheckNewTabPageTabPolicy( | 89 return CheckNewTabPageTabPolicy( |
| 75 StartupBrowserCreator::GetSessionStartupPref(command_line, profile)); | 90 StartupBrowserCreator::GetSessionStartupPref(command_line, profile)); |
| 76 } | 91 } |
| 77 | 92 |
| 78 // static | 93 // static |
| 79 StartupTabs StartupTabProviderImpl::CheckStandardOnboardingTabPolicy( | 94 StartupTabs StartupTabProviderImpl::CheckStandardOnboardingTabPolicy( |
| 80 bool is_first_run) { | 95 bool is_first_run, |
| 96 bool has_seen_welcome_page, |
| 97 bool is_signed_in) { |
| 81 StartupTabs tabs; | 98 StartupTabs tabs; |
| 82 if (is_first_run) | 99 if (!has_seen_welcome_page && !is_signed_in) |
| 83 tabs.emplace_back(GetWelcomePageUrl(), false); | 100 tabs.emplace_back(GetWelcomePageUrl(!is_first_run), false); |
| 84 return tabs; | 101 return tabs; |
| 85 } | 102 } |
| 86 | 103 |
| 87 // static | 104 // static |
| 88 StartupTabs StartupTabProviderImpl::CheckMasterPrefsTabPolicy( | 105 StartupTabs StartupTabProviderImpl::CheckMasterPrefsTabPolicy( |
| 89 bool is_first_run, | 106 bool is_first_run, |
| 90 const std::vector<GURL>& first_run_tabs) { | 107 const std::vector<GURL>& first_run_tabs) { |
| 91 // Constants: Magic words used by Master Preferences files in place of a URL | 108 // Constants: Magic words used by Master Preferences files in place of a URL |
| 92 // host to indicate that internal pages should appear on first run. | 109 // host to indicate that internal pages should appear on first run. |
| 93 static constexpr char kNewTabUrlHost[] = "new_tab_page"; | 110 static constexpr char kNewTabUrlHost[] = "new_tab_page"; |
| 94 static constexpr char kWelcomePageUrlHost[] = "welcome_page"; | 111 static constexpr char kWelcomePageUrlHost[] = "welcome_page"; |
| 95 | 112 |
| 96 StartupTabs tabs; | 113 StartupTabs tabs; |
| 97 if (is_first_run) { | 114 if (is_first_run) { |
| 98 tabs.reserve(first_run_tabs.size()); | 115 tabs.reserve(first_run_tabs.size()); |
| 99 for (GURL url : first_run_tabs) { | 116 for (GURL url : first_run_tabs) { |
| 100 if (url.host_piece() == kNewTabUrlHost) | 117 if (url.host_piece() == kNewTabUrlHost) |
| 101 url = GURL(chrome::kChromeUINewTabURL); | 118 url = GURL(chrome::kChromeUINewTabURL); |
| 102 else if (url.host_piece() == kWelcomePageUrlHost) | 119 else if (url.host_piece() == kWelcomePageUrlHost) |
| 103 url = GetWelcomePageUrl(); | 120 url = GetWelcomePageUrl(false); |
| 104 tabs.emplace_back(url, false); | 121 tabs.emplace_back(url, false); |
| 105 } | 122 } |
| 106 } | 123 } |
| 107 return tabs; | 124 return tabs; |
| 108 } | 125 } |
| 109 | 126 |
| 110 // static | 127 // static |
| 111 StartupTabs StartupTabProviderImpl::CheckResetTriggerTabPolicy( | 128 StartupTabs StartupTabProviderImpl::CheckResetTriggerTabPolicy( |
| 112 bool profile_has_trigger) { | 129 bool profile_has_trigger) { |
| 113 StartupTabs tabs; | 130 StartupTabs tabs; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 138 // static | 155 // static |
| 139 StartupTabs StartupTabProviderImpl::CheckNewTabPageTabPolicy( | 156 StartupTabs StartupTabProviderImpl::CheckNewTabPageTabPolicy( |
| 140 const SessionStartupPref& pref) { | 157 const SessionStartupPref& pref) { |
| 141 StartupTabs tabs; | 158 StartupTabs tabs; |
| 142 if (pref.type != SessionStartupPref::Type::LAST) | 159 if (pref.type != SessionStartupPref::Type::LAST) |
| 143 tabs.emplace_back(GURL(chrome::kChromeUINewTabURL), false); | 160 tabs.emplace_back(GURL(chrome::kChromeUINewTabURL), false); |
| 144 return tabs; | 161 return tabs; |
| 145 } | 162 } |
| 146 | 163 |
| 147 // static | 164 // static |
| 148 GURL StartupTabProviderImpl::GetWelcomePageUrl() { | 165 GURL StartupTabProviderImpl::GetWelcomePageUrl(bool use_later_run_variant) { |
| 149 return GURL(chrome::kChromeUIWelcomeURL); | 166 GURL url(chrome::kChromeUIWelcomeURL); |
| 167 return use_later_run_variant |
| 168 ? net::AppendQueryParameter(url, "variant", "everywhere") |
| 169 : url; |
| 150 } | 170 } |
| 151 | 171 |
| 152 // static | 172 // static |
| 153 GURL StartupTabProviderImpl::GetTriggeredResetSettingsUrl() { | 173 GURL StartupTabProviderImpl::GetTriggeredResetSettingsUrl() { |
| 154 return GURL( | 174 return GURL( |
| 155 chrome::GetSettingsUrl(chrome::kTriggeredResetProfileSettingsSubPage)); | 175 chrome::GetSettingsUrl(chrome::kTriggeredResetProfileSettingsSubPage)); |
| 156 } | 176 } |
| OLD | NEW |