efl
695 строк · 21.3 Кб
1#ifdef HAVE_CONFIG_H2# include "elementary_config.h"3#endif4#include <Elementary.h>5
6typedef struct7{
8Evas_Object *web;9Evas_Object *btn_back;10Evas_Object *btn_fwd;11Evas_Object *url_entry;12Evas_Object *bx;13Evas_Object *hoversel;14Eina_List *sub_wins;15Eina_Bool js_hooks : 1;16} Web_Test;17
18static void19_btn_back_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)20{
21Evas_Object *web = data;22
23elm_web_back(web);24}
25
26static void27_btn_fwd_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)28{
29Evas_Object *web = data;30
31elm_web_forward(web);32}
33
34static void35_btn_reload_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)36{
37Evas_Object *web = data;38
39elm_web_reload(web);40}
41
42static void43_url_entry_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)44{
45Evas_Object *web = data;46const char *url = elm_object_text_get(obj);47
48elm_web_url_set(web, url);49}
50
51static void52_toggle_inwin_mode_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)53{
54elm_web_inwin_mode_set(data, !elm_web_inwin_mode_get(data));55}
56
57static void58_title_changed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)59{
60char buf[512];61snprintf(buf, sizeof(buf), "Web - %s", (const char *)event_info);62elm_win_title_set(data, buf);63}
64
65static void66_url_changed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)67{
68Web_Test *wt = data;69
70elm_object_text_set(wt->url_entry, event_info);71
72elm_object_disabled_set(wt->btn_back, !elm_web_back_possible_get(wt->web));73elm_object_disabled_set(wt->btn_fwd, !elm_web_forward_possible_get(wt->web));74}
75
76static void77_new_win_del_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)78{
79Web_Test *wt = data;80wt->sub_wins = eina_list_remove(wt->sub_wins, obj);81}
82
83static void84_web_win_close_request_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)85{
86evas_object_del(data);87}
88
89static Evas_Object *90_new_window_hook(void *data, Evas_Object *obj, Eina_Bool js EINA_UNUSED, const Elm_Web_Window_Features *wf EINA_UNUSED)91{
92Web_Test *wt = data;93Evas_Object *new_win, *new_web;94
95new_win = elm_win_util_standard_add("elm-web-test-popup", "Elm Web Test Popup");96elm_win_autodel_set(new_win, EINA_TRUE);97evas_object_resize(new_win, 300, 300);98evas_object_show(new_win);99
100new_web = elm_web_add(new_win);101elm_web_useragent_set(new_web, elm_web_useragent_get(obj));102evas_object_size_hint_weight_set(new_web, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);103elm_win_resize_object_add(new_win, new_web);104evas_object_show(new_web);105
106evas_object_smart_callback_add(new_win, "delete,request", _new_win_del_cb,107wt);108evas_object_smart_callback_add(new_web, "windows,close,request",109_web_win_close_request_cb, new_win);110wt->sub_wins = eina_list_append(wt->sub_wins, new_win);111
112return new_web;113}
114
115static void116_alert_del(void *data EINA_UNUSED, Evas_Object *obj, void *event_info EINA_UNUSED)117{
118evas_object_del(obj);119}
120
121static Evas_Object *122_alert_hook(void *data EINA_UNUSED, Evas_Object *obj, const char *message)123{
124Evas_Object *popup, *label;125
126popup = elm_notify_add(obj);127elm_notify_align_set(popup, 0.5, 0.5);128// Using the timeout doesn't seem to go well with the second main loop129//elm_notify_timeout_set(popup, 2.0);130elm_notify_allow_events_set(popup, EINA_FALSE);131evas_object_show(popup);132
133evas_object_smart_callback_add(popup, "block,clicked", _alert_del, NULL);134
135label = elm_label_add(obj);136elm_object_text_set(label, message);137elm_object_content_set(popup, label);138evas_object_show(label);139
140return popup;141}
142
143static void144_confirm_ok_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)145{
146Eina_Bool *response = data;147*response = EINA_TRUE;148}
149
150static void151_confirm_cancel_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)152{
153Eina_Bool *response = data;154*response = EINA_FALSE;155}
156
157static void158_confirm_dismiss_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)159{
160evas_object_del(data);161}
162
163static Evas_Object *164_confirm_hook(void *data EINA_UNUSED, Evas_Object *obj, const char *message, Eina_Bool *response)165{
166Evas_Object *popup, *box, *box2, *label, *btn_ok, *btn_cancel;167
168popup = elm_notify_add(obj);169elm_notify_align_set(popup, 0.5, 0.5);170elm_notify_allow_events_set(popup, EINA_FALSE);171evas_object_show(popup);172
173box = elm_box_add(obj);174elm_object_content_set(popup, box);175evas_object_show(box);176
177label = elm_label_add(obj);178elm_object_text_set(label, message);179elm_box_pack_end(box, label);180evas_object_show(label);181
182box2 = elm_box_add(obj);183elm_box_horizontal_set(box2, EINA_TRUE);184elm_box_pack_end(box, box2);185evas_object_show(box2);186
187btn_ok = elm_button_add(obj);188elm_object_text_set(btn_ok, "Ok");189elm_box_pack_end(box2, btn_ok);190evas_object_show(btn_ok);191
192btn_cancel = elm_button_add(obj);193elm_object_text_set(btn_cancel, "Cancel");194elm_box_pack_end(box2, btn_cancel);195evas_object_show(btn_cancel);196
197evas_object_smart_callback_add(btn_ok, "clicked", _confirm_dismiss_cb,198popup);199evas_object_smart_callback_add(btn_cancel, "clicked", _confirm_dismiss_cb,200popup);201evas_object_smart_callback_add(btn_ok, "clicked", _confirm_ok_cb, response);202evas_object_smart_callback_add(btn_cancel, "clicked", _confirm_cancel_cb,203response);204
205return popup;206}
207
208static Evas_Object *209_prompt_hook(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *message EINA_UNUSED, const char *default_value, const char **value, Eina_Bool *response)210{
211*response = EINA_TRUE;212*value = default_value ? strdup(default_value) : "No default!";213return NULL;214}
215
216static Evas_Object *217_file_selector_hook(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, Eina_Bool allow_multiple EINA_UNUSED, Eina_List *accept_types EINA_UNUSED, Eina_List **selected_files, Eina_Bool *response)218{
219*selected_files = eina_list_append(NULL,220strdup("/path/to/non_existing_file"));221*response = EINA_TRUE;222return NULL;223}
224
225static void226_console_message_hook(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, const char *message, unsigned int line_number, const char *source_id)227{
228printf("CONSOLE: %s:%u:%s\n", source_id, line_number, message);229}
230
231static void232_js_popup_hooks_set(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)233{
234Web_Test *wt = data;235
236wt->js_hooks = !wt->js_hooks;237if (wt->js_hooks)238{239elm_web_dialog_alert_hook_set(wt->web, _alert_hook, NULL);240elm_web_dialog_confirm_hook_set(wt->web, _confirm_hook, NULL);241elm_web_dialog_prompt_hook_set(wt->web, _prompt_hook, NULL);242elm_web_dialog_file_selector_hook_set(wt->web, _file_selector_hook,243NULL);244elm_web_console_message_hook_set(wt->web, _console_message_hook, NULL);245}246else247{248elm_web_dialog_alert_hook_set(wt->web, NULL, NULL);249elm_web_dialog_confirm_hook_set(wt->web, NULL, NULL);250elm_web_dialog_prompt_hook_set(wt->web, NULL, NULL);251elm_web_dialog_file_selector_hook_set(wt->web, NULL, NULL);252elm_web_console_message_hook_set(wt->web, NULL, NULL);253}254}
255
256static void257_zoom_out_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)258{
259Web_Test *wt = data;260double zoom;261
262zoom = elm_web_zoom_get(wt->web);263if (zoom > 1)264zoom -= .5;265else266zoom /= 2;267if (zoom < .05)268zoom = .05;269elm_web_zoom_set(wt->web, zoom);270}
271
272static void273_zoom_in_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)274{
275Web_Test *wt = data;276double zoom;277
278zoom = elm_web_zoom_get(wt->web);279
280if (zoom < 1)281zoom *= 2;282else283zoom += .5;284if (zoom > 4)285zoom = 4;286elm_web_zoom_set(wt->web, zoom);287}
288
289static void290_zoom_mode_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)291{
292Web_Test *wt = data;293Elm_Object_Item *hoversel_it = event_info;294const char *lbl = elm_object_item_text_get(hoversel_it);295
296if (!strcmp(lbl, "Manual"))297elm_web_zoom_mode_set(wt->web, ELM_WEB_ZOOM_MODE_MANUAL);298else if (!strcmp(lbl, "Fit"))299elm_web_zoom_mode_set(wt->web, ELM_WEB_ZOOM_MODE_AUTO_FIT);300else301elm_web_zoom_mode_set(wt->web, ELM_WEB_ZOOM_MODE_AUTO_FILL);302}
303
304static void305_show_region_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)306{
307Web_Test *wt = data;308elm_web_region_show(wt->web, 300, 300, 1, 1);309}
310
311static void312_bring_in_region_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)313{
314Web_Test *wt = data;315elm_web_region_bring_in(wt->web, 50, 0, 1, 1);316}
317
318static void319_on_fullscreen_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)320{
321Web_Test *wt = data;322elm_box_unpack(wt->bx, wt->hoversel);323evas_object_hide(wt->hoversel);324}
325
326static void327_on_unfullscreen_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)328{
329Web_Test *wt = data;330elm_box_pack_start(wt->bx, wt->hoversel);331evas_object_show(wt->hoversel);332}
333
334typedef struct335{
336const char* name;337const char* useragent;338} User_Agent;339
340static User_Agent ua[] = {341{"Default", NULL},342{"Mobile/Iphone", "Mozilla/5.0 (iPhone; CPU iPhone OS 6_1 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B142 Safari/8536.25"},343{"Mobile/Android(Chrome)", "Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76B) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19"},344{"Mobile/Android", "Mozilla/5.0 (Linux; U; Android 4.0.2; en-us; Galaxy Nexus Build/ICL53F) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30"},345{"Desktop/Firefox", "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0"},346{"Desktop/Chrome", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"}347};348
349static void350_useragent_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info)351{
352Web_Test *wt = data;353Elm_Object_Item *hoversel_it = event_info;354const char *lbl = elm_object_item_text_get(hoversel_it);355unsigned i;356
357for (i = 0; i < sizeof(ua) / sizeof(ua[0]); ++i)358if (!strcmp(lbl, ua[i].name))359{360printf("New user agent : %s\n", ua[i].useragent ? ua[i].useragent : "Default");361elm_web_useragent_set(wt->web, ua[i].useragent);362}363}
364
365static void366_dialog_test_cb(void *data, Evas_Object *obj, void *event_info)367{
368Web_Test *wt = data;369const char *selected = elm_object_item_text_get(event_info);370const char dialog_html[] = "<!doctype html><body>"371"<script>"372"var confirm_test = function() {"373" if (window.confirm('confirm') == true) {"374" document.getElementById('r').innerHTML = 'You pressed OK';"375" } else {"376" document.getElementById('r').innerHTML = 'You pressed Cancel';"377" }"378"};"379"var prompt_test = function() {"380" document.getElementById('r').innerHTML = window.prompt('Enter your name', 'EFL');"381"};"382"</script>"383"Result: <div id='r'> </div>"384"<input type='button' value='alert' onclick=\"window.alert('alert pressed');\">"385"<input type='button' value='confirm' onclick=\"confirm_test();\">"386"<input type='button' value='prompt' onclick=\"prompt_test();\">"387"</body>";388
389printf("selected test : %s\n", selected);390elm_object_text_set(obj, selected);391
392elm_web_html_string_load(wt->web, dialog_html, NULL, NULL);393}
394
395static void396_select_tag_test_cb(void *data, Evas_Object *obj, void *event_info)397{
398Web_Test *wt = data;399const char *selected = elm_object_item_text_get(event_info);400const char select_html[] = "<!doctype html><body>"401"<select>"402"<option>eina</option>"403"<option>ecore</option>"404"<option>evas</option>"405"<option>edje</option>"406"<option>eet</option>"407"<option>emotion</option>"408"<option>elementary</option>"409"</select>"410"</body>";411
412printf("selected test : %s\n", selected);413elm_object_text_set(obj, selected);414
415elm_web_html_string_load(wt->web, select_html, NULL, NULL);416}
417
418static void419_new_window_test_cb(void *data, Evas_Object *obj, void *event_info)420{
421Web_Test *wt = data;422const char *selected = elm_object_item_text_get(event_info);423const char new_window_html[] = "<!doctype html><body>"424"<script>"425"var h = null;"426"var test = function() {"427" if (!h) {"428" h = window.open('http://www.enlightenment.org','','width=400,height=300');"429" document.getElementById('btn').value='close window';"430" } else {"431" h.close();"432" h = null;"433" document.getElementById('btn').value='open new window';"434" }"435"}"436"</script>"437"<input type='button' id='btn' onclick='test();' value='open new window'>"438"</body>";439
440printf("selected test : %s\n", selected);441elm_object_text_set(obj, selected);442
443elm_web_html_string_load(wt->web, new_window_html, NULL, NULL);444}
445
446static void447_fullscreen_test_cb(void *data, Evas_Object *obj, void *event_info)448{
449Web_Test *wt = data;450const char *selected = elm_object_item_text_get(event_info);451const char fullscreen_html[] = "<!doctype html><body>"452"<script>"453"var launch = function(obj) {"454" var f = document.webkitFullscreenElement;"455" if (f) document.webkitExitFullscreen();"456" if (f != obj) obj.webkitRequestFullscreen();"457"}\n"458"var test_full = function() { launch(document.documentElement); }\n"459"var test_small = function() { launch(document.getElementById('box')); }\n"460"</script>"461"<input type='button' onclick='test_full();' value='request fullscreen'>"462"<div id='box' style='width:100px;height:100px;background-color:blue;' onclick='test_small();'>small box</div>"463"<input type='button' onclick='test_small();' value='request fullscreen of box'>"464"</body>";465
466printf("selected test : %s\n", selected);467elm_object_text_set(obj, selected);468
469elm_web_html_string_load(wt->web, fullscreen_html, NULL, NULL);470}
471
472static void473_main_web_del_cb(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)474{
475Web_Test *wt = data;476Evas_Object *sub_win;477
478EINA_LIST_FREE(wt->sub_wins, sub_win)479evas_object_del(sub_win);480
481free(wt);482}
483
484void
485test_web(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)486{
487Evas_Object *win, *bx, *bx2, *bt, *web, *url;488Web_Test *wt;489unsigned i;490
491elm_need_web();492
493wt = calloc(1, sizeof(*wt));494win = elm_win_util_standard_add("web", "Web");495
496elm_win_autodel_set(win, EINA_TRUE);497
498bx = elm_box_add(win);499evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);500elm_win_resize_object_add(win, bx);501evas_object_show(bx);502
503bx2 = elm_box_add(win);504elm_box_horizontal_set(bx2, EINA_TRUE);505evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0);506evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, 0.0);507elm_box_pack_end(bx, bx2);508evas_object_show(bx2);509
510web = elm_web_add(win);511evas_object_size_hint_weight_set(web, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);512evas_object_size_hint_align_set(web, EVAS_HINT_FILL, EVAS_HINT_FILL);513elm_box_pack_end(bx, web);514evas_object_show(web);515
516bt = elm_button_add(win);517elm_object_text_set(bt, "<");518elm_box_pack_end(bx2, bt);519evas_object_show(bt);520
521evas_object_smart_callback_add(bt, "clicked", _btn_back_cb, web);522wt->btn_back = bt;523
524bt = elm_button_add(win);525elm_object_text_set(bt, "R");526elm_box_pack_end(bx2, bt);527evas_object_show(bt);528
529evas_object_smart_callback_add(bt, "clicked", _btn_reload_cb, web);530
531bt = elm_button_add(win);532elm_object_text_set(bt, ">");533elm_box_pack_end(bx2, bt);534evas_object_show(bt);535
536evas_object_smart_callback_add(bt, "clicked", _btn_fwd_cb, web);537wt->btn_fwd = bt;538
539url = elm_entry_add(win);540elm_entry_single_line_set(url, EINA_TRUE);541elm_entry_scrollable_set(url, EINA_TRUE);542evas_object_size_hint_weight_set(url, EVAS_HINT_EXPAND, 0);543evas_object_size_hint_align_set(url, EVAS_HINT_FILL, EVAS_HINT_FILL);544elm_box_pack_end(bx2, url);545evas_object_show(url);546
547evas_object_smart_callback_add(url, "activated", _url_entry_changed_cb, web);548wt->url_entry = url;549
550bx2 = elm_box_add(win);551elm_box_horizontal_set(bx2, EINA_TRUE);552evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0);553evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, 0);554elm_box_pack_end(bx, bx2);555evas_object_show(bx2);556
557bt = elm_button_add(win);558elm_object_text_set(bt, "Inwin Mode");559elm_box_pack_end(bx2, bt);560evas_object_show(bt);561
562evas_object_smart_callback_add(bt, "clicked", _toggle_inwin_mode_cb, web);563
564bt = elm_button_add(win);565elm_object_text_set(bt, "Custom Hooks");566elm_box_pack_end(bx2, bt);567evas_object_show(bt);568
569evas_object_smart_callback_add(bt, "clicked", _js_popup_hooks_set, wt);570
571bt = elm_button_add(win);572elm_object_text_set(bt, "-");573elm_box_pack_end(bx2, bt);574evas_object_show(bt);575
576evas_object_smart_callback_add(bt, "clicked", _zoom_out_cb, wt);577
578bt = elm_button_add(win);579elm_object_text_set(bt, "+");580elm_box_pack_end(bx2, bt);581evas_object_show(bt);582
583evas_object_smart_callback_add(bt, "clicked", _zoom_in_cb, wt);584
585bt = elm_hoversel_add(win);586elm_object_text_set(bt, "Zoom Mode");587elm_box_pack_end(bx2, bt);588evas_object_show(bt);589
590elm_hoversel_item_add(bt, "Manual", NULL, ELM_ICON_NONE, _zoom_mode_cb, wt);591elm_hoversel_item_add(bt, "Fit", NULL, ELM_ICON_NONE, _zoom_mode_cb, wt);592elm_hoversel_item_add(bt, "Fill", NULL, ELM_ICON_NONE, _zoom_mode_cb, wt);593
594bx2 = elm_box_add(win);595elm_box_horizontal_set(bx2, EINA_TRUE);596evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0);597evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, 0);598elm_box_pack_end(bx, bx2);599evas_object_show(bx2);600
601bt = elm_button_add(win);602elm_object_text_set(bt, "Show 300, 300");603elm_box_pack_end(bx2, bt);604evas_object_show(bt);605
606evas_object_smart_callback_add(bt, "clicked", _show_region_cb, wt);607
608bt = elm_button_add(win);609elm_object_text_set(bt, "Bring in 50, 0");610elm_box_pack_end(bx2, bt);611evas_object_show(bt);612
613evas_object_smart_callback_add(bt, "clicked", _bring_in_region_cb, wt);614
615bt = elm_hoversel_add(win);616elm_object_text_set(bt, "User agent");617elm_box_pack_end(bx2, bt);618evas_object_show(bt);619
620for (i = 0; i < sizeof(ua) / sizeof(ua[0]); ++i)621elm_hoversel_item_add(bt, ua[i].name, NULL, ELM_ICON_NONE, _useragent_cb, wt);622
623evas_object_smart_callback_add(web, "title,changed", _title_changed_cb, win);624evas_object_smart_callback_add(web, "url,changed", _url_changed_cb, wt);625
626evas_object_event_callback_add(web, EVAS_CALLBACK_DEL, _main_web_del_cb, wt);627
628wt->web = web;629
630elm_web_url_set(web, "http://www.enlightenment.org");631
632elm_web_window_create_hook_set(web, _new_window_hook, wt);633
634evas_object_resize(win, 320 * elm_config_scale_get(),635480 * elm_config_scale_get());636evas_object_show(win);637}
638
639void
640test_web_ui(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)641{
642Evas_Object *win, *bx, *web, *hoversel;643Web_Test *wt;644
645elm_need_web();646
647wt = calloc(1, sizeof(*wt));648win = elm_win_util_standard_add("web", "Web");649
650evas_object_smart_callback_add(win, "fullscreen", _on_fullscreen_cb, wt);651evas_object_smart_callback_add(win, "unfullscreen", _on_unfullscreen_cb, wt);652elm_win_autodel_set(win, EINA_TRUE);653
654bx = elm_box_add(win);655evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);656elm_win_resize_object_add(win, bx);657evas_object_show(bx);658
659hoversel = elm_hoversel_add(bx);660elm_hoversel_hover_parent_set(hoversel, win);661elm_object_text_set(hoversel, "Test cases");662
663elm_hoversel_item_add(hoversel, "alert/confirm/prompt", NULL, ELM_ICON_NONE,664_dialog_test_cb, wt);665elm_hoversel_item_add(hoversel, "<select> tag", NULL, ELM_ICON_NONE,666_select_tag_test_cb, wt);667elm_hoversel_item_add(hoversel, "new window", NULL, ELM_ICON_NONE,668_new_window_test_cb, wt);669elm_hoversel_item_add(hoversel, "fullscreen", NULL, ELM_ICON_NONE,670_fullscreen_test_cb, wt);671elm_box_pack_end(bx, hoversel);672evas_object_show(hoversel);673
674web = elm_web_add(win);675evas_object_size_hint_weight_set(web, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);676evas_object_size_hint_align_set(web, EVAS_HINT_FILL, EVAS_HINT_FILL);677elm_box_pack_end(bx, web);678evas_object_show(web);679
680elm_web_window_create_hook_set(web, _new_window_hook, wt);681
682evas_object_event_callback_add(web, EVAS_CALLBACK_DEL, _main_web_del_cb, wt);683wt->web = web;684wt->bx = bx;685wt->hoversel = hoversel;686
687
688elm_web_html_string_load(wt->web,689"<!doctype html><body>Hello, WebKit/Efl</body>",690NULL, NULL);691
692evas_object_resize(win, 320 * elm_config_scale_get(),693480 * elm_config_scale_get());694evas_object_show(win);695}
696