void checkDestinationAndDeleteFile(WebKitDownload* download, const char* expectedName) { if (!webkit_download_get_destination(download)) return; GRefPtr<GFile> destFile = adoptGRef(g_file_new_for_uri(webkit_download_get_destination(download))); GOwnPtr<char> destBasename(g_file_get_basename(destFile.get())); g_assert_cmpstr(destBasename.get(), ==, expectedName); g_file_delete(destFile.get(), 0, 0); }
static gboolean createdDestinationCallback(WebKitDownload* download, const gchar* destination, DownloadTest* test) { g_assert(webkit_download_get_destination(download)); g_assert_cmpstr(webkit_download_get_destination(download), ==, destination); test->createdDestination(download, destination); return TRUE; }
void changed_download_progress(GObject *obj, GParamSpec *pspec, gpointer data) { WebKitDownload *download = WEBKIT_DOWNLOAD(obj); WebKitURIResponse *resp; GtkToolItem *tb = GTK_TOOL_ITEM(data); gdouble p, size_mb; const gchar *uri; gchar *t, *filename, *base; p = webkit_download_get_estimated_progress(download) * 100; resp = webkit_download_get_response(download); size_mb = webkit_uri_response_get_content_length(resp) / 1e6; uri = webkit_download_get_destination(download); filename = g_filename_from_uri(uri, NULL, NULL); if (filename == NULL) { /* This really should not happen because WebKit uses that URI to * write to a file... */ fprintf(stderr, __NAME__": Could not construct file name from URI!\n"); t = g_strdup_printf("%s (%.0f%% of %.1f MB)", webkit_uri_response_get_uri(resp), p, size_mb); } else { base = g_path_get_basename(filename); t = g_strdup_printf("%s (%.0f%% of %.1f MB)", base, p, size_mb); g_free(filename); g_free(base); } gtk_tool_button_set_label(GTK_TOOL_BUTTON(tb), t); g_free(t); }
/** * ephy_download_do_download_action: * @download: an #EphyDownload * @action: one of #EphyDownloadActionType * * Executes the given @action for @download, this can be any of * #EphyDownloadActionType, including #EPHY_DOWNLOAD_ACTION_AUTO which decides * the default action from the mime type of @download. * * Returns: %TRUE if the action was executed succesfully. * **/ gboolean ephy_download_do_download_action (EphyDownload *download, EphyDownloadActionType action) { GFile *destination; const char *destination_uri; EphyDownloadPrivate *priv; gboolean ret = FALSE; priv = download->priv; #ifdef HAVE_WEBKIT2 destination_uri = webkit_download_get_destination (priv->download); #else destination_uri = webkit_download_get_destination_uri (priv->download); #endif destination = g_file_new_for_uri (destination_uri); switch ((action ? action : priv->action)) { case EPHY_DOWNLOAD_ACTION_AUTO: LOG ("ephy_download_do_download_action: auto"); ret = ephy_download_do_download_action (download, decide_action_from_mime (download)); break; case EPHY_DOWNLOAD_ACTION_BROWSE_TO: LOG ("ephy_download_do_download_action: browse_to"); ret = ephy_file_browse_to (destination, priv->start_time); break; case EPHY_DOWNLOAD_ACTION_OPEN: LOG ("ephy_download_do_download_action: open"); ret = ephy_file_launch_handler (NULL, destination, priv->start_time); break; case EPHY_DOWNLOAD_ACTION_NONE: LOG ("ephy_download_do_download_action: none"); ret = TRUE; break; case EPHY_DOWNLOAD_ACTION_DO_NOTHING: LOG ("ephy_download_do_download_action: nothing"); ret = TRUE; break; default: LOG ("ephy_download_do_download_action: unhandled action"); ret = FALSE; break; } g_object_unref (destination); return ret; }