[browser-ui-beat]add network failure code
authorEunmi Lee <eunmi15.lee@samsung.com>
Thu, 9 Sep 2010 10:20:14 +0000 (19:20 +0900)
committerEunmi Lee <eunmi15.lee@samsung.com>
Thu, 9 Sep 2010 10:20:14 +0000 (19:20 +0900)
src/lib/els_webview.c

index 4a3a60e..c232b44 100644 (file)
 #define ZOOM_IN_BOUNCING 1.25f
 #define BOUNCING_DISTANCE 400
 
-//                     "<!--<body bgcolor=#4c4c4c text=white text-align=left>-->"
+#define NETWORK_FAIL_PAGE_HEADER "<html>" \
+                       "<head><title>Network Failure</title></head>" \
+                       "<body bgcolor=white text=black text-align=left>" \
+                       "<center>" \
+                       "<table>" \
+                       "<tr><td><h1>Network Failure<br/></td></tr>" \
+                       "<meta name='viewport' content='width=device-width, initial-scale=1.0, user-scalable=no'>" \
+                       "<tr><td>" \
+                       "<script type='text/javascript'>"\
+                       "var s = "
+
+#define NETWORK_FAIL_PAGE_FOOTER ";" \
+                       "var failingUrl = s.substring(s.indexOf(\"?\"\)+1, s.lastIndexOf(\"?\"\));" \
+                       "document.write(\"<p><tr><td><h2>URL: \" + unescape(failingUrl) + \"</h2></td></tr>\");" \
+                       "var errorDesc = s.substring(s.lastIndexOf(\"?\")+1, s.length);" \
+                       "document.write(\"<tr><td><h2>Error: \" + unescape(errorDesc) + \"</h2></td></tr>\");" \
+                       "</script>" \
+                       "</td></tr>" \
+                       "</table>" \
+                       "</h1>" \
+                       "</body>" \
+                       "</html>"
+
 #define NOT_FOUND_PAGE_HEADER "<html>" \
                        "<head><title>Page Not Found</title></head>" \
                        "<body bgcolor=white text=black text-align=left>" \
@@ -1021,7 +1043,30 @@ _smart_load_error(void* data, Evas_Object* webview, void* arg)
    // if error, call loadNotFoundPage
    Ewk_Frame_Load_Error *error = (Ewk_Frame_Load_Error *) arg;
    int errorCode = (error)? error->code: 0;
-   if ( errorCode != 0 && errorCode != -999 )
+   DBG("<< load error [code: %d] [domain: %s] [description: %s] [failing_url: %s] >>\n",
+        error->code, error->domain, error->description, error->failing_url);
+   if ((errorCode <= -200 && errorCode >= -172))
+     {
+       if (!sd->ewk_view_stop)
+         sd->ewk_view_stop = (Eina_Bool (*)(Evas_Object *))dlsym(ewk_handle, "ewk_view_stop");
+       sd->ewk_view_stop(webview);
+
+       if (!sd->ewk_view_frame_main_get)
+         sd->ewk_view_frame_main_get = (Evas_Object *(*)(const Evas_Object *))dlsym(ewk_handle, "ewk_view_frame_main_get");
+
+       if (!sd->ewk_frame_contents_set)
+         sd->ewk_frame_contents_set = (Eina_Bool (*)(Evas_Object *, const char *, size_t, const char *, const char *, const char *))dlsym(ewk_handle, "ewk_frame_contents_set");
+
+       snprintf(szBuffer, 2048, NETWORK_FAIL_PAGE_HEADER "\"?%s?%s\"" NETWORK_FAIL_PAGE_FOOTER, error->failing_url, error->description);
+       sd->ewk_frame_contents_set(error->frame, szBuffer, 0, NULL, NULL, error->failing_url);
+
+       Evas_Object *popup = elm_popup_add(obj);
+       evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       elm_popup_desc_set(popup, error->description);
+       elm_popup_buttons_add(popup, 1, "OK", ELM_POPUP_RESPONSE_OK, NULL);
+       evas_object_show(popup);
+     }
+   else if (errorCode != 0 && errorCode != -999)
      { // 0 ok, -999 request cancelled
        //char szStrBuffer[1024];
        //snprintf(szStrBuffer, 1024, "page not found:, [code: %d] [domain: %s] [description: %s] [failing_url: %s] \n",