void LayoutTestController::clearBackForwardList() { WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame); WebKitWebBackForwardList* list = webkit_web_view_get_back_forward_list(webView); WebKitWebHistoryItem* item = webkit_web_back_forward_list_get_current_item(list); g_object_ref(item); // We clear the history by setting the back/forward list's capacity to 0 // then restoring it back and adding back the current item. gint limit = webkit_web_back_forward_list_get_limit(list); webkit_web_back_forward_list_set_limit(list, 0); webkit_web_back_forward_list_set_limit(list, limit); webkit_web_back_forward_list_add_item(list, item); webkit_web_back_forward_list_go_to_item(list, item); g_object_unref(item); }
bool wxWebViewWebKit::Create(wxWindow *parent, wxWindowID id, const wxString &url, const wxPoint& pos, const wxSize& size, long style, const wxString& name) { m_ready = false; m_busy = false; m_guard = false; if (!PreCreation( parent, pos, size ) || !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name )) { wxFAIL_MSG( wxT("wxWebViewWebKit creation failed") ); return false; } GtkWidget *scrolled_window = gtk_scrolled_window_new (NULL, NULL); web_view = webkit_web_view_new (); g_object_ref(web_view); // TODO: check memory management m_widget = scrolled_window; g_object_ref(m_widget); // TODO: check memory management /* Place the WebKitWebView in the GtkScrolledWindow */ gtk_container_add (GTK_CONTAINER (scrolled_window), web_view); gtk_widget_show(m_widget); gtk_widget_show(web_view); g_signal_connect_after(web_view, "notify::load-status", G_CALLBACK(wxgtk_webview_webkit_load_status), this); g_signal_connect_after(web_view, "navigation-policy-decision-requested", G_CALLBACK(wxgtk_webview_webkit_navigation), this); g_signal_connect_after(web_view, "load-error", G_CALLBACK(wxgtk_webview_webkit_error), this); g_signal_connect_after(web_view, "new-window-policy-decision-requested", G_CALLBACK(wxgtk_webview_webkit_new_window), this); g_signal_connect_after(web_view, "title-changed", G_CALLBACK(wxgtk_webview_webkit_title_changed), this); g_signal_connect_after(web_view, "resource-request-starting", G_CALLBACK(wxgtk_webview_webkit_resource_req), this); m_parent->DoAddChild( this ); PostCreation(size); /* Open a webpage */ webkit_web_view_load_uri (WEBKIT_WEB_VIEW (web_view), url.utf8_str()); //Get the initial history limit so we can enable and disable it later WebKitWebBackForwardList* history; history = webkit_web_view_get_back_forward_list(WEBKIT_WEB_VIEW(web_view)); m_historyLimit = webkit_web_back_forward_list_get_limit(history); m_ready = true; return true; }
bool wxWebViewWebKit::Create(wxWindow *parent, wxWindowID id, const wxString &url, const wxPoint& pos, const wxSize& size, long style, const wxString& name) { m_busy = false; m_guard = false; m_creating = false; FindClear(); // We currently unconditionally impose scrolling in both directions as it's // necessary to show arbitrary pages. style |= wxHSCROLL | wxVSCROLL; if (!PreCreation( parent, pos, size ) || !CreateBase( parent, id, pos, size, style, wxDefaultValidator, name )) { wxFAIL_MSG( wxT("wxWebViewWebKit creation failed") ); return false; } m_web_view = WEBKIT_WEB_VIEW(webkit_web_view_new()); GTKCreateScrolledWindowWith(GTK_WIDGET(m_web_view)); g_object_ref(m_widget); g_signal_connect_after(m_web_view, "navigation-policy-decision-requested", G_CALLBACK(wxgtk_webview_webkit_navigation), this); g_signal_connect_after(m_web_view, "load-error", G_CALLBACK(wxgtk_webview_webkit_error), this); g_signal_connect_after(m_web_view, "new-window-policy-decision-requested", G_CALLBACK(wxgtk_webview_webkit_new_window), this); g_signal_connect_after(m_web_view, "title-changed", G_CALLBACK(wxgtk_webview_webkit_title_changed), this); g_signal_connect_after(m_web_view, "resource-request-starting", G_CALLBACK(wxgtk_webview_webkit_resource_req), this); #if WEBKIT_CHECK_VERSION(1, 10, 0) g_signal_connect_after(m_web_view, "context-menu", G_CALLBACK(wxgtk_webview_webkit_context_menu), this); #endif g_signal_connect_after(m_web_view, "create-web-view", G_CALLBACK(wxgtk_webview_webkit_create_webview), this); m_parent->DoAddChild( this ); PostCreation(size); /* Open a webpage */ webkit_web_view_load_uri(m_web_view, url.utf8_str()); //Get the initial history limit so we can enable and disable it later WebKitWebBackForwardList* history; history = webkit_web_view_get_back_forward_list(m_web_view); m_historyLimit = webkit_web_back_forward_list_get_limit(history); // last to avoid getting signal too early g_signal_connect_after(m_web_view, "notify::load-status", G_CALLBACK(wxgtk_webview_webkit_load_status), this); return true; }