diff options
author | Gustavo Noronha Silva <gns@gnome.org> | 2009-10-26 04:22:46 +0800 |
---|---|---|
committer | Gustavo Noronha Silva <gns@gnome.org> | 2009-10-26 22:08:27 +0800 |
commit | 009be331694b442dd859f49c7f02bdef498621ff (patch) | |
tree | eb20eb993eba4e4c520c9a5a4b2970c781b389d5 | |
parent | deafbe738f0293b1cacca8e388aa34ea442818e3 (diff) | |
download | gsoc2013-epiphany-009be331694b442dd859f49c7f02bdef498621ff.tar gsoc2013-epiphany-009be331694b442dd859f49c7f02bdef498621ff.tar.gz gsoc2013-epiphany-009be331694b442dd859f49c7f02bdef498621ff.tar.bz2 gsoc2013-epiphany-009be331694b442dd859f49c7f02bdef498621ff.tar.lz gsoc2013-epiphany-009be331694b442dd859f49c7f02bdef498621ff.tar.xz gsoc2013-epiphany-009be331694b442dd859f49c7f02bdef498621ff.tar.zst gsoc2013-epiphany-009be331694b442dd859f49c7f02bdef498621ff.zip |
Reimplement content type checking
This brings back proper content type reporting, and the 'Open' button
in the download dialog.
Bug #598167
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | embed/ephy-embed.c | 32 |
2 files changed, 20 insertions, 14 deletions
diff --git a/configure.ac b/configure.ac index 8dc78b478..6c77e82f5 100644 --- a/configure.ac +++ b/configure.ac @@ -100,7 +100,7 @@ LIBXSLT_REQUIRED=1.1.7 LIBSTARTUP_NOTIFICATION_REQUIRED=0.5 LIBNOTIFY_REQUIRED=0.4 DBUS_GLIB_REQUIRED=0.35 -WEBKIT_GTK_REQUIRED=1.1.15 +WEBKIT_GTK_REQUIRED=1.1.16 LIBSOUP_GNOME_REQUIRED=2.27.91 GNOME_KEYRING_REQUIRED=2.26.0 diff --git a/embed/ephy-embed.c b/embed/ephy-embed.c index 5f338c5ad..39543ee9b 100644 --- a/embed/ephy-embed.c +++ b/embed/ephy-embed.c @@ -645,27 +645,38 @@ confirm_action_from_mime (WebKitWebView *web_view, GAppInfo *helper_app; const char *suggested_filename; int default_response; + WebKitNetworkResponse *response; + SoupMessage *message; parent_window = gtk_widget_get_toplevel (GTK_WIDGET(web_view)); if (!gtk_widget_is_toplevel (parent_window)) parent_window = NULL; - /* FIXME: we still have no way of getting the content type from - * webkit yet; we need to have a proper WebKitNetworkRequest - * implementation to do this here; see - * https://bugs.webkit.org/show_bug.cgi?id=18608 - */ helper_app = NULL; mime_description = NULL; mime_permission = EPHY_MIME_PERMISSION_SAFE; + + response = webkit_download_get_network_response (download); + message = webkit_network_response_get_message (response); + + if (message) { + const char *content_type = soup_message_headers_get_content_type (message->response_headers, NULL); + + if (content_type) { + mime_description = g_content_type_get_description (content_type); + helper_app = g_app_info_get_default_for_type (content_type, FALSE); + + if (helper_app) { + action = DOWNLOAD_ACTION_OPEN; + } + } + } + if (mime_description == NULL) { mime_description = g_strdup (C_("file type", "Unknown")); action = DOWNLOAD_ACTION_OPEN_LOCATION; } - /* OPEN will never happen here, for now; see comment about - * WebKitNetworkRequest above! - */ action_label = (action == DOWNLOAD_ACTION_OPEN) ? GTK_STOCK_OPEN : STOCK_DOWNLOAD; suggested_filename = webkit_download_get_suggested_filename (download); @@ -757,11 +768,6 @@ download_status_changed_cb (GObject *object, return; } - /* FIXME: when we are able to obtain the MIME information from - * WebKit, we will want to decide earlier whether we want to open or - * open the location to where the file was downloaded. See - * perform_auto_download, too. - */ g_object_ref (download); /* balanced in confirm_action_response_cb */ confirm_action_from_mime (web_view, download, DOWNLOAD_ACTION_DOWNLOAD); } |