| 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 "base/message_loop/message_loop.h" | 5 #include "base/message_loop/message_loop.h" |
| 6 #include "base/run_loop.h" | 6 #include "base/run_loop.h" |
| 7 #include "sync/internal_api/public/base/model_type_test_util.h" | 7 #include "sync/internal_api/public/base/model_type_test_util.h" |
| 8 #include "sync/sessions/nudge_tracker.h" | 8 #include "sync/sessions/nudge_tracker.h" |
| 9 #include "sync/test/mock_invalidation.h" | 9 #include "sync/test/mock_invalidation.h" |
| 10 #include "sync/test/mock_invalidation_tracker.h" | 10 #include "sync/test/mock_invalidation_tracker.h" |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 130 | 130 |
| 131 // Neither local nudges nor refresh requests will override it. | 131 // Neither local nudges nor refresh requests will override it. |
| 132 nudge_tracker_.RecordLocalChange(ModelTypeSet(BOOKMARKS)); | 132 nudge_tracker_.RecordLocalChange(ModelTypeSet(BOOKMARKS)); |
| 133 EXPECT_EQ(sync_pb::GetUpdatesCallerInfo::NOTIFICATION, | 133 EXPECT_EQ(sync_pb::GetUpdatesCallerInfo::NOTIFICATION, |
| 134 nudge_tracker_.GetLegacySource()); | 134 nudge_tracker_.GetLegacySource()); |
| 135 nudge_tracker_.RecordLocalRefreshRequest(ModelTypeSet(TYPED_URLS)); | 135 nudge_tracker_.RecordLocalRefreshRequest(ModelTypeSet(TYPED_URLS)); |
| 136 EXPECT_EQ(sync_pb::GetUpdatesCallerInfo::NOTIFICATION, | 136 EXPECT_EQ(sync_pb::GetUpdatesCallerInfo::NOTIFICATION, |
| 137 nudge_tracker_.GetLegacySource()); | 137 nudge_tracker_.GetLegacySource()); |
| 138 } | 138 } |
| 139 | 139 |
| 140 TEST_F(NudgeTrackerTest, SourcePriority_InitialSyncRequest) { |
| 141 nudge_tracker_.RecordInitialSyncRequired(BOOKMARKS); |
| 142 |
| 143 // For lack of a better source, we describe an initial sync request as having |
| 144 // source DATATYPE_REFRESH. |
| 145 EXPECT_EQ(sync_pb::GetUpdatesCallerInfo::DATATYPE_REFRESH, |
| 146 nudge_tracker_.GetLegacySource()); |
| 147 |
| 148 // This should never happen in practice. But, if it did, we'd want the |
| 149 // initial sync required to keep the source set to DATATYPE_REFRESH. |
| 150 nudge_tracker_.RecordLocalChange(ModelTypeSet(BOOKMARKS)); |
| 151 EXPECT_EQ(sync_pb::GetUpdatesCallerInfo::DATATYPE_REFRESH, |
| 152 nudge_tracker_.GetLegacySource()); |
| 153 |
| 154 // It should be safe to let NOTIFICATIONs override it. |
| 155 nudge_tracker_.RecordRemoteInvalidation(BOOKMARKS, |
| 156 BuildInvalidation(1, "hint")); |
| 157 EXPECT_EQ(sync_pb::GetUpdatesCallerInfo::NOTIFICATION, |
| 158 nudge_tracker_.GetLegacySource()); |
| 159 } |
| 160 |
| 140 // Verifies the management of invalidation hints and GU trigger fields. | 161 // Verifies the management of invalidation hints and GU trigger fields. |
| 141 TEST_F(NudgeTrackerTest, HintCoalescing) { | 162 TEST_F(NudgeTrackerTest, HintCoalescing) { |
| 142 // Easy case: record one hint. | 163 // Easy case: record one hint. |
| 143 { | 164 { |
| 144 nudge_tracker_.RecordRemoteInvalidation(BOOKMARKS, | 165 nudge_tracker_.RecordRemoteInvalidation(BOOKMARKS, |
| 145 BuildInvalidation(1, "bm_hint_1")); | 166 BuildInvalidation(1, "bm_hint_1")); |
| 146 | 167 |
| 147 sync_pb::GetUpdateTriggers gu_trigger; | 168 sync_pb::GetUpdateTriggers gu_trigger; |
| 148 nudge_tracker_.FillProtoMessage(BOOKMARKS, &gu_trigger); | 169 nudge_tracker_.FillProtoMessage(BOOKMARKS, &gu_trigger); |
| 149 ASSERT_EQ(1, gu_trigger.notification_hint_size()); | 170 ASSERT_EQ(1, gu_trigger.notification_hint_size()); |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 337 | 358 |
| 338 // Record a successful sync cycle. Verify the count is cleared. | 359 // Record a successful sync cycle. Verify the count is cleared. |
| 339 nudge_tracker_.RecordSuccessfulSyncCycle(); | 360 nudge_tracker_.RecordSuccessfulSyncCycle(); |
| 340 EXPECT_EQ(0, ProtoRefreshRequestedCount(SESSIONS)); | 361 EXPECT_EQ(0, ProtoRefreshRequestedCount(SESSIONS)); |
| 341 } | 362 } |
| 342 | 363 |
| 343 // Basic tests for the IsSyncRequired() flag. | 364 // Basic tests for the IsSyncRequired() flag. |
| 344 TEST_F(NudgeTrackerTest, IsSyncRequired) { | 365 TEST_F(NudgeTrackerTest, IsSyncRequired) { |
| 345 EXPECT_FALSE(nudge_tracker_.IsSyncRequired()); | 366 EXPECT_FALSE(nudge_tracker_.IsSyncRequired()); |
| 346 | 367 |
| 368 // Initial sync request. |
| 369 nudge_tracker_.RecordInitialSyncRequired(BOOKMARKS); |
| 370 EXPECT_TRUE(nudge_tracker_.IsSyncRequired()); |
| 371 nudge_tracker_.RecordSuccessfulSyncCycle(); |
| 372 EXPECT_FALSE(nudge_tracker_.IsSyncRequired()); |
| 373 |
| 347 // Local changes. | 374 // Local changes. |
| 348 nudge_tracker_.RecordLocalChange(ModelTypeSet(SESSIONS)); | 375 nudge_tracker_.RecordLocalChange(ModelTypeSet(SESSIONS)); |
| 349 EXPECT_TRUE(nudge_tracker_.IsSyncRequired()); | 376 EXPECT_TRUE(nudge_tracker_.IsSyncRequired()); |
| 350 nudge_tracker_.RecordSuccessfulSyncCycle(); | 377 nudge_tracker_.RecordSuccessfulSyncCycle(); |
| 351 EXPECT_FALSE(nudge_tracker_.IsSyncRequired()); | 378 EXPECT_FALSE(nudge_tracker_.IsSyncRequired()); |
| 352 | 379 |
| 353 // Refresh requests. | 380 // Refresh requests. |
| 354 nudge_tracker_.RecordLocalRefreshRequest(ModelTypeSet(SESSIONS)); | 381 nudge_tracker_.RecordLocalRefreshRequest(ModelTypeSet(SESSIONS)); |
| 355 EXPECT_TRUE(nudge_tracker_.IsSyncRequired()); | 382 EXPECT_TRUE(nudge_tracker_.IsSyncRequired()); |
| 356 nudge_tracker_.RecordSuccessfulSyncCycle(); | 383 nudge_tracker_.RecordSuccessfulSyncCycle(); |
| 357 EXPECT_FALSE(nudge_tracker_.IsSyncRequired()); | 384 EXPECT_FALSE(nudge_tracker_.IsSyncRequired()); |
| 358 | 385 |
| 359 // Invalidations. | 386 // Invalidations. |
| 360 nudge_tracker_.RecordRemoteInvalidation(PREFERENCES, | 387 nudge_tracker_.RecordRemoteInvalidation(PREFERENCES, |
| 361 BuildInvalidation(1, "hint")); | 388 BuildInvalidation(1, "hint")); |
| 362 EXPECT_TRUE(nudge_tracker_.IsSyncRequired()); | 389 EXPECT_TRUE(nudge_tracker_.IsSyncRequired()); |
| 363 nudge_tracker_.RecordSuccessfulSyncCycle(); | 390 nudge_tracker_.RecordSuccessfulSyncCycle(); |
| 364 EXPECT_FALSE(nudge_tracker_.IsSyncRequired()); | 391 EXPECT_FALSE(nudge_tracker_.IsSyncRequired()); |
| 365 } | 392 } |
| 366 | 393 |
| 367 // Basic tests for the IsGetUpdatesRequired() flag. | 394 // Basic tests for the IsGetUpdatesRequired() flag. |
| 368 TEST_F(NudgeTrackerTest, IsGetUpdatesRequired) { | 395 TEST_F(NudgeTrackerTest, IsGetUpdatesRequired) { |
| 369 EXPECT_FALSE(nudge_tracker_.IsGetUpdatesRequired()); | 396 EXPECT_FALSE(nudge_tracker_.IsGetUpdatesRequired()); |
| 370 | 397 |
| 398 // Initial sync request. |
| 399 nudge_tracker_.RecordInitialSyncRequired(BOOKMARKS); |
| 400 EXPECT_TRUE(nudge_tracker_.IsGetUpdatesRequired()); |
| 401 nudge_tracker_.RecordSuccessfulSyncCycle(); |
| 402 EXPECT_FALSE(nudge_tracker_.IsGetUpdatesRequired()); |
| 403 |
| 371 // Local changes. | 404 // Local changes. |
| 372 nudge_tracker_.RecordLocalChange(ModelTypeSet(SESSIONS)); | 405 nudge_tracker_.RecordLocalChange(ModelTypeSet(SESSIONS)); |
| 373 EXPECT_FALSE(nudge_tracker_.IsGetUpdatesRequired()); | 406 EXPECT_FALSE(nudge_tracker_.IsGetUpdatesRequired()); |
| 374 nudge_tracker_.RecordSuccessfulSyncCycle(); | 407 nudge_tracker_.RecordSuccessfulSyncCycle(); |
| 375 EXPECT_FALSE(nudge_tracker_.IsGetUpdatesRequired()); | 408 EXPECT_FALSE(nudge_tracker_.IsGetUpdatesRequired()); |
| 376 | 409 |
| 377 // Refresh requests. | 410 // Refresh requests. |
| 378 nudge_tracker_.RecordLocalRefreshRequest(ModelTypeSet(SESSIONS)); | 411 nudge_tracker_.RecordLocalRefreshRequest(ModelTypeSet(SESSIONS)); |
| 379 EXPECT_TRUE(nudge_tracker_.IsGetUpdatesRequired()); | 412 EXPECT_TRUE(nudge_tracker_.IsGetUpdatesRequired()); |
| 380 nudge_tracker_.RecordSuccessfulSyncCycle(); | 413 nudge_tracker_.RecordSuccessfulSyncCycle(); |
| (...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 851 EXPECT_TRUE(IsInvalidationAcknowledged(inv2_id)); | 884 EXPECT_TRUE(IsInvalidationAcknowledged(inv2_id)); |
| 852 EXPECT_TRUE(IsInvalidationAcknowledged(inv3_id)); | 885 EXPECT_TRUE(IsInvalidationAcknowledged(inv3_id)); |
| 853 EXPECT_TRUE(IsInvalidationAcknowledged(inv4_id)); | 886 EXPECT_TRUE(IsInvalidationAcknowledged(inv4_id)); |
| 854 EXPECT_TRUE(IsInvalidationAcknowledged(inv5_id)); | 887 EXPECT_TRUE(IsInvalidationAcknowledged(inv5_id)); |
| 855 | 888 |
| 856 EXPECT_TRUE(AllInvalidationsAccountedFor()); | 889 EXPECT_TRUE(AllInvalidationsAccountedFor()); |
| 857 } | 890 } |
| 858 | 891 |
| 859 } // namespace sessions | 892 } // namespace sessions |
| 860 } // namespace syncer | 893 } // namespace syncer |
| OLD | NEW |