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

Side by Side Diff: components/sessions/content/content_serialized_navigation_builder_unittest.cc

Issue 2310363002: Persist offline page info in a navigation entry if needed (Closed)
Patch Set: Fix win compiling error due to using unique_ptr map in SESSIONS_EXPORT class Created 4 years, 2 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/content/content_serialized_navigation_builder.h" 5 #include "components/sessions/content/content_serialized_navigation_builder.h"
6 6
7 #include "base/memory/ptr_util.h"
8 #include "base/strings/utf_string_conversions.h"
7 #include "components/sessions/content/content_record_password_state.h" 9 #include "components/sessions/content/content_record_password_state.h"
10 #include "components/sessions/content/content_serialized_navigation_driver.h"
11 #include "components/sessions/content/extended_info_handler.h"
8 #include "components/sessions/core/serialized_navigation_entry.h" 12 #include "components/sessions/core/serialized_navigation_entry.h"
9 #include "components/sessions/core/serialized_navigation_entry_test_helper.h" 13 #include "components/sessions/core/serialized_navigation_entry_test_helper.h"
10 #include "content/public/browser/favicon_status.h" 14 #include "content/public/browser/favicon_status.h"
11 #include "content/public/browser/navigation_entry.h" 15 #include "content/public/browser/navigation_entry.h"
12 #include "content/public/common/page_state.h" 16 #include "content/public/common/page_state.h"
13 #include "content/public/common/referrer.h" 17 #include "content/public/common/referrer.h"
14 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
15 19
16 namespace sessions { 20 namespace sessions {
17 21
18 namespace { 22 namespace {
23
24 const char kExtendedInfoKey1[] = "Key 1";
25 const char kExtendedInfoValue1[] = "Value 1";
26 const char kExtendedInfoKey2[] = "Key 2";
27 const char kExtendedInfoValue2[] = "Value 2";
28
29 class TestExtendedInfoHandler : public ExtendedInfoHandler {
30 public:
31 explicit TestExtendedInfoHandler(const std::string& key) : key_(key) {}
32 ~TestExtendedInfoHandler() override {}
33
34 std::string GetExtendedInfo(
35 const content::NavigationEntry& entry) const override {
36 base::string16 data;
37 entry.GetExtraData(key_, &data);
38 return base::UTF16ToASCII(data);
39 }
40
41 void RestoreExtendedInfo(const std::string& info,
42 content::NavigationEntry* entry) override {
43 entry->SetExtraData(key_, base::ASCIIToUTF16(info));
44 }
45
46 private:
47 std::string key_;
48
49 DISALLOW_COPY_AND_ASSIGN(TestExtendedInfoHandler);
50 };
51
19 // Create a NavigationEntry from the test_data constants in 52 // Create a NavigationEntry from the test_data constants in
20 // serialized_navigation_entry_test_helper.h. 53 // serialized_navigation_entry_test_helper.h.
21 std::unique_ptr<content::NavigationEntry> MakeNavigationEntryForTest() { 54 std::unique_ptr<content::NavigationEntry> MakeNavigationEntryForTest() {
22 std::unique_ptr<content::NavigationEntry> navigation_entry( 55 std::unique_ptr<content::NavigationEntry> navigation_entry(
23 content::NavigationEntry::Create()); 56 content::NavigationEntry::Create());
24 navigation_entry->SetReferrer(content::Referrer( 57 navigation_entry->SetReferrer(content::Referrer(
25 test_data::kReferrerURL, 58 test_data::kReferrerURL,
26 static_cast<blink::WebReferrerPolicy>(test_data::kReferrerPolicy))); 59 static_cast<blink::WebReferrerPolicy>(test_data::kReferrerPolicy)));
27 navigation_entry->SetVirtualURL(test_data::kVirtualURL); 60 navigation_entry->SetVirtualURL(test_data::kVirtualURL);
28 navigation_entry->SetTitle(test_data::kTitle); 61 navigation_entry->SetTitle(test_data::kTitle);
(...skipping 13 matching lines...) Expand all
42 navigation_entry->GetFavicon().url = test_data::kFaviconURL; 75 navigation_entry->GetFavicon().url = test_data::kFaviconURL;
43 navigation_entry->SetHttpStatusCode(test_data::kHttpStatusCode); 76 navigation_entry->SetHttpStatusCode(test_data::kHttpStatusCode);
44 std::vector<GURL> redirect_chain; 77 std::vector<GURL> redirect_chain;
45 redirect_chain.push_back(test_data::kRedirectURL0); 78 redirect_chain.push_back(test_data::kRedirectURL0);
46 redirect_chain.push_back(test_data::kRedirectURL1); 79 redirect_chain.push_back(test_data::kRedirectURL1);
47 redirect_chain.push_back(test_data::kVirtualURL); 80 redirect_chain.push_back(test_data::kVirtualURL);
48 navigation_entry->SetRedirectChain(redirect_chain); 81 navigation_entry->SetRedirectChain(redirect_chain);
49 return navigation_entry; 82 return navigation_entry;
50 } 83 }
51 84
85 void SetExtendedInfoForTest(content::NavigationEntry* entry) {
86 entry->SetExtraData(kExtendedInfoKey1,
87 base::ASCIIToUTF16(kExtendedInfoValue1));
88 entry->SetExtraData(kExtendedInfoKey2,
89 base::ASCIIToUTF16(kExtendedInfoValue2));
90 ContentSerializedNavigationDriver::GetInstance()->RegisterExtendedInfoHandler(
91 kExtendedInfoKey1, base::WrapUnique<ExtendedInfoHandler>(
92 new TestExtendedInfoHandler(kExtendedInfoKey1)));
93 ContentSerializedNavigationDriver::GetInstance()->RegisterExtendedInfoHandler(
94 kExtendedInfoKey2, base::WrapUnique<ExtendedInfoHandler>(
95 new TestExtendedInfoHandler(kExtendedInfoKey2)));
96 }
97
52 } // namespace 98 } // namespace
53 99
54 100
55 // Create a SerializedNavigationEntry from a NavigationEntry. All its fields 101 // Create a SerializedNavigationEntry from a NavigationEntry. All its fields
56 // should match the NavigationEntry's. 102 // should match the NavigationEntry's.
57 TEST(ContentSerializedNavigationBuilderTest, FromNavigationEntry) { 103 TEST(ContentSerializedNavigationBuilderTest, FromNavigationEntry) {
58 const std::unique_ptr<content::NavigationEntry> navigation_entry( 104 const std::unique_ptr<content::NavigationEntry> navigation_entry(
59 MakeNavigationEntryForTest()); 105 MakeNavigationEntryForTest());
106 SetExtendedInfoForTest(navigation_entry.get());
60 107
61 const SerializedNavigationEntry& navigation = 108 const SerializedNavigationEntry& navigation =
62 ContentSerializedNavigationBuilder::FromNavigationEntry( 109 ContentSerializedNavigationBuilder::FromNavigationEntry(
63 test_data::kIndex, *navigation_entry); 110 test_data::kIndex, *navigation_entry);
64 111
65 EXPECT_EQ(test_data::kIndex, navigation.index()); 112 EXPECT_EQ(test_data::kIndex, navigation.index());
66 113
67 EXPECT_EQ(navigation_entry->GetUniqueID(), navigation.unique_id()); 114 EXPECT_EQ(navigation_entry->GetUniqueID(), navigation.unique_id());
68 EXPECT_EQ(test_data::kReferrerURL, navigation.referrer_url()); 115 EXPECT_EQ(test_data::kReferrerURL, navigation.referrer_url());
69 EXPECT_EQ(test_data::kReferrerPolicy, navigation.referrer_policy()); 116 EXPECT_EQ(test_data::kReferrerPolicy, navigation.referrer_policy());
70 EXPECT_EQ(test_data::kVirtualURL, navigation.virtual_url()); 117 EXPECT_EQ(test_data::kVirtualURL, navigation.virtual_url());
71 EXPECT_EQ(test_data::kTitle, navigation.title()); 118 EXPECT_EQ(test_data::kTitle, navigation.title());
72 EXPECT_EQ(test_data::kEncodedPageState, navigation.encoded_page_state()); 119 EXPECT_EQ(test_data::kEncodedPageState, navigation.encoded_page_state());
73 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs( 120 EXPECT_TRUE(ui::PageTransitionTypeIncludingQualifiersIs(
74 navigation.transition_type(), test_data::kTransitionType)); 121 navigation.transition_type(), test_data::kTransitionType));
75 EXPECT_EQ(test_data::kHasPostData, navigation.has_post_data()); 122 EXPECT_EQ(test_data::kHasPostData, navigation.has_post_data());
76 EXPECT_EQ(test_data::kPostID, navigation.post_id()); 123 EXPECT_EQ(test_data::kPostID, navigation.post_id());
77 EXPECT_EQ(test_data::kOriginalRequestURL, navigation.original_request_url()); 124 EXPECT_EQ(test_data::kOriginalRequestURL, navigation.original_request_url());
78 EXPECT_EQ(test_data::kIsOverridingUserAgent, 125 EXPECT_EQ(test_data::kIsOverridingUserAgent,
79 navigation.is_overriding_user_agent()); 126 navigation.is_overriding_user_agent());
80 EXPECT_EQ(test_data::kTimestamp, navigation.timestamp()); 127 EXPECT_EQ(test_data::kTimestamp, navigation.timestamp());
81 EXPECT_EQ(test_data::kFaviconURL, navigation.favicon_url()); 128 EXPECT_EQ(test_data::kFaviconURL, navigation.favicon_url());
82 EXPECT_EQ(test_data::kHttpStatusCode, navigation.http_status_code()); 129 EXPECT_EQ(test_data::kHttpStatusCode, navigation.http_status_code());
83 ASSERT_EQ(3U, navigation.redirect_chain().size()); 130 ASSERT_EQ(3U, navigation.redirect_chain().size());
84 EXPECT_EQ(test_data::kRedirectURL0, navigation.redirect_chain()[0]); 131 EXPECT_EQ(test_data::kRedirectURL0, navigation.redirect_chain()[0]);
85 EXPECT_EQ(test_data::kRedirectURL1, navigation.redirect_chain()[1]); 132 EXPECT_EQ(test_data::kRedirectURL1, navigation.redirect_chain()[1]);
86 EXPECT_EQ(test_data::kVirtualURL, navigation.redirect_chain()[2]); 133 EXPECT_EQ(test_data::kVirtualURL, navigation.redirect_chain()[2]);
87 EXPECT_EQ(test_data::kPasswordState, navigation.password_state()); 134 EXPECT_EQ(test_data::kPasswordState, navigation.password_state());
135
136 ASSERT_EQ(2U, navigation.extended_info_map().size());
137 ASSERT_EQ(1U, navigation.extended_info_map().count(kExtendedInfoKey1));
138 EXPECT_EQ(kExtendedInfoValue1,
139 navigation.extended_info_map().at(kExtendedInfoKey1));
140 ASSERT_EQ(1U, navigation.extended_info_map().count(kExtendedInfoKey2));
141 EXPECT_EQ(kExtendedInfoValue2,
142 navigation.extended_info_map().at(kExtendedInfoKey2));
88 } 143 }
89 144
90 // Create a NavigationEntry, then create another one by converting to 145 // Create a NavigationEntry, then create another one by converting to
91 // a SerializedNavigationEntry and back. The new one should match the old one 146 // a SerializedNavigationEntry and back. The new one should match the old one
92 // except for fields that aren't preserved, which should be set to 147 // except for fields that aren't preserved, which should be set to
93 // expected values. 148 // expected values.
94 TEST(ContentSerializedNavigationBuilderTest, ToNavigationEntry) { 149 TEST(ContentSerializedNavigationBuilderTest, ToNavigationEntry) {
95 const std::unique_ptr<content::NavigationEntry> old_navigation_entry( 150 const std::unique_ptr<content::NavigationEntry> old_navigation_entry(
96 MakeNavigationEntryForTest()); 151 MakeNavigationEntryForTest());
152 SetExtendedInfoForTest(old_navigation_entry.get());
97 153
98 const SerializedNavigationEntry& navigation = 154 const SerializedNavigationEntry& navigation =
99 ContentSerializedNavigationBuilder::FromNavigationEntry( 155 ContentSerializedNavigationBuilder::FromNavigationEntry(
100 test_data::kIndex, *old_navigation_entry); 156 test_data::kIndex, *old_navigation_entry);
101 157
102 const std::unique_ptr<content::NavigationEntry> new_navigation_entry( 158 const std::unique_ptr<content::NavigationEntry> new_navigation_entry(
103 ContentSerializedNavigationBuilder::ToNavigationEntry( 159 ContentSerializedNavigationBuilder::ToNavigationEntry(
104 &navigation, test_data::kPageID, NULL)); 160 &navigation, test_data::kPageID, NULL));
105 161
106 EXPECT_EQ(test_data::kReferrerURL, new_navigation_entry->GetReferrer().url); 162 EXPECT_EQ(test_data::kReferrerURL, new_navigation_entry->GetReferrer().url);
(...skipping 17 matching lines...) Expand all
124 EXPECT_EQ(test_data::kSearchTerms, search_terms); 180 EXPECT_EQ(test_data::kSearchTerms, search_terms);
125 EXPECT_EQ(test_data::kHttpStatusCode, 181 EXPECT_EQ(test_data::kHttpStatusCode,
126 new_navigation_entry->GetHttpStatusCode()); 182 new_navigation_entry->GetHttpStatusCode());
127 ASSERT_EQ(3U, new_navigation_entry->GetRedirectChain().size()); 183 ASSERT_EQ(3U, new_navigation_entry->GetRedirectChain().size());
128 EXPECT_EQ(test_data::kRedirectURL0, 184 EXPECT_EQ(test_data::kRedirectURL0,
129 new_navigation_entry->GetRedirectChain()[0]); 185 new_navigation_entry->GetRedirectChain()[0]);
130 EXPECT_EQ(test_data::kRedirectURL1, 186 EXPECT_EQ(test_data::kRedirectURL1,
131 new_navigation_entry->GetRedirectChain()[1]); 187 new_navigation_entry->GetRedirectChain()[1]);
132 EXPECT_EQ(test_data::kVirtualURL, 188 EXPECT_EQ(test_data::kVirtualURL,
133 new_navigation_entry->GetRedirectChain()[2]); 189 new_navigation_entry->GetRedirectChain()[2]);
190
191 base::string16 extra_data;
192 EXPECT_TRUE(
193 new_navigation_entry->GetExtraData(kExtendedInfoKey1, &extra_data));
194 EXPECT_EQ(kExtendedInfoValue1, base::UTF16ToASCII(extra_data));
195 EXPECT_TRUE(
196 new_navigation_entry->GetExtraData(kExtendedInfoKey2, &extra_data));
197 EXPECT_EQ(kExtendedInfoValue2, base::UTF16ToASCII(extra_data));
134 } 198 }
135 199
136 TEST(ContentSerializedNavigationBuilderTest, SetPasswordState) { 200 TEST(ContentSerializedNavigationBuilderTest, SetPasswordState) {
137 std::unique_ptr<content::NavigationEntry> entry( 201 std::unique_ptr<content::NavigationEntry> entry(
138 content::NavigationEntry::Create()); 202 content::NavigationEntry::Create());
139 203
140 EXPECT_EQ(SerializedNavigationEntry::PASSWORD_STATE_UNKNOWN, 204 EXPECT_EQ(SerializedNavigationEntry::PASSWORD_STATE_UNKNOWN,
141 GetPasswordStateFromNavigation(*entry)); 205 GetPasswordStateFromNavigation(*entry));
142 SetPasswordStateInNavigation(SerializedNavigationEntry::NO_PASSWORD_FIELD, 206 SetPasswordStateInNavigation(SerializedNavigationEntry::NO_PASSWORD_FIELD,
143 entry.get()); 207 entry.get());
144 EXPECT_EQ(SerializedNavigationEntry::NO_PASSWORD_FIELD, 208 EXPECT_EQ(SerializedNavigationEntry::NO_PASSWORD_FIELD,
145 GetPasswordStateFromNavigation(*entry)); 209 GetPasswordStateFromNavigation(*entry));
146 } 210 }
147 211
148 } // namespace sessions 212 } // namespace sessions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698