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

Side by Side Diff: components/sessions/serialized_navigation_entry_unittest.cc

Issue 14497003: Moves TabNavigation into components/sessions and renames (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Really remove webkit_support Created 7 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/sessions/serialized_navigation_entry.h"
6
5 #include <cstddef> 7 #include <cstddef>
6 #include <string> 8 #include <string>
7 9
8 #include "base/basictypes.h" 10 #include "base/basictypes.h"
9 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
10 #include "base/pickle.h" 12 #include "base/pickle.h"
11 #include "base/string16.h" 13 #include "base/string16.h"
12 #include "base/strings/string_number_conversions.h" 14 #include "base/strings/string_number_conversions.h"
13 #include "base/time.h" 15 #include "base/time.h"
14 #include "base/utf_string_conversions.h" 16 #include "base/utf_string_conversions.h"
15 #include "chrome/browser/search/search.h"
16 #include "chrome/browser/sessions/session_types.h"
17 #include "chrome/browser/sessions/session_types_test_helper.h"
18 #include "content/public/browser/favicon_status.h" 17 #include "content/public/browser/favicon_status.h"
19 #include "content/public/browser/navigation_entry.h" 18 #include "content/public/browser/navigation_entry.h"
20 #include "content/public/common/page_transition_types.h" 19 #include "content/public/common/page_transition_types.h"
21 #include "content/public/common/referrer.h" 20 #include "content/public/common/referrer.h"
22 #include "googleurl/src/gurl.h" 21 #include "googleurl/src/gurl.h"
23 #include "sync/protocol/session_specifics.pb.h" 22 #include "sync/protocol/session_specifics.pb.h"
24 #include "sync/util/time.h" 23 #include "sync/util/time.h"
25 #include "testing/gtest/include/gtest/gtest.h" 24 #include "testing/gtest/include/gtest/gtest.h"
26 #include "third_party/WebKit/Source/Platform/chromium/public/WebReferrerPolicy.h " 25 #include "third_party/WebKit/Source/Platform/chromium/public/WebReferrerPolicy.h "
27 26
27 namespace sessions {
28 namespace { 28 namespace {
29 29
30 const int kIndex = 3; 30 const int kIndex = 3;
31 const int kUniqueID = 50; 31 const int kUniqueID = 50;
32 const content::Referrer kReferrer = 32 const content::Referrer kReferrer =
33 content::Referrer(GURL("http://www.referrer.com"), 33 content::Referrer(GURL("http://www.referrer.com"),
34 WebKit::WebReferrerPolicyAlways); 34 WebKit::WebReferrerPolicyAlways);
35 const GURL kVirtualURL("http://www.virtual-url.com"); 35 const GURL kVirtualURL("http://www.virtual-url.com");
36 const string16 kTitle = ASCIIToUTF16("title"); 36 const string16 kTitle = ASCIIToUTF16("title");
37 const std::string kContentState = "content state"; 37 const std::string kContentState = "content state";
(...skipping 19 matching lines...) Expand all
57 navigation_entry->SetReferrer(kReferrer); 57 navigation_entry->SetReferrer(kReferrer);
58 navigation_entry->SetVirtualURL(kVirtualURL); 58 navigation_entry->SetVirtualURL(kVirtualURL);
59 navigation_entry->SetTitle(kTitle); 59 navigation_entry->SetTitle(kTitle);
60 navigation_entry->SetContentState(kContentState); 60 navigation_entry->SetContentState(kContentState);
61 navigation_entry->SetTransitionType(kTransitionType); 61 navigation_entry->SetTransitionType(kTransitionType);
62 navigation_entry->SetHasPostData(kHasPostData); 62 navigation_entry->SetHasPostData(kHasPostData);
63 navigation_entry->SetPostID(kPostID); 63 navigation_entry->SetPostID(kPostID);
64 navigation_entry->SetOriginalRequestURL(kOriginalRequestURL); 64 navigation_entry->SetOriginalRequestURL(kOriginalRequestURL);
65 navigation_entry->SetIsOverridingUserAgent(kIsOverridingUserAgent); 65 navigation_entry->SetIsOverridingUserAgent(kIsOverridingUserAgent);
66 navigation_entry->SetTimestamp(kTimestamp); 66 navigation_entry->SetTimestamp(kTimestamp);
67 navigation_entry->SetExtraData( 67 navigation_entry->SetExtraData(kSearchTermsKey, kSearchTerms);
68 chrome::kInstantExtendedSearchTermsKey, kSearchTerms);
69 navigation_entry->GetFavicon().valid = true; 68 navigation_entry->GetFavicon().valid = true;
70 navigation_entry->GetFavicon().url = kFaviconURL; 69 navigation_entry->GetFavicon().url = kFaviconURL;
71 return navigation_entry.Pass(); 70 return navigation_entry.Pass();
72 } 71 }
73 72
74 // Create a sync_pb::TabNavigation from the constants above. 73 // Create a sync_pb::TabNavigation from the constants above.
75 sync_pb::TabNavigation MakeSyncDataForTest() { 74 sync_pb::TabNavigation MakeSyncDataForTest() {
76 sync_pb::TabNavigation sync_data; 75 sync_pb::TabNavigation sync_data;
77 sync_data.set_virtual_url(kVirtualURL.spec()); 76 sync_data.set_virtual_url(kVirtualURL.spec());
78 sync_data.set_referrer(kReferrer.url.spec()); 77 sync_data.set_referrer(kReferrer.url.spec());
79 sync_data.set_title(UTF16ToUTF8(kTitle)); 78 sync_data.set_title(UTF16ToUTF8(kTitle));
80 sync_data.set_state(kContentState); 79 sync_data.set_state(kContentState);
81 sync_data.set_page_transition( 80 sync_data.set_page_transition(
82 sync_pb::SyncEnums_PageTransition_AUTO_SUBFRAME); 81 sync_pb::SyncEnums_PageTransition_AUTO_SUBFRAME);
83 sync_data.set_unique_id(kUniqueID); 82 sync_data.set_unique_id(kUniqueID);
84 sync_data.set_timestamp_msec(syncer::TimeToProtoTime(kTimestamp)); 83 sync_data.set_timestamp_msec(syncer::TimeToProtoTime(kTimestamp));
85 sync_data.set_redirect_type(sync_pb::SyncEnums::CLIENT_REDIRECT); 84 sync_data.set_redirect_type(sync_pb::SyncEnums::CLIENT_REDIRECT);
86 sync_data.set_navigation_home_page(true); 85 sync_data.set_navigation_home_page(true);
87 sync_data.set_search_terms(UTF16ToUTF8(kSearchTerms)); 86 sync_data.set_search_terms(UTF16ToUTF8(kSearchTerms));
88 sync_data.set_favicon_url(kFaviconURL.spec()); 87 sync_data.set_favicon_url(kFaviconURL.spec());
89 return sync_data; 88 return sync_data;
90 } 89 }
91 90
92 // Create a default TabNavigation. All its fields should be 91 // Create a default SerializedNavigationEntry. All its fields should be
93 // initialized to their respective default values. 92 // initialized to their respective default values.
94 TEST(TabNavigationTest, DefaultInitializer) { 93 TEST(SerializedNavigationEntryTest, DefaultInitializer) {
95 const TabNavigation navigation; 94 const SerializedNavigationEntry navigation;
96 EXPECT_EQ(-1, navigation.index()); 95 EXPECT_EQ(-1, navigation.index());
97 EXPECT_EQ(0, navigation.unique_id()); 96 EXPECT_EQ(0, navigation.unique_id());
98 EXPECT_EQ(GURL(), SessionTypesTestHelper::GetReferrer(navigation).url); 97 EXPECT_EQ(GURL(), navigation.referrer().url);
99 EXPECT_EQ(WebKit::WebReferrerPolicyDefault, 98 EXPECT_EQ(WebKit::WebReferrerPolicyDefault, navigation.referrer().policy);
100 SessionTypesTestHelper::GetReferrer(navigation).policy);
101 EXPECT_EQ(GURL(), navigation.virtual_url()); 99 EXPECT_EQ(GURL(), navigation.virtual_url());
102 EXPECT_TRUE(navigation.title().empty()); 100 EXPECT_TRUE(navigation.title().empty());
103 EXPECT_TRUE(navigation.content_state().empty()); 101 EXPECT_TRUE(navigation.content_state().empty());
104 EXPECT_EQ(content::PAGE_TRANSITION_TYPED, 102 EXPECT_EQ(content::PAGE_TRANSITION_TYPED, navigation.transition_type());
105 SessionTypesTestHelper::GetTransitionType(navigation)); 103 EXPECT_FALSE(navigation.has_post_data());
106 EXPECT_FALSE(SessionTypesTestHelper::GetHasPostData(navigation)); 104 EXPECT_EQ(-1, navigation.post_id());
107 EXPECT_EQ(-1, SessionTypesTestHelper::GetPostID(navigation)); 105 EXPECT_EQ(GURL(), navigation.original_request_url());
108 EXPECT_EQ(GURL(), SessionTypesTestHelper::GetOriginalRequestURL(navigation)); 106 EXPECT_FALSE(navigation.is_overriding_user_agent());
109 EXPECT_FALSE(SessionTypesTestHelper::GetIsOverridingUserAgent(navigation)); 107 EXPECT_TRUE(navigation.timestamp().is_null());
110 EXPECT_TRUE(SessionTypesTestHelper::GetTimestamp(navigation).is_null());
111 EXPECT_TRUE(navigation.search_terms().empty()); 108 EXPECT_TRUE(navigation.search_terms().empty());
112 EXPECT_FALSE(navigation.favicon_url().is_valid()); 109 EXPECT_FALSE(navigation.favicon_url().is_valid());
113 } 110 }
114 111
115 // Create a TabNavigation from a NavigationEntry. All its fields 112 // Create a SerializedNavigationEntry from a NavigationEntry. All its fields
116 // should match the NavigationEntry's. 113 // should match the NavigationEntry's.
117 TEST(TabNavigationTest, FromNavigationEntry) { 114 TEST(SerializedNavigationEntryTest, FromNavigationEntry) {
118 const scoped_ptr<content::NavigationEntry> navigation_entry( 115 const scoped_ptr<content::NavigationEntry> navigation_entry(
119 MakeNavigationEntryForTest()); 116 MakeNavigationEntryForTest());
120 117
121 const TabNavigation& navigation = 118 const SerializedNavigationEntry& navigation =
122 TabNavigation::FromNavigationEntry(kIndex, *navigation_entry); 119 SerializedNavigationEntry::FromNavigationEntry(kIndex, *navigation_entry);
123 120
124 EXPECT_EQ(kIndex, navigation.index()); 121 EXPECT_EQ(kIndex, navigation.index());
125 122
126 EXPECT_EQ(navigation_entry->GetUniqueID(), navigation.unique_id()); 123 EXPECT_EQ(navigation_entry->GetUniqueID(), navigation.unique_id());
127 EXPECT_EQ(kReferrer.url, 124 EXPECT_EQ(kReferrer.url, navigation.referrer().url);
128 SessionTypesTestHelper::GetReferrer(navigation).url); 125 EXPECT_EQ(kReferrer.policy, navigation.referrer().policy);
129 EXPECT_EQ(kReferrer.policy,
130 SessionTypesTestHelper::GetReferrer(navigation).policy);
131 EXPECT_EQ(kVirtualURL, navigation.virtual_url()); 126 EXPECT_EQ(kVirtualURL, navigation.virtual_url());
132 EXPECT_EQ(kTitle, navigation.title()); 127 EXPECT_EQ(kTitle, navigation.title());
133 EXPECT_EQ(kContentState, navigation.content_state()); 128 EXPECT_EQ(kContentState, navigation.content_state());
134 EXPECT_EQ(kTransitionType, 129 EXPECT_EQ(kTransitionType, navigation.transition_type());
135 SessionTypesTestHelper::GetTransitionType(navigation)); 130 EXPECT_EQ(kHasPostData, navigation.has_post_data());
136 EXPECT_EQ(kHasPostData, SessionTypesTestHelper::GetHasPostData(navigation)); 131 EXPECT_EQ(kPostID, navigation.post_id());
137 EXPECT_EQ(kPostID, SessionTypesTestHelper::GetPostID(navigation)); 132 EXPECT_EQ(kOriginalRequestURL, navigation.original_request_url());
138 EXPECT_EQ(kOriginalRequestURL, 133 EXPECT_EQ(kIsOverridingUserAgent, navigation.is_overriding_user_agent());
139 SessionTypesTestHelper::GetOriginalRequestURL(navigation)); 134 EXPECT_EQ(kTimestamp, navigation.timestamp());
140 EXPECT_EQ(kIsOverridingUserAgent,
141 SessionTypesTestHelper::GetIsOverridingUserAgent(navigation));
142 EXPECT_EQ(kTimestamp, SessionTypesTestHelper::GetTimestamp(navigation));
143 EXPECT_EQ(kFaviconURL, navigation.favicon_url()); 135 EXPECT_EQ(kFaviconURL, navigation.favicon_url());
144 } 136 }
145 137
146 // Create a TabNavigation from a sync_pb::TabNavigation. All its 138 // Create a SerializedNavigationEntry from a sync_pb::TabNavigation. All its
147 // fields should match the protocol buffer's if it exists there, and 139 // fields should match the protocol buffer's if it exists there, and
148 // sbould be set to the default value otherwise. 140 // sbould be set to the default value otherwise.
149 TEST(TabNavigationTest, FromSyncData) { 141 TEST(SerializedNavigationEntryTest, FromSyncData) {
150 const sync_pb::TabNavigation sync_data = MakeSyncDataForTest(); 142 const sync_pb::TabNavigation sync_data = MakeSyncDataForTest();
151 143
152 const TabNavigation& navigation = 144 const SerializedNavigationEntry& navigation =
153 TabNavigation::FromSyncData(kIndex, sync_data); 145 SerializedNavigationEntry::FromSyncData(kIndex, sync_data);
154 146
155 EXPECT_EQ(kIndex, navigation.index()); 147 EXPECT_EQ(kIndex, navigation.index());
156 EXPECT_EQ(kUniqueID, navigation.unique_id()); 148 EXPECT_EQ(kUniqueID, navigation.unique_id());
157 EXPECT_EQ(kReferrer.url, 149 EXPECT_EQ(kReferrer.url, navigation.referrer().url);
158 SessionTypesTestHelper::GetReferrer(navigation).url); 150 EXPECT_EQ(WebKit::WebReferrerPolicyDefault, navigation.referrer().policy);
159 EXPECT_EQ(WebKit::WebReferrerPolicyDefault,
160 SessionTypesTestHelper::GetReferrer(navigation).policy);
161 EXPECT_EQ(kVirtualURL, navigation.virtual_url()); 151 EXPECT_EQ(kVirtualURL, navigation.virtual_url());
162 EXPECT_EQ(kTitle, navigation.title()); 152 EXPECT_EQ(kTitle, navigation.title());
163 EXPECT_EQ(kContentState, navigation.content_state()); 153 EXPECT_EQ(kContentState, navigation.content_state());
164 EXPECT_EQ(kTransitionType, 154 EXPECT_EQ(kTransitionType, navigation.transition_type());
165 SessionTypesTestHelper::GetTransitionType(navigation)); 155 EXPECT_FALSE(navigation.has_post_data());
166 EXPECT_FALSE(SessionTypesTestHelper::GetHasPostData(navigation)); 156 EXPECT_EQ(-1, navigation.post_id());
167 EXPECT_EQ(-1, SessionTypesTestHelper::GetPostID(navigation)); 157 EXPECT_EQ(GURL(), navigation.original_request_url());
168 EXPECT_EQ(GURL(), SessionTypesTestHelper::GetOriginalRequestURL(navigation)); 158 EXPECT_FALSE(navigation.is_overriding_user_agent());
169 EXPECT_FALSE(SessionTypesTestHelper::GetIsOverridingUserAgent(navigation)); 159 EXPECT_TRUE(navigation.timestamp().is_null());
170 EXPECT_TRUE(SessionTypesTestHelper::GetTimestamp(navigation).is_null());
171 EXPECT_EQ(kSearchTerms, navigation.search_terms()); 160 EXPECT_EQ(kSearchTerms, navigation.search_terms());
172 EXPECT_EQ(kFaviconURL, navigation.favicon_url()); 161 EXPECT_EQ(kFaviconURL, navigation.favicon_url());
173 } 162 }
174 163
175 // Create a TabNavigation, pickle it, then create another one by 164 // Create a SerializedNavigationEntry, pickle it, then create another one by
176 // unpickling. The new one should match the old one except for fields 165 // unpickling. The new one should match the old one except for fields
177 // that aren't pickled, which should be set to default values. 166 // that aren't pickled, which should be set to default values.
178 TEST(TabNavigationTest, Pickle) { 167 TEST(SerializedNavigationEntryTest, Pickle) {
179 const TabNavigation& old_navigation = 168 const SerializedNavigationEntry& old_navigation =
180 TabNavigation::FromNavigationEntry(kIndex, *MakeNavigationEntryForTest()); 169 SerializedNavigationEntry::FromNavigationEntry(
170 kIndex, *MakeNavigationEntryForTest());
181 171
182 Pickle pickle; 172 Pickle pickle;
183 old_navigation.WriteToPickle(&pickle); 173 old_navigation.WriteToPickle(30000, &pickle);
184 174
185 TabNavigation new_navigation; 175 SerializedNavigationEntry new_navigation;
186 PickleIterator pickle_iterator(pickle); 176 PickleIterator pickle_iterator(pickle);
187 EXPECT_TRUE(new_navigation.ReadFromPickle(&pickle_iterator)); 177 EXPECT_TRUE(new_navigation.ReadFromPickle(&pickle_iterator));
188 178
189 EXPECT_EQ(kIndex, new_navigation.index()); 179 EXPECT_EQ(kIndex, new_navigation.index());
190 180
191 EXPECT_EQ(0, new_navigation.unique_id()); 181 EXPECT_EQ(0, new_navigation.unique_id());
192 EXPECT_EQ(kReferrer.url, 182 EXPECT_EQ(kReferrer.url, new_navigation.referrer().url);
193 SessionTypesTestHelper::GetReferrer(new_navigation).url); 183 EXPECT_EQ(kReferrer.policy, new_navigation.referrer().policy);
194 EXPECT_EQ(kReferrer.policy,
195 SessionTypesTestHelper::GetReferrer(new_navigation).policy);
196 EXPECT_EQ(kVirtualURL, new_navigation.virtual_url()); 184 EXPECT_EQ(kVirtualURL, new_navigation.virtual_url());
197 EXPECT_EQ(kTitle, new_navigation.title()); 185 EXPECT_EQ(kTitle, new_navigation.title());
198 EXPECT_TRUE(new_navigation.content_state().empty()); 186 EXPECT_TRUE(new_navigation.content_state().empty());
199 EXPECT_EQ(kTransitionType, 187 EXPECT_EQ(kTransitionType, new_navigation.transition_type());
200 SessionTypesTestHelper::GetTransitionType(new_navigation)); 188 EXPECT_EQ(kHasPostData, new_navigation.has_post_data());
201 EXPECT_EQ(kHasPostData, 189 EXPECT_EQ(-1, new_navigation.post_id());
202 SessionTypesTestHelper::GetHasPostData(new_navigation)); 190 EXPECT_EQ(kOriginalRequestURL, new_navigation.original_request_url());
203 EXPECT_EQ(-1, SessionTypesTestHelper::GetPostID(new_navigation)); 191 EXPECT_EQ(kIsOverridingUserAgent, new_navigation.is_overriding_user_agent());
204 EXPECT_EQ(kOriginalRequestURL, 192 EXPECT_EQ(kTimestamp, new_navigation.timestamp());
205 SessionTypesTestHelper::GetOriginalRequestURL(new_navigation));
206 EXPECT_EQ(kIsOverridingUserAgent,
207 SessionTypesTestHelper::GetIsOverridingUserAgent(new_navigation));
208 EXPECT_EQ(kTimestamp, SessionTypesTestHelper::GetTimestamp(new_navigation));
209 EXPECT_EQ(kSearchTerms, new_navigation.search_terms()); 193 EXPECT_EQ(kSearchTerms, new_navigation.search_terms());
210 } 194 }
211 195
212 // Create a NavigationEntry, then create another one by converting to 196 // Create a NavigationEntry, then create another one by converting to
213 // a TabNavigation and back. The new one should match the old one 197 // a SerializedNavigationEntry and back. The new one should match the old one
214 // except for fields that aren't preserved, which should be set to 198 // except for fields that aren't preserved, which should be set to
215 // expected values. 199 // expected values.
216 TEST(TabNavigationTest, ToNavigationEntry) { 200 TEST(SerializedNavigationEntryTest, ToNavigationEntry) {
217 const scoped_ptr<content::NavigationEntry> old_navigation_entry( 201 const scoped_ptr<content::NavigationEntry> old_navigation_entry(
218 MakeNavigationEntryForTest()); 202 MakeNavigationEntryForTest());
219 203
220 const TabNavigation& navigation = 204 const SerializedNavigationEntry& navigation =
221 TabNavigation::FromNavigationEntry(kIndex, *old_navigation_entry); 205 SerializedNavigationEntry::FromNavigationEntry(kIndex,
206 *old_navigation_entry);
222 207
223 const scoped_ptr<content::NavigationEntry> new_navigation_entry( 208 const scoped_ptr<content::NavigationEntry> new_navigation_entry(
224 navigation.ToNavigationEntry(kPageID, NULL)); 209 navigation.ToNavigationEntry(kPageID, NULL));
225 210
226 EXPECT_EQ(kReferrer.url, new_navigation_entry->GetReferrer().url); 211 EXPECT_EQ(kReferrer.url, new_navigation_entry->GetReferrer().url);
227 EXPECT_EQ(kReferrer.policy, new_navigation_entry->GetReferrer().policy); 212 EXPECT_EQ(kReferrer.policy, new_navigation_entry->GetReferrer().policy);
228 EXPECT_EQ(kVirtualURL, new_navigation_entry->GetVirtualURL()); 213 EXPECT_EQ(kVirtualURL, new_navigation_entry->GetVirtualURL());
229 EXPECT_EQ(kTitle, new_navigation_entry->GetTitle()); 214 EXPECT_EQ(kTitle, new_navigation_entry->GetTitle());
230 EXPECT_EQ(kContentState, new_navigation_entry->GetContentState()); 215 EXPECT_EQ(kContentState, new_navigation_entry->GetContentState());
231 EXPECT_EQ(kPageID, new_navigation_entry->GetPageID()); 216 EXPECT_EQ(kPageID, new_navigation_entry->GetPageID());
232 EXPECT_EQ(content::PAGE_TRANSITION_RELOAD, 217 EXPECT_EQ(content::PAGE_TRANSITION_RELOAD,
233 new_navigation_entry->GetTransitionType()); 218 new_navigation_entry->GetTransitionType());
234 EXPECT_EQ(kHasPostData, new_navigation_entry->GetHasPostData()); 219 EXPECT_EQ(kHasPostData, new_navigation_entry->GetHasPostData());
235 EXPECT_EQ(kPostID, new_navigation_entry->GetPostID()); 220 EXPECT_EQ(kPostID, new_navigation_entry->GetPostID());
236 EXPECT_EQ(kOriginalRequestURL, 221 EXPECT_EQ(kOriginalRequestURL,
237 new_navigation_entry->GetOriginalRequestURL()); 222 new_navigation_entry->GetOriginalRequestURL());
238 EXPECT_EQ(kIsOverridingUserAgent, 223 EXPECT_EQ(kIsOverridingUserAgent,
239 new_navigation_entry->GetIsOverridingUserAgent()); 224 new_navigation_entry->GetIsOverridingUserAgent());
240 EXPECT_EQ(kSearchTerms, 225 string16 search_terms;
241 chrome::GetSearchTermsFromNavigationEntry( 226 new_navigation_entry->GetExtraData(kSearchTermsKey, &search_terms);
242 new_navigation_entry.get())); 227 EXPECT_EQ(kSearchTerms, search_terms);
243 } 228 }
244 229
245 // Create a NavigationEntry, convert it to a TabNavigation, then 230 // Create a NavigationEntry, convert it to a SerializedNavigationEntry, then
246 // create a sync protocol buffer from it. The protocol buffer should 231 // create a sync protocol buffer from it. The protocol buffer should
247 // have matching fields to the NavigationEntry (when applicable). 232 // have matching fields to the NavigationEntry (when applicable).
248 TEST(TabNavigationTest, ToSyncData) { 233 TEST(SerializedNavigationEntryTest, ToSyncData) {
249 const scoped_ptr<content::NavigationEntry> navigation_entry( 234 const scoped_ptr<content::NavigationEntry> navigation_entry(
250 MakeNavigationEntryForTest()); 235 MakeNavigationEntryForTest());
251 236
252 const TabNavigation& navigation = 237 const SerializedNavigationEntry& navigation =
253 TabNavigation::FromNavigationEntry(kIndex, *navigation_entry); 238 SerializedNavigationEntry::FromNavigationEntry(kIndex, *navigation_entry);
254 239
255 const sync_pb::TabNavigation sync_data = navigation.ToSyncData(); 240 const sync_pb::TabNavigation sync_data = navigation.ToSyncData();
256 241
257 EXPECT_EQ(kVirtualURL.spec(), sync_data.virtual_url()); 242 EXPECT_EQ(kVirtualURL.spec(), sync_data.virtual_url());
258 EXPECT_EQ(kReferrer.url.spec(), sync_data.referrer()); 243 EXPECT_EQ(kReferrer.url.spec(), sync_data.referrer());
259 EXPECT_EQ(kTitle, ASCIIToUTF16(sync_data.title())); 244 EXPECT_EQ(kTitle, ASCIIToUTF16(sync_data.title()));
260 EXPECT_TRUE(sync_data.state().empty()); 245 EXPECT_TRUE(sync_data.state().empty());
261 EXPECT_EQ(sync_pb::SyncEnums_PageTransition_AUTO_SUBFRAME, 246 EXPECT_EQ(sync_pb::SyncEnums_PageTransition_AUTO_SUBFRAME,
262 sync_data.page_transition()); 247 sync_data.page_transition());
263 EXPECT_TRUE(sync_data.has_redirect_type()); 248 EXPECT_TRUE(sync_data.has_redirect_type());
264 EXPECT_EQ(navigation_entry->GetUniqueID(), sync_data.unique_id()); 249 EXPECT_EQ(navigation_entry->GetUniqueID(), sync_data.unique_id());
265 EXPECT_EQ(syncer::TimeToProtoTime(kTimestamp), sync_data.timestamp_msec()); 250 EXPECT_EQ(syncer::TimeToProtoTime(kTimestamp), sync_data.timestamp_msec());
266 EXPECT_EQ(kTimestamp.ToInternalValue(), sync_data.global_id()); 251 EXPECT_EQ(kTimestamp.ToInternalValue(), sync_data.global_id());
267 EXPECT_EQ(kFaviconURL.spec(), sync_data.favicon_url()); 252 EXPECT_EQ(kFaviconURL.spec(), sync_data.favicon_url());
268 } 253 }
269 254
270 // Ensure all transition types and qualifiers are converted to/from the sync 255 // Ensure all transition types and qualifiers are converted to/from the sync
271 // TabNavigation representation properly. 256 // SerializedNavigationEntry representation properly.
272 TEST(TabNavigationTest, TransitionTypes) { 257 TEST(SerializedNavigationEntryTest, TransitionTypes) {
273 scoped_ptr<content::NavigationEntry> navigation_entry( 258 scoped_ptr<content::NavigationEntry> navigation_entry(
274 MakeNavigationEntryForTest()); 259 MakeNavigationEntryForTest());
275 for (uint32 core_type = content::PAGE_TRANSITION_LINK; 260 for (uint32 core_type = content::PAGE_TRANSITION_LINK;
276 core_type != content::PAGE_TRANSITION_LAST_CORE; ++core_type) { 261 core_type != content::PAGE_TRANSITION_LAST_CORE; ++core_type) {
277 // Because qualifier is a uint32, left shifting will eventually overflow 262 // Because qualifier is a uint32, left shifting will eventually overflow
278 // and hit zero again. SERVER_REDIRECT, as the last qualifier and also 263 // and hit zero again. SERVER_REDIRECT, as the last qualifier and also
279 // in place of the sign bit, is therefore the last transition before 264 // in place of the sign bit, is therefore the last transition before
280 // breaking. 265 // breaking.
281 for (uint32 qualifier = content::PAGE_TRANSITION_FORWARD_BACK; 266 for (uint32 qualifier = content::PAGE_TRANSITION_FORWARD_BACK;
282 qualifier != 0; qualifier <<= 1) { 267 qualifier != 0; qualifier <<= 1) {
283 if (qualifier == 0x08000000) 268 if (qualifier == 0x08000000)
284 continue; // 0x08000000 is not a valid qualifier. 269 continue; // 0x08000000 is not a valid qualifier.
285 content::PageTransition transition = 270 content::PageTransition transition =
286 static_cast<content::PageTransition>(core_type | qualifier); 271 static_cast<content::PageTransition>(core_type | qualifier);
287 272
288 navigation_entry->SetTransitionType(transition); 273 navigation_entry->SetTransitionType(transition);
289 const TabNavigation& navigation = 274 const SerializedNavigationEntry& navigation =
290 TabNavigation::FromNavigationEntry(kIndex, *navigation_entry); 275 SerializedNavigationEntry::FromNavigationEntry(kIndex,
276 *navigation_entry);
291 const sync_pb::TabNavigation& sync_data = navigation.ToSyncData(); 277 const sync_pb::TabNavigation& sync_data = navigation.ToSyncData();
292 const TabNavigation& constructed_nav = 278 const SerializedNavigationEntry& constructed_nav =
293 TabNavigation::FromSyncData(kIndex, sync_data); 279 SerializedNavigationEntry::FromSyncData(kIndex, sync_data);
294 const content::PageTransition constructed_transition = 280 const content::PageTransition constructed_transition =
295 SessionTypesTestHelper::GetTransitionType(constructed_nav); 281 constructed_nav.transition_type();
296 282
297 EXPECT_EQ(transition, constructed_transition); 283 EXPECT_EQ(transition, constructed_transition);
298 } 284 }
299 } 285 }
300 } 286 }
301 287
302 // Create a typical SessionTab protocol buffer and set an existing
303 // SessionTab from it. The data from the protocol buffer should
304 // clobber the existing data.
305 TEST(SessionTab, FromSyncData) {
306 sync_pb::SessionTab sync_data;
307 sync_data.set_tab_id(5);
308 sync_data.set_window_id(10);
309 sync_data.set_tab_visual_index(13);
310 sync_data.set_current_navigation_index(3);
311 sync_data.set_pinned(true);
312 sync_data.set_extension_app_id("app_id");
313 for (int i = 0; i < 5; ++i) {
314 sync_pb::TabNavigation* navigation = sync_data.add_navigation();
315 navigation->set_virtual_url("http://foo/" + base::IntToString(i));
316 navigation->set_referrer("referrer");
317 navigation->set_title("title");
318 navigation->set_page_transition(sync_pb::SyncEnums_PageTransition_TYPED);
319 }
320
321 SessionTab tab;
322 tab.window_id.set_id(100);
323 tab.tab_id.set_id(100);
324 tab.tab_visual_index = 100;
325 tab.current_navigation_index = 1000;
326 tab.pinned = false;
327 tab.extension_app_id = "fake";
328 tab.user_agent_override = "fake";
329 tab.timestamp = base::Time::FromInternalValue(100);
330 tab.navigations.resize(100);
331 tab.session_storage_persistent_id = "fake";
332
333 tab.SetFromSyncData(sync_data, base::Time::FromInternalValue(5u));
334 EXPECT_EQ(10, tab.window_id.id());
335 EXPECT_EQ(5, tab.tab_id.id());
336 EXPECT_EQ(13, tab.tab_visual_index);
337 EXPECT_EQ(3, tab.current_navigation_index);
338 EXPECT_TRUE(tab.pinned);
339 EXPECT_EQ("app_id", tab.extension_app_id);
340 EXPECT_TRUE(tab.user_agent_override.empty());
341 EXPECT_EQ(5u, tab.timestamp.ToInternalValue());
342 ASSERT_EQ(5u, tab.navigations.size());
343 for (int i = 0; i < 5; ++i) {
344 EXPECT_EQ(i, tab.navigations[i].index());
345 EXPECT_EQ(GURL("referrer"),
346 SessionTypesTestHelper::GetReferrer(tab.navigations[i]).url);
347 EXPECT_EQ(string16(ASCIIToUTF16("title")), tab.navigations[i].title());
348 EXPECT_EQ(content::PAGE_TRANSITION_TYPED,
349 SessionTypesTestHelper::GetTransitionType(tab.navigations[i]));
350 EXPECT_EQ(GURL("http://foo/" + base::IntToString(i)),
351 tab.navigations[i].virtual_url());
352 }
353 EXPECT_TRUE(tab.session_storage_persistent_id.empty());
354 }
355
356 TEST(SessionTab, ToSyncData) {
357 SessionTab tab;
358 tab.window_id.set_id(10);
359 tab.tab_id.set_id(5);
360 tab.tab_visual_index = 13;
361 tab.current_navigation_index = 3;
362 tab.pinned = true;
363 tab.extension_app_id = "app_id";
364 tab.user_agent_override = "fake";
365 tab.timestamp = base::Time::FromInternalValue(100);
366 for (int i = 0; i < 5; ++i) {
367 tab.navigations.push_back(
368 SessionTypesTestHelper::CreateNavigation(
369 "http://foo/" + base::IntToString(i), "title"));
370 }
371 tab.session_storage_persistent_id = "fake";
372
373 const sync_pb::SessionTab& sync_data = tab.ToSyncData();
374 EXPECT_EQ(5, sync_data.tab_id());
375 EXPECT_EQ(10, sync_data.window_id());
376 EXPECT_EQ(13, sync_data.tab_visual_index());
377 EXPECT_EQ(3, sync_data.current_navigation_index());
378 EXPECT_TRUE(sync_data.pinned());
379 EXPECT_EQ("app_id", sync_data.extension_app_id());
380 ASSERT_EQ(5, sync_data.navigation_size());
381 for (int i = 0; i < 5; ++i) {
382 EXPECT_EQ(tab.navigations[i].virtual_url().spec(),
383 sync_data.navigation(i).virtual_url());
384 EXPECT_EQ(UTF16ToUTF8(tab.navigations[i].title()),
385 sync_data.navigation(i).title());
386 }
387 EXPECT_FALSE(sync_data.has_favicon());
388 EXPECT_FALSE(sync_data.has_favicon_type());
389 EXPECT_FALSE(sync_data.has_favicon_source());
390 }
391
392 } // namespace 288 } // namespace
289 } // namespace sessions
OLDNEW
« no previous file with comments | « components/sessions/serialized_navigation_entry_test_helper.cc ('k') | components/sessions/sessions_export.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698