On Fri, Dec 27, 2013 at 10:39 PM, Ryuan Choi <ryuan.c...@gmail.com> wrote:

> ryuan pushed a commit to branch master.
>
>
> http://git.enlightenment.org/core/elementary.git/commit/?id=f64b30ef45b09006a41566dca208ea00221cf6f0
>
> commit f64b30ef45b09006a41566dca208ea00221cf6f0
> Author: Ryuan Choi <ryuan.c...@gmail.com>
> Date:   Fri Dec 27 22:23:21 2013 +0900
>
>     web: Added elm_web_html_string_load() to load html string as the
> content
>
>     It is usefull to load html string instead of url, especially for
> testing.
> ---
>  src/bin/test.c           |  2 ++
>  src/bin/test_web.c       | 35 ++++++++++++++++++++++++++++++++
>  src/lib/elm_web.c        | 53
> ++++++++++++++++++++++++++++++++++++++++++++++++
>  src/lib/elm_web2.c       | 27 ++++++++++++++++++++++++
>  src/lib/elm_web_eo.h     | 18 ++++++++++++++++
>  src/lib/elm_web_legacy.h | 22 ++++++++++++++++++++
>  6 files changed, 157 insertions(+)
>
> diff --git a/src/bin/test.c b/src/bin/test.c
> index 75172d6..21d2959 100644
> --- a/src/bin/test.c
> +++ b/src/bin/test.c
> @@ -228,6 +228,7 @@ void test_eio(void *data, Evas_Object *obj, void
> *event_info);
>  #endif
>  #ifdef HAVE_ELEMENTARY_WEB
>  void test_web(void *data, Evas_Object *obj, void *event_info);
> +void test_web_ui(void *data, Evas_Object *obj, void *event_info);
>  #endif
>  void test_dnd_genlist_default_anim(void *data, Evas_Object *obj, void
> *event_info);
>  void test_dnd_genlist_user_anim(void *data, Evas_Object *obj, void
> *event_info);
> @@ -669,6 +670,7 @@ add_tests:
>     //------------------------------//
>  #ifdef HAVE_ELEMENTARY_WEB
>     ADD_TEST(NULL, "Web", "Web", test_web);
> +   ADD_TEST(NULL, "Web", "Web UI", test_web_ui);
>  #endif
>
>     //------------------------------//
> diff --git a/src/bin/test_web.c b/src/bin/test_web.c
> index c03de30..ee20420 100644
> --- a/src/bin/test_web.c
> +++ b/src/bin/test_web.c
> @@ -509,3 +509,38 @@ test_web(void *data EINA_UNUSED, Evas_Object *obj
> EINA_UNUSED, void *event_info
>     evas_object_resize(win, 320, 480);
>     evas_object_show(win);
>  }
> +
> +void
> +test_web_ui(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void
> *event_info EINA_UNUSED)
> +{
> +   Evas_Object *win, *bx, *web;
> +   Web_Test *wt;
> +
> +   elm_need_web();
> +
> +   wt = calloc(1, sizeof(*wt));
> +   win = elm_win_util_standard_add("web", "Web");
> +
> +   elm_win_autodel_set(win, EINA_TRUE);
> +
>

Hi Ryuan, thanks for the patch.


> +   bx = elm_box_add(win);
> +   evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND,
> EVAS_HINT_EXPAND);
> +   elm_win_resize_object_add(win, bx);
> +   evas_object_show(bx);
>

This box is not needed. Just make elm_web as a window resize object.
How do you think?

Daniel Juyung Seo (SeoZ)


> +
> +   web = elm_web_add(win);
> +   evas_object_size_hint_weight_set(web, EVAS_HINT_EXPAND,
> EVAS_HINT_EXPAND);
> +   evas_object_size_hint_align_set(web, EVAS_HINT_FILL, EVAS_HINT_FILL);
> +   elm_box_pack_end(bx, web);
> +   evas_object_show(web);
> +
> +   evas_object_event_callback_add(web, EVAS_CALLBACK_DEL,
> _main_web_del_cb, wt);
> +   wt->web = web;
> +
> +   elm_web_html_string_load(wt->web,
> +                            "<!doctype html><body>Hello,
> WebKit/Efl</body>",
> +                            NULL, NULL);
> +
> +   evas_object_resize(win, 320, 480);
> +   evas_object_show(win);
> +}
> diff --git a/src/lib/elm_web.c b/src/lib/elm_web.c
> index 4e2cf3f..fea18dc 100644
> --- a/src/lib/elm_web.c
> +++ b/src/lib/elm_web.c
> @@ -1583,6 +1583,57 @@ _url_get(Eo *obj, void *_pd EINA_UNUSED, va_list
> *list)
>  #endif
>  }
>
> +EAPI Eina_Bool
> +elm_web_html_string_load(Evas_Object *obj, const char *html, const char
> *base_url, const char *unreachable_url)
> +{
> +#ifdef HAVE_ELEMENTARY_WEB
> +   ELM_WEB_CHECK(obj) EINA_FALSE;
> +   Eina_Bool ret = EINA_FALSE;
> +   eo_do(obj, elm_obj_web_html_string_load(html, base_url,
> unreachable_url, &ret));
> +   return ret;
> +#else
> +   (void)obj;
> +   (void)html;
> +   (void)base_url;
> +   (void)unreachable_url;
> +   return EINA_FALSE;
> +#endif
> +}
> +
> +static void
> +_html_string_load(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
> +{
> +   const char *html = va_arg(*list, const char *);
> +   const char *base_url = va_arg(*list, const char *);
> +   const char *unreachable_url = va_arg(*list, const char *);
> +   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
> +   if (ret) *ret = EINA_FALSE;
> +
> +#ifdef HAVE_ELEMENTARY_WEB
> +   Eina_Bool int_ret;
> +
> +   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
> +
> +   if (!unreachable_url)
> +     int_ret = ewk_frame_contents_set(
> +                  ewk_view_frame_main_get(wd->resize_obj),
> +                  html, 0, NULL, NULL,
> +                  base_url);
> +   else
> +     int_ret = ewk_frame_contents_alternate_set(
> +                  ewk_view_frame_main_get(wd->resize_obj),
> +                  html, 0, NULL, NULL,
> +                  base_url, unreachable_url);
> +
> +   if (ret) *ret = int_ret;
> +#else
> +   (void)obj;
> +   (void)html;
> +   (void)base_url;
> +   (void)unreachable_url;
> +#endif
> +}
> +
>  EAPI const char *
>  elm_web_title_get(const Evas_Object *obj)
>  {
> @@ -2671,6 +2722,7 @@ _class_constructor(Eo_Class *klass)
>          EO_OP_FUNC(ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_SET),
> _tab_propagate_set),
>          EO_OP_FUNC(ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_URL_SET), _url_set),
>          EO_OP_FUNC(ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_URL_GET), _url_get),
> +        EO_OP_FUNC(ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_HTML_STRING_LOAD),
> _html_string_load),
>          EO_OP_FUNC(ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TITLE_GET),
> _title_get),
>          EO_OP_FUNC(ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BG_COLOR_SET),
> _bg_color_set),
>          EO_OP_FUNC(ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BG_COLOR_GET),
> _bg_color_get),
> @@ -2722,6 +2774,7 @@ static const Eo_Op_Description op_desc[] = {
>       EO_OP_DESCRIPTION(ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_SET, "Sets
> whether to use tab propagation."),
>       EO_OP_DESCRIPTION(ELM_OBJ_WEB_SUB_ID_URL_SET, "Sets the URL for the
> web object."),
>       EO_OP_DESCRIPTION(ELM_OBJ_WEB_SUB_ID_URL_GET, "Get the current URL
> for the object."),
> +     EO_OP_DESCRIPTION(ELM_OBJ_WEB_SUB_ID_HTML_STRING_LOAD, "Loads the
> specified html string as the content of the object."),
>       EO_OP_DESCRIPTION(ELM_OBJ_WEB_SUB_ID_TITLE_GET, "Get the current
> title."),
>       EO_OP_DESCRIPTION(ELM_OBJ_WEB_SUB_ID_BG_COLOR_SET, "Sets the
> background color to be used by the web object."),
>       EO_OP_DESCRIPTION(ELM_OBJ_WEB_SUB_ID_BG_COLOR_GET, "Get the
> background color to be used by the web object."),
> diff --git a/src/lib/elm_web2.c b/src/lib/elm_web2.c
> index fb2cbd9..8538790 100644
> --- a/src/lib/elm_web2.c
> +++ b/src/lib/elm_web2.c
> @@ -455,6 +455,31 @@ _url_get(Eo *obj, void *_pd EINA_UNUSED, va_list
> *list)
>     *ret = ewk_view_url_get(wd->resize_obj);
>  }
>
> +EAPI Eina_Bool
> +elm_web_html_string_load(Evas_Object *obj, const char *html, const char
> *base_url, const char *unreachable_url)
> +{
> +   ELM_WEB_CHECK(obj) EINA_FALSE;
> +   Eina_Bool ret = EINA_FALSE;
> +   eo_do(obj, elm_obj_web_html_string_load(html, base_url,
> unreachable_url, &ret));
> +   return ret;
> +}
> +
> +static void
> +_html_string_load(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
> +{
> +   const char *html = va_arg(*list, const char *);
> +   const char *base_url = va_arg(*list, const char *);
> +   const char *unreachable_url = va_arg(*list, const char *);
> +   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
> +
> +   if (ret) *ret = EINA_FALSE;
> +
> +   ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
> +
> +   if (ret) *ret = ewk_view_html_string_load(wd->resize_obj,
> +                                             html, base_url,
> unreachable_url);
> +}
> +
>  EAPI const char *
>  elm_web_title_get(const Evas_Object *obj)
>  {
> @@ -1323,6 +1348,7 @@ _class_constructor(Eo_Class *klass)
>
>          EO_OP_FUNC(ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_URL_SET), _url_set),
>          EO_OP_FUNC(ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_URL_GET), _url_get),
> +        EO_OP_FUNC(ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_HTML_STRING_LOAD),
> _html_string_load),
>          EO_OP_FUNC(ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_TITLE_GET),
> _title_get),
>
>          EO_OP_FUNC(ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_BG_COLOR_SET),
> _bg_color_set),
> @@ -1375,6 +1401,7 @@ static const Eo_Op_Description op_desc[] = {
>       EO_OP_DESCRIPTION(ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_SET, "Sets
> whether to use tab propagation."),
>       EO_OP_DESCRIPTION(ELM_OBJ_WEB_SUB_ID_URL_SET, "Sets the URL for the
> web object."),
>       EO_OP_DESCRIPTION(ELM_OBJ_WEB_SUB_ID_URL_GET, "Get the current URL
> for the object."),
> +     EO_OP_DESCRIPTION(ELM_OBJ_WEB_SUB_ID_HTML_STRING_LOAD, "Loads the
> specified html string as the content of the object."),
>       EO_OP_DESCRIPTION(ELM_OBJ_WEB_SUB_ID_TITLE_GET, "Get the current
> title."),
>       EO_OP_DESCRIPTION(ELM_OBJ_WEB_SUB_ID_BG_COLOR_SET, "Sets the
> background color to be used by the web object."),
>       EO_OP_DESCRIPTION(ELM_OBJ_WEB_SUB_ID_BG_COLOR_GET, "Get the
> background color to be used by the web object."),
> diff --git a/src/lib/elm_web_eo.h b/src/lib/elm_web_eo.h
> index 62e2fa2..798ee95 100644
> --- a/src/lib/elm_web_eo.h
> +++ b/src/lib/elm_web_eo.h
> @@ -19,6 +19,7 @@ enum
>     ELM_OBJ_WEB_SUB_ID_TAB_PROPAGATE_SET,
>     ELM_OBJ_WEB_SUB_ID_URL_SET,
>     ELM_OBJ_WEB_SUB_ID_URL_GET,
> +   ELM_OBJ_WEB_SUB_ID_HTML_STRING_LOAD,
>     ELM_OBJ_WEB_SUB_ID_TITLE_GET,
>     ELM_OBJ_WEB_SUB_ID_BG_COLOR_SET,
>     ELM_OBJ_WEB_SUB_ID_BG_COLOR_GET,
> @@ -246,6 +247,23 @@ enum
>  #define elm_obj_web_url_get(ret)
> ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_URL_GET), EO_TYPECHECK(const char **, ret)
>
>  /**
> + * @def elm_obj_web_html_string_load
> + * @since 1.9
> + *
> + * Loads the specified @a html string as the content of the web object
> + *
> + * @param[in] html
> + * @param[in] base_url
> + * @param[in] unreachable_url
> + * @param[out] ret
> + *
> + * @see elm_web_html_string_load
> + *
> + * @ingroup Web
> + */
> +#define elm_obj_web_html_string_load(html, base_url, unreachable_url,
> ret) ELM_OBJ_WEB_ID(ELM_OBJ_WEB_SUB_ID_HTML_STRING_LOAD),
> EO_TYPECHECK(const char *, html), EO_TYPECHECK(const char *, base_url),
> EO_TYPECHECK(const char *, unreachable_url), EO_TYPECHECK(Eina_Bool *, ret)
> +
> +/**
>   * @def elm_obj_web_title_get
>   * @since 1.8
>   *
> diff --git a/src/lib/elm_web_legacy.h b/src/lib/elm_web_legacy.h
> index 74f8e81..533c06b 100644
> --- a/src/lib/elm_web_legacy.h
> +++ b/src/lib/elm_web_legacy.h
> @@ -180,6 +180,28 @@ EAPI void
>  elm_web_tab_propagate_set(Evas_Object *obj, Eina_Bool pro
>  EAPI Eina_Bool         elm_web_url_set(Evas_Object *obj, const char *url);
>
>  /**
> + * Loads the specified @a html string as the content of the web object
> + *
> + * @param obj The web object
> + * @param html HTML data to load
> + * @param base_url Base URL used for relative paths to external objects
> (optional)
> + * @param unreachable_url URL that could not be reached (optional)
> + *
> + * @return @c EINA_TRUE if it the HTML was successfully loaded, @c
> EINA_FALSE otherwise
> + *
> + * External objects such as stylesheets or images referenced in the HTML
> + * document are located relative to @a base_url.
> + *
> + * If an @a unreachable_url is passed it is used as the url for the loaded
> + * content. This is typically used to display error pages for a failed
> + * load.
> + *
> + * @since 1.9
> + * @ingroup Web
> + */
> +EAPI Eina_Bool         elm_web_html_string_load(Evas_Object *obj, const
> char *html, const char *base_url, const char *unreachable_url);
> +
> +/**
>   * Get the current URL for the object
>   *
>   * The returned string must not be freed and is guaranteed to be
>
> --
>
>
>
------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to