OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |