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

Unified Diff: ios/web/navigation/crw_session_entry_unittest.mm

Issue 2664113003: Moved serialization out of CRWSessionEntry. (Closed)
Patch Set: Eugene's comments Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ios/web/navigation/crw_session_entry.mm ('k') | ios/web/navigation/navigation_item_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/web/navigation/crw_session_entry_unittest.mm
diff --git a/ios/web/navigation/crw_session_entry_unittest.mm b/ios/web/navigation/crw_session_entry_unittest.mm
index 0b8c419801c71a6a19dad00e698fbd4adba8ee6d..ded434a0912b3a4318eb7686031742df4d692098 100644
--- a/ios/web/navigation/crw_session_entry_unittest.mm
+++ b/ios/web/navigation/crw_session_entry_unittest.mm
@@ -22,12 +22,6 @@
#include "third_party/ocmock/gtest_support.h"
#include "ui/base/page_transition_types.h"
-@interface CRWSessionEntry (ExposedForTesting)
-+ (web::PageScrollState)pageStateFromDictionary:(NSDictionary*)dictionary;
-+ (NSDictionary*)dictionaryFromPageDisplayState:
- (const web::PageDisplayState&)displayState;
-@end
-
class CRWSessionEntryTest : public PlatformTest {
public:
static void expectEqualSessionEntries(CRWSessionEntry* entry1,
@@ -55,24 +49,6 @@ void SetUp() override {
base::scoped_nsobject<CRWSessionEntry> sessionEntry_;
};
-@implementation OCMockComplexTypeHelper (CRWSessionEntryTest)
-typedef void (^encodeBytes_length_forKey_block)(
- const uint8_t*, NSUInteger, NSString*);
-- (void)encodeBytes:(const uint8_t*)bytes
- length:(NSUInteger)length
- forKey:(NSString*)key {
- static_cast<encodeBytes_length_forKey_block>([self blockForSelector:_cmd])(
- bytes, length, key);
-}
-
-typedef const uint8_t* (^decodeBytesForKeyBlock)(NSString*, NSUInteger*);
-- (const uint8_t*)decodeBytesForKey:(NSString*)key
- returnedLength:(NSUInteger*)lengthp {
- return static_cast<decodeBytesForKeyBlock>([self blockForSelector:_cmd])(
- key, lengthp);
-}
-@end
-
void CRWSessionEntryTest::expectEqualSessionEntries(
CRWSessionEntry* entry1,
CRWSessionEntry* entry2,
@@ -105,215 +81,6 @@ - (const uint8_t*)decodeBytesForKey:(NSString*)key
@"nan), zoomScaleRange:(nan, nan), zoomScale:nan } desktopUA:0");
}
-TEST_F(CRWSessionEntryTest, InitWithCoder) {
- web::NavigationItem* item = [sessionEntry_ navigationItem];
- item->SetVirtualURL(GURL("http://user.friendly"));
- item->SetTitle(base::SysNSStringToUTF16(@"Title"));
- // Old serialized entries have no timestamp.
- item->SetTimestamp(base::Time::FromInternalValue(0));
-
- NSURL* virtualUrl = net::NSURLWithGURL(item->GetVirtualURL());
- NSURL* referrer = net::NSURLWithGURL(item->GetReferrer().url);
- NSString* title = base::SysUTF16ToNSString(item->GetTitle());
- base::scoped_nsobject<id> decoder([[OCMockComplexTypeHelper alloc]
- initWithRepresentedObject:[OCMockObject mockForClass:[NSCoder class]]]);
-
- decodeBytesForKeyBlock block = ^ const uint8_t* (NSString* key,
- NSUInteger* length) {
- *length = 0;
- return NULL;
- };
-
- [[[decoder stub] andReturnValue:[NSNumber numberWithBool:NO]]
- containsValueForKey:[OCMArg any]];
-
- [decoder onSelector:@selector(decodeBytesForKey:returnedLength:)
- callBlockExpectation:block];
- [[[decoder expect] andReturn:virtualUrl]
- decodeObjectForKey:web::kSessionEntryURLDeperecatedKey];
- [[[decoder expect] andReturn:referrer]
- decodeObjectForKey:web::kSessionEntryReferrerURLDeprecatedKey];
- [[[decoder expect] andReturn:title]
- decodeObjectForKey:web::kSessionEntryTitleKey];
- const web::PageDisplayState& pageState =
- [sessionEntry_ navigationItem]->GetPageDisplayState();
- NSDictionary* serializedPageDisplayState =
- [CRWSessionEntry dictionaryFromPageDisplayState:pageState];
- [[[decoder expect] andReturn:serializedPageDisplayState]
- decodeObjectForKey:web::kSessionEntryPageScrollStateKey];
- BOOL useDesktopUserAgent =
- [sessionEntry_ navigationItem]->IsOverridingUserAgent();
- [[[decoder expect] andReturnValue:OCMOCK_VALUE(useDesktopUserAgent)]
- decodeBoolForKey:web::kSessionEntryUseDesktopUserAgentKey];
- NSDictionary* requestHeaders =
- [sessionEntry_ navigationItem]->GetHttpRequestHeaders();
- [[[decoder expect] andReturn:requestHeaders]
- decodeObjectForKey:web::kSessionEntryHTTPRequestHeadersKey];
- [[[decoder expect]
- andReturn:[sessionEntry_ navigationItemImpl]->GetPostData()]
- decodeObjectForKey:web::kSessionEntryPOSTDataKey];
- BOOL skipRepostFormConfirmation =
- [sessionEntry_ navigationItemImpl]->ShouldSkipRepostFormConfirmation();
- [[[decoder expect] andReturnValue:OCMOCK_VALUE(skipRepostFormConfirmation)]
- decodeBoolForKey:web::kSessionEntrySkipRepostFormConfirmationKey];
-
- base::scoped_nsobject<CRWSessionEntry> newSessionEntry(
- [[CRWSessionEntry alloc] initWithCoder:decoder]);
- web::NavigationItem* newItem = [newSessionEntry navigationItem];
-
- EXPECT_OCMOCK_VERIFY(decoder);
- expectEqualSessionEntries(sessionEntry_, newSessionEntry,
- ui::PAGE_TRANSITION_RELOAD);
- EXPECT_NE(item->GetURL(), newItem->GetURL());
- EXPECT_EQ(item->GetVirtualURL(), newItem->GetURL());
-}
-
-TEST_F(CRWSessionEntryTest, InitWithCoderNewStyle) {
- web::NavigationItem* item = [sessionEntry_ navigationItem];
- item->SetVirtualURL(GURL("http://user.friendly"));
- item->SetTitle(base::SysNSStringToUTF16(@"Title"));
- int64_t timestamp = item->GetTimestamp().ToInternalValue();
-
- std::string virtualUrl = item->GetVirtualURL().spec();
- std::string referrerUrl = item->GetReferrer().url.spec();
- NSString* title = base::SysUTF16ToNSString(item->GetTitle());
- base::scoped_nsobject<id> decoder([[OCMockComplexTypeHelper alloc]
- initWithRepresentedObject:[OCMockObject mockForClass:[NSCoder class]]]);
-
- const std::string emptyString;
- decodeBytesForKeyBlock block = ^ const uint8_t* (NSString* key,
- NSUInteger* length) {
- const std::string *value = &emptyString;
- if ([key isEqualToString:web::kSessionEntryURLKey])
- value = &virtualUrl;
- else if ([key isEqualToString:web::kSessionEntryReferrerURLKey])
- value = &referrerUrl;
- else
- EXPECT_TRUE(false);
-
- *length = value->size();
- return reinterpret_cast<const uint8_t*>(value->data());
- };
-
- [decoder onSelector:@selector(decodeBytesForKey:returnedLength:)
- callBlockExpectation:block];
- [[[decoder stub] andReturnValue:[NSNumber numberWithBool:YES]]
- containsValueForKey:[OCMArg any]];
- web::ReferrerPolicy expectedPolicy = item->GetReferrer().policy;
- [[[decoder expect] andReturnValue:OCMOCK_VALUE(expectedPolicy)]
- decodeIntForKey:web::kSessionEntryReferrerPolicyKey];
- [[[decoder expect] andReturnValue:OCMOCK_VALUE(timestamp)]
- decodeInt64ForKey:web::kSessionEntryTimestampKey];
- [[[decoder expect] andReturn:title]
- decodeObjectForKey:web::kSessionEntryTitleKey];
- const web::PageDisplayState& pageState =
- [sessionEntry_ navigationItem]->GetPageDisplayState();
- NSDictionary* serializedPageDisplayState =
- [CRWSessionEntry dictionaryFromPageDisplayState:pageState];
- [[[decoder expect] andReturn:serializedPageDisplayState]
- decodeObjectForKey:web::kSessionEntryPageScrollStateKey];
- BOOL useDesktopUserAgent =
- [sessionEntry_ navigationItem]->IsOverridingUserAgent();
- [[[decoder expect] andReturnValue:OCMOCK_VALUE(useDesktopUserAgent)]
- decodeBoolForKey:web::kSessionEntryUseDesktopUserAgentKey];
- NSDictionary* requestHeaders =
- [sessionEntry_ navigationItem]->GetHttpRequestHeaders();
- [[[decoder expect] andReturn:requestHeaders]
- decodeObjectForKey:web::kSessionEntryHTTPRequestHeadersKey];
- NSData* POSTData = [sessionEntry_ navigationItemImpl]->GetPostData();
- [[[decoder expect] andReturn:POSTData]
- decodeObjectForKey:web::kSessionEntryPOSTDataKey];
- BOOL skipRepostFormConfirmation =
- [sessionEntry_ navigationItemImpl]->ShouldSkipRepostFormConfirmation();
- [[[decoder expect] andReturnValue:OCMOCK_VALUE(skipRepostFormConfirmation)]
- decodeBoolForKey:web::kSessionEntrySkipRepostFormConfirmationKey];
-
- base::scoped_nsobject<CRWSessionEntry> newSessionEntry(
- [[CRWSessionEntry alloc] initWithCoder:decoder]);
- web::NavigationItem* newItem = [newSessionEntry navigationItem];
-
- EXPECT_OCMOCK_VERIFY(decoder);
- expectEqualSessionEntries(sessionEntry_, newSessionEntry,
- ui::PAGE_TRANSITION_RELOAD);
- EXPECT_NE(item->GetURL(), newItem->GetURL());
- EXPECT_EQ(item->GetVirtualURL(), newItem->GetVirtualURL());
-}
-
-TEST_F(CRWSessionEntryTest, EncodeDecode) {
- NSData *data =
- [NSKeyedArchiver archivedDataWithRootObject:sessionEntry_];
- id decoded = [NSKeyedUnarchiver unarchiveObjectWithData:data];
-
- expectEqualSessionEntries(sessionEntry_, decoded,
- ui::PAGE_TRANSITION_RELOAD);
-}
-
-TEST_F(CRWSessionEntryTest, EncodeWithCoder) {
- web::NavigationItem* item = [sessionEntry_ navigationItem];
- NSString* title = base::SysUTF16ToNSString(item->GetTitle());
-
- base::scoped_nsobject<id> coder([[OCMockComplexTypeHelper alloc]
- initWithRepresentedObject:[OCMockObject mockForClass:[NSCoder class]]]);
-
- encodeBytes_length_forKey_block block =
- ^(const uint8_t* bytes, NSUInteger length, NSString* key) {
- if ([key isEqualToString:web::kSessionEntryURLKey]) {
- ASSERT_EQ(item->GetVirtualURL().spec(),
- std::string(reinterpret_cast<const char*>(bytes), length));
- return;
- } else if ([key isEqualToString:web::kSessionEntryReferrerURLKey]) {
- ASSERT_EQ(item->GetReferrer().url.spec(),
- std::string(reinterpret_cast<const char*>(bytes), length));
- return;
- }
- FAIL();
- };
- [coder onSelector:@selector(encodeBytes:length:forKey:)
- callBlockExpectation:block];
- [[coder expect] encodeInt:item->GetReferrer().policy
- forKey:web::kSessionEntryReferrerPolicyKey];
- [[coder expect] encodeInt64:item->GetTimestamp().ToInternalValue()
- forKey:web::kSessionEntryTimestampKey];
- [[coder expect] encodeObject:title forKey:web::kSessionEntryTitleKey];
- const web::PageDisplayState& pageState =
- [sessionEntry_ navigationItem]->GetPageDisplayState();
- NSDictionary* serializedPageDisplayState =
- [CRWSessionEntry dictionaryFromPageDisplayState:pageState];
- [[coder expect] encodeObject:serializedPageDisplayState
- forKey:web::kSessionEntryPageScrollStateKey];
- BOOL useDesktopUserAgent =
- [sessionEntry_ navigationItem]->IsOverridingUserAgent();
- [[coder expect] encodeBool:useDesktopUserAgent
- forKey:web::kSessionEntryUseDesktopUserAgentKey];
- NSDictionary* requestHeaders =
- [sessionEntry_ navigationItem]->GetHttpRequestHeaders();
- [[coder expect] encodeObject:requestHeaders
- forKey:web::kSessionEntryHTTPRequestHeadersKey];
- [[coder expect] encodeObject:[sessionEntry_ navigationItemImpl]->GetPostData()
- forKey:web::kSessionEntryPOSTDataKey];
- BOOL skipRepostFormConfirmation =
- [sessionEntry_ navigationItemImpl]->ShouldSkipRepostFormConfirmation();
- [[coder expect] encodeBool:skipRepostFormConfirmation
- forKey:web::kSessionEntrySkipRepostFormConfirmationKey];
- [sessionEntry_ encodeWithCoder:coder];
- EXPECT_OCMOCK_VERIFY(coder);
-}
-
-TEST_F(CRWSessionEntryTest, CodingEncoding) {
- web::NavigationItem* item = [sessionEntry_ navigationItem];
- item->SetVirtualURL(GURL("http://user.friendly"));
- NSData* data = [NSKeyedArchiver archivedDataWithRootObject:sessionEntry_];
- EXPECT_TRUE(data != nil);
- CRWSessionEntry* unarchivedSessionEntry =
- [NSKeyedUnarchiver unarchiveObjectWithData:data];
- ASSERT_TRUE(unarchivedSessionEntry != nil);
- web::NavigationItem* unarchivedItem = [unarchivedSessionEntry navigationItem];
- expectEqualSessionEntries(sessionEntry_, unarchivedSessionEntry,
- ui::PAGE_TRANSITION_RELOAD);
- EXPECT_EQ(unarchivedItem->GetURL(), item->GetVirtualURL());
- EXPECT_NE(unarchivedItem->GetURL(), item->GetURL());
-}
-
TEST_F(CRWSessionEntryTest, CopyWithZone) {
CRWSessionEntry* sessionEntry2 = [sessionEntry_ copy];
EXPECT_NE(sessionEntry_, sessionEntry2);
« no previous file with comments | « ios/web/navigation/crw_session_entry.mm ('k') | ios/web/navigation/navigation_item_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698