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 = prefs && prefs->GetBoolean(prefs::kHasSeenWelcomeUI); | |
44 SigninManagerBase* signin_manager = | |
45 SigninManagerFactory::GetForProfile(profile); | |
46 bool is_signed_in = signin_manager && signin_manager->IsAuthenticated(); | |
47 | |
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
| |
48 return CheckStandardOnboardingTabPolicy(first_run::IsChromeFirstRun(), | |
49 has_seen_welcome, 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, | |
97 bool is_signed_in) { | |
81 StartupTabs tabs; | 98 StartupTabs tabs; |
82 if (is_first_run) | 99 if (!has_seen_welcome && !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 |