Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights | 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights |
| 3 * reserved. | 3 * reserved. |
| 4 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 4 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
| 5 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. | 5 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. |
| 6 * (http://www.torchmobile.com/) | 6 * (http://www.torchmobile.com/) |
| 7 * Copyright (C) 2008 Alp Toker <alp@atoker.com> | 7 * Copyright (C) 2008 Alp Toker <alp@atoker.com> |
| 8 * Copyright (C) Research In Motion Limited 2009. All rights reserved. | 8 * Copyright (C) Research In Motion Limited 2009. All rights reserved. |
| 9 * Copyright (C) 2011 Kris Jordan <krisjordan@gmail.com> | 9 * Copyright (C) 2011 Kris Jordan <krisjordan@gmail.com> |
| 10 * Copyright (C) 2011 Google Inc. All rights reserved. | 10 * Copyright (C) 2011 Google Inc. All rights reserved. |
| (...skipping 1155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1166 ? determineFrameLoadType(request) | 1166 ? determineFrameLoadType(request) |
| 1167 : frameLoadType; | 1167 : frameLoadType; |
| 1168 bool sameDocumentHistoryNavigation = | 1168 bool sameDocumentHistoryNavigation = |
| 1169 isBackForwardLoadType(newLoadType) && | 1169 isBackForwardLoadType(newLoadType) && |
| 1170 historyLoadType == HistorySameDocumentLoad; | 1170 historyLoadType == HistorySameDocumentLoad; |
| 1171 bool sameDocumentNavigation = | 1171 bool sameDocumentNavigation = |
| 1172 policy == NavigationPolicyCurrentTab && | 1172 policy == NavigationPolicyCurrentTab && |
| 1173 shouldPerformFragmentNavigation(request.form(), | 1173 shouldPerformFragmentNavigation(request.form(), |
| 1174 request.resourceRequest().httpMethod(), | 1174 request.resourceRequest().httpMethod(), |
| 1175 newLoadType, url); | 1175 newLoadType, url); |
| 1176 | |
| 1177 // Perform same document navigation. | 1176 // Perform same document navigation. |
| 1178 if (sameDocumentHistoryNavigation || sameDocumentNavigation) { | 1177 if (sameDocumentHistoryNavigation || sameDocumentNavigation) { |
| 1179 DCHECK(historyItem || !sameDocumentHistoryNavigation); | 1178 DCHECK(historyItem || !sameDocumentHistoryNavigation); |
| 1180 RefPtr<SerializedScriptValue> stateObject = | 1179 RefPtr<SerializedScriptValue> stateObject = |
| 1181 sameDocumentHistoryNavigation ? historyItem->stateObject() : nullptr; | 1180 sameDocumentHistoryNavigation ? historyItem->stateObject() : nullptr; |
| 1182 | 1181 |
| 1183 if (!sameDocumentHistoryNavigation) { | 1182 if (!sameDocumentHistoryNavigation) { |
| 1184 m_documentLoader->setNavigationType(determineNavigationType( | 1183 m_documentLoader->setNavigationType(determineNavigationType( |
| 1185 newLoadType, false, request.triggeringEvent())); | 1184 newLoadType, false, request.triggeringEvent())); |
| 1186 if (shouldTreatURLAsSameAsCurrent(url)) | 1185 if (shouldTreatURLAsSameAsCurrent(url)) |
| 1187 newLoadType = FrameLoadTypeReplaceCurrentItem; | 1186 newLoadType = FrameLoadTypeReplaceCurrentItem; |
| 1188 } | 1187 } |
| 1189 | 1188 |
| 1190 loadInSameDocument(url, stateObject, newLoadType, historyLoadType, | 1189 loadInSameDocument(url, stateObject, newLoadType, historyLoadType, |
| 1191 request.clientRedirect(), request.originDocument()); | 1190 request.clientRedirect(), request.originDocument()); |
| 1192 return; | 1191 return; |
| 1193 } | 1192 } |
| 1194 | 1193 |
| 1194 // PlzNavigate | |
| 1195 // If the loader classifies this navigation as a different document navigation | |
| 1196 // while the browser intended the navigation to be same-document, it means | |
| 1197 // that a different navigation must have committed while the IPC was sent. | |
| 1198 // This navigation is no more same-document. The navigation is simply dropped. | |
|
nasko
2017/01/13 19:36:57
Looking at the code in RenderFrameImpl::NavigateIn
arthursonzogni
2017/01/17 15:24:48
It's because the response body stream is empty.
Th
nasko
2017/01/19 00:43:35
How about JS executing "window.history.back()" or
arthursonzogni
2017/01/19 17:49:21
For renderer-initiated history-navigation. The ren
| |
| 1199 if (request.resourceRequest().isSameDocumentNavigation()) | |
| 1200 return; | |
| 1201 | |
| 1195 startLoad(request, newLoadType, policy); | 1202 startLoad(request, newLoadType, policy); |
| 1196 } | 1203 } |
| 1197 | 1204 |
| 1198 SubstituteData FrameLoader::defaultSubstituteDataForURL(const KURL& url) { | 1205 SubstituteData FrameLoader::defaultSubstituteDataForURL(const KURL& url) { |
| 1199 if (!shouldTreatURLAsSrcdocDocument(url)) | 1206 if (!shouldTreatURLAsSrcdocDocument(url)) |
| 1200 return SubstituteData(); | 1207 return SubstituteData(); |
| 1201 String srcdoc = m_frame->deprecatedLocalOwner()->fastGetAttribute(srcdocAttr); | 1208 String srcdoc = m_frame->deprecatedLocalOwner()->fastGetAttribute(srcdocAttr); |
| 1202 DCHECK(!srcdoc.isNull()); | 1209 DCHECK(!srcdoc.isNull()); |
| 1203 CString encodedSrcdoc = srcdoc.utf8(); | 1210 CString encodedSrcdoc = srcdoc.utf8(); |
| 1204 return SubstituteData( | 1211 return SubstituteData( |
| (...skipping 700 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1905 m_documentLoader ? m_documentLoader->url() : String()); | 1912 m_documentLoader ? m_documentLoader->url() : String()); |
| 1906 return tracedValue; | 1913 return tracedValue; |
| 1907 } | 1914 } |
| 1908 | 1915 |
| 1909 inline void FrameLoader::takeObjectSnapshot() const { | 1916 inline void FrameLoader::takeObjectSnapshot() const { |
| 1910 TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID("loading", "FrameLoader", this, | 1917 TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID("loading", "FrameLoader", this, |
| 1911 toTracedValue()); | 1918 toTracedValue()); |
| 1912 } | 1919 } |
| 1913 | 1920 |
| 1914 } // namespace blink | 1921 } // namespace blink |
| OLD | NEW |