| 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 210afc6974286724505db1182db96a0fb983732d..225fd81a0ba28f7c67d916e17db35a0a585b41b1 100644
|
| --- a/ios/web/navigation/crw_session_entry_unittest.mm
|
| +++ b/ios/web/navigation/crw_session_entry_unittest.mm
|
| @@ -24,11 +24,6 @@
|
| (const web::PageScrollState&)scrollState;
|
| @end
|
|
|
| -static NSString* const kHTTPHeaderKey1 = @"key1";
|
| -static NSString* const kHTTPHeaderKey2 = @"key2";
|
| -static NSString* const kHTTPHeaderValue1 = @"value1";
|
| -static NSString* const kHTTPHeaderValue2 = @"value2";
|
| -
|
| class CRWSessionEntryTest : public PlatformTest {
|
| public:
|
| static void expectEqualSessionEntries(CRWSessionEntry* entry1,
|
| @@ -40,15 +35,13 @@ class CRWSessionEntryTest : public PlatformTest {
|
| GURL url("http://init.test");
|
| ui::PageTransition transition =
|
| ui::PAGE_TRANSITION_AUTO_BOOKMARK;
|
| - sessionEntry_.reset([[CRWSessionEntry alloc] initWithUrl:url
|
| - referrer:web::Referrer()
|
| - transition:transition
|
| - useDesktopUserAgent:NO
|
| - rendererInitiated:NO]);
|
| - [sessionEntry_ navigationItem]->SetTimestamp(base::Time::Now());
|
| - [sessionEntry_ addHTTPHeaders:@{ kHTTPHeaderKey1 : kHTTPHeaderValue1 }];
|
| - [sessionEntry_
|
| - setPOSTData:[@"Test data" dataUsingEncoding:NSUTF8StringEncoding]];
|
| + scoped_ptr<web::NavigationItemImpl> item(new web::NavigationItemImpl());
|
| + item->SetURL(url);
|
| + item->SetTransitionType(transition);
|
| + item->SetTimestamp(base::Time::Now());
|
| + item->SetPostData([@"Test data" dataUsingEncoding:NSUTF8StringEncoding]);
|
| + sessionEntry_.reset(
|
| + [[CRWSessionEntry alloc] initWithNavigationItem:item.Pass()]);
|
| }
|
| void TearDown() override { sessionEntry_.reset(); }
|
|
|
| @@ -78,38 +71,37 @@ void CRWSessionEntryTest::expectEqualSessionEntries(
|
| CRWSessionEntry* entry1,
|
| CRWSessionEntry* entry2,
|
| ui::PageTransition transition) {
|
| - EXPECT_EQ(entry1.index, entry2.index);
|
| - web::NavigationItem* navItem1 = entry1.navigationItem;
|
| - web::NavigationItem* navItem2 = entry2.navigationItem;
|
| + web::NavigationItemImpl* navItem1 = entry1.navigationItemImpl;
|
| + web::NavigationItemImpl* navItem2 = entry2.navigationItemImpl;
|
| // url is not compared because it could differ after copy or archive.
|
| EXPECT_EQ(navItem1->GetVirtualURL(), navItem2->GetVirtualURL());
|
| EXPECT_EQ(navItem1->GetReferrer().url, navItem2->GetReferrer().url);
|
| EXPECT_EQ(navItem1->GetTimestamp(), navItem2->GetTimestamp());
|
| EXPECT_EQ(navItem1->GetTitle(), navItem2->GetTitle());
|
| EXPECT_EQ(navItem1->GetPageScrollState(), navItem2->GetPageScrollState());
|
| - EXPECT_EQ(entry1.useDesktopUserAgent, entry2.useDesktopUserAgent);
|
| - EXPECT_EQ(entry1.usedDataReductionProxy, entry2.usedDataReductionProxy);
|
| + EXPECT_EQ(navItem1->ShouldSkipResubmitDataConfirmation(),
|
| + navItem2->ShouldSkipResubmitDataConfirmation());
|
| + EXPECT_EQ(navItem1->IsOverridingUserAgent(),
|
| + navItem2->IsOverridingUserAgent());
|
| + EXPECT_TRUE((!navItem1->HasPostData() && !navItem2->HasPostData()) ||
|
| + [navItem1->GetPostData() isEqualToData:navItem2->GetPostData()]);
|
| EXPECT_EQ(navItem2->GetTransitionType(), transition);
|
| - EXPECT_NSEQ(entry1.httpHeaders, entry2.httpHeaders);
|
| - EXPECT_TRUE((!entry1.POSTData && !entry2.POSTData) ||
|
| - [entry1.POSTData isEqualToData:entry2.POSTData]);
|
| - EXPECT_EQ(entry1.skipResubmitDataConfirmation,
|
| - entry2.skipResubmitDataConfirmation);
|
| + EXPECT_NSEQ(navItem1->GetHttpRequestHeaders(),
|
| + navItem2->GetHttpRequestHeaders());
|
| }
|
|
|
| TEST_F(CRWSessionEntryTest, Description) {
|
| [sessionEntry_ navigationItem]->SetTitle(base::SysNSStringToUTF16(@"Title"));
|
| - EXPECT_NSEQ([sessionEntry_ description], @"url:http://init.test/ "
|
| - @"originalurl:http://init.test/ " @"title:Title " @"transition:2 "
|
| - @"scrollState:{ scrollOffset:(nan, nan), zoomScaleRange:(nan, "
|
| - @"nan), zoomScale:nan } " @"desktopUA:0 " @"proxy:0");
|
| + EXPECT_NSEQ([sessionEntry_ description],
|
| + @"url:http://init.test/ originalurl:http://init.test/ "
|
| + @"title:Title transition:2 scrollState:{ scrollOffset:(nan, "
|
| + @"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"));
|
| - int index = sessionEntry_.get().index;
|
| // Old serialized entries have no timestamp.
|
| item->SetTimestamp(base::Time::FromInternalValue(0));
|
|
|
| @@ -130,8 +122,6 @@ TEST_F(CRWSessionEntryTest, InitWithCoder) {
|
|
|
| [decoder onSelector:@selector(decodeBytesForKey:returnedLength:)
|
| callBlockExpectation:block];
|
| - [[[decoder expect] andReturnValue:OCMOCK_VALUE(index)]
|
| - decodeIntForKey:@"index"];
|
| [[[decoder expect] andReturn:virtualUrl]
|
| decodeObjectForKey:@"virtualUrl"];
|
| [[[decoder expect] andReturn:referrer]
|
| @@ -144,18 +134,19 @@ TEST_F(CRWSessionEntryTest, InitWithCoder) {
|
| [CRWSessionEntry dictionaryFromScrollState:scrollState];
|
| [[[decoder expect] andReturn:serializedScrollState]
|
| decodeObjectForKey:@"state"];
|
| - BOOL useDesktopUserAgent = sessionEntry_.get().useDesktopUserAgent;
|
| + BOOL useDesktopUserAgent =
|
| + [sessionEntry_ navigationItem]->IsOverridingUserAgent();
|
| [[[decoder expect] andReturnValue:OCMOCK_VALUE(useDesktopUserAgent)]
|
| decodeBoolForKey:@"useDesktopUserAgent"];
|
| - BOOL usedDataReductionProxy = sessionEntry_.get().usedDataReductionProxy;
|
| - [[[decoder expect] andReturnValue:OCMOCK_VALUE(usedDataReductionProxy)]
|
| - decodeBoolForKey:@"usedDataReductionProxy"];
|
| - [[[decoder expect] andReturn:sessionEntry_.get().httpHeaders]
|
| + NSDictionary* requestHeaders =
|
| + [sessionEntry_ navigationItem]->GetHttpRequestHeaders();
|
| + [[[decoder expect] andReturn:requestHeaders]
|
| decodeObjectForKey:@"httpHeaders"];
|
| - [[[decoder expect] andReturn:sessionEntry_.get().POSTData]
|
| + [[[decoder expect]
|
| + andReturn:[sessionEntry_ navigationItemImpl]->GetPostData()]
|
| decodeObjectForKey:@"POSTData"];
|
| BOOL skipResubmitDataConfirmation =
|
| - sessionEntry_.get().skipResubmitDataConfirmation;
|
| + [sessionEntry_ navigationItemImpl]->ShouldSkipResubmitDataConfirmation();
|
| [[[decoder expect] andReturnValue:OCMOCK_VALUE(skipResubmitDataConfirmation)]
|
| decodeBoolForKey:@"skipResubmitDataConfirmation"];
|
|
|
| @@ -174,7 +165,6 @@ TEST_F(CRWSessionEntryTest, InitWithCoderNewStyle) {
|
| web::NavigationItem* item = [sessionEntry_ navigationItem];
|
| item->SetVirtualURL(GURL("http://user.friendly"));
|
| item->SetTitle(base::SysNSStringToUTF16(@"Title"));
|
| - int index = sessionEntry_.get().index;
|
| int64 timestamp = item->GetTimestamp().ToInternalValue();
|
|
|
| std::string virtualUrl = item->GetVirtualURL().spec();
|
| @@ -202,8 +192,6 @@ TEST_F(CRWSessionEntryTest, InitWithCoderNewStyle) {
|
| callBlockExpectation:block];
|
| [[[decoder stub] andReturnValue:[NSNumber numberWithBool:YES]]
|
| containsValueForKey:[OCMArg any]];
|
| - [[[decoder expect] andReturnValue:OCMOCK_VALUE(index)]
|
| - decodeIntForKey:@"index"];
|
| web::ReferrerPolicy expectedPolicy = item->GetReferrer().policy;
|
| [[[decoder expect]
|
| andReturnValue:OCMOCK_VALUE(expectedPolicy)]
|
| @@ -218,18 +206,18 @@ TEST_F(CRWSessionEntryTest, InitWithCoderNewStyle) {
|
| [CRWSessionEntry dictionaryFromScrollState:scrollState];
|
| [[[decoder expect] andReturn:serializedScrollState]
|
| decodeObjectForKey:@"state"];
|
| - BOOL useDesktopUserAgent = sessionEntry_.get().useDesktopUserAgent;
|
| + BOOL useDesktopUserAgent =
|
| + [sessionEntry_ navigationItem]->IsOverridingUserAgent();
|
| [[[decoder expect] andReturnValue:OCMOCK_VALUE(useDesktopUserAgent)]
|
| decodeBoolForKey:@"useDesktopUserAgent"];
|
| - BOOL usedDataReductionProxy = sessionEntry_.get().usedDataReductionProxy;
|
| - [[[decoder expect] andReturnValue:OCMOCK_VALUE(usedDataReductionProxy)]
|
| - decodeBoolForKey:@"usedDataReductionProxy"];
|
| - [[[decoder expect] andReturn:sessionEntry_.get().httpHeaders]
|
| + NSDictionary* requestHeaders =
|
| + [sessionEntry_ navigationItem]->GetHttpRequestHeaders();
|
| + [[[decoder expect] andReturn:requestHeaders]
|
| decodeObjectForKey:@"httpHeaders"];
|
| - [[[decoder expect] andReturn:sessionEntry_.get().POSTData]
|
| - decodeObjectForKey:@"POSTData"];
|
| + NSData* POSTData = [sessionEntry_ navigationItemImpl]->GetPostData();
|
| + [[[decoder expect] andReturn:POSTData] decodeObjectForKey:@"POSTData"];
|
| BOOL skipResubmitDataConfirmation =
|
| - sessionEntry_.get().skipResubmitDataConfirmation;
|
| + [sessionEntry_ navigationItemImpl]->ShouldSkipResubmitDataConfirmation();
|
| [[[decoder expect] andReturnValue:OCMOCK_VALUE(skipResubmitDataConfirmation)]
|
| decodeBoolForKey:@"skipResubmitDataConfirmation"];
|
|
|
| @@ -276,7 +264,6 @@ TEST_F(CRWSessionEntryTest, EncodeWithCoder) {
|
| };
|
| [coder onSelector:@selector(encodeBytes:length:forKey:)
|
| callBlockExpectation:block];
|
| - [[coder expect] encodeInt:[sessionEntry_ index] forKey:@"index"];
|
| [[coder expect] encodeInt:item->GetReferrer().policy
|
| forKey:@"referrerPolicy"];
|
| [[coder expect] encodeInt64:item->GetTimestamp().ToInternalValue()
|
| @@ -287,14 +274,18 @@ TEST_F(CRWSessionEntryTest, EncodeWithCoder) {
|
| NSDictionary* serializedScrollState =
|
| [CRWSessionEntry dictionaryFromScrollState:scrollState];
|
| [[coder expect] encodeObject:serializedScrollState forKey:@"state"];
|
| - [[coder expect] encodeBool:[sessionEntry_ useDesktopUserAgent]
|
| - forKey:@"useDesktopUserAgent"];
|
| - [[coder expect] encodeBool:[sessionEntry_ usedDataReductionProxy]
|
| - forKey:@"usedDataReductionProxy"];
|
| - [[coder expect] encodeObject:[sessionEntry_ httpHeaders]
|
| + BOOL useDesktopUserAgent =
|
| + [sessionEntry_ navigationItem]->IsOverridingUserAgent();
|
| + [[coder expect] encodeBool:useDesktopUserAgent forKey:@"useDesktopUserAgent"];
|
| + NSDictionary* requestHeaders =
|
| + [sessionEntry_ navigationItem]->GetHttpRequestHeaders();
|
| + [[coder expect] encodeObject:requestHeaders
|
| forKey:@"httpHeaders"];
|
| - [[coder expect] encodeObject:[sessionEntry_ POSTData] forKey:@"POSTData"];
|
| - [[coder expect] encodeBool:[sessionEntry_ skipResubmitDataConfirmation]
|
| + [[coder expect] encodeObject:[sessionEntry_ navigationItemImpl]->GetPostData()
|
| + forKey:@"POSTData"];
|
| + BOOL skipResubmitDataConfirmation =
|
| + [sessionEntry_ navigationItemImpl]->ShouldSkipResubmitDataConfirmation();
|
| + [[coder expect] encodeBool:skipResubmitDataConfirmation
|
| forKey:@"skipResubmitDataConfirmation"];
|
| [sessionEntry_ encodeWithCoder:coder];
|
| EXPECT_OCMOCK_VERIFY(coder);
|
| @@ -338,63 +329,3 @@ TEST_F(CRWSessionEntryTest, NonEmptyVirtualUrl) {
|
| TEST_F(CRWSessionEntryTest, EmptyDescription) {
|
| EXPECT_GT([[sessionEntry_ description] length], 0U);
|
| }
|
| -
|
| -TEST_F(CRWSessionEntryTest, CreateWithNavigationItem) {
|
| - int index = 5; // Just pick something non-zero.
|
| - GURL url("http://www.virtualurl.com");
|
| - web::Referrer referrer(GURL("http://www.referrer.com"),
|
| - web::ReferrerPolicyDefault);
|
| - base::string16 title = base::SysNSStringToUTF16(@"Title");
|
| - std::string state;
|
| - ui::PageTransition transition = ui::PAGE_TRANSITION_GENERATED;
|
| -
|
| - scoped_ptr<web::NavigationItem> navigation_item(
|
| - new web::NavigationItemImpl());
|
| - navigation_item->SetURL(url);
|
| - navigation_item->SetReferrer(referrer);
|
| - navigation_item->SetTitle(title);
|
| - navigation_item->SetTransitionType(transition);
|
| -
|
| - base::scoped_nsobject<CRWSessionEntry> sessionEntry(
|
| - [[CRWSessionEntry alloc] initWithNavigationItem:navigation_item.Pass()
|
| - index:index]);
|
| - web::NavigationItem* item = [sessionEntry navigationItem];
|
| - // Validate everything was set correctly.
|
| - EXPECT_EQ(sessionEntry.get().index, index);
|
| - // Desktop only persists the virtual url, all three fields are initialized
|
| - // by it.
|
| - EXPECT_EQ(item->GetURL(), url);
|
| - EXPECT_EQ(item->GetVirtualURL(), url);
|
| - EXPECT_EQ(sessionEntry.get().originalUrl, url);
|
| - EXPECT_EQ(item->GetReferrer().url, referrer.url);
|
| - EXPECT_EQ(item->GetTitle(), title);
|
| - EXPECT_EQ(item->GetTransitionType(), transition);
|
| -}
|
| -
|
| -TEST_F(CRWSessionEntryTest, AddHTTPHeaders) {
|
| - EXPECT_NSEQ(@{ kHTTPHeaderKey1 : kHTTPHeaderValue1 },
|
| - [sessionEntry_ httpHeaders]);
|
| -
|
| - [sessionEntry_ addHTTPHeaders:@{ kHTTPHeaderKey1 : kHTTPHeaderValue2 }];
|
| - EXPECT_NSEQ(@{ kHTTPHeaderKey1 : kHTTPHeaderValue2 },
|
| - [sessionEntry_ httpHeaders]);
|
| -
|
| - [sessionEntry_ addHTTPHeaders:@{ kHTTPHeaderKey2 : kHTTPHeaderValue1 }];
|
| - NSDictionary* expected = @{ kHTTPHeaderKey1 : kHTTPHeaderValue2,
|
| - kHTTPHeaderKey2 : kHTTPHeaderValue1 };
|
| - EXPECT_NSEQ(expected, [sessionEntry_ httpHeaders]);
|
| -}
|
| -
|
| -TEST_F(CRWSessionEntryTest, RemoveHTTPHeaderForKey) {
|
| - NSDictionary* httpHeaders = @{ kHTTPHeaderKey1 : kHTTPHeaderValue1,
|
| - kHTTPHeaderKey2 : kHTTPHeaderValue2 };
|
| - [sessionEntry_ addHTTPHeaders:httpHeaders];
|
| - EXPECT_NSEQ(httpHeaders, [sessionEntry_ httpHeaders]);
|
| -
|
| - [sessionEntry_ removeHTTPHeaderForKey:kHTTPHeaderKey1];
|
| - EXPECT_NSEQ(@{ kHTTPHeaderKey2 : kHTTPHeaderValue2 },
|
| - [sessionEntry_ httpHeaders]);
|
| -
|
| - [sessionEntry_ removeHTTPHeaderForKey:kHTTPHeaderKey2];
|
| - EXPECT_TRUE([sessionEntry_ httpHeaders] == nil);
|
| -}
|
|
|