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

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

Issue 1687853002: Make AW state_serializer handle restoring also legacy format (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix signed/unsigned int compile issue Created 4 years, 10 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 <string> 7 #include <string>
8 8
9 #include "base/memory/scoped_ptr.h" 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 TEST(AndroidWebViewStateSerializerTest, TestHeaderSerialization) { 24 TEST(AndroidWebViewStateSerializerTest, TestHeaderSerialization) {
25 base::Pickle pickle; 25 base::Pickle pickle;
26 bool result = internal::WriteHeaderToPickle(&pickle); 26 bool result = internal::WriteHeaderToPickle(&pickle);
27 EXPECT_TRUE(result); 27 EXPECT_TRUE(result);
28 28
29 base::PickleIterator iterator(pickle); 29 base::PickleIterator iterator(pickle);
30 result = internal::RestoreHeaderFromPickle(&iterator); 30 uint32_t version = internal::RestoreHeaderFromPickle(&iterator);
31 EXPECT_TRUE(result); 31 EXPECT_GT(version, 0U);
32 } 32 }
33 33
34 TEST(AndroidWebViewStateSerializerTest, TestNavigationEntrySerialization) { 34 TEST(AndroidWebViewStateSerializerTest, TestNavigationEntrySerialization) {
35 // This is required for NavigationEntry::Create. 35 // This is required for NavigationEntry::Create.
36 content::ContentClient content_client; 36 content::ContentClient content_client;
37 content::SetContentClient(&content_client); 37 content::SetContentClient(&content_client);
38 content::ContentBrowserClient browser_client; 38 content::ContentBrowserClient browser_client;
39 content::SetBrowserClientForTesting(&browser_client); 39 content::SetBrowserClientForTesting(&browser_client);
40 40
41 scoped_ptr<content::NavigationEntry> entry( 41 scoped_ptr<content::NavigationEntry> entry(
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 EXPECT_EQ(page_state, copy->GetPageState()); 91 EXPECT_EQ(page_state, copy->GetPageState());
92 EXPECT_EQ(has_post_data, copy->GetHasPostData()); 92 EXPECT_EQ(has_post_data, copy->GetHasPostData());
93 EXPECT_EQ(original_request_url, copy->GetOriginalRequestURL()); 93 EXPECT_EQ(original_request_url, copy->GetOriginalRequestURL());
94 EXPECT_EQ(base_url_for_data_url, copy->GetBaseURLForDataURL()); 94 EXPECT_EQ(base_url_for_data_url, copy->GetBaseURLForDataURL());
95 EXPECT_EQ(data_url_as_string, copy->GetDataURLAsString()->data()); 95 EXPECT_EQ(data_url_as_string, copy->GetDataURLAsString()->data());
96 EXPECT_EQ(is_overriding_user_agent, copy->GetIsOverridingUserAgent()); 96 EXPECT_EQ(is_overriding_user_agent, copy->GetIsOverridingUserAgent());
97 EXPECT_EQ(timestamp, copy->GetTimestamp()); 97 EXPECT_EQ(timestamp, copy->GetTimestamp());
98 EXPECT_EQ(http_status_code, copy->GetHttpStatusCode()); 98 EXPECT_EQ(http_status_code, copy->GetHttpStatusCode());
99 } 99 }
100 100
101 TEST(AndroidWebViewStateSerializerTest,
102 TestLegacyNavigationEntrySerialization) {
103 // This is required for NavigationEntry::Create.
104 content::ContentClient content_client;
105 content::SetContentClient(&content_client);
106 content::ContentBrowserClient browser_client;
107 content::SetBrowserClientForTesting(&browser_client);
108
109 scoped_ptr<content::NavigationEntry> entry(
110 content::NavigationEntry::Create());
111
112 const GURL url("http://url");
113 const GURL virtual_url("http://virtual_url");
114 content::Referrer referrer;
115 referrer.url = GURL("http://referrer_url");
116 referrer.policy = blink::WebReferrerPolicyOrigin;
117 const base::string16 title(base::UTF8ToUTF16("title"));
118 const content::PageState page_state =
119 content::PageState::CreateFromEncodedData("completely bogus state");
120 const bool has_post_data = true;
121 const GURL original_request_url("http://original_request_url");
122 const GURL base_url_for_data_url("http://base_url");
123 const string data_url_as_string("data:text/html;charset=utf-8;base64,");
124 const bool is_overriding_user_agent = true;
125 const base::Time timestamp = base::Time::FromInternalValue(12345);
126 const int http_status_code = 404;
127
128 entry->SetURL(url);
129 entry->SetVirtualURL(virtual_url);
130 entry->SetReferrer(referrer);
131 entry->SetTitle(title);
132 entry->SetPageState(page_state);
133 entry->SetHasPostData(has_post_data);
134 entry->SetOriginalRequestURL(original_request_url);
135 entry->SetBaseURLForDataURL(base_url_for_data_url);
136 {
137 scoped_refptr<base::RefCountedString> s = new base::RefCountedString();
138 s->data().assign(data_url_as_string);
139 entry->SetDataURLAsString(s);
140 }
141 entry->SetIsOverridingUserAgent(is_overriding_user_agent);
142 entry->SetTimestamp(timestamp);
143 entry->SetHttpStatusCode(http_status_code);
mnaganov (inactive) 2016/02/10 16:37:45 I would suggest extracting entry initialization co
sbergner 2016/02/11 07:23:28 Acknowledged.
144
145 base::Pickle pickle;
146 bool result =
147 internal::WriteNavigationEntryToPickle(20130814, *entry, &pickle);
148 EXPECT_TRUE(result);
149
150 scoped_ptr<content::NavigationEntry> copy(content::NavigationEntry::Create());
151 base::PickleIterator iterator(pickle);
152 result = internal::RestoreNavigationEntryFromPickle(20130814, &iterator,
mnaganov (inactive) 2016/02/10 16:37:45 Shouldn't this actually be a test where we save a
sbergner 2016/02/11 07:23:28 What this test aims to check is that we can still
mnaganov (inactive) 2016/02/11 17:21:48 Right, I've got confused by this direct version sp
sbergner 2016/02/12 07:53:31 Hm, I do agree that actually trying to test the co
mnaganov (inactive) 2016/02/12 16:22:47 Yeah, involving an instance of a real or mocked ou
153 copy.get());
154 EXPECT_TRUE(result);
155
156 EXPECT_EQ(url, copy->GetURL());
157 EXPECT_EQ(virtual_url, copy->GetVirtualURL());
158 EXPECT_EQ(referrer.url, copy->GetReferrer().url);
159 EXPECT_EQ(referrer.policy, copy->GetReferrer().policy);
160 EXPECT_EQ(title, copy->GetTitle());
161 EXPECT_EQ(page_state, copy->GetPageState());
162 EXPECT_EQ(has_post_data, copy->GetHasPostData());
163 EXPECT_EQ(original_request_url, copy->GetOriginalRequestURL());
164 EXPECT_EQ(base_url_for_data_url, copy->GetBaseURLForDataURL());
165 // DataURL not supported by 20130814 format
166 EXPECT_FALSE(copy->GetDataURLAsString());
167 EXPECT_EQ(is_overriding_user_agent, copy->GetIsOverridingUserAgent());
168 EXPECT_EQ(timestamp, copy->GetTimestamp());
169 EXPECT_EQ(http_status_code, copy->GetHttpStatusCode());
170 }
171
mnaganov (inactive) 2016/02/11 17:21:48 It also makes sense to add a test that uses a pick
sbergner 2016/02/12 07:53:32 Acknowledged.
101 TEST(AndroidWebViewStateSerializerTest, TestEmptyDataURLSerialization) { 172 TEST(AndroidWebViewStateSerializerTest, TestEmptyDataURLSerialization) {
102 // This is required for NavigationEntry::Create. 173 // This is required for NavigationEntry::Create.
103 content::ContentClient content_client; 174 content::ContentClient content_client;
104 content::SetContentClient(&content_client); 175 content::SetContentClient(&content_client);
105 content::ContentBrowserClient browser_client; 176 content::ContentBrowserClient browser_client;
106 content::SetBrowserClientForTesting(&browser_client); 177 content::SetBrowserClientForTesting(&browser_client);
107 178
108 scoped_ptr<content::NavigationEntry> entry( 179 scoped_ptr<content::NavigationEntry> entry(
109 content::NavigationEntry::Create()); 180 content::NavigationEntry::Create());
110 EXPECT_FALSE(entry->GetDataURLAsString()); 181 EXPECT_FALSE(entry->GetDataURLAsString());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 EXPECT_TRUE(result); 213 EXPECT_TRUE(result);
143 214
144 scoped_ptr<content::NavigationEntry> copy(content::NavigationEntry::Create()); 215 scoped_ptr<content::NavigationEntry> copy(content::NavigationEntry::Create());
145 base::PickleIterator iterator(pickle); 216 base::PickleIterator iterator(pickle);
146 result = internal::RestoreNavigationEntryFromPickle(&iterator, copy.get()); 217 result = internal::RestoreNavigationEntryFromPickle(&iterator, copy.get());
147 EXPECT_TRUE(result); 218 EXPECT_TRUE(result);
148 EXPECT_EQ(huge_data_url, copy->GetDataURLAsString()->data()); 219 EXPECT_EQ(huge_data_url, copy->GetDataURLAsString()->data());
149 } 220 }
150 221
151 } // namespace android_webview 222 } // namespace android_webview
OLDNEW
« android_webview/native/state_serializer.cc ('K') | « android_webview/native/state_serializer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698