1563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark/*
2563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Copyright (C) 2008 Collabora Ltd.
3563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Copyright (C) 2009 Gustavo Noronha Silva <gns@gnome.org>
4563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *
5563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * This library is free software; you can redistribute it and/or
6563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * modify it under the terms of the GNU Library General Public
7563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * License as published by the Free Software Foundation; either
8563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * version 2 of the License, or (at your option) any later version.
9563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *
10563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * This library is distributed in the hope that it will be useful,
11563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * but WITHOUT ANY WARRANTY; without even the implied warranty of
12563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Library General Public License for more details.
14563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark *
15563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * You should have received a copy of the GNU Library General Public License
16563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * along with this library; see the file COPYING.LIB.  If not, write to
17563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Boston, MA 02110-1301, USA.
19563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark */
20563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
21231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#ifndef webkitdownload_h
22231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block#define webkitdownload_h
23563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
24563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <webkit/webkitdefines.h>
25563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
26563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#include <glib-object.h>
27563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
28563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkG_BEGIN_DECLS
29563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
30563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#define WEBKIT_TYPE_DOWNLOAD            (webkit_download_get_type())
31563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#define WEBKIT_DOWNLOAD(obj)            (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_DOWNLOAD, WebKitDownload))
32563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#define WEBKIT_DOWNLOAD_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST((klass),  WEBKIT_TYPE_DOWNLOAD, WebKitDownloadClass))
33563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#define WEBKIT_IS_DOWNLOAD(obj)         (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_DOWNLOAD))
34563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#define WEBKIT_IS_DOWNLOAD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),  WEBKIT_TYPE_DOWNLOAD))
35563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#define WEBKIT_DOWNLOAD_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS((obj),  WEBKIT_TYPE_DOWNLOAD, WebKitDownloadClass))
36563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
37563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarktypedef enum {
38563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    WEBKIT_DOWNLOAD_STATUS_ERROR = -1,
39563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    WEBKIT_DOWNLOAD_STATUS_CREATED = 0,
40563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    WEBKIT_DOWNLOAD_STATUS_STARTED,
41563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    WEBKIT_DOWNLOAD_STATUS_CANCELLED,
42563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    WEBKIT_DOWNLOAD_STATUS_FINISHED
43563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} WebKitDownloadStatus;
44563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
45563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarktypedef enum {
46563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    WEBKIT_DOWNLOAD_ERROR_CANCELLED_BY_USER,
47563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    WEBKIT_DOWNLOAD_ERROR_DESTINATION,
48563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    WEBKIT_DOWNLOAD_ERROR_NETWORK
49563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} WebKitDownloadError;
50563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
51563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarktypedef struct _WebKitDownloadPrivate WebKitDownloadPrivate;
52563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
53563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkstruct _WebKitDownload {
54563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    GObject parent_instance;
55563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
56563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    WebKitDownloadPrivate *priv;
57563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark};
58563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
59563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkstruct _WebKitDownloadClass {
60563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    GObjectClass parent_class;
61563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
62563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    /* Padding for future expansion */
63563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void (*_webkit_reserved0) (void);
64563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void (*_webkit_reserved1) (void);
65563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void (*_webkit_reserved2) (void);
66563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark    void (*_webkit_reserved3) (void);
67563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark};
68563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
69563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkWEBKIT_API GType
70563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkwebkit_download_get_type                    (void);
71563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
72563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkWEBKIT_API WebKitDownload*
73563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkwebkit_download_new                         (WebKitNetworkRequest *request);
74563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
75563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkWEBKIT_API void
76563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkwebkit_download_start                       (WebKitDownload       *download);
77563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
78563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkWEBKIT_API void
79563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkwebkit_download_cancel                      (WebKitDownload       *download);
80563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
81563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkWEBKIT_API const gchar*
82563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkwebkit_download_get_uri                     (WebKitDownload       *download);
83563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
84563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkWEBKIT_API WebKitNetworkRequest*
85563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkwebkit_download_get_network_request         (WebKitDownload       *download);
86563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
87cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve BlockWEBKIT_API WebKitNetworkResponse*
88cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Blockwebkit_download_get_network_response         (WebKitDownload       *download);
89cac0f67c402d107cdb10971b95719e2ff9c7c76bSteve Block
90563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkWEBKIT_API const gchar*
91563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkwebkit_download_get_suggested_filename      (WebKitDownload       *download);
92563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
93563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkWEBKIT_API const gchar*
94563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkwebkit_download_get_destination_uri         (WebKitDownload       *download);
95563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
96563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkWEBKIT_API void
97563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkwebkit_download_set_destination_uri         (WebKitDownload       *download,
98563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark                                             const gchar          *destination_uri);
99563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
100563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkWEBKIT_API gdouble
101563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkwebkit_download_get_progress                (WebKitDownload       *download);
102563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
103563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkWEBKIT_API gdouble
104563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkwebkit_download_get_elapsed_time            (WebKitDownload       *download);
105563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
106563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkWEBKIT_API guint64
107563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkwebkit_download_get_total_size              (WebKitDownload       *download);
108563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
109563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkWEBKIT_API guint64
110563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkwebkit_download_get_current_size            (WebKitDownload       *download);
111563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
112563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkWEBKIT_API WebKitDownloadStatus
113563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkwebkit_download_get_status                  (WebKitDownload       *download);
114563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
115563af33bc48281d19dce701398dbb88cb54fd7ecCary ClarkG_END_DECLS
116563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark
117563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark#endif
118