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..89439841f384533ccfb181b0c46d48da44c27d9b 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); |
| +} |
| +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,20 @@ 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 rendererInitiated) { |
|
kkhorimoto
2017/02/15 23:02:06
s/rendererInitiated/renderer_initiated
liaoyuke
2017/02/16 01:49:05
Done.
|
| + [session_controller_ addPendingItem:url |
| + referrer:referrer |
| + transition:type |
| + rendererInitiated:rendererInitiated]; |
| + |
| + bool use_desktop_user_agent = |
| + override_desktop_user_agent_for_next_pending_item_ || |
| + (GetVisibleItem() && GetVisibleItem()->IsOverridingUserAgent()); |
| + GetPendingItem()->SetIsOverridingUserAgent(use_desktop_user_agent); |
| + override_desktop_user_agent_for_next_pending_item_ = false; |
| +} |
| + |
| } // namespace web |