2010-04-06 01:35:38 +04:00
|
|
|
/*
|
|
|
|
* Copyright 2010 John-Mark Bell <jmb@netsurf-browser.org>
|
|
|
|
*
|
|
|
|
* This file is part of NetSurf, http://www.netsurf-browser.org/
|
|
|
|
*
|
|
|
|
* NetSurf is free software; you can redistribute it and/or modify
|
|
|
|
* it under the terms of the GNU General Public License as published by
|
|
|
|
* the Free Software Foundation; version 2 of the License.
|
|
|
|
*
|
|
|
|
* NetSurf is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
2012-07-24 19:19:49 +04:00
|
|
|
* \file desktop/download.h
|
|
|
|
* \brief Core download context (interface)
|
2010-04-06 01:35:38 +04:00
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef NETSURF_DESKTOP_DOWNLOAD_H_
|
|
|
|
#define NETSURF_DESKTOP_DOWNLOAD_H_
|
|
|
|
|
|
|
|
#include "utils/errors.h"
|
|
|
|
|
|
|
|
struct gui_window;
|
|
|
|
struct llcache_handle;
|
2014-05-08 21:03:27 +04:00
|
|
|
struct nsurl;
|
2010-04-06 01:35:38 +04:00
|
|
|
|
|
|
|
/** Type of a download context */
|
|
|
|
typedef struct download_context download_context;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Create a download context
|
|
|
|
*
|
|
|
|
* \param llcache Low-level cache handle for download
|
|
|
|
* \param parent Parent window, for UI
|
|
|
|
* \return NSERROR_OK on success, appropriate error otherwise
|
|
|
|
*
|
|
|
|
* This must only be called by the core browser window fetch infrastructure.
|
|
|
|
* Ownership of the download context object created is passed to the frontend.
|
|
|
|
*/
|
|
|
|
nserror download_context_create(struct llcache_handle *llcache,
|
|
|
|
struct gui_window *parent);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Destroy a download context
|
|
|
|
*
|
|
|
|
* \param ctx Context to destroy
|
|
|
|
*
|
|
|
|
* Called by the frontend when it has finished with a download context
|
|
|
|
*/
|
|
|
|
void download_context_destroy(download_context *ctx);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Abort a download fetch
|
|
|
|
*
|
|
|
|
* \param ctx Context to abort
|
|
|
|
*
|
|
|
|
* Called by the frontend to abort a download.
|
|
|
|
* The context must be destroyed independently.
|
|
|
|
*/
|
|
|
|
void download_context_abort(download_context *ctx);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Retrieve the URL for a download
|
|
|
|
*
|
2014-05-08 20:54:44 +04:00
|
|
|
* The caller is borrowing the url reference from the underlying low
|
|
|
|
* level cache object. If it is used beyond the immediate scope of the
|
|
|
|
* caller an additional reference should be made.
|
|
|
|
*
|
|
|
|
* \param ctx Context to retrieve URL from
|
|
|
|
* \return URL object
|
2010-04-06 01:35:38 +04:00
|
|
|
*/
|
2014-05-08 21:03:27 +04:00
|
|
|
struct nsurl *download_context_get_url(const download_context *ctx);
|
2010-04-06 01:35:38 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Retrieve the MIME type for a download
|
|
|
|
*
|
|
|
|
* \param ctx Context to retrieve MIME type from
|
|
|
|
* \return MIME type string
|
|
|
|
*/
|
|
|
|
const char *download_context_get_mime_type(const download_context *ctx);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Retrieve total byte length of download
|
|
|
|
*
|
|
|
|
* \param ctx Context to retrieve byte length from
|
|
|
|
* \return Total length, in bytes, or 0 if unknown
|
|
|
|
*/
|
|
|
|
unsigned long download_context_get_total_length(const download_context *ctx);
|
|
|
|
|
2011-02-23 03:54:29 +03:00
|
|
|
/**
|
|
|
|
* Retrieve the filename for a download
|
|
|
|
*
|
|
|
|
* \param ctx Context to retrieve filename from
|
|
|
|
* \return Filename string
|
|
|
|
*/
|
|
|
|
const char *download_context_get_filename(const download_context *ctx);
|
|
|
|
|
2010-04-06 01:35:38 +04:00
|
|
|
#endif
|