| 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);
|
|
|