NavigationPolicy FrameLoaderClientImpl::decidePolicyForNavigation(const ResourceRequest& request, DocumentLoader* loader, NavigationType type, NavigationPolicy policy, bool replacesCurrentHistoryItem) { if (!m_webFrame->client()) return NavigationPolicyIgnore; if (policy == NavigationPolicyNewBackgroundTab && !allowCreatingBackgroundTabs() && !UIEventWithKeyState::newTabModifierSetFromIsolatedWorld()) policy = NavigationPolicyNewForegroundTab; 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); }
NavigationPolicy FrameLoaderClientImpl::decidePolicyForNavigation(const ResourceRequest& request, DocumentLoader* loader, NavigationPolicy policy, bool isTransitionNavigation) { if (!m_webFrame->client()) return NavigationPolicyIgnore; WebDataSourceImpl* ds = WebDataSourceImpl::fromDocumentLoader(loader); WrappedResourceRequest wrappedResourceRequest(request); WebFrameClient::NavigationPolicyInfo navigationInfo(wrappedResourceRequest); navigationInfo.frame = m_webFrame; navigationInfo.extraData = ds->extraData(); navigationInfo.navigationType = ds->navigationType(); navigationInfo.defaultPolicy = static_cast<WebNavigationPolicy>(policy); navigationInfo.isRedirect = ds->isRedirect(); navigationInfo.isTransitionNavigation = isTransitionNavigation; WebNavigationPolicy webPolicy = m_webFrame->client()->decidePolicyForNavigation(navigationInfo); return static_cast<NavigationPolicy>(webPolicy); }
NavigationPolicy FrameLoaderClientImpl::decidePolicyForNavigation(const ResourceRequest& request, DocumentLoader* loader, NavigationType type, NavigationPolicy policy, bool replacesCurrentHistoryItem) { if (!m_webFrame->client()) return NavigationPolicyIgnore; if (policy == NavigationPolicyNewBackgroundTab && !allowCreatingBackgroundTabs() && !UIEventWithKeyState::newTabModifierSetFromIsolatedWorld()) policy = NavigationPolicyNewForegroundTab; WebDataSourceImpl* ds = WebDataSourceImpl::fromDocumentLoader(loader); 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; WebNavigationPolicy webPolicy = m_webFrame->client()->decidePolicyForNavigation(navigationInfo); return static_cast<NavigationPolicy>(webPolicy); }
NavigationPolicy FrameLoaderClientImpl::decidePolicyForNavigation(const ResourceRequest& request, DocumentLoader* loader, NavigationPolicy policy) { if (!m_webFrame->client()) return NavigationPolicyIgnore; WebDataSourceImpl* ds = WebDataSourceImpl::fromDocumentLoader(loader); WebNavigationPolicy webPolicy = m_webFrame->client()->decidePolicyForNavigation(m_webFrame, ds->extraData(), WrappedResourceRequest(request), ds->navigationType(), static_cast<WebNavigationPolicy>(policy), ds->isRedirect()); return static_cast<NavigationPolicy>(webPolicy); }