| 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.
|
| + 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(),
|
| + ui::PAGE_TRANSITION_TYPED, web::NavigationInitiationType::USER_INITIATED);
|
| + [session_controller() commitPendingItem];
|
| + web::NavigationItem* nativeItem1 =
|
| + 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
|
|
|