void FrameLoaderClient::dispatchDidFinishLoading(WebCore::DocumentLoader* loader, unsigned long identifier) { static_cast<WebKit::DocumentLoader*>(loader)->decreaseLoadCount(identifier); WebKitWebView* webView = getViewFromFrame(m_frame); GOwnPtr<gchar> identifierString(toString(identifier)); WebKitWebResource* webResource = webkit_web_view_get_resource(webView, identifierString.get()); // A NULL WebResource means the load has been interrupted, and // replaced by another one while this resource was being loaded. if (!webResource) return; const char* uri = webkit_web_resource_get_uri(webResource); RefPtr<ArchiveResource> coreResource(loader->subresource(KURL(KURL(), uri))); // If coreResource is NULL here, the resource failed to load, // unless it's the main resource. if (!coreResource && webResource != webkit_web_view_get_main_resource(webView)) return; if (!coreResource) coreResource = loader->mainResource().releaseRef(); webkit_web_resource_init_with_core_resource(webResource, coreResource.get()); // FIXME: This function should notify the application that the resource // finished loading, maybe using a load-status property in the // WebKitWebResource object, similar to what we do for WebKitWebFrame' // signal. notImplemented(); }
void checkResourceData(WebKitWebResource* resource) { m_resourceDataSize = 0; webkit_web_resource_get_data(resource, 0, resourceGetDataCallback, this); g_main_loop_run(m_mainLoop); const char* uri = webkit_web_resource_get_uri(resource); if (uri == kServer->getURIForPath("/")) { g_assert_cmpint(m_resourceDataSize, ==, strlen(kIndexHtml)); g_assert(!strncmp(m_resourceData.get(), kIndexHtml, m_resourceDataSize)); } else if (uri == kServer->getURIForPath("/style.css")) {
void resource_started(WebKitWebView *web_view, WebKitWebResource *resource, WebKitURIRequest *request, gpointer user_data) { const gchar * url; WebKitDownload *download; url = webkit_web_resource_get_uri(resource); //printf("@@@Start resource:%s\n", url); //printf("@@@Start resource\n"); download = webkit_web_view_download_uri(web_view, url); //g_signal_connect(download, "received-data", G_CALLBACK(download_proc), NULL); //g_signal_connect(download, "finished", G_CALLBACK(download_finished), NULL); g_signal_connect(download, "decide-destination", G_CALLBACK(download_dest), NULL); }
static gboolean webViewDecidePolicy(WebKitWebView *webView, WebKitPolicyDecision *decision, WebKitPolicyDecisionType decisionType, BrowserWindow *window) { switch (decisionType) { case WEBKIT_POLICY_DECISION_TYPE_NAVIGATION_ACTION: { WebKitNavigationAction *navigationAction = webkit_navigation_policy_decision_get_navigation_action(WEBKIT_NAVIGATION_POLICY_DECISION(decision)); if (webkit_navigation_action_get_navigation_type(navigationAction) != WEBKIT_NAVIGATION_TYPE_LINK_CLICKED || webkit_navigation_action_get_mouse_button(navigationAction) != GDK_BUTTON_MIDDLE) return FALSE; // Opening a new window if link clicked with the middle button. WebKitWebView *newWebView = WEBKIT_WEB_VIEW(webkit_web_view_new_with_context(webkit_web_view_get_context(webView))); GtkWidget *newWindow = browser_window_new(newWebView, GTK_WINDOW(window)); webkit_web_view_load_request(newWebView, webkit_navigation_action_get_request(navigationAction)); gtk_widget_show(newWindow); webkit_policy_decision_ignore(decision); return TRUE; } case WEBKIT_POLICY_DECISION_TYPE_RESPONSE: { WebKitResponsePolicyDecision *responseDecision = WEBKIT_RESPONSE_POLICY_DECISION(decision); if (webkit_response_policy_decision_is_mime_type_supported(responseDecision)) return FALSE; WebKitWebResource *mainResource = webkit_web_view_get_main_resource(webView); WebKitURIRequest *request = webkit_response_policy_decision_get_request(responseDecision); const char *requestURI = webkit_uri_request_get_uri(request); if (g_strcmp0(webkit_web_resource_get_uri(mainResource), requestURI)) return FALSE; webkit_policy_decision_download(decision); return TRUE; } case WEBKIT_POLICY_DECISION_TYPE_NEW_WINDOW_ACTION: default: return FALSE; } }