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 16 matching lines...) Expand all Loading... |
27 namespace sessions { | 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 content::PageState kPageState = |
| 38 content::PageState::CreateFromEncodedData("page state"); |
38 const content::PageTransition kTransitionType = | 39 const content::PageTransition kTransitionType = |
39 static_cast<content::PageTransition>( | 40 static_cast<content::PageTransition>( |
40 content::PAGE_TRANSITION_AUTO_SUBFRAME | | 41 content::PAGE_TRANSITION_AUTO_SUBFRAME | |
41 content::PAGE_TRANSITION_HOME_PAGE | | 42 content::PAGE_TRANSITION_HOME_PAGE | |
42 content::PAGE_TRANSITION_CLIENT_REDIRECT); | 43 content::PAGE_TRANSITION_CLIENT_REDIRECT); |
43 const bool kHasPostData = true; | 44 const bool kHasPostData = true; |
44 const int64 kPostID = 100; | 45 const int64 kPostID = 100; |
45 const GURL kOriginalRequestURL("http://www.original-request.com"); | 46 const GURL kOriginalRequestURL("http://www.original-request.com"); |
46 const bool kIsOverridingUserAgent = true; | 47 const bool kIsOverridingUserAgent = true; |
47 const base::Time kTimestamp = syncer::ProtoTimeToTime(100); | 48 const base::Time kTimestamp = syncer::ProtoTimeToTime(100); |
48 const string16 kSearchTerms = ASCIIToUTF16("my search terms"); | 49 const string16 kSearchTerms = ASCIIToUTF16("my search terms"); |
49 const GURL kFaviconURL("http://virtual-url.com/favicon.ico"); | 50 const GURL kFaviconURL("http://virtual-url.com/favicon.ico"); |
50 | 51 |
51 const int kPageID = 10; | 52 const int kPageID = 10; |
52 | 53 |
53 // Create a NavigationEntry from the constants above. | 54 // Create a NavigationEntry from the constants above. |
54 scoped_ptr<content::NavigationEntry> MakeNavigationEntryForTest() { | 55 scoped_ptr<content::NavigationEntry> MakeNavigationEntryForTest() { |
55 scoped_ptr<content::NavigationEntry> navigation_entry( | 56 scoped_ptr<content::NavigationEntry> navigation_entry( |
56 content::NavigationEntry::Create()); | 57 content::NavigationEntry::Create()); |
57 navigation_entry->SetReferrer(kReferrer); | 58 navigation_entry->SetReferrer(kReferrer); |
58 navigation_entry->SetVirtualURL(kVirtualURL); | 59 navigation_entry->SetVirtualURL(kVirtualURL); |
59 navigation_entry->SetTitle(kTitle); | 60 navigation_entry->SetTitle(kTitle); |
60 navigation_entry->SetContentState(kContentState); | 61 navigation_entry->SetPageState(kPageState); |
61 navigation_entry->SetTransitionType(kTransitionType); | 62 navigation_entry->SetTransitionType(kTransitionType); |
62 navigation_entry->SetHasPostData(kHasPostData); | 63 navigation_entry->SetHasPostData(kHasPostData); |
63 navigation_entry->SetPostID(kPostID); | 64 navigation_entry->SetPostID(kPostID); |
64 navigation_entry->SetOriginalRequestURL(kOriginalRequestURL); | 65 navigation_entry->SetOriginalRequestURL(kOriginalRequestURL); |
65 navigation_entry->SetIsOverridingUserAgent(kIsOverridingUserAgent); | 66 navigation_entry->SetIsOverridingUserAgent(kIsOverridingUserAgent); |
66 navigation_entry->SetTimestamp(kTimestamp); | 67 navigation_entry->SetTimestamp(kTimestamp); |
67 navigation_entry->SetExtraData(kSearchTermsKey, kSearchTerms); | 68 navigation_entry->SetExtraData(kSearchTermsKey, kSearchTerms); |
68 navigation_entry->GetFavicon().valid = true; | 69 navigation_entry->GetFavicon().valid = true; |
69 navigation_entry->GetFavicon().url = kFaviconURL; | 70 navigation_entry->GetFavicon().url = kFaviconURL; |
70 return navigation_entry.Pass(); | 71 return navigation_entry.Pass(); |
71 } | 72 } |
72 | 73 |
73 // Create a sync_pb::TabNavigation from the constants above. | 74 // Create a sync_pb::TabNavigation from the constants above. |
74 sync_pb::TabNavigation MakeSyncDataForTest() { | 75 sync_pb::TabNavigation MakeSyncDataForTest() { |
75 sync_pb::TabNavigation sync_data; | 76 sync_pb::TabNavigation sync_data; |
76 sync_data.set_virtual_url(kVirtualURL.spec()); | 77 sync_data.set_virtual_url(kVirtualURL.spec()); |
77 sync_data.set_referrer(kReferrer.url.spec()); | 78 sync_data.set_referrer(kReferrer.url.spec()); |
78 sync_data.set_title(UTF16ToUTF8(kTitle)); | 79 sync_data.set_title(UTF16ToUTF8(kTitle)); |
79 sync_data.set_state(kContentState); | 80 sync_data.set_state(kPageState.ToEncodedData()); |
80 sync_data.set_page_transition( | 81 sync_data.set_page_transition( |
81 sync_pb::SyncEnums_PageTransition_AUTO_SUBFRAME); | 82 sync_pb::SyncEnums_PageTransition_AUTO_SUBFRAME); |
82 sync_data.set_unique_id(kUniqueID); | 83 sync_data.set_unique_id(kUniqueID); |
83 sync_data.set_timestamp_msec(syncer::TimeToProtoTime(kTimestamp)); | 84 sync_data.set_timestamp_msec(syncer::TimeToProtoTime(kTimestamp)); |
84 sync_data.set_redirect_type(sync_pb::SyncEnums::CLIENT_REDIRECT); | 85 sync_data.set_redirect_type(sync_pb::SyncEnums::CLIENT_REDIRECT); |
85 sync_data.set_navigation_home_page(true); | 86 sync_data.set_navigation_home_page(true); |
86 sync_data.set_search_terms(UTF16ToUTF8(kSearchTerms)); | 87 sync_data.set_search_terms(UTF16ToUTF8(kSearchTerms)); |
87 sync_data.set_favicon_url(kFaviconURL.spec()); | 88 sync_data.set_favicon_url(kFaviconURL.spec()); |
88 return sync_data; | 89 return sync_data; |
89 } | 90 } |
90 | 91 |
91 // Create a default SerializedNavigationEntry. All its fields should be | 92 // Create a default SerializedNavigationEntry. All its fields should be |
92 // initialized to their respective default values. | 93 // initialized to their respective default values. |
93 TEST(SerializedNavigationEntryTest, DefaultInitializer) { | 94 TEST(SerializedNavigationEntryTest, DefaultInitializer) { |
94 const SerializedNavigationEntry navigation; | 95 const SerializedNavigationEntry navigation; |
95 EXPECT_EQ(-1, navigation.index()); | 96 EXPECT_EQ(-1, navigation.index()); |
96 EXPECT_EQ(0, navigation.unique_id()); | 97 EXPECT_EQ(0, navigation.unique_id()); |
97 EXPECT_EQ(GURL(), navigation.referrer().url); | 98 EXPECT_EQ(GURL(), navigation.referrer().url); |
98 EXPECT_EQ(WebKit::WebReferrerPolicyDefault, navigation.referrer().policy); | 99 EXPECT_EQ(WebKit::WebReferrerPolicyDefault, navigation.referrer().policy); |
99 EXPECT_EQ(GURL(), navigation.virtual_url()); | 100 EXPECT_EQ(GURL(), navigation.virtual_url()); |
100 EXPECT_TRUE(navigation.title().empty()); | 101 EXPECT_TRUE(navigation.title().empty()); |
101 EXPECT_TRUE(navigation.content_state().empty()); | 102 EXPECT_FALSE(navigation.page_state().IsValid()); |
102 EXPECT_EQ(content::PAGE_TRANSITION_TYPED, navigation.transition_type()); | 103 EXPECT_EQ(content::PAGE_TRANSITION_TYPED, navigation.transition_type()); |
103 EXPECT_FALSE(navigation.has_post_data()); | 104 EXPECT_FALSE(navigation.has_post_data()); |
104 EXPECT_EQ(-1, navigation.post_id()); | 105 EXPECT_EQ(-1, navigation.post_id()); |
105 EXPECT_EQ(GURL(), navigation.original_request_url()); | 106 EXPECT_EQ(GURL(), navigation.original_request_url()); |
106 EXPECT_FALSE(navigation.is_overriding_user_agent()); | 107 EXPECT_FALSE(navigation.is_overriding_user_agent()); |
107 EXPECT_TRUE(navigation.timestamp().is_null()); | 108 EXPECT_TRUE(navigation.timestamp().is_null()); |
108 EXPECT_TRUE(navigation.search_terms().empty()); | 109 EXPECT_TRUE(navigation.search_terms().empty()); |
109 EXPECT_FALSE(navigation.favicon_url().is_valid()); | 110 EXPECT_FALSE(navigation.favicon_url().is_valid()); |
110 } | 111 } |
111 | 112 |
112 // Create a SerializedNavigationEntry from a NavigationEntry. All its fields | 113 // Create a SerializedNavigationEntry from a NavigationEntry. All its fields |
113 // should match the NavigationEntry's. | 114 // should match the NavigationEntry's. |
114 TEST(SerializedNavigationEntryTest, FromNavigationEntry) { | 115 TEST(SerializedNavigationEntryTest, FromNavigationEntry) { |
115 const scoped_ptr<content::NavigationEntry> navigation_entry( | 116 const scoped_ptr<content::NavigationEntry> navigation_entry( |
116 MakeNavigationEntryForTest()); | 117 MakeNavigationEntryForTest()); |
117 | 118 |
118 const SerializedNavigationEntry& navigation = | 119 const SerializedNavigationEntry& navigation = |
119 SerializedNavigationEntry::FromNavigationEntry(kIndex, *navigation_entry); | 120 SerializedNavigationEntry::FromNavigationEntry(kIndex, *navigation_entry); |
120 | 121 |
121 EXPECT_EQ(kIndex, navigation.index()); | 122 EXPECT_EQ(kIndex, navigation.index()); |
122 | 123 |
123 EXPECT_EQ(navigation_entry->GetUniqueID(), navigation.unique_id()); | 124 EXPECT_EQ(navigation_entry->GetUniqueID(), navigation.unique_id()); |
124 EXPECT_EQ(kReferrer.url, navigation.referrer().url); | 125 EXPECT_EQ(kReferrer.url, navigation.referrer().url); |
125 EXPECT_EQ(kReferrer.policy, navigation.referrer().policy); | 126 EXPECT_EQ(kReferrer.policy, navigation.referrer().policy); |
126 EXPECT_EQ(kVirtualURL, navigation.virtual_url()); | 127 EXPECT_EQ(kVirtualURL, navigation.virtual_url()); |
127 EXPECT_EQ(kTitle, navigation.title()); | 128 EXPECT_EQ(kTitle, navigation.title()); |
128 EXPECT_EQ(kContentState, navigation.content_state()); | 129 EXPECT_EQ(kPageState, navigation.page_state()); |
129 EXPECT_EQ(kTransitionType, navigation.transition_type()); | 130 EXPECT_EQ(kTransitionType, navigation.transition_type()); |
130 EXPECT_EQ(kHasPostData, navigation.has_post_data()); | 131 EXPECT_EQ(kHasPostData, navigation.has_post_data()); |
131 EXPECT_EQ(kPostID, navigation.post_id()); | 132 EXPECT_EQ(kPostID, navigation.post_id()); |
132 EXPECT_EQ(kOriginalRequestURL, navigation.original_request_url()); | 133 EXPECT_EQ(kOriginalRequestURL, navigation.original_request_url()); |
133 EXPECT_EQ(kIsOverridingUserAgent, navigation.is_overriding_user_agent()); | 134 EXPECT_EQ(kIsOverridingUserAgent, navigation.is_overriding_user_agent()); |
134 EXPECT_EQ(kTimestamp, navigation.timestamp()); | 135 EXPECT_EQ(kTimestamp, navigation.timestamp()); |
135 EXPECT_EQ(kFaviconURL, navigation.favicon_url()); | 136 EXPECT_EQ(kFaviconURL, navigation.favicon_url()); |
136 } | 137 } |
137 | 138 |
138 // Create a SerializedNavigationEntry from a sync_pb::TabNavigation. All its | 139 // Create a SerializedNavigationEntry from a sync_pb::TabNavigation. All its |
139 // fields should match the protocol buffer's if it exists there, and | 140 // fields should match the protocol buffer's if it exists there, and |
140 // sbould be set to the default value otherwise. | 141 // sbould be set to the default value otherwise. |
141 TEST(SerializedNavigationEntryTest, FromSyncData) { | 142 TEST(SerializedNavigationEntryTest, FromSyncData) { |
142 const sync_pb::TabNavigation sync_data = MakeSyncDataForTest(); | 143 const sync_pb::TabNavigation sync_data = MakeSyncDataForTest(); |
143 | 144 |
144 const SerializedNavigationEntry& navigation = | 145 const SerializedNavigationEntry& navigation = |
145 SerializedNavigationEntry::FromSyncData(kIndex, sync_data); | 146 SerializedNavigationEntry::FromSyncData(kIndex, sync_data); |
146 | 147 |
147 EXPECT_EQ(kIndex, navigation.index()); | 148 EXPECT_EQ(kIndex, navigation.index()); |
148 EXPECT_EQ(kUniqueID, navigation.unique_id()); | 149 EXPECT_EQ(kUniqueID, navigation.unique_id()); |
149 EXPECT_EQ(kReferrer.url, navigation.referrer().url); | 150 EXPECT_EQ(kReferrer.url, navigation.referrer().url); |
150 EXPECT_EQ(WebKit::WebReferrerPolicyDefault, navigation.referrer().policy); | 151 EXPECT_EQ(WebKit::WebReferrerPolicyDefault, navigation.referrer().policy); |
151 EXPECT_EQ(kVirtualURL, navigation.virtual_url()); | 152 EXPECT_EQ(kVirtualURL, navigation.virtual_url()); |
152 EXPECT_EQ(kTitle, navigation.title()); | 153 EXPECT_EQ(kTitle, navigation.title()); |
153 EXPECT_EQ(kContentState, navigation.content_state()); | 154 EXPECT_EQ(kPageState, navigation.page_state()); |
154 EXPECT_EQ(kTransitionType, navigation.transition_type()); | 155 EXPECT_EQ(kTransitionType, navigation.transition_type()); |
155 EXPECT_FALSE(navigation.has_post_data()); | 156 EXPECT_FALSE(navigation.has_post_data()); |
156 EXPECT_EQ(-1, navigation.post_id()); | 157 EXPECT_EQ(-1, navigation.post_id()); |
157 EXPECT_EQ(GURL(), navigation.original_request_url()); | 158 EXPECT_EQ(GURL(), navigation.original_request_url()); |
158 EXPECT_FALSE(navigation.is_overriding_user_agent()); | 159 EXPECT_FALSE(navigation.is_overriding_user_agent()); |
159 EXPECT_TRUE(navigation.timestamp().is_null()); | 160 EXPECT_TRUE(navigation.timestamp().is_null()); |
160 EXPECT_EQ(kSearchTerms, navigation.search_terms()); | 161 EXPECT_EQ(kSearchTerms, navigation.search_terms()); |
161 EXPECT_EQ(kFaviconURL, navigation.favicon_url()); | 162 EXPECT_EQ(kFaviconURL, navigation.favicon_url()); |
162 } | 163 } |
163 | 164 |
(...skipping 12 matching lines...) Expand all Loading... |
176 PickleIterator pickle_iterator(pickle); | 177 PickleIterator pickle_iterator(pickle); |
177 EXPECT_TRUE(new_navigation.ReadFromPickle(&pickle_iterator)); | 178 EXPECT_TRUE(new_navigation.ReadFromPickle(&pickle_iterator)); |
178 | 179 |
179 EXPECT_EQ(kIndex, new_navigation.index()); | 180 EXPECT_EQ(kIndex, new_navigation.index()); |
180 | 181 |
181 EXPECT_EQ(0, new_navigation.unique_id()); | 182 EXPECT_EQ(0, new_navigation.unique_id()); |
182 EXPECT_EQ(kReferrer.url, new_navigation.referrer().url); | 183 EXPECT_EQ(kReferrer.url, new_navigation.referrer().url); |
183 EXPECT_EQ(kReferrer.policy, new_navigation.referrer().policy); | 184 EXPECT_EQ(kReferrer.policy, new_navigation.referrer().policy); |
184 EXPECT_EQ(kVirtualURL, new_navigation.virtual_url()); | 185 EXPECT_EQ(kVirtualURL, new_navigation.virtual_url()); |
185 EXPECT_EQ(kTitle, new_navigation.title()); | 186 EXPECT_EQ(kTitle, new_navigation.title()); |
186 EXPECT_TRUE(new_navigation.content_state().empty()); | 187 EXPECT_FALSE(new_navigation.page_state().IsValid()); |
187 EXPECT_EQ(kTransitionType, new_navigation.transition_type()); | 188 EXPECT_EQ(kTransitionType, new_navigation.transition_type()); |
188 EXPECT_EQ(kHasPostData, new_navigation.has_post_data()); | 189 EXPECT_EQ(kHasPostData, new_navigation.has_post_data()); |
189 EXPECT_EQ(-1, new_navigation.post_id()); | 190 EXPECT_EQ(-1, new_navigation.post_id()); |
190 EXPECT_EQ(kOriginalRequestURL, new_navigation.original_request_url()); | 191 EXPECT_EQ(kOriginalRequestURL, new_navigation.original_request_url()); |
191 EXPECT_EQ(kIsOverridingUserAgent, new_navigation.is_overriding_user_agent()); | 192 EXPECT_EQ(kIsOverridingUserAgent, new_navigation.is_overriding_user_agent()); |
192 EXPECT_EQ(kTimestamp, new_navigation.timestamp()); | 193 EXPECT_EQ(kTimestamp, new_navigation.timestamp()); |
193 EXPECT_EQ(kSearchTerms, new_navigation.search_terms()); | 194 EXPECT_EQ(kSearchTerms, new_navigation.search_terms()); |
194 } | 195 } |
195 | 196 |
196 // Create a NavigationEntry, then create another one by converting to | 197 // Create a NavigationEntry, then create another one by converting to |
197 // a SerializedNavigationEntry and back. The new one should match the old one | 198 // a SerializedNavigationEntry and back. The new one should match the old one |
198 // except for fields that aren't preserved, which should be set to | 199 // except for fields that aren't preserved, which should be set to |
199 // expected values. | 200 // expected values. |
200 TEST(SerializedNavigationEntryTest, ToNavigationEntry) { | 201 TEST(SerializedNavigationEntryTest, ToNavigationEntry) { |
201 const scoped_ptr<content::NavigationEntry> old_navigation_entry( | 202 const scoped_ptr<content::NavigationEntry> old_navigation_entry( |
202 MakeNavigationEntryForTest()); | 203 MakeNavigationEntryForTest()); |
203 | 204 |
204 const SerializedNavigationEntry& navigation = | 205 const SerializedNavigationEntry& navigation = |
205 SerializedNavigationEntry::FromNavigationEntry(kIndex, | 206 SerializedNavigationEntry::FromNavigationEntry(kIndex, |
206 *old_navigation_entry); | 207 *old_navigation_entry); |
207 | 208 |
208 const scoped_ptr<content::NavigationEntry> new_navigation_entry( | 209 const scoped_ptr<content::NavigationEntry> new_navigation_entry( |
209 navigation.ToNavigationEntry(kPageID, NULL)); | 210 navigation.ToNavigationEntry(kPageID, NULL)); |
210 | 211 |
211 EXPECT_EQ(kReferrer.url, new_navigation_entry->GetReferrer().url); | 212 EXPECT_EQ(kReferrer.url, new_navigation_entry->GetReferrer().url); |
212 EXPECT_EQ(kReferrer.policy, new_navigation_entry->GetReferrer().policy); | 213 EXPECT_EQ(kReferrer.policy, new_navigation_entry->GetReferrer().policy); |
213 EXPECT_EQ(kVirtualURL, new_navigation_entry->GetVirtualURL()); | 214 EXPECT_EQ(kVirtualURL, new_navigation_entry->GetVirtualURL()); |
214 EXPECT_EQ(kTitle, new_navigation_entry->GetTitle()); | 215 EXPECT_EQ(kTitle, new_navigation_entry->GetTitle()); |
215 EXPECT_EQ(kContentState, new_navigation_entry->GetContentState()); | 216 EXPECT_EQ(kPageState, new_navigation_entry->GetPageState()); |
216 EXPECT_EQ(kPageID, new_navigation_entry->GetPageID()); | 217 EXPECT_EQ(kPageID, new_navigation_entry->GetPageID()); |
217 EXPECT_EQ(content::PAGE_TRANSITION_RELOAD, | 218 EXPECT_EQ(content::PAGE_TRANSITION_RELOAD, |
218 new_navigation_entry->GetTransitionType()); | 219 new_navigation_entry->GetTransitionType()); |
219 EXPECT_EQ(kHasPostData, new_navigation_entry->GetHasPostData()); | 220 EXPECT_EQ(kHasPostData, new_navigation_entry->GetHasPostData()); |
220 EXPECT_EQ(kPostID, new_navigation_entry->GetPostID()); | 221 EXPECT_EQ(kPostID, new_navigation_entry->GetPostID()); |
221 EXPECT_EQ(kOriginalRequestURL, | 222 EXPECT_EQ(kOriginalRequestURL, |
222 new_navigation_entry->GetOriginalRequestURL()); | 223 new_navigation_entry->GetOriginalRequestURL()); |
223 EXPECT_EQ(kIsOverridingUserAgent, | 224 EXPECT_EQ(kIsOverridingUserAgent, |
224 new_navigation_entry->GetIsOverridingUserAgent()); | 225 new_navigation_entry->GetIsOverridingUserAgent()); |
225 string16 search_terms; | 226 string16 search_terms; |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
280 const content::PageTransition constructed_transition = | 281 const content::PageTransition constructed_transition = |
281 constructed_nav.transition_type(); | 282 constructed_nav.transition_type(); |
282 | 283 |
283 EXPECT_EQ(transition, constructed_transition); | 284 EXPECT_EQ(transition, constructed_transition); |
284 } | 285 } |
285 } | 286 } |
286 } | 287 } |
287 | 288 |
288 } // namespace | 289 } // namespace |
289 } // namespace sessions | 290 } // namespace sessions |
OLD | NEW |