| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/signin/signin_tracker.h" | 5 #include "chrome/browser/signin/signin_tracker.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "chrome/browser/profiles/profile.h" | 10 #include "chrome/browser/profiles/profile.h" |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 profile_.reset(ProfileSyncServiceMock::MakeSignedInTestingProfile()); | 63 profile_.reset(ProfileSyncServiceMock::MakeSignedInTestingProfile()); |
| 64 mock_token_service_ = static_cast<MockTokenService*>( | 64 mock_token_service_ = static_cast<MockTokenService*>( |
| 65 TokenServiceFactory::GetInstance()->SetTestingFactoryAndUse( | 65 TokenServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
| 66 profile_.get(), BuildMockTokenService)); | 66 profile_.get(), BuildMockTokenService)); |
| 67 mock_pss_ = static_cast<ProfileSyncServiceMock*>( | 67 mock_pss_ = static_cast<ProfileSyncServiceMock*>( |
| 68 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( | 68 ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
| 69 profile_.get(), | 69 profile_.get(), |
| 70 ProfileSyncServiceMock::BuildMockProfileSyncService)); | 70 ProfileSyncServiceMock::BuildMockProfileSyncService)); |
| 71 mock_pss_->Initialize(); | 71 mock_pss_->Initialize(); |
| 72 | 72 |
| 73 mock_signin_manager_ = static_cast<FakeSigninManager*>( | 73 mock_signin_manager_ = static_cast<FakeSigninManagerBase*>( |
| 74 SigninManagerFactory::GetInstance()->SetTestingFactoryAndUse( | 74 SigninManagerFactory::GetInstance()->SetTestingFactoryAndUse( |
| 75 profile_.get(), FakeSigninManager::Build)); | 75 profile_.get(), FakeSigninManagerBase::Build)); |
| 76 | 76 |
| 77 // Make gmock not spam the output with information about these uninteresting | 77 // Make gmock not spam the output with information about these uninteresting |
| 78 // calls. | 78 // calls. |
| 79 EXPECT_CALL(*mock_pss_, AddObserver(_)).Times(AnyNumber()); | 79 EXPECT_CALL(*mock_pss_, AddObserver(_)).Times(AnyNumber()); |
| 80 EXPECT_CALL(*mock_pss_, RemoveObserver(_)).Times(AnyNumber()); | 80 EXPECT_CALL(*mock_pss_, RemoveObserver(_)).Times(AnyNumber()); |
| 81 tracker_.reset(new SigninTracker(profile_.get(), &observer_)); | 81 tracker_.reset(new SigninTracker(profile_.get(), &observer_)); |
| 82 } | 82 } |
| 83 virtual void TearDown() OVERRIDE { | 83 virtual void TearDown() OVERRIDE { |
| 84 tracker_.reset(); | 84 tracker_.reset(); |
| 85 profile_.reset(); | 85 profile_.reset(); |
| 86 } | 86 } |
| 87 scoped_ptr<SigninTracker> tracker_; | 87 scoped_ptr<SigninTracker> tracker_; |
| 88 scoped_ptr<TestingProfile> profile_; | 88 scoped_ptr<TestingProfile> profile_; |
| 89 ProfileSyncServiceMock* mock_pss_; | 89 ProfileSyncServiceMock* mock_pss_; |
| 90 FakeSigninManager* mock_signin_manager_; | 90 FakeSigninManagerBase* mock_signin_manager_; |
| 91 MockTokenService* mock_token_service_; | 91 MockTokenService* mock_token_service_; |
| 92 MockObserver observer_; | 92 MockObserver observer_; |
| 93 }; | 93 }; |
| 94 | 94 |
| 95 TEST_F(SigninTrackerTest, GaiaSignInFailed) { | 95 TEST_F(SigninTrackerTest, GaiaSignInFailed) { |
| 96 // SIGNIN_FAILED notification should result in a SigninFailed callback. | 96 // SIGNIN_FAILED notification should result in a SigninFailed callback. |
| 97 GoogleServiceAuthError error( | 97 GoogleServiceAuthError error( |
| 98 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); | 98 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); |
| 99 EXPECT_CALL(observer_, SigninFailed(error)); | 99 EXPECT_CALL(observer_, SigninFailed(error)); |
| 100 content::NotificationService::current()->Notify( | 100 content::NotificationService::current()->Notify( |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 137 | 137 |
| 138 } | 138 } |
| 139 | 139 |
| 140 TEST_F(SigninTrackerTest, GaiaSigninWhenServicesAlreadyRunning) { | 140 TEST_F(SigninTrackerTest, GaiaSigninWhenServicesAlreadyRunning) { |
| 141 // SIGNIN_SUCCEEDED notification should result in a SigninSuccess() callback | 141 // SIGNIN_SUCCEEDED notification should result in a SigninSuccess() callback |
| 142 // if we're already signed in. | 142 // if we're already signed in. |
| 143 EXPECT_CALL(observer_, GaiaCredentialsValid()); | 143 EXPECT_CALL(observer_, GaiaCredentialsValid()); |
| 144 EXPECT_CALL(observer_, SigninSuccess()); | 144 EXPECT_CALL(observer_, SigninSuccess()); |
| 145 GoogleServiceAuthError error(GoogleServiceAuthError::NONE); | 145 GoogleServiceAuthError error(GoogleServiceAuthError::NONE); |
| 146 ExpectSignedInSyncService(mock_pss_, mock_token_service_, error); | 146 ExpectSignedInSyncService(mock_pss_, mock_token_service_, error); |
| 147 mock_signin_manager_->StartSignInWithCredentials("0", "username@gmail.com", | 147 mock_signin_manager_->SetAuthenticatedUsername("username@gmail.com"); |
| 148 "password"); | |
| 149 GoogleServiceSigninSuccessDetails details("username@gmail.com", "password"); | 148 GoogleServiceSigninSuccessDetails details("username@gmail.com", "password"); |
| 150 content::NotificationService::current()->Notify( | 149 content::NotificationService::current()->Notify( |
| 151 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, | 150 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, |
| 152 content::Source<Profile>(profile_.get()), | 151 content::Source<Profile>(profile_.get()), |
| 153 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); | 152 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); |
| 154 } | 153 } |
| 155 | 154 |
| 156 TEST_F(SigninTrackerTest, NoGaiaSigninWhenOAuthTokensNotAvailable) { | 155 TEST_F(SigninTrackerTest, NoGaiaSigninWhenOAuthTokensNotAvailable) { |
| 157 // SIGNIN_SUCCESSFUL notification should not result in a SigninSuccess() | 156 // SIGNIN_SUCCESSFUL notification should not result in a SigninSuccess() |
| 158 // callback if our oauth token hasn't been fetched. | 157 // callback if our oauth token hasn't been fetched. |
| (...skipping 18 matching lines...) Expand all Loading... |
| 177 // callback until after our oauth token hasn't been fetched. | 176 // callback until after our oauth token hasn't been fetched. |
| 178 EXPECT_CALL(observer_, GaiaCredentialsValid()); | 177 EXPECT_CALL(observer_, GaiaCredentialsValid()); |
| 179 GoogleServiceAuthError none(GoogleServiceAuthError::NONE); | 178 GoogleServiceAuthError none(GoogleServiceAuthError::NONE); |
| 180 ExpectSignedInSyncService(mock_pss_, NULL, none); | 179 ExpectSignedInSyncService(mock_pss_, NULL, none); |
| 181 EXPECT_CALL(*mock_token_service_, | 180 EXPECT_CALL(*mock_token_service_, |
| 182 HasTokenForService(GaiaConstants::kSyncService)) | 181 HasTokenForService(GaiaConstants::kSyncService)) |
| 183 .WillRepeatedly(Return(true)); | 182 .WillRepeatedly(Return(true)); |
| 184 EXPECT_CALL(*mock_token_service_, | 183 EXPECT_CALL(*mock_token_service_, |
| 185 HasTokenForService(GaiaConstants::kGaiaOAuth2LoginRefreshToken)) | 184 HasTokenForService(GaiaConstants::kGaiaOAuth2LoginRefreshToken)) |
| 186 .WillRepeatedly(Return(false)); | 185 .WillRepeatedly(Return(false)); |
| 187 mock_signin_manager_->StartSignInWithCredentials("0", "username@gmail.com", | 186 mock_signin_manager_->SetAuthenticatedUsername("username@gmail.com"); |
| 188 "password"); | |
| 189 GoogleServiceSigninSuccessDetails details("username@gmail.com", "password"); | 187 GoogleServiceSigninSuccessDetails details("username@gmail.com", "password"); |
| 190 content::NotificationService::current()->Notify( | 188 content::NotificationService::current()->Notify( |
| 191 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, | 189 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, |
| 192 content::Source<Profile>(profile_.get()), | 190 content::Source<Profile>(profile_.get()), |
| 193 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); | 191 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); |
| 194 Mock::VerifyAndClearExpectations(mock_pss_); | 192 Mock::VerifyAndClearExpectations(mock_pss_); |
| 195 Mock::VerifyAndClearExpectations(mock_token_service_); | 193 Mock::VerifyAndClearExpectations(mock_token_service_); |
| 196 EXPECT_CALL(observer_, SigninSuccess()); | 194 EXPECT_CALL(observer_, SigninSuccess()); |
| 197 ExpectSignedInSyncService(mock_pss_, mock_token_service_, none); | 195 ExpectSignedInSyncService(mock_pss_, mock_token_service_, none); |
| 198 TokenService::TokenAvailableDetails available( | 196 TokenService::TokenAvailableDetails available( |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 } | 247 } |
| 250 | 248 |
| 251 TEST_F(SigninTrackerTest, GaiaSigninAfterSyncStarts) { | 249 TEST_F(SigninTrackerTest, GaiaSigninAfterSyncStarts) { |
| 252 // Make sure that we don't get a SigninSuccess() callback until after the | 250 // Make sure that we don't get a SigninSuccess() callback until after the |
| 253 // sync service reports that it's signed in. | 251 // sync service reports that it's signed in. |
| 254 EXPECT_CALL(observer_, GaiaCredentialsValid()); | 252 EXPECT_CALL(observer_, GaiaCredentialsValid()); |
| 255 EXPECT_CALL(*mock_pss_, IsSyncEnabledAndLoggedIn()).WillOnce( | 253 EXPECT_CALL(*mock_pss_, IsSyncEnabledAndLoggedIn()).WillOnce( |
| 256 Return(false)); | 254 Return(false)); |
| 257 EXPECT_CALL(*mock_token_service_, HasTokenForService(_)) | 255 EXPECT_CALL(*mock_token_service_, HasTokenForService(_)) |
| 258 .WillRepeatedly(Return(true)); | 256 .WillRepeatedly(Return(true)); |
| 259 mock_signin_manager_->StartSignInWithCredentials("0", "username@gmail.com", | 257 mock_signin_manager_->SetAuthenticatedUsername("username@gmail.com"); |
| 260 "password"); | |
| 261 GoogleServiceSigninSuccessDetails details("username@gmail.com", "password"); | 258 GoogleServiceSigninSuccessDetails details("username@gmail.com", "password"); |
| 262 content::NotificationService::current()->Notify( | 259 content::NotificationService::current()->Notify( |
| 263 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, | 260 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, |
| 264 content::Source<Profile>(profile_.get()), | 261 content::Source<Profile>(profile_.get()), |
| 265 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); | 262 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); |
| 266 Mock::VerifyAndClearExpectations(mock_pss_); | 263 Mock::VerifyAndClearExpectations(mock_pss_); |
| 267 // Mimic the sync engine getting credentials. | 264 // Mimic the sync engine getting credentials. |
| 268 EXPECT_CALL(observer_, SigninSuccess()); | 265 EXPECT_CALL(observer_, SigninSuccess()); |
| 269 GoogleServiceAuthError error(GoogleServiceAuthError::NONE); | 266 GoogleServiceAuthError error(GoogleServiceAuthError::NONE); |
| 270 ExpectSignedInSyncService(mock_pss_, mock_token_service_, error); | 267 ExpectSignedInSyncService(mock_pss_, mock_token_service_, error); |
| 271 tracker_->OnStateChanged(); | 268 tracker_->OnStateChanged(); |
| 272 } | 269 } |
| 273 | 270 |
| 274 TEST_F(SigninTrackerTest, SyncSigninError) { | 271 TEST_F(SigninTrackerTest, SyncSigninError) { |
| 275 // Make sure that we get a SigninFailed() callback if sync gets an error after | 272 // Make sure that we get a SigninFailed() callback if sync gets an error after |
| 276 // initializaiton. | 273 // initializaiton. |
| 277 EXPECT_CALL(observer_, GaiaCredentialsValid()); | 274 EXPECT_CALL(observer_, GaiaCredentialsValid()); |
| 278 EXPECT_CALL(*mock_pss_, IsSyncEnabledAndLoggedIn()).WillRepeatedly( | 275 EXPECT_CALL(*mock_pss_, IsSyncEnabledAndLoggedIn()).WillRepeatedly( |
| 279 Return(false)); | 276 Return(false)); |
| 280 EXPECT_CALL(*mock_pss_, IsSyncTokenAvailable()).WillRepeatedly( | 277 EXPECT_CALL(*mock_pss_, IsSyncTokenAvailable()).WillRepeatedly( |
| 281 Return(false)); | 278 Return(false)); |
| 282 EXPECT_CALL(*mock_token_service_, HasTokenForService(_)) | 279 EXPECT_CALL(*mock_token_service_, HasTokenForService(_)) |
| 283 .WillRepeatedly(Return(true)); | 280 .WillRepeatedly(Return(true)); |
| 284 mock_signin_manager_->StartSignInWithCredentials("0", "username@gmail.com", | 281 mock_signin_manager_->SetAuthenticatedUsername("username@gmail.com"); |
| 285 "password"); | |
| 286 GoogleServiceSigninSuccessDetails details("username@gmail.com", "password"); | 282 GoogleServiceSigninSuccessDetails details("username@gmail.com", "password"); |
| 287 content::NotificationService::current()->Notify( | 283 content::NotificationService::current()->Notify( |
| 288 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, | 284 chrome::NOTIFICATION_GOOGLE_SIGNIN_SUCCESSFUL, |
| 289 content::Source<Profile>(profile_.get()), | 285 content::Source<Profile>(profile_.get()), |
| 290 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); | 286 content::Details<const GoogleServiceSigninSuccessDetails>(&details)); |
| 291 | 287 |
| 292 // Still waiting for auth, so sync state changes should be ignored. | 288 // Still waiting for auth, so sync state changes should be ignored. |
| 293 EXPECT_CALL(*mock_pss_, waiting_for_auth()).WillOnce(Return(true)); | 289 EXPECT_CALL(*mock_pss_, waiting_for_auth()).WillOnce(Return(true)); |
| 294 tracker_->OnStateChanged(); | 290 tracker_->OnStateChanged(); |
| 295 // Now mimic an auth error - this should cause us to fail (not waiting for | 291 // Now mimic an auth error - this should cause us to fail (not waiting for |
| 296 // auth, but still have no credentials). | 292 // auth, but still have no credentials). |
| 297 GoogleServiceAuthError error( | 293 GoogleServiceAuthError error( |
| 298 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); | 294 GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); |
| 299 FakeAuthStatusProvider provider(mock_signin_manager_->signin_global_error()); | 295 FakeAuthStatusProvider provider(mock_signin_manager_->signin_global_error()); |
| 300 provider.SetAuthError(error); | 296 provider.SetAuthError(error); |
| 301 EXPECT_CALL(*mock_pss_, waiting_for_auth()).WillRepeatedly(Return(false)); | 297 EXPECT_CALL(*mock_pss_, waiting_for_auth()).WillRepeatedly(Return(false)); |
| 302 EXPECT_CALL(observer_, SigninFailed(error)); | 298 EXPECT_CALL(observer_, SigninFailed(error)); |
| 303 tracker_->OnStateChanged(); | 299 tracker_->OnStateChanged(); |
| 304 } | 300 } |
| 305 | 301 |
| 306 // Test cases for initial state = SERVICES_INITIALIZING. | 302 // Test cases for initial state = SERVICES_INITIALIZING. |
| 307 TEST_F(SigninTrackerTest, SigninSuccess) { | 303 TEST_F(SigninTrackerTest, SigninSuccess) { |
| 308 // Reset the |tracker_| and restart with initial state parameter for its | 304 // Reset the |tracker_| and restart with initial state parameter for its |
| 309 // constructor later. | 305 // constructor later. |
| 310 tracker_.reset(); | 306 tracker_.reset(); |
| 311 GoogleServiceAuthError error(GoogleServiceAuthError::NONE); | 307 GoogleServiceAuthError error(GoogleServiceAuthError::NONE); |
| 312 ExpectSignedInSyncService(mock_pss_, mock_token_service_, error); | 308 ExpectSignedInSyncService(mock_pss_, mock_token_service_, error); |
| 313 mock_signin_manager_->StartSignInWithCredentials("0", "username@gmail.com", | 309 mock_signin_manager_->SetAuthenticatedUsername("username@gmail.com"); |
| 314 "password"); | 310 |
| 315 // Finally SigninSuccess() is expected to be called when everything is ready. | 311 // Finally SigninSuccess() is expected to be called when everything is ready. |
| 316 EXPECT_CALL(observer_, SigninSuccess()); | 312 EXPECT_CALL(observer_, SigninSuccess()); |
| 317 tracker_.reset(new SigninTracker(profile_.get(), &observer_, | 313 tracker_.reset(new SigninTracker(profile_.get(), &observer_, |
| 318 SigninTracker::SERVICES_INITIALIZING)); | 314 SigninTracker::SERVICES_INITIALIZING)); |
| 319 } | 315 } |
| 320 | 316 |
| 321 TEST_F(SigninTrackerTest, SigninFailedSyncTokenUnavailable) { | 317 TEST_F(SigninTrackerTest, SigninFailedSyncTokenUnavailable) { |
| 322 tracker_.reset(); | 318 tracker_.reset(); |
| 323 EXPECT_CALL(*mock_token_service_, HasTokenForService(_)) | 319 EXPECT_CALL(*mock_token_service_, HasTokenForService(_)) |
| 324 .WillRepeatedly(Return(true)); | 320 .WillRepeatedly(Return(true)); |
| 325 mock_signin_manager_->StartSignInWithCredentials("0", "username@gmail.com", | 321 mock_signin_manager_->SetAuthenticatedUsername("username@gmail.com"); |
| 326 "password"); | |
| 327 GoogleServiceAuthError error(GoogleServiceAuthError::NONE); | 322 GoogleServiceAuthError error(GoogleServiceAuthError::NONE); |
| 328 EXPECT_CALL(*mock_pss_, IsSyncEnabledAndLoggedIn()).WillRepeatedly( | 323 EXPECT_CALL(*mock_pss_, IsSyncEnabledAndLoggedIn()).WillRepeatedly( |
| 329 Return(true)); | 324 Return(true)); |
| 330 // Inject Token unavailable error. | 325 // Inject Token unavailable error. |
| 331 EXPECT_CALL(*mock_pss_, IsSyncTokenAvailable()).WillRepeatedly( | 326 EXPECT_CALL(*mock_pss_, IsSyncTokenAvailable()).WillRepeatedly( |
| 332 Return(false)); | 327 Return(false)); |
| 333 EXPECT_CALL(*mock_pss_, waiting_for_auth()).WillRepeatedly(Return(false)); | 328 EXPECT_CALL(*mock_pss_, waiting_for_auth()).WillRepeatedly(Return(false)); |
| 334 EXPECT_CALL(*mock_pss_, GetAuthError()).WillRepeatedly(ReturnRef(error)); | 329 EXPECT_CALL(*mock_pss_, GetAuthError()).WillRepeatedly(ReturnRef(error)); |
| 335 EXPECT_CALL(*mock_pss_, HasUnrecoverableError()).WillRepeatedly( | 330 EXPECT_CALL(*mock_pss_, HasUnrecoverableError()).WillRepeatedly( |
| 336 Return(false)); | 331 Return(false)); |
| 337 EXPECT_CALL(*mock_pss_, sync_initialized()).WillRepeatedly(Return(true)); | 332 EXPECT_CALL(*mock_pss_, sync_initialized()).WillRepeatedly(Return(true)); |
| 338 // Any error should result in SigninFailed() being called. | 333 // Any error should result in SigninFailed() being called. |
| 339 EXPECT_CALL(observer_, SigninFailed(error)); | 334 EXPECT_CALL(observer_, SigninFailed(error)); |
| 340 tracker_.reset(new SigninTracker(profile_.get(), &observer_, | 335 tracker_.reset(new SigninTracker(profile_.get(), &observer_, |
| 341 SigninTracker::SERVICES_INITIALIZING)); | 336 SigninTracker::SERVICES_INITIALIZING)); |
| 342 } | 337 } |
| 343 | 338 |
| 344 TEST_F(SigninTrackerTest, SigninFailedGoogleServiceAuthError) { | 339 TEST_F(SigninTrackerTest, SigninFailedGoogleServiceAuthError) { |
| 345 tracker_.reset(); | 340 tracker_.reset(); |
| 346 EXPECT_CALL(*mock_token_service_, HasTokenForService(_)) | 341 EXPECT_CALL(*mock_token_service_, HasTokenForService(_)) |
| 347 .WillRepeatedly(Return(true)); | 342 .WillRepeatedly(Return(true)); |
| 348 mock_signin_manager_->StartSignInWithCredentials("0", "username@gmail.com", | 343 mock_signin_manager_->SetAuthenticatedUsername("username@gmail.com"); |
| 349 "password"); | |
| 350 // Inject authentication error. | 344 // Inject authentication error. |
| 351 GoogleServiceAuthError error(GoogleServiceAuthError::SERVICE_UNAVAILABLE); | 345 GoogleServiceAuthError error(GoogleServiceAuthError::SERVICE_UNAVAILABLE); |
| 352 FakeAuthStatusProvider provider(mock_signin_manager_->signin_global_error()); | 346 FakeAuthStatusProvider provider(mock_signin_manager_->signin_global_error()); |
| 353 provider.SetAuthError(error); | 347 provider.SetAuthError(error); |
| 354 EXPECT_CALL(*mock_pss_, IsSyncEnabledAndLoggedIn()).WillRepeatedly( | 348 EXPECT_CALL(*mock_pss_, IsSyncEnabledAndLoggedIn()).WillRepeatedly( |
| 355 Return(true)); | 349 Return(true)); |
| 356 EXPECT_CALL(*mock_pss_, IsSyncTokenAvailable()).WillRepeatedly( | 350 EXPECT_CALL(*mock_pss_, IsSyncTokenAvailable()).WillRepeatedly( |
| 357 Return(true)); | 351 Return(true)); |
| 358 EXPECT_CALL(*mock_pss_, waiting_for_auth()).WillRepeatedly(Return(false)); | 352 EXPECT_CALL(*mock_pss_, waiting_for_auth()).WillRepeatedly(Return(false)); |
| 359 EXPECT_CALL(*mock_pss_, GetAuthError()).WillRepeatedly(ReturnRef(error)); | 353 EXPECT_CALL(*mock_pss_, GetAuthError()).WillRepeatedly(ReturnRef(error)); |
| 360 EXPECT_CALL(*mock_pss_, HasUnrecoverableError()).WillRepeatedly( | 354 EXPECT_CALL(*mock_pss_, HasUnrecoverableError()).WillRepeatedly( |
| 361 Return(false)); | 355 Return(false)); |
| 362 EXPECT_CALL(*mock_pss_, sync_initialized()).WillRepeatedly(Return(true)); | 356 EXPECT_CALL(*mock_pss_, sync_initialized()).WillRepeatedly(Return(true)); |
| 363 // Any error should result in SigninFailed() being called. | 357 // Any error should result in SigninFailed() being called. |
| 364 EXPECT_CALL(observer_, SigninFailed(error)); | 358 EXPECT_CALL(observer_, SigninFailed(error)); |
| 365 tracker_.reset(new SigninTracker(profile_.get(), &observer_, | 359 tracker_.reset(new SigninTracker(profile_.get(), &observer_, |
| 366 SigninTracker::SERVICES_INITIALIZING)); | 360 SigninTracker::SERVICES_INITIALIZING)); |
| 367 } | 361 } |
| 368 | 362 |
| 369 | 363 |
| 370 TEST_F(SigninTrackerTest, SigninFailedWhenInitializing) { | 364 TEST_F(SigninTrackerTest, SigninFailedWhenInitializing) { |
| 371 tracker_.reset(); | 365 tracker_.reset(); |
| 372 // SigninFailed() should be called. | 366 // SigninFailed() should be called. |
| 373 GoogleServiceAuthError error(GoogleServiceAuthError::REQUEST_CANCELED); | 367 GoogleServiceAuthError error(GoogleServiceAuthError::REQUEST_CANCELED); |
| 374 EXPECT_CALL(observer_, SigninFailed(error)); | 368 EXPECT_CALL(observer_, SigninFailed(error)); |
| 375 tracker_.reset(new SigninTracker(profile_.get(), &observer_, | 369 tracker_.reset(new SigninTracker(profile_.get(), &observer_, |
| 376 SigninTracker::SERVICES_INITIALIZING)); | 370 SigninTracker::SERVICES_INITIALIZING)); |
| 377 tracker_->OnStateChanged(); | 371 tracker_->OnStateChanged(); |
| 378 } | 372 } |
| OLD | NEW |