diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-09 09:42:44 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-09 09:42:44 +0100 |
commit | a59391482883479a9b28a6f1ace6d1ebd08a7ecd (patch) | |
tree | fa539db054a20a67bff2fc891c33b0f4ec632916 /Tools/MiniBrowser | |
parent | cfd86b747d32ac22246a1aa908eaa720c63a88c1 (diff) | |
download | qtwebkit-a59391482883479a9b28a6f1ace6d1ebd08a7ecd.tar.gz |
Imported WebKit commit 7bcdfab9a40db7d16b4b95bb77d78b8a59c9e701 (http://svn.webkit.org/repository/webkit/trunk@134025)
New snapshot with numerious build fixes, including MSVC 2012 and ARM Thumb-2.
Diffstat (limited to 'Tools/MiniBrowser')
-rw-r--r-- | Tools/MiniBrowser/efl/main.c | 125 |
1 files changed, 114 insertions, 11 deletions
diff --git a/Tools/MiniBrowser/efl/main.c b/Tools/MiniBrowser/efl/main.c index 23193eb5f..e982a7117 100644 --- a/Tools/MiniBrowser/efl/main.c +++ b/Tools/MiniBrowser/efl/main.c @@ -39,6 +39,7 @@ static const int TOOL_BAR_BUTTON_SIZE = 32; static int verbose = 1; static Eina_List *windows = NULL; static char *evas_engine_name = NULL; +static Eina_Bool encoding_detector_enabled = EINA_FALSE; static Eina_Bool frame_flattening_enabled = EINA_FALSE; static int window_width = 800; static int window_height = 600; @@ -73,6 +74,8 @@ static const Ecore_Getopt options = { ('E', "list-engines", "list ecore-evas engines.", ecore_getopt_callback_ecore_evas_list_engines, NULL), ECORE_GETOPT_STORE_DEF_BOOL + ('c', "encoding-detector", "enable/disable encoding detector", EINA_FALSE), + ECORE_GETOPT_STORE_DEF_BOOL ('f', "flattening", "frame flattening.", EINA_FALSE), ECORE_GETOPT_VERSION ('V', "version"), @@ -136,9 +139,11 @@ static void window_close(Browser_Window *window) } static void -on_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info) +on_key_down(void *user_data, Evas *e, Evas_Object *webview, void *event_info) { + Browser_Window *window = (Browser_Window *)user_data; Evas_Event_Key_Down *ev = (Evas_Event_Key_Down*) event_info; + static const char *encodings[] = { "ISO-8859-1", "UTF-8", @@ -149,26 +154,26 @@ on_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info) if (!strcmp(ev->key, "F1")) { info("Back (F1) was pressed\n"); - if (!ewk_view_back(obj)) + if (!ewk_view_back(webview)) info("Back ignored: No back history\n"); } else if (!strcmp(ev->key, "F2")) { info("Forward (F2) was pressed\n"); - if (!ewk_view_forward(obj)) + if (!ewk_view_forward(webview)) info("Forward ignored: No forward history\n"); } else if (!strcmp(ev->key, "F3")) { currentEncoding = (currentEncoding + 1) % (sizeof(encodings) / sizeof(encodings[0])); info("Set encoding (F3) pressed. New encoding to %s", encodings[currentEncoding]); - ewk_view_setting_encoding_custom_set(obj, encodings[currentEncoding]); + ewk_view_setting_encoding_custom_set(webview, encodings[currentEncoding]); } else if (!strcmp(ev->key, "F5")) { info("Reload (F5) was pressed, reloading.\n"); - ewk_view_reload(obj); + ewk_view_reload(webview); } else if (!strcmp(ev->key, "F6")) { info("Stop (F6) was pressed, stop loading.\n"); - ewk_view_stop(obj); + ewk_view_stop(webview); } else if (!strcmp(ev->key, "F7")) { - Ewk_Pagination_Mode mode = ewk_view_pagination_mode_get(obj); + Ewk_Pagination_Mode mode = ewk_view_pagination_mode_get(webview); mode = (++mode) % (EWK_PAGINATION_MODE_BOTTOM_TO_TOP + 1); - if (ewk_view_pagination_mode_set(obj, mode)) + if (ewk_view_pagination_mode_set(webview, mode)) info("Change Pagination Mode (F7) was pressed, changed to: %d\n", mode); else info("Change Pagination Mode (F7) was pressed, but NOT changed!"); @@ -178,7 +183,10 @@ on_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info) windows = eina_list_append(windows, window); } else if (!strcmp(ev->key, "i") && ctrlPressed) { info("Show Inspector (Ctrl+i) was pressed.\n"); - ewk_view_inspector_show(obj); + ewk_view_inspector_show(webview); + } else if (!strcmp(ev->key, "Escape")) { + if (elm_win_fullscreen_get(window->window)) + ewk_view_fullscreen_exit(webview); } } @@ -333,7 +341,7 @@ static void close_file_picker(FileSelectorData* fs_data) { evas_object_event_callback_del(fs_data->parent, EVAS_CALLBACK_DEL, on_filepicker_parent_deletion); evas_object_del(fs_data->window); - ewk_file_chooser_request_unref(fs_data->request); + ewk_object_unref(fs_data->request); free(fs_data); } @@ -376,7 +384,7 @@ on_file_chooser_request(void *user_data, Evas_Object *webview, void *event_info) FileSelectorData* fs_data = (FileSelectorData*)malloc(sizeof(FileSelectorData)); fs_data->parent = app_data->window; fs_data->window = window; - fs_data->request = ewk_file_chooser_request_ref(request); + fs_data->request = ewk_object_ref(request); evas_object_smart_callback_add(window, "delete,request", on_filepicker_deletion, fs_data); evas_object_event_callback_add(app_data->window, EVAS_CALLBACK_DEL, on_filepicker_parent_deletion, fs_data); @@ -655,6 +663,94 @@ on_javascript_prompt(Ewk_View_Smart_Data *smartData, const char *message, const return prompt_text; } +static Eina_Bool on_window_geometry_get(Ewk_View_Smart_Data *sd, Evas_Coord *x, Evas_Coord *y, Evas_Coord *width, Evas_Coord *height) +{ + Browser_Window *window = browser_view_find(sd->self); + + evas_object_geometry_get(window->window, x, y, width, height); + + return EINA_TRUE; +} + +static Eina_Bool on_window_geometry_set(Ewk_View_Smart_Data *sd, Evas_Coord x, Evas_Coord y, Evas_Coord width, Evas_Coord height) +{ + Browser_Window *window = browser_view_find(sd->self); + + evas_object_move(window->window, x, y); + evas_object_resize(window->window, width, height); + + return EINA_TRUE; +} + +typedef struct { + Evas_Object *webview; + Evas_Object *permission_popup; +} PermissionData; + +static void +on_fullscreen_accept(void *user_data, Evas_Object *obj, void *event_info) +{ + PermissionData *permission_data = (PermissionData *)user_data; + + evas_object_del(permission_data->permission_popup); + free(permission_data); +} + +static void +on_fullscreen_deny(void *user_data, Evas_Object *obj, void *event_info) +{ + PermissionData *permission_data = (PermissionData *)user_data; + + ewk_view_fullscreen_exit(permission_data->webview); + evas_object_del(permission_data->permission_popup); + free(permission_data); +} + +static Eina_Bool on_fullscreen_enter(Ewk_View_Smart_Data *sd, Ewk_Security_Origin *origin) +{ + Browser_Window *window = browser_view_find(sd->self); + + /* Go fullscreen */ + elm_win_fullscreen_set(window->window, EINA_TRUE); + + /* Show user popup */ + Evas_Object *permission_popup = elm_popup_add(window->window); + evas_object_size_hint_weight_set(permission_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + + Eina_Strbuf *message = eina_strbuf_new(); + eina_strbuf_append_printf(message, "%s is now fullscreen.<br>Press ESC at any time to exit fullscreen.<br>Allow fullscreen?", ewk_security_origin_host_get(origin)); + elm_object_text_set(permission_popup, eina_strbuf_string_get(message)); + eina_strbuf_free(message); + elm_object_part_text_set(permission_popup, "title,text", "Fullscreen Permission"); + + /* Popup buttons */ + PermissionData *permission_data = (PermissionData *)malloc(sizeof(PermissionData)); + permission_data->webview = window->webview; + permission_data->permission_popup = permission_popup; + Evas_Object *accept_button = elm_button_add(permission_popup); + elm_object_text_set(accept_button, "Accept"); + elm_object_part_content_set(permission_popup, "button1", accept_button); + evas_object_smart_callback_add(accept_button, "clicked", on_fullscreen_accept, permission_data); + + Evas_Object *deny_button = elm_button_add(permission_popup); + elm_object_text_set(deny_button, "Deny"); + elm_object_part_content_set(permission_popup, "button2", deny_button); + evas_object_smart_callback_add(deny_button, "clicked", on_fullscreen_deny, permission_data); + + evas_object_show(permission_popup); + + return EINA_TRUE; +} + +static Eina_Bool on_fullscreen_exit(Ewk_View_Smart_Data *sd) +{ + Browser_Window *window = browser_view_find(sd->self); + + elm_win_fullscreen_set(window->window, EINA_FALSE); + + return EINA_TRUE; +} + typedef struct { Evas_Object *popup; Ewk_Auth_Request *request; @@ -925,6 +1021,10 @@ static Browser_Window *window_create(const char *url) ewkViewClass->run_javascript_alert = on_javascript_alert; ewkViewClass->run_javascript_confirm = on_javascript_confirm; ewkViewClass->run_javascript_prompt = on_javascript_prompt; + ewkViewClass->window_geometry_get = on_window_geometry_get; + ewkViewClass->window_geometry_set = on_window_geometry_set; + ewkViewClass->fullscreen_enter = on_fullscreen_enter; + ewkViewClass->fullscreen_exit = on_fullscreen_exit; Evas *evas = evas_object_evas_get(app_data->window); Evas_Smart *smart = evas_smart_class_new(&ewkViewClass->sc); @@ -933,8 +1033,10 @@ static Browser_Window *window_create(const char *url) Ewk_Settings *settings = ewk_view_settings_get(app_data->webview); ewk_settings_file_access_from_file_urls_allowed_set(settings, EINA_TRUE); + ewk_settings_encoding_detector_enabled_set(settings, encoding_detector_enabled); ewk_settings_frame_flattening_enabled_set(settings, frame_flattening_enabled); ewk_settings_developer_extras_enabled_set(settings, EINA_TRUE); + ewk_settings_preferred_minimum_contents_width_set(settings, 0); evas_object_smart_callback_add(app_data->webview, "authentication,request", on_authentication_request, app_data); evas_object_smart_callback_add(app_data->webview, "close,window", on_close_window, app_data); @@ -1008,6 +1110,7 @@ elm_main(int argc, char *argv[]) ECORE_GETOPT_VALUE_STR(evas_engine_name), ECORE_GETOPT_VALUE_STR(window_size_string), ECORE_GETOPT_VALUE_BOOL(quitOption), + ECORE_GETOPT_VALUE_BOOL(encoding_detector_enabled), ECORE_GETOPT_VALUE_BOOL(frame_flattening_enabled), ECORE_GETOPT_VALUE_BOOL(quitOption), ECORE_GETOPT_VALUE_BOOL(quitOption), |