summaryrefslogtreecommitdiff
path: root/desktop/gui_factory.c
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/gui_factory.c')
-rw-r--r--desktop/gui_factory.c59
1 files changed, 45 insertions, 14 deletions
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 */