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

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

Issue 101573003: Add the navigation redirect-chain to Sync sessions proto for offline analysis. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address Brett's comment on patch set 46, and rebase. Created 6 years, 8 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 (c) 2013 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" 5 #include "components/sessions/serialized_navigation_entry.h"
6 6
7 #include <cstddef> 7 #include <cstddef>
8 #include <string> 8 #include <string>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 content::PAGE_TRANSITION_HOME_PAGE | 42 content::PAGE_TRANSITION_HOME_PAGE |
43 content::PAGE_TRANSITION_CLIENT_REDIRECT); 43 content::PAGE_TRANSITION_CLIENT_REDIRECT);
44 const bool kHasPostData = true; 44 const bool kHasPostData = true;
45 const int64 kPostID = 100; 45 const int64 kPostID = 100;
46 const GURL kOriginalRequestURL("http://www.original-request.com"); 46 const GURL kOriginalRequestURL("http://www.original-request.com");
47 const bool kIsOverridingUserAgent = true; 47 const bool kIsOverridingUserAgent = true;
48 const base::Time kTimestamp = syncer::ProtoTimeToTime(100); 48 const base::Time kTimestamp = syncer::ProtoTimeToTime(100);
49 const base::string16 kSearchTerms = base::ASCIIToUTF16("my search terms"); 49 const base::string16 kSearchTerms = base::ASCIIToUTF16("my search terms");
50 const GURL kFaviconURL("http://virtual-url.com/favicon.ico"); 50 const GURL kFaviconURL("http://virtual-url.com/favicon.ico");
51 const int kHttpStatusCode = 404; 51 const int kHttpStatusCode = 404;
52 const GURL kRedirectURL0("http://go/redirect0");
53 const GURL kRedirectURL1("http://go/redirect1");
54 const GURL kOtherURL("http://other.com");
52 55
53 const int kPageID = 10; 56 const int kPageID = 10;
54 57
55 // Create a NavigationEntry from the constants above. 58 // Create a NavigationEntry from the constants above.
56 scoped_ptr<content::NavigationEntry> MakeNavigationEntryForTest() { 59 scoped_ptr<content::NavigationEntry> MakeNavigationEntryForTest() {
57 scoped_ptr<content::NavigationEntry> navigation_entry( 60 scoped_ptr<content::NavigationEntry> navigation_entry(
58 content::NavigationEntry::Create()); 61 content::NavigationEntry::Create());
59 navigation_entry->SetReferrer(kReferrer); 62 navigation_entry->SetReferrer(kReferrer);
60 navigation_entry->SetVirtualURL(kVirtualURL); 63 navigation_entry->SetVirtualURL(kVirtualURL);
61 navigation_entry->SetTitle(kTitle); 64 navigation_entry->SetTitle(kTitle);
62 navigation_entry->SetPageState(kPageState); 65 navigation_entry->SetPageState(kPageState);
63 navigation_entry->SetTransitionType(kTransitionType); 66 navigation_entry->SetTransitionType(kTransitionType);
64 navigation_entry->SetHasPostData(kHasPostData); 67 navigation_entry->SetHasPostData(kHasPostData);
65 navigation_entry->SetPostID(kPostID); 68 navigation_entry->SetPostID(kPostID);
66 navigation_entry->SetOriginalRequestURL(kOriginalRequestURL); 69 navigation_entry->SetOriginalRequestURL(kOriginalRequestURL);
67 navigation_entry->SetIsOverridingUserAgent(kIsOverridingUserAgent); 70 navigation_entry->SetIsOverridingUserAgent(kIsOverridingUserAgent);
68 navigation_entry->SetTimestamp(kTimestamp); 71 navigation_entry->SetTimestamp(kTimestamp);
69 navigation_entry->SetExtraData(kSearchTermsKey, kSearchTerms); 72 navigation_entry->SetExtraData(kSearchTermsKey, kSearchTerms);
70 navigation_entry->GetFavicon().valid = true; 73 navigation_entry->GetFavicon().valid = true;
71 navigation_entry->GetFavicon().url = kFaviconURL; 74 navigation_entry->GetFavicon().url = kFaviconURL;
72 navigation_entry->SetHttpStatusCode(kHttpStatusCode); 75 navigation_entry->SetHttpStatusCode(kHttpStatusCode);
76 std::vector<GURL> redirect_chain;
77 redirect_chain.push_back(kRedirectURL0);
78 redirect_chain.push_back(kRedirectURL1);
79 redirect_chain.push_back(kVirtualURL);
80 navigation_entry->SetRedirectChain(redirect_chain);
73 return navigation_entry.Pass(); 81 return navigation_entry.Pass();
74 } 82 }
75 83
76 // Create a sync_pb::TabNavigation from the constants above. 84 // Create a sync_pb::TabNavigation from the constants above.
77 sync_pb::TabNavigation MakeSyncDataForTest() { 85 sync_pb::TabNavigation MakeSyncDataForTest() {
78 sync_pb::TabNavigation sync_data; 86 sync_pb::TabNavigation sync_data;
79 sync_data.set_virtual_url(kVirtualURL.spec()); 87 sync_data.set_virtual_url(kVirtualURL.spec());
80 sync_data.set_referrer(kReferrer.url.spec()); 88 sync_data.set_referrer(kReferrer.url.spec());
81 sync_data.set_referrer_policy(blink::WebReferrerPolicyOrigin); 89 sync_data.set_referrer_policy(blink::WebReferrerPolicyOrigin);
82 sync_data.set_title(base::UTF16ToUTF8(kTitle)); 90 sync_data.set_title(base::UTF16ToUTF8(kTitle));
83 sync_data.set_state(kPageState.ToEncodedData()); 91 sync_data.set_state(kPageState.ToEncodedData());
84 sync_data.set_page_transition( 92 sync_data.set_page_transition(
85 sync_pb::SyncEnums_PageTransition_AUTO_SUBFRAME); 93 sync_pb::SyncEnums_PageTransition_AUTO_SUBFRAME);
86 sync_data.set_unique_id(kUniqueID); 94 sync_data.set_unique_id(kUniqueID);
87 sync_data.set_timestamp_msec(syncer::TimeToProtoTime(kTimestamp)); 95 sync_data.set_timestamp_msec(syncer::TimeToProtoTime(kTimestamp));
88 sync_data.set_redirect_type(sync_pb::SyncEnums::CLIENT_REDIRECT); 96 sync_data.set_redirect_type(sync_pb::SyncEnums::CLIENT_REDIRECT);
89 sync_data.set_navigation_home_page(true); 97 sync_data.set_navigation_home_page(true);
90 sync_data.set_search_terms(base::UTF16ToUTF8(kSearchTerms)); 98 sync_data.set_search_terms(base::UTF16ToUTF8(kSearchTerms));
91 sync_data.set_favicon_url(kFaviconURL.spec()); 99 sync_data.set_favicon_url(kFaviconURL.spec());
92 sync_data.set_http_status_code(kHttpStatusCode); 100 sync_data.set_http_status_code(kHttpStatusCode);
101 // The redirect chain only syncs one way.
93 return sync_data; 102 return sync_data;
94 } 103 }
95 104
96 // Create a default SerializedNavigationEntry. All its fields should be 105 // Create a default SerializedNavigationEntry. All its fields should be
97 // initialized to their respective default values. 106 // initialized to their respective default values.
98 TEST(SerializedNavigationEntryTest, DefaultInitializer) { 107 TEST(SerializedNavigationEntryTest, DefaultInitializer) {
99 const SerializedNavigationEntry navigation; 108 const SerializedNavigationEntry navigation;
100 EXPECT_EQ(-1, navigation.index()); 109 EXPECT_EQ(-1, navigation.index());
101 EXPECT_EQ(0, navigation.unique_id()); 110 EXPECT_EQ(0, navigation.unique_id());
102 EXPECT_EQ(GURL(), navigation.referrer().url); 111 EXPECT_EQ(GURL(), navigation.referrer().url);
103 EXPECT_EQ(blink::WebReferrerPolicyDefault, navigation.referrer().policy); 112 EXPECT_EQ(blink::WebReferrerPolicyDefault, navigation.referrer().policy);
104 EXPECT_EQ(GURL(), navigation.virtual_url()); 113 EXPECT_EQ(GURL(), navigation.virtual_url());
105 EXPECT_TRUE(navigation.title().empty()); 114 EXPECT_TRUE(navigation.title().empty());
106 EXPECT_FALSE(navigation.page_state().IsValid()); 115 EXPECT_FALSE(navigation.page_state().IsValid());
107 EXPECT_EQ(content::PAGE_TRANSITION_TYPED, navigation.transition_type()); 116 EXPECT_EQ(content::PAGE_TRANSITION_TYPED, navigation.transition_type());
108 EXPECT_FALSE(navigation.has_post_data()); 117 EXPECT_FALSE(navigation.has_post_data());
109 EXPECT_EQ(-1, navigation.post_id()); 118 EXPECT_EQ(-1, navigation.post_id());
110 EXPECT_EQ(GURL(), navigation.original_request_url()); 119 EXPECT_EQ(GURL(), navigation.original_request_url());
111 EXPECT_FALSE(navigation.is_overriding_user_agent()); 120 EXPECT_FALSE(navigation.is_overriding_user_agent());
112 EXPECT_TRUE(navigation.timestamp().is_null()); 121 EXPECT_TRUE(navigation.timestamp().is_null());
113 EXPECT_TRUE(navigation.search_terms().empty()); 122 EXPECT_TRUE(navigation.search_terms().empty());
114 EXPECT_FALSE(navigation.favicon_url().is_valid()); 123 EXPECT_FALSE(navigation.favicon_url().is_valid());
115 EXPECT_EQ(0, navigation.http_status_code()); 124 EXPECT_EQ(0, navigation.http_status_code());
125 EXPECT_EQ(0U, navigation.redirect_chain().size());
116 } 126 }
117 127
118 // Create a SerializedNavigationEntry from a NavigationEntry. All its fields 128 // Create a SerializedNavigationEntry from a NavigationEntry. All its fields
119 // should match the NavigationEntry's. 129 // should match the NavigationEntry's.
120 TEST(SerializedNavigationEntryTest, FromNavigationEntry) { 130 TEST(SerializedNavigationEntryTest, FromNavigationEntry) {
121 const scoped_ptr<content::NavigationEntry> navigation_entry( 131 const scoped_ptr<content::NavigationEntry> navigation_entry(
122 MakeNavigationEntryForTest()); 132 MakeNavigationEntryForTest());
123 133
124 const SerializedNavigationEntry& navigation = 134 const SerializedNavigationEntry& navigation =
125 SerializedNavigationEntry::FromNavigationEntry(kIndex, *navigation_entry); 135 SerializedNavigationEntry::FromNavigationEntry(kIndex, *navigation_entry);
126 136
127 EXPECT_EQ(kIndex, navigation.index()); 137 EXPECT_EQ(kIndex, navigation.index());
128 138
129 EXPECT_EQ(navigation_entry->GetUniqueID(), navigation.unique_id()); 139 EXPECT_EQ(navigation_entry->GetUniqueID(), navigation.unique_id());
130 EXPECT_EQ(kReferrer.url, navigation.referrer().url); 140 EXPECT_EQ(kReferrer.url, navigation.referrer().url);
131 EXPECT_EQ(kReferrer.policy, navigation.referrer().policy); 141 EXPECT_EQ(kReferrer.policy, navigation.referrer().policy);
132 EXPECT_EQ(kVirtualURL, navigation.virtual_url()); 142 EXPECT_EQ(kVirtualURL, navigation.virtual_url());
133 EXPECT_EQ(kTitle, navigation.title()); 143 EXPECT_EQ(kTitle, navigation.title());
134 EXPECT_EQ(kPageState, navigation.page_state()); 144 EXPECT_EQ(kPageState, navigation.page_state());
135 EXPECT_EQ(kTransitionType, navigation.transition_type()); 145 EXPECT_EQ(kTransitionType, navigation.transition_type());
136 EXPECT_EQ(kHasPostData, navigation.has_post_data()); 146 EXPECT_EQ(kHasPostData, navigation.has_post_data());
137 EXPECT_EQ(kPostID, navigation.post_id()); 147 EXPECT_EQ(kPostID, navigation.post_id());
138 EXPECT_EQ(kOriginalRequestURL, navigation.original_request_url()); 148 EXPECT_EQ(kOriginalRequestURL, navigation.original_request_url());
139 EXPECT_EQ(kIsOverridingUserAgent, navigation.is_overriding_user_agent()); 149 EXPECT_EQ(kIsOverridingUserAgent, navigation.is_overriding_user_agent());
140 EXPECT_EQ(kTimestamp, navigation.timestamp()); 150 EXPECT_EQ(kTimestamp, navigation.timestamp());
141 EXPECT_EQ(kFaviconURL, navigation.favicon_url()); 151 EXPECT_EQ(kFaviconURL, navigation.favicon_url());
142 EXPECT_EQ(kHttpStatusCode, navigation.http_status_code()); 152 EXPECT_EQ(kHttpStatusCode, navigation.http_status_code());
153 ASSERT_EQ(3U, navigation.redirect_chain().size());
154 EXPECT_EQ(kRedirectURL0, navigation.redirect_chain()[0]);
155 EXPECT_EQ(kRedirectURL1, navigation.redirect_chain()[1]);
156 EXPECT_EQ(kVirtualURL, navigation.redirect_chain()[2]);
143 } 157 }
144 158
145 // Create a SerializedNavigationEntry from a sync_pb::TabNavigation. All its 159 // Create a SerializedNavigationEntry from a sync_pb::TabNavigation. All its
146 // fields should match the protocol buffer's if it exists there, and 160 // fields should match the protocol buffer's if it exists there, and
147 // sbould be set to the default value otherwise. 161 // sbould be set to the default value otherwise.
148 TEST(SerializedNavigationEntryTest, FromSyncData) { 162 TEST(SerializedNavigationEntryTest, FromSyncData) {
149 const sync_pb::TabNavigation sync_data = MakeSyncDataForTest(); 163 const sync_pb::TabNavigation sync_data = MakeSyncDataForTest();
150 164
151 const SerializedNavigationEntry& navigation = 165 const SerializedNavigationEntry& navigation =
152 SerializedNavigationEntry::FromSyncData(kIndex, sync_data); 166 SerializedNavigationEntry::FromSyncData(kIndex, sync_data);
153 167
154 EXPECT_EQ(kIndex, navigation.index()); 168 EXPECT_EQ(kIndex, navigation.index());
155 EXPECT_EQ(kUniqueID, navigation.unique_id()); 169 EXPECT_EQ(kUniqueID, navigation.unique_id());
156 EXPECT_EQ(kReferrer.url, navigation.referrer().url); 170 EXPECT_EQ(kReferrer.url, navigation.referrer().url);
157 EXPECT_EQ(blink::WebReferrerPolicyOrigin, navigation.referrer().policy); 171 EXPECT_EQ(blink::WebReferrerPolicyOrigin, navigation.referrer().policy);
158 EXPECT_EQ(kVirtualURL, navigation.virtual_url()); 172 EXPECT_EQ(kVirtualURL, navigation.virtual_url());
159 EXPECT_EQ(kTitle, navigation.title()); 173 EXPECT_EQ(kTitle, navigation.title());
160 EXPECT_EQ(kPageState, navigation.page_state()); 174 EXPECT_EQ(kPageState, navigation.page_state());
161 EXPECT_EQ(kTransitionType, navigation.transition_type()); 175 EXPECT_EQ(kTransitionType, navigation.transition_type());
162 EXPECT_FALSE(navigation.has_post_data()); 176 EXPECT_FALSE(navigation.has_post_data());
163 EXPECT_EQ(-1, navigation.post_id()); 177 EXPECT_EQ(-1, navigation.post_id());
164 EXPECT_EQ(GURL(), navigation.original_request_url()); 178 EXPECT_EQ(GURL(), navigation.original_request_url());
165 EXPECT_FALSE(navigation.is_overriding_user_agent()); 179 EXPECT_FALSE(navigation.is_overriding_user_agent());
166 EXPECT_TRUE(navigation.timestamp().is_null()); 180 EXPECT_TRUE(navigation.timestamp().is_null());
167 EXPECT_EQ(kSearchTerms, navigation.search_terms()); 181 EXPECT_EQ(kSearchTerms, navigation.search_terms());
168 EXPECT_EQ(kFaviconURL, navigation.favicon_url()); 182 EXPECT_EQ(kFaviconURL, navigation.favicon_url());
169 EXPECT_EQ(kHttpStatusCode, navigation.http_status_code()); 183 EXPECT_EQ(kHttpStatusCode, navigation.http_status_code());
184 // The redirect chain only syncs one way.
170 } 185 }
171 186
172 // Create a SerializedNavigationEntry, pickle it, then create another one by 187 // Create a SerializedNavigationEntry, pickle it, then create another one by
173 // unpickling. The new one should match the old one except for fields 188 // unpickling. The new one should match the old one except for fields
174 // that aren't pickled, which should be set to default values. 189 // that aren't pickled, which should be set to default values.
175 TEST(SerializedNavigationEntryTest, Pickle) { 190 TEST(SerializedNavigationEntryTest, Pickle) {
176 const SerializedNavigationEntry& old_navigation = 191 const SerializedNavigationEntry& old_navigation =
177 SerializedNavigationEntry::FromNavigationEntry( 192 SerializedNavigationEntry::FromNavigationEntry(
178 kIndex, *MakeNavigationEntryForTest()); 193 kIndex, *MakeNavigationEntryForTest());
179 194
(...skipping 13 matching lines...) Expand all
193 EXPECT_EQ(kTitle, new_navigation.title()); 208 EXPECT_EQ(kTitle, new_navigation.title());
194 EXPECT_FALSE(new_navigation.page_state().IsValid()); 209 EXPECT_FALSE(new_navigation.page_state().IsValid());
195 EXPECT_EQ(kTransitionType, new_navigation.transition_type()); 210 EXPECT_EQ(kTransitionType, new_navigation.transition_type());
196 EXPECT_EQ(kHasPostData, new_navigation.has_post_data()); 211 EXPECT_EQ(kHasPostData, new_navigation.has_post_data());
197 EXPECT_EQ(-1, new_navigation.post_id()); 212 EXPECT_EQ(-1, new_navigation.post_id());
198 EXPECT_EQ(kOriginalRequestURL, new_navigation.original_request_url()); 213 EXPECT_EQ(kOriginalRequestURL, new_navigation.original_request_url());
199 EXPECT_EQ(kIsOverridingUserAgent, new_navigation.is_overriding_user_agent()); 214 EXPECT_EQ(kIsOverridingUserAgent, new_navigation.is_overriding_user_agent());
200 EXPECT_EQ(kTimestamp, new_navigation.timestamp()); 215 EXPECT_EQ(kTimestamp, new_navigation.timestamp());
201 EXPECT_EQ(kSearchTerms, new_navigation.search_terms()); 216 EXPECT_EQ(kSearchTerms, new_navigation.search_terms());
202 EXPECT_EQ(kHttpStatusCode, new_navigation.http_status_code()); 217 EXPECT_EQ(kHttpStatusCode, new_navigation.http_status_code());
218 EXPECT_EQ(0U, new_navigation.redirect_chain().size());
203 } 219 }
204 220
205 // Create a NavigationEntry, then create another one by converting to 221 // Create a NavigationEntry, then create another one by converting to
206 // a SerializedNavigationEntry and back. The new one should match the old one 222 // a SerializedNavigationEntry and back. The new one should match the old one
207 // except for fields that aren't preserved, which should be set to 223 // except for fields that aren't preserved, which should be set to
208 // expected values. 224 // expected values.
209 TEST(SerializedNavigationEntryTest, ToNavigationEntry) { 225 TEST(SerializedNavigationEntryTest, ToNavigationEntry) {
210 const scoped_ptr<content::NavigationEntry> old_navigation_entry( 226 const scoped_ptr<content::NavigationEntry> old_navigation_entry(
211 MakeNavigationEntryForTest()); 227 MakeNavigationEntryForTest());
212 228
(...skipping 15 matching lines...) Expand all
228 EXPECT_EQ(kHasPostData, new_navigation_entry->GetHasPostData()); 244 EXPECT_EQ(kHasPostData, new_navigation_entry->GetHasPostData());
229 EXPECT_EQ(kPostID, new_navigation_entry->GetPostID()); 245 EXPECT_EQ(kPostID, new_navigation_entry->GetPostID());
230 EXPECT_EQ(kOriginalRequestURL, 246 EXPECT_EQ(kOriginalRequestURL,
231 new_navigation_entry->GetOriginalRequestURL()); 247 new_navigation_entry->GetOriginalRequestURL());
232 EXPECT_EQ(kIsOverridingUserAgent, 248 EXPECT_EQ(kIsOverridingUserAgent,
233 new_navigation_entry->GetIsOverridingUserAgent()); 249 new_navigation_entry->GetIsOverridingUserAgent());
234 base::string16 search_terms; 250 base::string16 search_terms;
235 new_navigation_entry->GetExtraData(kSearchTermsKey, &search_terms); 251 new_navigation_entry->GetExtraData(kSearchTermsKey, &search_terms);
236 EXPECT_EQ(kSearchTerms, search_terms); 252 EXPECT_EQ(kSearchTerms, search_terms);
237 EXPECT_EQ(kHttpStatusCode, new_navigation_entry->GetHttpStatusCode()); 253 EXPECT_EQ(kHttpStatusCode, new_navigation_entry->GetHttpStatusCode());
254 ASSERT_EQ(3U, new_navigation_entry->GetRedirectChain().size());
255 EXPECT_EQ(kRedirectURL0, new_navigation_entry->GetRedirectChain()[0]);
256 EXPECT_EQ(kRedirectURL1, new_navigation_entry->GetRedirectChain()[1]);
257 EXPECT_EQ(kVirtualURL, new_navigation_entry->GetRedirectChain()[2]);
238 } 258 }
239 259
240 // Create a NavigationEntry, convert it to a SerializedNavigationEntry, then 260 // Create a NavigationEntry, convert it to a SerializedNavigationEntry, then
241 // create a sync protocol buffer from it. The protocol buffer should 261 // create a sync protocol buffer from it. The protocol buffer should
242 // have matching fields to the NavigationEntry (when applicable). 262 // have matching fields to the NavigationEntry (when applicable).
243 TEST(SerializedNavigationEntryTest, ToSyncData) { 263 TEST(SerializedNavigationEntryTest, ToSyncData) {
244 const scoped_ptr<content::NavigationEntry> navigation_entry( 264 const scoped_ptr<content::NavigationEntry> navigation_entry(
245 MakeNavigationEntryForTest()); 265 MakeNavigationEntryForTest());
246 266
247 const SerializedNavigationEntry& navigation = 267 const SerializedNavigationEntry& navigation =
248 SerializedNavigationEntry::FromNavigationEntry(kIndex, *navigation_entry); 268 SerializedNavigationEntry::FromNavigationEntry(kIndex, *navigation_entry);
249 269
250 const sync_pb::TabNavigation sync_data = navigation.ToSyncData(); 270 const sync_pb::TabNavigation sync_data = navigation.ToSyncData();
251 271
252 EXPECT_EQ(kVirtualURL.spec(), sync_data.virtual_url()); 272 EXPECT_EQ(kVirtualURL.spec(), sync_data.virtual_url());
253 EXPECT_EQ(kReferrer.url.spec(), sync_data.referrer()); 273 EXPECT_EQ(kReferrer.url.spec(), sync_data.referrer());
254 EXPECT_EQ(kTitle, base::ASCIIToUTF16(sync_data.title())); 274 EXPECT_EQ(kTitle, base::ASCIIToUTF16(sync_data.title()));
255 EXPECT_TRUE(sync_data.state().empty()); 275 EXPECT_TRUE(sync_data.state().empty());
256 EXPECT_EQ(sync_pb::SyncEnums_PageTransition_AUTO_SUBFRAME, 276 EXPECT_EQ(sync_pb::SyncEnums_PageTransition_AUTO_SUBFRAME,
257 sync_data.page_transition()); 277 sync_data.page_transition());
258 EXPECT_TRUE(sync_data.has_redirect_type()); 278 EXPECT_TRUE(sync_data.has_redirect_type());
259 EXPECT_EQ(navigation_entry->GetUniqueID(), sync_data.unique_id()); 279 EXPECT_EQ(navigation_entry->GetUniqueID(), sync_data.unique_id());
260 EXPECT_EQ(syncer::TimeToProtoTime(kTimestamp), sync_data.timestamp_msec()); 280 EXPECT_EQ(syncer::TimeToProtoTime(kTimestamp), sync_data.timestamp_msec());
261 EXPECT_EQ(kTimestamp.ToInternalValue(), sync_data.global_id()); 281 EXPECT_EQ(kTimestamp.ToInternalValue(), sync_data.global_id());
262 EXPECT_EQ(kFaviconURL.spec(), sync_data.favicon_url()); 282 EXPECT_EQ(kFaviconURL.spec(), sync_data.favicon_url());
263 EXPECT_EQ(kHttpStatusCode, sync_data.http_status_code()); 283 EXPECT_EQ(kHttpStatusCode, sync_data.http_status_code());
284 // The proto navigation redirects don't include the final chain entry
285 // (because it didn't redirect) so the lengths should differ by 1.
286 ASSERT_EQ(3, sync_data.navigation_redirect_size() + 1);
287 EXPECT_EQ(navigation_entry->GetRedirectChain()[0].spec(),
288 sync_data.navigation_redirect(0).url());
289 EXPECT_EQ(navigation_entry->GetRedirectChain()[1].spec(),
290 sync_data.navigation_redirect(1).url());
291 EXPECT_FALSE(sync_data.has_last_navigation_redirect_url());
292 }
293
294 // Test that the last_navigation_redirect_url is set when needed.
295 // This test is just like the above, but with a different virtual_url.
296 // Create a NavigationEntry, convert it to a SerializedNavigationEntry, then
297 // create a sync protocol buffer from it. The protocol buffer should
298 // have a last_navigation_redirect_url.
299 TEST(SerializedNavigationEntryTest, LastNavigationRedirectUrl) {
300 const scoped_ptr<content::NavigationEntry> navigation_entry(
301 MakeNavigationEntryForTest());
302
303 navigation_entry->SetVirtualURL(kOtherURL);
304
305 const SerializedNavigationEntry& navigation =
306 SerializedNavigationEntry::FromNavigationEntry(kIndex, *navigation_entry);
307
308 const sync_pb::TabNavigation sync_data = navigation.ToSyncData();
309
310 EXPECT_TRUE(sync_data.has_last_navigation_redirect_url());
311 EXPECT_EQ(kVirtualURL.spec(), sync_data.last_navigation_redirect_url());
312
313 // The redirect chain should be the same as in the above test.
314 ASSERT_EQ(3, sync_data.navigation_redirect_size() + 1);
315 EXPECT_EQ(navigation_entry->GetRedirectChain()[0].spec(),
316 sync_data.navigation_redirect(0).url());
317 EXPECT_EQ(navigation_entry->GetRedirectChain()[1].spec(),
318 sync_data.navigation_redirect(1).url());
264 } 319 }
265 320
266 // Ensure all transition types and qualifiers are converted to/from the sync 321 // Ensure all transition types and qualifiers are converted to/from the sync
267 // SerializedNavigationEntry representation properly. 322 // SerializedNavigationEntry representation properly.
268 TEST(SerializedNavigationEntryTest, TransitionTypes) { 323 TEST(SerializedNavigationEntryTest, TransitionTypes) {
269 scoped_ptr<content::NavigationEntry> navigation_entry( 324 scoped_ptr<content::NavigationEntry> navigation_entry(
270 MakeNavigationEntryForTest()); 325 MakeNavigationEntryForTest());
271 for (uint32 core_type = content::PAGE_TRANSITION_LINK; 326 for (uint32 core_type = content::PAGE_TRANSITION_LINK;
272 core_type != content::PAGE_TRANSITION_LAST_CORE; ++core_type) { 327 core_type != content::PAGE_TRANSITION_LAST_CORE; ++core_type) {
273 // Because qualifier is a uint32, left shifting will eventually overflow 328 // Because qualifier is a uint32, left shifting will eventually overflow
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 EXPECT_EQ(kSearchTerms, navigation.search_terms()); 380 EXPECT_EQ(kSearchTerms, navigation.search_terms());
326 EXPECT_EQ(kFaviconURL, navigation.favicon_url()); 381 EXPECT_EQ(kFaviconURL, navigation.favicon_url());
327 EXPECT_EQ(kHttpStatusCode, navigation.http_status_code()); 382 EXPECT_EQ(kHttpStatusCode, navigation.http_status_code());
328 383
329 content::PageState empty_state; 384 content::PageState empty_state;
330 EXPECT_TRUE(empty_state.Equals(empty_state.RemoveReferrer())); 385 EXPECT_TRUE(empty_state.Equals(empty_state.RemoveReferrer()));
331 } 386 }
332 387
333 } // namespace 388 } // namespace
334 } // namespace sessions 389 } // namespace sessions
OLDNEW
« no previous file with comments | « components/sessions/serialized_navigation_entry.cc ('k') | content/browser/frame_host/navigation_controller_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698