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" |
11 #include "base/memory/scoped_ptr.h" | 11 #include "base/memory/scoped_ptr.h" |
12 #include "base/pickle.h" | 12 #include "base/pickle.h" |
13 #include "base/strings/string16.h" | 13 #include "base/strings/string16.h" |
14 #include "base/strings/string_number_conversions.h" | 14 #include "base/strings/string_number_conversions.h" |
15 #include "base/strings/utf_string_conversions.h" | 15 #include "base/strings/utf_string_conversions.h" |
16 #include "base/time/time.h" | 16 #include "base/time/time.h" |
17 #include "content/public/browser/favicon_status.h" | 17 #include "content/public/browser/favicon_status.h" |
18 #include "content/public/browser/navigation_entry.h" | 18 #include "content/public/browser/navigation_entry.h" |
19 #include "content/public/common/page_transition_types.h" | |
20 #include "content/public/common/referrer.h" | 19 #include "content/public/common/referrer.h" |
21 #include "sync/protocol/session_specifics.pb.h" | 20 #include "sync/protocol/session_specifics.pb.h" |
22 #include "sync/util/time.h" | 21 #include "sync/util/time.h" |
23 #include "testing/gtest/include/gtest/gtest.h" | 22 #include "testing/gtest/include/gtest/gtest.h" |
24 #include "third_party/WebKit/public/platform/WebReferrerPolicy.h" | 23 #include "third_party/WebKit/public/platform/WebReferrerPolicy.h" |
| 24 #include "ui/base/page_transition_types.h" |
25 #include "url/gurl.h" | 25 #include "url/gurl.h" |
26 | 26 |
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 blink::WebReferrerPolicyAlways); | 34 blink::WebReferrerPolicyAlways); |
35 const GURL kVirtualURL("http://www.virtual-url.com"); | 35 const GURL kVirtualURL("http://www.virtual-url.com"); |
36 const base::string16 kTitle = base::ASCIIToUTF16("title"); | 36 const base::string16 kTitle = base::ASCIIToUTF16("title"); |
37 const content::PageState kPageState = | 37 const content::PageState kPageState = |
38 content::PageState::CreateFromEncodedData("page state"); | 38 content::PageState::CreateFromEncodedData("page state"); |
39 const content::PageTransition kTransitionType = | 39 const ui::PageTransition kTransitionType = |
40 static_cast<content::PageTransition>( | 40 ui::PageTransitionFromInt( |
41 content::PAGE_TRANSITION_AUTO_SUBFRAME | | 41 ui::PAGE_TRANSITION_AUTO_SUBFRAME | |
42 content::PAGE_TRANSITION_HOME_PAGE | | 42 ui::PAGE_TRANSITION_HOME_PAGE | |
43 content::PAGE_TRANSITION_CLIENT_REDIRECT); | 43 ui::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"); | 52 const GURL kRedirectURL0("http://go/redirect0"); |
53 const GURL kRedirectURL1("http://go/redirect1"); | 53 const GURL kRedirectURL1("http://go/redirect1"); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
106 // initialized to their respective default values. | 106 // initialized to their respective default values. |
107 TEST(SerializedNavigationEntryTest, DefaultInitializer) { | 107 TEST(SerializedNavigationEntryTest, DefaultInitializer) { |
108 const SerializedNavigationEntry navigation; | 108 const SerializedNavigationEntry navigation; |
109 EXPECT_EQ(-1, navigation.index()); | 109 EXPECT_EQ(-1, navigation.index()); |
110 EXPECT_EQ(0, navigation.unique_id()); | 110 EXPECT_EQ(0, navigation.unique_id()); |
111 EXPECT_EQ(GURL(), navigation.referrer().url); | 111 EXPECT_EQ(GURL(), navigation.referrer().url); |
112 EXPECT_EQ(blink::WebReferrerPolicyDefault, navigation.referrer().policy); | 112 EXPECT_EQ(blink::WebReferrerPolicyDefault, navigation.referrer().policy); |
113 EXPECT_EQ(GURL(), navigation.virtual_url()); | 113 EXPECT_EQ(GURL(), navigation.virtual_url()); |
114 EXPECT_TRUE(navigation.title().empty()); | 114 EXPECT_TRUE(navigation.title().empty()); |
115 EXPECT_FALSE(navigation.page_state().IsValid()); | 115 EXPECT_FALSE(navigation.page_state().IsValid()); |
116 EXPECT_EQ(content::PAGE_TRANSITION_TYPED, navigation.transition_type()); | 116 EXPECT_EQ(ui::PAGE_TRANSITION_TYPED, navigation.transition_type()); |
117 EXPECT_FALSE(navigation.has_post_data()); | 117 EXPECT_FALSE(navigation.has_post_data()); |
118 EXPECT_EQ(-1, navigation.post_id()); | 118 EXPECT_EQ(-1, navigation.post_id()); |
119 EXPECT_EQ(GURL(), navigation.original_request_url()); | 119 EXPECT_EQ(GURL(), navigation.original_request_url()); |
120 EXPECT_FALSE(navigation.is_overriding_user_agent()); | 120 EXPECT_FALSE(navigation.is_overriding_user_agent()); |
121 EXPECT_TRUE(navigation.timestamp().is_null()); | 121 EXPECT_TRUE(navigation.timestamp().is_null()); |
122 EXPECT_TRUE(navigation.search_terms().empty()); | 122 EXPECT_TRUE(navigation.search_terms().empty()); |
123 EXPECT_FALSE(navigation.favicon_url().is_valid()); | 123 EXPECT_FALSE(navigation.favicon_url().is_valid()); |
124 EXPECT_EQ(0, navigation.http_status_code()); | 124 EXPECT_EQ(0, navigation.http_status_code()); |
125 EXPECT_EQ(0U, navigation.redirect_chain().size()); | 125 EXPECT_EQ(0U, navigation.redirect_chain().size()); |
126 } | 126 } |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 | 232 |
233 const scoped_ptr<content::NavigationEntry> new_navigation_entry( | 233 const scoped_ptr<content::NavigationEntry> new_navigation_entry( |
234 navigation.ToNavigationEntry(kPageID, NULL)); | 234 navigation.ToNavigationEntry(kPageID, NULL)); |
235 | 235 |
236 EXPECT_EQ(kReferrer.url, new_navigation_entry->GetReferrer().url); | 236 EXPECT_EQ(kReferrer.url, new_navigation_entry->GetReferrer().url); |
237 EXPECT_EQ(kReferrer.policy, new_navigation_entry->GetReferrer().policy); | 237 EXPECT_EQ(kReferrer.policy, new_navigation_entry->GetReferrer().policy); |
238 EXPECT_EQ(kVirtualURL, new_navigation_entry->GetVirtualURL()); | 238 EXPECT_EQ(kVirtualURL, new_navigation_entry->GetVirtualURL()); |
239 EXPECT_EQ(kTitle, new_navigation_entry->GetTitle()); | 239 EXPECT_EQ(kTitle, new_navigation_entry->GetTitle()); |
240 EXPECT_EQ(kPageState, new_navigation_entry->GetPageState()); | 240 EXPECT_EQ(kPageState, new_navigation_entry->GetPageState()); |
241 EXPECT_EQ(kPageID, new_navigation_entry->GetPageID()); | 241 EXPECT_EQ(kPageID, new_navigation_entry->GetPageID()); |
242 EXPECT_EQ(content::PAGE_TRANSITION_RELOAD, | 242 EXPECT_EQ(ui::PAGE_TRANSITION_RELOAD, |
243 new_navigation_entry->GetTransitionType()); | 243 new_navigation_entry->GetTransitionType()); |
244 EXPECT_EQ(kHasPostData, new_navigation_entry->GetHasPostData()); | 244 EXPECT_EQ(kHasPostData, new_navigation_entry->GetHasPostData()); |
245 EXPECT_EQ(kPostID, new_navigation_entry->GetPostID()); | 245 EXPECT_EQ(kPostID, new_navigation_entry->GetPostID()); |
246 EXPECT_EQ(kOriginalRequestURL, | 246 EXPECT_EQ(kOriginalRequestURL, |
247 new_navigation_entry->GetOriginalRequestURL()); | 247 new_navigation_entry->GetOriginalRequestURL()); |
248 EXPECT_EQ(kIsOverridingUserAgent, | 248 EXPECT_EQ(kIsOverridingUserAgent, |
249 new_navigation_entry->GetIsOverridingUserAgent()); | 249 new_navigation_entry->GetIsOverridingUserAgent()); |
250 base::string16 search_terms; | 250 base::string16 search_terms; |
251 new_navigation_entry->GetExtraData(kSearchTermsKey, &search_terms); | 251 new_navigation_entry->GetExtraData(kSearchTermsKey, &search_terms); |
252 EXPECT_EQ(kSearchTerms, search_terms); | 252 EXPECT_EQ(kSearchTerms, search_terms); |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 sync_data.navigation_redirect(0).url()); | 316 sync_data.navigation_redirect(0).url()); |
317 EXPECT_EQ(navigation_entry->GetRedirectChain()[1].spec(), | 317 EXPECT_EQ(navigation_entry->GetRedirectChain()[1].spec(), |
318 sync_data.navigation_redirect(1).url()); | 318 sync_data.navigation_redirect(1).url()); |
319 } | 319 } |
320 | 320 |
321 // 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 |
322 // SerializedNavigationEntry representation properly. | 322 // SerializedNavigationEntry representation properly. |
323 TEST(SerializedNavigationEntryTest, TransitionTypes) { | 323 TEST(SerializedNavigationEntryTest, TransitionTypes) { |
324 scoped_ptr<content::NavigationEntry> navigation_entry( | 324 scoped_ptr<content::NavigationEntry> navigation_entry( |
325 MakeNavigationEntryForTest()); | 325 MakeNavigationEntryForTest()); |
326 for (uint32 core_type = content::PAGE_TRANSITION_LINK; | 326 for (uint32 core_type = ui::PAGE_TRANSITION_LINK; |
327 core_type != content::PAGE_TRANSITION_LAST_CORE; ++core_type) { | 327 core_type != ui::PAGE_TRANSITION_LAST_CORE; ++core_type) { |
328 // Because qualifier is a uint32, left shifting will eventually overflow | 328 // Because qualifier is a uint32, left shifting will eventually overflow |
329 // and hit zero again. SERVER_REDIRECT, as the last qualifier and also | 329 // and hit zero again. SERVER_REDIRECT, as the last qualifier and also |
330 // in place of the sign bit, is therefore the last transition before | 330 // in place of the sign bit, is therefore the last transition before |
331 // breaking. | 331 // breaking. |
332 for (uint32 qualifier = content::PAGE_TRANSITION_FORWARD_BACK; | 332 for (uint32 qualifier = ui::PAGE_TRANSITION_FORWARD_BACK; |
333 qualifier != 0; qualifier <<= 1) { | 333 qualifier != 0; qualifier <<= 1) { |
334 if (qualifier == 0x08000000) | 334 if (qualifier == 0x08000000) |
335 continue; // 0x08000000 is not a valid qualifier. | 335 continue; // 0x08000000 is not a valid qualifier. |
336 content::PageTransition transition = | 336 ui::PageTransition transition = |
337 static_cast<content::PageTransition>(core_type | qualifier); | 337 ui::PageTransitionFromInt(core_type | qualifier); |
338 | 338 |
339 navigation_entry->SetTransitionType(transition); | 339 navigation_entry->SetTransitionType(transition); |
340 const SerializedNavigationEntry& navigation = | 340 const SerializedNavigationEntry& navigation = |
341 SerializedNavigationEntry::FromNavigationEntry(kIndex, | 341 SerializedNavigationEntry::FromNavigationEntry(kIndex, |
342 *navigation_entry); | 342 *navigation_entry); |
343 const sync_pb::TabNavigation& sync_data = navigation.ToSyncData(); | 343 const sync_pb::TabNavigation& sync_data = navigation.ToSyncData(); |
344 const SerializedNavigationEntry& constructed_nav = | 344 const SerializedNavigationEntry& constructed_nav = |
345 SerializedNavigationEntry::FromSyncData(kIndex, sync_data); | 345 SerializedNavigationEntry::FromSyncData(kIndex, sync_data); |
346 const content::PageTransition constructed_transition = | 346 const ui::PageTransition constructed_transition = |
347 constructed_nav.transition_type(); | 347 constructed_nav.transition_type(); |
348 | 348 |
349 EXPECT_EQ(transition, constructed_transition); | 349 EXPECT_EQ(transition, constructed_transition); |
350 } | 350 } |
351 } | 351 } |
352 } | 352 } |
353 | 353 |
354 // Tests that the input data is sanitized when a SerializedNavigationEntry | 354 // Tests that the input data is sanitized when a SerializedNavigationEntry |
355 // is created from a pickle format. | 355 // is created from a pickle format. |
356 TEST(SerializedNavigationEntryTest, Sanitize) { | 356 TEST(SerializedNavigationEntryTest, Sanitize) { |
(...skipping 23 matching lines...) Expand all Loading... |
380 EXPECT_EQ(kSearchTerms, navigation.search_terms()); | 380 EXPECT_EQ(kSearchTerms, navigation.search_terms()); |
381 EXPECT_EQ(kFaviconURL, navigation.favicon_url()); | 381 EXPECT_EQ(kFaviconURL, navigation.favicon_url()); |
382 EXPECT_EQ(kHttpStatusCode, navigation.http_status_code()); | 382 EXPECT_EQ(kHttpStatusCode, navigation.http_status_code()); |
383 | 383 |
384 content::PageState empty_state; | 384 content::PageState empty_state; |
385 EXPECT_TRUE(empty_state.Equals(empty_state.RemoveReferrer())); | 385 EXPECT_TRUE(empty_state.Equals(empty_state.RemoveReferrer())); |
386 } | 386 } |
387 | 387 |
388 } // namespace | 388 } // namespace |
389 } // namespace sessions | 389 } // namespace sessions |
OLD | NEW |