Chromium Code Reviews| Index: ios/web/navigation/crw_session_controller.mm |
| diff --git a/ios/web/navigation/crw_session_controller.mm b/ios/web/navigation/crw_session_controller.mm |
| index aa98921e620a5bc72c68361aaeca35d56bf95462..fdac04d133848210783972b64263d9a390bc9868 100644 |
| --- a/ios/web/navigation/crw_session_controller.mm |
| +++ b/ios/web/navigation/crw_session_controller.mm |
| @@ -114,7 +114,6 @@ - (void)discardTransientItem; |
| - (CRWSessionEntry*)sessionEntryWithURL:(const GURL&)url |
| referrer:(const web::Referrer&)referrer |
| transition:(ui::PageTransition)transition |
| - useDesktopUserAgent:(BOOL)useDesktopUserAgent |
| rendererInitiated:(BOOL)rendererInitiated; |
| // Returns YES if the PageTransition for the underlying navigationItem at |
| // |index| in |entries_| has ui::PAGE_TRANSITION_IS_REDIRECT_MASK. |
| @@ -367,10 +366,17 @@ - (void)addPendingItem:(const GURL&)url |
| CRWSessionEntry* currentEntry = self.currentEntry; |
| if (currentEntry) { |
| web::NavigationItem* item = [currentEntry navigationItem]; |
| - if (item->GetURL() == url && |
| - (!PageTransitionCoreTypeIs(trans, ui::PAGE_TRANSITION_FORM_SUBMIT) || |
| - PageTransitionCoreTypeIs(item->GetTransitionType(), |
| - ui::PAGE_TRANSITION_FORM_SUBMIT))) { |
| + |
| + BOOL hasSameURL = item->GetURL() == url; |
| + BOOL isPendingTransitionFormSubmit = |
| + PageTransitionCoreTypeIs(trans, ui::PAGE_TRANSITION_FORM_SUBMIT); |
| + BOOL isCurrentTransitionFormSubmit = PageTransitionCoreTypeIs( |
| + item->GetTransitionType(), ui::PAGE_TRANSITION_FORM_SUBMIT); |
| + BOOL shouldCreatePendingItem = |
| + !hasSameURL || |
| + (isPendingTransitionFormSubmit && !isCurrentTransitionFormSubmit); |
| + |
| + if (!shouldCreatePendingItem) { |
| // Send the notification anyway, to preserve old behavior. It's unknown |
| // whether anything currently relies on this, but since both this whole |
| // hack and the content facade will both be going away, it's not worth |
| @@ -382,15 +388,9 @@ - (void)addPendingItem:(const GURL&)url |
| } |
| } |
| - BOOL useDesktopUserAgent = |
| - _useDesktopUserAgentForNextPendingItem || |
| - (self.currentEntry.navigationItem && |
| - self.currentEntry.navigationItem->IsOverridingUserAgent()); |
| - _useDesktopUserAgentForNextPendingItem = NO; |
| _pendingEntry.reset([self sessionEntryWithURL:url |
| referrer:ref |
| transition:trans |
| - useDesktopUserAgent:useDesktopUserAgent |
| rendererInitiated:rendererInitiated]); |
| if (_navigationManager && _navigationManager->GetFacadeDelegate()) { |
| @@ -484,7 +484,6 @@ - (void)addTransientItemWithURL:(const GURL&)URL { |
| sessionEntryWithURL:URL |
| referrer:web::Referrer() |
| transition:ui::PAGE_TRANSITION_CLIENT_REDIRECT |
| - useDesktopUserAgent:NO |
| rendererInitiated:NO]); |
| web::NavigationItem* navigationItem = [_transientEntry navigationItem]; |
| @@ -502,15 +501,17 @@ - (void)pushNewItemWithURL:(const GURL&)URL |
| CHECK( |
| web::history_state_util::IsHistoryStateChangeValid(item->GetURL(), URL)); |
| web::Referrer referrer(item->GetURL(), web::ReferrerPolicyDefault); |
| - bool overrideUserAgent = |
| - self.currentEntry.navigationItem->IsOverridingUserAgent(); |
| + |
| base::scoped_nsobject<CRWSessionEntry> pushedEntry([self |
| sessionEntryWithURL:URL |
| referrer:referrer |
| transition:transition |
| - useDesktopUserAgent:overrideUserAgent |
| rendererInitiated:NO]); |
| + |
| web::NavigationItemImpl* pushedItem = [pushedEntry navigationItemImpl]; |
| + bool overrideUserAgent = |
| + self.currentEntry.navigationItem->IsOverridingUserAgent(); |
|
Eugene But (OOO till 7-30)
2017/02/16 02:20:48
nit: How about this?:
pushedItem->SetIsOverridingU
liaoyuke
2017/02/16 22:04:29
Done.
|
| + pushedItem->SetIsOverridingUserAgent(overrideUserAgent); |
| pushedItem->SetSerializedStateObject(stateObject); |
| pushedItem->SetIsCreatedFromPushState(true); |
| web::SSLStatus& sslStatus = [self currentEntry].navigationItem->GetSSL(); |
| @@ -679,13 +680,6 @@ - (CRWSessionEntry*)lastUserEntry { |
| return [_entries objectAtIndex:index]; |
| } |
| -- (void)useDesktopUserAgentForNextPendingItem { |
| - if (_pendingEntry) |
| - [_pendingEntry navigationItem]->SetIsOverridingUserAgent(true); |
| - else |
| - _useDesktopUserAgentForNextPendingItem = YES; |
| -} |
| - |
| - (NSInteger)indexOfItem:(const web::NavigationItem*)item { |
| web::NavigationItemList items = self.items; |
| for (NSInteger i = 0; i < static_cast<NSInteger>(items.size()); ++i) { |
| @@ -712,7 +706,6 @@ - (NSString*)uniqueID { |
| - (CRWSessionEntry*)sessionEntryWithURL:(const GURL&)url |
| referrer:(const web::Referrer&)referrer |
| transition:(ui::PageTransition)transition |
| - useDesktopUserAgent:(BOOL)useDesktopUserAgent |
| rendererInitiated:(BOOL)rendererInitiated { |
| GURL loaded_url(url); |
| BOOL urlWasRewritten = NO; |
| @@ -733,7 +726,6 @@ - (CRWSessionEntry*)sessionEntryWithURL:(const GURL&)url |
| item->SetURL(loaded_url); |
| item->SetReferrer(referrer); |
| item->SetTransitionType(transition); |
| - item->SetIsOverridingUserAgent(useDesktopUserAgent); |
| item->set_is_renderer_initiated(rendererInitiated); |
| return [[CRWSessionEntry alloc] initWithNavigationItem:std::move(item)]; |
| } |