[els_webview]flash file support
authorEunmi Lee <eunmi15.lee@samsung.com>
Tue, 7 Sep 2010 08:00:23 +0000 (17:00 +0900)
committerEunmi Lee <eunmi15.lee@samsung.com>
Tue, 7 Sep 2010 08:00:23 +0000 (17:00 +0900)
src/lib/els_webview.c

index 26105ea..e182142 100644 (file)
                        "</body>" \
                        "</html>"
 
+// for FLASH FILE SUPPORT
+#define LOCAL_FLASH_SUFFIX ".swf"
+#define FLASH_MIME_TYPE "application/x-shockwave-flash"
+#define FILE_PROTOCOL "file://"
+#define HTML_EMBED_1    "<html>" \
+                       "<head>" \
+                       "<script type='text/javascript'>" \
+                       "var s = "
+#define HTML_EMBED_2    ";" \
+                       "var url = s.substring(s.indexOf(\"?\") + 1, s.lastIndexOf(\"?\"));" \
+                       "document.write(\"<title>\" + unescape(url) + \"</title>\");" \
+                       "</script>" \
+                       "</head>" \
+                       "<body>" \
+                       "<object width=\"100%\" height=\"100%\">"
+#define HTML_EMBED_3    "<script type='text/javascript'>" \
+                       "var s = "
+#define HTML_EMBED_4    ";" \
+                       "var url = s.substring(s.indexOf(\"?\") + 1, s.lastIndexOf(\"?\"));" \
+                       "document.write(unescape(url));" \
+                       "var type = s.substring(s.lastIndexOf(\"?\") + 1, s.length);" \
+                       "document.write(unescape(type));" \
+                       "document.write(\"<embed width=\\\"100%\\\" height=\\\"100%\\\" src=\\\"\" + unescape(url) + \"\\\" type=\\\"\" + unescape(type) + \"\\\" />\");" \
+                       "</script>" \
+                       "</object>" \
+                       "</body>" \
+                       "</html>"
+
 #define NEED_TO_REMOVE
 //#define DBG printf
 //#define ERR printf
@@ -526,6 +554,19 @@ _elm_smart_webview_uri_set(Evas_Object* obj, const char* uri)
             full_uri[7] = '\0';
             len = (len >= (MAX_URI - 7)) ? (MAX_URI - 8) : len;
             strncat(full_uri, uri, len);
+
+       } else if (strstr(uri, FILE_PROTOCOL) && !strcmp(LOCAL_FLASH_SUFFIX, &uri[len - strlen(LOCAL_FLASH_SUFFIX)])) {
+            // support for local swf files
+            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");
+            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");
+            char szBuffer[2048] = "";
+            snprintf(szBuffer, 2048, "%s\"?%s?%s\"%s%s\"?%s?%s\"%s",
+                  HTML_EMBED_1, uri, FLASH_MIME_TYPE, HTML_EMBED_2, HTML_EMBED_3, uri, FLASH_MIME_TYPE, HTML_EMBED_4);
+            sd->ewk_frame_contents_set(sd->ewk_view_frame_main_get(obj), szBuffer, 0, NULL, NULL, uri);
+            return;
+
        } else {
             len = (len >= MAX_URI) ? (MAX_URI - 1) : len;
             strncpy(full_uri, uri, len);
@@ -999,7 +1040,7 @@ _smart_load_error(void* data, Evas_Object* webview, void* arg)
 
        snprintf(szBuffer, 2048, NOT_FOUND_PAGE_HEADER "\"?%s?%s\"" NOT_FOUND_PAGE_FOOTER, error->failing_url, error->description);
        //sd->ewk_frame_contents_set(sd->ewk_view_frame_main_get(webview), szStrBuffer, 0, NULL, NULL, NULL);
-       sd->ewk_frame_contents_set(error->frame, szBuffer, 0, NULL, NULL, NULL);
+       sd->ewk_frame_contents_set(error->frame, szBuffer, 0, NULL, NULL, error->failing_url);
        return;
      }
 }