From 047569339406f2be1637ae4cee5dd0c9a9c2328f Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Wed, 22 Jan 2014 23:19:57 +0000 Subject: create table for fetcher operations and move all operations into it --- desktop/gui_factory.c | 59 +++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 45 insertions(+), 14 deletions(-) (limited to 'desktop/gui_factory.c') diff --git a/desktop/gui_factory.c b/desktop/gui_factory.c index 104f4906d..06b5383ba 100644 --- a/desktop/gui_factory.c +++ b/desktop/gui_factory.c @@ -289,18 +289,53 @@ static nserror verify_clipboard_register(struct gui_clipboard_table *gct) return NSERROR_OK; } +static nsurl *gui_default_get_resource_url(const char *path) +{ + return NULL; +} -static void gui_default_quit(void) +static char *gui_default_mimetype(const char *path) { + return strdup(guit->fetch->filetype(path)); } -static void gui_default_set_search_ico(hlcache_handle *ico) +/** verify fetch table is valid */ +static nserror verify_fetch_register(struct gui_fetch_table *gft) { + /* check table is present */ + if (gft == NULL) { + return NSERROR_BAD_PARAMETER; + } + + /* check the mandantory fields are set */ + if (gft->filename_from_path == NULL) { + return NSERROR_BAD_PARAMETER; + } + if (gft->path_add_part == NULL) { + return NSERROR_BAD_PARAMETER; + } + if (gft->filetype == NULL) { + return NSERROR_BAD_PARAMETER; + } + + + /* fill in the optional entries with defaults */ + if (gft->get_resource_url == NULL) { + gft->get_resource_url = gui_default_get_resource_url; + } + if (gft->mimetype == NULL) { + gft->mimetype = gui_default_mimetype; + } + + return NSERROR_OK; } -static nsurl *gui_default_get_resource_url(const char *path) +static void gui_default_quit(void) +{ +} + +static void gui_default_set_search_ico(hlcache_handle *ico) { - return NULL; } static void gui_default_launch_url(const char *url) @@ -340,13 +375,6 @@ static nserror verify_browser_register(struct gui_browser_table *gbt) if (gbt->poll == NULL) { return NSERROR_BAD_PARAMETER; } - if (gbt->filename_from_path == NULL) { - return NSERROR_BAD_PARAMETER; - } - if (gbt->path_add_part == NULL) { - return NSERROR_BAD_PARAMETER; - } - /* fill in the optional entries with defaults */ if (gbt->quit == NULL) { @@ -355,9 +383,6 @@ static nserror verify_browser_register(struct gui_browser_table *gbt) if (gbt->set_search_ico == NULL) { gbt->set_search_ico = gui_default_set_search_ico; } - if (gbt->get_resource_url == NULL) { - gbt->get_resource_url = gui_default_get_resource_url; - } if (gbt->launch_url == NULL) { gbt->launch_url = gui_default_launch_url; } @@ -414,6 +439,12 @@ nserror gui_factory_register(struct gui_table *gt) return err; } + /* fetch table */ + err = verify_fetch_register(gt->fetch); + if (err != NSERROR_OK) { + return err; + } + /* download table */ if (gt->download == NULL) { /* set default download table */ -- cgit v1.2.3