Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(67)

Side by Side Diff: chrome/browser/ui/startup/startup_tab_provider.cc

Issue 2487553002: Moving new First Run to use per-profile value, rather than simply checking IsChromeFirstRun. (Closed)
Patch Set: Lint Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698