cedric pushed a commit to branch master. http://git.enlightenment.org/core/elementary.git/commit/?id=dcc8a491133ec51f50ebb27d7182ec109b47e1e5
commit dcc8a491133ec51f50ebb27d7182ec109b47e1e5 Author: Cedric BAIL <[email protected]> Date: Wed Mar 9 15:57:09 2016 -0800 web: split web into a module. There is currently no configuration to switch backend. Another patch will introduce it. --- configure.ac | 149 +- m4/elm_check_option.m4 | 58 - src/lib/Elementary.h.in | 1 - src/lib/elm_config.c | 1 + src/lib/elm_main.c | 4 + src/lib/elm_priv.h | 3 + src/lib/elm_web.eo | 51 +- src/lib/elm_web2.c | 1537 ++------------------ src/lib/elm_widget_web.h | 86 -- src/modules/Makefile.am | 3 +- src/modules/{ => web}/Makefile.am | 7 +- src/modules/web/none/Makefile.am | 40 + src/modules/web/none/elm_web_none.c | 341 +++++ src/modules/web/none/elm_web_none.eo | 54 + src/modules/web/none/elm_web_none.eo.c | 212 +++ src/modules/web/none/elm_web_none.eo.h | 21 + src/modules/web/webkit2/Makefile.am | 42 + .../web/webkit2/elm_web_webkit2.c} | 827 ++++------- src/modules/web/webkit2/elm_web_webkit2.eo | 53 + src/modules/web/webkit2/elm_web_webkit2.eo.c | 208 +++ src/modules/web/webkit2/elm_web_webkit2.eo.h | 21 + 21 files changed, 1522 insertions(+), 2197 deletions(-) diff --git a/configure.ac b/configure.ac index 741217a..038ebab 100644 --- a/configure.ac +++ b/configure.ac @@ -25,6 +25,58 @@ m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) LT_INIT([win32-dll disable-static pic-only]) EFL_INIT +### Checks for programs + +# compilers +AC_PROG_CC +AC_PROG_CC_STDC +AC_PROG_CXX + +EFL_CXX_COMPILE_STDCXX_11([ext]) + +# pkg-config +PKG_PROG_PKG_CONFIG + +# gettext +m4_ifdef([AM_GNU_GETTEXT_VERSION], [ +AM_GNU_GETTEXT_VERSION([0.18]) +]) + +m4_ifdef([AM_GNU_GETTEXT], [ +AM_GNU_GETTEXT([external]) +po_makefile_in=po/Makefile.in +have_po="yes" +],[ +have_po="no" +]) +AC_SUBST([LTLIBINTL]) + +if test "x${POSUB}" = "x" ; then + have_po="no" +fi + +AM_CONDITIONAL([HAVE_PO], [test "x${have_po}" = "xyes"]) + +# doxygen +EFL_CHECK_DOXYGEN([build_doc="yes"], [build_doc="no"]) + +# EFL binaries +EFL_WITH_BIN([eet], [eet-eet], [eet]) +EFL_WITH_BIN([edje], [edje-cc], [edje_cc]) +EFL_WITH_BIN([elementary], [elementary-codegen], [elementary_codegen]) +EFL_WITH_BIN([elementary], [elm-prefs-cc], [elm_prefs_cc]) +EFL_WITH_BIN([eolian], [eolian-gen], [eolian_gen]) +EFL_WITH_BIN([eolian-cxx], [eolian-cxx], [eolian_cxx]) +EFL_WITH_BIN([eldbus], [eldbus_codegen], [eldbus-codegen]) +# Force the helper to try external eolian generators +AM_CONDITIONAL([HAVE_EOLIAN_GEN], [true]) +AM_CONDITIONAL([HAVE_EOLIAN_CXX], [true]) +AM_CONDITIONAL([HAVE_EOLIAN_JS], [true]) + +EFL_ENABLE_BIN([elementary-test]) +EFL_ENABLE_BIN([elementary-codegen]) +EFL_ENABLE_BIN([elm-prefs-cc]) +EFL_ENABLE_BIN([elementary-config]) ### Additional options to configure @@ -113,6 +165,43 @@ AC_ARG_ENABLE([quick-launch], [want_quicklaunch=$enableval], [want_quicklaunch="auto"]) +# Webkit support +AC_ARG_WITH([elementary-web-backend], + [AS_HELP_STRING([--with-elementary-web-backend=@<:@ewebkit2/detect/none@:>@], + [Select the WebKit backend for Elementary to support web @<:@default=detect@:>@])], + [elementary_web_backend=${withval}], + [elementary_web_backend="detect"]) + +elementary_webkit2="no" +elementary_web="none" + +case "${elementary_web_backend}" in + ewebkit2|detect) +# For now only ewebkit2 exist so detect is similar to it + PKG_CHECK_MODULES([EWEBKIT2], [ewebkit2], + [elementary_webkit2="yes"], + [elementary_webkit2="no"]) + ;; + none) + ;; + *) + AC_MSG_ERROR([Invalid web backend: must be ewebkit2, detect or none instead of '${elementary_web_backend}']) + ;; +esac + +if test "x${elementary_webkit2}" = "xyes"; then + AC_DEFINE([HAVE_ELEMENTARY_WEB], [1], [Web support for Elementary]) + webkit_datadir=$(${PKG_CONFIG} ewebkit2 --variable=datadir) + AC_DEFINE_UNQUOTED([WEBKIT_DATADIR], + ["${webkit_datadir}"], + ["WebKit's data dir"]) + ELM_WEB2_DEF="#define" + elementary_web="ewebkit2" +fi +AM_CONDITIONAL([HAVE_EWEBKIT2], [test "x${elementary_web}" = "xewebkit2"]) + +AC_MSG_CHECKING([whether to build web option]) +AC_MSG_RESULT([${elementary_web}]) ### Default options with respect to host and default values @@ -156,60 +245,6 @@ AM_CONDITIONAL([HAVE_FREEBSD], [test "x${have_freebsd}" = "xyes"]) AC_SUBST([ELM_UNIX_DEF]) AC_SUBST([ELM_WIN32_DEF]) -### Checks for programs - -# compilers -AC_PROG_CC -AC_PROG_CC_STDC -AC_PROG_CXX - -EFL_CXX_COMPILE_STDCXX_11([ext]) - -# pkg-config -PKG_PROG_PKG_CONFIG - -# gettext -m4_ifdef([AM_GNU_GETTEXT_VERSION], [ -AM_GNU_GETTEXT_VERSION([0.18]) -]) - -m4_ifdef([AM_GNU_GETTEXT], [ -AM_GNU_GETTEXT([external]) -po_makefile_in=po/Makefile.in -have_po="yes" -],[ -have_po="no" -]) -AC_SUBST([LTLIBINTL]) - -if test "x${POSUB}" = "x" ; then - have_po="no" -fi - -AM_CONDITIONAL([HAVE_PO], [test "x${have_po}" = "xyes"]) - -# doxygen -EFL_CHECK_DOXYGEN([build_doc="yes"], [build_doc="no"]) - -# EFL binaries -EFL_WITH_BIN([eet], [eet-eet], [eet]) -EFL_WITH_BIN([edje], [edje-cc], [edje_cc]) -EFL_WITH_BIN([elementary], [elementary-codegen], [elementary_codegen]) -EFL_WITH_BIN([elementary], [elm-prefs-cc], [elm_prefs_cc]) -EFL_WITH_BIN([eolian], [eolian-gen], [eolian_gen]) -EFL_WITH_BIN([eolian-cxx], [eolian-cxx], [eolian_cxx]) -EFL_WITH_BIN([eldbus], [eldbus_codegen], [eldbus-codegen]) -# Force the helper to try external eolian generators -AM_CONDITIONAL([HAVE_EOLIAN_GEN], [true]) -AM_CONDITIONAL([HAVE_EOLIAN_CXX], [true]) -AM_CONDITIONAL([HAVE_EOLIAN_JS], [true]) - -EFL_ENABLE_BIN([elementary-test]) -EFL_ENABLE_BIN([elementary-codegen]) -EFL_ENABLE_BIN([elm-prefs-cc]) -EFL_ENABLE_BIN([elementary-config]) - - ### Checks for libraries requirement_elm_pc="" @@ -263,7 +298,6 @@ ELM_CHECK_OPTION([elocation], [0.1.0]) ELM_CHECK_OPTION([eweather], [0.2.0]) # emap is in svn : trunk/PROTO ELM_CHECK_OPTION([emap], [0.1.0]) -ELM_CHECK_OPTION([eweb]) if test "x${HAVE_CXX11}" = "x1" -a "x${want_cxx11}" = "xyes"; then PKG_CHECK_MODULES([ELEMENTARY_CXX], @@ -564,6 +598,9 @@ src/modules/access_output/Makefile src/modules/datetime_input_ctxpopup/Makefile src/modules/test_entry/Makefile src/modules/test_map/Makefile +src/modules/web/Makefile +src/modules/web/none/Makefile +src/modules/web/webkit2/Makefile src/edje_externals/Makefile src/examples/Makefile src/examples/sphere_hunter/Makefile @@ -616,7 +653,7 @@ echo echo " Features:" echo " EWeather...............: ${have_elementary_eweather}" echo " EMap...................: ${have_elementary_emap}" -echo " Web (WebKit)...........: ${elementary_web}" +echo " Web....................: ${elementary_web}" echo " Quick Launch...........: ${ac_cv_func_fork}" echo " Elocation..............: ${have_elementary_elocation}" echo diff --git a/m4/elm_check_option.m4 b/m4/elm_check_option.m4 index 9fae5ff..999636a 100644 --- a/m4/elm_check_option.m4 +++ b/m4/elm_check_option.m4 @@ -42,64 +42,6 @@ m4_popdef([UP])dnl m4_popdef([DOWN])dnl ]) -dnl use: ELM_CHECK_OPTION_DEP_EWK2() -AC_DEFUN([ELM_CHECK_OPTION_DEP_EWK2], -[dnl - -ELM_WEB2_DEF="#undef" -elementary_web="no" - -AC_ARG_WITH([elementary-web-backend], - [AS_HELP_STRING( - [--with-elementary-web-backend=@<:@ewebkit2/detect/none@:>@], - [Select the WebKit backend for Elementary to support web @<:@default=detect@:>@])], - [elementary_web_backend=${withval}], - [elementary_web_backend="detect"]) - -case "${elementary_web_backend}" in - ewebkit2|detect|none) - ;; - *) - AC_MSG_ERROR([Invalid web backend: must be ewebkit2, detect or none]) - ;; -esac - -if test "x${elementary_web_backend}" = "xdetect"; then - want_elementary_web="ewebkit2" -else - want_elementary_web=${elementary_web_backend} -fi - -AC_MSG_CHECKING([which web option to use]) -AC_MSG_RESULT([${want_elementary_web}]) - -if test "x${want_elementary_web}" != "xnone"; then - PKG_CHECK_EXISTS([$want_elementary_web], - [ - AC_DEFINE([HAVE_ELEMENTARY_WEB], [1], [Web support for Elementary]) - webkit_datadir=$(${PKG_CONFIG} ${want_elementary_web} --variable=datadir) - AC_DEFINE_UNQUOTED([WEBKIT_DATADIR], - ["${webkit_datadir}"], - ["WebKit's data dir"]) - ELM_WEB2_DEF="#define" - elementary_web=${want_elementary_web} - requirement_elm_pc="${want_elementary_web} ${requirement_elm_pc}" - ], - [elementary_web="no"] - ) -fi - -AC_MSG_CHECKING([whether to build web option]) -AC_MSG_RESULT([${elementary_web}]) - -if test "x${elementary_web_backend}" = "xewebkit2" && test "x${elementary_web}" = "xnone"; then - AC_MSG_ERROR([Web support requested, but no ${elementary_web_backend} found by pkg-config.]) -fi - -AC_SUBST([ELM_WEB2_DEF]) -]) - - dnl use: ELM_CHECK_OPTION(option, pkgver) AC_DEFUN([ELM_CHECK_OPTION], [dnl diff --git a/src/lib/Elementary.h.in b/src/lib/Elementary.h.in index 3b5d73d..b8fe89a 100644 --- a/src/lib/Elementary.h.in +++ b/src/lib/Elementary.h.in @@ -13,7 +13,6 @@ @ELM_UNIX_DEF@ ELM_UNIX @ELM_WIN32_DEF@ ELM_WIN32 -@ELM_WEB2_DEF@ ELM_WEB2 @ELM_EMAP_DEF@ ELM_EMAP @ELM_DEBUG_DEF@ ELM_DEBUG @ELM_ALLOCA_H_DEF@ ELM_ALLOCA_H diff --git a/src/lib/elm_config.c b/src/lib/elm_config.c index 185a0ef..bf5a3a3 100644 --- a/src/lib/elm_config.c +++ b/src/lib/elm_config.c @@ -380,6 +380,7 @@ _desc_init(void) ELM_CONFIG_VAL(D, T, config_version, T_INT); ELM_CONFIG_VAL(D, T, engine, T_STRING); ELM_CONFIG_VAL(D, T, accel, T_STRING); + ELM_CONFIG_VAL(D, T, web_backend, T_STRING); ELM_CONFIG_VAL(D, T, accel_override, T_UCHAR); ELM_CONFIG_VAL(D, T, vsync, T_UCHAR); ELM_CONFIG_VAL(D, T, thumbscroll_enable, T_UCHAR); diff --git a/src/lib/elm_main.c b/src/lib/elm_main.c index 1229444..0bb4c4d 100644 --- a/src/lib/elm_main.c +++ b/src/lib/elm_main.c @@ -320,6 +320,10 @@ elm_init(int argc, char **argv) if (_elm_config->atspi_mode != ELM_ATSPI_MODE_OFF) _elm_atspi_bridge_init(); + if (!_elm_config->web_backend) + _elm_config->web_backend = "none"; + if (!_elm_web_init(_elm_config->web_backend)) + _elm_config->web_backend = "none"; return _elm_init_count; } diff --git a/src/lib/elm_priv.h b/src/lib/elm_priv.h index 9b7fce8..91b4285 100644 --- a/src/lib/elm_priv.h +++ b/src/lib/elm_priv.h @@ -194,6 +194,7 @@ struct _Elm_Config int config_version; const char *engine; const char *accel; + const char *web_backend; unsigned char accel_override; unsigned char vsync; unsigned char thumbscroll_enable; @@ -359,6 +360,8 @@ struct _Elm_Module int references; }; +Eina_Bool _elm_web_init(const char *engine); + Eo *_elm_atspi_bridge_get(void); void _elm_atspi_bridge_init(void); void _elm_atspi_bridge_shutdown(void); diff --git a/src/lib/elm_web.eo b/src/lib/elm_web.eo index ddeec3d..0df0a21 100644 --- a/src/lib/elm_web.eo +++ b/src/lib/elm_web.eo @@ -490,16 +490,55 @@ class Elm.Web (Elm.Widget) implements { class.constructor; Eo.Base.constructor; - Evas.Object_Smart.add; - Evas.Object_Smart.del; - Elm.Widget.theme_apply; - Elm.Widget.on_focus; - Elm.Widget.event; + @virtual .tab_propagate.get; + @virtual .tab_propagate.set; + @virtual .webkit_view.get; + @virtual .window_create_hook.set; + @virtual .dialog_alert_hook.set; + @virtual .dialog_confirm_hook.set; + @virtual .dialog_prompt_hook.set; + @virtual .dialog_file_selector_hook.set; + @virtual .console_message_hook.set; + @virtual .useragent.set; + @virtual .useragent.get; + @virtual .url.set; + @virtual .url.get; + @virtual .html_string_load; + @virtual .title.get; + @virtual .bg_color.set; + @virtual .bg_color.get; + @virtual .selection.get; + @virtual .popup_selected.set; + @virtual .popup_destroy; + @virtual .text_search; + @virtual .text_matches_mark; + @virtual .text_matches_unmark_all; + @virtual .text_matches_highlight.set; + @virtual .text_matches_highlight.get; + @virtual .load_progress.get; + @virtual .stop; + @virtual .reload; + @virtual .reload_full; + @virtual .back; + @virtual .forward; + @virtual .navigate; + @virtual .back_possible.get; + @virtual .forward_possible.get; + @virtual .navigate_possible_get; + @virtual .history_enabled.get; + @virtual .history_enabled.set; + @virtual .zoom.set; + @virtual .zoom.get; + @virtual .zoom_mode.set; + @virtual .zoom_mode.get; + @virtual .region_show; + @virtual .region_bring_in; + @virtual .inwin_mode.set; + @virtual .inwin_mode.get; } events { uri,changed; url,changed; windows,close,request; } - } diff --git a/src/lib/elm_web2.c b/src/lib/elm_web2.c index f78c47d..37d1d75 100644 --- a/src/lib/elm_web2.c +++ b/src/lib/elm_web2.c @@ -9,19 +9,43 @@ #include "elm_priv.h" #include "elm_widget_web.h" -#if defined(HAVE_ELEMENTARY_WEB) -#include <EWebKit2.h> -#endif - #define MY_CLASS ELM_WEB_CLASS #define MY_CLASS_NAME "Elm_Web" #define MY_CLASS_NAME_LEGACY "elm_web" -#if defined(HAVE_ELEMENTARY_WEB) -static Ewk_View_Smart_Class _ewk_view_parent_sc = - EWK_VIEW_SMART_CLASS_INIT_NULL; -#endif +typedef struct _Elm_Web_Module Elm_Web_Module; +struct _Elm_Web_Module +{ + void (*unneed_web)(void); + Eina_Bool (*need_web)(void); + + void (*window_features_ref)(Elm_Web_Window_Features *wf); + void (*window_features_unref)(Elm_Web_Window_Features *wf); + Eina_Bool (*window_features_property_get)(const Elm_Web_Window_Features *wf, + Elm_Web_Window_Feature_Flag flag); + void (*window_features_region_get)(const Elm_Web_Window_Features *wf, + Evas_Coord *x, + Evas_Coord *y, + Evas_Coord *w, + Evas_Coord *h); + + const Eo_Class *(*class_get)(void); + + Eina_Module *m; +}; + +static Elm_Web_Module ewm = { + NULL, + NULL, + + NULL, + NULL, + NULL, + NULL, + + NULL +}; static const char SIG_URI_CHANGED[] = "uri,changed"; // deprecated, use "url,changed" instead. static const char SIG_URL_CHANGED[] = "url,changed"; @@ -34,1453 +58,162 @@ static const Evas_Smart_Cb_Description _elm_web_smart_callbacks[] = { { NULL, NULL } }; -#ifdef HAVE_ELEMENTARY_WEB -static void -_view_smart_add(Evas_Object *obj) -{ - View_Smart_Data *sd; - - sd = calloc(1, sizeof(View_Smart_Data)); - evas_object_smart_data_set(obj, sd); - - _ewk_view_parent_sc.sc.add(obj); -} - -static void -_view_smart_del(Evas_Object *obj) -{ - _ewk_view_parent_sc.sc.del(obj); -} - -static Evas_Object * -_view_smart_window_create(Ewk_View_Smart_Data *vsd, - const Ewk_Window_Features *window_features) -{ - Evas_Object *new; - Evas_Object *obj = evas_object_smart_parent_get(vsd->self); - - ELM_WEB_DATA_GET_OR_RETURN_VAL(obj, sd, NULL); - - if (!sd->hook.window_create) return NULL; - - new = sd->hook.window_create - (sd->hook.window_create_data, obj, EINA_TRUE, - (const Elm_Web_Window_Features *)window_features); - if (new) return elm_web_webkit_view_get(new); - - return NULL; -} - -static void -_view_smart_window_close(Ewk_View_Smart_Data *sd) -{ - Evas_Object *obj = evas_object_smart_parent_get(sd->self); - - ELM_WEB_CHECK(obj); - - eo_event_callback_call(obj, ELM_WEB_EVENT_WINDOWS_CLOSE_REQUEST, NULL); -} - -static void -_popup_item_selected(void *data, - Evas_Object *obj, - void *event_info EINA_UNUSED) -{ - Elm_Object_Item *list_it = elm_list_selected_item_get(obj); - const Eina_List *itr, *list = elm_list_items_get(obj); - Ewk_Popup_Menu *menu = data; - int i = 0; - void *d; - - EINA_LIST_FOREACH(list, itr, d) - { - if (d == list_it) - break; - - i++; - } - - ewk_popup_menu_selected_index_set(menu, i); - ewk_popup_menu_close(menu); - - evas_object_del(evas_object_data_get(obj, "_notify")); -} - -static Eina_Bool -_popup_dismiss_cb(void *data, - Eo *obj, - const Eo_Event_Description *desc EINA_UNUSED, - void *event_info EINA_UNUSED) +// FIXME: init/shutdown module below +void +_elm_unneed_web(void) { - ewk_popup_menu_close(data); - evas_object_del(obj); - return EINA_TRUE; + if (!ewm.unneed_web) return ; + ewm.unneed_web(); } -static Eina_Bool -_view_smart_popup_menu_show(Ewk_View_Smart_Data *sd, - Eina_Rectangle r, - Ewk_Text_Direction dir EINA_UNUSED, - double scale EINA_UNUSED, - Ewk_Popup_Menu *menu) +EAPI Eina_Bool +elm_need_web(void) { - Evas_Object *notify, *list, *grid, *win; - const Eina_List* items = ewk_popup_menu_items_get(menu); - Evas_Object *obj = evas_object_smart_parent_get(sd->self); - int h, ww, wh; - - Elm_Object_Item *lit; - Eina_Bool disabled; - const char *txt; - Ewk_Popup_Menu_Item *it; - const Eina_List *itr; - - Evas_Object *popup = evas_object_data_get(sd->self, "_select_popup"); - if (popup) evas_object_del(popup); - - win = elm_widget_top_get(obj); - - notify = elm_notify_add(win); - elm_notify_allow_events_set(notify, EINA_FALSE); - elm_notify_align_set(notify, 0.5, 1.0); - - list = elm_list_add(notify); - evas_object_data_set(list, "_notify", notify); - elm_list_select_mode_set(list, ELM_OBJECT_SELECT_MODE_ALWAYS); - elm_scroller_bounce_set(list, EINA_FALSE, EINA_FALSE); - elm_list_mode_set(list, ELM_LIST_EXPAND); - evas_object_size_hint_weight_set(list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(list, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(list); - - EINA_LIST_FOREACH(items, itr, it) - { - switch (ewk_popup_menu_item_type_get(it)) - { - case EWK_POPUP_MENU_SEPARATOR: - // TODO: - break; - case EWK_POPUP_MENU_ITEM: - txt = ewk_popup_menu_item_text_get(it); - if (ewk_popup_menu_item_is_label_get(it)) - { - lit = elm_list_item_append(list, txt, NULL, NULL, NULL, NULL); - disabled = EINA_TRUE; - } - else - { - lit = elm_list_item_append(list, txt, NULL, NULL, _popup_item_selected, menu); - disabled = !ewk_popup_menu_item_enabled_get(it); - } - - elm_object_item_disabled_set(lit, disabled); - break; - default: - break; - } - } - elm_list_go(list); - - grid = elm_grid_add(win); - elm_grid_size_set(grid, 1, 1); - elm_grid_pack(grid, list, 0, 0, 1, 1); - evas_object_geometry_get(win, NULL, NULL, &ww, &wh); - - //FIXME: it should be the real height of items in the list. - h = r.h * eina_list_count(items); - evas_object_size_hint_min_set(grid, ww, h < wh / 2 ? h : wh / 2); - elm_object_content_set(notify, grid); - evas_object_show(grid); - - evas_object_show(notify); - - evas_object_data_set(sd->self, "_select_popup", notify); - - eo_event_callback_add - (notify, ELM_NOTIFY_EVENT_BLOCK_CLICKED, _popup_dismiss_cb, menu); - - return EINA_TRUE; + if (!ewm.need_web) return EINA_FALSE; + return ewm.need_web(); } -static Eina_Bool -_view_smart_popup_menu_hide(Ewk_View_Smart_Data *sd) +EAPI Evas_Object * +elm_web_add(Evas_Object *parent) { - Evas_Object *popup = evas_object_data_get(sd->self, "_select_popup"); - if (!popup) return EINA_FALSE; - - evas_object_del(popup); - evas_object_data_del(sd->self, "_select_popup"); - - return EINA_TRUE; -} + Evas_Object *obj; -static Eina_Bool -_fullscreen_accept(void *data, - Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED) -{ - Evas_Object *ewk = data; - evas_object_del(evas_object_data_get(ewk, "_fullscreen_permission_popup")); + if (!parent || !ewm.class_get) return NULL; - return EINA_TRUE; + eo_add(&obj, ewm.class_get(), parent); + return obj; } -static Eina_Bool -_fullscreen_deny(void *data, - Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED) +EOLIAN static Eo * +_elm_web_eo_base_constructor(Eo *obj, Elm_Web_Data *sd) { - Evas_Object *ewk = data; - ewk_view_fullscreen_exit(ewk); - evas_object_del(evas_object_data_get(ewk, "_fullscreen_permission_popup")); + obj = eo_constructor(eo_super(obj, MY_CLASS)); + sd->obj = obj; + evas_obj_type_set(obj, MY_CLASS_NAME_LEGACY); + evas_obj_smart_callbacks_descriptions_set(obj, _elm_web_smart_callbacks); + elm_interface_atspi_accessible_role_set(obj, ELM_ATSPI_ROLE_HTML_CONTAINER); - return EINA_TRUE; + return obj; } -static Eina_Bool -_view_smart_fullscreen_enter(Ewk_View_Smart_Data *sd, Ewk_Security_Origin *origin) +EAPI Eina_Bool +elm_web_uri_set(Evas_Object *obj, const char *url) { - Evas_Object *btn, *popup, *top; - const char *host; - char buffer[2048]; - - Evas_Object *obj = evas_object_smart_parent_get(sd->self); - ELM_WEB_CHECK(obj) EINA_FALSE; - top = elm_widget_top_get(obj); - elm_win_fullscreen_set(top, EINA_TRUE); - - popup = elm_popup_add(top); - elm_popup_orient_set(popup, ELM_POPUP_ORIENT_TOP); - evas_object_size_hint_weight_set(popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - - host = ewk_security_origin_host_get(origin); - snprintf(buffer, sizeof(buffer), "%s is now fullscreen.<br>Press ESC at any time to exit fullscreen,<br>Allow fullscreen?<br>", host); - elm_object_text_set(popup, buffer); - - btn = elm_button_add(popup); - elm_object_text_set(btn, "Accept"); - elm_object_part_content_set(popup, "button1", btn); - eo_event_callback_add - (btn, EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED, _fullscreen_accept, sd->self); - - btn = elm_button_add(popup); - elm_object_text_set(btn, "Deny"); - elm_object_part_content_set(popup, "button2", btn); - eo_event_callback_add - (btn, EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED, _fullscreen_deny, sd->self); - - evas_object_data_set(sd->self, "_fullscreen_permission_popup", popup); - evas_object_show(popup); - - return EINA_TRUE; + return elm_obj_web_url_set(obj, url); } -static Eina_Bool -_view_smart_fullscreen_exit(Ewk_View_Smart_Data *sd) +EAPI const char * +elm_web_uri_get(const Evas_Object *obj) { - Evas_Object *obj = evas_object_smart_parent_get(sd->self); - - ELM_WEB_CHECK(obj) EINA_FALSE; - - Evas_Object *top = elm_widget_top_get(obj); - elm_win_fullscreen_set(top, EINA_FALSE); - - return EINA_TRUE; + return elm_obj_web_url_get((Eo *) obj); } -static Eina_Bool -_bt_close(void *data, - Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED) +// FIXME: override with module function +EAPI void +elm_web_window_features_ref(Elm_Web_Window_Features *wf) { - Dialog_Data *d = data; - - if (d->type == DIALOG_ALERT) goto end; - - *d->response = (obj == d->bt_ok); - if (d->type == DIALOG_CONFIRM) goto end; - - if (d->type == DIALOG_PROMPT) - *d->entry_value = strdup(elm_entry_entry_get(d->entry)); - -end: - evas_object_del(d->dialog); - free(d); - - return EINA_TRUE; + if (!ewm.window_features_ref) return ; + ewm.window_features_ref(wf); } -static Dialog_Data * -_dialog_new(Evas_Object *web, Eina_Bool inwin_mode) +EAPI void +elm_web_window_features_unref(Elm_Web_Window_Features *wf) { - Dialog_Data *d; - - d = calloc(1, sizeof(Dialog_Data)); - if (!d) return NULL; - - if (!web || inwin_mode) - { - Evas_Object *bg; - - d->dialog = elm_win_add(NULL, "elm-web-popup", ELM_WIN_DIALOG_BASIC); - eo_event_callback_add - (d->dialog, ELM_WIN_EVENT_DELETE_REQUEST, _bt_close, d); - - bg = elm_bg_add(d->dialog); - evas_object_size_hint_weight_set - (bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_win_resize_object_add(d->dialog, bg); - evas_object_show(bg); - - d->box = elm_box_add(d->dialog); - evas_object_size_hint_weight_set - (d->box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_win_resize_object_add(d->dialog, d->box); - evas_object_show(d->box); - } - else - { - Evas_Object *win = elm_widget_top_get(web); - - d->dialog = elm_win_inwin_add(win); - elm_object_style_set(d->dialog, "minimal"); - evas_object_size_hint_weight_set - (d->dialog, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - - d->box = elm_box_add(win); - evas_object_size_hint_weight_set - (d->box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_win_inwin_content_set(d->dialog, d->box); - evas_object_show(d->box); - } - - return d; + if (!ewm.window_features_unref) return ; + ewm.window_features_unref(wf); } -static void -_dialog_ok_cancel_buttons_add(Dialog_Data *dialog_data) +EAPI Eina_Bool +elm_web_window_features_property_get(const Elm_Web_Window_Features *wf, + Elm_Web_Window_Feature_Flag flag) { - Evas_Object *bx, *bt; - bx = elm_box_add(dialog_data->box); - elm_box_horizontal_set(bx, EINA_TRUE); - elm_box_pack_end(dialog_data->box, bx); - evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_show(bx); - - dialog_data->bt_cancel = bt = elm_button_add(bx); - elm_object_text_set(bt, "Cancel"); - elm_box_pack_end(bx, bt); - evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL); - eo_event_callback_add - (bt, EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED, _bt_close, dialog_data); - evas_object_show(bt); - - dialog_data->bt_ok = bt = elm_button_add(bx); - elm_object_text_set(bt, "Ok"); - elm_box_pack_end(bx, bt); - evas_object_size_hint_weight_set(bt, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - evas_object_size_hint_align_set(bt, EVAS_HINT_FILL, EVAS_HINT_FILL); - eo_event_callback_add - (bt, EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED, _bt_close, dialog_data); - evas_object_show(bt); + if (!ewm.window_features_property_get) return EINA_FALSE; + return ewm.window_features_property_get(wf, flag); } -static void -_dialog_del_cb(void *data EINA_UNUSED, - Evas *e EINA_UNUSED, - Evas_Object *obj EINA_UNUSED, - void *event_info EINA_UNUSED) +EAPI void +elm_web_window_features_region_get(const Elm_Web_Window_Features *wf, + Evas_Coord *x, + Evas_Coord *y, + Evas_Coord *w, + Evas_Coord *h) { - ecore_main_loop_quit(); -} + if (x) *x = 0; + if (y) *y = 0; + if (w) *w = 0; + if (h) *h = 0; -static void -_exec_dialog(Evas_Object *dialog) -{ - evas_object_event_callback_add - (dialog, EVAS_CALLBACK_DEL, _dialog_del_cb, NULL); - ecore_main_loop_begin(); + if (!ewm.window_features_region_get) return; + ewm.window_features_region_get(wf, x, y, w, h); } static void -_view_smart_run_javascript_alert(Ewk_View_Smart_Data *vsd, const char *message) +_elm_web_class_constructor(Eo_Class *klass) { - Evas_Object *obj = evas_object_smart_parent_get(vsd->self); - Evas_Object *dialog = NULL; - - ELM_WEB_DATA_GET_OR_RETURN(obj, sd); - - if (sd->hook.alert) - dialog = sd->hook.alert(sd->hook.alert_data, obj, message); - else - { - Evas_Object *lb; - Dialog_Data *dialog_data = _dialog_new(obj, sd->inwin_mode); - dialog_data->type = DIALOG_ALERT; - dialog = dialog_data->dialog; - - lb = elm_label_add(dialog_data->box); - elm_object_text_set(lb, message); - elm_box_pack_end(dialog_data->box, lb); - evas_object_show(lb); - - dialog_data->bt_ok = elm_button_add(dialog_data->box); - elm_object_text_set(dialog_data->bt_ok, "Close"); - elm_box_pack_end(dialog_data->box, dialog_data->bt_ok); - evas_object_size_hint_align_set - (dialog_data->bt_ok, EVAS_HINT_FILL, EVAS_HINT_FILL); - eo_event_callback_add - (dialog_data->bt_ok, EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED, _bt_close, dialog_data); - evas_object_show(dialog_data->bt_ok); - - evas_object_show(dialog); - } - - if (dialog) _exec_dialog(dialog); + evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); } -static Eina_Bool -_view_smart_run_javascript_confirm(Ewk_View_Smart_Data *vsd, const char *message) -{ - Evas_Object *obj = evas_object_smart_parent_get(vsd->self); - Eina_Bool response = EINA_FALSE; - Evas_Object *dialog = NULL; - - ELM_WEB_DATA_GET_OR_RETURN_VAL(obj, sd, EINA_FALSE); - - if (sd->hook.confirm) - dialog = sd->hook.confirm(sd->hook.confirm_data, obj, message, &response); - else - { - Evas_Object *lb; - Dialog_Data *dialog_data = _dialog_new(obj, sd->inwin_mode); - dialog_data->type = DIALOG_CONFIRM; - dialog_data->response = &response; - dialog = dialog_data->dialog; - - lb = elm_label_add(dialog_data->box); - elm_object_text_set(lb, message); - elm_box_pack_end(dialog_data->box, lb); - evas_object_show(lb); - - _dialog_ok_cancel_buttons_add(dialog_data); - - evas_object_show(dialog); - } - - if (dialog) _exec_dialog(dialog); - - return response; -} +#if defined(_WIN32) || defined(__CYGWIN__) +# define EFL_SHARED_EXTENSION ".dll" +#else +# define EFL_SHARED_EXTENSION ".so" +#endif -static const char * -_view_smart_run_javascript_prompt(Ewk_View_Smart_Data *vsd, const char *message, const char *default_value) +Eina_Bool +_elm_web_init(const char *engine) { - Evas_Object *obj = evas_object_smart_parent_get(vsd->self); - Eina_Bool response = EINA_FALSE; - Evas_Object *dialog = NULL; - char *value = NULL; - const char *ret; + char buf[PATH_MAX]; - ELM_WEB_DATA_GET_OR_RETURN_VAL(obj, sd, EINA_FALSE); - - if (sd->hook.prompt) - dialog = sd->hook.prompt(sd->hook.prompt_data, obj, message, default_value, (const char**)&value, &response); + if (getenv("ELM_RUN_IN_TREE")) + snprintf(buf, sizeof(buf), + ELM_TOP_BUILD_DIR"/src/modules/web/%s/.libs/module"EFL_SHARED_EXTENSION, + engine); else - { - Evas_Object *lb, *entry; - Dialog_Data *dialog_data = _dialog_new(obj, sd->inwin_mode); - dialog_data->type = DIALOG_PROMPT; - dialog_data->response = &response; - dialog_data->entry_value = (const char**)&value; - dialog = dialog_data->dialog; - - lb = elm_label_add(dialog_data->box); - elm_object_text_set(lb, message); - elm_box_pack_end(dialog_data->box, lb); - evas_object_show(lb); - - dialog_data->entry = entry = elm_entry_add(dialog_data->box); - elm_entry_single_line_set(entry, EINA_TRUE); - elm_entry_scrollable_set(entry, EINA_TRUE); - elm_entry_entry_set(entry, default_value); - evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, EVAS_HINT_FILL); - evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); - elm_box_pack_end(dialog_data->box, entry); - evas_object_show(entry); - - _dialog_ok_cancel_buttons_add(dialog_data); - - evas_object_show(dialog); - } - - if (dialog) _exec_dialog(dialog); - - if (!value) return NULL; - - ret = eina_stringshare_add(value); - free(value); - return ret; -} - -/** - * Creates a new view object given the parent. - * - * @param parent object to use as parent. - * - * @return newly added Evas_Object or @c NULL on errors. - */ -Evas_Object * -_view_add(Evas_Object *parent) -{ - Evas *canvas = evas_object_evas_get(parent); - static Evas_Smart *smart = NULL; - Evas_Object *view; - - if (!smart) - { - static Ewk_View_Smart_Class api = - EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION("EWK_View_Elementary"); - - ewk_view_smart_class_set(&api); - ewk_view_smart_class_set(&_ewk_view_parent_sc); - - // TODO: check every api method and provide overrides with hooks! - // TODO: hooks should provide extension points - // TODO: extension should have some kind of "default implementation", - // TODO: that can be replaced or controlled by hooks. - // TODO: ie: run_javascript_alert() should present an elm_win - // TODO: by default, but user could override it to show as inwin. - api.sc.add = _view_smart_add; - api.sc.del = _view_smart_del; - api.window_create = _view_smart_window_create; - api.window_close = _view_smart_window_close; - api.popup_menu_show = _view_smart_popup_menu_show; - api.popup_menu_hide = _view_smart_popup_menu_hide; - api.fullscreen_enter = _view_smart_fullscreen_enter; - api.fullscreen_exit = _view_smart_fullscreen_exit; - api.run_javascript_alert = _view_smart_run_javascript_alert; - api.run_javascript_confirm = _view_smart_run_javascript_confirm; - api.run_javascript_prompt = _view_smart_run_javascript_prompt; - - smart = evas_smart_class_new(&api.sc); - if (!smart) - { - CRI("Could not create smart class"); - return NULL; - } - } + snprintf(buf, sizeof(buf), + "%s/elementary/modules/web/%s/%s/module"EFL_SHARED_EXTENSION, + _elm_lib_dir, engine, MODULE_ARCH); - view = ewk_view_smart_add(canvas, smart, ewk_context_default_get(), ewk_page_group_create(0)); - if (!view) + if (ewm.m) { - ERR("Could not create smart object object for view"); - return NULL; + // Check if the module is already open + if (!strcmp(buf, eina_module_file_get(ewm.m))) + return EINA_TRUE; + + // We are leaking reference on purpose here, as we can't be sure that + // the web engine is not leaking state around preventing a clean exit. + // Only future elm_web object created from now will use the new engine. + ewm.unneed_web = NULL; + ewm.need_web = NULL; + ewm.window_features_ref = NULL; + ewm.window_features_unref = NULL; + ewm.window_features_property_get = NULL; + ewm.window_features_region_get = NULL; + ewm.class_get = NULL; } - return view; -} - -static Eina_Bool -_view_smart_url_changed_cb(void *data, - Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED) -{ - eo_event_callback_call(data, ELM_WEB_EVENT_URI_CHANGED, event_info); - eo_event_callback_call(data, ELM_WEB_EVENT_URL_CHANGED, event_info); - - return EINA_TRUE; -} - -static void -_view_smart_callback_proxy(Evas_Object *view, Evas_Object *parent) -{ - eo_event_callback_add - (view, ELM_WEB_EVENT_URL_CHANGED, _view_smart_url_changed_cb, parent); -} - -static Eina_Bool _elm_need_web = EINA_FALSE; -#endif - -void -_elm_unneed_web(void) -{ -#ifdef HAVE_ELEMENTARY_WEB - if (!_elm_need_web) return; - _elm_need_web = EINA_FALSE; - ewk_shutdown(); -#endif -} - -EAPI Eina_Bool -elm_need_web(void) -{ -#ifdef HAVE_ELEMENTARY_WEB - if (_elm_need_web) return EINA_TRUE; - _elm_need_web = EINA_TRUE; - ewk_init(); - return EINA_TRUE; -#else - return EINA_FALSE; -#endif -} - -EOLIAN static Eina_Bool -_elm_web_elm_widget_theme_apply(Eo *obj, Elm_Web_Data *sd EINA_UNUSED) -{ - (void)obj; - return EINA_TRUE; -} - -EOLIAN static Eina_Bool -_elm_web_elm_widget_on_focus(Eo *obj, Elm_Web_Data *sd, Elm_Object_Item *item EINA_UNUSED) -{ -#ifdef HAVE_ELEMENTARY_WEB - Evas_Object *top; - - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_TRUE); - Eina_Bool int_ret = EINA_FALSE; - - int_ret = elm_obj_widget_on_focus(eo_super(obj, MY_CLASS), NULL); - if (!int_ret) return EINA_TRUE; - - top = elm_widget_top_get(obj); + ewm.m = eina_module_new(buf); + if (!ewm.m) return EINA_FALSE; - if (elm_object_focus_get(obj)) + if (!eina_module_load(ewm.m)) { - evas_object_focus_set(wd->resize_obj, EINA_TRUE); - if (top) elm_win_keyboard_mode_set(top, sd->input_method); + eina_module_free(ewm.m); + ewm.m = NULL; + return EINA_FALSE; } - else - { - evas_object_focus_set(wd->resize_obj, EINA_FALSE); - if (top) elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_OFF); - } -#else - (void)obj; - (void)sd; -#endif - return EINA_TRUE; -} - -EOLIAN static Eina_Bool -_elm_web_elm_widget_event(Eo *obj, Elm_Web_Data *sd, Evas_Object *src, Evas_Callback_Type type, void *event_info) -{ - (void)obj; - (void)sd; - (void)src; - (void)type; - (void)event_info; - return EINA_FALSE; -} - -EOLIAN static Eina_Bool -_elm_web_tab_propagate_get(Eo *obj EINA_UNUSED, Elm_Web_Data *sd) -{ -#ifdef HAVE_ELEMENTARY_WEB - return sd->tab_propagate; -#else - (void)sd; - return EINA_FALSE; -#endif -} - -EOLIAN static void -_elm_web_tab_propagate_set(Eo *obj EINA_UNUSED, Elm_Web_Data *sd, Eina_Bool propagate) -{ -#ifdef HAVE_ELEMENTARY_WEB - sd->tab_propagate = propagate; -#else - (void)propagate; - (void)sd; -#endif -} -EOLIAN static void -_elm_web_evas_object_smart_add(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ - Evas_Object *resize_obj; - -#ifdef HAVE_ELEMENTARY_WEB - resize_obj = _view_add(obj); - elm_widget_resize_object_set(obj, resize_obj, EINA_TRUE); - - evas_obj_smart_add(eo_super(obj, MY_CLASS)); - elm_widget_sub_object_parent_add(obj); - - //TODO: need a way to change theme - ewk_view_theme_set(resize_obj, WEBKIT_DATADIR "/themes/default.edj"); - - _view_smart_callback_proxy(resize_obj, obj); - elm_widget_can_focus_set(obj, EINA_TRUE); -#else - resize_obj = elm_label_add(obj); - elm_object_text_set(resize_obj, "WebKit not supported!"); - elm_widget_resize_object_set(obj, resize_obj, EINA_TRUE); - - evas_obj_smart_add(eo_super(obj, MY_CLASS)); - elm_widget_sub_object_parent_add(obj); -#endif -} - -EOLIAN static void -_elm_web_evas_object_smart_del(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ - evas_obj_smart_del(eo_super(obj, MY_CLASS)); -} + ewm.unneed_web = eina_module_symbol_get(ewm.m, "ewm_unneed_web"); + ewm.need_web = eina_module_symbol_get(ewm.m, "ewm_need_web"); + ewm.window_features_ref = eina_module_symbol_get(ewm.m, "ewm_window_features_ref"); + ewm.window_features_unref = eina_module_symbol_get(ewm.m, "ewm_window_features_unref"); + ewm.window_features_property_get = eina_module_symbol_get(ewm.m, "ewm_window_features_property_get"); + ewm.window_features_region_get = eina_module_symbol_get(ewm.m, "ewm_window_features_region_get"); + ewm.class_get = eina_module_symbol_get(ewm.m, "ewm_class_get"); -EAPI Evas_Object * -elm_web_add(Evas_Object *parent) -{ - EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL); - Evas_Object *obj = NULL; - eo_add(&obj, MY_CLASS, parent); - return obj; -} - -EOLIAN static Eo * -_elm_web_eo_base_constructor(Eo *obj, Elm_Web_Data *sd) -{ - obj = eo_constructor(eo_super(obj, MY_CLASS)); - sd->obj = obj; - evas_obj_type_set(obj, MY_CLASS_NAME_LEGACY); - evas_obj_smart_callbacks_descriptions_set(obj, _elm_web_smart_callbacks); - elm_interface_atspi_accessible_role_set(obj, ELM_ATSPI_ROLE_HTML_CONTAINER); - - return obj; -} - -EOLIAN static Evas_Object* -_elm_web_webkit_view_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL); - return wd->resize_obj; -#else - (void)obj; - ERR("Elementary not compiled with EWebKit support."); - return NULL; -#endif -} - -EOLIAN static void -_elm_web_window_create_hook_set(Eo *obj EINA_UNUSED, Elm_Web_Data *sd, Elm_Web_Window_Open func, void *data) -{ -#ifdef HAVE_ELEMENTARY_WEB - sd->hook.window_create = func; - sd->hook.window_create_data = data; -#else - (void)sd; - (void)func; - (void)data; -#endif -} - -EOLIAN static void -_elm_web_dialog_alert_hook_set(Eo *obj EINA_UNUSED, Elm_Web_Data *sd, Elm_Web_Dialog_Alert func, void *data) -{ -#ifdef HAVE_ELEMENTARY_WEB - sd->hook.alert = func; - sd->hook.alert_data = data; -#else - (void)func; - (void)data; - (void)sd; -#endif -} - -EOLIAN static void -_elm_web_dialog_confirm_hook_set(Eo *obj EINA_UNUSED, Elm_Web_Data *sd, Elm_Web_Dialog_Confirm func, void *data) -{ -#ifdef HAVE_ELEMENTARY_WEB - sd->hook.confirm = func; - sd->hook.confirm_data = data; -#else - (void)func; - (void)data; - (void)sd; -#endif -} - -EOLIAN static void -_elm_web_dialog_prompt_hook_set(Eo *obj EINA_UNUSED, Elm_Web_Data *sd, Elm_Web_Dialog_Prompt func, void *data) -{ -#ifdef HAVE_ELEMENTARY_WEB - sd->hook.prompt = func; - sd->hook.prompt_data = data; -#else - (void)func; - (void)data; - (void)sd; -#endif -} - -EOLIAN static void -_elm_web_dialog_file_selector_hook_set(Eo *obj EINA_UNUSED, Elm_Web_Data *_pd EINA_UNUSED, Elm_Web_Dialog_File_Selector func, void *data) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)func; - (void)data; - (void)_pd; -#else - (void)func; - (void)data; - (void)_pd; -#endif -} - -EOLIAN static void -_elm_web_console_message_hook_set(Eo *obj EINA_UNUSED, Elm_Web_Data *_pd EINA_UNUSED, Elm_Web_Console_Message func, void *data) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)func; - (void)data; - (void)_pd; -#else - (void)func; - (void)data; - (void)_pd; -#endif -} - -EOLIAN static void -_elm_web_useragent_set(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, const char *user_agent) -{ -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); - - ewk_view_user_agent_set(wd->resize_obj, user_agent); -#else - (void)user_agent; - (void)obj; -#endif -} - -EOLIAN static const char* -_elm_web_useragent_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL); - - return ewk_view_user_agent_get(wd->resize_obj); -#else - (void)obj; - return NULL; -#endif -} - -EAPI Eina_Bool -elm_web_uri_set(Evas_Object *obj, const char *url) -{ - ELM_WEB_CHECK(obj) EINA_FALSE; - Eina_Bool ret = EINA_FALSE; - ret = elm_obj_web_url_set(obj, url); - return ret; -} - -EAPI const char * -elm_web_uri_get(const Evas_Object *obj) -{ - const char *ret = NULL; - ret = elm_obj_web_url_get((Eo *) obj); - return ret; -} - -EOLIAN static Eina_Bool -_elm_web_url_set(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, const char *url) -{ -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); - return ewk_view_url_set(wd->resize_obj, url); -#else - (void)url; - (void)obj; - return EINA_FALSE; -#endif -} - -EOLIAN static const char* -_elm_web_url_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL); - return ewk_view_url_get(wd->resize_obj); -#else - (void)obj; - return NULL; -#endif -} - -EOLIAN static Eina_Bool -_elm_web_html_string_load(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, const char *html, const char *base_url, const char *unreachable_url) -{ -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); - - return ewk_view_html_string_load(wd->resize_obj, - html, base_url, unreachable_url); -#else - (void)obj; - (void)html; - (void)base_url; - (void)unreachable_url; - return EINA_FALSE; -#endif -} - -EOLIAN static const char* -_elm_web_title_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL); - return ewk_view_title_get(wd->resize_obj); -#else - (void)obj; - return NULL; -#endif -} - -EOLIAN static void -_elm_web_bg_color_set(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, int r, int g, int b, int a) -{ -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); - - ewk_view_bg_color_set(wd->resize_obj, r, g, b, a); -#else - (void)obj; - (void)r; - (void)g; - (void)b; - (void)a; -#endif -} - -EOLIAN static void -_elm_web_bg_color_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, int *r, int *g, int *b, int *a) -{ - if (r) *r = 0; - if (g) *g = 0; - if (b) *b = 0; - if (a) *a = 0; - -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); - - ewk_view_bg_color_get(wd->resize_obj, r, g, b, a); -#else - (void)obj; -#endif -} - -EOLIAN static const char* -_elm_web_selection_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)obj; - return NULL; -#else - (void)obj; - return NULL; -#endif -} - -EOLIAN static void -_elm_web_popup_selected_set(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, int idx) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)idx; - (void)obj; -#else - (void)idx; - (void)obj; -#endif -} - -EOLIAN static Eina_Bool -_elm_web_popup_destroy(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)obj; -#else - (void)obj; -#endif - - return EINA_FALSE; -} - -EOLIAN static Eina_Bool -_elm_web_text_search(const Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, const char *string, Eina_Bool case_sensitive, Eina_Bool forward, Eina_Bool wrap) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)string; - (void)case_sensitive; - (void)forward; - (void)wrap; - (void)obj; -#else - (void)string; - (void)case_sensitive; - (void)forward; - (void)wrap; - (void)obj; -#endif - - return EINA_FALSE; -} - -EOLIAN static unsigned int -_elm_web_text_matches_mark(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, const char *string, Eina_Bool case_sensitive, Eina_Bool highlight, unsigned int limit) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)string; - (void)case_sensitive; - (void)highlight; - (void)limit; - (void)obj; -#else - (void)string; - (void)case_sensitive; - (void)highlight; - (void)limit; - (void)obj; -#endif - - return 0; -} - -EOLIAN static Eina_Bool -_elm_web_text_matches_unmark_all(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)obj; -#else - (void)obj; -#endif - - return EINA_FALSE; -} - -EOLIAN static Eina_Bool -_elm_web_text_matches_highlight_set(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, Eina_Bool highlight) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)obj; - (void)highlight; -#else - (void)obj; - (void)highlight; -#endif - - return EINA_FALSE; -} - -EOLIAN static Eina_Bool -_elm_web_text_matches_highlight_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)obj; -#else - (void)obj; -#endif - - return EINA_FALSE; -} - -EOLIAN static double -_elm_web_load_progress_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ - double ret; - ret = -1.0; - -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ret); - - ret = ewk_view_load_progress_get(wd->resize_obj); -#else - (void)obj; -#endif - - return ret; -} - -EOLIAN static Eina_Bool -_elm_web_stop(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ - Eina_Bool ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ret); - - ret = ewk_view_stop(wd->resize_obj); -#else - (void)obj; -#endif - - return ret; -} - -EOLIAN static Eina_Bool -_elm_web_reload(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ - Eina_Bool ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ret); - - ret = ewk_view_reload(wd->resize_obj); -#else - (void)obj; -#endif - - return ret; -} - -EOLIAN static Eina_Bool -_elm_web_reload_full(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ - Eina_Bool ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ret); - - ret = ewk_view_reload_bypass_cache(wd->resize_obj); -#else - (void)obj; -#endif - - return ret; -} - -EOLIAN static Eina_Bool -_elm_web_back(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ - Eina_Bool ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ret); - - ret = ewk_view_back(wd->resize_obj); -#else - (void)obj; -#endif - - return ret; -} - -EOLIAN static Eina_Bool -_elm_web_forward(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ - Eina_Bool ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); - - ret = ewk_view_forward(wd->resize_obj); -#else - (void)obj; -#endif - - return ret; -} - -EOLIAN static Eina_Bool -_elm_web_navigate(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, int steps) -{ - Eina_Bool ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB - Ewk_Back_Forward_List *history; - Ewk_Back_Forward_List_Item *item = NULL; - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ret); - - history = ewk_view_back_forward_list_get(wd->resize_obj); - if (history) - { - item = ewk_back_forward_list_item_at_index_get(history, steps); - if (item) ret = ewk_view_navigate_to(wd->resize_obj, item); - } -#else - (void)steps; - (void)obj; -#endif - - return ret; -} - -EOLIAN static Eina_Bool -_elm_web_back_possible_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ - Eina_Bool ret; - ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ret); - - ret = ewk_view_back_possible(wd->resize_obj); -#else - (void)obj; -#endif - - return ret; -} - -EOLIAN static Eina_Bool -_elm_web_forward_possible_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ - Eina_Bool ret; - ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ret); - - ret = ewk_view_forward_possible(wd->resize_obj); -#else - (void)obj; -#endif - - return ret; -} - -EOLIAN static Eina_Bool -_elm_web_navigate_possible_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, int steps) -{ - Eina_Bool ret; - ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB - Ewk_Back_Forward_List *history; - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ret); - - history = ewk_view_back_forward_list_get(wd->resize_obj); - if (history && ewk_back_forward_list_item_at_index_get(history, steps)) - ret = EINA_TRUE; -#else - (void)steps; - (void)obj; -#endif - - return ret; -} - -EOLIAN static Eina_Bool -_elm_web_history_enabled_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ - Eina_Bool ret; - ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB - (void)obj; -#else - (void)obj; -#endif - - return ret; -} - -EOLIAN static void -_elm_web_history_enabled_set(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, Eina_Bool enable) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)enable; - (void)obj; -#else - (void)enable; - (void)obj; -#endif -} - -EOLIAN static void -_elm_web_zoom_set(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, double zoom) -{ -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); - - ewk_view_page_zoom_set(wd->resize_obj, zoom); -#else - (void)obj; - (void)zoom; -#endif -} - -EOLIAN static double -_elm_web_zoom_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) -{ -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, -1); - - return ewk_view_page_zoom_get(wd->resize_obj); -#else - (void)obj; - return -1; -#endif -} - -EOLIAN static void -_elm_web_zoom_mode_set(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, Elm_Web_Zoom_Mode mode) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)obj; - (void)_pd; - (void)mode; -#else - (void)obj; - (void)_pd; - (void)mode; -#endif -} - -EOLIAN static Elm_Web_Zoom_Mode -_elm_web_zoom_mode_get(Eo *obj EINA_UNUSED, Elm_Web_Data *_pd EINA_UNUSED) -{ - Elm_Web_Zoom_Mode ret; - ret = ELM_WEB_ZOOM_MODE_LAST; -#ifdef HAVE_ELEMENTARY_WEB - (void)_pd; -#else - (void)_pd; -#endif - - return ret; -} - -EOLIAN static void -_elm_web_region_show(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, int x, int y, int w, int h) -{ - (void)w; - (void)h; - -#ifdef HAVE_ELEMENTARY_WEB - (void)obj; - (void)_pd; - (void)x; - (void)y; -#else - (void)obj; - (void)_pd; - (void)x; - (void)y; -#endif -} - -EOLIAN static void -_elm_web_region_bring_in(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, int x, int y, int w, int h) -{ - (void)w; - (void)h; - -#ifdef HAVE_ELEMENTARY_WEB - (void)obj; - (void)_pd; - (void)x; - (void)y; -#else - (void)obj; - (void)_pd; - (void)x; - (void)y; -#endif -} - -EOLIAN static void -_elm_web_inwin_mode_set(Eo *obj EINA_UNUSED, Elm_Web_Data *sd, Eina_Bool value) -{ -#ifdef HAVE_ELEMENTARY_WEB - sd->inwin_mode = value; -#else - (void)sd; - (void)value; -#endif -} - -EOLIAN static Eina_Bool -_elm_web_inwin_mode_get(Eo *obj EINA_UNUSED, Elm_Web_Data *sd) -{ -#ifdef HAVE_ELEMENTARY_WEB - return sd->inwin_mode; -#else - (void)sd; - return EINA_FALSE; -#endif -} - -EAPI void -elm_web_window_features_ref(Elm_Web_Window_Features *wf) -{ -#ifdef HAVE_ELEMENTARY_WEB - ewk_object_ref((Ewk_Object *)wf); -#else - (void)wf; -#endif -} - -EAPI void -elm_web_window_features_unref(Elm_Web_Window_Features *wf) -{ -#ifdef HAVE_ELEMENTARY_WEB - ewk_object_unref((Ewk_Object *)wf); -#else - (void)wf; -#endif -} - -EAPI Eina_Bool -elm_web_window_features_property_get(const Elm_Web_Window_Features *wf, - Elm_Web_Window_Feature_Flag flag) -{ -#ifdef HAVE_ELEMENTARY_WEB - const Ewk_Window_Features *ewf = (const Ewk_Window_Features *)wf; - switch (flag) - { - case ELM_WEB_WINDOW_FEATURE_TOOLBAR: - return ewk_window_features_toolbar_visible_get(ewf); - - case ELM_WEB_WINDOW_FEATURE_STATUSBAR: - return ewk_window_features_statusbar_visible_get(ewf); - - case ELM_WEB_WINDOW_FEATURE_SCROLLBARS: - return ewk_window_features_scrollbars_visible_get(ewf); - - case ELM_WEB_WINDOW_FEATURE_MENUBAR: - return ewk_window_features_menubar_visible_get(ewf); - - case ELM_WEB_WINDOW_FEATURE_LOCATIONBAR: - return ewk_window_features_locationbar_visible_get(ewf); - - case ELM_WEB_WINDOW_FEATURE_FULLSCREEN: - return ewk_window_features_fullscreen_get(ewf); - } -#else - (void)wf; - (void)flag; -#endif - - return EINA_FALSE; -} - -EAPI void -elm_web_window_features_region_get(const Elm_Web_Window_Features *wf, - Evas_Coord *x, - Evas_Coord *y, - Evas_Coord *w, - Evas_Coord *h) -{ -#ifdef HAVE_ELEMENTARY_WEB - ewk_window_features_geometry_get - ((const Ewk_Window_Features *)wf, x, y, w, h); -#else - (void)wf; - (void)x; - (void)y; - (void)w; - (void)h; -#endif -} - -static void -_elm_web_class_constructor(Eo_Class *klass) -{ - evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); + // Only the class_get is mandatory + if (!ewm.class_get) return EINA_FALSE; + return EINA_TRUE; } #include "elm_web.eo.c" diff --git a/src/lib/elm_widget_web.h b/src/lib/elm_widget_web.h index 6eceacd..f71617e 100644 --- a/src/lib/elm_widget_web.h +++ b/src/lib/elm_widget_web.h @@ -1,10 +1,6 @@ #ifndef ELM_WIDGET_WEB_H #define ELM_WIDGET_WEB_H -#ifdef HAVE_ELEMENTARY_WEB -#include <EWebKit2.h> -#endif - /* DO NOT USE THIS HEADER UNLESS YOU ARE PREPARED FOR BREAKING OF YOUR * CODE. THIS IS ELEMENTARY'S INTERNAL WIDGET API (for now) AND IS NOT * FINAL. CALL elm_widget_api_check(ELM_INTERNAL_API_VERSION) TO CHECK @@ -29,70 +25,6 @@ typedef struct _Elm_Web_Data Elm_Web_Data; struct _Elm_Web_Data { Evas_Object *obj; -#ifdef HAVE_ELEMENTARY_WEB - struct - { - Elm_Web_Window_Open window_create; - void *window_create_data; - Elm_Web_Dialog_Alert alert; - void *alert_data; - Elm_Web_Dialog_Confirm confirm; - void *confirm_data; - Elm_Web_Dialog_Prompt prompt; - void *prompt_data; - Elm_Web_Dialog_File_Selector file_selector; - void *file_selector_data; - Elm_Web_Console_Message console_message; - void *console_message_data; - } hook; - - Elm_Win_Keyboard_Mode input_method; - - struct - { - Elm_Web_Zoom_Mode mode; - float current; - float min, max; - Eina_Bool no_anim; - Ecore_Timer *timer; - } zoom; - - struct - { - struct - { - int x, y; - } start, end; - Ecore_Animator *animator; - } bring_in; - - Eina_Bool tab_propagate : 1; - Eina_Bool inwin_mode : 1; -#endif -}; - -enum Dialog_Type -{ - DIALOG_ALERT, - DIALOG_CONFIRM, - DIALOG_PROMPT, - DIALOG_FILE_SELECTOR -}; - -typedef struct _Dialog_Data Dialog_Data; -struct _Dialog_Data -{ - enum Dialog_Type type; - - Evas_Object *dialog; - Evas_Object *box; - Evas_Object *bt_ok, *bt_cancel; - Evas_Object *entry; - Evas_Object *file_sel; - - Eina_Bool *response; - const char **entry_value; - Eina_List **selected_files; }; struct _Elm_Web_Callback_Proxy_Context @@ -102,24 +34,6 @@ struct _Elm_Web_Callback_Proxy_Context }; typedef struct _Elm_Web_Callback_Proxy_Context Elm_Web_Callback_Proxy_Context; -#ifdef HAVE_ELEMENTARY_WEB - -typedef struct _View_Smart_Data View_Smart_Data; -struct _View_Smart_Data -{ - Ewk_View_Smart_Data base; - struct - { - Evas_Event_Mouse_Down event; - Evas_Coord x, y; - unsigned int move_count; - Ecore_Timer *longpress_timer; - Ecore_Animator *pan_anim; - } mouse; -}; - -#endif - /** * @} */ diff --git a/src/modules/Makefile.am b/src/modules/Makefile.am index 00fbcc0..8ad4392 100644 --- a/src/modules/Makefile.am +++ b/src/modules/Makefile.am @@ -6,4 +6,5 @@ prefs \ test_entry \ test_map \ access_output \ -datetime_input_ctxpopup +datetime_input_ctxpopup \ +web diff --git a/src/modules/Makefile.am b/src/modules/web/Makefile.am similarity index 53% copy from src/modules/Makefile.am copy to src/modules/web/Makefile.am index 00fbcc0..9b7287b 100644 --- a/src/modules/Makefile.am +++ b/src/modules/web/Makefile.am @@ -2,8 +2,5 @@ AUTOMAKE_OPTIONS = 1.4 foreign MAINTAINERCLEANFILES = Makefile.in SUBDIRS = \ -prefs \ -test_entry \ -test_map \ -access_output \ -datetime_input_ctxpopup +none \ +webkit2 diff --git a/src/modules/web/none/Makefile.am b/src/modules/web/none/Makefile.am new file mode 100644 index 0000000..f3a0f11 --- /dev/null +++ b/src/modules/web/none/Makefile.am @@ -0,0 +1,40 @@ +AUTOMAKE_OPTIONS = 1.4 foreign +MAINTAINERCLEANFILES = Makefile.in + +CLEANFILES = + +EOLIAN_FLAGS = @DEPS_EOLIAN_FLAGS@ \ + -I$(top_srcdir)/src/lib + +include $(top_srcdir)/Makefile_Eolian_Helper.am + +AM_CPPFLAGS = \ +-DELM_INTERNAL_API_ARGESFSDFEFC=1 \ +-DMODULES_PATH=\"$(pkglibdir)/modules\" \ +-I. \ +-I$(top_builddir) \ +-I$(top_srcdir) \ +-I$(top_srcdir)/src/imported \ +-I$(top_srcdir)/src/lib \ +-I$(top_builddir)/src/lib \ +-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \ +-DLOCALE_DIR=\"$(localedir)\" \ +-DPACKAGE_LIB_DIR=\"$(libdir)\" \ +-DICON_DIR=\"$(datadir)/icons\" \ +-DELM_TOP_BUILD_DIR=\"$(top_builddir)\" \ +-DELEMENTARY_BUILD \ +@ELEMENTARY_CFLAGS@ + +pkgdir = $(pkglibdir)/modules/web/none/$(MODULE_ARCH) +pkg_LTLIBRARIES = module.la + +BUILT_SOURCES = elm_web_none.eo.h elm_web_none.eo.c + +module_la_SOURCES = elm_web_none.c elm_web_none.eo.h +module_la_LIBADD = @ELEMENTARY_LIBS@ $(top_builddir)/src/lib/libelementary.la +module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@ +module_la_LIBTOOLFLAGS = --tag=disable-static + +EXTRA_DIST = elm_web_none.eo + + diff --git a/src/modules/web/none/elm_web_none.c b/src/modules/web/none/elm_web_none.c new file mode 100644 index 0000000..eed6296 --- /dev/null +++ b/src/modules/web/none/elm_web_none.c @@ -0,0 +1,341 @@ +#ifdef HAVE_CONFIG_H +# include "elementary_config.h" +#endif + +#define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED + +#include <Elementary.h> + +#include "elm_priv.h" +#include "elm_widget_web.h" +#include "elm_web_none.eo.h" + +#define MY_CLASS ELM_WEB_CLASS + +#define MY_CLASS_NAME "Elm_Web_None" + +typedef struct _Elm_Web_None_Data Elm_Web_None_Data; +struct _Elm_Web_None_Data +{ +}; + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_tab_propagate_get(Eo *obj EINA_UNUSED, Elm_Web_None_Data *sd EINA_UNUSED) +{ + return EINA_FALSE; +} + +EOLIAN static void +_elm_web_none_elm_web_tab_propagate_set(Eo *obj EINA_UNUSED, Elm_Web_None_Data *sd EINA_UNUSED, Eina_Bool propagate EINA_UNUSED) +{ +} + +EOLIAN static void +_elm_web_none_evas_object_smart_add(Eo *obj, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + Evas_Object *resize_obj; + + resize_obj = elm_label_add(obj); + elm_object_text_set(resize_obj, "WebKit not supported!"); + elm_widget_resize_object_set(obj, resize_obj, EINA_TRUE); + + evas_obj_smart_add(eo_super(obj, MY_CLASS)); + elm_widget_sub_object_parent_add(obj); +} + +EOLIAN static Evas_Object* +_elm_web_none_elm_web_webkit_view_get(Eo *obj, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + (void)obj; + ERR("Elementary not compiled with EWebKit support."); + return NULL; +} + +EOLIAN static void +_elm_web_none_elm_web_window_create_hook_set(Eo *obj EINA_UNUSED, Elm_Web_None_Data *sd EINA_UNUSED, Elm_Web_Window_Open func EINA_UNUSED, void *data EINA_UNUSED) +{ +} + +EOLIAN static void +_elm_web_none_elm_web_dialog_alert_hook_set(Eo *obj EINA_UNUSED, Elm_Web_None_Data *sd EINA_UNUSED, Elm_Web_Dialog_Alert func EINA_UNUSED, void *data EINA_UNUSED) +{ +} + +EOLIAN static void +_elm_web_none_elm_web_dialog_confirm_hook_set(Eo *obj EINA_UNUSED, Elm_Web_None_Data *sd EINA_UNUSED, Elm_Web_Dialog_Confirm func EINA_UNUSED, void *data EINA_UNUSED) +{ +} + +EOLIAN static void +_elm_web_none_elm_web_dialog_prompt_hook_set(Eo *obj EINA_UNUSED, Elm_Web_None_Data *sd EINA_UNUSED, Elm_Web_Dialog_Prompt func EINA_UNUSED, void *data EINA_UNUSED) +{ +} + +EOLIAN static void +_elm_web_none_elm_web_dialog_file_selector_hook_set(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED, Elm_Web_Dialog_File_Selector func EINA_UNUSED, void *data EINA_UNUSED) +{ +} + +EOLIAN static void +_elm_web_none_elm_web_console_message_hook_set(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED, Elm_Web_Console_Message func EINA_UNUSED, void *data EINA_UNUSED) +{ +} + +EOLIAN static void +_elm_web_none_elm_web_useragent_set(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED, const char *user_agent EINA_UNUSED) +{ +} + +EOLIAN static const char* +_elm_web_none_elm_web_useragent_get(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + return NULL; +} + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_url_set(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED, const char *url EINA_UNUSED) +{ + return EINA_FALSE; +} + +EOLIAN static const char* +_elm_web_none_elm_web_url_get(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + return NULL; +} + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_html_string_load(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED, const char *html EINA_UNUSED, const char *base_url EINA_UNUSED, const char *unreachable_url EINA_UNUSED) +{ + return EINA_FALSE; +} + +EOLIAN static const char* +_elm_web_none_elm_web_title_get(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + return NULL; +} + +EOLIAN static void +_elm_web_none_elm_web_bg_color_set(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED, int r EINA_UNUSED, int g EINA_UNUSED, int b EINA_UNUSED, int a EINA_UNUSED) +{ +} + +EOLIAN static void +_elm_web_none_elm_web_bg_color_get(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED, int *r, int *g, int *b, int *a) +{ + if (r) *r = 0; + if (g) *g = 0; + if (b) *b = 0; + if (a) *a = 0; +} + +EOLIAN static const char* +_elm_web_none_elm_web_selection_get(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + return NULL; +} + +EOLIAN static void +_elm_web_none_elm_web_popup_selected_set(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED, int idx EINA_UNUSED) +{ +} + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_popup_destroy(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + return EINA_FALSE; +} + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_text_search(const Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED, const char *string EINA_UNUSED, Eina_Bool case_sensitive EINA_UNUSED, Eina_Bool forward EINA_UNUSED, Eina_Bool wrap EINA_UNUSED) +{ + return EINA_FALSE; +} + +EOLIAN static unsigned int +_elm_web_none_elm_web_text_matches_mark(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED, const char *string EINA_UNUSED, Eina_Bool case_sensitive EINA_UNUSED, Eina_Bool highlight EINA_UNUSED, unsigned int limit EINA_UNUSED) +{ + return 0; +} + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_text_matches_unmark_all(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + return EINA_FALSE; +} + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_text_matches_highlight_set(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED, Eina_Bool highlight EINA_UNUSED) +{ + return EINA_FALSE; +} + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_text_matches_highlight_get(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + return EINA_FALSE; +} + +EOLIAN static double +_elm_web_none_elm_web_load_progress_get(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + return -1.0; +} + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_stop(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + return EINA_FALSE; +} + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_reload(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + return EINA_FALSE; +} + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_reload_full(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + return EINA_FALSE; +} + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_back(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + return EINA_FALSE; +} + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_forward(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + return EINA_FALSE; +} + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_navigate(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED, int steps EINA_UNUSED) +{ + return EINA_FALSE; +} + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_back_possible_get(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + return EINA_FALSE; +} + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_forward_possible_get(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + return EINA_FALSE; +} + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_navigate_possible_get(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED, int steps EINA_UNUSED) +{ + return EINA_FALSE; +} + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_history_enabled_get(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + return EINA_FALSE; +} + +EOLIAN static void +_elm_web_none_elm_web_history_enabled_set(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED, Eina_Bool enable EINA_UNUSED) +{ +} + +EOLIAN static void +_elm_web_none_elm_web_zoom_set(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED, double zoom EINA_UNUSED) +{ +} + +EOLIAN static double +_elm_web_none_elm_web_zoom_get(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + return -1; +} + +EOLIAN static void +_elm_web_none_elm_web_zoom_mode_set(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED, Elm_Web_Zoom_Mode mode EINA_UNUSED) +{ +} + +EOLIAN static Elm_Web_Zoom_Mode +_elm_web_none_elm_web_zoom_mode_get(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED) +{ + return ELM_WEB_ZOOM_MODE_LAST; +} + +EOLIAN static void +_elm_web_none_elm_web_region_show(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED, int w EINA_UNUSED, int h EINA_UNUSED) +{ +} + +EOLIAN static void +_elm_web_none_elm_web_region_bring_in(Eo *obj EINA_UNUSED, Elm_Web_None_Data *_pd EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED, int w EINA_UNUSED, int h EINA_UNUSED) +{ +} + +EOLIAN static void +_elm_web_none_elm_web_inwin_mode_set(Eo *obj EINA_UNUSED, Elm_Web_None_Data *sd EINA_UNUSED, Eina_Bool value EINA_UNUSED) +{ +} + +EOLIAN static Eina_Bool +_elm_web_none_elm_web_inwin_mode_get(Eo *obj EINA_UNUSED, Elm_Web_None_Data *sd EINA_UNUSED) +{ + return EINA_FALSE; +} + +EAPI void +ewm_window_features_ref(Elm_Web_Window_Features *wf EINA_UNUSED) +{ +} + +EAPI void +ewm_window_features_unref(Elm_Web_Window_Features *wf EINA_UNUSED) +{ +} + +EAPI Eina_Bool +ewm_window_features_property_get(const Elm_Web_Window_Features *wf EINA_UNUSED, + Elm_Web_Window_Feature_Flag flag EINA_UNUSED) +{ + return EINA_FALSE; +} + +EAPI void +ewm_window_features_region_get(const Elm_Web_Window_Features *wf EINA_UNUSED, + Evas_Coord *x, + Evas_Coord *y, + Evas_Coord *w, + Evas_Coord *h) +{ + if (x) *x = 0; + if (y) *y = 0; + if (w) *w = 0; + if (h) *h = 0; +} + +EAPI void +ewm_unneed_web(void) +{ +} + +EAPI Eina_Bool +ewm_need_web(void) +{ + return EINA_TRUE; +} + +EAPI const Eo_Class * +ewm_class_get(void) +{ + return elm_web_none_class_get(); +} + +#include "elm_web_none.eo.c" diff --git a/src/modules/web/none/elm_web_none.eo b/src/modules/web/none/elm_web_none.eo new file mode 100644 index 0000000..5056650 --- /dev/null +++ b/src/modules/web/none/elm_web_none.eo @@ -0,0 +1,54 @@ +class Elm.Web.None (Elm.Web) +{ + implements { + Evas.Object_Smart.add; + Elm.Widget.theme_apply; + Elm.Widget.on_focus; + Elm.Widget.event; + Elm.Web.tab_propagate.get; + Elm.Web.tab_propagate.set; + Elm.Web.webkit_view.get; + Elm.Web.window_create_hook.set; + Elm.Web.dialog_alert_hook.set; + Elm.Web.dialog_confirm_hook.set; + Elm.Web.dialog_prompt_hook.set; + Elm.Web.dialog_file_selector_hook.set; + Elm.Web.console_message_hook.set; + Elm.Web.useragent.set; + Elm.Web.useragent.get; + Elm.Web.url.set; + Elm.Web.url.get; + Elm.Web.html_string_load; + Elm.Web.title.get; + Elm.Web.bg_color.set; + Elm.Web.bg_color.get; + Elm.Web.selection.get; + Elm.Web.popup_selected.set; + Elm.Web.popup_destroy; + Elm.Web.text_search; + Elm.Web.text_matches_mark; + Elm.Web.text_matches_unmark_all; + Elm.Web.text_matches_highlight.set; + Elm.Web.text_matches_highlight.get; + Elm.Web.load_progress.get; + Elm.Web.stop; + Elm.Web.reload; + Elm.Web.reload_full; + Elm.Web.back; + Elm.Web.forward; + Elm.Web.navigate; + Elm.Web.back_possible.get; + Elm.Web.forward_possible.get; + Elm.Web.navigate_possible_get; + Elm.Web.history_enabled.get; + Elm.Web.history_enabled.set; + Elm.Web.zoom.set; + Elm.Web.zoom.get; + Elm.Web.zoom_mode.set; + Elm.Web.zoom_mode.get; + Elm.Web.region_show; + Elm.Web.region_bring_in; + Elm.Web.inwin_mode.set; + Elm.Web.inwin_mode.get; + } +} diff --git a/src/modules/web/none/elm_web_none.eo.c b/src/modules/web/none/elm_web_none.eo.c new file mode 100644 index 0000000..723bf57 --- /dev/null +++ b/src/modules/web/none/elm_web_none.eo.c @@ -0,0 +1,212 @@ + +void _elm_web_none_evas_object_smart_add(Eo *obj, Elm_Web_None_Data *pd); + + +Eina_Bool _elm_web_none_elm_widget_theme_apply(Eo *obj, Elm_Web_None_Data *pd); + + +Eina_Bool _elm_web_none_elm_widget_on_focus(Eo *obj, Elm_Web_None_Data *pd, Elm_Widget_Item *item); + + +Eina_Bool _elm_web_none_elm_widget_event(Eo *obj, Elm_Web_None_Data *pd, Evas_Object *source, Evas_Callback_Type type, void *event_info); + + +Eina_Bool _elm_web_none_elm_web_tab_propagate_get(Eo *obj, Elm_Web_None_Data *pd); + + +void _elm_web_none_elm_web_tab_propagate_set(Eo *obj, Elm_Web_None_Data *pd, Eina_Bool propagate); + + +Evas_Object * _elm_web_none_elm_web_webkit_view_get(Eo *obj, Elm_Web_None_Data *pd); + + +void _elm_web_none_elm_web_window_create_hook_set(Eo *obj, Elm_Web_None_Data *pd, Elm_Web_Window_Open func, void *data); + + +void _elm_web_none_elm_web_dialog_alert_hook_set(Eo *obj, Elm_Web_None_Data *pd, Elm_Web_Dialog_Alert func, void *data); + + +void _elm_web_none_elm_web_dialog_confirm_hook_set(Eo *obj, Elm_Web_None_Data *pd, Elm_Web_Dialog_Confirm func, void *data); + + +void _elm_web_none_elm_web_dialog_prompt_hook_set(Eo *obj, Elm_Web_None_Data *pd, Elm_Web_Dialog_Prompt func, void *data); + + +void _elm_web_none_elm_web_dialog_file_selector_hook_set(Eo *obj, Elm_Web_None_Data *pd, Elm_Web_Dialog_File_Selector func, void *data); + + +void _elm_web_none_elm_web_console_message_hook_set(Eo *obj, Elm_Web_None_Data *pd, Elm_Web_Console_Message func, void *data); + + +void _elm_web_none_elm_web_useragent_set(Eo *obj, Elm_Web_None_Data *pd, const char *user_agent); + + +const char * _elm_web_none_elm_web_useragent_get(Eo *obj, Elm_Web_None_Data *pd); + + +Eina_Bool _elm_web_none_elm_web_url_set(Eo *obj, Elm_Web_None_Data *pd, const char *url); + + +const char * _elm_web_none_elm_web_url_get(Eo *obj, Elm_Web_None_Data *pd); + + +Eina_Bool _elm_web_none_elm_web_html_string_load(Eo *obj, Elm_Web_None_Data *pd, const char *html, const char *base_url, const char *unreachable_url); + + +const char * _elm_web_none_elm_web_title_get(Eo *obj, Elm_Web_None_Data *pd); + + +void _elm_web_none_elm_web_bg_color_set(Eo *obj, Elm_Web_None_Data *pd, int r, int g, int b, int a); + + +void _elm_web_none_elm_web_bg_color_get(Eo *obj, Elm_Web_None_Data *pd, int *r, int *g, int *b, int *a); + + +const char * _elm_web_none_elm_web_selection_get(Eo *obj, Elm_Web_None_Data *pd); + + +void _elm_web_none_elm_web_popup_selected_set(Eo *obj, Elm_Web_None_Data *pd, int idx); + + +Eina_Bool _elm_web_none_elm_web_popup_destroy(Eo *obj, Elm_Web_None_Data *pd); + + +Eina_Bool _elm_web_none_elm_web_text_search(const Eo *obj, Elm_Web_None_Data *pd, const char *string, Eina_Bool case_sensitive, Eina_Bool forward, Eina_Bool wrap); + + +unsigned int _elm_web_none_elm_web_text_matches_mark(Eo *obj, Elm_Web_None_Data *pd, const char *string, Eina_Bool case_sensitive, Eina_Bool highlight, unsigned int limit); + + +Eina_Bool _elm_web_none_elm_web_text_matches_unmark_all(Eo *obj, Elm_Web_None_Data *pd); + + +Eina_Bool _elm_web_none_elm_web_text_matches_highlight_set(Eo *obj, Elm_Web_None_Data *pd, Eina_Bool highlight); + + +Eina_Bool _elm_web_none_elm_web_text_matches_highlight_get(Eo *obj, Elm_Web_None_Data *pd); + + +double _elm_web_none_elm_web_load_progress_get(Eo *obj, Elm_Web_None_Data *pd); + + +Eina_Bool _elm_web_none_elm_web_stop(Eo *obj, Elm_Web_None_Data *pd); + + +Eina_Bool _elm_web_none_elm_web_reload(Eo *obj, Elm_Web_None_Data *pd); + + +Eina_Bool _elm_web_none_elm_web_reload_full(Eo *obj, Elm_Web_None_Data *pd); + + +Eina_Bool _elm_web_none_elm_web_back(Eo *obj, Elm_Web_None_Data *pd); + + +Eina_Bool _elm_web_none_elm_web_forward(Eo *obj, Elm_Web_None_Data *pd); + + +Eina_Bool _elm_web_none_elm_web_navigate(Eo *obj, Elm_Web_None_Data *pd, int steps); + + +Eina_Bool _elm_web_none_elm_web_back_possible_get(Eo *obj, Elm_Web_None_Data *pd); + + +Eina_Bool _elm_web_none_elm_web_forward_possible_get(Eo *obj, Elm_Web_None_Data *pd); + + +Eina_Bool _elm_web_none_elm_web_navigate_possible_get(Eo *obj, Elm_Web_None_Data *pd, int steps); + + +Eina_Bool _elm_web_none_elm_web_history_enabled_get(Eo *obj, Elm_Web_None_Data *pd); + + +void _elm_web_none_elm_web_history_enabled_set(Eo *obj, Elm_Web_None_Data *pd, Eina_Bool enable); + + +void _elm_web_none_elm_web_zoom_set(Eo *obj, Elm_Web_None_Data *pd, double zoom); + + +double _elm_web_none_elm_web_zoom_get(Eo *obj, Elm_Web_None_Data *pd); + + +void _elm_web_none_elm_web_zoom_mode_set(Eo *obj, Elm_Web_None_Data *pd, Elm_Web_Zoom_Mode mode); + + +Elm_Web_Zoom_Mode _elm_web_none_elm_web_zoom_mode_get(Eo *obj, Elm_Web_None_Data *pd); + + +void _elm_web_none_elm_web_region_show(Eo *obj, Elm_Web_None_Data *pd, int x, int y, int w, int h); + + +void _elm_web_none_elm_web_region_bring_in(Eo *obj, Elm_Web_None_Data *pd, int x, int y, int w, int h); + + +void _elm_web_none_elm_web_inwin_mode_set(Eo *obj, Elm_Web_None_Data *pd, Eina_Bool value); + + +Eina_Bool _elm_web_none_elm_web_inwin_mode_get(Eo *obj, Elm_Web_None_Data *pd); + + +static const Eo_Op_Description _elm_web_none_op_desc[] = { + EO_OP_FUNC_OVERRIDE(evas_obj_smart_add, _elm_web_none_evas_object_smart_add), + EO_OP_FUNC_OVERRIDE(elm_obj_widget_theme_apply, _elm_web_none_elm_widget_theme_apply), + EO_OP_FUNC_OVERRIDE(elm_obj_widget_on_focus, _elm_web_none_elm_widget_on_focus), + EO_OP_FUNC_OVERRIDE(elm_obj_widget_event, _elm_web_none_elm_widget_event), + EO_OP_FUNC_OVERRIDE(elm_obj_web_tab_propagate_get, _elm_web_none_elm_web_tab_propagate_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_tab_propagate_set, _elm_web_none_elm_web_tab_propagate_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_webkit_view_get, _elm_web_none_elm_web_webkit_view_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_window_create_hook_set, _elm_web_none_elm_web_window_create_hook_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_dialog_alert_hook_set, _elm_web_none_elm_web_dialog_alert_hook_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_dialog_confirm_hook_set, _elm_web_none_elm_web_dialog_confirm_hook_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_dialog_prompt_hook_set, _elm_web_none_elm_web_dialog_prompt_hook_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_dialog_file_selector_hook_set, _elm_web_none_elm_web_dialog_file_selector_hook_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_console_message_hook_set, _elm_web_none_elm_web_console_message_hook_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_useragent_set, _elm_web_none_elm_web_useragent_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_useragent_get, _elm_web_none_elm_web_useragent_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_url_set, _elm_web_none_elm_web_url_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_url_get, _elm_web_none_elm_web_url_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_html_string_load, _elm_web_none_elm_web_html_string_load), + EO_OP_FUNC_OVERRIDE(elm_obj_web_title_get, _elm_web_none_elm_web_title_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_bg_color_set, _elm_web_none_elm_web_bg_color_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_bg_color_get, _elm_web_none_elm_web_bg_color_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_selection_get, _elm_web_none_elm_web_selection_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_popup_selected_set, _elm_web_none_elm_web_popup_selected_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_popup_destroy, _elm_web_none_elm_web_popup_destroy), + EO_OP_FUNC_OVERRIDE(elm_obj_web_text_search, _elm_web_none_elm_web_text_search), + EO_OP_FUNC_OVERRIDE(elm_obj_web_text_matches_mark, _elm_web_none_elm_web_text_matches_mark), + EO_OP_FUNC_OVERRIDE(elm_obj_web_text_matches_unmark_all, _elm_web_none_elm_web_text_matches_unmark_all), + EO_OP_FUNC_OVERRIDE(elm_obj_web_text_matches_highlight_set, _elm_web_none_elm_web_text_matches_highlight_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_text_matches_highlight_get, _elm_web_none_elm_web_text_matches_highlight_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_load_progress_get, _elm_web_none_elm_web_load_progress_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_stop, _elm_web_none_elm_web_stop), + EO_OP_FUNC_OVERRIDE(elm_obj_web_reload, _elm_web_none_elm_web_reload), + EO_OP_FUNC_OVERRIDE(elm_obj_web_reload_full, _elm_web_none_elm_web_reload_full), + EO_OP_FUNC_OVERRIDE(elm_obj_web_back, _elm_web_none_elm_web_back), + EO_OP_FUNC_OVERRIDE(elm_obj_web_forward, _elm_web_none_elm_web_forward), + EO_OP_FUNC_OVERRIDE(elm_obj_web_navigate, _elm_web_none_elm_web_navigate), + EO_OP_FUNC_OVERRIDE(elm_obj_web_back_possible_get, _elm_web_none_elm_web_back_possible_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_forward_possible_get, _elm_web_none_elm_web_forward_possible_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_navigate_possible_get, _elm_web_none_elm_web_navigate_possible_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_history_enabled_get, _elm_web_none_elm_web_history_enabled_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_history_enabled_set, _elm_web_none_elm_web_history_enabled_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_zoom_set, _elm_web_none_elm_web_zoom_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_zoom_get, _elm_web_none_elm_web_zoom_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_zoom_mode_set, _elm_web_none_elm_web_zoom_mode_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_zoom_mode_get, _elm_web_none_elm_web_zoom_mode_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_region_show, _elm_web_none_elm_web_region_show), + EO_OP_FUNC_OVERRIDE(elm_obj_web_region_bring_in, _elm_web_none_elm_web_region_bring_in), + EO_OP_FUNC_OVERRIDE(elm_obj_web_inwin_mode_set, _elm_web_none_elm_web_inwin_mode_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_inwin_mode_get, _elm_web_none_elm_web_inwin_mode_get), +}; + +static const Eo_Class_Description _elm_web_none_class_desc = { + EO_VERSION, + "Elm_Web_None", + EO_CLASS_TYPE_REGULAR, + EO_CLASS_DESCRIPTION_OPS(_elm_web_none_op_desc), + NULL, + sizeof(Elm_Web_None_Data), + NULL, + NULL +}; + +EO_DEFINE_CLASS(elm_web_none_class_get, &_elm_web_none_class_desc, ELM_WEB_CLASS, NULL); \ No newline at end of file diff --git a/src/modules/web/none/elm_web_none.eo.h b/src/modules/web/none/elm_web_none.eo.h new file mode 100644 index 0000000..2ae7b0d --- /dev/null +++ b/src/modules/web/none/elm_web_none.eo.h @@ -0,0 +1,21 @@ +#ifndef _ELM_WEB_NONE_EO_H_ +#define _ELM_WEB_NONE_EO_H_ + +#ifndef _ELM_WEB_NONE_EO_CLASS_TYPE +#define _ELM_WEB_NONE_EO_CLASS_TYPE + +typedef Eo Elm_Web_None; + +#endif + +#ifndef _ELM_WEB_NONE_EO_TYPES +#define _ELM_WEB_NONE_EO_TYPES + + +#endif +#define ELM_WEB_NONE_CLASS elm_web_none_class_get() + +EAPI const Eo_Class *elm_web_none_class_get(void); + + +#endif diff --git a/src/modules/web/webkit2/Makefile.am b/src/modules/web/webkit2/Makefile.am new file mode 100644 index 0000000..d34cdcd --- /dev/null +++ b/src/modules/web/webkit2/Makefile.am @@ -0,0 +1,42 @@ +AUTOMAKE_OPTIONS = 1.4 foreign +MAINTAINERCLEANFILES = Makefile.in + +CLEANFILES = + +EOLIAN_FLAGS = @DEPS_EOLIAN_FLAGS@ \ + -I$(top_srcdir)/src/lib + +include $(top_srcdir)/Makefile_Eolian_Helper.am + +AM_CPPFLAGS = \ +-DELM_INTERNAL_API_ARGESFSDFEFC=1 \ +-DMODULES_PATH=\"$(pkglibdir)/modules\" \ +-I. \ +-I$(top_builddir) \ +-I$(top_srcdir) \ +-I$(top_srcdir)/src/imported \ +-I$(top_srcdir)/src/lib \ +-I$(top_builddir)/src/lib \ +-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \ +-DLOCALE_DIR=\"$(localedir)\" \ +-DPACKAGE_LIB_DIR=\"$(libdir)\" \ +-DICON_DIR=\"$(datadir)/icons\" \ +-DELM_TOP_BUILD_DIR=\"$(top_builddir)\" \ +-DELEMENTARY_BUILD \ +@ELEMENTARY_CFLAGS@ \ +@EWEBKIT2_CFLAGS@ + +if HAVE_EWEBKIT2 +pkgdir = $(pkglibdir)/modules/web/webkit2/$(MODULE_ARCH) +pkg_LTLIBRARIES = module.la + +BUILT_SOURCES = elm_web_webkit2.eo.h elm_web_webkit2.eo.c + +module_la_SOURCES = elm_web_webkit2.c elm_web_webkit2.eo.h +module_la_LIBADD = @ELEMENTARY_LIBS@ $(top_builddir)/src/lib/libelementary.la @EWEBKIT2_LIBS@ +module_la_LDFLAGS = -module @EFL_LTMODULE_FLAGS@ +module_la_LIBTOOLFLAGS = --tag=disable-static +endif + +EXTRA_DIST = elm_web_webkit2.eo + diff --git a/src/lib/elm_web2.c b/src/modules/web/webkit2/elm_web_webkit2.c similarity index 62% copy from src/lib/elm_web2.c copy to src/modules/web/webkit2/elm_web_webkit2.c index f78c47d..a39ce71 100644 --- a/src/lib/elm_web2.c +++ b/src/modules/web/webkit2/elm_web_webkit2.c @@ -8,33 +8,131 @@ #include "elm_priv.h" #include "elm_widget_web.h" +#include "elm_web_webkit2.eo.h" -#if defined(HAVE_ELEMENTARY_WEB) #include <EWebKit2.h> -#endif -#define MY_CLASS ELM_WEB_CLASS +#define MY_CLASS ELM_WEB_WEBKIT2_CLASS + +#define MY_CLASS_NAME "Elm_Web_Webkit2" + +#define ELM_WEB_WEBKIT2_DATA_GET(o, sd) \ + Elm_Web_Webkit2_Data * sd = eo_data_scope_get(o, ELM_WEB_WEBKIT2_CLASS) + +#define ELM_WEB_WEBKIT2_DATA_GET_OR_RETURN(o, ptr) \ + ELM_WEB_WEBKIT2_DATA_GET(o, ptr); \ + if (EINA_UNLIKELY(!ptr)) \ + { \ + CRI("No widget data for object %p (%s)", \ + o, evas_object_type_get(o)); \ + return; \ + } + +#define ELM_WEB_WEBKIT2_DATA_GET_OR_RETURN_VAL(o, ptr, val) \ + ELM_WEB_WEBKIT2_DATA_GET(o, ptr); \ + if (EINA_UNLIKELY(!ptr)) \ + { \ + CRI("No widget data for object %p (%s)", \ + o, evas_object_type_get(o)); \ + return val; \ + } + +#define ELM_WEB_WEBKIT2_CHECK(obj) \ + if (EINA_UNLIKELY(!eo_isa((obj), ELM_WEB_WEBKIT2_CLASS))) \ + return + +typedef struct _Elm_Web_Webkit2_Data Elm_Web_Webkit2_Data; +struct _Elm_Web_Webkit2_Data +{ + struct + { + Elm_Web_Window_Open window_create; + void *window_create_data; + Elm_Web_Dialog_Alert alert; + void *alert_data; + Elm_Web_Dialog_Confirm confirm; + void *confirm_data; + Elm_Web_Dialog_Prompt prompt; + void *prompt_data; + Elm_Web_Dialog_File_Selector file_selector; + void *file_selector_data; + Elm_Web_Console_Message console_message; + void *console_message_data; + } hook; + + Elm_Win_Keyboard_Mode input_method; + + struct + { + Elm_Web_Zoom_Mode mode; + float current; + float min, max; + Eina_Bool no_anim; + Ecore_Timer *timer; + } zoom; + + struct + { + struct + { + int x, y; + } start, end; + Ecore_Animator *animator; + } bring_in; + + Eina_Bool tab_propagate : 1; + Eina_Bool inwin_mode : 1; +}; -#define MY_CLASS_NAME "Elm_Web" -#define MY_CLASS_NAME_LEGACY "elm_web" +typedef struct _View_Smart_Data View_Smart_Data; +struct _View_Smart_Data +{ + Ewk_View_Smart_Data base; + struct + { + Evas_Event_Mouse_Down event; + Evas_Coord x, y; + unsigned int move_count; + Ecore_Timer *longpress_timer; + Ecore_Animator *pan_anim; + } mouse; +}; + +enum Dialog_Type +{ + DIALOG_ALERT, + DIALOG_CONFIRM, + DIALOG_PROMPT, + DIALOG_FILE_SELECTOR +}; + +typedef struct _Dialog_Data Dialog_Data; +struct _Dialog_Data +{ + enum Dialog_Type type; + + Evas_Object *dialog; + Evas_Object *box; + Evas_Object *bt_ok, *bt_cancel; + Evas_Object *entry; + Evas_Object *file_sel; + + Eina_Bool *response; + const char **entry_value; + Eina_List **selected_files; +}; -#if defined(HAVE_ELEMENTARY_WEB) static Ewk_View_Smart_Class _ewk_view_parent_sc = EWK_VIEW_SMART_CLASS_INIT_NULL; -#endif -static const char SIG_URI_CHANGED[] = "uri,changed"; // deprecated, use "url,changed" instead. -static const char SIG_URL_CHANGED[] = "url,changed"; +static int _webkit2_log_dom = -1; -static const Evas_Smart_Cb_Description _elm_web_smart_callbacks[] = { - { SIG_URI_CHANGED, "s" }, - { SIG_URL_CHANGED, "s" }, - { SIG_WIDGET_FOCUSED, ""}, /**< handled by elm_widget */ - { SIG_WIDGET_UNFOCUSED, ""}, /**< handled by elm_widget */ - { NULL, NULL } -}; +#define CRI(...) EINA_LOG_DOM_CRIT(_webkit2_log_dom, __VA_ARGS__) +#define ERR(...) EINA_LOG_DOM_ERR(_webkit2_log_dom, __VA_ARGS__) +#define WRN(...) EINA_LOG_DOM_WARN(_webkit2_log_dom, __VA_ARGS__) +#define INF(...) EINA_LOG_DOM_INFO(_webkit2_log_dom, __VA_ARGS__) +#define DBG(...) EINA_LOG_DOM_DBG(_webkit2_log_dom, __VA_ARGS__) -#ifdef HAVE_ELEMENTARY_WEB static void _view_smart_add(Evas_Object *obj) { @@ -59,7 +157,7 @@ _view_smart_window_create(Ewk_View_Smart_Data *vsd, Evas_Object *new; Evas_Object *obj = evas_object_smart_parent_get(vsd->self); - ELM_WEB_DATA_GET_OR_RETURN_VAL(obj, sd, NULL); + ELM_WEB_WEBKIT2_DATA_GET_OR_RETURN_VAL(obj, sd, NULL); if (!sd->hook.window_create) return NULL; @@ -76,7 +174,7 @@ _view_smart_window_close(Ewk_View_Smart_Data *sd) { Evas_Object *obj = evas_object_smart_parent_get(sd->self); - ELM_WEB_CHECK(obj); + ELM_WEB_WEBKIT2_CHECK(obj); eo_event_callback_call(obj, ELM_WEB_EVENT_WINDOWS_CLOSE_REQUEST, NULL); } @@ -107,13 +205,10 @@ _popup_item_selected(void *data, } static Eina_Bool -_popup_dismiss_cb(void *data, - Eo *obj, - const Eo_Event_Description *desc EINA_UNUSED, - void *event_info EINA_UNUSED) +_popup_dismiss_cb(void *data, const Eo_Event *event) { ewk_popup_menu_close(data); - evas_object_del(obj); + evas_object_del(event->obj); return EINA_TRUE; } @@ -215,8 +310,7 @@ _view_smart_popup_menu_hide(Ewk_View_Smart_Data *sd) } static Eina_Bool -_fullscreen_accept(void *data, - Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED) +_fullscreen_accept(void *data, const Eo_Event *event EINA_UNUSED) { Evas_Object *ewk = data; evas_object_del(evas_object_data_get(ewk, "_fullscreen_permission_popup")); @@ -225,8 +319,7 @@ _fullscreen_accept(void *data, } static Eina_Bool -_fullscreen_deny(void *data, - Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED) +_fullscreen_deny(void *data, const Eo_Event *event EINA_UNUSED) { Evas_Object *ewk = data; ewk_view_fullscreen_exit(ewk); @@ -244,7 +337,7 @@ _view_smart_fullscreen_enter(Ewk_View_Smart_Data *sd, Ewk_Security_Origin *origi Evas_Object *obj = evas_object_smart_parent_get(sd->self); - ELM_WEB_CHECK(obj) EINA_FALSE; + ELM_WEB_WEBKIT2_CHECK(obj) EINA_FALSE; top = elm_widget_top_get(obj); elm_win_fullscreen_set(top, EINA_TRUE); @@ -280,7 +373,7 @@ _view_smart_fullscreen_exit(Ewk_View_Smart_Data *sd) { Evas_Object *obj = evas_object_smart_parent_get(sd->self); - ELM_WEB_CHECK(obj) EINA_FALSE; + ELM_WEB_WEBKIT2_CHECK(obj) EINA_FALSE; Evas_Object *top = elm_widget_top_get(obj); elm_win_fullscreen_set(top, EINA_FALSE); @@ -289,14 +382,13 @@ _view_smart_fullscreen_exit(Ewk_View_Smart_Data *sd) } static Eina_Bool -_bt_close(void *data, - Eo *obj, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED) +_bt_close(void *data, const Eo_Event *event) { Dialog_Data *d = data; if (d->type == DIALOG_ALERT) goto end; - *d->response = (obj == d->bt_ok); + *d->response = (event->obj == d->bt_ok); if (d->type == DIALOG_CONFIRM) goto end; if (d->type == DIALOG_PROMPT) @@ -409,7 +501,7 @@ _view_smart_run_javascript_alert(Ewk_View_Smart_Data *vsd, const char *message) Evas_Object *obj = evas_object_smart_parent_get(vsd->self); Evas_Object *dialog = NULL; - ELM_WEB_DATA_GET_OR_RETURN(obj, sd); + ELM_WEB_WEBKIT2_DATA_GET_OR_RETURN(obj, sd); if (sd->hook.alert) dialog = sd->hook.alert(sd->hook.alert_data, obj, message); @@ -447,7 +539,7 @@ _view_smart_run_javascript_confirm(Ewk_View_Smart_Data *vsd, const char *message Eina_Bool response = EINA_FALSE; Evas_Object *dialog = NULL; - ELM_WEB_DATA_GET_OR_RETURN_VAL(obj, sd, EINA_FALSE); + ELM_WEB_WEBKIT2_DATA_GET_OR_RETURN_VAL(obj, sd, EINA_FALSE); if (sd->hook.confirm) dialog = sd->hook.confirm(sd->hook.confirm_data, obj, message, &response); @@ -483,7 +575,7 @@ _view_smart_run_javascript_prompt(Ewk_View_Smart_Data *vsd, const char *message, char *value = NULL; const char *ret; - ELM_WEB_DATA_GET_OR_RETURN_VAL(obj, sd, EINA_FALSE); + ELM_WEB_WEBKIT2_DATA_GET_OR_RETURN_VAL(obj, sd, EINA_FALSE); if (sd->hook.prompt) dialog = sd->hook.prompt(sd->hook.prompt_data, obj, message, default_value, (const char**)&value, &response); @@ -583,11 +675,10 @@ _view_add(Evas_Object *parent) } static Eina_Bool -_view_smart_url_changed_cb(void *data, - Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, void *event_info EINA_UNUSED) +_view_smart_url_changed_cb(void *data, const Eo_Event *event) { - eo_event_callback_call(data, ELM_WEB_EVENT_URI_CHANGED, event_info); - eo_event_callback_call(data, ELM_WEB_EVENT_URL_CHANGED, event_info); + eo_event_callback_call(data, ELM_WEB_EVENT_URI_CHANGED, event->event_info); + eo_event_callback_call(data, ELM_WEB_EVENT_URL_CHANGED, event->event_info); return EINA_TRUE; } @@ -599,43 +690,9 @@ _view_smart_callback_proxy(Evas_Object *view, Evas_Object *parent) (view, ELM_WEB_EVENT_URL_CHANGED, _view_smart_url_changed_cb, parent); } -static Eina_Bool _elm_need_web = EINA_FALSE; -#endif - -void -_elm_unneed_web(void) -{ -#ifdef HAVE_ELEMENTARY_WEB - if (!_elm_need_web) return; - _elm_need_web = EINA_FALSE; - ewk_shutdown(); -#endif -} - -EAPI Eina_Bool -elm_need_web(void) -{ -#ifdef HAVE_ELEMENTARY_WEB - if (_elm_need_web) return EINA_TRUE; - _elm_need_web = EINA_TRUE; - ewk_init(); - return EINA_TRUE; -#else - return EINA_FALSE; -#endif -} - EOLIAN static Eina_Bool -_elm_web_elm_widget_theme_apply(Eo *obj, Elm_Web_Data *sd EINA_UNUSED) +_elm_web_webkit2_elm_widget_on_focus(Eo *obj, Elm_Web_Webkit2_Data *sd, Elm_Object_Item *item EINA_UNUSED) { - (void)obj; - return EINA_TRUE; -} - -EOLIAN static Eina_Bool -_elm_web_elm_widget_on_focus(Eo *obj, Elm_Web_Data *sd, Elm_Object_Item *item EINA_UNUSED) -{ -#ifdef HAVE_ELEMENTARY_WEB Evas_Object *top; ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_TRUE); @@ -656,52 +713,26 @@ _elm_web_elm_widget_on_focus(Eo *obj, Elm_Web_Data *sd, Elm_Object_Item *item EI evas_object_focus_set(wd->resize_obj, EINA_FALSE); if (top) elm_win_keyboard_mode_set(top, ELM_WIN_KEYBOARD_OFF); } -#else - (void)obj; - (void)sd; -#endif return EINA_TRUE; } EOLIAN static Eina_Bool -_elm_web_elm_widget_event(Eo *obj, Elm_Web_Data *sd, Evas_Object *src, Evas_Callback_Type type, void *event_info) +_elm_web_webkit2_elm_web_tab_propagate_get(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *sd) { - (void)obj; - (void)sd; - (void)src; - (void)type; - (void)event_info; - return EINA_FALSE; -} - -EOLIAN static Eina_Bool -_elm_web_tab_propagate_get(Eo *obj EINA_UNUSED, Elm_Web_Data *sd) -{ -#ifdef HAVE_ELEMENTARY_WEB return sd->tab_propagate; -#else - (void)sd; - return EINA_FALSE; -#endif } EOLIAN static void -_elm_web_tab_propagate_set(Eo *obj EINA_UNUSED, Elm_Web_Data *sd, Eina_Bool propagate) +_elm_web_webkit2_elm_web_tab_propagate_set(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *sd, Eina_Bool propagate) { -#ifdef HAVE_ELEMENTARY_WEB sd->tab_propagate = propagate; -#else - (void)propagate; - (void)sd; -#endif } EOLIAN static void -_elm_web_evas_object_smart_add(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_evas_object_smart_add(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { Evas_Object *resize_obj; -#ifdef HAVE_ELEMENTARY_WEB resize_obj = _view_add(obj); elm_widget_resize_object_set(obj, resize_obj, EINA_TRUE); @@ -713,722 +744,344 @@ _elm_web_evas_object_smart_add(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) _view_smart_callback_proxy(resize_obj, obj); elm_widget_can_focus_set(obj, EINA_TRUE); -#else - resize_obj = elm_label_add(obj); - elm_object_text_set(resize_obj, "WebKit not supported!"); - elm_widget_resize_object_set(obj, resize_obj, EINA_TRUE); - - evas_obj_smart_add(eo_super(obj, MY_CLASS)); - elm_widget_sub_object_parent_add(obj); -#endif } EOLIAN static void -_elm_web_evas_object_smart_del(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_evas_object_smart_del(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { evas_obj_smart_del(eo_super(obj, MY_CLASS)); } -EAPI Evas_Object * -elm_web_add(Evas_Object *parent) -{ - EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL); - Evas_Object *obj = NULL; - eo_add(&obj, MY_CLASS, parent); - return obj; -} - -EOLIAN static Eo * -_elm_web_eo_base_constructor(Eo *obj, Elm_Web_Data *sd) -{ - obj = eo_constructor(eo_super(obj, MY_CLASS)); - sd->obj = obj; - evas_obj_type_set(obj, MY_CLASS_NAME_LEGACY); - evas_obj_smart_callbacks_descriptions_set(obj, _elm_web_smart_callbacks); - elm_interface_atspi_accessible_role_set(obj, ELM_ATSPI_ROLE_HTML_CONTAINER); - - return obj; -} - EOLIAN static Evas_Object* -_elm_web_webkit_view_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_elm_web_webkit_view_get(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { -#ifdef HAVE_ELEMENTARY_WEB ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL); return wd->resize_obj; -#else - (void)obj; - ERR("Elementary not compiled with EWebKit support."); - return NULL; -#endif } EOLIAN static void -_elm_web_window_create_hook_set(Eo *obj EINA_UNUSED, Elm_Web_Data *sd, Elm_Web_Window_Open func, void *data) +_elm_web_webkit2_elm_web_window_create_hook_set(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *sd, Elm_Web_Window_Open func, void *data) { -#ifdef HAVE_ELEMENTARY_WEB sd->hook.window_create = func; sd->hook.window_create_data = data; -#else - (void)sd; - (void)func; - (void)data; -#endif } EOLIAN static void -_elm_web_dialog_alert_hook_set(Eo *obj EINA_UNUSED, Elm_Web_Data *sd, Elm_Web_Dialog_Alert func, void *data) +_elm_web_webkit2_elm_web_dialog_alert_hook_set(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *sd, Elm_Web_Dialog_Alert func, void *data) { -#ifdef HAVE_ELEMENTARY_WEB sd->hook.alert = func; sd->hook.alert_data = data; -#else - (void)func; - (void)data; - (void)sd; -#endif } EOLIAN static void -_elm_web_dialog_confirm_hook_set(Eo *obj EINA_UNUSED, Elm_Web_Data *sd, Elm_Web_Dialog_Confirm func, void *data) +_elm_web_webkit2_elm_web_dialog_confirm_hook_set(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *sd, Elm_Web_Dialog_Confirm func, void *data) { -#ifdef HAVE_ELEMENTARY_WEB sd->hook.confirm = func; sd->hook.confirm_data = data; -#else - (void)func; - (void)data; - (void)sd; -#endif } EOLIAN static void -_elm_web_dialog_prompt_hook_set(Eo *obj EINA_UNUSED, Elm_Web_Data *sd, Elm_Web_Dialog_Prompt func, void *data) +_elm_web_webkit2_elm_web_dialog_prompt_hook_set(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *sd, Elm_Web_Dialog_Prompt func, void *data) { -#ifdef HAVE_ELEMENTARY_WEB sd->hook.prompt = func; sd->hook.prompt_data = data; -#else - (void)func; - (void)data; - (void)sd; -#endif } EOLIAN static void -_elm_web_dialog_file_selector_hook_set(Eo *obj EINA_UNUSED, Elm_Web_Data *_pd EINA_UNUSED, Elm_Web_Dialog_File_Selector func, void *data) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)func; - (void)data; - (void)_pd; -#else - (void)func; - (void)data; - (void)_pd; -#endif +_elm_web_webkit2_elm_web_dialog_file_selector_hook_set(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *_pd EINA_UNUSED, Elm_Web_Dialog_File_Selector func EINA_UNUSED, void *data EINA_UNUSED) +{ } EOLIAN static void -_elm_web_console_message_hook_set(Eo *obj EINA_UNUSED, Elm_Web_Data *_pd EINA_UNUSED, Elm_Web_Console_Message func, void *data) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)func; - (void)data; - (void)_pd; -#else - (void)func; - (void)data; - (void)_pd; -#endif +_elm_web_webkit2_elm_web_console_message_hook_set(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *_pd EINA_UNUSED, Elm_Web_Console_Message func EINA_UNUSED, void *data EINA_UNUSED) +{ } EOLIAN static void -_elm_web_useragent_set(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, const char *user_agent) +_elm_web_webkit2_elm_web_useragent_set(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED, const char *user_agent) { -#ifdef HAVE_ELEMENTARY_WEB ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); ewk_view_user_agent_set(wd->resize_obj, user_agent); -#else - (void)user_agent; - (void)obj; -#endif } EOLIAN static const char* -_elm_web_useragent_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_elm_web_useragent_get(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { -#ifdef HAVE_ELEMENTARY_WEB ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL); return ewk_view_user_agent_get(wd->resize_obj); -#else - (void)obj; - return NULL; -#endif -} - -EAPI Eina_Bool -elm_web_uri_set(Evas_Object *obj, const char *url) -{ - ELM_WEB_CHECK(obj) EINA_FALSE; - Eina_Bool ret = EINA_FALSE; - ret = elm_obj_web_url_set(obj, url); - return ret; -} - -EAPI const char * -elm_web_uri_get(const Evas_Object *obj) -{ - const char *ret = NULL; - ret = elm_obj_web_url_get((Eo *) obj); - return ret; } EOLIAN static Eina_Bool -_elm_web_url_set(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, const char *url) +_elm_web_webkit2_elm_web_url_set(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED, const char *url) { -#ifdef HAVE_ELEMENTARY_WEB ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); return ewk_view_url_set(wd->resize_obj, url); -#else - (void)url; - (void)obj; - return EINA_FALSE; -#endif } EOLIAN static const char* -_elm_web_url_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_elm_web_url_get(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { -#ifdef HAVE_ELEMENTARY_WEB ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL); return ewk_view_url_get(wd->resize_obj); -#else - (void)obj; - return NULL; -#endif } EOLIAN static Eina_Bool -_elm_web_html_string_load(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, const char *html, const char *base_url, const char *unreachable_url) +_elm_web_webkit2_elm_web_html_string_load(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED, const char *html, const char *base_url, const char *unreachable_url) { -#ifdef HAVE_ELEMENTARY_WEB ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); return ewk_view_html_string_load(wd->resize_obj, html, base_url, unreachable_url); -#else - (void)obj; - (void)html; - (void)base_url; - (void)unreachable_url; - return EINA_FALSE; -#endif } EOLIAN static const char* -_elm_web_title_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_elm_web_title_get(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { -#ifdef HAVE_ELEMENTARY_WEB ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL); return ewk_view_title_get(wd->resize_obj); -#else - (void)obj; - return NULL; -#endif } EOLIAN static void -_elm_web_bg_color_set(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, int r, int g, int b, int a) +_elm_web_webkit2_elm_web_bg_color_set(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED, int r, int g, int b, int a) { -#ifdef HAVE_ELEMENTARY_WEB ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); ewk_view_bg_color_set(wd->resize_obj, r, g, b, a); -#else - (void)obj; - (void)r; - (void)g; - (void)b; - (void)a; -#endif } EOLIAN static void -_elm_web_bg_color_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, int *r, int *g, int *b, int *a) +_elm_web_webkit2_elm_web_bg_color_get(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED, int *r, int *g, int *b, int *a) { if (r) *r = 0; if (g) *g = 0; if (b) *b = 0; if (a) *a = 0; -#ifdef HAVE_ELEMENTARY_WEB ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); ewk_view_bg_color_get(wd->resize_obj, r, g, b, a); -#else - (void)obj; -#endif } EOLIAN static const char* -_elm_web_selection_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_elm_web_selection_get(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { -#ifdef HAVE_ELEMENTARY_WEB - (void)obj; return NULL; -#else - (void)obj; - return NULL; -#endif } EOLIAN static void -_elm_web_popup_selected_set(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, int idx) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)idx; - (void)obj; -#else - (void)idx; - (void)obj; -#endif +_elm_web_webkit2_elm_web_popup_selected_set(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *_pd EINA_UNUSED, int idx EINA_UNUSED) +{ } EOLIAN static Eina_Bool -_elm_web_popup_destroy(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_elm_web_popup_destroy(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { -#ifdef HAVE_ELEMENTARY_WEB - (void)obj; -#else - (void)obj; -#endif - return EINA_FALSE; } EOLIAN static Eina_Bool -_elm_web_text_search(const Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, const char *string, Eina_Bool case_sensitive, Eina_Bool forward, Eina_Bool wrap) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)string; - (void)case_sensitive; - (void)forward; - (void)wrap; - (void)obj; -#else - (void)string; - (void)case_sensitive; - (void)forward; - (void)wrap; - (void)obj; -#endif - +_elm_web_webkit2_elm_web_text_search(const Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *_pd EINA_UNUSED, const char *string EINA_UNUSED, Eina_Bool case_sensitive EINA_UNUSED, Eina_Bool forward EINA_UNUSED, Eina_Bool wrap EINA_UNUSED) +{ return EINA_FALSE; } EOLIAN static unsigned int -_elm_web_text_matches_mark(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, const char *string, Eina_Bool case_sensitive, Eina_Bool highlight, unsigned int limit) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)string; - (void)case_sensitive; - (void)highlight; - (void)limit; - (void)obj; -#else - (void)string; - (void)case_sensitive; - (void)highlight; - (void)limit; - (void)obj; -#endif - +_elm_web_webkit2_elm_web_text_matches_mark(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *_pd EINA_UNUSED, const char *string EINA_UNUSED, Eina_Bool case_sensitive EINA_UNUSED, Eina_Bool highlight EINA_UNUSED, unsigned int limit EINA_UNUSED) +{ return 0; } EOLIAN static Eina_Bool -_elm_web_text_matches_unmark_all(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_elm_web_text_matches_unmark_all(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { -#ifdef HAVE_ELEMENTARY_WEB - (void)obj; -#else - (void)obj; -#endif - return EINA_FALSE; } EOLIAN static Eina_Bool -_elm_web_text_matches_highlight_set(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, Eina_Bool highlight) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)obj; - (void)highlight; -#else - (void)obj; - (void)highlight; -#endif - +_elm_web_webkit2_elm_web_text_matches_highlight_set(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *_pd EINA_UNUSED, Eina_Bool highlight EINA_UNUSED) +{ return EINA_FALSE; } EOLIAN static Eina_Bool -_elm_web_text_matches_highlight_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_elm_web_text_matches_highlight_get(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { -#ifdef HAVE_ELEMENTARY_WEB - (void)obj; -#else - (void)obj; -#endif - return EINA_FALSE; } EOLIAN static double -_elm_web_load_progress_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_elm_web_load_progress_get(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { - double ret; - ret = -1.0; + ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, -1.0); -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ret); - - ret = ewk_view_load_progress_get(wd->resize_obj); -#else - (void)obj; -#endif - - return ret; + return ewk_view_load_progress_get(wd->resize_obj); } EOLIAN static Eina_Bool -_elm_web_stop(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_elm_web_stop(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { - Eina_Bool ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ret); - - ret = ewk_view_stop(wd->resize_obj); -#else - (void)obj; -#endif + ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); - return ret; + return ewk_view_stop(wd->resize_obj); } EOLIAN static Eina_Bool -_elm_web_reload(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_elm_web_reload(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { - Eina_Bool ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ret); - - ret = ewk_view_reload(wd->resize_obj); -#else - (void)obj; -#endif + ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); - return ret; + return ewk_view_reload(wd->resize_obj); } EOLIAN static Eina_Bool -_elm_web_reload_full(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_elm_web_reload_full(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { - Eina_Bool ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ret); - - ret = ewk_view_reload_bypass_cache(wd->resize_obj); -#else - (void)obj; -#endif + ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); - return ret; + return ewk_view_reload_bypass_cache(wd->resize_obj); } EOLIAN static Eina_Bool -_elm_web_back(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_elm_web_back(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { - Eina_Bool ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ret); - - ret = ewk_view_back(wd->resize_obj); -#else - (void)obj; -#endif + ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); - return ret; + return ewk_view_back(wd->resize_obj); } EOLIAN static Eina_Bool -_elm_web_forward(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_elm_web_forward(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { - Eina_Bool ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); - ret = ewk_view_forward(wd->resize_obj); -#else - (void)obj; -#endif - - return ret; + return ewk_view_forward(wd->resize_obj); } EOLIAN static Eina_Bool -_elm_web_navigate(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, int steps) +_elm_web_webkit2_elm_web_navigate(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED, int steps) { - Eina_Bool ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB Ewk_Back_Forward_List *history; Ewk_Back_Forward_List_Item *item = NULL; - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ret); + + ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); history = ewk_view_back_forward_list_get(wd->resize_obj); if (history) { item = ewk_back_forward_list_item_at_index_get(history, steps); - if (item) ret = ewk_view_navigate_to(wd->resize_obj, item); + if (item) return ewk_view_navigate_to(wd->resize_obj, item); } -#else - (void)steps; - (void)obj; -#endif - return ret; + return EINA_FALSE; } EOLIAN static Eina_Bool -_elm_web_back_possible_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_elm_web_back_possible_get(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { - Eina_Bool ret; - ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ret); - - ret = ewk_view_back_possible(wd->resize_obj); -#else - (void)obj; -#endif + ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); - return ret; + return ewk_view_back_possible(wd->resize_obj); } EOLIAN static Eina_Bool -_elm_web_forward_possible_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_elm_web_forward_possible_get(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { - Eina_Bool ret; - ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ret); - - ret = ewk_view_forward_possible(wd->resize_obj); -#else - (void)obj; -#endif + ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); - return ret; + return ewk_view_forward_possible(wd->resize_obj); } EOLIAN static Eina_Bool -_elm_web_navigate_possible_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, int steps) +_elm_web_webkit2_elm_web_navigate_possible_get(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED, int steps) { - Eina_Bool ret; - ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB Ewk_Back_Forward_List *history; - ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, ret); + + ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, EINA_FALSE); history = ewk_view_back_forward_list_get(wd->resize_obj); if (history && ewk_back_forward_list_item_at_index_get(history, steps)) - ret = EINA_TRUE; -#else - (void)steps; - (void)obj; -#endif - - return ret; + return EINA_TRUE; + return EINA_FALSE; } EOLIAN static Eina_Bool -_elm_web_history_enabled_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_elm_web_history_enabled_get(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { - Eina_Bool ret; - ret = EINA_FALSE; - -#ifdef HAVE_ELEMENTARY_WEB - (void)obj; -#else - (void)obj; -#endif - - return ret; + return EINA_FALSE; } EOLIAN static void -_elm_web_history_enabled_set(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, Eina_Bool enable) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)enable; - (void)obj; -#else - (void)enable; - (void)obj; -#endif +_elm_web_webkit2_elm_web_history_enabled_set(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *_pd EINA_UNUSED, Eina_Bool enable EINA_UNUSED) +{ } EOLIAN static void -_elm_web_zoom_set(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, double zoom) +_elm_web_webkit2_elm_web_zoom_set(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED, double zoom) { -#ifdef HAVE_ELEMENTARY_WEB ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); ewk_view_page_zoom_set(wd->resize_obj, zoom); -#else - (void)obj; - (void)zoom; -#endif } EOLIAN static double -_elm_web_zoom_get(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED) +_elm_web_webkit2_elm_web_zoom_get(Eo *obj, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) { -#ifdef HAVE_ELEMENTARY_WEB ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, -1); return ewk_view_page_zoom_get(wd->resize_obj); -#else - (void)obj; - return -1; -#endif } EOLIAN static void -_elm_web_zoom_mode_set(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, Elm_Web_Zoom_Mode mode) -{ -#ifdef HAVE_ELEMENTARY_WEB - (void)obj; - (void)_pd; - (void)mode; -#else - (void)obj; - (void)_pd; - (void)mode; -#endif +_elm_web_webkit2_elm_web_zoom_mode_set(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *_pd EINA_UNUSED, Elm_Web_Zoom_Mode mode EINA_UNUSED) +{ } EOLIAN static Elm_Web_Zoom_Mode -_elm_web_zoom_mode_get(Eo *obj EINA_UNUSED, Elm_Web_Data *_pd EINA_UNUSED) -{ - Elm_Web_Zoom_Mode ret; - ret = ELM_WEB_ZOOM_MODE_LAST; -#ifdef HAVE_ELEMENTARY_WEB - (void)_pd; -#else - (void)_pd; -#endif - - return ret; +_elm_web_webkit2_elm_web_zoom_mode_get(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *_pd EINA_UNUSED) +{ + return ELM_WEB_ZOOM_MODE_LAST; } EOLIAN static void -_elm_web_region_show(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, int x, int y, int w, int h) -{ - (void)w; - (void)h; - -#ifdef HAVE_ELEMENTARY_WEB - (void)obj; - (void)_pd; - (void)x; - (void)y; -#else - (void)obj; - (void)_pd; - (void)x; - (void)y; -#endif +_elm_web_webkit2_elm_web_region_show(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *_pd EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED, int w EINA_UNUSED, int h EINA_UNUSED) +{ } EOLIAN static void -_elm_web_region_bring_in(Eo *obj, Elm_Web_Data *_pd EINA_UNUSED, int x, int y, int w, int h) -{ - (void)w; - (void)h; - -#ifdef HAVE_ELEMENTARY_WEB - (void)obj; - (void)_pd; - (void)x; - (void)y; -#else - (void)obj; - (void)_pd; - (void)x; - (void)y; -#endif +_elm_web_webkit2_elm_web_region_bring_in(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *_pd EINA_UNUSED, int x EINA_UNUSED, int y EINA_UNUSED, int w EINA_UNUSED, int h EINA_UNUSED) +{ } EOLIAN static void -_elm_web_inwin_mode_set(Eo *obj EINA_UNUSED, Elm_Web_Data *sd, Eina_Bool value) +_elm_web_webkit2_elm_web_inwin_mode_set(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *sd, Eina_Bool value) { -#ifdef HAVE_ELEMENTARY_WEB sd->inwin_mode = value; -#else - (void)sd; - (void)value; -#endif } EOLIAN static Eina_Bool -_elm_web_inwin_mode_get(Eo *obj EINA_UNUSED, Elm_Web_Data *sd) +_elm_web_webkit2_elm_web_inwin_mode_get(Eo *obj EINA_UNUSED, Elm_Web_Webkit2_Data *sd) { -#ifdef HAVE_ELEMENTARY_WEB return sd->inwin_mode; -#else - (void)sd; - return EINA_FALSE; -#endif } EAPI void -elm_web_window_features_ref(Elm_Web_Window_Features *wf) +ewm_web_window_features_ref(Elm_Web_Window_Features *wf) { -#ifdef HAVE_ELEMENTARY_WEB ewk_object_ref((Ewk_Object *)wf); -#else - (void)wf; -#endif } EAPI void -elm_web_window_features_unref(Elm_Web_Window_Features *wf) +ewm_web_window_features_unref(Elm_Web_Window_Features *wf) { -#ifdef HAVE_ELEMENTARY_WEB ewk_object_unref((Ewk_Object *)wf); -#else - (void)wf; -#endif } EAPI Eina_Bool -elm_web_window_features_property_get(const Elm_Web_Window_Features *wf, +ewm_web_window_features_property_get(const Elm_Web_Window_Features *wf, Elm_Web_Window_Feature_Flag flag) { -#ifdef HAVE_ELEMENTARY_WEB const Ewk_Window_Features *ewf = (const Ewk_Window_Features *)wf; switch (flag) { @@ -1450,37 +1103,47 @@ elm_web_window_features_property_get(const Elm_Web_Window_Features *wf, case ELM_WEB_WINDOW_FEATURE_FULLSCREEN: return ewk_window_features_fullscreen_get(ewf); } -#else - (void)wf; - (void)flag; -#endif return EINA_FALSE; } EAPI void -elm_web_window_features_region_get(const Elm_Web_Window_Features *wf, +ewm_web_window_features_region_get(const Elm_Web_Window_Features *wf, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h) { -#ifdef HAVE_ELEMENTARY_WEB ewk_window_features_geometry_get ((const Ewk_Window_Features *)wf, x, y, w, h); -#else - (void)wf; - (void)x; - (void)y; - (void)w; - (void)h; -#endif } -static void -_elm_web_class_constructor(Eo_Class *klass) +static Eina_Bool _elm_need_web = EINA_FALSE; + +EAPI void +ewm_unneed_web(void) +{ + if (!_elm_need_web) return; + _elm_need_web = EINA_FALSE; + ewk_shutdown(); +} + +EAPI Eina_Bool +ewm_need_web(void) +{ + if (_elm_need_web) return EINA_TRUE; + _elm_need_web = EINA_TRUE; + ewk_init(); + + if (_webkit2_log_dom == -1) + _webkit2_log_dom = eina_log_domain_register("elm_webkit2", EINA_COLOR_LIGHTBLUE); + return EINA_TRUE; +} + +EAPI const Eo_Class * +ewm_class_get(void) { - evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass); + return elm_web_webkit2_class_get(); } -#include "elm_web.eo.c" +#include "elm_web_webkit2.eo.c" diff --git a/src/modules/web/webkit2/elm_web_webkit2.eo b/src/modules/web/webkit2/elm_web_webkit2.eo new file mode 100644 index 0000000..a0dad4a --- /dev/null +++ b/src/modules/web/webkit2/elm_web_webkit2.eo @@ -0,0 +1,53 @@ +class Elm.Web.Webkit2 (Elm.Web) +{ + implements { + Evas.Object_Smart.add; + Evas.Object_Smart.del; + Elm.Widget.on_focus; + Elm.Web.tab_propagate.get; + Elm.Web.tab_propagate.set; + Elm.Web.webkit_view.get; + Elm.Web.window_create_hook.set; + Elm.Web.dialog_alert_hook.set; + Elm.Web.dialog_confirm_hook.set; + Elm.Web.dialog_prompt_hook.set; + Elm.Web.dialog_file_selector_hook.set; + Elm.Web.console_message_hook.set; + Elm.Web.useragent.set; + Elm.Web.useragent.get; + Elm.Web.url.set; + Elm.Web.url.get; + Elm.Web.html_string_load; + Elm.Web.title.get; + Elm.Web.bg_color.set; + Elm.Web.bg_color.get; + Elm.Web.selection.get; + Elm.Web.popup_selected.set; + Elm.Web.popup_destroy; + Elm.Web.text_search; + Elm.Web.text_matches_mark; + Elm.Web.text_matches_unmark_all; + Elm.Web.text_matches_highlight.set; + Elm.Web.text_matches_highlight.get; + Elm.Web.load_progress.get; + Elm.Web.stop; + Elm.Web.reload; + Elm.Web.reload_full; + Elm.Web.back; + Elm.Web.forward; + Elm.Web.navigate; + Elm.Web.back_possible.get; + Elm.Web.forward_possible.get; + Elm.Web.navigate_possible_get; + Elm.Web.history_enabled.get; + Elm.Web.history_enabled.set; + Elm.Web.zoom.set; + Elm.Web.zoom.get; + Elm.Web.zoom_mode.set; + Elm.Web.zoom_mode.get; + Elm.Web.region_show; + Elm.Web.region_bring_in; + Elm.Web.inwin_mode.set; + Elm.Web.inwin_mode.get; + } +} diff --git a/src/modules/web/webkit2/elm_web_webkit2.eo.c b/src/modules/web/webkit2/elm_web_webkit2.eo.c new file mode 100644 index 0000000..73a68d7 --- /dev/null +++ b/src/modules/web/webkit2/elm_web_webkit2.eo.c @@ -0,0 +1,208 @@ + +void _elm_web_webkit2_evas_object_smart_add(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +void _elm_web_webkit2_evas_object_smart_del(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +Eina_Bool _elm_web_webkit2_elm_widget_on_focus(Eo *obj, Elm_Web_Webkit2_Data *pd, Elm_Widget_Item *item); + + +Eina_Bool _elm_web_webkit2_elm_web_tab_propagate_get(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +void _elm_web_webkit2_elm_web_tab_propagate_set(Eo *obj, Elm_Web_Webkit2_Data *pd, Eina_Bool propagate); + + +Evas_Object * _elm_web_webkit2_elm_web_webkit_view_get(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +void _elm_web_webkit2_elm_web_window_create_hook_set(Eo *obj, Elm_Web_Webkit2_Data *pd, Elm_Web_Window_Open func, void *data); + + +void _elm_web_webkit2_elm_web_dialog_alert_hook_set(Eo *obj, Elm_Web_Webkit2_Data *pd, Elm_Web_Dialog_Alert func, void *data); + + +void _elm_web_webkit2_elm_web_dialog_confirm_hook_set(Eo *obj, Elm_Web_Webkit2_Data *pd, Elm_Web_Dialog_Confirm func, void *data); + + +void _elm_web_webkit2_elm_web_dialog_prompt_hook_set(Eo *obj, Elm_Web_Webkit2_Data *pd, Elm_Web_Dialog_Prompt func, void *data); + + +void _elm_web_webkit2_elm_web_dialog_file_selector_hook_set(Eo *obj, Elm_Web_Webkit2_Data *pd, Elm_Web_Dialog_File_Selector func, void *data); + + +void _elm_web_webkit2_elm_web_console_message_hook_set(Eo *obj, Elm_Web_Webkit2_Data *pd, Elm_Web_Console_Message func, void *data); + + +void _elm_web_webkit2_elm_web_useragent_set(Eo *obj, Elm_Web_Webkit2_Data *pd, const char *user_agent); + + +const char * _elm_web_webkit2_elm_web_useragent_get(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +Eina_Bool _elm_web_webkit2_elm_web_url_set(Eo *obj, Elm_Web_Webkit2_Data *pd, const char *url); + + +const char * _elm_web_webkit2_elm_web_url_get(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +Eina_Bool _elm_web_webkit2_elm_web_html_string_load(Eo *obj, Elm_Web_Webkit2_Data *pd, const char *html, const char *base_url, const char *unreachable_url); + + +const char * _elm_web_webkit2_elm_web_title_get(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +void _elm_web_webkit2_elm_web_bg_color_set(Eo *obj, Elm_Web_Webkit2_Data *pd, int r, int g, int b, int a); + + +void _elm_web_webkit2_elm_web_bg_color_get(Eo *obj, Elm_Web_Webkit2_Data *pd, int *r, int *g, int *b, int *a); + + +const char * _elm_web_webkit2_elm_web_selection_get(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +void _elm_web_webkit2_elm_web_popup_selected_set(Eo *obj, Elm_Web_Webkit2_Data *pd, int idx); + + +Eina_Bool _elm_web_webkit2_elm_web_popup_destroy(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +Eina_Bool _elm_web_webkit2_elm_web_text_search(const Eo *obj, Elm_Web_Webkit2_Data *pd, const char *string, Eina_Bool case_sensitive, Eina_Bool forward, Eina_Bool wrap); + + +unsigned int _elm_web_webkit2_elm_web_text_matches_mark(Eo *obj, Elm_Web_Webkit2_Data *pd, const char *string, Eina_Bool case_sensitive, Eina_Bool highlight, unsigned int limit); + + +Eina_Bool _elm_web_webkit2_elm_web_text_matches_unmark_all(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +Eina_Bool _elm_web_webkit2_elm_web_text_matches_highlight_set(Eo *obj, Elm_Web_Webkit2_Data *pd, Eina_Bool highlight); + + +Eina_Bool _elm_web_webkit2_elm_web_text_matches_highlight_get(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +double _elm_web_webkit2_elm_web_load_progress_get(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +Eina_Bool _elm_web_webkit2_elm_web_stop(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +Eina_Bool _elm_web_webkit2_elm_web_reload(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +Eina_Bool _elm_web_webkit2_elm_web_reload_full(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +Eina_Bool _elm_web_webkit2_elm_web_back(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +Eina_Bool _elm_web_webkit2_elm_web_forward(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +Eina_Bool _elm_web_webkit2_elm_web_navigate(Eo *obj, Elm_Web_Webkit2_Data *pd, int steps); + + +Eina_Bool _elm_web_webkit2_elm_web_back_possible_get(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +Eina_Bool _elm_web_webkit2_elm_web_forward_possible_get(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +Eina_Bool _elm_web_webkit2_elm_web_navigate_possible_get(Eo *obj, Elm_Web_Webkit2_Data *pd, int steps); + + +Eina_Bool _elm_web_webkit2_elm_web_history_enabled_get(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +void _elm_web_webkit2_elm_web_history_enabled_set(Eo *obj, Elm_Web_Webkit2_Data *pd, Eina_Bool enable); + + +void _elm_web_webkit2_elm_web_zoom_set(Eo *obj, Elm_Web_Webkit2_Data *pd, double zoom); + + +double _elm_web_webkit2_elm_web_zoom_get(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +void _elm_web_webkit2_elm_web_zoom_mode_set(Eo *obj, Elm_Web_Webkit2_Data *pd, Elm_Web_Zoom_Mode mode); + + +Elm_Web_Zoom_Mode _elm_web_webkit2_elm_web_zoom_mode_get(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +void _elm_web_webkit2_elm_web_region_show(Eo *obj, Elm_Web_Webkit2_Data *pd, int x, int y, int w, int h); + + +void _elm_web_webkit2_elm_web_region_bring_in(Eo *obj, Elm_Web_Webkit2_Data *pd, int x, int y, int w, int h); + + +void _elm_web_webkit2_elm_web_inwin_mode_set(Eo *obj, Elm_Web_Webkit2_Data *pd, Eina_Bool value); + + +Eina_Bool _elm_web_webkit2_elm_web_inwin_mode_get(Eo *obj, Elm_Web_Webkit2_Data *pd); + + +static const Eo_Op_Description _elm_web_webkit2_op_desc[] = { + EO_OP_FUNC_OVERRIDE(evas_obj_smart_add, _elm_web_webkit2_evas_object_smart_add), + EO_OP_FUNC_OVERRIDE(evas_obj_smart_del, _elm_web_webkit2_evas_object_smart_del), + EO_OP_FUNC_OVERRIDE(elm_obj_widget_on_focus, _elm_web_webkit2_elm_widget_on_focus), + EO_OP_FUNC_OVERRIDE(elm_obj_web_tab_propagate_get, _elm_web_webkit2_elm_web_tab_propagate_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_tab_propagate_set, _elm_web_webkit2_elm_web_tab_propagate_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_webkit_view_get, _elm_web_webkit2_elm_web_webkit_view_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_window_create_hook_set, _elm_web_webkit2_elm_web_window_create_hook_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_dialog_alert_hook_set, _elm_web_webkit2_elm_web_dialog_alert_hook_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_dialog_confirm_hook_set, _elm_web_webkit2_elm_web_dialog_confirm_hook_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_dialog_prompt_hook_set, _elm_web_webkit2_elm_web_dialog_prompt_hook_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_dialog_file_selector_hook_set, _elm_web_webkit2_elm_web_dialog_file_selector_hook_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_console_message_hook_set, _elm_web_webkit2_elm_web_console_message_hook_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_useragent_set, _elm_web_webkit2_elm_web_useragent_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_useragent_get, _elm_web_webkit2_elm_web_useragent_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_url_set, _elm_web_webkit2_elm_web_url_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_url_get, _elm_web_webkit2_elm_web_url_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_html_string_load, _elm_web_webkit2_elm_web_html_string_load), + EO_OP_FUNC_OVERRIDE(elm_obj_web_title_get, _elm_web_webkit2_elm_web_title_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_bg_color_set, _elm_web_webkit2_elm_web_bg_color_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_bg_color_get, _elm_web_webkit2_elm_web_bg_color_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_selection_get, _elm_web_webkit2_elm_web_selection_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_popup_selected_set, _elm_web_webkit2_elm_web_popup_selected_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_popup_destroy, _elm_web_webkit2_elm_web_popup_destroy), + EO_OP_FUNC_OVERRIDE(elm_obj_web_text_search, _elm_web_webkit2_elm_web_text_search), + EO_OP_FUNC_OVERRIDE(elm_obj_web_text_matches_mark, _elm_web_webkit2_elm_web_text_matches_mark), + EO_OP_FUNC_OVERRIDE(elm_obj_web_text_matches_unmark_all, _elm_web_webkit2_elm_web_text_matches_unmark_all), + EO_OP_FUNC_OVERRIDE(elm_obj_web_text_matches_highlight_set, _elm_web_webkit2_elm_web_text_matches_highlight_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_text_matches_highlight_get, _elm_web_webkit2_elm_web_text_matches_highlight_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_load_progress_get, _elm_web_webkit2_elm_web_load_progress_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_stop, _elm_web_webkit2_elm_web_stop), + EO_OP_FUNC_OVERRIDE(elm_obj_web_reload, _elm_web_webkit2_elm_web_reload), + EO_OP_FUNC_OVERRIDE(elm_obj_web_reload_full, _elm_web_webkit2_elm_web_reload_full), + EO_OP_FUNC_OVERRIDE(elm_obj_web_back, _elm_web_webkit2_elm_web_back), + EO_OP_FUNC_OVERRIDE(elm_obj_web_forward, _elm_web_webkit2_elm_web_forward), + EO_OP_FUNC_OVERRIDE(elm_obj_web_navigate, _elm_web_webkit2_elm_web_navigate), + EO_OP_FUNC_OVERRIDE(elm_obj_web_back_possible_get, _elm_web_webkit2_elm_web_back_possible_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_forward_possible_get, _elm_web_webkit2_elm_web_forward_possible_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_navigate_possible_get, _elm_web_webkit2_elm_web_navigate_possible_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_history_enabled_get, _elm_web_webkit2_elm_web_history_enabled_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_history_enabled_set, _elm_web_webkit2_elm_web_history_enabled_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_zoom_set, _elm_web_webkit2_elm_web_zoom_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_zoom_get, _elm_web_webkit2_elm_web_zoom_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_zoom_mode_set, _elm_web_webkit2_elm_web_zoom_mode_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_zoom_mode_get, _elm_web_webkit2_elm_web_zoom_mode_get), + EO_OP_FUNC_OVERRIDE(elm_obj_web_region_show, _elm_web_webkit2_elm_web_region_show), + EO_OP_FUNC_OVERRIDE(elm_obj_web_region_bring_in, _elm_web_webkit2_elm_web_region_bring_in), + EO_OP_FUNC_OVERRIDE(elm_obj_web_inwin_mode_set, _elm_web_webkit2_elm_web_inwin_mode_set), + EO_OP_FUNC_OVERRIDE(elm_obj_web_inwin_mode_get, _elm_web_webkit2_elm_web_inwin_mode_get), +}; + +static const Eo_Class_Description _elm_web_webkit2_class_desc = { + EO_VERSION, + "Elm_Web_Webkit2", + EO_CLASS_TYPE_REGULAR, + EO_CLASS_DESCRIPTION_OPS(_elm_web_webkit2_op_desc), + NULL, + sizeof(Elm_Web_Webkit2_Data), + NULL, + NULL +}; + +EO_DEFINE_CLASS(elm_web_webkit2_class_get, &_elm_web_webkit2_class_desc, ELM_WEB_CLASS, NULL); \ No newline at end of file diff --git a/src/modules/web/webkit2/elm_web_webkit2.eo.h b/src/modules/web/webkit2/elm_web_webkit2.eo.h new file mode 100644 index 0000000..5e25f7a --- /dev/null +++ b/src/modules/web/webkit2/elm_web_webkit2.eo.h @@ -0,0 +1,21 @@ +#ifndef _ELM_WEB_WEBKIT2_EO_H_ +#define _ELM_WEB_WEBKIT2_EO_H_ + +#ifndef _ELM_WEB_WEBKIT2_EO_CLASS_TYPE +#define _ELM_WEB_WEBKIT2_EO_CLASS_TYPE + +typedef Eo Elm_Web_Webkit2; + +#endif + +#ifndef _ELM_WEB_WEBKIT2_EO_TYPES +#define _ELM_WEB_WEBKIT2_EO_TYPES + + +#endif +#define ELM_WEB_WEBKIT2_CLASS elm_web_webkit2_class_get() + +EAPI const Eo_Class *elm_web_webkit2_class_get(void); + + +#endif --
