void WebFrame::didReceivePolicyDecision(uint64_t listenerID, PolicyAction action, uint64_t navigationID, uint64_t downloadID) { if (!m_coreFrame) return; if (!m_policyListenerID) return; if (listenerID != m_policyListenerID) return; ASSERT(m_policyFunction); FramePolicyFunction function = WTF::move(m_policyFunction); invalidatePolicyListener(); m_policyDownloadID = downloadID; if (navigationID) { if (WebDocumentLoader* documentLoader = static_cast<WebDocumentLoader*>(m_coreFrame->loader().policyDocumentLoader())) documentLoader->setNavigationID(navigationID); } function(action); }
uint64_t WebFrame::setUpPolicyListener(WebCore::FramePolicyFunction policyFunction) { // FIXME: <rdar://5634381> We need to support multiple active policy listeners. invalidatePolicyListener(); m_policyListenerID = generateListenerID(); m_policyFunction = policyFunction; return m_policyListenerID; }
void WebFrame::didReceivePolicyDecision(uint64_t listenerID, PolicyAction action) { if (!m_coreFrame) return; if (!m_policyListenerID) return; if (listenerID != m_policyListenerID) return; ASSERT(m_policyFunction); FramePolicyFunction function = m_policyFunction; invalidatePolicyListener(); (m_coreFrame->loader()->policyChecker()->*function)(action); }
void WebFrame::didReceivePolicyDecision(uint64_t listenerID, PolicyAction action, uint64_t downloadID) { if (!m_coreFrame) return; if (!m_policyListenerID) return; if (listenerID != m_policyListenerID) return; ASSERT(m_policyFunction); FramePolicyFunction function = std::move(m_policyFunction); invalidatePolicyListener(); m_policyDownloadID = downloadID; function(action); }