| Index: third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp
|
| diff --git a/third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp b/third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp
|
| index dbfba72aa888f8f5df1bda12a1eb038eb39d7f77..69945adfa3f99e33f0ccd29afef975bdc6b9ee08 100644
|
| --- a/third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp
|
| +++ b/third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp
|
| @@ -583,12 +583,23 @@ NavigationPolicy FrameLoaderClientImpl::decidePolicyForNavigation(const Resource
|
|
|
| WebDataSourceImpl* ds = WebDataSourceImpl::fromDocumentLoader(loader);
|
|
|
| + // Newly created child frames may need to be navigated to a history item
|
| + // during a back/forward navigation. This will only happen when the parent
|
| + // is a LocalFrame doing a back/forward navigation that has not completed.
|
| + // (If the load has completed and the parent later adds a frame with script,
|
| + // we do not want to use a history item for it.)
|
| + bool isHistoryNavigationInNewChildFrame = m_webFrame->parent()
|
| + && m_webFrame->parent()->isWebLocalFrame()
|
| + && isBackForwardLoadType(toWebLocalFrameImpl(m_webFrame->parent())->frame()->loader().loadType())
|
| + && !toWebLocalFrameImpl(m_webFrame->parent())->frame()->document()->loadEventFinished();
|
| +
|
| WrappedResourceRequest wrappedResourceRequest(request);
|
| WebFrameClient::NavigationPolicyInfo navigationInfo(wrappedResourceRequest);
|
| navigationInfo.navigationType = static_cast<WebNavigationType>(type);
|
| navigationInfo.defaultPolicy = static_cast<WebNavigationPolicy>(policy);
|
| navigationInfo.extraData = ds ? ds->extraData() : nullptr;
|
| navigationInfo.replacesCurrentHistoryItem = replacesCurrentHistoryItem;
|
| + navigationInfo.isHistoryNavigationInNewChildFrame = isHistoryNavigationInNewChildFrame;
|
|
|
| WebNavigationPolicy webPolicy = m_webFrame->client()->decidePolicyForNavigation(navigationInfo);
|
| return static_cast<NavigationPolicy>(webPolicy);
|
|
|