2011-09-29 13:58:22 -07:00
# ifdef HAVE_CONFIG_H
# include "elementary_config.h"
# endif
2012-03-29 12:27:13 -07:00
# include <Elementary.h>
2013-11-04 00:54:31 -08:00
2011-09-29 13:58:22 -07:00
typedef struct
{
Evas_Object * web ;
Evas_Object * btn_back ;
Evas_Object * btn_fwd ;
Evas_Object * url_entry ;
2014-03-20 07:28:53 -07:00
Evas_Object * bx ;
Evas_Object * hoversel ;
2011-09-29 13:58:22 -07:00
Eina_List * sub_wins ;
Eina_Bool js_hooks : 1 ;
} Web_Test ;
static void
2013-08-31 18:18:03 -07:00
_btn_back_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-09-29 13:58:22 -07:00
{
Evas_Object * web = data ;
elm_web_back ( web ) ;
}
static void
2013-08-31 18:18:03 -07:00
_btn_fwd_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-09-29 13:58:22 -07:00
{
Evas_Object * web = data ;
elm_web_forward ( web ) ;
}
static void
2013-08-31 18:18:03 -07:00
_btn_reload_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-09-29 13:58:22 -07:00
{
Evas_Object * web = data ;
elm_web_reload ( web ) ;
}
static void
2013-08-31 18:18:03 -07:00
_url_entry_changed_cb ( void * data , Evas_Object * obj , void * event_info EINA_UNUSED )
2011-09-29 13:58:22 -07:00
{
Evas_Object * web = data ;
2013-06-12 18:21:17 -07:00
const char * url = elm_object_text_get ( obj ) ;
2011-09-29 13:58:22 -07:00
2013-06-12 18:21:17 -07:00
elm_web_url_set ( web , url ) ;
2011-09-29 13:58:22 -07:00
}
static void
2013-08-31 18:18:03 -07:00
_toggle_inwin_mode_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-09-29 13:58:22 -07:00
{
elm_web_inwin_mode_set ( data , ! elm_web_inwin_mode_get ( data ) ) ;
}
static void
2013-08-31 18:18:03 -07:00
_title_changed_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info )
2011-09-29 13:58:22 -07:00
{
char buf [ 512 ] ;
snprintf ( buf , sizeof ( buf ) , " Web - %s " , ( const char * ) event_info ) ;
elm_win_title_set ( data , buf ) ;
}
static void
2013-08-31 18:18:03 -07:00
_url_changed_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info )
2011-09-29 13:58:22 -07:00
{
Web_Test * wt = data ;
2011-12-30 02:02:19 -08:00
elm_object_text_set ( wt - > url_entry , event_info ) ;
2011-09-29 13:58:22 -07:00
2012-03-07 07:56:09 -08:00
elm_object_disabled_set ( wt - > btn_back , ! elm_web_back_possible_get ( wt - > web ) ) ;
elm_object_disabled_set ( wt - > btn_fwd , ! elm_web_forward_possible_get ( wt - > web ) ) ;
2011-09-29 13:58:22 -07:00
}
static void
2013-08-31 18:18:03 -07:00
_new_win_del_cb ( void * data , Evas_Object * obj , void * event_info EINA_UNUSED )
2011-09-29 13:58:22 -07:00
{
Web_Test * wt = data ;
wt - > sub_wins = eina_list_remove ( wt - > sub_wins , obj ) ;
}
static void
2013-08-31 18:18:03 -07:00
_web_win_close_request_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-09-29 13:58:22 -07:00
{
evas_object_del ( data ) ;
}
static Evas_Object *
2013-12-23 04:25:25 -08:00
_new_window_hook ( void * data , Evas_Object * obj , Eina_Bool js EINA_UNUSED , const Elm_Web_Window_Features * wf EINA_UNUSED )
2011-09-29 13:58:22 -07:00
{
Web_Test * wt = data ;
2012-04-01 23:20:28 -07:00
Evas_Object * new_win , * new_web ;
2011-09-29 13:58:22 -07:00
2012-04-01 23:20:28 -07:00
new_win = elm_win_util_standard_add ( " elm-web-test-popup " , " Elm Web Test Popup " ) ;
2011-09-29 13:58:22 -07:00
elm_win_autodel_set ( new_win , EINA_TRUE ) ;
evas_object_resize ( new_win , 300 , 300 ) ;
evas_object_show ( new_win ) ;
new_web = elm_web_add ( new_win ) ;
2013-12-23 04:25:25 -08:00
elm_web_useragent_set ( new_web , elm_web_useragent_get ( obj ) ) ;
2012-11-14 02:49:45 -08:00
evas_object_size_hint_weight_set ( new_web , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2011-09-29 13:58:22 -07:00
elm_win_resize_object_add ( new_win , new_web ) ;
evas_object_show ( new_web ) ;
evas_object_smart_callback_add ( new_win , " delete,request " , _new_win_del_cb ,
wt ) ;
evas_object_smart_callback_add ( new_web , " windows,close,request " ,
_web_win_close_request_cb , new_win ) ;
wt - > sub_wins = eina_list_append ( wt - > sub_wins , new_win ) ;
return new_web ;
}
static void
2013-08-31 18:18:03 -07:00
_alert_del ( void * data EINA_UNUSED , Evas_Object * obj , void * event_info EINA_UNUSED )
2011-09-29 13:58:22 -07:00
{
evas_object_del ( obj ) ;
}
static Evas_Object *
2013-08-31 18:18:03 -07:00
_alert_hook ( void * data EINA_UNUSED , Evas_Object * obj , const char * message )
2011-09-29 13:58:22 -07:00
{
Evas_Object * popup , * label ;
popup = elm_notify_add ( obj ) ;
2012-11-06 11:54:16 -08:00
elm_notify_align_set ( popup , 0.5 , 0.5 ) ;
2011-09-29 13:58:22 -07:00
// Using the timeout doesn't seem to go well with the second main loop
//elm_notify_timeout_set(popup, 2.0);
2012-03-05 01:50:32 -08:00
elm_notify_allow_events_set ( popup , EINA_FALSE ) ;
2011-09-29 13:58:22 -07:00
evas_object_show ( popup ) ;
evas_object_smart_callback_add ( popup , " block,clicked " , _alert_del , NULL ) ;
label = elm_label_add ( obj ) ;
elm_object_text_set ( label , message ) ;
2011-10-28 21:32:24 -07:00
elm_object_content_set ( popup , label ) ;
2011-09-29 13:58:22 -07:00
evas_object_show ( label ) ;
return popup ;
}
static void
2013-08-31 18:18:03 -07:00
_confirm_ok_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-09-29 13:58:22 -07:00
{
Eina_Bool * response = data ;
* response = EINA_TRUE ;
}
static void
2013-08-31 18:18:03 -07:00
_confirm_cancel_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-09-29 13:58:22 -07:00
{
Eina_Bool * response = data ;
* response = EINA_FALSE ;
}
static void
2013-08-31 18:18:03 -07:00
_confirm_dismiss_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-09-29 13:58:22 -07:00
{
evas_object_del ( data ) ;
}
static Evas_Object *
2013-08-31 18:18:03 -07:00
_confirm_hook ( void * data EINA_UNUSED , Evas_Object * obj , const char * message , Eina_Bool * response )
2011-09-29 13:58:22 -07:00
{
Evas_Object * popup , * box , * box2 , * label , * btn_ok , * btn_cancel ;
popup = elm_notify_add ( obj ) ;
2012-11-06 11:54:16 -08:00
elm_notify_align_set ( popup , 0.5 , 0.5 ) ;
2012-03-05 01:50:32 -08:00
elm_notify_allow_events_set ( popup , EINA_FALSE ) ;
2011-09-29 13:58:22 -07:00
evas_object_show ( popup ) ;
box = elm_box_add ( obj ) ;
2011-10-28 21:32:24 -07:00
elm_object_content_set ( popup , box ) ;
2011-09-29 13:58:22 -07:00
evas_object_show ( box ) ;
label = elm_label_add ( obj ) ;
elm_object_text_set ( label , message ) ;
elm_box_pack_end ( box , label ) ;
evas_object_show ( label ) ;
box2 = elm_box_add ( obj ) ;
elm_box_horizontal_set ( box2 , EINA_TRUE ) ;
elm_box_pack_end ( box , box2 ) ;
evas_object_show ( box2 ) ;
btn_ok = elm_button_add ( obj ) ;
elm_object_text_set ( btn_ok , " Ok " ) ;
elm_box_pack_end ( box2 , btn_ok ) ;
evas_object_show ( btn_ok ) ;
btn_cancel = elm_button_add ( obj ) ;
elm_object_text_set ( btn_cancel , " Cancel " ) ;
elm_box_pack_end ( box2 , btn_cancel ) ;
evas_object_show ( btn_cancel ) ;
evas_object_smart_callback_add ( btn_ok , " clicked " , _confirm_dismiss_cb ,
popup ) ;
evas_object_smart_callback_add ( btn_cancel , " clicked " , _confirm_dismiss_cb ,
popup ) ;
evas_object_smart_callback_add ( btn_ok , " clicked " , _confirm_ok_cb , response ) ;
evas_object_smart_callback_add ( btn_cancel , " clicked " , _confirm_cancel_cb ,
response ) ;
return popup ;
}
static Evas_Object *
2013-08-31 18:18:03 -07:00
_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 )
2011-09-29 13:58:22 -07:00
{
* response = EINA_TRUE ;
* value = default_value ? strdup ( default_value ) : " No default! " ;
return NULL ;
}
static Evas_Object *
2013-08-31 18:18:03 -07:00
_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 )
2011-09-29 13:58:22 -07:00
{
* selected_files = eina_list_append ( NULL ,
strdup ( " /path/to/non_existing_file " ) ) ;
* response = EINA_TRUE ;
return NULL ;
}
2011-09-29 14:45:27 -07:00
static void
2013-08-31 18:18:03 -07:00
_console_message_hook ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , const char * message , unsigned int line_number , const char * source_id )
2011-09-29 14:45:27 -07:00
{
2012-10-03 19:42:26 -07:00
printf ( " CONSOLE: %s:%u:%s \n " , source_id , line_number , message ) ;
2011-09-29 14:45:27 -07:00
}
2011-09-29 13:58:22 -07:00
static void
2013-08-31 18:18:03 -07:00
_js_popup_hooks_set ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-09-29 13:58:22 -07:00
{
Web_Test * wt = data ;
wt - > js_hooks = ! wt - > js_hooks ;
if ( wt - > js_hooks )
{
elm_web_dialog_alert_hook_set ( wt - > web , _alert_hook , NULL ) ;
elm_web_dialog_confirm_hook_set ( wt - > web , _confirm_hook , NULL ) ;
elm_web_dialog_prompt_hook_set ( wt - > web , _prompt_hook , NULL ) ;
elm_web_dialog_file_selector_hook_set ( wt - > web , _file_selector_hook ,
NULL ) ;
2011-09-29 14:45:27 -07:00
elm_web_console_message_hook_set ( wt - > web , _console_message_hook , NULL ) ;
2011-09-29 13:58:22 -07:00
}
else
{
elm_web_dialog_alert_hook_set ( wt - > web , NULL , NULL ) ;
elm_web_dialog_confirm_hook_set ( wt - > web , NULL , NULL ) ;
elm_web_dialog_prompt_hook_set ( wt - > web , NULL , NULL ) ;
elm_web_dialog_file_selector_hook_set ( wt - > web , NULL , NULL ) ;
2011-09-29 14:45:27 -07:00
elm_web_console_message_hook_set ( wt - > web , NULL , NULL ) ;
2011-09-29 13:58:22 -07:00
}
}
2011-10-09 15:10:45 -07:00
static void
2013-08-31 18:18:03 -07:00
_zoom_out_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-10-09 15:10:45 -07:00
{
Web_Test * wt = data ;
double zoom ;
zoom = elm_web_zoom_get ( wt - > web ) ;
if ( zoom > 1 )
zoom - = .5 ;
else
zoom / = 2 ;
if ( zoom < .05 )
zoom = .05 ;
elm_web_zoom_set ( wt - > web , zoom ) ;
}
static void
2013-08-31 18:18:03 -07:00
_zoom_in_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-10-09 15:10:45 -07:00
{
Web_Test * wt = data ;
double zoom ;
zoom = elm_web_zoom_get ( wt - > web ) ;
if ( zoom < 1 )
zoom * = 2 ;
else
zoom + = .5 ;
if ( zoom > 4 )
zoom = 4 ;
elm_web_zoom_set ( wt - > web , zoom ) ;
}
static void
2013-08-31 18:18:03 -07:00
_zoom_mode_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info )
2011-10-09 15:10:45 -07:00
{
Web_Test * wt = data ;
2011-12-19 17:03:17 -08:00
Elm_Object_Item * hoversel_it = event_info ;
2011-12-19 18:44:46 -08:00
const char * lbl = elm_object_item_text_get ( hoversel_it ) ;
2011-10-09 15:10:45 -07:00
if ( ! strcmp ( lbl , " Manual " ) )
elm_web_zoom_mode_set ( wt - > web , ELM_WEB_ZOOM_MODE_MANUAL ) ;
else if ( ! strcmp ( lbl , " Fit " ) )
elm_web_zoom_mode_set ( wt - > web , ELM_WEB_ZOOM_MODE_AUTO_FIT ) ;
else
elm_web_zoom_mode_set ( wt - > web , ELM_WEB_ZOOM_MODE_AUTO_FILL ) ;
}
static void
2013-08-31 18:18:03 -07:00
_show_region_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-10-09 15:10:45 -07:00
{
Web_Test * wt = data ;
elm_web_region_show ( wt - > web , 300 , 300 , 1 , 1 ) ;
}
static void
2013-08-31 18:18:03 -07:00
_bring_in_region_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-10-09 15:10:45 -07:00
{
Web_Test * wt = data ;
elm_web_region_bring_in ( wt - > web , 50 , 0 , 1 , 1 ) ;
}
2014-03-20 07:28:53 -07:00
static void
_on_fullscreen_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
{
Web_Test * wt = data ;
elm_box_unpack ( wt - > bx , wt - > hoversel ) ;
evas_object_hide ( wt - > hoversel ) ;
}
static void
_on_unfullscreen_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
{
Web_Test * wt = data ;
elm_box_pack_start ( wt - > bx , wt - > hoversel ) ;
evas_object_show ( wt - > hoversel ) ;
}
2013-12-23 04:25:25 -08:00
typedef struct
{
const char * name ;
const char * useragent ;
} User_Agent ;
static User_Agent ua [ ] = {
{ " Default " , NULL } ,
{ " 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 " } ,
{ " 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 " } ,
{ " 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 " } ,
{ " Desktop/Firefox " , " Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0 " } ,
{ " Desktop/Chrome " , " Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17 " }
} ;
static void
_useragent_cb ( void * data , Evas_Object * obj EINA_UNUSED , void * event_info )
{
Web_Test * wt = data ;
Elm_Object_Item * hoversel_it = event_info ;
const char * lbl = elm_object_item_text_get ( hoversel_it ) ;
unsigned i ;
for ( i = 0 ; i < sizeof ( ua ) / sizeof ( ua [ 0 ] ) ; + + i )
if ( ! strcmp ( lbl , ua [ i ] . name ) )
{
printf ( " New user agent : %s \n " , ua [ i ] . useragent ? ua [ i ] . useragent : " Default " ) ;
elm_web_useragent_set ( wt - > web , ua [ i ] . useragent ) ;
}
}
2014-04-21 09:42:53 -07:00
static void
_dialog_test_cb ( void * data , Evas_Object * obj , void * event_info )
{
Web_Test * wt = data ;
const char * selected = elm_object_item_text_get ( event_info ) ;
const char dialog_html [ ] = " <!doctype html><body> "
" <script> "
" var confirm_test = function() { "
" if (window.confirm('confirm') == true) { "
" document.getElementById('r').innerHTML = 'You pressed OK'; "
" } else { "
" document.getElementById('r').innerHTML = 'You pressed Cancel'; "
" } "
" }; "
" var prompt_test = function() { "
" document.getElementById('r').innerHTML = window.prompt('Enter your name', 'EFL'); "
" }; "
" </script> "
" Result: <div id='r'> </div> "
" <input type='button' value='alert' onclick= \" window.alert('alert pressed'); \" > "
" <input type='button' value='confirm' onclick= \" confirm_test(); \" > "
" <input type='button' value='prompt' onclick= \" prompt_test(); \" > "
" </body> " ;
printf ( " selected test : %s \n " , selected ) ;
elm_object_text_set ( obj , selected ) ;
elm_web_html_string_load ( wt - > web , dialog_html , NULL , NULL ) ;
}
2014-01-25 19:20:03 -08:00
static void
_select_tag_test_cb ( void * data , Evas_Object * obj , void * event_info )
{
Web_Test * wt = data ;
const char * selected = elm_object_item_text_get ( event_info ) ;
const char select_html [ ] = " <!doctype html><body> "
" <select> "
" <option>eina</option> "
" <option>ecore</option> "
" <option>evas</option> "
" <option>edje</option> "
" <option>eet</option> "
" <option>emotion</option> "
" <option>elementary</option> "
" </select> "
" </body> " ;
printf ( " selected test : %s \n " , selected ) ;
elm_object_text_set ( obj , selected ) ;
elm_web_html_string_load ( wt - > web , select_html , NULL , NULL ) ;
}
static void
_new_window_test_cb ( void * data , Evas_Object * obj , void * event_info )
{
Web_Test * wt = data ;
const char * selected = elm_object_item_text_get ( event_info ) ;
const char new_window_html [ ] = " <!doctype html><body> "
" <script> "
2014-03-08 19:21:58 -08:00
" var h = null; "
" var test = function() { "
" if (!h) { "
" h = window.open('http://www.enlightenment.org','','width=400,height=300'); "
" document.getElementById('btn').value='close window'; "
" } else { "
" h.close(); "
" h = null; "
" document.getElementById('btn').value='open new window'; "
" } "
" } "
2014-01-25 19:20:03 -08:00
" </script> "
2014-03-08 19:21:58 -08:00
" <input type='button' id='btn' onclick='test();' value='open new window'> "
2014-01-25 19:20:03 -08:00
" </body> " ;
printf ( " selected test : %s \n " , selected ) ;
elm_object_text_set ( obj , selected ) ;
elm_web_html_string_load ( wt - > web , new_window_html , NULL , NULL ) ;
}
2014-03-12 08:41:48 -07:00
static void
_fullscreen_test_cb ( void * data , Evas_Object * obj , void * event_info )
{
Web_Test * wt = data ;
const char * selected = elm_object_item_text_get ( event_info ) ;
const char fullscreen_html [ ] = " <!doctype html><body> "
" <script> "
" var launch = function(obj) { "
" var f = document.webkitFullscreenElement; "
" if (f) document.webkitExitFullscreen(); "
" if (f != obj) obj.webkitRequestFullscreen(); "
" } \n "
" var test_full = function() { launch(document.documentElement); } \n "
" var test_small = function() { launch(document.getElementById('box')); } \n "
" </script> "
" <input type='button' onclick='test_full();' value='request fullscreen'> "
" <div id='box' style='width:100px;height:100px;background-color:blue;' onclick='test_small();'>small box</div> "
" <input type='button' onclick='test_small();' value='request fullscreen of box'> "
" </body> " ;
printf ( " selected test : %s \n " , selected ) ;
elm_object_text_set ( obj , selected ) ;
elm_web_html_string_load ( wt - > web , fullscreen_html , NULL , NULL ) ;
}
2011-09-29 13:58:22 -07:00
static void
2013-08-31 18:18:03 -07:00
_main_web_del_cb ( void * data , Evas * e EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-09-29 13:58:22 -07:00
{
Web_Test * wt = data ;
Evas_Object * sub_win ;
EINA_LIST_FREE ( wt - > sub_wins , sub_win )
evas_object_del ( sub_win ) ;
free ( wt ) ;
}
void
2013-12-23 04:25:25 -08:00
test_web ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
2011-09-29 13:58:22 -07:00
{
2012-04-01 23:20:28 -07:00
Evas_Object * win , * bx , * bx2 , * bt , * web , * url ;
2011-09-29 13:58:22 -07:00
Web_Test * wt ;
2013-12-23 04:25:25 -08:00
unsigned i ;
2011-09-29 13:58:22 -07:00
elm_need_web ( ) ;
wt = calloc ( 1 , sizeof ( * wt ) ) ;
2013-12-23 04:25:25 -08:00
win = elm_win_util_standard_add ( " web " , " Web " ) ;
2012-01-06 03:31:14 -08:00
2011-09-29 13:58:22 -07:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
bx = elm_box_add ( win ) ;
evas_object_size_hint_weight_set ( bx , EVAS_HINT_EXPAND , EVAS_HINT_EXPAND ) ;
2012-11-14 02:49:45 -08:00
elm_win_resize_object_add ( win , bx ) ;
2011-09-29 13:58:22 -07:00
evas_object_show ( bx ) ;
bx2 = elm_box_add ( win ) ;
elm_box_horizontal_set ( bx2 , EINA_TRUE ) ;
evas_object_size_hint_weight_set ( bx2 , EVAS_HINT_EXPAND , 0 ) ;
evas_object_size_hint_align_set ( bx2 , EVAS_HINT_FILL , 0.0 ) ;
elm_box_pack_end ( bx , bx2 ) ;
evas_object_show ( bx2 ) ;
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 ) ;
bt = elm_button_add ( win ) ;
elm_object_text_set ( bt , " < " ) ;
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
evas_object_smart_callback_add ( bt , " clicked " , _btn_back_cb , web ) ;
wt - > btn_back = bt ;
bt = elm_button_add ( win ) ;
elm_object_text_set ( bt , " R " ) ;
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
evas_object_smart_callback_add ( bt , " clicked " , _btn_reload_cb , web ) ;
bt = elm_button_add ( win ) ;
elm_object_text_set ( bt , " > " ) ;
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
evas_object_smart_callback_add ( bt , " clicked " , _btn_fwd_cb , web ) ;
wt - > btn_fwd = bt ;
url = elm_entry_add ( win ) ;
elm_entry_single_line_set ( url , EINA_TRUE ) ;
elm_entry_scrollable_set ( url , EINA_TRUE ) ;
evas_object_size_hint_weight_set ( url , EVAS_HINT_EXPAND , 0 ) ;
evas_object_size_hint_align_set ( url , EVAS_HINT_FILL , EVAS_HINT_FILL ) ;
elm_box_pack_end ( bx2 , url ) ;
evas_object_show ( url ) ;
2013-06-12 18:21:17 -07:00
evas_object_smart_callback_add ( url , " activated " , _url_entry_changed_cb , web ) ;
2011-09-29 13:58:22 -07:00
wt - > url_entry = url ;
bx2 = elm_box_add ( win ) ;
elm_box_horizontal_set ( bx2 , EINA_TRUE ) ;
evas_object_size_hint_weight_set ( bx2 , EVAS_HINT_EXPAND , 0 ) ;
evas_object_size_hint_align_set ( bx2 , EVAS_HINT_FILL , 0 ) ;
elm_box_pack_end ( bx , bx2 ) ;
evas_object_show ( bx2 ) ;
bt = elm_button_add ( win ) ;
elm_object_text_set ( bt , " Inwin Mode " ) ;
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
evas_object_smart_callback_add ( bt , " clicked " , _toggle_inwin_mode_cb , web ) ;
bt = elm_button_add ( win ) ;
elm_object_text_set ( bt , " Custom Hooks " ) ;
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
evas_object_smart_callback_add ( bt , " clicked " , _js_popup_hooks_set , wt ) ;
2011-10-09 15:10:45 -07:00
bt = elm_button_add ( win ) ;
elm_object_text_set ( bt , " - " ) ;
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
evas_object_smart_callback_add ( bt , " clicked " , _zoom_out_cb , wt ) ;
bt = elm_button_add ( win ) ;
elm_object_text_set ( bt , " + " ) ;
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
evas_object_smart_callback_add ( bt , " clicked " , _zoom_in_cb , wt ) ;
bt = elm_hoversel_add ( win ) ;
elm_object_text_set ( bt , " Zoom Mode " ) ;
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
elm_hoversel_item_add ( bt , " Manual " , NULL , ELM_ICON_NONE , _zoom_mode_cb , wt ) ;
elm_hoversel_item_add ( bt , " Fit " , NULL , ELM_ICON_NONE , _zoom_mode_cb , wt ) ;
elm_hoversel_item_add ( bt , " Fill " , NULL , ELM_ICON_NONE , _zoom_mode_cb , wt ) ;
bx2 = elm_box_add ( win ) ;
elm_box_horizontal_set ( bx2 , EINA_TRUE ) ;
evas_object_size_hint_weight_set ( bx2 , EVAS_HINT_EXPAND , 0 ) ;
evas_object_size_hint_align_set ( bx2 , EVAS_HINT_FILL , 0 ) ;
elm_box_pack_end ( bx , bx2 ) ;
evas_object_show ( bx2 ) ;
bt = elm_button_add ( win ) ;
elm_object_text_set ( bt , " Show 300, 300 " ) ;
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
evas_object_smart_callback_add ( bt , " clicked " , _show_region_cb , wt ) ;
bt = elm_button_add ( win ) ;
elm_object_text_set ( bt , " Bring in 50, 0 " ) ;
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
evas_object_smart_callback_add ( bt , " clicked " , _bring_in_region_cb , wt ) ;
2013-12-23 04:25:25 -08:00
bt = elm_hoversel_add ( win ) ;
elm_object_text_set ( bt , " User agent " ) ;
elm_box_pack_end ( bx2 , bt ) ;
evas_object_show ( bt ) ;
for ( i = 0 ; i < sizeof ( ua ) / sizeof ( ua [ 0 ] ) ; + + i )
elm_hoversel_item_add ( bt , ua [ i ] . name , NULL , ELM_ICON_NONE , _useragent_cb , wt ) ;
2011-09-29 13:58:22 -07:00
evas_object_smart_callback_add ( web , " title,changed " , _title_changed_cb , win ) ;
2013-06-12 18:21:17 -07:00
evas_object_smart_callback_add ( web , " url,changed " , _url_changed_cb , wt ) ;
2011-09-29 13:58:22 -07:00
evas_object_event_callback_add ( web , EVAS_CALLBACK_DEL , _main_web_del_cb , wt ) ;
wt - > web = web ;
2013-06-12 18:21:17 -07:00
elm_web_url_set ( web , " http://www.enlightenment.org " ) ;
2011-09-29 13:58:22 -07:00
elm_web_window_create_hook_set ( web , _new_window_hook , wt ) ;
2021-11-25 02:17:45 -08:00
evas_object_resize ( win , 320 * elm_config_scale_get ( ) ,
480 * elm_config_scale_get ( ) ) ;
2011-09-29 13:58:22 -07:00
evas_object_show ( win ) ;
}
2013-12-27 05:23:21 -08:00
void
test_web_ui ( void * data EINA_UNUSED , Evas_Object * obj EINA_UNUSED , void * event_info EINA_UNUSED )
{
2014-01-25 19:20:03 -08:00
Evas_Object * win , * bx , * web , * hoversel ;
2013-12-27 05:23:21 -08:00
Web_Test * wt ;
elm_need_web ( ) ;
wt = calloc ( 1 , sizeof ( * wt ) ) ;
win = elm_win_util_standard_add ( " web " , " Web " ) ;
2014-03-20 07:28:53 -07:00
evas_object_smart_callback_add ( win , " fullscreen " , _on_fullscreen_cb , wt ) ;
evas_object_smart_callback_add ( win , " unfullscreen " , _on_unfullscreen_cb , wt ) ;
2013-12-27 05:23:21 -08:00
elm_win_autodel_set ( win , EINA_TRUE ) ;
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 ) ;
2014-01-25 19:20:03 -08:00
hoversel = elm_hoversel_add ( bx ) ;
elm_hoversel_hover_parent_set ( hoversel , win ) ;
elm_object_text_set ( hoversel , " Test cases " ) ;
2014-04-21 09:42:53 -07:00
elm_hoversel_item_add ( hoversel , " alert/confirm/prompt " , NULL , ELM_ICON_NONE ,
_dialog_test_cb , wt ) ;
2014-01-25 19:20:03 -08:00
elm_hoversel_item_add ( hoversel , " <select> tag " , NULL , ELM_ICON_NONE ,
_select_tag_test_cb , wt ) ;
elm_hoversel_item_add ( hoversel , " new window " , NULL , ELM_ICON_NONE ,
_new_window_test_cb , wt ) ;
2014-03-12 08:41:48 -07:00
elm_hoversel_item_add ( hoversel , " fullscreen " , NULL , ELM_ICON_NONE ,
_fullscreen_test_cb , wt ) ;
2014-01-25 19:20:03 -08:00
elm_box_pack_end ( bx , hoversel ) ;
evas_object_show ( hoversel ) ;
2013-12-27 05:23:21 -08:00
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 ) ;
2014-01-25 19:20:03 -08:00
elm_web_window_create_hook_set ( web , _new_window_hook , wt ) ;
2013-12-27 05:23:21 -08:00
evas_object_event_callback_add ( web , EVAS_CALLBACK_DEL , _main_web_del_cb , wt ) ;
wt - > web = web ;
2014-03-20 07:28:53 -07:00
wt - > bx = bx ;
wt - > hoversel = hoversel ;
2013-12-27 05:23:21 -08:00
2014-01-25 19:20:03 -08:00
2013-12-27 05:23:21 -08:00
elm_web_html_string_load ( wt - > web ,
" <!doctype html><body>Hello, WebKit/Efl</body> " ,
NULL , NULL ) ;
2021-11-25 02:17:45 -08:00
evas_object_resize ( win , 320 * elm_config_scale_get ( ) ,
480 * elm_config_scale_get ( ) ) ;
2013-12-27 05:23:21 -08:00
evas_object_show ( win ) ;
}