@@ -526,7 +526,7 @@ TEST_F(BraveSyncServiceTest, OnDeleteDeviceWhenSelfDeleted) {
526
526
auto resolved_record = SyncRecord::Clone (*records.at (0 ));
527
527
resolved_record->action = jslib::SyncRecord::Action::A_DELETE;
528
528
resolved_records.push_back (std::move (resolved_record));
529
- EXPECT_CALL (*observer (), OnSyncStateChanged (sync_service ())).Times (5 );
529
+ EXPECT_CALL (*observer (), OnSyncStateChanged (sync_service ())).Times (AtLeast ( 3 ) );
530
530
sync_service ()->OnResolvedPreferences (resolved_records);
531
531
532
532
auto devices_final = sync_service ()->sync_prefs_ ->GetSyncDevices ();
@@ -698,3 +698,94 @@ TEST_F(BraveSyncServiceTest, BackgroundSyncStopped) {
698
698
sync_service ()->BackgroundSyncStopped (false );
699
699
EXPECT_FALSE (sync_service ()->timer_ ->IsRunning ());
700
700
}
701
+
702
+ TEST_F (BraveSyncServiceTest, LoopDelayVaries) {
703
+ // This test is almost the same as BraveSyncServiceTest::OnDeleteDevice
704
+ // Loop delay should be:
705
+ // 1 sec when there is no sync chain yet
706
+ // 60 sec when 2 or more devices
707
+ // after sync chain destroy the loop should not be running
708
+
709
+ sync_service ()->BackgroundSyncStarted (false );
710
+
711
+ EXPECT_TRUE (sync_service ()->timer_ ->IsRunning ());
712
+ EXPECT_EQ (sync_service ()->GetLoopDelay ().InSeconds (), 1u );
713
+
714
+ RecordsList records;
715
+ records.push_back (SimpleDeviceRecord (
716
+ jslib::SyncRecord::Action::A_CREATE,
717
+ " 1" , " device1" ));
718
+ records.push_back (SimpleDeviceRecord (
719
+ jslib::SyncRecord::Action::A_CREATE,
720
+ " 2" , " device2" ));
721
+ records.push_back (SimpleDeviceRecord (
722
+ jslib::SyncRecord::Action::A_CREATE,
723
+ " 3" , " device3" ));
724
+ EXPECT_CALL (*observer (), OnSyncStateChanged (sync_service ())).Times (1 );
725
+ sync_service ()->OnResolvedPreferences (records);
726
+
727
+ sync_service ()->sync_prefs_ ->SetThisDeviceId (" 1" );
728
+ auto devices = sync_service ()->sync_prefs_ ->GetSyncDevices ();
729
+
730
+ // Have 3 devices now
731
+ EXPECT_EQ (sync_service ()->GetLoopDelay ().InSeconds (), 60u );
732
+
733
+ EXPECT_TRUE (DevicesContains (devices.get (), " 1" , " device1" ));
734
+ EXPECT_TRUE (DevicesContains (devices.get (), " 2" , " device2" ));
735
+ EXPECT_TRUE (DevicesContains (devices.get (), " 3" , " device3" ));
736
+
737
+ using brave_sync::jslib::SyncRecord;
738
+ EXPECT_CALL (*sync_client (), SendSyncRecords (" PREFERENCES" ,
739
+ ContainsDeviceRecord (SyncRecord::Action::A_DELETE, " device3" ))).Times (1 );
740
+ sync_service ()->OnDeleteDevice (" 3" );
741
+
742
+ RecordsList resolved_records;
743
+ auto resolved_record = SyncRecord::Clone (*records.at (2 ));
744
+ resolved_record->action = jslib::SyncRecord::Action::A_DELETE;
745
+ resolved_records.push_back (std::move (resolved_record));{
746
+ EXPECT_CALL (*observer (), OnSyncStateChanged (sync_service ())).Times (1 );
747
+ sync_service ()->OnResolvedPreferences (resolved_records);}
748
+
749
+ auto devices_final = sync_service ()->sync_prefs_ ->GetSyncDevices ();
750
+ EXPECT_TRUE (DevicesContains (devices_final.get (), " 1" , " device1" ));
751
+ EXPECT_TRUE (DevicesContains (devices_final.get (), " 2" , " device2" ));
752
+ EXPECT_FALSE (DevicesContains (devices_final.get (), " 3" , " device3" ));
753
+
754
+ // Have 2 devices now, still expecting 60 sec delay
755
+ EXPECT_EQ (sync_service ()->GetLoopDelay ().InSeconds (), 60u );
756
+
757
+ // Delete all remaining devices
758
+ resolved_records.clear ();
759
+
760
+ auto resolved_record_0 = SyncRecord::Clone (*records.at (0 ));
761
+ resolved_record_0->action = jslib::SyncRecord::Action::A_DELETE;
762
+ resolved_records.push_back (std::move (resolved_record_0));
763
+
764
+ auto resolved_record_1 = SyncRecord::Clone (*records.at (1 ));
765
+ resolved_record_1->action = jslib::SyncRecord::Action::A_DELETE;
766
+ resolved_records.push_back (std::move (resolved_record_1));
767
+
768
+ {
769
+ // Expecting call of OnSyncStateChanged at least 3 times:
770
+ // delete "device1"
771
+ // delete "device2"
772
+ // brave_sync.enabled to false, several times
773
+ EXPECT_CALL (*observer (), OnSyncStateChanged (sync_service ())).Times (AtLeast (3 ));
774
+ EXPECT_CALL (*sync_client (), OnSyncEnabledChanged).Times (AtLeast (1 ));
775
+ sync_service ()->OnResolvedPreferences (resolved_records);
776
+ }
777
+
778
+ devices_final = sync_service ()->sync_prefs_ ->GetSyncDevices ();
779
+ EXPECT_FALSE (DevicesContains (devices_final.get (), " 1" , " device1" ));
780
+ EXPECT_FALSE (DevicesContains (devices_final.get (), " 2" , " device2" ));
781
+ EXPECT_FALSE (DevicesContains (devices_final.get (), " 3" , " device3" ));
782
+
783
+ // We have mock client, so emulate these steps when all devices removed
784
+ // 1) brave_sync.enabled goes to false
785
+ // 2) BraveSyncClientImpl::OnSyncEnabledChanged
786
+ // 3) BraveSyncClientImpl::LoadOrUnloadExtension(false)
787
+ // 4) BraveSyncClientImpl::OnExtensionUnloaded
788
+ // 5) BraveSyncServiceImpl::BackgroundSyncStopped
789
+ sync_service ()->BackgroundSyncStopped (true );
790
+ EXPECT_FALSE (sync_service ()->timer_ ->IsRunning ());
791
+ }
0 commit comments