1a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// found in the LICENSE file. 4a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 5a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/ui/sync/sync_promo_ui.h" 6a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 7a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "base/basictypes.h" 8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "base/command_line.h" 9a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "base/compiler_specific.h" 10a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/signin/fake_signin_manager.h" 12a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/browser/signin/signin_manager_factory.h" 13a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/common/chrome_switches.h" 14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "chrome/test/base/testing_profile.h" 15a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 16a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 17a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)class SyncPromoUITest : public testing::Test { 18a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) public: 19a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) SyncPromoUITest() {} 20a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // testing::Test: 22a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) virtual void SetUp() OVERRIDE { 23a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) testing::Test::SetUp(); 24a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) profile_.reset(new TestingProfile()); 25a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 27a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) protected: 28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) void CreateSigninManager(const std::string& username) { 29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) SigninManagerBase* signin_manager = 30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) static_cast<FakeSigninManagerBase*>( 31a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) SigninManagerFactory::GetInstance()->SetTestingFactoryAndUse( 32a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) profile_.get(), 33a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) &FakeSigninManagerBase::Build)); 34a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) signin_manager->Initialize(profile_.get(), NULL); 35a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 36a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if (!username.empty()) { 37a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) ASSERT_TRUE(signin_manager); 38a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) signin_manager->SetAuthenticatedUsername(username); 39a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 41a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 42a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) void DisableSync() { 43a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) CommandLine::ForCurrentProcess()->AppendSwitch(switches::kDisableSync); 44a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 45a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 46a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) scoped_ptr<TestingProfile> profile_; 47a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 48a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) private: 49a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(SyncPromoUITest); 50a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)}; 51a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 52a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Verifies that ShouldShowSyncPromo returns false if sync is disabled by 53a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// policy. 54a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)TEST_F(SyncPromoUITest, ShouldShowSyncPromoSyncDisabled) { 55a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) CreateSigninManager(""); 56a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) DisableSync(); 57a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) EXPECT_FALSE(SyncPromoUI::ShouldShowSyncPromo(profile_.get())); 58a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 59a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 60a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// Verifies that ShouldShowSyncPromo returns true if all conditions to 61a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// show the promo are met. 62a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)TEST_F(SyncPromoUITest, ShouldShowSyncPromoSyncEnabled) { 63a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) CreateSigninManager(""); 64a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#if defined(OS_CHROMEOS) 65a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) // No sync promo on CrOS. 66a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) EXPECT_FALSE(SyncPromoUI::ShouldShowSyncPromo(profile_.get())); 67a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#else 68a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) EXPECT_TRUE(SyncPromoUI::ShouldShowSyncPromo(profile_.get())); 69a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)#endif 70a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 71