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 420beea84ab5559fe84a6a7da9b5d0718590d983..b6f0819734f964348a9725ee1c60f0a3d931738f 100644 |
--- a/ios/web/navigation/navigation_manager_impl_unittest.mm |
+++ b/ios/web/navigation/navigation_manager_impl_unittest.mm |
@@ -515,7 +515,77 @@ void OnNavigationItemCommitted(const LoadCommittedDetails&) override {} |
web::NavigationInitiationType::USER_INITIATED); |
[session_controller() commitPendingItem]; |
NavigationItem* visible_item = navigation_manager()->GetVisibleItem(); |
- EXPECT_TRUE(visible_item->IsOverridingUserAgent()); |
+ EXPECT_EQ(visible_item->GetUserAgentType(), UserAgentType::DESKTOP); |
+} |
+ |
+// Tests that the UserAgentType is propagated to subsequent NavigationItems. |
+TEST_F(NavigationManagerTest, UserAgentTypePropagation) { |
+ // Test that the first item's UA type is propagated to the second. |
Eugene But (OOO till 7-30)
2017/03/02 03:36:34
Do you want to use linebreaks for the code to sepa
kkhorimoto
2017/03/02 04:12:55
Done.
|
+ navigation_manager()->AddPendingItem( |
+ GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
+ web::NavigationInitiationType::USER_INITIATED); |
+ [session_controller() commitPendingItem]; |
+ web::NavigationItem* item1 = navigation_manager()->GetLastCommittedItem(); |
+ ASSERT_EQ(web::UserAgentType::MOBILE, item1->GetUserAgentType()); |
+ navigation_manager()->AddPendingItem( |
+ GURL("http://www.2.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
+ web::NavigationInitiationType::USER_INITIATED); |
+ [session_controller() commitPendingItem]; |
+ web::NavigationItem* item2 = navigation_manager()->GetLastCommittedItem(); |
+ EXPECT_EQ(item1->GetUserAgentType(), item2->GetUserAgentType()); |
+ // Update |item2|'s UA type to DESKTOP and verify that it is propagated to |
+ // |item3|. |
+ item2->SetUserAgentType(web::UserAgentType::DESKTOP); |
+ ASSERT_EQ(web::UserAgentType::DESKTOP, item2->GetUserAgentType()); |
+ navigation_manager()->AddPendingItem( |
+ GURL("http://www.3.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
+ web::NavigationInitiationType::USER_INITIATED); |
+ [session_controller() commitPendingItem]; |
+ web::NavigationItem* item3 = navigation_manager()->GetLastCommittedItem(); |
+ EXPECT_EQ(item2->GetUserAgentType(), item3->GetUserAgentType()); |
+} |
+ |
+// Tests that the UserAgentType is propagated to subsequent NavigationItems if |
+// a native URL exists in between naviations. |
+TEST_F(NavigationManagerTest, UserAgentTypePropagationPastNativeItems) { |
+ // Test that the first item's UA type is propagated to the second when a |
+ // native page separates the navigations. |
+ navigation_manager()->AddPendingItem( |
+ GURL("http://www.1.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
+ web::NavigationInitiationType::USER_INITIATED); |
+ [session_controller() commitPendingItem]; |
+ web::NavigationItem* item1 = navigation_manager()->GetLastCommittedItem(); |
+ ASSERT_EQ(web::UserAgentType::MOBILE, item1->GetUserAgentType()); |
+ navigation_manager()->AddPendingItem( |
+ GURL("testnativecontent://native1"), Referrer(), |
Eugene But (OOO till 7-30)
2017/03/02 03:36:34
Please use kTestNativeContentScheme instead of har
kkhorimoto
2017/03/02 04:12:55
Done.
|
+ ui::PAGE_TRANSITION_TYPED, web::NavigationInitiationType::USER_INITIATED); |
+ [session_controller() commitPendingItem]; |
+ web::NavigationItem* nativeItem1 = |
Eugene But (OOO till 7-30)
2017/03/02 03:36:34
native_item1
kkhorimoto
2017/03/02 04:12:55
Done.
|
+ navigation_manager()->GetLastCommittedItem(); |
+ ASSERT_EQ(web::UserAgentType::NONE, nativeItem1->GetUserAgentType()); |
+ navigation_manager()->AddPendingItem( |
+ GURL("http://www.2.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
+ web::NavigationInitiationType::USER_INITIATED); |
+ [session_controller() commitPendingItem]; |
+ web::NavigationItem* item2 = navigation_manager()->GetLastCommittedItem(); |
+ EXPECT_EQ(item1->GetUserAgentType(), item2->GetUserAgentType()); |
+ // Update |item2|'s UA type to DESKTOP and verify that it is propagated to |
+ // |item3| when a native page separates the navigations. |
+ item2->SetUserAgentType(web::UserAgentType::DESKTOP); |
+ ASSERT_EQ(web::UserAgentType::DESKTOP, item2->GetUserAgentType()); |
+ navigation_manager()->AddPendingItem( |
+ GURL("testnativecontent://native2"), Referrer(), |
+ ui::PAGE_TRANSITION_TYPED, web::NavigationInitiationType::USER_INITIATED); |
+ [session_controller() commitPendingItem]; |
+ web::NavigationItem* nativeItem2 = |
+ navigation_manager()->GetLastCommittedItem(); |
+ ASSERT_EQ(web::UserAgentType::NONE, nativeItem2->GetUserAgentType()); |
+ navigation_manager()->AddPendingItem( |
+ GURL("http://www.3.com"), Referrer(), ui::PAGE_TRANSITION_TYPED, |
+ web::NavigationInitiationType::USER_INITIATED); |
+ [session_controller() commitPendingItem]; |
+ web::NavigationItem* item3 = navigation_manager()->GetLastCommittedItem(); |
+ EXPECT_EQ(item2->GetUserAgentType(), item3->GetUserAgentType()); |
} |
} // namespace web |