blob: f43f620f1c0d2fcf6e5fe9e9b3b9563f13c97c28 [file] [log] [blame]
[email protected]f5456872013-09-27 17:56:421// 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
maxboguea79d99b72016-09-15 15:59:165#include "components/sync_sessions/session_sync_test_helper.h"
[email protected]f5456872013-09-27 17:56:426
avi664c07b2015-12-26 02:18:317#include <stddef.h>
8
[email protected]f5456872013-09-27 17:56:429#include "base/strings/utf_string_conversions.h"
Max Boguefef332d2016-07-28 22:09:0910#include "components/sync/protocol/session_specifics.pb.h"
11#include "components/sync/protocol/sync_enums.pb.h"
maxbogue8ef25082015-11-16 19:09:5812#include "components/sync_sessions/synced_session.h"
[email protected]f5456872013-09-27 17:56:4213#include "testing/gtest/include/gtest/gtest.h"
14
maxboguea79d99b72016-09-15 15:59:1615namespace sync_sessions {
[email protected]f5456872013-09-27 17:56:4216
17static const char* kClientName = "name";
18static const char* kAppId = "app_id";
19static const char* kVirtualUrl = "http://foo/1";
20static const char* kReferrer = "referrer";
21static const char* kTitle = "title";
22
23// static
24void SessionSyncTestHelper::BuildSessionSpecifics(
25 const std::string& tag,
26 sync_pb::SessionSpecifics* meta) {
27 meta->set_session_tag(tag);
28 sync_pb::SessionHeader* header = meta->mutable_header();
29 header->set_device_type(sync_pb::SyncEnums_DeviceType_TYPE_LINUX);
30 header->set_client_name(kClientName);
31}
32
33// static
34void SessionSyncTestHelper::AddWindowSpecifics(
Mikel Astize023c572018-03-28 07:56:5635 SessionID window_id,
36 const std::vector<SessionID>& tab_list,
[email protected]f5456872013-09-27 17:56:4237 sync_pb::SessionSpecifics* meta) {
38 sync_pb::SessionHeader* header = meta->mutable_header();
39 sync_pb::SessionWindow* window = header->add_window();
Mikel Astize023c572018-03-28 07:56:5640 window->set_window_id(window_id.id());
[email protected]f5456872013-09-27 17:56:4241 window->set_selected_tab_index(0);
42 window->set_browser_type(sync_pb::SessionWindow_BrowserType_TYPE_TABBED);
Victor Hugo Vianna Silva988fe7322021-09-23 18:16:5643 for (const SessionID& tab_id : tab_list) {
44 window->add_tab(tab_id.id());
[email protected]f5456872013-09-27 17:56:4245 }
46}
47
48// static
49void SessionSyncTestHelper::VerifySyncedSession(
50 const std::string& tag,
Mikel Astize023c572018-03-28 07:56:5651 const std::vector<std::vector<SessionID>>& windows,
maxboguea79d99b72016-09-15 15:59:1652 const SyncedSession& session) {
[email protected]f5456872013-09-27 17:56:4253 ASSERT_EQ(tag, session.session_tag);
Mikel Astiz35fd82bf2018-02-19 12:47:1354 ASSERT_EQ(sync_pb::SyncEnums_DeviceType_TYPE_LINUX, session.device_type);
[email protected]f5456872013-09-27 17:56:4255 ASSERT_EQ(kClientName, session.session_name);
56 ASSERT_EQ(windows.size(), session.windows.size());
57
58 // We assume the window id's are in increasing order.
Mikel Astize023c572018-03-28 07:56:5659 int i = 1;
60 for (auto win_iter = windows.begin(); win_iter != windows.end();
61 ++win_iter, ++i) {
skuhneb7409dcf2014-11-14 04:06:5562 sessions::SessionWindow* win_ptr;
Mikel Astize023c572018-03-28 07:56:5663 auto map_iter = session.windows.find(SessionID::FromSerializedValue(i));
[email protected]f5456872013-09-27 17:56:4264 if (map_iter != session.windows.end())
zea325508e2017-03-29 20:11:2265 win_ptr = &map_iter->second->wrapped_window;
[email protected]f5456872013-09-27 17:56:4266 else
67 FAIL();
68 ASSERT_EQ(win_iter->size(), win_ptr->tabs.size());
69 ASSERT_EQ(0, win_ptr->selected_tab_index);
Joel Hockey2687ab52019-08-14 23:59:4670 ASSERT_EQ(sessions::SessionWindow::TYPE_NORMAL, win_ptr->type);
[email protected]f5456872013-09-27 17:56:4271 int j = 0;
avi498cabca2016-09-21 19:03:5072 for (auto tab_iter = (*win_iter).begin(); tab_iter != (*win_iter).end();
73 ++tab_iter, ++j) {
74 sessions::SessionTab* tab = win_ptr->tabs[j].get();
Mikel Astize023c572018-03-28 07:56:5675 ASSERT_EQ(*tab_iter, tab->tab_id);
[email protected]f5456872013-09-27 17:56:4276 ASSERT_EQ(1U, tab->navigations.size());
77 ASSERT_EQ(1, tab->tab_visual_index);
78 ASSERT_EQ(0, tab->current_navigation_index);
79 ASSERT_TRUE(tab->pinned);
80 ASSERT_EQ(kAppId, tab->extension_app_id);
81 ASSERT_EQ(1U, tab->navigations.size());
82 ASSERT_EQ(tab->navigations[0].virtual_url(), GURL(kVirtualUrl));
rohitraoc6d8e7402014-10-20 21:52:0083 ASSERT_EQ(tab->navigations[0].referrer_url(), GURL(kReferrer));
maxboguea79d99b72016-09-15 15:59:1684 ASSERT_EQ(tab->navigations[0].title(), base::ASCIIToUTF16(kTitle));
mastiz7eddb5f72016-06-23 09:52:4585 ASSERT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
86 tab->navigations[0].transition_type(), ui::PAGE_TRANSITION_TYPED));
[email protected]f5456872013-09-27 17:56:4287 }
88 }
89}
90
Mikel Astiz8c8ca812018-12-03 13:31:0591sync_pb::SessionSpecifics SessionSyncTestHelper::BuildTabSpecifics(
[email protected]f5456872013-09-27 17:56:4292 const std::string& tag,
Mikel Astize023c572018-03-28 07:56:5693 SessionID window_id,
Mikel Astiz8c8ca812018-12-03 13:31:0594 SessionID tab_id) {
95 return BuildTabSpecifics(tag, window_id, tab_id, ++max_tab_node_id_);
skym199c7fd2016-04-14 19:26:4296}
97
Mikel Astiz8c8ca812018-12-03 13:31:0598sync_pb::SessionSpecifics SessionSyncTestHelper::BuildTabSpecifics(
skym199c7fd2016-04-14 19:26:4299 const std::string& tag,
Mikel Astize023c572018-03-28 07:56:56100 SessionID window_id,
101 SessionID tab_id,
Mikel Astiz8c8ca812018-12-03 13:31:05102 int tab_node_id) {
103 sync_pb::SessionSpecifics specifics;
104 specifics.set_session_tag(tag);
105 specifics.set_tab_node_id(tab_node_id);
106 sync_pb::SessionTab* tab = specifics.mutable_tab();
Mikel Astize023c572018-03-28 07:56:56107 tab->set_tab_id(tab_id.id());
[email protected]f5456872013-09-27 17:56:42108 tab->set_tab_visual_index(1);
109 tab->set_current_navigation_index(0);
110 tab->set_pinned(true);
111 tab->set_extension_app_id(kAppId);
112 sync_pb::TabNavigation* navigation = tab->add_navigation();
113 navigation->set_virtual_url(kVirtualUrl);
114 navigation->set_referrer(kReferrer);
115 navigation->set_title(kTitle);
116 navigation->set_page_transition(sync_pb::SyncEnums_PageTransition_TYPED);
Mikel Astiz8c8ca812018-12-03 13:31:05117 return specifics;
[email protected]f5456872013-09-27 17:56:42118}
119
120void SessionSyncTestHelper::Reset() {
121 max_tab_node_id_ = 0;
122}
123
124sync_pb::SessionSpecifics SessionSyncTestHelper::BuildForeignSession(
125 const std::string& tag,
Mikel Astize023c572018-03-28 07:56:56126 const std::vector<SessionID>& tab_list,
[email protected]f5456872013-09-27 17:56:42127 std::vector<sync_pb::SessionSpecifics>* tabs) {
Mikel Astiz8c8ca812018-12-03 13:31:05128 const SessionID window_id = SessionID::FromSerializedValue(1);
129 sync_pb::SessionSpecifics header;
130 BuildSessionSpecifics(tag, &header);
131 AddWindowSpecifics(window_id, tab_list, &header);
132
133 if (tabs) {
134 tabs->clear();
135 for (SessionID tab_id : tab_list) {
136 tabs->push_back(BuildTabSpecifics(tag, window_id, tab_id));
137 }
[email protected]f5456872013-09-27 17:56:42138 }
139
Mikel Astiz8c8ca812018-12-03 13:31:05140 return header;
[email protected]f5456872013-09-27 17:56:42141}
142
maxboguea79d99b72016-09-15 15:59:16143} // namespace sync_sessions