diff options
Diffstat (limited to 'desktop/searchweb.c')
-rw-r--r-- | desktop/searchweb.c | 58 |
1 files changed, 25 insertions, 33 deletions
diff --git a/desktop/searchweb.c b/desktop/searchweb.c index bc0f71ad4..724edc9dd 100644 --- a/desktop/searchweb.c +++ b/desktop/searchweb.c @@ -24,8 +24,7 @@ #include <ctype.h> #include <string.h> #include "content/content.h" -#include "content/fetchcache.h" -#include "content/fetch.h" +#include "content/hlcache.h" #include "desktop/browser.h" #include "desktop/gui.h" #include "desktop/options.h" @@ -43,10 +42,13 @@ static struct search_provider { char *ico; /** < location of domain's favicon */ } current_search_provider; -static struct content *search_ico = NULL; +static hlcache_handle *search_ico = NULL; char *search_engines_file_location; char *search_default_ico_location; +static nserror search_web_ico_callback(hlcache_handle *ico, + const hlcache_event *event, void *pw); + /** * creates a new browser window according to the search term * \param searchterm such as "my search term" @@ -205,7 +207,8 @@ char *search_web_get_url(const char *encsearchterm) void search_web_retrieve_ico(bool localdefault) { char *url; - struct content *icocontent; + nserror error; + if (localdefault) { if (search_default_ico_location == NULL) return; @@ -221,26 +224,17 @@ void search_web_retrieve_ico(bool localdefault) url = search_web_ico_name(); } - icocontent = NULL; if (url == NULL) { warn_user(messages_get("NoMemory"), 0); return; } - icocontent = fetchcache(url, search_web_ico_callback, - 0, 0, 20, 20, true, 0, - 0, false, false); - free(url); - if (icocontent == NULL) - return; - - fetchcache_go(icocontent, 0, search_web_ico_callback, - 0, 0, 20, 20, - 0, 0, false, 0); - if (icocontent == NULL) - LOG(("web search ico loading delayed")); - else - search_ico = icocontent; + error = hlcache_handle_retrieve(url, 0, NULL, NULL, 20, 20, + search_web_ico_callback, NULL, NULL, &search_ico); + if (error != NSERROR_OK) + search_ico = NULL; + + free(url); } /** @@ -249,7 +243,7 @@ void search_web_retrieve_ico(bool localdefault) * responsibility */ -struct content *search_web_ico(void) +hlcache_handle *search_web_ico(void) { return search_ico; } @@ -259,20 +253,18 @@ struct content *search_web_ico(void) * else retry default from local file system */ -void search_web_ico_callback(content_msg msg, struct content *ico, - intptr_t p1, intptr_t p2, union content_msg_data data) +nserror search_web_ico_callback(hlcache_handle *ico, + const hlcache_event *event, void *pw) { - - switch (msg) { + switch (event->type) { case CONTENT_MSG_LOADING: case CONTENT_MSG_READY: break; case CONTENT_MSG_DONE: - LOG(("got favicon '%s'", ico->url)); + LOG(("got favicon '%s'", content_get_url(ico))); #ifdef WITH_BMP - if (ico->type == CONTENT_ICO) { - search_ico = ico; /* cache */ + if (content_get_type(ico) == CONTENT_ICO) { gui_window_set_search_ico(search_ico); } else #endif @@ -281,20 +273,20 @@ void search_web_ico_callback(content_msg msg, struct content *ico, } break; - case CONTENT_MSG_LAUNCH: case CONTENT_MSG_ERROR: - LOG(("favicon %s error: %s", ico->url, data.error)); - ico = 0; + LOG(("favicon %s error: %s", + content_get_url(ico), event->data.error)); + hlcache_handle_release(search_ico); + search_ico = NULL; search_web_retrieve_ico(true); break; case CONTENT_MSG_STATUS: - case CONTENT_MSG_NEWPTR: - case CONTENT_MSG_AUTH: - case CONTENT_MSG_SSL: break; default: assert(0); } + + return NSERROR_OK; } |