void wk_html_close(WkHtml *html) { if (!html->priv->initialised) { html->priv->initialised = TRUE; #ifndef USE_WEBKIT2 webkit_web_view_set_maintains_back_forward_list(WEBKIT_WEB_VIEW(html), FALSE); #endif } #ifdef USE_WEBKIT2 GBytes *html_bytes; html_bytes = g_bytes_new(html->priv->content, strlen(html->priv->content)); webkit_web_view_load_bytes(WEBKIT_WEB_VIEW(html), html_bytes, html->priv->mime, NULL, html->priv->base_uri); g_bytes_unref(html_bytes); #else webkit_web_view_load_string(WEBKIT_WEB_VIEW(html), html->priv->content, html->priv->mime, NULL, html->priv->base_uri); #endif g_free(html->priv->content); html->priv->content = NULL; g_free(html->priv->mime); html->priv->mime = NULL; }
void browser_dialog_open (const gchar *plug_in_binary) { GtkWidget *window; GtkWidget *main_vbox; GtkWidget *vbox; GtkWidget *toolbar; GtkWidget *paned; GtkWidget *scrolled; GtkToolItem *item; GtkAction *action; DialogData data = { 720, 560, 240, TRUE, 1.0 }; gimp_ui_init (plug_in_binary, TRUE); gimp_get_data (GIMP_HELP_BROWSER_DIALOG_DATA, &data); /* the dialog window */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (window), _("GIMP Help Browser")); gtk_window_set_role (GTK_WINDOW (window), plug_in_binary); gtk_window_set_default_size (GTK_WINDOW (window), data.width, data.height); g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); window_set_icons (window); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); gtk_container_add (GTK_CONTAINER (window), vbox); gtk_widget_show (vbox); ui_manager = ui_manager_new (window); toolbar = gtk_ui_manager_get_widget (ui_manager, "/help-browser-toolbar"); gtk_toolbar_set_style (GTK_TOOLBAR (toolbar), GTK_TOOLBAR_ICONS); gtk_box_pack_start (GTK_BOX (vbox), toolbar, FALSE, FALSE, 0); gtk_widget_show (toolbar); item = g_object_new (GTK_TYPE_MENU_TOOL_BUTTON, NULL); gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, 0); gtk_widget_show (GTK_WIDGET (item)); action = gtk_ui_manager_get_action (ui_manager, "/ui/help-browser-popup/forward"); gtk_activatable_set_related_action (GTK_ACTIVATABLE (item), action); g_object_notify (G_OBJECT (action), "tooltip"); button_next = GTK_WIDGET (item); item = g_object_new (GTK_TYPE_MENU_TOOL_BUTTON, NULL); gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, 0); gtk_widget_show (GTK_WIDGET (item)); action = gtk_ui_manager_get_action (ui_manager, "/ui/help-browser-popup/back"); gtk_activatable_set_related_action (GTK_ACTIVATABLE (item), action); g_object_notify (G_OBJECT (action), "tooltip"); button_prev = GTK_WIDGET (item); item = GTK_TOOL_ITEM (gtk_ui_manager_get_widget (ui_manager, "/help-browser-toolbar/space")); gtk_separator_tool_item_set_draw (GTK_SEPARATOR_TOOL_ITEM (item), FALSE); gtk_tool_item_set_expand (item, TRUE); /* the horizontal paned */ paned = gtk_paned_new (GTK_ORIENTATION_HORIZONTAL); gtk_box_pack_start (GTK_BOX (vbox), paned, TRUE, TRUE, 0); gtk_widget_show (paned); scrolled = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_paned_add1 (GTK_PANED (paned), scrolled); gtk_paned_set_position (GTK_PANED (paned), data.paned_position); sidebar = scrolled; if (data.show_index) gtk_widget_show (sidebar); tree_view = gtk_tree_view_new (); gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (tree_view), FALSE); gtk_container_add (GTK_CONTAINER (scrolled), tree_view); gtk_widget_show (tree_view); gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tree_view), -1, NULL, gtk_cell_renderer_text_new (), "text", 1, NULL); g_signal_connect (tree_view, "row-activated", G_CALLBACK (row_activated), NULL); /* HTML view */ main_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_widget_show (main_vbox); gtk_paned_pack2 (GTK_PANED (paned), main_vbox, TRUE, TRUE); scrolled = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_widget_set_size_request (scrolled, 300, 200); gtk_box_pack_start (GTK_BOX (main_vbox), scrolled, TRUE, TRUE, 0); gtk_widget_show (scrolled); view = webkit_web_view_new (); webkit_web_view_set_maintains_back_forward_list (WEBKIT_WEB_VIEW (view), TRUE); gtk_container_add (GTK_CONTAINER (scrolled), view); gtk_widget_show (view); g_signal_connect (view, "realize", G_CALLBACK (view_realize), NULL); g_signal_connect (view, "unrealize", G_CALLBACK (view_unrealize), NULL); g_signal_connect (view, "popup-menu", G_CALLBACK (view_popup_menu), NULL); g_signal_connect (view, "button-press-event", G_CALLBACK (view_button_press), NULL); g_signal_connect (view, "key-press-event", G_CALLBACK (view_key_press), NULL); webkit_web_view_set_zoom_level (WEBKIT_WEB_VIEW (view), data.zoom); g_signal_connect (view, "title-changed", G_CALLBACK (title_changed), window); g_signal_connect (view, "load-started", G_CALLBACK (load_started), NULL); g_signal_connect (view, "load-finished", G_CALLBACK (load_finished), NULL); gtk_widget_grab_focus (view); g_signal_connect (window, "unmap", G_CALLBACK (dialog_unmap), paned); update_actions (); /* Searchbar */ searchbar = build_searchbar (); gtk_box_pack_start (GTK_BOX (main_vbox), searchbar, FALSE, FALSE, 0); }
static void test_webkit_web_back_forward_list_add_item(void) { WebKitWebView* webView; WebKitWebBackForwardList* webBackForwardList; WebKitWebHistoryItem* addItem1; WebKitWebHistoryItem* addItem2; WebKitWebHistoryItem* backItem; WebKitWebHistoryItem* currentItem; g_test_bug("22988"); webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); g_object_ref_sink(webView); webkit_web_view_set_maintains_back_forward_list(webView, TRUE); webBackForwardList = webkit_web_view_get_back_forward_list(webView); g_assert(webBackForwardList); // Check that there is no item. g_assert(!webkit_web_back_forward_list_get_current_item(webBackForwardList)); g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0); g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0); g_assert(!webkit_web_view_can_go_forward(webView)); g_assert(!webkit_web_view_can_go_back(webView)); // Add a new item addItem1 = webkit_web_history_item_new_with_data("http://example.com/", "Added site"); webkit_web_back_forward_list_add_item(webBackForwardList, addItem1); g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, addItem1)); // Check that the added item is the current item. currentItem = webkit_web_back_forward_list_get_current_item(webBackForwardList); g_assert(currentItem); g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0); g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0); g_assert(!webkit_web_view_can_go_forward(webView)); g_assert(!webkit_web_view_can_go_back(webView)); g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/"); g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Added site"); // Add another item. addItem2 = webkit_web_history_item_new_with_data("http://example.com/2/", "Added site 2"); webkit_web_back_forward_list_add_item(webBackForwardList, addItem2); g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, addItem2)); // Check that the added item is new current item. currentItem = webkit_web_back_forward_list_get_current_item(webBackForwardList); g_assert(currentItem); g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0); g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 1); g_assert(!webkit_web_view_can_go_forward(webView)); g_assert(webkit_web_view_can_go_back(webView)); g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/2/"); g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Added site 2"); backItem = webkit_web_back_forward_list_get_back_item(webBackForwardList); g_assert(backItem); g_assert_cmpstr(webkit_web_history_item_get_uri(backItem), ==, "http://example.com/"); g_assert_cmpstr(webkit_web_history_item_get_title(backItem), ==, "Added site"); // Go to the first added item. g_assert(webkit_web_view_go_to_back_forward_item(webView, addItem1)); g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 1); g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0); g_assert(webkit_web_view_can_go_forward(webView)); g_assert(!webkit_web_view_can_go_back(webView)); g_object_unref(webView); }
static void test_webkit_web_back_forward_list_order(void) { WebKitWebView* webView; WebKitWebBackForwardList* webBackForwardList; WebKitWebHistoryItem* item1; WebKitWebHistoryItem* item2; WebKitWebHistoryItem* item3; WebKitWebHistoryItem* item4; WebKitWebHistoryItem* currentItem; GList* backList = NULL; GList* forwardList = NULL; g_test_bug("22694"); webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); g_object_ref_sink(webView); webkit_web_view_set_maintains_back_forward_list(webView, TRUE); webBackForwardList = webkit_web_view_get_back_forward_list(webView); g_assert(webBackForwardList); // Check that there is no item. g_assert(!webkit_web_back_forward_list_get_current_item(webBackForwardList)); g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0); g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0); g_assert(!webkit_web_view_can_go_forward(webView)); g_assert(!webkit_web_view_can_go_back(webView)); // Add a new items item1 = webkit_web_history_item_new_with_data("http://example.com/1/", "Site 1"); webkit_web_back_forward_list_add_item(webBackForwardList, item1); g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, item1)); item2 = webkit_web_history_item_new_with_data("http://example.com/2/", "Site 2"); webkit_web_back_forward_list_add_item(webBackForwardList, item2); g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, item2)); item3 = webkit_web_history_item_new_with_data("http://example.com/3/", "Site 3"); webkit_web_back_forward_list_add_item(webBackForwardList, item3); g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, item3)); item4 = webkit_web_history_item_new_with_data("http://example.com/4/", "Site 4"); webkit_web_back_forward_list_add_item(webBackForwardList, item4); g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, item4)); // check the back list order backList = webkit_web_back_forward_list_get_back_list_with_limit(webBackForwardList, 5); g_assert(backList); currentItem = WEBKIT_WEB_HISTORY_ITEM(backList->data); g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/3/"); g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Site 3"); backList = backList->next; currentItem = WEBKIT_WEB_HISTORY_ITEM(backList->data); g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/2/"); g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Site 2"); backList = backList->next; currentItem = WEBKIT_WEB_HISTORY_ITEM(backList->data); g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/1/"); g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Site 1"); g_list_free(backList); // check the forward list order g_assert(webkit_web_view_go_to_back_forward_item(webView, item1)); forwardList = webkit_web_back_forward_list_get_forward_list_with_limit(webBackForwardList,5); g_assert(forwardList); currentItem = WEBKIT_WEB_HISTORY_ITEM(forwardList->data); g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/4/"); g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Site 4"); forwardList = forwardList->next; currentItem = WEBKIT_WEB_HISTORY_ITEM(forwardList->data); g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/3/"); g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Site 3"); forwardList = forwardList->next; currentItem = WEBKIT_WEB_HISTORY_ITEM(forwardList->data); g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/2/"); g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Site 2"); g_list_free(forwardList); g_object_unref(webView); }