wxString wxWebViewWebKit::GetPageSource() const { WebKitWebResource *resource = webkit_web_view_get_main_resource(m_web_view); if (!resource) { return wxString(); } GAsyncResult *result = NULL; webkit_web_resource_get_data(resource, NULL, (GAsyncReadyCallback)wxgtk_web_resource_get_data_cb, &result); GMainContext *main_context = g_main_context_get_thread_default(); while (!result) { g_main_context_iteration(main_context, TRUE); } guchar *source = webkit_web_resource_get_data_finish(resource, result, NULL, NULL); if (result) { g_object_unref(result); } if (source) { wxString wxs = wxString(source, wxConvUTF8); free(source); return wxs; } return wxString(); }
static void resourceGetDataCallback(GObject* object, GAsyncResult* result, gpointer userData) { size_t dataSize; GOwnPtr<GError> error; unsigned char* data = webkit_web_resource_get_data_finish(WEBKIT_WEB_RESOURCE(object), result, &dataSize, &error.outPtr()); g_assert(data); WebViewTest* test = static_cast<WebViewTest*>(userData); test->m_resourceData.set(reinterpret_cast<char*>(data)); test->m_resourceDataSize = dataSize; g_main_loop_quit(test->m_mainLoop); }
static void html_finished(GObject *object, GAsyncResult *result, gpointer user_data) { WebKitWebResource *wr = WEBKIT_WEB_RESOURCE(object); GError *error = NULL; gsize length; guchar *h = webkit_web_resource_get_data_finish(wr, result, &length, &error); FILE *f = open_file(html_file, "w"); if (fwrite(h, length, 1, f) != 1) { errx(1, "error saving html"); } fclose(f); done(); }
static void normal_view_source_loaded(WebKitWebResource *resource, GAsyncResult *res, Client *c) { gsize length; guchar *data = NULL; char *text = NULL; data = webkit_web_resource_get_data_finish(resource, res, &length, NULL); if (data) { text = g_strndup((gchar*)data, length); command_spawn_editor(c, &((Arg){0, (char *)text}), NULL, NULL); g_free(data); g_free(text); } }