OLD | NEW |
| (Empty) |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "chrome/browser/sync/glue/session_sync_test_helper.h" | |
6 | |
7 #include <stddef.h> | |
8 | |
9 #include "base/strings/utf_string_conversions.h" | |
10 #include "components/sync/protocol/session_specifics.pb.h" | |
11 #include "components/sync/protocol/sync_enums.pb.h" | |
12 #include "components/sync_sessions/synced_session.h" | |
13 #include "testing/gtest/include/gtest/gtest.h" | |
14 | |
15 | |
16 namespace browser_sync { | |
17 | |
18 static const char* kClientName = "name"; | |
19 static const char* kAppId = "app_id"; | |
20 static const char* kVirtualUrl = "http://foo/1"; | |
21 static const char* kReferrer = "referrer"; | |
22 static const char* kTitle = "title"; | |
23 | |
24 // static | |
25 void SessionSyncTestHelper::BuildSessionSpecifics( | |
26 const std::string& tag, | |
27 sync_pb::SessionSpecifics* meta) { | |
28 meta->set_session_tag(tag); | |
29 sync_pb::SessionHeader* header = meta->mutable_header(); | |
30 header->set_device_type(sync_pb::SyncEnums_DeviceType_TYPE_LINUX); | |
31 header->set_client_name(kClientName); | |
32 } | |
33 | |
34 // static | |
35 void SessionSyncTestHelper::AddWindowSpecifics( | |
36 int window_id, | |
37 const std::vector<int>& tab_list, | |
38 sync_pb::SessionSpecifics* meta) { | |
39 sync_pb::SessionHeader* header = meta->mutable_header(); | |
40 sync_pb::SessionWindow* window = header->add_window(); | |
41 window->set_window_id(window_id); | |
42 window->set_selected_tab_index(0); | |
43 window->set_browser_type(sync_pb::SessionWindow_BrowserType_TYPE_TABBED); | |
44 for (std::vector<int>::const_iterator iter = tab_list.begin(); | |
45 iter != tab_list.end(); ++iter) { | |
46 window->add_tab(*iter); | |
47 } | |
48 } | |
49 | |
50 // static | |
51 void SessionSyncTestHelper::VerifySyncedSession( | |
52 const std::string& tag, | |
53 const std::vector<std::vector<SessionID::id_type>>& windows, | |
54 const sync_driver::SyncedSession& session) { | |
55 ASSERT_EQ(tag, session.session_tag); | |
56 ASSERT_EQ(sync_driver::SyncedSession::TYPE_LINUX, session.device_type); | |
57 ASSERT_EQ(kClientName, session.session_name); | |
58 ASSERT_EQ(windows.size(), session.windows.size()); | |
59 | |
60 // We assume the window id's are in increasing order. | |
61 int i = 0; | |
62 for (std::vector<std::vector<int> >::const_iterator win_iter = | |
63 windows.begin(); | |
64 win_iter != windows.end(); ++win_iter, ++i) { | |
65 sessions::SessionWindow* win_ptr; | |
66 sync_driver::SyncedSession::SyncedWindowMap::const_iterator map_iter = | |
67 session.windows.find(i); | |
68 if (map_iter != session.windows.end()) | |
69 win_ptr = map_iter->second; | |
70 else | |
71 FAIL(); | |
72 ASSERT_EQ(win_iter->size(), win_ptr->tabs.size()); | |
73 ASSERT_EQ(0, win_ptr->selected_tab_index); | |
74 ASSERT_EQ(sessions::SessionWindow::TYPE_TABBED, win_ptr->type); | |
75 int j = 0; | |
76 for (std::vector<int>::const_iterator tab_iter = (*win_iter).begin(); | |
77 tab_iter != (*win_iter).end(); ++tab_iter, ++j) { | |
78 sessions::SessionTab* tab = win_ptr->tabs[j]; | |
79 ASSERT_EQ(*tab_iter, tab->tab_id.id()); | |
80 ASSERT_EQ(1U, tab->navigations.size()); | |
81 ASSERT_EQ(1, tab->tab_visual_index); | |
82 ASSERT_EQ(0, tab->current_navigation_index); | |
83 ASSERT_TRUE(tab->pinned); | |
84 ASSERT_EQ(kAppId, tab->extension_app_id); | |
85 ASSERT_EQ(1U, tab->navigations.size()); | |
86 ASSERT_EQ(tab->navigations[0].virtual_url(), GURL(kVirtualUrl)); | |
87 ASSERT_EQ(tab->navigations[0].referrer_url(), GURL(kReferrer)); | |
88 ASSERT_EQ(tab->navigations[0].title(), | |
89 base::ASCIIToUTF16(kTitle)); | |
90 ASSERT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( | |
91 tab->navigations[0].transition_type(), ui::PAGE_TRANSITION_TYPED)); | |
92 } | |
93 } | |
94 } | |
95 | |
96 void SessionSyncTestHelper::BuildTabSpecifics( | |
97 const std::string& tag, | |
98 int window_id, | |
99 int tab_id, | |
100 sync_pb::SessionSpecifics* tab_base) { | |
101 BuildTabSpecifics(tag, window_id, tab_id, ++max_tab_node_id_, tab_base); | |
102 } | |
103 | |
104 void SessionSyncTestHelper::BuildTabSpecifics( | |
105 const std::string& tag, | |
106 int window_id, | |
107 int tab_id, | |
108 int tab_node_id, | |
109 sync_pb::SessionSpecifics* tab_base) { | |
110 tab_base->set_session_tag(tag); | |
111 tab_base->set_tab_node_id(tab_node_id); | |
112 sync_pb::SessionTab* tab = tab_base->mutable_tab(); | |
113 tab->set_tab_id(tab_id); | |
114 tab->set_tab_visual_index(1); | |
115 tab->set_current_navigation_index(0); | |
116 tab->set_pinned(true); | |
117 tab->set_extension_app_id(kAppId); | |
118 sync_pb::TabNavigation* navigation = tab->add_navigation(); | |
119 navigation->set_virtual_url(kVirtualUrl); | |
120 navigation->set_referrer(kReferrer); | |
121 navigation->set_title(kTitle); | |
122 navigation->set_page_transition(sync_pb::SyncEnums_PageTransition_TYPED); | |
123 } | |
124 | |
125 void SessionSyncTestHelper::Reset() { | |
126 max_tab_node_id_ = 0; | |
127 } | |
128 | |
129 sync_pb::SessionSpecifics SessionSyncTestHelper::BuildForeignSession( | |
130 const std::string& tag, | |
131 const std::vector<SessionID::id_type>& tab_list, | |
132 std::vector<sync_pb::SessionSpecifics>* tabs) { | |
133 sync_pb::SessionSpecifics meta; | |
134 BuildSessionSpecifics(tag, &meta); | |
135 AddWindowSpecifics(0, tab_list, &meta); | |
136 std::vector<sync_pb::SessionSpecifics> tabs1; | |
137 tabs1.resize(tab_list.size()); | |
138 for (size_t i = 0; i < tab_list.size(); ++i) { | |
139 BuildTabSpecifics(tag, 0, tab_list[i], &tabs1[i]); | |
140 } | |
141 | |
142 if (tabs) | |
143 tabs->swap(tabs1); | |
144 return meta; | |
145 } | |
146 | |
147 } // namespace browser_sync | |
OLD | NEW |