summaryrefslogtreecommitdiff
path: root/Tools/MiniBrowser
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-11-09 09:42:44 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2012-11-09 09:42:44 +0100
commita59391482883479a9b28a6f1ace6d1ebd08a7ecd (patch)
treefa539db054a20a67bff2fc891c33b0f4ec632916 /Tools/MiniBrowser
parentcfd86b747d32ac22246a1aa908eaa720c63a88c1 (diff)
downloadqtwebkit-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.c125
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),