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

Side by Side Diff: android_webview/native/state_serializer_unittest.cc

Issue 1852513003: Convert //android_webview to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: git is hard Created 4 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 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 "android_webview/native/state_serializer.h" 5 #include "android_webview/native/state_serializer.h"
6 6
7 #include <memory>
7 #include <string> 8 #include <string>
8 9
9 #include "base/memory/scoped_ptr.h"
10 #include "base/pickle.h" 10 #include "base/pickle.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #include "base/time/time.h" 12 #include "base/time/time.h"
13 #include "content/public/browser/content_browser_client.h" 13 #include "content/public/browser/content_browser_client.h"
14 #include "content/public/browser/navigation_entry.h" 14 #include "content/public/browser/navigation_entry.h"
15 #include "content/public/common/content_client.h" 15 #include "content/public/common/content_client.h"
16 #include "content/public/common/page_state.h" 16 #include "content/public/common/page_state.h"
17 #include "testing/gtest/include/gtest/gtest.h" 17 #include "testing/gtest/include/gtest/gtest.h"
18 #include "url/gurl.h" 18 #include "url/gurl.h"
19 19
20 using std::string; 20 using std::string;
21 21
22 namespace android_webview { 22 namespace android_webview {
23 23
24 namespace { 24 namespace {
25 25
26 scoped_ptr<content::NavigationEntry> CreateNavigationEntry() { 26 std::unique_ptr<content::NavigationEntry> CreateNavigationEntry() {
27 scoped_ptr<content::NavigationEntry> entry( 27 std::unique_ptr<content::NavigationEntry> entry(
28 content::NavigationEntry::Create()); 28 content::NavigationEntry::Create());
29 29
30 const GURL url("http://url"); 30 const GURL url("http://url");
31 const GURL virtual_url("http://virtual_url"); 31 const GURL virtual_url("http://virtual_url");
32 content::Referrer referrer; 32 content::Referrer referrer;
33 referrer.url = GURL("http://referrer_url"); 33 referrer.url = GURL("http://referrer_url");
34 referrer.policy = blink::WebReferrerPolicyOrigin; 34 referrer.policy = blink::WebReferrerPolicyOrigin;
35 const base::string16 title(base::UTF8ToUTF16("title")); 35 const base::string16 title(base::UTF8ToUTF16("title"));
36 const content::PageState page_state = 36 const content::PageState page_state =
37 content::PageState::CreateFromEncodedData("completely bogus state"); 37 content::PageState::CreateFromEncodedData("completely bogus state");
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 EXPECT_EQ(version, 0U); 96 EXPECT_EQ(version, 0U);
97 } 97 }
98 98
99 TEST(AndroidWebViewStateSerializerTest, TestNavigationEntrySerialization) { 99 TEST(AndroidWebViewStateSerializerTest, TestNavigationEntrySerialization) {
100 // This is required for NavigationEntry::Create. 100 // This is required for NavigationEntry::Create.
101 content::ContentClient content_client; 101 content::ContentClient content_client;
102 content::SetContentClient(&content_client); 102 content::SetContentClient(&content_client);
103 content::ContentBrowserClient browser_client; 103 content::ContentBrowserClient browser_client;
104 content::SetBrowserClientForTesting(&browser_client); 104 content::SetBrowserClientForTesting(&browser_client);
105 105
106 scoped_ptr<content::NavigationEntry> entry(CreateNavigationEntry()); 106 std::unique_ptr<content::NavigationEntry> entry(CreateNavigationEntry());
107 107
108 base::Pickle pickle; 108 base::Pickle pickle;
109 bool result = internal::WriteNavigationEntryToPickle(*entry, &pickle); 109 bool result = internal::WriteNavigationEntryToPickle(*entry, &pickle);
110 EXPECT_TRUE(result); 110 EXPECT_TRUE(result);
111 111
112 scoped_ptr<content::NavigationEntry> copy(content::NavigationEntry::Create()); 112 std::unique_ptr<content::NavigationEntry> copy(
113 content::NavigationEntry::Create());
113 base::PickleIterator iterator(pickle); 114 base::PickleIterator iterator(pickle);
114 result = internal::RestoreNavigationEntryFromPickle(&iterator, copy.get()); 115 result = internal::RestoreNavigationEntryFromPickle(&iterator, copy.get());
115 EXPECT_TRUE(result); 116 EXPECT_TRUE(result);
116 117
117 EXPECT_EQ(entry->GetURL(), copy->GetURL()); 118 EXPECT_EQ(entry->GetURL(), copy->GetURL());
118 EXPECT_EQ(entry->GetVirtualURL(), copy->GetVirtualURL()); 119 EXPECT_EQ(entry->GetVirtualURL(), copy->GetVirtualURL());
119 EXPECT_EQ(entry->GetReferrer().url, copy->GetReferrer().url); 120 EXPECT_EQ(entry->GetReferrer().url, copy->GetReferrer().url);
120 EXPECT_EQ(entry->GetReferrer().policy, copy->GetReferrer().policy); 121 EXPECT_EQ(entry->GetReferrer().policy, copy->GetReferrer().policy);
121 EXPECT_EQ(entry->GetTitle(), copy->GetTitle()); 122 EXPECT_EQ(entry->GetTitle(), copy->GetTitle());
122 EXPECT_EQ(entry->GetPageState(), copy->GetPageState()); 123 EXPECT_EQ(entry->GetPageState(), copy->GetPageState());
123 EXPECT_EQ(entry->GetHasPostData(), copy->GetHasPostData()); 124 EXPECT_EQ(entry->GetHasPostData(), copy->GetHasPostData());
124 EXPECT_EQ(entry->GetOriginalRequestURL(), copy->GetOriginalRequestURL()); 125 EXPECT_EQ(entry->GetOriginalRequestURL(), copy->GetOriginalRequestURL());
125 EXPECT_EQ(entry->GetBaseURLForDataURL(), copy->GetBaseURLForDataURL()); 126 EXPECT_EQ(entry->GetBaseURLForDataURL(), copy->GetBaseURLForDataURL());
126 EXPECT_EQ(entry->GetDataURLAsString()->data(), 127 EXPECT_EQ(entry->GetDataURLAsString()->data(),
127 copy->GetDataURLAsString()->data()); 128 copy->GetDataURLAsString()->data());
128 EXPECT_EQ(entry->GetIsOverridingUserAgent(), 129 EXPECT_EQ(entry->GetIsOverridingUserAgent(),
129 copy->GetIsOverridingUserAgent()); 130 copy->GetIsOverridingUserAgent());
130 EXPECT_EQ(entry->GetTimestamp(), copy->GetTimestamp()); 131 EXPECT_EQ(entry->GetTimestamp(), copy->GetTimestamp());
131 EXPECT_EQ(entry->GetHttpStatusCode(), copy->GetHttpStatusCode()); 132 EXPECT_EQ(entry->GetHttpStatusCode(), copy->GetHttpStatusCode());
132 } 133 }
133 134
134 TEST(AndroidWebViewStateSerializerTest, 135 TEST(AndroidWebViewStateSerializerTest,
135 TestLegacyNavigationEntrySerialization) { 136 TestLegacyNavigationEntrySerialization) {
136 // This is required for NavigationEntry::Create. 137 // This is required for NavigationEntry::Create.
137 content::ContentClient content_client; 138 content::ContentClient content_client;
138 content::SetContentClient(&content_client); 139 content::SetContentClient(&content_client);
139 content::ContentBrowserClient browser_client; 140 content::ContentBrowserClient browser_client;
140 content::SetBrowserClientForTesting(&browser_client); 141 content::SetBrowserClientForTesting(&browser_client);
141 142
142 scoped_ptr<content::NavigationEntry> entry(CreateNavigationEntry()); 143 std::unique_ptr<content::NavigationEntry> entry(CreateNavigationEntry());
143 144
144 base::Pickle pickle; 145 base::Pickle pickle;
145 bool result = internal::WriteNavigationEntryToPickle( 146 bool result = internal::WriteNavigationEntryToPickle(
146 internal::AW_STATE_VERSION_INITIAL, *entry, &pickle); 147 internal::AW_STATE_VERSION_INITIAL, *entry, &pickle);
147 EXPECT_TRUE(result); 148 EXPECT_TRUE(result);
148 149
149 scoped_ptr<content::NavigationEntry> copy(content::NavigationEntry::Create()); 150 std::unique_ptr<content::NavigationEntry> copy(
151 content::NavigationEntry::Create());
150 base::PickleIterator iterator(pickle); 152 base::PickleIterator iterator(pickle);
151 result = internal::RestoreNavigationEntryFromPickle( 153 result = internal::RestoreNavigationEntryFromPickle(
152 internal::AW_STATE_VERSION_INITIAL, &iterator, copy.get()); 154 internal::AW_STATE_VERSION_INITIAL, &iterator, copy.get());
153 EXPECT_TRUE(result); 155 EXPECT_TRUE(result);
154 156
155 EXPECT_EQ(entry->GetURL(), copy->GetURL()); 157 EXPECT_EQ(entry->GetURL(), copy->GetURL());
156 EXPECT_EQ(entry->GetVirtualURL(), copy->GetVirtualURL()); 158 EXPECT_EQ(entry->GetVirtualURL(), copy->GetVirtualURL());
157 EXPECT_EQ(entry->GetReferrer().url, copy->GetReferrer().url); 159 EXPECT_EQ(entry->GetReferrer().url, copy->GetReferrer().url);
158 EXPECT_EQ(entry->GetReferrer().policy, copy->GetReferrer().policy); 160 EXPECT_EQ(entry->GetReferrer().policy, copy->GetReferrer().policy);
159 EXPECT_EQ(entry->GetTitle(), copy->GetTitle()); 161 EXPECT_EQ(entry->GetTitle(), copy->GetTitle());
160 EXPECT_EQ(entry->GetPageState(), copy->GetPageState()); 162 EXPECT_EQ(entry->GetPageState(), copy->GetPageState());
161 EXPECT_EQ(entry->GetHasPostData(), copy->GetHasPostData()); 163 EXPECT_EQ(entry->GetHasPostData(), copy->GetHasPostData());
162 EXPECT_EQ(entry->GetOriginalRequestURL(), copy->GetOriginalRequestURL()); 164 EXPECT_EQ(entry->GetOriginalRequestURL(), copy->GetOriginalRequestURL());
163 EXPECT_EQ(entry->GetBaseURLForDataURL(), copy->GetBaseURLForDataURL()); 165 EXPECT_EQ(entry->GetBaseURLForDataURL(), copy->GetBaseURLForDataURL());
164 // DataURL not supported by 20130814 format 166 // DataURL not supported by 20130814 format
165 EXPECT_FALSE(copy->GetDataURLAsString()); 167 EXPECT_FALSE(copy->GetDataURLAsString());
166 EXPECT_EQ(entry->GetIsOverridingUserAgent(), 168 EXPECT_EQ(entry->GetIsOverridingUserAgent(),
167 copy->GetIsOverridingUserAgent()); 169 copy->GetIsOverridingUserAgent());
168 EXPECT_EQ(entry->GetTimestamp(), copy->GetTimestamp()); 170 EXPECT_EQ(entry->GetTimestamp(), copy->GetTimestamp());
169 EXPECT_EQ(entry->GetHttpStatusCode(), copy->GetHttpStatusCode()); 171 EXPECT_EQ(entry->GetHttpStatusCode(), copy->GetHttpStatusCode());
170 } 172 }
171 173
172 TEST(AndroidWebViewStateSerializerTest, TestEmptyDataURLSerialization) { 174 TEST(AndroidWebViewStateSerializerTest, TestEmptyDataURLSerialization) {
173 // This is required for NavigationEntry::Create. 175 // This is required for NavigationEntry::Create.
174 content::ContentClient content_client; 176 content::ContentClient content_client;
175 content::SetContentClient(&content_client); 177 content::SetContentClient(&content_client);
176 content::ContentBrowserClient browser_client; 178 content::ContentBrowserClient browser_client;
177 content::SetBrowserClientForTesting(&browser_client); 179 content::SetBrowserClientForTesting(&browser_client);
178 180
179 scoped_ptr<content::NavigationEntry> entry( 181 std::unique_ptr<content::NavigationEntry> entry(
180 content::NavigationEntry::Create()); 182 content::NavigationEntry::Create());
181 EXPECT_FALSE(entry->GetDataURLAsString()); 183 EXPECT_FALSE(entry->GetDataURLAsString());
182 184
183 base::Pickle pickle; 185 base::Pickle pickle;
184 bool result = internal::WriteNavigationEntryToPickle(*entry, &pickle); 186 bool result = internal::WriteNavigationEntryToPickle(*entry, &pickle);
185 EXPECT_TRUE(result); 187 EXPECT_TRUE(result);
186 188
187 scoped_ptr<content::NavigationEntry> copy(content::NavigationEntry::Create()); 189 std::unique_ptr<content::NavigationEntry> copy(
190 content::NavigationEntry::Create());
188 base::PickleIterator iterator(pickle); 191 base::PickleIterator iterator(pickle);
189 result = internal::RestoreNavigationEntryFromPickle(&iterator, copy.get()); 192 result = internal::RestoreNavigationEntryFromPickle(&iterator, copy.get());
190 EXPECT_TRUE(result); 193 EXPECT_TRUE(result);
191 EXPECT_FALSE(entry->GetDataURLAsString()); 194 EXPECT_FALSE(entry->GetDataURLAsString());
192 } 195 }
193 196
194 TEST(AndroidWebViewStateSerializerTest, TestHugeDataURLSerialization) { 197 TEST(AndroidWebViewStateSerializerTest, TestHugeDataURLSerialization) {
195 // This is required for NavigationEntry::Create. 198 // This is required for NavigationEntry::Create.
196 content::ContentClient content_client; 199 content::ContentClient content_client;
197 content::SetContentClient(&content_client); 200 content::SetContentClient(&content_client);
198 content::ContentBrowserClient browser_client; 201 content::ContentBrowserClient browser_client;
199 content::SetBrowserClientForTesting(&browser_client); 202 content::SetBrowserClientForTesting(&browser_client);
200 203
201 scoped_ptr<content::NavigationEntry> entry( 204 std::unique_ptr<content::NavigationEntry> entry(
202 content::NavigationEntry::Create()); 205 content::NavigationEntry::Create());
203 string huge_data_url(1024 * 1024 * 20 - 1, 'd'); 206 string huge_data_url(1024 * 1024 * 20 - 1, 'd');
204 huge_data_url.replace(0, strlen(url::kDataScheme), url::kDataScheme); 207 huge_data_url.replace(0, strlen(url::kDataScheme), url::kDataScheme);
205 { 208 {
206 scoped_refptr<base::RefCountedString> s = new base::RefCountedString(); 209 scoped_refptr<base::RefCountedString> s = new base::RefCountedString();
207 s->data().assign(huge_data_url); 210 s->data().assign(huge_data_url);
208 entry->SetDataURLAsString(s); 211 entry->SetDataURLAsString(s);
209 } 212 }
210 213
211 base::Pickle pickle; 214 base::Pickle pickle;
212 bool result = internal::WriteNavigationEntryToPickle(*entry, &pickle); 215 bool result = internal::WriteNavigationEntryToPickle(*entry, &pickle);
213 EXPECT_TRUE(result); 216 EXPECT_TRUE(result);
214 217
215 scoped_ptr<content::NavigationEntry> copy(content::NavigationEntry::Create()); 218 std::unique_ptr<content::NavigationEntry> copy(
219 content::NavigationEntry::Create());
216 base::PickleIterator iterator(pickle); 220 base::PickleIterator iterator(pickle);
217 result = internal::RestoreNavigationEntryFromPickle(&iterator, copy.get()); 221 result = internal::RestoreNavigationEntryFromPickle(&iterator, copy.get());
218 EXPECT_TRUE(result); 222 EXPECT_TRUE(result);
219 EXPECT_EQ(huge_data_url, copy->GetDataURLAsString()->data()); 223 EXPECT_EQ(huge_data_url, copy->GetDataURLAsString()->data());
220 } 224 }
221 225
222 } // namespace android_webview 226 } // namespace android_webview
OLDNEW
« no previous file with comments | « android_webview/native/state_serializer.cc ('k') | android_webview/renderer/aw_content_renderer_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698