Index: src/lib/elm_web.c
===================================================================
--- src/lib/elm_web.c	(revision 78799)
+++ 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;
@@ -1084,33 +1035,6 @@ _bring_in_anim_cb(void *data,
 
 #endif
 
-#ifdef HAVE_ELEMENTARY_WEB
-static int _elm_need_web = 0;
-#endif
-
-void
-_elm_unneed_web(void)
-{
-#ifdef HAVE_ELEMENTARY_WEB
-   if (--_elm_need_web) return;
-
-   _elm_need_web = 0;
-   ewk_shutdown();
-#endif
-}
-
-EAPI Eina_Bool
-elm_need_web(void)
-{
-#ifdef HAVE_ELEMENTARY_WEB
-   if (_elm_need_web++) return EINA_TRUE;
-   ewk_init();
-   return EINA_TRUE;
-#else
-   return EINA_FALSE;
-#endif
-}
-
 static void
 _elm_web_smart_add(Evas_Object *obj)
 {
@@ -1639,49 +1563,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 +1578,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 +1600,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 78799)
+++ 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_web2.c
===================================================================
--- src/lib/elm_web2.c	(revision 78799)
+++ 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)
 {
@@ -85,16 +99,6 @@ _view_add(Evas_Object *parent)
    return view;
 }
 
-static int _elm_need_web = 0;
-
-EAPI Eina_Bool
-elm_need_web(void)
-{
-   if (_elm_need_web++) return EINA_TRUE;
-   ewk_init();
-   return EINA_TRUE;
-}
-
 static void
 _elm_web_smart_add(Evas_Object *obj)
 {
@@ -104,6 +108,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 +124,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 +400,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 +420,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 78799)
+++ 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,
