summaryrefslogtreecommitdiffstats
path: root/WebKitTools/EWebLauncher/main.c
diff options
context:
space:
mode:
authorShimeng (Simon) Wang <swang@google.com>2010-12-07 17:22:45 -0800
committerShimeng (Simon) Wang <swang@google.com>2010-12-22 14:15:40 -0800
commit4576aa36e9a9671459299c7963ac95aa94beaea9 (patch)
tree3863574e050f168c0126ecb47c83319fab0972d8 /WebKitTools/EWebLauncher/main.c
parent55323ac613cc31553107b68603cb627264d22bb0 (diff)
downloadexternal_webkit-4576aa36e9a9671459299c7963ac95aa94beaea9.zip
external_webkit-4576aa36e9a9671459299c7963ac95aa94beaea9.tar.gz
external_webkit-4576aa36e9a9671459299c7963ac95aa94beaea9.tar.bz2
Merge WebKit at r73109: Initial merge by git.
Change-Id: I61f1a66d9642e3d8405d3ac6ccab2a53421c75d8
Diffstat (limited to 'WebKitTools/EWebLauncher/main.c')
-rw-r--r--WebKitTools/EWebLauncher/main.c67
1 files changed, 56 insertions, 11 deletions
diff --git a/WebKitTools/EWebLauncher/main.c b/WebKitTools/EWebLauncher/main.c
index 8ba58d8..5f417d0 100644
--- a/WebKitTools/EWebLauncher/main.c
+++ b/WebKitTools/EWebLauncher/main.c
@@ -60,6 +60,7 @@
#define MAX_ZOOM_LEVEL 13
static int currentZoomLevel = DEFAULT_ZOOM_LEVEL;
+static float currentZoom = 1.0;
// the zoom values are chosen to be like in Mozilla Firefox 3
static int zoomLevels[] = {30, 50, 67, 80, 90,
@@ -72,6 +73,12 @@ static Eina_List *windows = NULL;
static char *themePath = NULL;
+static const char *backingStores[] = {
+ "tiled",
+ "single",
+ NULL
+};
+
typedef struct _Window_Properties {
Eina_Bool toolbarsVisible:1;
Eina_Bool statusbarVisible:1;
@@ -101,6 +108,8 @@ static const Ecore_Getopt options = {
ECORE_GETOPT_CALLBACK_NOARGS
('E', "list-engines", "list ecore-evas engines.",
ecore_getopt_callback_ecore_evas_list_engines, NULL),
+ ECORE_GETOPT_CHOICE
+ ('b', "backing-store", "choose backing store to use.", backingStores),
ECORE_GETOPT_STORE_DEF_BOOL
('F', "fullscreen", "fullscreen mode.", 0),
ECORE_GETOPT_CALLBACK_ARGS
@@ -143,12 +152,13 @@ typedef struct _ELauncher {
Evas_Object *browser;
const char *theme;
const char *userAgent;
+ const char *backingStore;
Viewport viewport;
} ELauncher;
static void browserDestroy(Ecore_Evas *ee);
static void closeWindow(Ecore_Evas *ee);
-static int browserCreate(const char *url, const char *theme, const char *userAgent, Eina_Rectangle geometry, const char *engine, unsigned char isFullscreen, const char *databasePath);
+static int browserCreate(const char *url, const char *theme, const char *userAgent, Eina_Rectangle geometry, const char *engine, const char *backingStore, unsigned char isFullscreen, const char *databasePath);
static void
print_history(Eina_List *list)
@@ -183,7 +193,19 @@ print_history(Eina_List *list)
}
}
-static void
+static int
+nearest_zoom_level_get(float factor)
+{
+ int i, intFactor = (int)(factor * 100.0);
+ for (i = 0; zoomLevels[i] <= intFactor; i++) { }
+ printf("factor=%f, intFactor=%d, zoomLevels[%d]=%d, zoomLevels[%d]=%d\n",
+ factor, intFactor, i-1, zoomLevels[i-1], i, zoomLevels[i]);
+ if (intFactor - zoomLevels[i-1] < zoomLevels[i] - intFactor)
+ return i - 1;
+ return i;
+}
+
+static Eina_Bool
zoom_level_set(Evas_Object *webview, int level)
{
float factor = ((float) zoomLevels[level]) / 100.0;
@@ -192,7 +214,7 @@ zoom_level_set(Evas_Object *webview, int level)
evas_object_geometry_get(webview, &ox, &oy, NULL, NULL);
cx = mx - ox;
cy = my - oy;
- ewk_view_zoom_animated_set(webview, factor, 0.5, cx, cy);
+ return ewk_view_zoom_animated_set(webview, factor, 0.5, cx, cy);
}
static void
@@ -284,6 +306,10 @@ on_load_finished(void *user_data, Evas_Object *webview, void *event_info)
else
info("Failed loading page: %d %s \"%s\", url=%s\n",
err->code, err->domain, err->description, err->failing_url);
+
+ currentZoom = ewk_view_zoom_get(webview);
+ currentZoomLevel = nearest_zoom_level_get(currentZoom);
+ info("WebCore Zoom=%f, currentZoomLevel=%d\n", currentZoom, currentZoomLevel);
}
static void
@@ -557,17 +583,18 @@ on_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
info("Command::keyboard navigation toggle\n");*/
} else if (!strcmp(ev->key, "F7")) {
info("Zoom out (F7) was pressed.\n");
- if (currentZoomLevel > MIN_ZOOM_LEVEL)
- zoom_level_set(obj, --currentZoomLevel);
+ if (currentZoomLevel > MIN_ZOOM_LEVEL && zoom_level_set(obj, currentZoomLevel - 1))
+ currentZoomLevel--;
} else if (!strcmp(ev->key, "F8")) {
info("Zoom in (F8) was pressed.\n");
- if (currentZoomLevel < MAX_ZOOM_LEVEL)
- zoom_level_set(obj, ++currentZoomLevel);
+ if (currentZoomLevel < MAX_ZOOM_LEVEL && zoom_level_set(obj, currentZoomLevel + 1))
+ currentZoomLevel++;
} else if (!strcmp(ev->key, "F9")) {
info("Create new window (F9) was pressed.\n");
Eina_Rectangle geometry = {0, 0, 0, 0};
browserCreate("http://www.google.com",
- app->theme, app->userAgent, geometry, NULL, 0, NULL);
+ app->theme, app->userAgent, geometry, app-> backingStore,
+ NULL, 0, NULL);
} else if (!strcmp(ev->key, "F10")) {
Evas_Coord x, y, w, h;
Evas_Object *frame = ewk_view_frame_main_get(obj);
@@ -580,6 +607,15 @@ on_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
h *= 4;
info("Pre-render %d,%d + %dx%d\n", x, y, w, h);
ewk_view_pre_render_region(obj, x, y, w, h, zoom);
+ } else if (!strcmp(ev->key, "F11")) {
+ info("Pre-render 1 extra column/row with current zoom");
+ ewk_view_pre_render_relative_radius(obj, 1);
+ } else if (!strcmp(ev->key, "d")) {
+ info("Render suspended");
+ ewk_view_disable_render(obj);
+ } else if (!strcmp(ev->key, "e")) {
+ info("Render resumed");
+ ewk_view_enable_render(obj);
}
}
@@ -622,7 +658,7 @@ quit(Eina_Bool success, const char *msg)
}
static int
-browserCreate(const char *url, const char *theme, const char *userAgent, Eina_Rectangle geometry, const char *engine, unsigned char isFullscreen, const char *databasePath)
+browserCreate(const char *url, const char *theme, const char *userAgent, Eina_Rectangle geometry, const char *engine, const char *backingStore, unsigned char isFullscreen, const char *databasePath)
{
if ((geometry.w <= 0) && (geometry.h <= 0)) {
geometry.w = DEFAULT_WIDTH;
@@ -652,6 +688,7 @@ browserCreate(const char *url, const char *theme, const char *userAgent, Eina_Re
app->theme = theme;
app->userAgent = userAgent;
+ app->backingStore = backingStore;
app->bg = evas_object_rectangle_add(app->evas);
evas_object_name_set(app->bg, "bg");
@@ -660,8 +697,14 @@ browserCreate(const char *url, const char *theme, const char *userAgent, Eina_Re
evas_object_resize(app->bg, geometry.w, geometry.h);
evas_object_layer_set(app->bg, EVAS_LAYER_MIN);
evas_object_show(app->bg);
- app->browser = ewk_view_single_add(app->evas);
+ if (backingStore && !strcasecmp(backingStore, "single")) {
+ app->browser = ewk_view_single_add(app->evas);
+ info("backing store: single\n");
+ } else {
+ app->browser = ewk_view_tiled_add(app->evas);
+ info("backing store: tiled\n");
+ }
ewk_view_theme_set(app->browser, theme);
if (userAgent)
ewk_view_setting_user_agent_set(app->browser, userAgent);
@@ -783,6 +826,7 @@ main(int argc, char *argv[])
char *engine = NULL;
char *theme = NULL;
+ char *backingStore = (char *)backingStores[0];
unsigned char quitOption = 0;
unsigned char isFullscreen = 0;
@@ -792,6 +836,7 @@ main(int argc, char *argv[])
Ecore_Getopt_Value values[] = {
ECORE_GETOPT_VALUE_STR(engine),
ECORE_GETOPT_VALUE_BOOL(quitOption),
+ ECORE_GETOPT_VALUE_STR(backingStore),
ECORE_GETOPT_VALUE_BOOL(isFullscreen),
ECORE_GETOPT_VALUE_PTR_CAST(geometry),
ECORE_GETOPT_VALUE_STR(theme),
@@ -847,7 +892,7 @@ main(int argc, char *argv[])
if (proxyUri)
ewk_settings_proxy_uri_set(proxyUri);
- browserCreate(url, themePath, userAgent, geometry, engine, isFullscreen, path);
+ browserCreate(url, themePath, userAgent, geometry, engine, backingStore, isFullscreen, path);
ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, main_signal_exit, &windows);
ecore_main_loop_begin();