Chromium Code Reviews| Index: ios/web/navigation/navigation_manager_impl_unittest.mm |
| diff --git a/ios/web/navigation/navigation_manager_impl_unittest.mm b/ios/web/navigation/navigation_manager_impl_unittest.mm |
| index b777003c5ee6800c2f48b796683fbddd31749cb1..9e4625b22ca7ffad4c316178d0678e4551d050b8 100644 |
| --- a/ios/web/navigation/navigation_manager_impl_unittest.mm |
| +++ b/ios/web/navigation/navigation_manager_impl_unittest.mm |
| @@ -515,6 +515,289 @@ TestNavigationManagerDelegate navigation_manager_delegate() { |
| EXPECT_EQ(0, navigation_manager()->GetIndexForOffset(-1)); |
| } |
| +// Tests that when given a pending item, adding a new pending item should |
|
Eugene But (OOO till 7-30)
2017/04/06 22:53:17
s/should replace/replaces ?
liaoyuke
2017/04/07 15:49:08
Done.
|
| +// replace the existing pending item if their URLs are different. |
| +TEST_F(NavigationManagerTest, ReplacePendingItemIfDiffernetURL) { |
| + GURL existing_url = GURL("http://www.existing.com"); |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::INHERIT); |
| + ASSERT_TRUE(navigation_manager()->GetPendingItem()); |
| + EXPECT_EQ(existing_url, navigation_manager()->GetPendingItem()->GetURL()); |
| + |
| + GURL new_url = GURL("http://www.new.com"); |
| + navigation_manager()->AddPendingItem( |
| + new_url, Referrer(), ui::PAGE_TRANSITION_TYPED, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::INHERIT); |
| + ASSERT_TRUE(navigation_manager()->GetPendingItem()); |
| + EXPECT_EQ(new_url, navigation_manager()->GetPendingItem()->GetURL()); |
|
Eugene But (OOO till 7-30)
2017/04/06 22:53:17
Do you want to verify that ItemCount has changed?
liaoyuke
2017/04/07 15:49:08
Actually, ItemCount will not change because GetIte
Eugene But (OOO till 7-30)
2017/04/07 16:16:40
Verifying that count does not change seems useful.
|
| +} |
| + |
| +// Tests that when given a pending item, adding a new pending item with the same |
| +// URL should replace the existing pending item if new pending item is a form |
| +// submission while existing pending item is not. |
| +TEST_F(NavigationManagerTest, ReplaceSameUrlPendingItemIfFormSubmission) { |
| + GURL existing_url = GURL("http://www.existing.com"); |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::INHERIT); |
| + ASSERT_TRUE(navigation_manager()->GetPendingItem()); |
| + EXPECT_TRUE(ui::PageTransitionCoreTypeIs( |
| + navigation_manager()->GetPendingItem()->GetTransitionType(), |
| + ui::PAGE_TRANSITION_TYPED)); |
| + |
| + // Should not replace if new transition is not a form submission. |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_LINK, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::INHERIT); |
| + ASSERT_TRUE(navigation_manager()->GetPendingItem()); |
| + EXPECT_TRUE(ui::PageTransitionCoreTypeIs( |
| + navigation_manager()->GetPendingItem()->GetTransitionType(), |
| + ui::PAGE_TRANSITION_TYPED)); |
| + |
| + // Should replace if new transition is a form submission. |
|
Eugene But (OOO till 7-30)
2017/04/06 22:53:17
This looks like a separate test from "form submiss
liaoyuke
2017/04/07 15:49:08
Done.
|
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_FORM_SUBMIT, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::INHERIT); |
| + ASSERT_TRUE(navigation_manager()->GetPendingItem()); |
| + EXPECT_TRUE(ui::PageTransitionCoreTypeIs( |
| + navigation_manager()->GetPendingItem()->GetTransitionType(), |
| + ui::PAGE_TRANSITION_FORM_SUBMIT)); |
| +} |
| + |
| +// Tests that when given a pending item, adding a new pending item with the same |
| +// URL should not replace the existing pending item if the user agent override |
| +// option is INHERIT. |
| +TEST_F(NavigationManagerTest, NotReplaceSameUrlPendingItemIfOverrideInherit) { |
| + GURL existing_url = GURL("http://www.existing.com"); |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::INHERIT); |
| + ASSERT_TRUE(navigation_manager()->GetPendingItem()); |
| + EXPECT_TRUE(ui::PageTransitionCoreTypeIs( |
| + navigation_manager()->GetPendingItem()->GetTransitionType(), |
| + ui::PAGE_TRANSITION_TYPED)); |
| + |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_LINK, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::INHERIT); |
| + |
| + ASSERT_TRUE(navigation_manager()->GetPendingItem()); |
| + EXPECT_TRUE(ui::PageTransitionCoreTypeIs( |
| + navigation_manager()->GetPendingItem()->GetTransitionType(), |
| + ui::PAGE_TRANSITION_TYPED)); |
| +} |
| + |
| +// Tests that when given a pending item, adding a new pending item with the same |
| +// URL should replace the existing pending item if the user agent override |
| +// option is DESKTOP, and user agent type of existing item is not desktop. |
| +TEST_F(NavigationManagerTest, ReplaceSameUrlPendingItemIfOverrideDesktop) { |
| + GURL existing_url = GURL("http://www.existing.com"); |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::MOBILE); |
| + ASSERT_TRUE(navigation_manager()->GetPendingItem()); |
| + EXPECT_TRUE(ui::PageTransitionCoreTypeIs( |
| + navigation_manager()->GetPendingItem()->GetTransitionType(), |
| + ui::PAGE_TRANSITION_TYPED)); |
| + EXPECT_NE(web::UserAgentType::DESKTOP, |
| + navigation_manager()->GetPendingItem()->GetUserAgentType()); |
| + |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_LINK, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::DESKTOP); |
| + |
| + ASSERT_TRUE(navigation_manager()->GetPendingItem()); |
| + EXPECT_TRUE(ui::PageTransitionCoreTypeIs( |
| + navigation_manager()->GetPendingItem()->GetTransitionType(), |
| + ui::PAGE_TRANSITION_LINK)); |
| +} |
| + |
| +// Tests that when given a pending item, adding a new pending item with the same |
| +// URL should replace the existing pending item if the user agent override |
| +// option is MOILE. |
| +TEST_F(NavigationManagerTest, ReplaceSameUrlPendingItemIfOverrideMobile) { |
| + GURL existing_url = GURL("http://www.existing.com"); |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::DESKTOP); |
| + ASSERT_TRUE(navigation_manager()->GetPendingItem()); |
| + EXPECT_TRUE(ui::PageTransitionCoreTypeIs( |
| + navigation_manager()->GetPendingItem()->GetTransitionType(), |
| + ui::PAGE_TRANSITION_TYPED)); |
| + EXPECT_NE(web::UserAgentType::MOBILE, |
| + navigation_manager()->GetPendingItem()->GetUserAgentType()); |
| + |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_LINK, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::MOBILE); |
| + |
| + ASSERT_TRUE(navigation_manager()->GetPendingItem()); |
| + EXPECT_TRUE(ui::PageTransitionCoreTypeIs( |
| + navigation_manager()->GetPendingItem()->GetTransitionType(), |
| + ui::PAGE_TRANSITION_LINK)); |
| +} |
| + |
| +// Tests that when the last committed item exists, adding a pending item should |
| +// succeed if the pending item's URL is different from the last committed item. |
| +TEST_F(NavigationManagerTest, AddPendingItemIfDiffernetURL) { |
| + GURL existing_url = GURL("http://www.existing.com"); |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::INHERIT); |
| + [session_controller() commitPendingItem]; |
| + ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); |
| + EXPECT_EQ(existing_url, |
| + navigation_manager()->GetLastCommittedItem()->GetURL()); |
| + |
| + GURL new_url = GURL("http://www.new.com"); |
| + navigation_manager()->AddPendingItem( |
| + new_url, Referrer(), ui::PAGE_TRANSITION_TYPED, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::INHERIT); |
| + ASSERT_TRUE(navigation_manager()->GetPendingItem()); |
| + EXPECT_EQ(new_url, navigation_manager()->GetPendingItem()->GetURL()); |
| +} |
| + |
| +// Tests that when the last committed item exists, adding a pending item with |
| +// the same URL should succeed if the pending item is a form submission while |
| +// the last committed item is not. |
| +TEST_F(NavigationManagerTest, AddSameUrlPendingItemIfFormSubmission) { |
| + GURL existing_url = GURL("http://www.existing.com"); |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::INHERIT); |
| + [session_controller() commitPendingItem]; |
| + ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); |
| + EXPECT_TRUE(ui::PageTransitionCoreTypeIs( |
| + navigation_manager()->GetLastCommittedItem()->GetTransitionType(), |
| + ui::PAGE_TRANSITION_TYPED)); |
| + EXPECT_FALSE(navigation_manager()->GetPendingItem()); |
| + |
| + // Should not add if new transition is not a form submission. |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_LINK, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::INHERIT); |
| + EXPECT_FALSE(navigation_manager()->GetPendingItem()); |
| + |
| + // Should add if new transition is a form submission. |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_FORM_SUBMIT, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::INHERIT); |
| + ASSERT_TRUE(navigation_manager()->GetPendingItem()); |
| + EXPECT_TRUE(ui::PageTransitionCoreTypeIs( |
| + navigation_manager()->GetPendingItem()->GetTransitionType(), |
| + ui::PAGE_TRANSITION_FORM_SUBMIT)); |
| + |
| + // Should not add if both the last committed item and the pending item are |
|
Eugene But (OOO till 7-30)
2017/04/06 22:53:17
This looks like a separate test from "form submiss
liaoyuke
2017/04/07 15:49:08
Done.
|
| + // form submissions. |
| + navigation_manager()->DiscardNonCommittedItems(); |
| + EXPECT_FALSE(navigation_manager()->GetPendingItem()); |
| + ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); |
| + navigation_manager()->GetLastCommittedItem()->SetTransitionType( |
| + ui::PAGE_TRANSITION_FORM_SUBMIT); |
| + EXPECT_TRUE(ui::PageTransitionCoreTypeIs( |
| + navigation_manager()->GetLastCommittedItem()->GetTransitionType(), |
| + ui::PAGE_TRANSITION_FORM_SUBMIT)); |
| + |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_FORM_SUBMIT, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::INHERIT); |
| + EXPECT_FALSE(navigation_manager()->GetPendingItem()); |
| +} |
| + |
| +// Tests that when the last committed item exists, adding a pending item with |
| +// the same URL should fail if the user agent override option is INHERIT. |
| +TEST_F(NavigationManagerTest, NotAddSameUrlPendingItemIfOverrideInherit) { |
| + GURL existing_url = GURL("http://www.existing.com"); |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::INHERIT); |
| + [session_controller() commitPendingItem]; |
| + ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); |
| + EXPECT_TRUE(ui::PageTransitionCoreTypeIs( |
| + navigation_manager()->GetLastCommittedItem()->GetTransitionType(), |
| + ui::PAGE_TRANSITION_TYPED)); |
| + |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_LINK, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::INHERIT); |
| + |
| + EXPECT_FALSE(navigation_manager()->GetPendingItem()); |
| +} |
| + |
| +// Tests that when the last committed item exists, adding a pending item with |
| +// the same URL should succeed if the user agent override option is DESKTOP. |
| +TEST_F(NavigationManagerTest, AddSameUrlPendingItemIfOverrideDesktop) { |
| + GURL existing_url = GURL("http://www.existing.com"); |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::MOBILE); |
| + [session_controller() commitPendingItem]; |
| + ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); |
| + EXPECT_TRUE(ui::PageTransitionCoreTypeIs( |
| + navigation_manager()->GetLastCommittedItem()->GetTransitionType(), |
| + ui::PAGE_TRANSITION_TYPED)); |
| + EXPECT_NE(web::UserAgentType::DESKTOP, |
| + navigation_manager()->GetLastCommittedItem()->GetUserAgentType()); |
| + |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_LINK, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::DESKTOP); |
| + |
| + ASSERT_TRUE(navigation_manager()->GetPendingItem()); |
| + EXPECT_TRUE(ui::PageTransitionCoreTypeIs( |
| + navigation_manager()->GetPendingItem()->GetTransitionType(), |
| + ui::PAGE_TRANSITION_LINK)); |
| +} |
| + |
| +// Tests that when the last committed item exists, adding a pending item with |
| +// the same URL should succeed if the user agent override option is MOBILE. |
| +TEST_F(NavigationManagerTest, AddSameUrlPendingItemIfOverrideMobile) { |
| + GURL existing_url = GURL("http://www.existing.com"); |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_TYPED, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::DESKTOP); |
| + [session_controller() commitPendingItem]; |
| + ASSERT_TRUE(navigation_manager()->GetLastCommittedItem()); |
| + EXPECT_TRUE(ui::PageTransitionCoreTypeIs( |
| + navigation_manager()->GetLastCommittedItem()->GetTransitionType(), |
| + ui::PAGE_TRANSITION_TYPED)); |
| + EXPECT_NE(web::UserAgentType::MOBILE, |
| + navigation_manager()->GetLastCommittedItem()->GetUserAgentType()); |
| + |
| + navigation_manager()->AddPendingItem( |
| + existing_url, Referrer(), ui::PAGE_TRANSITION_LINK, |
| + web::NavigationInitiationType::USER_INITIATED, |
| + web::NavigationManager::UserAgentOverrideOption::MOBILE); |
| + |
| + ASSERT_TRUE(navigation_manager()->GetPendingItem()); |
| + EXPECT_TRUE(ui::PageTransitionCoreTypeIs( |
| + navigation_manager()->GetPendingItem()->GetTransitionType(), |
| + ui::PAGE_TRANSITION_LINK)); |
| +} |
| + |
| // Tests that desktop user agent can be enforced to use for next pending item |
| // when UserAgentOverrideOption is DESKTOP. |
| TEST_F(NavigationManagerTest, OverrideUserAgentWithDesktop) { |