void QtWebPagePolicyClient::decidePolicyForResponse(WKPageRef page, WKFrameRef frame, WKURLResponseRef response, WKURLRequestRef, WKFramePolicyListenerRef listener, WKTypeRef, const void*) { String type = toImpl(response)->resourceResponse().mimeType(); type.makeLower(); bool canShowMIMEType = toImpl(frame)->canShowMIMEType(type); if (WKPageGetMainFrame(page) == frame) { if (canShowMIMEType) { WKFramePolicyListenerUse(listener); return; } // If we can't use (show) it then we should download it. WKFramePolicyListenerDownload(listener); return; } // We should ignore downloadable top-level content for subframes, with an exception for text/xml and application/xml so we can still support Acid3 test. // It makes the browser intentionally behave differently when it comes to text(application)/xml content in subframes vs. mainframe. if (!canShowMIMEType && !(type == "text/xml" || type == "application/xml")) { WKFramePolicyListenerIgnore(listener); return; } WKFramePolicyListenerUse(listener); }
static void decidePolicyForResponse(WKPageRef, WKFrameRef, WKURLResponseRef response, WKURLRequestRef, WKFramePolicyListenerRef listener, WKTypeRef, const void*) { EXPECT_WK_STREQ("text/html", Util::MIMETypeForWKURLResponse(response)); WKFramePolicyListenerUse(listener); done = true; }
void TestController::decidePolicyForNavigationAction(WKFramePolicyListenerRef listener) { if (m_policyDelegateEnabled && !m_policyDelegatePermissive) { WKFramePolicyListenerIgnore(listener); return; } WKFramePolicyListenerUse(listener); }
static void decidePolicyForNavigationAction(WKPageRef page, WKFrameRef frame, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo) { State* state = reinterpret_cast<State*>(const_cast<void*>(clientInfo)); EXPECT_FALSE(state->didStartProvisionalLoadForFrame); EXPECT_FALSE(state->didCommitLoadForFrame); state->didDecidePolicyForNavigationAction = true; WKFramePolicyListenerUse(listener); }
static void webkitPolicyDecisionFinalize(GObject* object) { WebKitPolicyDecisionPrivate* priv = WEBKIT_POLICY_DECISION(object)->priv; // This is the default choice for all policy decisions in WebPageProxy.cpp. if (!priv->madePolicyDecision) WKFramePolicyListenerUse(priv->listener.get()); priv->~WebKitPolicyDecisionPrivate(); G_OBJECT_CLASS(webkit_policy_decision_parent_class)->finalize(object); }
void TestController::decidePolicyForResponse(WKFrameRef frame, WKURLResponseRef response, WKFramePolicyListenerRef listener) { // Even though Response was already checked by WKBundlePagePolicyClient, the check did not include plugins // so we have to re-check again. WKRetainPtr<WKStringRef> wkMIMEType(AdoptWK, WKURLResponseCopyMIMEType(response)); if (WKFrameCanShowMIMEType(frame, wkMIMEType.get())) { WKFramePolicyListenerUse(listener); return; } WKFramePolicyListenerIgnore(listener); }
void QtWebPagePolicyClient::decidePolicyForNavigationAction(const QUrl& url, Qt::MouseButton mouseButton, Qt::KeyboardModifiers keyboardModifiers, QQuickWebView::NavigationType navigationType, bool isMainFrame, WKFramePolicyListenerRef listener) { // NOTE: even though the C API (and the WebKit2 IPC) supports an asynchronous answer, this is not currently working. // We are expected to call the listener immediately. See the patch for https://bugs.webkit.org/show_bug.cgi?id=53785. QWebNavigationRequest navigationRequest(url, mouseButton, keyboardModifiers, navigationType, isMainFrame); emit m_webView->navigationRequested(&navigationRequest); switch (navigationRequest.action()) { case QQuickWebView::IgnoreRequest: WKFramePolicyListenerIgnore(listener); return; case QQuickWebViewExperimental::DownloadRequest: WKFramePolicyListenerDownload(listener); return; case QQuickWebView::AcceptRequest: WKFramePolicyListenerUse(listener); return; } ASSERT_NOT_REACHED(); }
EGL_LINUX_DRM_FOURCC_EXT, static_cast<EGLint>(imageData->format), EGL_DMA_BUF_PLANE0_FD_EXT, fd, EGL_DMA_BUF_PLANE0_OFFSET_EXT, 0, EGL_DMA_BUF_PLANE0_PITCH_EXT, static_cast<EGLint>(imageData->stride), EGL_NONE, }; EGLImageKHR image = view.m_glContext.createImage(view.m_glContext.eglDisplay(), EGL_NO_CONTEXT, EGL_LINUX_DMA_BUF_EXT, nullptr, attributes); view.m_pendingImage = { imageData->handle, std::make_tuple(image, imageData->width, imageData->height) }; }, }; WKPageNavigationClientV0 View::s_pageNavigationClient = { { 0, nullptr }, // decidePolicyForNavigationAction [](WKPageRef, WKNavigationActionRef, WKFramePolicyListenerRef listener, WKTypeRef, const void*) { WKFramePolicyListenerUse(listener); }, // decidePolicyForNavigationResponse [](WKPageRef, WKNavigationResponseRef, WKFramePolicyListenerRef listener, WKTypeRef, const void*) { WKFramePolicyListenerUse(listener); }, nullptr, // decidePolicyForPluginLoad nullptr, // didStartProvisionalNavigation nullptr, // didReceiveServerRedirectForProvisionalNavigation nullptr, // didFailProvisionalNavigation nullptr, // didCommitNavigation nullptr, // didFinishNavigation nullptr, // didFailNavigation nullptr, // didFailProvisionalLoadInSubframe nullptr, // didFinishDocumentLoad nullptr, // didSameDocumentNavigation
static void decidePolicyForNewWindowAction(WKPageRef page, WKFrameRef frame, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKURLRequestRef request, WKStringRef frameName, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo) { WKFramePolicyListenerUse(listener); }
static void decidePolicyForResponse(WKPageRef page, WKFrameRef frame, WKURLResponseRef response, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo) { WKFramePolicyListenerUse(listener); }
/** * webkit_policy_decision_use: * @decision: a #WebKitPolicyDecision * * Accept the action which triggerd this decision. */ void webkit_policy_decision_use(WebKitPolicyDecision* decision) { g_return_if_fail(WEBKIT_IS_POLICY_DECISION(decision)); WKFramePolicyListenerUse(decision->priv->listener.get()); decision->priv->madePolicyDecision = true; }