From f18bbd48c7265ef68e8559f20a74bd1b57a4d1cb Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Wed, 17 Oct 2012 21:52:43 +0100 Subject: Improve error handling in html content --- desktop/browser.c | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) (limited to 'desktop/browser.c') diff --git a/desktop/browser.c b/desktop/browser.c index d3237f5ef..9fa359194 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -1187,6 +1187,121 @@ static void browser_window_update_favicon(hlcache_handle *c, nsurl_unref(nsurl); } +/** window callback errorcode handling */ +void +browser_window_callback_errorcode(hlcache_handle *c, + struct browser_window *bw, + nserror code) +{ + const char* message; + + switch (code) { + case NSERROR_OK: + /**< No error */ + message = messages_get("OK"); + break; + + case NSERROR_UNKNOWN: + /**< Unknown error */ + message = messages_get("Unknown"); + break; + + case NSERROR_NOMEM: + /**< Memory exhaustion */ + message = messages_get("NoMemory"); + break; + + case NSERROR_NO_FETCH_HANDLER: + /**< No fetch handler for URL scheme */ + message = messages_get("NoHandler"); + break; + + case NSERROR_NOT_FOUND: + /**< Requested item not found */ + message = messages_get("NotFound"); + break; + + case NSERROR_SAVE_FAILED: + /**< Failed to save data */ + message = messages_get("SaveFailed"); + break; + + case NSERROR_CLONE_FAILED: + /**< Failed to clone handle */ + message = messages_get("CloneFailed"); + break; + + case NSERROR_INIT_FAILED: + /**< Initialisation failed */ + message = messages_get("InitFailed"); + break; + + case NSERROR_MNG_ERROR: + /**< An MNG error occurred */ + message = messages_get("MNGError"); + break; + + case NSERROR_BAD_ENCODING: + /**< The character set is unknown */ + message = messages_get("BadEncoding"); + break; + + case NSERROR_NEED_DATA: + /**< More data needed */ + message = messages_get("NeedData"); + break; + + case NSERROR_BAD_PARAMETER: + /**< Bad Parameter */ + message = messages_get("BadParameter"); + break; + + case NSERROR_INVALID: + /**< Invalid data */ + message = messages_get("Invalid"); + break; + + case NSERROR_BOX_CONVERT: + /**< Box conversion failed */ + message = messages_get("BoxConvert"); + break; + + case NSERROR_STOPPED: + /**< Content conversion stopped */ + message = messages_get("Stopped"); + break; + + case NSERROR_DOM: + /**< DOM call returned error */ + message = messages_get("ParsingFail"); + break; + + case NSERROR_BAD_URL: + /**< Bad URL */ + message = messages_get("BadURL"); + break; + + } + + browser_window_set_status(bw, message); + + /* Only warn the user about errors in top-level windows */ + if (bw->browser_window_type == BROWSER_WINDOW_NORMAL) { + warn_user(message, 0); + } + + if (c == bw->loading_content) { + bw->loading_content = NULL; + } else if (c == bw->current_content) { + bw->current_content = NULL; + browser_window_remove_caret(bw); + } + + hlcache_handle_release(c); + + browser_window_stop_throbber(bw); +} + /** * Callback for fetchcache() for browser window fetches. */ @@ -1320,6 +1435,10 @@ nserror browser_window_callback(hlcache_handle *c, browser_window_refresh, bw); break; + case CONTENT_MSG_ERRORCODE: + browser_window_callback_errorcode(c, bw, event->data.errorcode); + break; + case CONTENT_MSG_ERROR: browser_window_set_status(bw, event->data.error); -- cgit v1.2.3