Chromium Code Reviews| Index: ios/web/navigation/navigation_manager_impl.mm |
| diff --git a/ios/web/navigation/navigation_manager_impl.mm b/ios/web/navigation/navigation_manager_impl.mm |
| index b246e7e17e03c15ebaf0ace9fb3799b016ecf84a..b24108cd6172b76a7092c89cccc3474902c0e0e0 100644 |
| --- a/ios/web/navigation/navigation_manager_impl.mm |
| +++ b/ios/web/navigation/navigation_manager_impl.mm |
| @@ -68,7 +68,10 @@ bool AreURLsInPageNavigation(const GURL& existing_url, const GURL& new_url) { |
| } |
| NavigationManagerImpl::NavigationManagerImpl() |
| - : delegate_(nullptr), browser_state_(nullptr), facade_delegate_(nullptr) {} |
| + : override_desktop_user_agent_for_next_pending_item_(false), |
| + delegate_(nullptr), |
| + browser_state_(nullptr), |
| + facade_delegate_(nullptr) {} |
| NavigationManagerImpl::~NavigationManagerImpl() { |
| // The facade layer should be deleted before this object. |
| @@ -173,6 +176,19 @@ bool AreURLsInPageNavigation(const GURL& existing_url, const GURL& new_url) { |
| delegate_->GetWebState()->OpenURL(params); |
| } |
| +void NavigationManagerImpl::AddUserInitiatedPendingItem( |
| + const GURL& url, |
| + const web::Referrer& referrer, |
| + ui::PageTransition type) { |
| + AddPendingItem(url, referrer, type, false); |
| +} |
|
Eugene But (OOO till 7-30)
2017/02/16 02:20:48
nit: add a linebreak
liaoyuke
2017/02/16 22:04:29
Acknowledged.
|
| +void NavigationManagerImpl::AddRendererInitiatedPendingItem( |
| + const GURL& url, |
| + const web::Referrer& referrer, |
| + ui::PageTransition type) { |
| + AddPendingItem(url, referrer, type, true); |
| +} |
| + |
| NavigationItem* NavigationManagerImpl::GetLastUserItem() const { |
| CRWSessionEntry* entry = [session_controller_ lastUserEntry]; |
| return [entry navigationItem]; |
| @@ -396,6 +412,13 @@ bool AreURLsInPageNavigation(const GURL& existing_url, const GURL& new_url) { |
| return result; |
| } |
| +void NavigationManagerImpl::OverrideDesktopUserAgentForNextPendingItem() { |
| + if (GetPendingItem()) |
| + GetPendingItem()->SetIsOverridingUserAgent(true); |
| + else |
| + override_desktop_user_agent_for_next_pending_item_ = true; |
| +} |
| + |
| bool NavigationManagerImpl::IsRedirectItemAtIndex(int index) const { |
| DCHECK_GT(index, 0); |
| DCHECK_LT(index, GetItemCount()); |
| @@ -403,4 +426,21 @@ bool AreURLsInPageNavigation(const GURL& existing_url, const GURL& new_url) { |
| return transition & ui::PAGE_TRANSITION_IS_REDIRECT_MASK; |
| } |
| +void NavigationManagerImpl::AddPendingItem(const GURL& url, |
| + const web::Referrer& referrer, |
| + ui::PageTransition type, |
| + bool renderer_initiated) { |
| + [session_controller_ addPendingItem:url |
| + referrer:referrer |
| + transition:type |
| + rendererInitiated:renderer_initiated]; |
| + |
| + bool use_desktop_user_agent = |
| + override_desktop_user_agent_for_next_pending_item_ || |
| + (GetLastCommittedItem() && |
| + GetLastCommittedItem()->IsOverridingUserAgent()); |
| + GetPendingItem()->SetIsOverridingUserAgent(use_desktop_user_agent); |
| + override_desktop_user_agent_for_next_pending_item_ = false; |
| +} |
| + |
| } // namespace web |