Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Side by Side Diff: components/sync_sessions/sessions_sync_manager_unittest.cc

Issue 2958303002: [Sync] Maintain a global_id mapping to update UserEvents that references navigations (Closed)
Patch Set: Hopefully fix iOS compile issue. Created 3 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/sync_sessions/sessions_sync_manager.h" 5 #include "components/sync_sessions/sessions_sync_manager.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <utility> 9 #include <utility>
10 10
(...skipping 727 matching lines...) Expand 10 before | Expand all | Expand 10 after
738 } 738 }
739 void NavigateTab(TestSyncedTabDelegate* delegate, const std::string& url) { 739 void NavigateTab(TestSyncedTabDelegate* delegate, const std::string& url) {
740 NavigateTab(delegate, url, base::Time::Now()); 740 NavigateTab(delegate, url, base::Time::Now());
741 } 741 }
742 void NavigateTab(TestSyncedTabDelegate* delegate, 742 void NavigateTab(TestSyncedTabDelegate* delegate,
743 const std::string& url, 743 const std::string& url,
744 ui::PageTransition transition) { 744 ui::PageTransition transition) {
745 NavigateTab(delegate, url, base::Time::Now(), transition); 745 NavigateTab(delegate, url, base::Time::Now(), transition);
746 } 746 }
747 747
748 void ReloadTab(TestSyncedTabDelegate* delegate, base::Time time) {
749 sessions::SerializedNavigationEntry old_entry;
750 delegate->GetSerializedNavigationAtIndex(delegate->GetCurrentEntryIndex(),
751 &old_entry);
752
753 auto new_entry =
754 base::MakeUnique<sessions::SerializedNavigationEntry>(old_entry);
755 SerializedNavigationEntryTestHelper::SetTimestamp(time, new_entry.get());
756
757 delegate->reset();
758 delegate->AppendEntry(std::move(new_entry));
759 router_->NotifyNav(delegate);
760 }
761
748 void ResetWindows() { 762 void ResetWindows() {
749 window_getter_.ClearSyncedWindowDelegates(); 763 window_getter_.ClearSyncedWindowDelegates();
750 windows_.clear(); 764 windows_.clear();
751 } 765 }
752 766
753 TestSyncedWindowDelegate* AddWindow() { 767 TestSyncedWindowDelegate* AddWindow() {
754 windows_.push_back(base::MakeUnique<TestSyncedWindowDelegate>()); 768 windows_.push_back(base::MakeUnique<TestSyncedWindowDelegate>());
755 window_getter_.AddSyncedWindowDelegate(windows_.back().get()); 769 window_getter_.AddSyncedWindowDelegate(windows_.back().get());
756 return windows_.back().get(); 770 return windows_.back().get();
757 } 771 }
(...skipping 1856 matching lines...) Expand 10 before | Expand all | Expand 10 after
2614 tab = SyncDataLocal(changes[3].sync_data()).GetSpecifics().session().tab(); 2628 tab = SyncDataLocal(changes[3].sync_data()).GetSpecifics().session().tab();
2615 EXPECT_EQ(tab.navigation_size(), 2); 2629 EXPECT_EQ(tab.navigation_size(), 2);
2616 EXPECT_EQ(tab.navigation(0).global_id(), tab.navigation(0).task_id()); 2630 EXPECT_EQ(tab.navigation(0).global_id(), tab.navigation(0).task_id());
2617 EXPECT_TRUE(tab.navigation(0).ancestor_task_id().empty()); 2631 EXPECT_TRUE(tab.navigation(0).ancestor_task_id().empty());
2618 EXPECT_EQ(tab.navigation(1).global_id(), tab.navigation(1).task_id()); 2632 EXPECT_EQ(tab.navigation(1).global_id(), tab.navigation(1).task_id());
2619 // navigation(1) is a subtask of navigation(0). 2633 // navigation(1) is a subtask of navigation(0).
2620 EXPECT_EQ(tab.navigation(1).ancestor_task_id_size(), 1); 2634 EXPECT_EQ(tab.navigation(1).ancestor_task_id_size(), 1);
2621 EXPECT_EQ(tab.navigation(1).ancestor_task_id(0), tab.navigation(0).task_id()); 2635 EXPECT_EQ(tab.navigation(1).ancestor_task_id(0), tab.navigation(0).task_id());
2622 } 2636 }
2623 2637
2638 void CaptureGlobalIdChange(int64_t* old_ptr,
2639 int64_t* new_ptr,
2640 int64_t old_id,
2641 int64_t new_id) {
2642 *old_ptr = old_id;
2643 *new_ptr = new_id;
2644 }
2645
2646 // Tests that subscribers to AddGlobalIdChangeObserver are notified when a
2647 // global_id is noticed to have been changed.
2648 TEST_F(SessionsSyncManagerTest, AddGlobalIdChangeObserver) {
2649 TestSyncedWindowDelegate* window = AddWindow();
2650 SessionID::id_type window_id = window->GetSessionId();
2651 SyncChangeList out;
2652 InitWithSyncDataTakeOutput(SyncDataList(), &out);
2653
2654 int64_t old_id = -1;
2655 int64_t new_id = -1;
2656 manager()->AddGlobalIdChangeObserver(
2657 base::Bind(&CaptureGlobalIdChange, &old_id, &new_id));
2658
2659 TestSyncedTabDelegate* tab = AddTab(window_id, kFoo1, kTime1);
2660 EXPECT_EQ(-1, old_id);
2661 EXPECT_EQ(-1, new_id);
2662
2663 ReloadTab(tab, kTime2);
2664 EXPECT_EQ(kTime1.ToInternalValue(), old_id);
2665 EXPECT_EQ(kTime2.ToInternalValue(), new_id);
2666 }
2667
2668 // Tests that GetLatestGlobalId returns correct mappings for updated global_ids.
2669 TEST_F(SessionsSyncManagerTest, GetLatestGlobalId) {
2670 TestSyncedWindowDelegate* window = AddWindow();
2671 SessionID::id_type window_id = window->GetSessionId();
2672 SyncChangeList out;
2673 InitWithSyncDataTakeOutput(SyncDataList(), &out);
2674
2675 TestSyncedTabDelegate* tab = AddTab(window_id, kFoo1, kTime1);
2676 ReloadTab(tab, kTime2);
2677 ReloadTab(tab, kTime3);
2678
2679 EXPECT_EQ(kTime3.ToInternalValue(),
2680 manager()->GetLatestGlobalId(kTime1.ToInternalValue()));
2681 EXPECT_EQ(kTime3.ToInternalValue(),
2682 manager()->GetLatestGlobalId(kTime2.ToInternalValue()));
2683 EXPECT_EQ(kTime3.ToInternalValue(),
2684 manager()->GetLatestGlobalId(kTime3.ToInternalValue()));
2685 // kTime4 is not mapped, so itself should be returned.
2686 EXPECT_EQ(kTime4.ToInternalValue(),
2687 manager()->GetLatestGlobalId(kTime4.ToInternalValue()));
2688 }
2689
2690 // Tests that the global_id mapping is eventually dropped after we reach out
2691 // threshold for the amount to remember.
2692 TEST_F(SessionsSyncManagerTest, GlobalIdMapperCleanup) {
2693 TestSyncedWindowDelegate* window = AddWindow();
2694 SessionID::id_type window_id = window->GetSessionId();
2695 SyncChangeList out;
2696 InitWithSyncDataTakeOutput(SyncDataList(), &out);
2697
2698 base::Time current_time = kTime1;
2699 TestSyncedTabDelegate* tab = AddTab(window_id, kFoo1, current_time);
2700
2701 for (int i = 0; i < 105; i++) {
Patrick Noland 2017/06/28 22:44:37 Can you reference the constant instead of 105 here
skym 2017/07/05 19:14:28 I'd prefer to not move to the constant's declarati
2702 current_time =
2703 base::Time::FromInternalValue(current_time.ToInternalValue() + 1);
2704 ReloadTab(tab, current_time);
2705 }
2706
2707 // Threshold is 100, kTime1 should be dropped, kTime1+10 should not.
2708 EXPECT_EQ(kTime1.ToInternalValue(),
2709 manager()->GetLatestGlobalId(kTime1.ToInternalValue()));
2710 EXPECT_EQ(current_time.ToInternalValue(),
2711 manager()->GetLatestGlobalId(10 + kTime1.ToInternalValue()));
2712 }
2713
2624 } // namespace sync_sessions 2714 } // namespace sync_sessions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698