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 |