| 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 |