| Index: chrome/browser/chromeos/arc/arc_session_manager_unittest.cc | 
| diff --git a/chrome/browser/chromeos/arc/arc_session_manager_unittest.cc b/chrome/browser/chromeos/arc/arc_session_manager_unittest.cc | 
| index 7403af09cf93d450cc35f63daf901471a04261de..adb6b350d8cecc0dece8ea79965fbbcc4ceed71e 100644 | 
| --- a/chrome/browser/chromeos/arc/arc_session_manager_unittest.cc | 
| +++ b/chrome/browser/chromeos/arc/arc_session_manager_unittest.cc | 
| @@ -45,12 +45,12 @@ | 
|  | 
| namespace arc { | 
|  | 
| -class ArcSessionManagerTest : public testing::Test { | 
| +class ArcSessionManagerTestBase : public testing::Test { | 
| public: | 
| -  ArcSessionManagerTest() | 
| +  ArcSessionManagerTestBase() | 
| : thread_bundle_(content::TestBrowserThreadBundle::IO_MAINLOOP), | 
| -        user_manager_enabler_(new chromeos::FakeChromeUserManager) {} | 
| -  ~ArcSessionManagerTest() override = default; | 
| +        user_manager_enabler_(new chromeos::FakeChromeUserManager()) {} | 
| +  ~ArcSessionManagerTestBase() override = default; | 
|  | 
| void SetUp() override { | 
| chromeos::DBusThreadManager::Initialize(); | 
| @@ -61,6 +61,7 @@ class ArcSessionManagerTest : public testing::Test { | 
|  | 
| EXPECT_TRUE(temp_dir_.CreateUniqueTempDir()); | 
| TestingProfile::Builder profile_builder; | 
| +    profile_builder.SetProfileName("user@gmail.com"); | 
| profile_builder.SetPath(temp_dir_.GetPath().AppendASCII("TestArcProfile")); | 
|  | 
| profile_ = profile_builder.Build(); | 
| @@ -73,11 +74,6 @@ class ArcSessionManagerTest : public testing::Test { | 
| EXPECT_EQ(bridge_service_.get(), ArcBridgeService::Get()); | 
| EXPECT_TRUE(ArcBridgeService::Get()->stopped()); | 
|  | 
| -    const AccountId account_id( | 
| -        AccountId::FromUserEmailGaiaId("user@gmail.com", "1234567890")); | 
| -    GetFakeUserManager()->AddUser(account_id); | 
| -    GetFakeUserManager()->LoginUser(account_id); | 
| - | 
| chromeos::WallpaperManager::Initialize(); | 
| } | 
|  | 
| @@ -102,11 +98,10 @@ class ArcSessionManagerTest : public testing::Test { | 
| void StartPreferenceSyncing() const { | 
| PrefServiceSyncableFromProfile(profile_.get()) | 
| ->GetSyncableService(syncer::PREFERENCES) | 
| -        ->MergeDataAndStartSyncing(syncer::PREFERENCES, syncer::SyncDataList(), | 
| -                                   std::unique_ptr<syncer::SyncChangeProcessor>( | 
| -                                       new syncer::FakeSyncChangeProcessor), | 
| -                                   std::unique_ptr<syncer::SyncErrorFactory>( | 
| -                                       new syncer::SyncErrorFactoryMock())); | 
| +        ->MergeDataAndStartSyncing( | 
| +            syncer::PREFERENCES, syncer::SyncDataList(), | 
| +            base::MakeUnique<syncer::FakeSyncChangeProcessor>(), | 
| +            base::MakeUnique<syncer::SyncErrorFactoryMock>()); | 
| } | 
|  | 
| content::TestBrowserThreadBundle thread_bundle_; | 
| @@ -116,6 +111,23 @@ class ArcSessionManagerTest : public testing::Test { | 
| chromeos::ScopedUserManagerEnabler user_manager_enabler_; | 
| base::ScopedTempDir temp_dir_; | 
|  | 
| +  DISALLOW_COPY_AND_ASSIGN(ArcSessionManagerTestBase); | 
| +}; | 
| + | 
| +class ArcSessionManagerTest : public ArcSessionManagerTestBase { | 
| + public: | 
| +  ArcSessionManagerTest() = default; | 
| + | 
| +  void SetUp() override { | 
| +    ArcSessionManagerTestBase::SetUp(); | 
| + | 
| +    const AccountId account_id(AccountId::FromUserEmailGaiaId( | 
| +        profile()->GetProfileUserName(), "1234567890")); | 
| +    GetFakeUserManager()->AddUser(account_id); | 
| +    GetFakeUserManager()->LoginUser(account_id); | 
| +  } | 
| + | 
| + private: | 
| DISALLOW_COPY_AND_ASSIGN(ArcSessionManagerTest); | 
| }; | 
|  | 
| @@ -377,4 +389,37 @@ TEST_F(ArcSessionManagerTest, DisabledForNonPrimaryProfile) { | 
| arc_session_manager()->Shutdown(); | 
| } | 
|  | 
| +class ArcSessionManagerKioskTest : public ArcSessionManagerTestBase { | 
| + public: | 
| +  ArcSessionManagerKioskTest() = default; | 
| + | 
| +  void SetUp() override { | 
| +    ArcSessionManagerTestBase::SetUp(); | 
| +    const AccountId account_id( | 
| +        AccountId::FromUserEmail(profile()->GetProfileUserName())); | 
| +    GetFakeUserManager()->AddArcKioskAppUser(account_id); | 
| +    GetFakeUserManager()->LoginUser(account_id); | 
| +  } | 
| + | 
| + private: | 
| +  DISALLOW_COPY_AND_ASSIGN(ArcSessionManagerKioskTest); | 
| +}; | 
| + | 
| +TEST_F(ArcSessionManagerKioskTest, AuthFailure) { | 
| +  profile()->GetPrefs()->SetBoolean(prefs::kArcEnabled, true); | 
| +  arc_session_manager()->OnPrimaryUserProfilePrepared(profile()); | 
| +  EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state()); | 
| + | 
| +  // Replace chrome::AttemptUserExit() for testing. | 
| +  // At the end of test, leave the dangling pointer |terminated|, | 
| +  // assuming the callback will never be called. | 
| +  bool terminated = false; | 
| +  arc_session_manager()->SetAttemptUserExitCallbackForTesting( | 
| +      base::Bind([](bool* terminated) { *terminated = true; }, &terminated)); | 
| + | 
| +  arc_session_manager()->OnProvisioningFinished( | 
| +      ProvisioningResult::CHROME_SERVER_COMMUNICATION_ERROR); | 
| +  EXPECT_TRUE(terminated); | 
| +} | 
| + | 
| }  // namespace arc | 
|  |