Index: src/lib/elm_web2.c
===================================================================
--- src/lib/elm_web2.c	(revision 78326)
+++ src/lib/elm_web2.c	(working copy)
@@ -19,6 +19,20 @@ EVAS_SMART_SUBCLASS_NEW
   (ELM_WEB_SMART_NAME, _elm_web, Elm_Web_Smart_Class, Elm_Widget_Smart_Class,
   elm_widget_smart_class_get, _elm_web_smart_callbacks);
 
+static Eina_Bool
+_elm_web_smart_theme(Evas_Object *obj)
+{
+#ifdef HAVE_ELEMENTARY_WEB
+   if (!_elm_web_parent_sc->theme(obj)) return EINA_FALSE;
+
+   _elm_web_theme_set(obj);
+#endif
+
+   (void)obj;
+
+   return EINA_TRUE;
+}
+
 static void
 _view_smart_add(Evas_Object *obj)
 {
@@ -104,6 +118,8 @@ _elm_web_smart_add(Evas_Object *obj)
 
    _elm_web_parent_sc->base.add(obj);
 
+   _elm_web_smart_theme(obj);
+
    elm_widget_can_focus_set(obj, EINA_TRUE);
 }
 
@@ -118,6 +134,8 @@ _elm_web_smart_set_user(Elm_Web_Smart_Class *sc)
 {
    ELM_WIDGET_CLASS(sc)->base.add = _elm_web_smart_add;
    ELM_WIDGET_CLASS(sc)->base.del = _elm_web_smart_del;
+
+   ELM_WIDGET_CLASS(sc)->theme = _elm_web_smart_theme;
 }
 
 EAPI const Elm_Web_Smart_Class *
@@ -392,55 +410,16 @@ elm_web_text_matches_highlight_get(const Evas_Obje
    return EINA_FALSE;
 }
 
-EAPI double
-elm_web_load_progress_get(const Evas_Object *obj)
-{
-   ELM_WEB_CHECK(obj) - 1.0;
-
-   return EINA_FALSE;
-}
-
 EAPI Eina_Bool
-elm_web_stop(Evas_Object *obj)
-{
-   ELM_WEB_CHECK(obj) EINA_FALSE;
-
-   return EINA_FALSE;
-}
-
-EAPI Eina_Bool
-elm_web_reload(Evas_Object *obj)
-{
-   ELM_WEB_CHECK(obj) EINA_FALSE;
-
-   return EINA_FALSE;
-}
-
-EAPI Eina_Bool
 elm_web_reload_full(Evas_Object *obj)
 {
    ELM_WEB_CHECK(obj) EINA_FALSE;
+   ELM_WEB_DATA_GET(obj, sd);
 
-   return EINA_FALSE;
+   return ewk_view_reload_bypass_cache(ELM_WIDGET_DATA(sd)->resize_obj);
 }
 
 EAPI Eina_Bool
-elm_web_back(Evas_Object *obj)
-{
-   ELM_WEB_CHECK(obj) EINA_FALSE;
-
-   return EINA_FALSE;
-}
-
-EAPI Eina_Bool
-elm_web_forward(Evas_Object *obj)
-{
-   ELM_WEB_CHECK(obj) EINA_FALSE;
-
-   return EINA_FALSE;
-}
-
-EAPI Eina_Bool
 elm_web_navigate(Evas_Object *obj,
                  int steps)
 {
@@ -451,22 +430,6 @@ elm_web_navigate(Evas_Object *obj,
 }
 
 EAPI Eina_Bool
-elm_web_back_possible_get(Evas_Object *obj)
-{
-   ELM_WEB_CHECK(obj) EINA_FALSE;
-
-   return EINA_FALSE;
-}
-
-EAPI Eina_Bool
-elm_web_forward_possible_get(Evas_Object *obj)
-{
-   ELM_WEB_CHECK(obj) EINA_FALSE;
-
-   return EINA_FALSE;
-}
-
-EAPI Eina_Bool
 elm_web_navigate_possible_get(Evas_Object *obj,
                               int steps)
 {
Index: src/lib/elm_priv.h
===================================================================
--- src/lib/elm_priv.h	(revision 78326)
+++ src/lib/elm_priv.h	(working copy)
@@ -380,6 +380,10 @@ char                *_elm_util_text_to_mkup(const
 
 Eina_Bool            _elm_video_check(Evas_Object *video);
 
+#ifdef HAVE_ELEMENTARY_WEB
+void                 _elm_web_theme_set(Evas_Object *obj);
+#endif
+
 Eina_List           *_elm_config_color_list_get(const char *palette_name);
 void                 _elm_config_color_set(const char *palette_name,
                                            int r,
Index: src/lib/elm_web.c
===================================================================
--- src/lib/elm_web.c	(revision 78326)
+++ src/lib/elm_web.c	(working copy)
@@ -72,62 +72,13 @@ EVAS_SMART_SUBCLASS_NEW
   (ELM_WEB_SMART_NAME, _elm_web, Elm_Web_Smart_Class, Elm_Widget_Smart_Class,
   elm_widget_smart_class_get, _elm_web_smart_callbacks);
 
-#ifdef HAVE_ELEMENTARY_WEB
-static char *
-_webkit_theme_find(const Eina_List *list)
-{
-   const Eina_List *l;
-   const char *th;
-
-   EINA_LIST_FOREACH(list, l, th)
-     {
-        char *path = elm_theme_list_item_path_get(th, NULL);
-
-        if (!path) continue;
-
-        if (edje_file_group_exists(path, "webkit/base")) return path;
-
-        free(path);
-     }
-
-   return NULL;
-}
-
-#endif
-
 static Eina_Bool
 _elm_web_smart_theme(Evas_Object *obj)
 {
 #ifdef HAVE_ELEMENTARY_WEB
-   Elm_Theme *theme;
-   const Eina_List *themes;
-   char *view_theme = NULL;
-
-   ELM_WEB_DATA_GET(obj, sd);
-
    if (!_elm_web_parent_sc->theme(obj)) return EINA_FALSE;
 
-   theme = elm_object_theme_get(obj);
-   themes = elm_theme_overlay_list_get(theme);
-   view_theme = _webkit_theme_find(themes);
-   if (view_theme) goto set;
-
-   themes = elm_theme_list_get(theme);
-   view_theme = _webkit_theme_find(themes);
-   if (view_theme) goto set;
-
-   themes = elm_theme_extension_list_get(theme);
-   view_theme = _webkit_theme_find(themes);
-
-set:
-   if (view_theme)
-     {
-        ewk_view_theme_set(ELM_WIDGET_DATA(sd)->resize_obj, view_theme);
-        free(view_theme);
-     }
-   else
-     ewk_view_theme_set
-       (ELM_WIDGET_DATA(sd)->resize_obj, WEBKIT_DATADIR "/themes/default.edj");
+   _elm_web_theme_set(obj);
 #endif
 
    (void)obj;
@@ -1639,49 +1590,7 @@ elm_web_text_matches_highlight_get(const Evas_Obje
 #endif
 }
 
-EAPI double
-elm_web_load_progress_get(const Evas_Object *obj)
-{
-   ELM_WEB_CHECK(obj) - 1.0;
-
-#ifdef HAVE_ELEMENTARY_WEB
-   ELM_WEB_DATA_GET(obj, sd);
-
-   return ewk_view_load_progress_get(ELM_WIDGET_DATA(sd)->resize_obj);
-#else
-   return EINA_FALSE;
-#endif
-}
-
 EAPI Eina_Bool
-elm_web_stop(Evas_Object *obj)
-{
-   ELM_WEB_CHECK(obj) EINA_FALSE;
-
-#ifdef HAVE_ELEMENTARY_WEB
-   ELM_WEB_DATA_GET(obj, sd);
-
-   return ewk_view_stop(ELM_WIDGET_DATA(sd)->resize_obj);
-#else
-   return EINA_FALSE;
-#endif
-}
-
-EAPI Eina_Bool
-elm_web_reload(Evas_Object *obj)
-{
-   ELM_WEB_CHECK(obj) EINA_FALSE;
-
-#ifdef HAVE_ELEMENTARY_WEB
-   ELM_WEB_DATA_GET(obj, sd);
-
-   return ewk_view_reload(ELM_WIDGET_DATA(sd)->resize_obj);
-#else
-   return EINA_FALSE;
-#endif
-}
-
-EAPI Eina_Bool
 elm_web_reload_full(Evas_Object *obj)
 {
    ELM_WEB_CHECK(obj) EINA_FALSE;
@@ -1696,34 +1605,6 @@ elm_web_reload_full(Evas_Object *obj)
 }
 
 EAPI Eina_Bool
-elm_web_back(Evas_Object *obj)
-{
-   ELM_WEB_CHECK(obj) EINA_FALSE;
-
-#ifdef HAVE_ELEMENTARY_WEB
-   ELM_WEB_DATA_GET(obj, sd);
-
-   return ewk_view_back(ELM_WIDGET_DATA(sd)->resize_obj);
-#else
-   return EINA_FALSE;
-#endif
-}
-
-EAPI Eina_Bool
-elm_web_forward(Evas_Object *obj)
-{
-   ELM_WEB_CHECK(obj) EINA_FALSE;
-
-#ifdef HAVE_ELEMENTARY_WEB
-   ELM_WEB_DATA_GET(obj, sd);
-
-   return ewk_view_forward(ELM_WIDGET_DATA(sd)->resize_obj);
-#else
-   return EINA_FALSE;
-#endif
-}
-
-EAPI Eina_Bool
 elm_web_navigate(Evas_Object *obj,
                  int steps)
 {
@@ -1746,34 +1627,6 @@ elm_web_back_possible(Evas_Object *obj)
 }
 
 EAPI Eina_Bool
-elm_web_back_possible_get(Evas_Object *obj)
-{
-   ELM_WEB_CHECK(obj) EINA_FALSE;
-
-#ifdef HAVE_ELEMENTARY_WEB
-   ELM_WEB_DATA_GET(obj, sd);
-
-   return ewk_view_back_possible(ELM_WIDGET_DATA(sd)->resize_obj);
-#else
-   return EINA_FALSE;
-#endif
-}
-
-EAPI Eina_Bool
-elm_web_forward_possible_get(Evas_Object *obj)
-{
-   ELM_WEB_CHECK(obj) EINA_FALSE;
-
-#ifdef HAVE_ELEMENTARY_WEB
-   ELM_WEB_DATA_GET(obj, sd);
-
-   return ewk_view_forward_possible(ELM_WIDGET_DATA(sd)->resize_obj);
-#else
-   return EINA_FALSE;
-#endif
-}
-
-EAPI Eina_Bool
 elm_web_navigate_possible_get(Evas_Object *obj,
                               int steps)
 {
Index: src/lib/Makefile.am
===================================================================
--- src/lib/Makefile.am	(revision 78326)
+++ src/lib/Makefile.am	(working copy)
@@ -282,6 +282,7 @@ elm_util.c \
 elm_video.c \
 elm_web.c \
 elm_web2.c \
+elm_web_common.c \
 elm_widget.c \
 elm_win.c \
 els_box.c \
Index: src/lib/elm_web_common.c
===================================================================
--- src/lib/elm_web_common.c	(revision 0)
+++ src/lib/elm_web_common.c	(revision 0)
@@ -0,0 +1,161 @@
+#include <Elementary.h>
+#include "elm_priv.h"
+#include "elm_widget_web.h"
+
+#ifdef HAVE_ELEMENTARY_WEB
+#if defined(USE_WEBKIT2)
+#include <EWebKit2.h>
+#else
+#include <EWebKit.h>
+#endif
+
+static char *
+_webkit_theme_find(const Eina_List *list)
+{
+   const Eina_List *l;
+   const char *th;
+
+   EINA_LIST_FOREACH(list, l, th)
+     {
+        char *path = elm_theme_list_item_path_get(th, NULL);
+
+        if (!path) continue;
+
+        if (edje_file_group_exists(path, "webkit/base")) return path;
+
+        free(path);
+     }
+
+   return NULL;
+}
+
+void
+_elm_web_theme_set(Evas_Object *obj)
+{
+   Elm_Theme *theme;
+   const Eina_List *themes;
+   char *view_theme = NULL;
+
+   ELM_WEB_DATA_GET(obj, sd);
+
+   theme = elm_object_theme_get(obj);
+   themes = elm_theme_overlay_list_get(theme);
+   view_theme = _webkit_theme_find(themes);
+   if (view_theme) goto set;
+
+   themes = elm_theme_list_get(theme);
+   view_theme = _webkit_theme_find(themes);
+   if (view_theme) goto set;
+
+   themes = elm_theme_extension_list_get(theme);
+   view_theme = _webkit_theme_find(themes);
+
+set:
+   if (view_theme)
+     {
+        ewk_view_theme_set(ELM_WIDGET_DATA(sd)->resize_obj, view_theme);
+        free(view_theme);
+     }
+   else
+     ewk_view_theme_set
+       (ELM_WIDGET_DATA(sd)->resize_obj, WEBKIT_DATADIR "/themes/default.edj");
+}
+#endif
+
+EAPI double
+elm_web_load_progress_get(const Evas_Object *obj)
+{
+   ELM_WEB_CHECK(obj) - 1.0;
+
+#ifdef HAVE_ELEMENTARY_WEB
+   ELM_WEB_DATA_GET(obj, sd);
+
+   return ewk_view_load_progress_get(ELM_WIDGET_DATA(sd)->resize_obj);
+#else
+   return EINA_FALSE;
+#endif
+}
+
+EAPI Eina_Bool
+elm_web_stop(Evas_Object *obj)
+{
+   ELM_WEB_CHECK(obj) EINA_FALSE;
+
+#ifdef HAVE_ELEMENTARY_WEB
+   ELM_WEB_DATA_GET(obj, sd);
+
+   return ewk_view_stop(ELM_WIDGET_DATA(sd)->resize_obj);
+#else
+   return EINA_FALSE;
+#endif
+}
+
+EAPI Eina_Bool
+elm_web_reload(Evas_Object *obj)
+{
+   ELM_WEB_CHECK(obj) EINA_FALSE;
+
+#ifdef HAVE_ELEMENTARY_WEB
+   ELM_WEB_DATA_GET(obj, sd);
+
+   return ewk_view_reload(ELM_WIDGET_DATA(sd)->resize_obj);
+#else
+   return EINA_FALSE;
+#endif
+}
+
+EAPI Eina_Bool
+elm_web_back(Evas_Object *obj)
+{
+   ELM_WEB_CHECK(obj) EINA_FALSE;
+
+#ifdef HAVE_ELEMENTARY_WEB
+   ELM_WEB_DATA_GET(obj, sd);
+
+   return ewk_view_back(ELM_WIDGET_DATA(sd)->resize_obj);
+#else
+   return EINA_FALSE;
+#endif
+}
+
+EAPI Eina_Bool
+elm_web_forward(Evas_Object *obj)
+{
+   ELM_WEB_CHECK(obj) EINA_FALSE;
+
+#ifdef HAVE_ELEMENTARY_WEB
+   ELM_WEB_DATA_GET(obj, sd);
+
+   return ewk_view_forward(ELM_WIDGET_DATA(sd)->resize_obj);
+#else
+   return EINA_FALSE;
+#endif
+}
+
+EAPI Eina_Bool
+elm_web_back_possible_get(Evas_Object *obj)
+{
+   ELM_WEB_CHECK(obj) EINA_FALSE;
+
+#ifdef HAVE_ELEMENTARY_WEB
+   ELM_WEB_DATA_GET(obj, sd);
+
+   return ewk_view_back_possible(ELM_WIDGET_DATA(sd)->resize_obj);
+#else
+   return EINA_FALSE;
+#endif
+}
+
+EAPI Eina_Bool
+elm_web_forward_possible_get(Evas_Object *obj)
+{
+   ELM_WEB_CHECK(obj) EINA_FALSE;
+
+#ifdef HAVE_ELEMENTARY_WEB
+   ELM_WEB_DATA_GET(obj, sd);
+
+   return ewk_view_forward_possible(ELM_WIDGET_DATA(sd)->resize_obj);
+#else
+   return EINA_FALSE;
+#endif
+}
