| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/sync/sync_global_error.h" | 5 #include "chrome/browser/sync/sync_global_error.h" |
| 6 | 6 |
| 7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
| 8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
| 9 #include "chrome/browser/sync/profile_sync_service_mock.h" | 9 #include "chrome/browser/sync/profile_sync_service_mock.h" |
| 10 #include "chrome/browser/sync/signin_manager.h" |
| 11 #include "chrome/test/base/testing_profile.h" |
| 10 #include "content/test/test_browser_thread.h" | 12 #include "content/test/test_browser_thread.h" |
| 11 #include "testing/gmock/include/gmock/gmock-actions.h" | 13 #include "testing/gmock/include/gmock/gmock-actions.h" |
| 12 #include "testing/gmock/include/gmock/gmock.h" | 14 #include "testing/gmock/include/gmock/gmock.h" |
| 13 #include "testing/gtest/include/gtest/gtest.h" | 15 #include "testing/gtest/include/gtest/gtest.h" |
| 14 | 16 |
| 15 using ::testing::Return; | 17 using ::testing::Return; |
| 16 using ::testing::ReturnRef; | 18 using ::testing::ReturnRef; |
| 17 using ::testing::NiceMock; | 19 using ::testing::NiceMock; |
| 18 using content::BrowserThread; | 20 using content::BrowserThread; |
| 19 | 21 |
| 20 namespace { | 22 namespace { |
| 21 | 23 |
| 22 // Utility function to test that SyncGlobalError behaves correct for the given | 24 // Utility function to test that SyncGlobalError behaves correct for the given |
| 23 // error condition. | 25 // error condition. |
| 24 void VerifySyncGlobalErrorResult(NiceMock<ProfileSyncServiceMock>* service, | 26 void VerifySyncGlobalErrorResult(NiceMock<ProfileSyncServiceMock>* service, |
| 25 SyncGlobalError* error, | 27 SyncGlobalError* error, |
| 26 GoogleServiceAuthError::State error_state, | 28 GoogleServiceAuthError::State error_state, |
| 27 bool is_signed_in, | 29 bool is_signed_in, |
| 28 bool is_error) { | 30 bool is_error) { |
| 29 EXPECT_CALL(*service, HasSyncSetupCompleted()) | 31 EXPECT_CALL(*service, HasSyncSetupCompleted()) |
| 30 .WillRepeatedly(Return(is_signed_in)); | 32 .WillRepeatedly(Return(is_signed_in)); |
| 31 if (error_state == GoogleServiceAuthError::SERVICE_UNAVAILABLE) { | |
| 32 EXPECT_CALL(*service, GetAuthenticatedUsername()) | |
| 33 .WillRepeatedly(Return(UTF8ToUTF16(""))); | |
| 34 } else { | |
| 35 EXPECT_CALL(*service, GetAuthenticatedUsername()) | |
| 36 .WillRepeatedly(Return(UTF8ToUTF16("foo"))); | |
| 37 } | |
| 38 | 33 |
| 39 GoogleServiceAuthError auth_error(error_state); | 34 GoogleServiceAuthError auth_error(error_state); |
| 40 EXPECT_CALL(*service, GetAuthError()).WillRepeatedly(ReturnRef(auth_error)); | 35 EXPECT_CALL(*service, GetAuthError()).WillRepeatedly(ReturnRef(auth_error)); |
| 41 | 36 |
| 42 error->OnStateChanged(); | 37 error->OnStateChanged(); |
| 43 | 38 |
| 44 // If there is an error then a wrench button badge, menu item, and bubble view | 39 // If there is an error then a wrench button badge, menu item, and bubble view |
| 45 // should be shown. | 40 // should be shown. |
| 46 EXPECT_EQ(error->HasBadge(), is_error); | 41 EXPECT_EQ(error->HasBadge(), is_error); |
| 47 EXPECT_EQ(error->HasMenuItem() || error->HasCustomizedSyncMenuItem(), | 42 EXPECT_EQ(error->HasMenuItem() || error->HasCustomizedSyncMenuItem(), |
| (...skipping 19 matching lines...) Expand all Loading... |
| 67 error->BubbleViewDidClose(); | 62 error->BubbleViewDidClose(); |
| 68 } | 63 } |
| 69 } | 64 } |
| 70 | 65 |
| 71 } // namespace | 66 } // namespace |
| 72 | 67 |
| 73 // Test that SyncGlobalError shows an error if a passphrase is required. | 68 // Test that SyncGlobalError shows an error if a passphrase is required. |
| 74 TEST(SyncGlobalErrorTest, PassphraseGlobalError) { | 69 TEST(SyncGlobalErrorTest, PassphraseGlobalError) { |
| 75 MessageLoopForUI message_loop; | 70 MessageLoopForUI message_loop; |
| 76 content::TestBrowserThread ui_thread(BrowserThread::UI, &message_loop); | 71 content::TestBrowserThread ui_thread(BrowserThread::UI, &message_loop); |
| 77 NiceMock<ProfileSyncServiceMock> service; | 72 scoped_ptr<Profile> profile( |
| 73 ProfileSyncServiceMock::MakeSignedInTestingProfile()); |
| 74 NiceMock<ProfileSyncServiceMock> service(profile.get()); |
| 78 SyncGlobalError error(&service); | 75 SyncGlobalError error(&service); |
| 79 | 76 |
| 80 EXPECT_CALL(service, IsPassphraseRequired()) | 77 EXPECT_CALL(service, IsPassphraseRequired()) |
| 81 .WillRepeatedly(Return(true)); | 78 .WillRepeatedly(Return(true)); |
| 82 EXPECT_CALL(service, IsPassphraseRequiredForDecryption()) | 79 EXPECT_CALL(service, IsPassphraseRequiredForDecryption()) |
| 83 .WillRepeatedly(Return(true)); | 80 .WillRepeatedly(Return(true)); |
| 84 VerifySyncGlobalErrorResult( | 81 VerifySyncGlobalErrorResult( |
| 85 &service, &error, GoogleServiceAuthError::NONE, true, true); | 82 &service, &error, GoogleServiceAuthError::NONE, true, true); |
| 86 } | 83 } |
| 87 | 84 |
| 88 // Test that SyncGlobalError shows an error for conditions that can be resolved | 85 // Test that SyncGlobalError shows an error for conditions that can be resolved |
| 89 // by the user and suppresses errors for conditions that cannot be resolved by | 86 // by the user and suppresses errors for conditions that cannot be resolved by |
| 90 // the user. | 87 // the user. |
| 91 TEST(SyncGlobalErrorTest, AuthStateGlobalError) { | 88 TEST(SyncGlobalErrorTest, AuthStateGlobalError) { |
| 92 MessageLoopForUI message_loop; | 89 MessageLoopForUI message_loop; |
| 93 content::TestBrowserThread ui_thread(BrowserThread::UI, &message_loop); | 90 content::TestBrowserThread ui_thread(BrowserThread::UI, &message_loop); |
| 94 NiceMock<ProfileSyncServiceMock> service; | 91 scoped_ptr<Profile> profile( |
| 92 ProfileSyncServiceMock::MakeSignedInTestingProfile()); |
| 93 NiceMock<ProfileSyncServiceMock> service(profile.get()); |
| 95 SyncGlobalError error(&service); | 94 SyncGlobalError error(&service); |
| 96 | 95 |
| 97 browser_sync::SyncBackendHost::Status status; | 96 browser_sync::SyncBackendHost::Status status; |
| 98 EXPECT_CALL(service, QueryDetailedSyncStatus()) | 97 EXPECT_CALL(service, QueryDetailedSyncStatus()) |
| 99 .WillRepeatedly(Return(status)); | 98 .WillRepeatedly(Return(status)); |
| 100 | 99 |
| 101 struct { | 100 struct { |
| 102 GoogleServiceAuthError::State error_state; | 101 GoogleServiceAuthError::State error_state; |
| 103 bool is_error; | 102 bool is_error; |
| 104 } table[] = { | 103 } table[] = { |
| (...skipping 10 matching lines...) Expand all Loading... |
| 115 { GoogleServiceAuthError::HOSTED_NOT_ALLOWED, true }, | 114 { GoogleServiceAuthError::HOSTED_NOT_ALLOWED, true }, |
| 116 }; | 115 }; |
| 117 | 116 |
| 118 for (size_t i = 0; i < sizeof(table)/sizeof(*table); ++i) { | 117 for (size_t i = 0; i < sizeof(table)/sizeof(*table); ++i) { |
| 119 VerifySyncGlobalErrorResult( | 118 VerifySyncGlobalErrorResult( |
| 120 &service, &error, table[i].error_state, true, table[i].is_error); | 119 &service, &error, table[i].error_state, true, table[i].is_error); |
| 121 VerifySyncGlobalErrorResult( | 120 VerifySyncGlobalErrorResult( |
| 122 &service, &error, table[i].error_state, false, false); | 121 &service, &error, table[i].error_state, false, false); |
| 123 } | 122 } |
| 124 } | 123 } |
| OLD | NEW |