Index: chrome/browser/sync/test/integration/sync_errors_test.cc |
diff --git a/chrome/browser/sync/test/integration/sync_errors_test.cc b/chrome/browser/sync/test/integration/sync_errors_test.cc |
index 95c28cfe5d73b492b00ce2c6c8acc8d424f9f4ed..ef6a724c54b24fc4c6633affb181c4ba0d4515e6 100644 |
--- a/chrome/browser/sync/test/integration/sync_errors_test.cc |
+++ b/chrome/browser/sync/test/integration/sync_errors_test.cc |
@@ -2,7 +2,9 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include "chrome/browser/sync/profile_sync_service.h" |
#include "chrome/browser/sync/profile_sync_service_harness.h" |
+#include "chrome/browser/sync/protocol/sync_protocol_error.h" |
#include "chrome/browser/sync/test/integration/bookmarks_helper.h" |
#include "chrome/browser/sync/test/integration/sync_test.h" |
@@ -46,3 +48,58 @@ IN_PROC_BROWSER_TEST_F(SyncErrorTest, TransientErrorTest) { |
ASSERT_TRUE( |
GetClient(0)->AwaitExponentialBackoffVerification()); |
} |
+ |
+IN_PROC_BROWSER_TEST_F(SyncErrorTest, ActionableErrorTest) { |
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
+ |
+ const BookmarkNode* node1 = AddFolder(0, 0, L"title1"); |
+ SetTitle(0, node1, L"new_title1"); |
+ ASSERT_TRUE(GetClient(0)->AwaitSyncCycleCompletion("Sync.")); |
+ |
+ browser_sync::SyncProtocolError protocol_error; |
+ protocol_error.error_type = browser_sync::TRANSIENT_ERROR; |
+ protocol_error.action = browser_sync::UPGRADE_CLIENT; |
+ protocol_error.error_description = "Not My Fault"; |
+ protocol_error.url = "www.google.com"; |
+ TriggerSyncError(protocol_error); |
+ |
+ // Now make one more change so we will do another sync. |
+ const BookmarkNode* node2 = AddFolder(0, 0, L"title2"); |
+ SetTitle(0, node2, L"new_title2"); |
+ ASSERT_TRUE( |
+ GetClient(0)->AwaitActionableError()); |
+ ProfileSyncService::Status status = GetClient(0)->GetStatus(); |
+ ASSERT_EQ(status.sync_protocol_error.error_type, protocol_error.error_type); |
+ ASSERT_EQ(status.sync_protocol_error.action, protocol_error.action); |
+ ASSERT_EQ(status.sync_protocol_error.url, protocol_error.url); |
+ ASSERT_EQ(status.sync_protocol_error.error_description, |
+ protocol_error.error_description); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(SyncErrorTest, |
+ BirthdayErrorUsingActionableErrorTest) { |
+ ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; |
+ |
+ const BookmarkNode* node1 = AddFolder(0, 0, L"title1"); |
+ SetTitle(0, node1, L"new_title1"); |
+ ASSERT_TRUE(GetClient(0)->AwaitSyncCycleCompletion("Sync.")); |
+ |
+ browser_sync::SyncProtocolError protocol_error; |
+ protocol_error.error_type = browser_sync::NOT_MY_BIRTHDAY; |
+ protocol_error.action = browser_sync::DISABLE_SYNC_ON_CLIENT; |
+ protocol_error.error_description = "Not My Fault"; |
+ protocol_error.url = "www.google.com"; |
+ TriggerSyncError(protocol_error); |
+ |
+ // Now make one more change so we will do another sync. |
+ const BookmarkNode* node2 = AddFolder(0, 0, L"title2"); |
+ SetTitle(0, node2, L"new_title2"); |
+ ASSERT_TRUE( |
+ GetClient(0)->AwaitSyncDisabled("Birthday Error.")); |
+ ProfileSyncService::Status status = GetClient(0)->GetStatus(); |
+ ASSERT_EQ(status.sync_protocol_error.error_type, protocol_error.error_type); |
+ ASSERT_EQ(status.sync_protocol_error.action, protocol_error.action); |
+ ASSERT_EQ(status.sync_protocol_error.url, protocol_error.url); |
+ ASSERT_EQ(status.sync_protocol_error.error_description, |
+ protocol_error.error_description); |
+} |