Index: chrome/browser/sync/sync_ui_util_unittest.cc |
=================================================================== |
--- chrome/browser/sync/sync_ui_util_unittest.cc (revision 110908) |
+++ chrome/browser/sync/sync_ui_util_unittest.cc (working copy) |
@@ -2,7 +2,6 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include <set> |
#include "base/basictypes.h" |
#include "base/utf_string_conversions.h" |
#include "chrome/browser/sync/profile_sync_service_mock.h" |
@@ -13,23 +12,9 @@ |
#include "testing/gtest/include/gtest/gtest.h" |
using ::testing::Return; |
-using ::testing::ReturnRef; |
using ::testing::NiceMock; |
using content::BrowserThread; |
-// A number of distinct states of the ProfileSyncService can be generated for |
-// tests. |
-enum DistinctState { |
- STATUS_CASE_SETUP_IN_PROGRESS, |
- STATUS_CASE_SETUP_ERROR, |
- STATUS_CASE_AUTHENTICATING, |
- STATUS_CASE_AUTH_ERROR, |
- STATUS_CASE_PROTOCOL_ERROR, |
- STATUS_CASE_PASSPHRASE_ERROR, |
- STATUS_CASE_SYNCED, |
- NUMBER_OF_STATUS_CASES |
-}; |
- |
namespace { |
// Utility function to test that GetStatusLabelsForSyncGlobalError returns |
@@ -38,9 +23,11 @@ |
GoogleServiceAuthError::State error_state, |
bool is_signed_in, |
bool is_error) { |
+ GoogleServiceAuthError auth_error(error_state); |
+ service->UpdateAuthErrorState(auth_error); |
+ |
EXPECT_CALL(*service, HasSyncSetupCompleted()) |
.WillRepeatedly(Return(is_signed_in)); |
- |
if (error_state == GoogleServiceAuthError::SERVICE_UNAVAILABLE) { |
EXPECT_CALL(*service, GetAuthenticatedUsername()) |
.WillRepeatedly(Return(UTF8ToUTF16(""))); |
@@ -49,9 +36,6 @@ |
.WillRepeatedly(Return(UTF8ToUTF16("foo"))); |
} |
- GoogleServiceAuthError auth_error(error_state); |
- EXPECT_CALL(*service, GetAuthError()).WillRepeatedly(ReturnRef(auth_error)); |
- |
string16 label1, label2, label3; |
sync_ui_util::GetStatusLabelsForSyncGlobalError( |
service, &label1, &label2, &label3); |
@@ -79,9 +63,6 @@ |
EXPECT_CALL(service, QueryDetailedSyncStatus()) |
.WillOnce(Return(status)); |
- GoogleServiceAuthError auth_error(GoogleServiceAuthError::NONE); |
- EXPECT_CALL(service, GetAuthError()).WillOnce(ReturnRef(auth_error)); |
- |
EXPECT_CALL(service, unrecoverable_error_detected()) |
.WillOnce(Return(true)); |
@@ -144,185 +125,3 @@ |
&service, table[i].error_state, false, false); |
} |
} |
-// Loads a ProfileSyncServiceMock to emulate one of a number of distinct cases |
-// in order to perform tests on the generated messages. |
-void GetDistinctCase(ProfileSyncServiceMock& service, |
- GoogleServiceAuthError** auth_error, |
- int caseNumber) { |
- // Auth Error object is returned by reference in mock and needs to stay in |
- // scope throughout test, so it is owned by calling method. However it is |
- // immutable so can only be allocated in this method. |
- switch (caseNumber) { |
- case STATUS_CASE_SETUP_IN_PROGRESS: { |
- EXPECT_CALL(service, HasSyncSetupCompleted()) |
- .WillOnce(Return(false)); |
- EXPECT_CALL(service, SetupInProgress()) |
- .WillOnce(Return(true)); |
- browser_sync::SyncBackendHost::Status status; |
- status.summary = browser_sync::SyncBackendHost::Status::READY; |
- EXPECT_CALL(service, QueryDetailedSyncStatus()) |
- .WillOnce(Return(status)); |
- *auth_error = new GoogleServiceAuthError(GoogleServiceAuthError::NONE); |
- EXPECT_CALL(service, GetAuthError()) |
- .WillOnce(ReturnRef(**auth_error)); |
- EXPECT_CALL(service, UIShouldDepictAuthInProgress()) |
- .WillOnce(Return(false)); |
- return; |
- } |
- case STATUS_CASE_SETUP_ERROR: { |
- EXPECT_CALL(service, HasSyncSetupCompleted()) |
- .WillOnce(Return(false)); |
- EXPECT_CALL(service, SetupInProgress()) |
- .WillOnce(Return(false)); |
- EXPECT_CALL(service, unrecoverable_error_detected()) |
- .WillOnce(Return(true)); |
- browser_sync::SyncBackendHost::Status status; |
- status.summary = browser_sync::SyncBackendHost::Status::READY; |
- EXPECT_CALL(service, QueryDetailedSyncStatus()) |
- .WillOnce(Return(status)); |
- return; |
- } |
- case STATUS_CASE_AUTHENTICATING: { |
- EXPECT_CALL(service, HasSyncSetupCompleted()) |
- .WillOnce(Return(true)); |
- browser_sync::SyncBackendHost::Status status; |
- status.summary = browser_sync::SyncBackendHost::Status::READY; |
- EXPECT_CALL(service, QueryDetailedSyncStatus()) |
- .WillOnce(Return(status)); |
- EXPECT_CALL(service, UIShouldDepictAuthInProgress()) |
- .WillOnce(Return(true)); |
- *auth_error = new GoogleServiceAuthError(GoogleServiceAuthError::NONE); |
- EXPECT_CALL(service, GetAuthError()) |
- .WillOnce(ReturnRef(**auth_error)); |
- return; |
- } |
- case STATUS_CASE_AUTH_ERROR: { |
- EXPECT_CALL(service, HasSyncSetupCompleted()) |
- .WillOnce(Return(true)); |
- browser_sync::SyncBackendHost::Status status; |
- status.summary = browser_sync::SyncBackendHost::Status::READY; |
- EXPECT_CALL(service, QueryDetailedSyncStatus()) |
- .WillOnce(Return(status)); |
- *auth_error = new GoogleServiceAuthError( |
- GoogleServiceAuthError::SERVICE_UNAVAILABLE); |
- EXPECT_CALL(service, GetAuthenticatedUsername()) |
- .WillOnce(Return(ASCIIToUTF16(""))); |
- EXPECT_CALL(service, GetAuthError()) |
- .WillOnce(ReturnRef(**auth_error)); |
- EXPECT_CALL(service, UIShouldDepictAuthInProgress()) |
- .WillOnce(Return(false)); |
- return; |
- } |
- case STATUS_CASE_PROTOCOL_ERROR: { |
- EXPECT_CALL(service, HasSyncSetupCompleted()) |
- .WillOnce(Return(true)); |
- browser_sync::SyncProtocolError protocolError; |
- protocolError.action = browser_sync::STOP_AND_RESTART_SYNC; |
- browser_sync::SyncBackendHost::Status status; |
- status.summary = browser_sync::SyncBackendHost::Status::READY; |
- status.sync_protocol_error = protocolError; |
- EXPECT_CALL(service, QueryDetailedSyncStatus()) |
- .WillOnce(Return(status)); |
- *auth_error = new GoogleServiceAuthError(GoogleServiceAuthError::NONE); |
- EXPECT_CALL(service, GetAuthError()) |
- .WillOnce(ReturnRef(**auth_error)); |
- EXPECT_CALL(service, UIShouldDepictAuthInProgress()) |
- .WillOnce(Return(false)); |
- return; |
- } |
- case STATUS_CASE_PASSPHRASE_ERROR: { |
- EXPECT_CALL(service, HasSyncSetupCompleted()) |
- .WillOnce(Return(true)); |
- browser_sync::SyncBackendHost::Status status; |
- status.summary = browser_sync::SyncBackendHost::Status::READY; |
- EXPECT_CALL(service, QueryDetailedSyncStatus()) |
- .WillOnce(Return(status)); |
- *auth_error = new GoogleServiceAuthError(GoogleServiceAuthError::NONE); |
- EXPECT_CALL(service, GetAuthError()) |
- .WillOnce(ReturnRef(**auth_error)); |
- EXPECT_CALL(service, GetAuthenticatedUsername()) |
- .WillOnce(Return(ASCIIToUTF16("example@example.com"))); |
- EXPECT_CALL(service, UIShouldDepictAuthInProgress()) |
- .WillOnce(Return(false)); |
- EXPECT_CALL(service, IsPassphraseRequired()) |
- .WillOnce(Return(true)); |
- EXPECT_CALL(service, IsPassphraseRequiredForDecryption()) |
- .WillOnce(Return(true)); |
- return; |
- } |
- case STATUS_CASE_SYNCED: { |
- EXPECT_CALL(service, HasSyncSetupCompleted()) |
- .WillOnce(Return(true)); |
- browser_sync::SyncBackendHost::Status status; |
- status.summary = browser_sync::SyncBackendHost::Status::READY; |
- EXPECT_CALL(service, QueryDetailedSyncStatus()) |
- .WillOnce(Return(status)); |
- *auth_error = new GoogleServiceAuthError(GoogleServiceAuthError::NONE); |
- EXPECT_CALL(service, GetAuthError()) |
- .WillOnce(ReturnRef(**auth_error)); |
- EXPECT_CALL(service, GetAuthenticatedUsername()) |
- .WillOnce(Return(ASCIIToUTF16("example@example.com"))); |
- EXPECT_CALL(service, UIShouldDepictAuthInProgress()) |
- .WillOnce(Return(false)); |
- EXPECT_CALL(service, IsPassphraseRequired()) |
- .WillOnce(Return(false)); |
- return; |
- } |
- default: |
- NOTREACHED(); |
- } |
-} |
- |
-// This test ensures that a each distinctive ProfileSyncService statuses |
-// will return a unique combination of status and link messages from |
-// GetStatusLabels(). |
-TEST(SyncUIUtilTest, DistinctCasesReportUniqueMessageSets) { |
- ProfileSyncServiceMock service; |
- |
- std::set<string16> messages; |
- for (int idx = 0; idx != NUMBER_OF_STATUS_CASES; idx++) { |
- ProfileSyncServiceMock service; |
- GoogleServiceAuthError* auth_error = NULL; |
- GetDistinctCase(service, &auth_error, idx); |
- string16 status_label; |
- string16 link_label; |
- sync_ui_util::GetStatusLabels(&service, |
- sync_ui_util::WITH_HTML, |
- &status_label, |
- &link_label); |
- // If the status and link message combination is already present in the set |
- // of messages already seen, this is a duplicate rather than a unique |
- // message, and the test has failed. |
- string16 combined_label = |
- status_label + string16(ASCIIToUTF16("#")) + link_label; |
- EXPECT_TRUE(messages.find(combined_label) == messages.end()); |
- messages.insert(combined_label); |
- if (auth_error) |
- delete auth_error; |
- } |
-} |
- |
-// This test ensures that the html_links parameter on GetStatusLabels() is |
-// honored. |
-TEST(SyncUIUtilTest, HtmlNotIncludedInStatusIfNotRequested) { |
- ProfileSyncServiceMock service; |
- for (int idx = 0; idx != NUMBER_OF_STATUS_CASES; idx++) { |
- ProfileSyncServiceMock service; |
- GoogleServiceAuthError* auth_error = NULL; |
- GetDistinctCase(service, &auth_error, idx); |
- string16 status_label; |
- string16 link_label; |
- sync_ui_util::GetStatusLabels(&service, |
- sync_ui_util::PLAIN_TEXT, |
- &status_label, |
- &link_label); |
- // Ensures a search for string 'href' (found in links, not a string to be |
- // found in an English language message) fails when links are excluded from |
- // the status label. |
- EXPECT_EQ(status_label.find(string16(ASCIIToUTF16("href"))), |
- string16::npos); |
- if (auth_error) { |
- delete auth_error; |
- } |
- } |
-} |