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