Updating branch refs/heads/master to 81ab79c12969f927bebaad756b88d3a3451f59ef (commit) from bd1d4f8cc00cc62b826e2d786aed75b0275020dd (commit)
commit 81ab79c12969f927bebaad756b88d3a3451f59ef Author: Christian Dywan <christ...@twotoasts.de> Date: Mon Oct 1 00:04:30 2012 +0200 Check resources to see if a file has subresources katze/katze-net.c | 2 +- midori/main.c | 3 ++- midori/midori-browser.c | 19 +++++++------------ midori/midori-dialog.vala | 10 +++++++++- midori/midori-view.c | 14 ++++++++++---- midori/midori-view.h | 3 +++ tests/browser.c | 13 +++++++++---- 7 files changed, 41 insertions(+), 23 deletions(-) diff --git a/katze/katze-net.c b/katze/katze-net.c index 10b55bf..b17e368 100644 --- a/katze/katze-net.c +++ b/katze/katze-net.c @@ -96,7 +96,7 @@ katze_net_get_cached_path (KatzeNet* net, if (subfolder) { - gchar* cache_path = g_build_filename (midori_paths_get_cache_dir (), subfolder, NULL); + gchar* cache_path = g_build_filename (midori_paths_get_cache_dir_for_reading (), subfolder, NULL); katze_mkdir_with_parents (cache_path, 0700); cached_path = g_build_filename (cache_path, cached_filename, NULL); g_free (cache_path); diff --git a/midori/main.c b/midori/main.c index dabe6c8..e56d4a3 100644 --- a/midori/main.c +++ b/midori/main.c @@ -1480,7 +1480,8 @@ static void signal_handler (int signal_id) { signal (signal_id, 0); - midori_app_quit_cb (NULL, NULL); + if (!midori_paths_is_readonly ()) + midori_app_quit_cb (NULL, NULL); if (kill (getpid (), signal_id)) exit (1); } diff --git a/midori/midori-browser.c b/midori/midori-browser.c index 1f8c424..48efcb8 100644 --- a/midori/midori-browser.c +++ b/midori/midori-browser.c @@ -995,15 +995,10 @@ midori_browser_prepare_download (MidoriBrowser* browser, } static void -midori_browser_save_resources (MidoriView* view, +midori_browser_save_resources (GList* resources, const gchar* folder) { - WebKitWebView* web_view = WEBKIT_WEB_VIEW (midori_view_get_web_view (view)); - WebKitWebFrame* frame = webkit_web_view_get_main_frame (web_view); - WebKitWebDataSource* data_source = webkit_web_frame_get_data_source (frame); - GList* resources = webkit_web_data_source_get_subresources (data_source); GList* list; - katze_mkdir_with_parents (folder, 0700); for (list = resources; list; list = g_list_next (list)) @@ -1034,7 +1029,6 @@ midori_browser_save_resources (MidoriView* view, g_free (sub_filename); g_free (sub_path); } - g_list_free (resources); } void @@ -1046,6 +1040,7 @@ midori_browser_save_uri (MidoriBrowser* browser, GtkWidget* dialog; const gchar* title = midori_view_get_display_title (view); gchar* filename; + GList* resources = midori_view_get_subresources (view); gboolean file_only = TRUE; GtkWidget* checkbox = NULL; @@ -1056,7 +1051,7 @@ midori_browser_save_uri (MidoriBrowser* browser, if (uri == NULL) uri = midori_view_get_display_uri (view); - if (midori_view_can_view_source (view)) + if (resources != NULL && g_list_nth_data (resources, 1) != NULL) { file_only = FALSE; checkbox = gtk_check_button_new_with_mnemonic (_("Save associated _resources")); @@ -1090,21 +1085,21 @@ midori_browser_save_uri (MidoriBrowser* browser, { filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog)); if (checkbox != NULL) - file_only = !file_only && !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbox)); - if (!file_only && !g_str_equal (title, uri)) + file_only = !gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbox)); + if (!file_only) { gchar* fullname = g_strconcat (filename, ".html", NULL); midori_view_save_source (view, uri, fullname); g_free (fullname); + midori_browser_save_resources (resources, filename); } else midori_view_save_source (view, uri, filename); - if (!file_only) - midori_browser_save_resources (view, filename); katze_assign (last_dir, gtk_file_chooser_get_current_folder (GTK_FILE_CHOOSER (dialog))); } gtk_widget_destroy (dialog); + g_list_free (resources); } static void diff --git a/midori/midori-dialog.vala b/midori/midori-dialog.vala index f0f5b71..55b6bad 100644 --- a/midori/midori-dialog.vala +++ b/midori/midori-dialog.vala @@ -15,6 +15,11 @@ namespace Midori { public void set_dialog_response (Gtk.ResponseType response) { test_response = response; } + + internal static string? test_filename = null; + public void set_file_chooser_filename (string filename) { + test_filename = filename; + } } public class FileChooserDialog : Gtk.FileChooserDialog { @@ -35,8 +40,11 @@ namespace Midori { namespace Dialog { public static new int run (Gtk.Dialog dialog) { - if (Test.test_response != Gtk.ResponseType.NONE) + if (Test.test_response != Gtk.ResponseType.NONE) { + if (Test.test_filename != null && dialog is Gtk.FileChooser) + (dialog as Gtk.FileChooser).set_filename (Test.test_filename); return Test.test_response; + } return dialog.run (); } } diff --git a/midori/midori-view.c b/midori/midori-view.c index f5c14eb..e06b302 100644 --- a/midori/midori-view.c +++ b/midori/midori-view.c @@ -2115,14 +2115,20 @@ midori_web_view_menu_image_new_tab_activate_cb (GtkWidget* widget, g_free (uri); } -static GString* -midori_view_get_data_for_uri (MidoriView* view, - const gchar* uri) +GList* +midori_view_get_subresources (MidoriView* view) { WebKitWebView* web_view = WEBKIT_WEB_VIEW (view->web_view); WebKitWebFrame* frame = webkit_web_view_get_main_frame (web_view); WebKitWebDataSource* data_source = webkit_web_frame_get_data_source (frame); - GList* resources = webkit_web_data_source_get_subresources (data_source); + return webkit_web_data_source_get_subresources (data_source); +} + +static GString* +midori_view_get_data_for_uri (MidoriView* view, + const gchar* uri) +{ + GList* resources = midori_view_get_subresources (view); GList* list; GString* result; diff --git a/midori/midori-view.h b/midori/midori-view.h index eba73fd..1e6f9fc 100644 --- a/midori/midori-view.h +++ b/midori/midori-view.h @@ -258,6 +258,9 @@ const gchar* midori_view_fallback_extension (MidoriView* view, const gchar* extension); +GList* +midori_view_get_subresources (MidoriView* view); + G_END_DECLS #endif /* __MIDORI_VIEW_H__ */ diff --git a/tests/browser.c b/tests/browser.c index e4db491..73c36b3 100644 --- a/tests/browser.c +++ b/tests/browser.c @@ -31,6 +31,7 @@ browser_create (void) MidoriBrowser* browser; gint n; gchar* temporary_downloads; + gchar* temporary_filename; GtkWidget* view; GFile* file; gchar* uri; @@ -42,22 +43,26 @@ browser_create (void) settings = midori_web_settings_new (); g_object_set (app, "speed-dial", dial, "settings", settings, NULL); browser = midori_app_create_browser (app); - n = midori_browser_add_uri (browser, "about:blank"); + file = g_file_new_for_commandline_arg ("./data/about.css"); + uri = g_file_get_uri (file); + g_object_unref (file); + n = midori_browser_add_uri (browser, uri); view = midori_browser_get_nth_tab (browser, n); midori_test_set_dialog_response (GTK_RESPONSE_OK); temporary_downloads = g_dir_make_tmp ("saveXXXXXX", NULL); + temporary_filename = g_build_filename (temporary_downloads, "test.html", NULL); + midori_test_set_file_chooser_filename (temporary_filename); midori_settings_set_download_folder (MIDORI_SETTINGS (settings), temporary_downloads); midori_browser_save_uri (browser, MIDORI_VIEW (view), NULL); /* View source for local file: should NOT use temporary file */ - file = g_file_new_for_commandline_arg ("./data/error.html"); - uri = g_file_get_uri (file); - g_object_unref (file); n = midori_browser_add_uri (browser, uri); midori_browser_set_current_page (browser, n); g_assert_cmpstr (uri, ==, midori_browser_get_current_uri (browser)); g_free (uri); + g_free (temporary_downloads); + g_free (temporary_filename); gtk_widget_destroy (GTK_WIDGET (browser)); g_object_unref (settings); _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits