Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(396)

Unified Diff: ios/web/navigation/navigation_manager_impl_unittest.mm

Issue 2705293014: Created web::UserAgentType. (Closed)
Patch Set: rebase + compile fix Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ios/web/navigation/navigation_manager_impl.mm ('k') | ios/web/public/crw_navigation_item_storage.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 bc7a4e0af23dc960833ef2be7923f026a71a5de2..ad92f00a4a2f61b1e0942fb0535271157e6a604c 100644
--- a/ios/web/navigation/navigation_manager_impl_unittest.mm
+++ b/ios/web/navigation/navigation_manager_impl_unittest.mm
@@ -10,6 +10,7 @@
#import "ios/web/navigation/navigation_manager_delegate.h"
#include "ios/web/public/navigation_item.h"
#include "ios/web/public/test/fakes/test_browser_state.h"
+#include "ios/web/test/test_url_constants.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "testing/platform_test.h"
@@ -512,7 +513,90 @@ 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) {
+ // Add and commit two NavigationItems.
+ 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();
+
+ // Verify that the second item's UserAgentType is equal to the first.
+ EXPECT_EQ(item1->GetUserAgentType(), item2->GetUserAgentType());
+
+ // Update |item2|'s UA type to DESKTOP and commit a new item.
+ 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();
+
+ // Verify that the third item's UserAgentType is equal to the second.
+ 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) {
+ // GURL::Replacements that will replace a GURL's scheme with the test native
+ // scheme.
+ GURL::Replacements native_scheme_replacement;
+ native_scheme_replacement.SetSchemeStr(kTestNativeContentScheme);
+
+ // Create two non-native navigations that are separated by a native one.
+ 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(
+ item1->GetURL().ReplaceComponents(native_scheme_replacement), Referrer(),
+ ui::PAGE_TRANSITION_TYPED, web::NavigationInitiationType::USER_INITIATED);
+ [session_controller() commitPendingItem];
+ web::NavigationItem* native_item1 =
+ navigation_manager()->GetLastCommittedItem();
+ ASSERT_EQ(web::UserAgentType::NONE, native_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();
+
+ // Verify that |item1|'s UserAgentType is propagated to |item2|.
+ EXPECT_EQ(item1->GetUserAgentType(), item2->GetUserAgentType());
+
+ // Update |item2|'s UA type to DESKTOP and add a third non-native navigation,
+ // once again separated by a native one.
+ item2->SetUserAgentType(web::UserAgentType::DESKTOP);
+ ASSERT_EQ(web::UserAgentType::DESKTOP, item2->GetUserAgentType());
+ navigation_manager()->AddPendingItem(
+ item2->GetURL().ReplaceComponents(native_scheme_replacement), Referrer(),
+ ui::PAGE_TRANSITION_TYPED, web::NavigationInitiationType::USER_INITIATED);
+ [session_controller() commitPendingItem];
+ web::NavigationItem* native_item2 =
+ navigation_manager()->GetLastCommittedItem();
+ ASSERT_EQ(web::UserAgentType::NONE, native_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();
+
+ // Verify that |item2|'s UserAgentType is propagated to |item3|.
+ EXPECT_EQ(item2->GetUserAgentType(), item3->GetUserAgentType());
}
} // namespace web
« no previous file with comments | « ios/web/navigation/navigation_manager_impl.mm ('k') | ios/web/public/crw_navigation_item_storage.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698