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

Side by Side Diff: ios/web/navigation/crw_session_entry_unittest.mm

Issue 1132563002: CRWSessionEntry: Replaced hardcoded strings with constants. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Resolved Stuart's review comments Created 5 years, 7 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 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 #import <Foundation/Foundation.h> 5 #import <Foundation/Foundation.h>
6 6
7 #include "base/mac/scoped_nsobject.h" 7 #include "base/mac/scoped_nsobject.h"
8 #include "base/strings/sys_string_conversions.h" 8 #include "base/strings/sys_string_conversions.h"
9 #import "ios/testing/ocmock_complex_type_helper.h" 9 #import "ios/testing/ocmock_complex_type_helper.h"
10 #import "ios/web/navigation/crw_session_entry.h" 10 #import "ios/web/navigation/crw_session_entry.h"
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 *length = 0; 116 *length = 0;
117 return NULL; 117 return NULL;
118 }; 118 };
119 119
120 [[[decoder stub] andReturnValue:[NSNumber numberWithBool:NO]] 120 [[[decoder stub] andReturnValue:[NSNumber numberWithBool:NO]]
121 containsValueForKey:[OCMArg any]]; 121 containsValueForKey:[OCMArg any]];
122 122
123 [decoder onSelector:@selector(decodeBytesForKey:returnedLength:) 123 [decoder onSelector:@selector(decodeBytesForKey:returnedLength:)
124 callBlockExpectation:block]; 124 callBlockExpectation:block];
125 [[[decoder expect] andReturn:virtualUrl] 125 [[[decoder expect] andReturn:virtualUrl]
126 decodeObjectForKey:@"virtualUrl"]; 126 decodeObjectForKey:web::kSessionEntryURLDeperecatedKey];
127 [[[decoder expect] andReturn:referrer] 127 [[[decoder expect] andReturn:referrer]
128 decodeObjectForKey:@"referrer"]; 128 decodeObjectForKey:web::kSessionEntryReferrerURLDeprecatedKey];
129 [[[decoder expect] andReturn:title] 129 [[[decoder expect] andReturn:title]
130 decodeObjectForKey:@"title"]; 130 decodeObjectForKey:web::kSessionEntryTitleKey];
131 const web::PageScrollState& scrollState = 131 const web::PageScrollState& scrollState =
132 [sessionEntry_ navigationItem]->GetPageScrollState(); 132 [sessionEntry_ navigationItem]->GetPageScrollState();
133 NSDictionary* serializedScrollState = 133 NSDictionary* serializedScrollState =
134 [CRWSessionEntry dictionaryFromScrollState:scrollState]; 134 [CRWSessionEntry dictionaryFromScrollState:scrollState];
135 [[[decoder expect] andReturn:serializedScrollState] 135 [[[decoder expect] andReturn:serializedScrollState]
136 decodeObjectForKey:@"state"]; 136 decodeObjectForKey:web::kSessionEntryPageScrollStateKey];
137 BOOL useDesktopUserAgent = 137 BOOL useDesktopUserAgent =
138 [sessionEntry_ navigationItem]->IsOverridingUserAgent(); 138 [sessionEntry_ navigationItem]->IsOverridingUserAgent();
139 [[[decoder expect] andReturnValue:OCMOCK_VALUE(useDesktopUserAgent)] 139 [[[decoder expect] andReturnValue:OCMOCK_VALUE(useDesktopUserAgent)]
140 decodeBoolForKey:@"useDesktopUserAgent"]; 140 decodeBoolForKey:web::kSessionEntryUseDesktopUserAgentKey];
141 NSDictionary* requestHeaders = 141 NSDictionary* requestHeaders =
142 [sessionEntry_ navigationItem]->GetHttpRequestHeaders(); 142 [sessionEntry_ navigationItem]->GetHttpRequestHeaders();
143 [[[decoder expect] andReturn:requestHeaders] 143 [[[decoder expect] andReturn:requestHeaders]
144 decodeObjectForKey:@"httpHeaders"]; 144 decodeObjectForKey:web::kSessionEntryHTTPRequestHeadersKey];
145 [[[decoder expect] 145 [[[decoder expect]
146 andReturn:[sessionEntry_ navigationItemImpl]->GetPostData()] 146 andReturn:[sessionEntry_ navigationItemImpl]->GetPostData()]
147 decodeObjectForKey:@"POSTData"]; 147 decodeObjectForKey:web::kSessionEntryPOSTDataKey];
148 BOOL skipResubmitDataConfirmation = 148 BOOL skipResubmitDataConfirmation =
149 [sessionEntry_ navigationItemImpl]->ShouldSkipResubmitDataConfirmation(); 149 [sessionEntry_ navigationItemImpl]->ShouldSkipResubmitDataConfirmation();
150 [[[decoder expect] andReturnValue:OCMOCK_VALUE(skipResubmitDataConfirmation)] 150 [[[decoder expect] andReturnValue:OCMOCK_VALUE(skipResubmitDataConfirmation)]
151 decodeBoolForKey:@"skipResubmitDataConfirmation"]; 151 decodeBoolForKey:web::kSessionEntrySkipResubmitConfirmationKey];
152 152
153 base::scoped_nsobject<CRWSessionEntry> newSessionEntry( 153 base::scoped_nsobject<CRWSessionEntry> newSessionEntry(
154 [[CRWSessionEntry alloc] initWithCoder:decoder]); 154 [[CRWSessionEntry alloc] initWithCoder:decoder]);
155 web::NavigationItem* newItem = [newSessionEntry navigationItem]; 155 web::NavigationItem* newItem = [newSessionEntry navigationItem];
156 156
157 EXPECT_OCMOCK_VERIFY(decoder); 157 EXPECT_OCMOCK_VERIFY(decoder);
158 expectEqualSessionEntries(sessionEntry_, newSessionEntry, 158 expectEqualSessionEntries(sessionEntry_, newSessionEntry,
159 ui::PAGE_TRANSITION_RELOAD); 159 ui::PAGE_TRANSITION_RELOAD);
160 EXPECT_NE(item->GetURL(), newItem->GetURL()); 160 EXPECT_NE(item->GetURL(), newItem->GetURL());
161 EXPECT_EQ(item->GetVirtualURL(), newItem->GetURL()); 161 EXPECT_EQ(item->GetVirtualURL(), newItem->GetURL());
162 } 162 }
163 163
164 TEST_F(CRWSessionEntryTest, InitWithCoderNewStyle) { 164 TEST_F(CRWSessionEntryTest, InitWithCoderNewStyle) {
165 web::NavigationItem* item = [sessionEntry_ navigationItem]; 165 web::NavigationItem* item = [sessionEntry_ navigationItem];
166 item->SetVirtualURL(GURL("http://user.friendly")); 166 item->SetVirtualURL(GURL("http://user.friendly"));
167 item->SetTitle(base::SysNSStringToUTF16(@"Title")); 167 item->SetTitle(base::SysNSStringToUTF16(@"Title"));
168 int64 timestamp = item->GetTimestamp().ToInternalValue(); 168 int64 timestamp = item->GetTimestamp().ToInternalValue();
169 169
170 std::string virtualUrl = item->GetVirtualURL().spec(); 170 std::string virtualUrl = item->GetVirtualURL().spec();
171 std::string referrerUrl = item->GetReferrer().url.spec(); 171 std::string referrerUrl = item->GetReferrer().url.spec();
172 NSString* title = base::SysUTF16ToNSString(item->GetTitle()); 172 NSString* title = base::SysUTF16ToNSString(item->GetTitle());
173 base::scoped_nsobject<id> decoder([[OCMockComplexTypeHelper alloc] 173 base::scoped_nsobject<id> decoder([[OCMockComplexTypeHelper alloc]
174 initWithRepresentedObject:[OCMockObject mockForClass:[NSCoder class]]]); 174 initWithRepresentedObject:[OCMockObject mockForClass:[NSCoder class]]]);
175 175
176 const std::string emptyString; 176 const std::string emptyString;
177 decodeBytesForKeyBlock block = ^ const uint8_t* (NSString* key, 177 decodeBytesForKeyBlock block = ^ const uint8_t* (NSString* key,
178 NSUInteger* length) { 178 NSUInteger* length) {
179 const std::string *value = &emptyString; 179 const std::string *value = &emptyString;
180 if ([key isEqualToString:@"virtualUrlString"]) 180 if ([key isEqualToString:web::kSessionEntryURLKey])
181 value = &virtualUrl; 181 value = &virtualUrl;
182 else if ([key isEqualToString:@"referrerUrlString"]) 182 else if ([key isEqualToString:web::kSessionEntryReferrerURLKey])
183 value = &referrerUrl; 183 value = &referrerUrl;
184 else 184 else
185 EXPECT_TRUE(false); 185 EXPECT_TRUE(false);
186 186
187 *length = value->size(); 187 *length = value->size();
188 return reinterpret_cast<const uint8_t*>(value->data()); 188 return reinterpret_cast<const uint8_t*>(value->data());
189 }; 189 };
190 190
191 [decoder onSelector:@selector(decodeBytesForKey:returnedLength:) 191 [decoder onSelector:@selector(decodeBytesForKey:returnedLength:)
192 callBlockExpectation:block]; 192 callBlockExpectation:block];
193 [[[decoder stub] andReturnValue:[NSNumber numberWithBool:YES]] 193 [[[decoder stub] andReturnValue:[NSNumber numberWithBool:YES]]
194 containsValueForKey:[OCMArg any]]; 194 containsValueForKey:[OCMArg any]];
195 web::ReferrerPolicy expectedPolicy = item->GetReferrer().policy; 195 web::ReferrerPolicy expectedPolicy = item->GetReferrer().policy;
196 [[[decoder expect] 196 [[[decoder expect] andReturnValue:OCMOCK_VALUE(expectedPolicy)]
197 andReturnValue:OCMOCK_VALUE(expectedPolicy)] 197 decodeIntForKey:web::kSessionEntryReferrerPolicyKey];
198 decodeIntForKey:@"referrerPolicy"];
199 [[[decoder expect] andReturnValue:OCMOCK_VALUE(timestamp)] 198 [[[decoder expect] andReturnValue:OCMOCK_VALUE(timestamp)]
200 decodeInt64ForKey:@"timestamp"]; 199 decodeInt64ForKey:web::kSessionEntryTimestampKey];
201 [[[decoder expect] andReturn:title] 200 [[[decoder expect] andReturn:title]
202 decodeObjectForKey:@"title"]; 201 decodeObjectForKey:web::kSessionEntryTitleKey];
203 const web::PageScrollState& scrollState = 202 const web::PageScrollState& scrollState =
204 [sessionEntry_ navigationItem]->GetPageScrollState(); 203 [sessionEntry_ navigationItem]->GetPageScrollState();
205 NSDictionary* serializedScrollState = 204 NSDictionary* serializedScrollState =
206 [CRWSessionEntry dictionaryFromScrollState:scrollState]; 205 [CRWSessionEntry dictionaryFromScrollState:scrollState];
207 [[[decoder expect] andReturn:serializedScrollState] 206 [[[decoder expect] andReturn:serializedScrollState]
208 decodeObjectForKey:@"state"]; 207 decodeObjectForKey:web::kSessionEntryPageScrollStateKey];
209 BOOL useDesktopUserAgent = 208 BOOL useDesktopUserAgent =
210 [sessionEntry_ navigationItem]->IsOverridingUserAgent(); 209 [sessionEntry_ navigationItem]->IsOverridingUserAgent();
211 [[[decoder expect] andReturnValue:OCMOCK_VALUE(useDesktopUserAgent)] 210 [[[decoder expect] andReturnValue:OCMOCK_VALUE(useDesktopUserAgent)]
212 decodeBoolForKey:@"useDesktopUserAgent"]; 211 decodeBoolForKey:web::kSessionEntryUseDesktopUserAgentKey];
213 NSDictionary* requestHeaders = 212 NSDictionary* requestHeaders =
214 [sessionEntry_ navigationItem]->GetHttpRequestHeaders(); 213 [sessionEntry_ navigationItem]->GetHttpRequestHeaders();
215 [[[decoder expect] andReturn:requestHeaders] 214 [[[decoder expect] andReturn:requestHeaders]
216 decodeObjectForKey:@"httpHeaders"]; 215 decodeObjectForKey:web::kSessionEntryHTTPRequestHeadersKey];
217 NSData* POSTData = [sessionEntry_ navigationItemImpl]->GetPostData(); 216 NSData* POSTData = [sessionEntry_ navigationItemImpl]->GetPostData();
218 [[[decoder expect] andReturn:POSTData] decodeObjectForKey:@"POSTData"]; 217 [[[decoder expect] andReturn:POSTData]
218 decodeObjectForKey:web::kSessionEntryPOSTDataKey];
219 BOOL skipResubmitDataConfirmation = 219 BOOL skipResubmitDataConfirmation =
220 [sessionEntry_ navigationItemImpl]->ShouldSkipResubmitDataConfirmation(); 220 [sessionEntry_ navigationItemImpl]->ShouldSkipResubmitDataConfirmation();
221 [[[decoder expect] andReturnValue:OCMOCK_VALUE(skipResubmitDataConfirmation)] 221 [[[decoder expect] andReturnValue:OCMOCK_VALUE(skipResubmitDataConfirmation)]
222 decodeBoolForKey:@"skipResubmitDataConfirmation"]; 222 decodeBoolForKey:web::kSessionEntrySkipResubmitConfirmationKey];
223 223
224 base::scoped_nsobject<CRWSessionEntry> newSessionEntry( 224 base::scoped_nsobject<CRWSessionEntry> newSessionEntry(
225 [[CRWSessionEntry alloc] initWithCoder:decoder]); 225 [[CRWSessionEntry alloc] initWithCoder:decoder]);
226 web::NavigationItem* newItem = [newSessionEntry navigationItem]; 226 web::NavigationItem* newItem = [newSessionEntry navigationItem];
227 227
228 EXPECT_OCMOCK_VERIFY(decoder); 228 EXPECT_OCMOCK_VERIFY(decoder);
229 expectEqualSessionEntries(sessionEntry_, newSessionEntry, 229 expectEqualSessionEntries(sessionEntry_, newSessionEntry,
230 ui::PAGE_TRANSITION_RELOAD); 230 ui::PAGE_TRANSITION_RELOAD);
231 EXPECT_NE(item->GetURL(), newItem->GetURL()); 231 EXPECT_NE(item->GetURL(), newItem->GetURL());
232 EXPECT_EQ(item->GetVirtualURL(), newItem->GetVirtualURL()); 232 EXPECT_EQ(item->GetVirtualURL(), newItem->GetVirtualURL());
233 } 233 }
234 234
235 TEST_F(CRWSessionEntryTest, EncodeDecode) { 235 TEST_F(CRWSessionEntryTest, EncodeDecode) {
236 NSData *data = 236 NSData *data =
237 [NSKeyedArchiver archivedDataWithRootObject:sessionEntry_]; 237 [NSKeyedArchiver archivedDataWithRootObject:sessionEntry_];
238 id decoded = [NSKeyedUnarchiver unarchiveObjectWithData:data]; 238 id decoded = [NSKeyedUnarchiver unarchiveObjectWithData:data];
239 239
240 expectEqualSessionEntries(sessionEntry_, decoded, 240 expectEqualSessionEntries(sessionEntry_, decoded,
241 ui::PAGE_TRANSITION_RELOAD); 241 ui::PAGE_TRANSITION_RELOAD);
242 } 242 }
243 243
244 TEST_F(CRWSessionEntryTest, EncodeWithCoder) { 244 TEST_F(CRWSessionEntryTest, EncodeWithCoder) {
245 web::NavigationItem* item = [sessionEntry_ navigationItem]; 245 web::NavigationItem* item = [sessionEntry_ navigationItem];
246 NSString* title = base::SysUTF16ToNSString(item->GetTitle()); 246 NSString* title = base::SysUTF16ToNSString(item->GetTitle());
247 247
248 base::scoped_nsobject<id> coder([[OCMockComplexTypeHelper alloc] 248 base::scoped_nsobject<id> coder([[OCMockComplexTypeHelper alloc]
249 initWithRepresentedObject:[OCMockObject mockForClass:[NSCoder class]]]); 249 initWithRepresentedObject:[OCMockObject mockForClass:[NSCoder class]]]);
250 250
251 encodeBytes_length_forKey_block block = ^(const uint8_t* bytes, 251 encodeBytes_length_forKey_block block =
252 NSUInteger length, 252 ^(const uint8_t* bytes, NSUInteger length, NSString* key) {
253 NSString* key) { 253 if ([key isEqualToString:web::kSessionEntryURLKey]) {
254 if ([key isEqualToString:@"virtualUrlString"]) { 254 ASSERT_EQ(item->GetVirtualURL().spec(),
255 ASSERT_EQ(item->GetVirtualURL().spec(), 255 std::string(reinterpret_cast<const char*>(bytes), length));
256 std::string(reinterpret_cast<const char*>(bytes), length)); 256 return;
257 return; 257 } else if ([key isEqualToString:web::kSessionEntryReferrerURLKey]) {
258 } else if ([key isEqualToString:@"referrerUrlString"]) { 258 ASSERT_EQ(item->GetReferrer().url.spec(),
259 ASSERT_EQ(item->GetReferrer().url.spec(), 259 std::string(reinterpret_cast<const char*>(bytes), length));
260 std::string(reinterpret_cast<const char*>(bytes), length)); 260 return;
261 return; 261 }
262 } 262 FAIL();
263 FAIL(); 263 };
264 };
265 [coder onSelector:@selector(encodeBytes:length:forKey:) 264 [coder onSelector:@selector(encodeBytes:length:forKey:)
266 callBlockExpectation:block]; 265 callBlockExpectation:block];
267 [[coder expect] encodeInt:item->GetReferrer().policy 266 [[coder expect] encodeInt:item->GetReferrer().policy
268 forKey:@"referrerPolicy"]; 267 forKey:web::kSessionEntryReferrerPolicyKey];
269 [[coder expect] encodeInt64:item->GetTimestamp().ToInternalValue() 268 [[coder expect] encodeInt64:item->GetTimestamp().ToInternalValue()
270 forKey:@"timestamp"]; 269 forKey:web::kSessionEntryTimestampKey];
271 [[coder expect] encodeObject:title forKey:@"title"]; 270 [[coder expect] encodeObject:title forKey:web::kSessionEntryTitleKey];
272 const web::PageScrollState& scrollState = 271 const web::PageScrollState& scrollState =
273 [sessionEntry_ navigationItem]->GetPageScrollState(); 272 [sessionEntry_ navigationItem]->GetPageScrollState();
274 NSDictionary* serializedScrollState = 273 NSDictionary* serializedScrollState =
275 [CRWSessionEntry dictionaryFromScrollState:scrollState]; 274 [CRWSessionEntry dictionaryFromScrollState:scrollState];
276 [[coder expect] encodeObject:serializedScrollState forKey:@"state"]; 275 [[coder expect] encodeObject:serializedScrollState
276 forKey:web::kSessionEntryPageScrollStateKey];
277 BOOL useDesktopUserAgent = 277 BOOL useDesktopUserAgent =
278 [sessionEntry_ navigationItem]->IsOverridingUserAgent(); 278 [sessionEntry_ navigationItem]->IsOverridingUserAgent();
279 [[coder expect] encodeBool:useDesktopUserAgent forKey:@"useDesktopUserAgent"]; 279 [[coder expect] encodeBool:useDesktopUserAgent
280 forKey:web::kSessionEntryUseDesktopUserAgentKey];
280 NSDictionary* requestHeaders = 281 NSDictionary* requestHeaders =
281 [sessionEntry_ navigationItem]->GetHttpRequestHeaders(); 282 [sessionEntry_ navigationItem]->GetHttpRequestHeaders();
282 [[coder expect] encodeObject:requestHeaders 283 [[coder expect] encodeObject:requestHeaders
283 forKey:@"httpHeaders"]; 284 forKey:web::kSessionEntryHTTPRequestHeadersKey];
284 [[coder expect] encodeObject:[sessionEntry_ navigationItemImpl]->GetPostData() 285 [[coder expect] encodeObject:[sessionEntry_ navigationItemImpl]->GetPostData()
285 forKey:@"POSTData"]; 286 forKey:web::kSessionEntryPOSTDataKey];
286 BOOL skipResubmitDataConfirmation = 287 BOOL skipResubmitDataConfirmation =
287 [sessionEntry_ navigationItemImpl]->ShouldSkipResubmitDataConfirmation(); 288 [sessionEntry_ navigationItemImpl]->ShouldSkipResubmitDataConfirmation();
288 [[coder expect] encodeBool:skipResubmitDataConfirmation 289 [[coder expect] encodeBool:skipResubmitDataConfirmation
289 forKey:@"skipResubmitDataConfirmation"]; 290 forKey:web::kSessionEntrySkipResubmitConfirmationKey];
290 [sessionEntry_ encodeWithCoder:coder]; 291 [sessionEntry_ encodeWithCoder:coder];
291 EXPECT_OCMOCK_VERIFY(coder); 292 EXPECT_OCMOCK_VERIFY(coder);
292 } 293 }
293 294
294 TEST_F(CRWSessionEntryTest, CodingEncoding) { 295 TEST_F(CRWSessionEntryTest, CodingEncoding) {
295 web::NavigationItem* item = [sessionEntry_ navigationItem]; 296 web::NavigationItem* item = [sessionEntry_ navigationItem];
296 item->SetVirtualURL(GURL("http://user.friendly")); 297 item->SetVirtualURL(GURL("http://user.friendly"));
297 NSData* data = [NSKeyedArchiver archivedDataWithRootObject:sessionEntry_]; 298 NSData* data = [NSKeyedArchiver archivedDataWithRootObject:sessionEntry_];
298 EXPECT_TRUE(data != nil); 299 EXPECT_TRUE(data != nil);
299 CRWSessionEntry* unarchivedSessionEntry = 300 CRWSessionEntry* unarchivedSessionEntry =
(...skipping 22 matching lines...) Expand all
322 TEST_F(CRWSessionEntryTest, NonEmptyVirtualUrl) { 323 TEST_F(CRWSessionEntryTest, NonEmptyVirtualUrl) {
323 web::NavigationItem* item = [sessionEntry_ navigationItem]; 324 web::NavigationItem* item = [sessionEntry_ navigationItem];
324 item->SetVirtualURL(GURL("http://user.friendly")); 325 item->SetVirtualURL(GURL("http://user.friendly"));
325 EXPECT_EQ(GURL("http://user.friendly/"), item->GetVirtualURL()); 326 EXPECT_EQ(GURL("http://user.friendly/"), item->GetVirtualURL());
326 EXPECT_EQ(GURL("http://init.test/"), item->GetURL()); 327 EXPECT_EQ(GURL("http://init.test/"), item->GetURL());
327 } 328 }
328 329
329 TEST_F(CRWSessionEntryTest, EmptyDescription) { 330 TEST_F(CRWSessionEntryTest, EmptyDescription) {
330 EXPECT_GT([[sessionEntry_ description] length], 0U); 331 EXPECT_GT([[sessionEntry_ description] length], 0U);
331 } 332 }
OLDNEW
« ios/web/navigation/crw_session_entry.h ('K') | « ios/web/navigation/crw_session_entry.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698