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

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

Issue 2343463003: [Sync] Fix namespaces for the sync_sessions component. (Closed)
Patch Set: Fix Android. Created 4 years, 3 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 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 "components/sync_sessions/synced_session_tracker.h" 5 #include "components/sync_sessions/synced_session_tracker.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/rand_util.h" 10 #include "base/rand_util.h"
11 #include "base/strings/stringprintf.h" 11 #include "base/strings/stringprintf.h"
12 #include "base/strings/utf_string_conversions.h" 12 #include "base/strings/utf_string_conversions.h"
13 #include "components/sessions/core/serialized_navigation_entry_test_helper.h" 13 #include "components/sessions/core/serialized_navigation_entry_test_helper.h"
14 #include "components/sessions/core/session_types.h" 14 #include "components/sessions/core/session_types.h"
15 #include "components/sync_sessions/fake_sync_sessions_client.h" 15 #include "components/sync_sessions/fake_sync_sessions_client.h"
16 #include "testing/gtest/include/gtest/gtest.h" 16 #include "testing/gtest/include/gtest/gtest.h"
17 17
18 namespace browser_sync { 18 namespace sync_sessions {
19 19
20 namespace { 20 namespace {
21 21
22 const char kValidUrl[] = "http://www.example.com"; 22 const char kValidUrl[] = "http://www.example.com";
23 const char kInvalidUrl[] = "invalid.url"; 23 const char kInvalidUrl[] = "invalid.url";
24 24
25 } // namespace 25 } // namespace
26 26
27 class SyncedSessionTrackerTest : public testing::Test { 27 class SyncedSessionTrackerTest : public testing::Test {
28 public: 28 public:
29 SyncedSessionTrackerTest() : tracker_(&sessions_client_) {} 29 SyncedSessionTrackerTest() : tracker_(&sessions_client_) {}
30 ~SyncedSessionTrackerTest() override {} 30 ~SyncedSessionTrackerTest() override {}
31 31
32 SyncedSessionTracker* GetTracker() { return &tracker_; } 32 SyncedSessionTracker* GetTracker() { return &tracker_; }
33 33
34 private: 34 private:
35 sync_sessions::FakeSyncSessionsClient sessions_client_; 35 FakeSyncSessionsClient sessions_client_;
36 SyncedSessionTracker tracker_; 36 SyncedSessionTracker tracker_;
37 }; 37 };
38 38
39 TEST_F(SyncedSessionTrackerTest, GetSession) { 39 TEST_F(SyncedSessionTrackerTest, GetSession) {
40 sync_driver::SyncedSession* session1 = GetTracker()->GetSession("tag"); 40 SyncedSession* session1 = GetTracker()->GetSession("tag");
41 sync_driver::SyncedSession* session2 = GetTracker()->GetSession("tag2"); 41 SyncedSession* session2 = GetTracker()->GetSession("tag2");
42 ASSERT_EQ(session1, GetTracker()->GetSession("tag")); 42 ASSERT_EQ(session1, GetTracker()->GetSession("tag"));
43 ASSERT_NE(session1, session2); 43 ASSERT_NE(session1, session2);
44 // Should clean up memory on its own. 44 // Should clean up memory on its own.
45 } 45 }
46 46
47 TEST_F(SyncedSessionTrackerTest, GetTabUnmapped) { 47 TEST_F(SyncedSessionTrackerTest, GetTabUnmapped) {
48 sessions::SessionTab* tab = GetTracker()->GetTab("tag", 0, 0); 48 sessions::SessionTab* tab = GetTracker()->GetTab("tag", 0, 0);
49 ASSERT_EQ(tab, GetTracker()->GetTab("tag", 0, 0)); 49 ASSERT_EQ(tab, GetTracker()->GetTab("tag", 0, 0));
50 // Should clean up memory on its own. 50 // Should clean up memory on its own.
51 } 51 }
52 52
53 TEST_F(SyncedSessionTrackerTest, PutWindowInSession) { 53 TEST_F(SyncedSessionTrackerTest, PutWindowInSession) {
54 GetTracker()->PutWindowInSession("tag", 0); 54 GetTracker()->PutWindowInSession("tag", 0);
55 sync_driver::SyncedSession* session = GetTracker()->GetSession("tag"); 55 SyncedSession* session = GetTracker()->GetSession("tag");
56 ASSERT_EQ(1U, session->windows.size()); 56 ASSERT_EQ(1U, session->windows.size());
57 // Should clean up memory on its own. 57 // Should clean up memory on its own.
58 } 58 }
59 59
60 TEST_F(SyncedSessionTrackerTest, PutTabInWindow) { 60 TEST_F(SyncedSessionTrackerTest, PutTabInWindow) {
61 GetTracker()->PutWindowInSession("tag", 10); 61 GetTracker()->PutWindowInSession("tag", 10);
62 GetTracker()->PutTabInWindow("tag", 10, 15, 62 GetTracker()->PutTabInWindow("tag", 10, 15,
63 0); // win id 10, tab id 15, tab ind 0. 63 0); // win id 10, tab id 15, tab ind 0.
64 sync_driver::SyncedSession* session = GetTracker()->GetSession("tag"); 64 SyncedSession* session = GetTracker()->GetSession("tag");
65 ASSERT_EQ(1U, session->windows.size()); 65 ASSERT_EQ(1U, session->windows.size());
66 ASSERT_EQ(1U, session->windows[10]->tabs.size()); 66 ASSERT_EQ(1U, session->windows[10]->tabs.size());
67 ASSERT_EQ(GetTracker()->GetTab("tag", 15, 1), session->windows[10]->tabs[0]); 67 ASSERT_EQ(GetTracker()->GetTab("tag", 15, 1), session->windows[10]->tabs[0]);
68 // Should clean up memory on its own. 68 // Should clean up memory on its own.
69 } 69 }
70 70
71 TEST_F(SyncedSessionTrackerTest, LookupAllForeignSessions) { 71 TEST_F(SyncedSessionTrackerTest, LookupAllForeignSessions) {
72 std::vector<const sync_driver::SyncedSession*> sessions; 72 std::vector<const SyncedSession*> sessions;
73 ASSERT_FALSE(GetTracker()->LookupAllForeignSessions( 73 ASSERT_FALSE(GetTracker()->LookupAllForeignSessions(
74 &sessions, SyncedSessionTracker::PRESENTABLE)); 74 &sessions, SyncedSessionTracker::PRESENTABLE));
75 GetTracker()->GetSession("tag1"); 75 GetTracker()->GetSession("tag1");
76 GetTracker()->PutWindowInSession("tag1", 0); 76 GetTracker()->PutWindowInSession("tag1", 0);
77 GetTracker()->PutTabInWindow("tag1", 0, 15, 0); 77 GetTracker()->PutTabInWindow("tag1", 0, 15, 0);
78 sessions::SessionTab* tab = GetTracker()->GetTab("tag1", 15, 1); 78 sessions::SessionTab* tab = GetTracker()->GetTab("tag1", 15, 1);
79 ASSERT_TRUE(tab); 79 ASSERT_TRUE(tab);
80 tab->navigations.push_back( 80 tab->navigations.push_back(
81 sessions::SerializedNavigationEntryTestHelper::CreateNavigation(kValidUrl, 81 sessions::SerializedNavigationEntryTestHelper::CreateNavigation(kValidUrl,
82 "title")); 82 "title"));
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 ASSERT_EQ(1U, GetTracker()->num_synced_sessions()); 142 ASSERT_EQ(1U, GetTracker()->num_synced_sessions());
143 temp_tab = GetTracker()->GetTab(tag1, 0, 0); // Already created. 143 temp_tab = GetTracker()->GetTab(tag1, 0, 0); // Already created.
144 ASSERT_EQ(3U, GetTracker()->num_synced_tabs(tag1)); 144 ASSERT_EQ(3U, GetTracker()->num_synced_tabs(tag1));
145 ASSERT_EQ(1U, GetTracker()->num_synced_sessions()); 145 ASSERT_EQ(1U, GetTracker()->num_synced_sessions());
146 ASSERT_EQ(tabs1[0], temp_tab); 146 ASSERT_EQ(tabs1[0], temp_tab);
147 tabs2.push_back(GetTracker()->GetTab(tag2, 0, 0)); 147 tabs2.push_back(GetTracker()->GetTab(tag2, 0, 0));
148 ASSERT_EQ(1U, GetTracker()->num_synced_tabs(tag2)); 148 ASSERT_EQ(1U, GetTracker()->num_synced_tabs(tag2));
149 ASSERT_EQ(2U, GetTracker()->num_synced_sessions()); 149 ASSERT_EQ(2U, GetTracker()->num_synced_sessions());
150 ASSERT_FALSE(GetTracker()->DeleteSession(tag3)); 150 ASSERT_FALSE(GetTracker()->DeleteSession(tag3));
151 151
152 sync_driver::SyncedSession* session = GetTracker()->GetSession(tag1); 152 SyncedSession* session = GetTracker()->GetSession(tag1);
153 sync_driver::SyncedSession* session2 = GetTracker()->GetSession(tag2); 153 SyncedSession* session2 = GetTracker()->GetSession(tag2);
154 sync_driver::SyncedSession* session3 = GetTracker()->GetSession(tag3); 154 SyncedSession* session3 = GetTracker()->GetSession(tag3);
155 session3->device_type = sync_driver::SyncedSession::TYPE_OTHER; 155 session3->device_type = SyncedSession::TYPE_OTHER;
156 ASSERT_EQ(3U, GetTracker()->num_synced_sessions()); 156 ASSERT_EQ(3U, GetTracker()->num_synced_sessions());
157 157
158 ASSERT_TRUE(session); 158 ASSERT_TRUE(session);
159 ASSERT_TRUE(session2); 159 ASSERT_TRUE(session2);
160 ASSERT_TRUE(session3); 160 ASSERT_TRUE(session3);
161 ASSERT_NE(session, session2); 161 ASSERT_NE(session, session2);
162 ASSERT_NE(session2, session3); 162 ASSERT_NE(session2, session3);
163 ASSERT_TRUE(GetTracker()->DeleteSession(tag3)); 163 ASSERT_TRUE(GetTracker()->DeleteSession(tag3));
164 ASSERT_EQ(2U, GetTracker()->num_synced_sessions()); 164 ASSERT_EQ(2U, GetTracker()->num_synced_sessions());
165 165
166 GetTracker()->PutWindowInSession(tag1, 0); // Create a window. 166 GetTracker()->PutWindowInSession(tag1, 0); // Create a window.
167 GetTracker()->PutTabInWindow(tag1, 0, 2, 0); // No longer unmapped. 167 GetTracker()->PutTabInWindow(tag1, 0, 2, 0); // No longer unmapped.
168 ASSERT_EQ(3U, GetTracker()->num_synced_tabs(tag1)); // Has not changed. 168 ASSERT_EQ(3U, GetTracker()->num_synced_tabs(tag1)); // Has not changed.
169 169
170 const sessions::SessionTab* tab_ptr; 170 const sessions::SessionTab* tab_ptr;
171 ASSERT_TRUE(GetTracker()->LookupSessionTab(tag1, 0, &tab_ptr)); 171 ASSERT_TRUE(GetTracker()->LookupSessionTab(tag1, 0, &tab_ptr));
172 ASSERT_EQ(tab_ptr, tabs1[0]); 172 ASSERT_EQ(tab_ptr, tabs1[0]);
173 ASSERT_TRUE(GetTracker()->LookupSessionTab(tag1, 2, &tab_ptr)); 173 ASSERT_TRUE(GetTracker()->LookupSessionTab(tag1, 2, &tab_ptr));
174 ASSERT_EQ(tab_ptr, tabs1[2]); 174 ASSERT_EQ(tab_ptr, tabs1[2]);
175 ASSERT_FALSE(GetTracker()->LookupSessionTab(tag1, 3, &tab_ptr)); 175 ASSERT_FALSE(GetTracker()->LookupSessionTab(tag1, 3, &tab_ptr));
176 ASSERT_FALSE(tab_ptr); 176 ASSERT_FALSE(tab_ptr);
177 177
178 std::vector<const sessions::SessionWindow*> windows; 178 std::vector<const sessions::SessionWindow*> windows;
179 ASSERT_TRUE(GetTracker()->LookupSessionWindows(tag1, &windows)); 179 ASSERT_TRUE(GetTracker()->LookupSessionWindows(tag1, &windows));
180 ASSERT_EQ(1U, windows.size()); 180 ASSERT_EQ(1U, windows.size());
181 ASSERT_TRUE(GetTracker()->LookupSessionWindows(tag2, &windows)); 181 ASSERT_TRUE(GetTracker()->LookupSessionWindows(tag2, &windows));
182 ASSERT_EQ(0U, windows.size()); 182 ASSERT_EQ(0U, windows.size());
183 183
184 // The sessions don't have valid tabs, lookup should not succeed. 184 // The sessions don't have valid tabs, lookup should not succeed.
185 std::vector<const sync_driver::SyncedSession*> sessions; 185 std::vector<const SyncedSession*> sessions;
186 ASSERT_FALSE(GetTracker()->LookupAllForeignSessions( 186 ASSERT_FALSE(GetTracker()->LookupAllForeignSessions(
187 &sessions, SyncedSessionTracker::PRESENTABLE)); 187 &sessions, SyncedSessionTracker::PRESENTABLE));
188 ASSERT_TRUE(GetTracker()->LookupAllForeignSessions( 188 ASSERT_TRUE(GetTracker()->LookupAllForeignSessions(
189 &sessions, SyncedSessionTracker::RAW)); 189 &sessions, SyncedSessionTracker::RAW));
190 ASSERT_EQ(2U, sessions.size()); 190 ASSERT_EQ(2U, sessions.size());
191 191
192 GetTracker()->Clear(); 192 GetTracker()->Clear();
193 ASSERT_EQ(0U, GetTracker()->num_synced_tabs(tag1)); 193 ASSERT_EQ(0U, GetTracker()->num_synced_tabs(tag1));
194 ASSERT_EQ(0U, GetTracker()->num_synced_tabs(tag2)); 194 ASSERT_EQ(0U, GetTracker()->num_synced_tabs(tag2));
195 ASSERT_EQ(0U, GetTracker()->num_synced_sessions()); 195 ASSERT_EQ(0U, GetTracker()->num_synced_sessions());
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 GetTracker()->LookupTabNodeIds(tag2, &result); 279 GetTracker()->LookupTabNodeIds(tag2, &result);
280 EXPECT_TRUE(result.empty()); 280 EXPECT_TRUE(result.empty());
281 } 281 }
282 282
283 TEST_F(SyncedSessionTrackerTest, SessionTracking) { 283 TEST_F(SyncedSessionTrackerTest, SessionTracking) {
284 ASSERT_TRUE(GetTracker()->Empty()); 284 ASSERT_TRUE(GetTracker()->Empty());
285 std::string tag1 = "tag1"; 285 std::string tag1 = "tag1";
286 std::string tag2 = "tag2"; 286 std::string tag2 = "tag2";
287 287
288 // Create some session information that is stale. 288 // Create some session information that is stale.
289 sync_driver::SyncedSession* session1 = GetTracker()->GetSession(tag1); 289 SyncedSession* session1 = GetTracker()->GetSession(tag1);
290 GetTracker()->PutWindowInSession(tag1, 0); 290 GetTracker()->PutWindowInSession(tag1, 0);
291 GetTracker()->PutTabInWindow(tag1, 0, 0, 0); 291 GetTracker()->PutTabInWindow(tag1, 0, 0, 0);
292 GetTracker()->PutTabInWindow(tag1, 0, 1, 1); 292 GetTracker()->PutTabInWindow(tag1, 0, 1, 1);
293 GetTracker()->GetTab(tag1, 2, 3U)->window_id.set_id(0); // Will be unmapped. 293 GetTracker()->GetTab(tag1, 2, 3U)->window_id.set_id(0); // Will be unmapped.
294 GetTracker()->GetTab(tag1, 3, 4U)->window_id.set_id(0); // Will be unmapped. 294 GetTracker()->GetTab(tag1, 3, 4U)->window_id.set_id(0); // Will be unmapped.
295 GetTracker()->PutWindowInSession(tag1, 1); 295 GetTracker()->PutWindowInSession(tag1, 1);
296 GetTracker()->PutTabInWindow(tag1, 1, 4, 0); 296 GetTracker()->PutTabInWindow(tag1, 1, 4, 0);
297 GetTracker()->PutTabInWindow(tag1, 1, 5, 1); 297 GetTracker()->PutTabInWindow(tag1, 1, 5, 1);
298 ASSERT_EQ(2U, session1->windows.size()); 298 ASSERT_EQ(2U, session1->windows.size());
299 ASSERT_EQ(2U, session1->windows[0]->tabs.size()); 299 ASSERT_EQ(2U, session1->windows[0]->tabs.size());
300 ASSERT_EQ(2U, session1->windows[1]->tabs.size()); 300 ASSERT_EQ(2U, session1->windows[1]->tabs.size());
301 ASSERT_EQ(6U, GetTracker()->num_synced_tabs(tag1)); 301 ASSERT_EQ(6U, GetTracker()->num_synced_tabs(tag1));
302 302
303 // Create a session that should not be affected. 303 // Create a session that should not be affected.
304 sync_driver::SyncedSession* session2 = GetTracker()->GetSession(tag2); 304 SyncedSession* session2 = GetTracker()->GetSession(tag2);
305 GetTracker()->PutWindowInSession(tag2, 2); 305 GetTracker()->PutWindowInSession(tag2, 2);
306 GetTracker()->PutTabInWindow(tag2, 2, 1, 0); 306 GetTracker()->PutTabInWindow(tag2, 2, 1, 0);
307 ASSERT_EQ(1U, session2->windows.size()); 307 ASSERT_EQ(1U, session2->windows.size());
308 ASSERT_EQ(1U, session2->windows[2]->tabs.size()); 308 ASSERT_EQ(1U, session2->windows[2]->tabs.size());
309 ASSERT_EQ(1U, GetTracker()->num_synced_tabs(tag2)); 309 ASSERT_EQ(1U, GetTracker()->num_synced_tabs(tag2));
310 310
311 // Reset tracking and get the current windows/tabs. 311 // Reset tracking and get the current windows/tabs.
312 // We simulate moving a tab from one window to another, then closing the 312 // We simulate moving a tab from one window to another, then closing the
313 // first window (including its one remaining tab), and opening a new tab 313 // first window (including its one remaining tab), and opening a new tab
314 // on the remaining window. 314 // on the remaining window.
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 GetTracker()->DeleteForeignTab(session_tag, tab_node_id_3); 361 GetTracker()->DeleteForeignTab(session_tag, tab_node_id_3);
362 GetTracker()->LookupTabNodeIds(session_tag, &result); 362 GetTracker()->LookupTabNodeIds(session_tag, &result);
363 EXPECT_EQ(1U, result.size()); 363 EXPECT_EQ(1U, result.size());
364 EXPECT_TRUE(result.find(tab_node_id_4) != result.end()); 364 EXPECT_TRUE(result.find(tab_node_id_4) != result.end());
365 365
366 GetTracker()->DeleteForeignTab(session_tag, tab_node_id_4); 366 GetTracker()->DeleteForeignTab(session_tag, tab_node_id_4);
367 GetTracker()->LookupTabNodeIds(session_tag, &result); 367 GetTracker()->LookupTabNodeIds(session_tag, &result);
368 EXPECT_TRUE(result.empty()); 368 EXPECT_TRUE(result.empty());
369 } 369 }
370 370
371 } // namespace browser_sync 371 } // namespace sync_sessions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698