void QtWebPagePolicyClient::decidePolicyForNavigationAction(WKPageRef, WKFrameRef frame, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef, const void* clientInfo) { WKRetainPtr<WKURLRef> frameURL(AdoptWK, WKFrameCopyURL(frame)); WKRetainPtr<WKURLRef> requestURL(AdoptWK, WKURLRequestCopyURL(request)); QUrl qUrl = WKURLCopyQUrl(requestURL.get()); toQtWebPagePolicyClient(clientInfo)->decidePolicyForNavigationAction(qUrl, toQtMouseButton(mouseButton), toQtKeyboardModifiers(modifiers), toQuickWebViewNavigationType(navigationType), listener); }
static void didStartProvisionalLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void* clientInfo) { State* state = reinterpret_cast<State*>(const_cast<void*>(clientInfo)); EXPECT_TRUE(state->didDecidePolicyForNavigationAction); EXPECT_FALSE(state->didCommitLoadForFrame); // The commited URL should be null. EXPECT_NULL(WKFrameCopyURL(frame)); EXPECT_FALSE(state->didStartProvisionalLoadForFrame); state->didStartProvisionalLoadForFrame = true; }
TEST(WebKit2, PageLoadDidChangeLocationWithinPageForFrame) { WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate()); PlatformWebView webView(context.get()); WKPageLoaderClient loaderClient; memset(&loaderClient, 0, sizeof(loaderClient)); loaderClient.didFinishLoadForFrame = didFinishLoadForFrame; loaderClient.didSameDocumentNavigationForFrame = didSameDocumentNavigationForFrame; WKPageSetPageLoaderClient(webView.page(), &loaderClient); WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("file-with-anchor", "html")); WKPageLoadURL(webView.page(), url.get()); Util::run(&didFinishLoad); WKRetainPtr<WKURLRef> initialURL = adoptWK(WKFrameCopyURL(WKPageGetMainFrame(webView.page()))); WKPageRunJavaScriptInMainFrame(webView.page(), Util::toWK("clickLink()").get(), 0, nullJavaScriptCallback); Util::run(&didChangeLocationWithinPage); WKRetainPtr<WKURLRef> urlAfterAnchorClick = adoptWK(WKFrameCopyURL(WKPageGetMainFrame(webView.page()))); TEST_ASSERT(!WKURLIsEqual(initialURL.get(), urlAfterAnchorClick.get())); }
void TestController::didFinishLoadForFrame(WKPageRef page, WKFrameRef frame) { if (m_state != Resetting) return; if (!WKFrameIsMainFrame(frame)) return; WKRetainPtr<WKURLRef> wkURL(AdoptWK, WKFrameCopyURL(frame)); if (!WKURLIsEqual(wkURL.get(), blankURL())) return; m_doneResetting = true; shared().notifyDone(); }