Commit 5b44f573 authored by pmonette's avatar pmonette Committed by Commit bot

Fix the logic that determines when to show the Win 10 promo page.

The Win 10 promo is now skipped when the DefaultBrowserSettingEnabled
group policy is disabled or the browser distribution does not allow
Chrome to be set as the default browser.

BUG=679816

Review-Url: https://codereview.chromium.org/2625793002
Cr-Commit-Position: refs/heads/master@{#442943}
parent 6f65f265
...@@ -50,12 +50,23 @@ StartupTabs StartupTabProviderImpl::GetOnboardingTabs(Profile* profile) const { ...@@ -50,12 +50,23 @@ StartupTabs StartupTabProviderImpl::GetOnboardingTabs(Profile* profile) const {
PrefService* local_state = g_browser_process->local_state(); PrefService* local_state = g_browser_process->local_state();
bool has_seen_win10_promo = bool has_seen_win10_promo =
local_state && local_state->GetBoolean(prefs::kHasSeenWin10PromoPage); local_state && local_state->GetBoolean(prefs::kHasSeenWin10PromoPage);
// The set default browser operation can be disabled by the browser
// distribution (e.g. SxS Canary), or by enterprise policy. In these cases,
// the Win 10 promo page should not be displayed.
bool disabled_by_enterprise_policy =
local_state &&
local_state->IsManagedPreference(
prefs::kDefaultBrowserSettingEnabled) &&
!local_state->GetBoolean(prefs::kDefaultBrowserSettingEnabled);
bool set_default_browser_allowed =
!disabled_by_enterprise_policy &&
shell_integration::CanSetAsDefaultBrowser();
bool is_default_browser = bool is_default_browser =
g_browser_process->CachedDefaultWebClientState() == g_browser_process->CachedDefaultWebClientState() ==
shell_integration::IS_DEFAULT; shell_integration::IS_DEFAULT;
return CheckWin10OnboardingTabPolicy(is_first_run, has_seen_welcome_page, return CheckWin10OnboardingTabPolicy(
has_seen_win10_promo, is_signed_in, is_first_run, has_seen_welcome_page, has_seen_win10_promo, is_signed_in,
is_default_browser); set_default_browser_allowed, is_default_browser);
} }
#endif // defined(OS_WIN) #endif // defined(OS_WIN)
...@@ -135,12 +146,15 @@ StartupTabs StartupTabProviderImpl::CheckWin10OnboardingTabPolicy( ...@@ -135,12 +146,15 @@ StartupTabs StartupTabProviderImpl::CheckWin10OnboardingTabPolicy(
bool has_seen_welcome_page, bool has_seen_welcome_page,
bool has_seen_win10_promo, bool has_seen_win10_promo,
bool is_signed_in, bool is_signed_in,
bool set_default_browser_allowed,
bool is_default_browser) { bool is_default_browser) {
StartupTabs tabs; StartupTabs tabs;
if (!has_seen_win10_promo && !is_default_browser) if (set_default_browser_allowed && !has_seen_win10_promo &&
!is_default_browser) {
tabs.emplace_back(GetWin10WelcomePageUrl(!is_first_run), false); tabs.emplace_back(GetWin10WelcomePageUrl(!is_first_run), false);
else if (!has_seen_welcome_page && !is_signed_in) } else if (!has_seen_welcome_page && !is_signed_in) {
tabs.emplace_back(GetWelcomePageUrl(!is_first_run), false); tabs.emplace_back(GetWelcomePageUrl(!is_first_run), false);
}
return tabs; return tabs;
} }
#endif #endif
......
...@@ -68,11 +68,13 @@ class StartupTabProviderImpl : public StartupTabProvider { ...@@ -68,11 +68,13 @@ class StartupTabProviderImpl : public StartupTabProvider {
#if defined(OS_WIN) #if defined(OS_WIN)
// Determines which tabs should be shown according to onboarding/first run // Determines which tabs should be shown according to onboarding/first run
// policy, including promo content specific to Windows 10. // policy, including promo content specific to Windows 10.
static StartupTabs CheckWin10OnboardingTabPolicy(bool is_first_run, static StartupTabs CheckWin10OnboardingTabPolicy(
bool has_seen_welcome_page, bool is_first_run,
bool has_seen_win10_promo, bool has_seen_welcome_page,
bool is_signed_in, bool has_seen_win10_promo,
bool is_default_browser); bool is_signed_in,
bool set_default_browser_allowed,
bool is_default_browser);
#endif #endif
// Processes first run URLs specified in Master Preferences file, replacing // Processes first run URLs specified in Master Preferences file, replacing
......
...@@ -46,7 +46,7 @@ TEST(StartupTabProviderTest, CheckWin10OnboardingTabPolicy) { ...@@ -46,7 +46,7 @@ TEST(StartupTabProviderTest, CheckWin10OnboardingTabPolicy) {
// Show Win 10 Welcome page if it has not been seen, but the standard page // Show Win 10 Welcome page if it has not been seen, but the standard page
// has. // has.
StartupTabs output = StartupTabProviderImpl::CheckWin10OnboardingTabPolicy( StartupTabs output = StartupTabProviderImpl::CheckWin10OnboardingTabPolicy(
true, true, false, false, false); true, true, false, false, true, false);
ASSERT_EQ(1U, output.size()); ASSERT_EQ(1U, output.size());
EXPECT_EQ(StartupTabProviderImpl::GetWin10WelcomePageUrl(false), EXPECT_EQ(StartupTabProviderImpl::GetWin10WelcomePageUrl(false),
...@@ -56,7 +56,7 @@ TEST(StartupTabProviderTest, CheckWin10OnboardingTabPolicy) { ...@@ -56,7 +56,7 @@ TEST(StartupTabProviderTest, CheckWin10OnboardingTabPolicy) {
// Show standard Welcome page if the Win 10 Welcome page has been seen, but // Show standard Welcome page if the Win 10 Welcome page has been seen, but
// the standard page has not. // the standard page has not.
output = StartupTabProviderImpl::CheckWin10OnboardingTabPolicy( output = StartupTabProviderImpl::CheckWin10OnboardingTabPolicy(
true, false, true, false, false); true, false, true, false, true, false);
ASSERT_EQ(1U, output.size()); ASSERT_EQ(1U, output.size());
EXPECT_EQ(StartupTabProviderImpl::GetWelcomePageUrl(false), output[0].url); EXPECT_EQ(StartupTabProviderImpl::GetWelcomePageUrl(false), output[0].url);
...@@ -65,7 +65,7 @@ TEST(StartupTabProviderTest, CheckWin10OnboardingTabPolicy) { ...@@ -65,7 +65,7 @@ TEST(StartupTabProviderTest, CheckWin10OnboardingTabPolicy) {
// If neither page has been seen, the Win 10 Welcome page takes precedence // If neither page has been seen, the Win 10 Welcome page takes precedence
// this launch. // this launch.
output = StartupTabProviderImpl::CheckWin10OnboardingTabPolicy( output = StartupTabProviderImpl::CheckWin10OnboardingTabPolicy(
true, false, false, false, false); true, false, false, false, true, false);
ASSERT_EQ(1U, output.size()); ASSERT_EQ(1U, output.size());
EXPECT_EQ(StartupTabProviderImpl::GetWin10WelcomePageUrl(false), EXPECT_EQ(StartupTabProviderImpl::GetWin10WelcomePageUrl(false),
...@@ -77,7 +77,7 @@ TEST(StartupTabProviderTest, CheckWin10OnboardingTabPolicy_LaterRunVariant) { ...@@ -77,7 +77,7 @@ TEST(StartupTabProviderTest, CheckWin10OnboardingTabPolicy_LaterRunVariant) {
// Show a variant of the Win 10 Welcome page after first run, if it has not // Show a variant of the Win 10 Welcome page after first run, if it has not
// been seen. // been seen.
StartupTabs output = StartupTabProviderImpl::CheckWin10OnboardingTabPolicy( StartupTabs output = StartupTabProviderImpl::CheckWin10OnboardingTabPolicy(
false, false, false, false, false); false, false, false, false, true, false);
ASSERT_EQ(1U, output.size()); ASSERT_EQ(1U, output.size());
EXPECT_EQ(StartupTabProviderImpl::GetWin10WelcomePageUrl(true), EXPECT_EQ(StartupTabProviderImpl::GetWin10WelcomePageUrl(true),
...@@ -87,7 +87,7 @@ TEST(StartupTabProviderTest, CheckWin10OnboardingTabPolicy_LaterRunVariant) { ...@@ -87,7 +87,7 @@ TEST(StartupTabProviderTest, CheckWin10OnboardingTabPolicy_LaterRunVariant) {
// Show a variant of the standard Welcome page after first run, if the Win 10 // Show a variant of the standard Welcome page after first run, if the Win 10
// Welcome page has already been seen but the standard has not. // Welcome page has already been seen but the standard has not.
output = StartupTabProviderImpl::CheckWin10OnboardingTabPolicy( output = StartupTabProviderImpl::CheckWin10OnboardingTabPolicy(
false, false, true, false, false); false, false, true, false, true, false);
ASSERT_EQ(1U, output.size()); ASSERT_EQ(1U, output.size());
EXPECT_EQ(StartupTabProviderImpl::GetWelcomePageUrl(true), output[0].url); EXPECT_EQ(StartupTabProviderImpl::GetWelcomePageUrl(true), output[0].url);
...@@ -97,14 +97,14 @@ TEST(StartupTabProviderTest, CheckWin10OnboardingTabPolicy_LaterRunVariant) { ...@@ -97,14 +97,14 @@ TEST(StartupTabProviderTest, CheckWin10OnboardingTabPolicy_LaterRunVariant) {
TEST(StartupTabProviderTest, CheckWin10OnboardingTabPolicy_Negative) { TEST(StartupTabProviderTest, CheckWin10OnboardingTabPolicy_Negative) {
// Do not show either page if it has already been shown. // Do not show either page if it has already been shown.
StartupTabs output = StartupTabProviderImpl::CheckWin10OnboardingTabPolicy( StartupTabs output = StartupTabProviderImpl::CheckWin10OnboardingTabPolicy(
true, true, true, false, false); true, true, true, false, true, false);
EXPECT_TRUE(output.empty()); EXPECT_TRUE(output.empty());
// If Chrome is already the default browser, don't show the Win 10 Welcome // If Chrome is already the default browser, don't show the Win 10 Welcome
// page, and don't preempt the standard Welcome page. // page, and don't preempt the standard Welcome page.
output = StartupTabProviderImpl::CheckWin10OnboardingTabPolicy( output = StartupTabProviderImpl::CheckWin10OnboardingTabPolicy(
true, false, false, false, true); true, false, false, false, true, true);
ASSERT_EQ(1U, output.size()); ASSERT_EQ(1U, output.size());
EXPECT_EQ(StartupTabProviderImpl::GetWelcomePageUrl(false), output[0].url); EXPECT_EQ(StartupTabProviderImpl::GetWelcomePageUrl(false), output[0].url);
...@@ -112,10 +112,28 @@ TEST(StartupTabProviderTest, CheckWin10OnboardingTabPolicy_Negative) { ...@@ -112,10 +112,28 @@ TEST(StartupTabProviderTest, CheckWin10OnboardingTabPolicy_Negative) {
// If the user is signed in, block showing the standard Welcome page. // If the user is signed in, block showing the standard Welcome page.
output = StartupTabProviderImpl::CheckWin10OnboardingTabPolicy( output = StartupTabProviderImpl::CheckWin10OnboardingTabPolicy(
true, false, true, true, false); true, false, true, true, true, false);
EXPECT_TRUE(output.empty()); EXPECT_TRUE(output.empty());
} }
TEST(StartupTabProviderTest,
CheckWin10OnboardingTabPolicy_SetDefaultBrowserNotAllowed) {
// Skip the Win 10 promo if setting the default browser is not allowed.
StartupTabs output = StartupTabProviderImpl::CheckWin10OnboardingTabPolicy(
true, false, false, false, false, false);
ASSERT_EQ(1U, output.size());
EXPECT_EQ(StartupTabProviderImpl::GetWelcomePageUrl(false), output[0].url);
// After first run, no onboarding content is displayed when setting the
// default browser is not allowed.
output = StartupTabProviderImpl::CheckWin10OnboardingTabPolicy(
true, true, false, false, false, false);
EXPECT_TRUE(output.empty());
}
#endif #endif
TEST(StartupTabProviderTest, CheckMasterPrefsTabPolicy) { TEST(StartupTabProviderTest, CheckMasterPrefsTabPolicy) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment