From 399e9e7e43b5d3b4d5c3e89d36775df067fcaf2d Mon Sep 17 00:00:00 2001 From: Dongseong Hwang Date: Thu, 27 Jun 2013 16:43:34 +0300 Subject: [PATCH 1/2] Avoid Evas_Object definition to support various version of efl library. --- content/browser/web_contents/web_contents_view_efl.h | 2 +- content/shell/shell.h | 3 +-- content/shell/shell_efl.cc | 1 - ui/base/efl/ewk_view_wrapper.cc | 2 -- ui/base/efl/ewk_view_wrapper.h | 2 +- 5 files changed, 3 insertions(+), 7 deletions(-) diff --git a/content/browser/web_contents/web_contents_view_efl.h b/content/browser/web_contents/web_contents_view_efl.h index c0f8de84cd49d..926c2cb3446b8 100644 --- a/content/browser/web_contents/web_contents_view_efl.h +++ b/content/browser/web_contents/web_contents_view_efl.h @@ -13,7 +13,7 @@ #include "content/port/browser/render_view_host_delegate_view.h" #include "content/port/browser/web_contents_view_port.h" -typedef struct _Evas_Object Evas_Object; +#include namespace content { diff --git a/content/shell/shell.h b/content/shell/shell.h index 51aa0bbbb4be5..0d772eb9140c4 100644 --- a/content/shell/shell.h +++ b/content/shell/shell.h @@ -19,8 +19,7 @@ #include "ui/gfx/size.h" #if defined(TOOLKIT_EFL) -typedef struct _Evas Evas; -typedef struct _Evas_Object Evas_Object; +#include #elif defined(TOOLKIT_GTK) #include #include "ui/base/gtk/gtk_signal.h" diff --git a/content/shell/shell_efl.cc b/content/shell/shell_efl.cc index 206d49f248151..d3d225832de84 100644 --- a/content/shell/shell_efl.cc +++ b/content/shell/shell_efl.cc @@ -8,7 +8,6 @@ #include #include #include -#include #include diff --git a/ui/base/efl/ewk_view_wrapper.cc b/ui/base/efl/ewk_view_wrapper.cc index 40cb31b7599d2..61afb3b77f40d 100644 --- a/ui/base/efl/ewk_view_wrapper.cc +++ b/ui/base/efl/ewk_view_wrapper.cc @@ -1,7 +1,5 @@ #include "ui/base/efl/ewk_view_wrapper.h" -#include - namespace ui { EwkViewWrapper::EwkViewWrapper() diff --git a/ui/base/efl/ewk_view_wrapper.h b/ui/base/efl/ewk_view_wrapper.h index a191bdeceb908..2768fa53d154f 100644 --- a/ui/base/efl/ewk_view_wrapper.h +++ b/ui/base/efl/ewk_view_wrapper.h @@ -4,7 +4,7 @@ #include "base/basictypes.h" #include "ui/base/ui_export.h" -typedef struct _Evas_Object Evas_Object; +#include namespace ui { From 47d134db3f46f87bac5bff1cd13d23c1ba2d9e22 Mon Sep 17 00:00:00 2001 From: Dongseong Hwang Date: Fri, 28 Jun 2013 14:25:43 +0300 Subject: [PATCH 2/2] initial commit for efl_webview 1. build efl_webview library make efl_webview 2. build efl_webview_example executable make efl_webview_example --- build/all.gyp | 1 + efl_webview/DEPS | 4 ++ efl_webview/efl_webview.gyp | 110 +++++++++++++++++++++++++++++++++++ efl_webview/examples/main.cc | 88 ++++++++++++++++++++++++++++ efl_webview/lib/dummy.cc | 2 + 5 files changed, 205 insertions(+) create mode 100644 efl_webview/DEPS create mode 100644 efl_webview/efl_webview.gyp create mode 100644 efl_webview/examples/main.cc create mode 100644 efl_webview/lib/dummy.cc diff --git a/build/all.gyp b/build/all.gyp index 14d4888e72d4f..9043af8808461 100644 --- a/build/all.gyp +++ b/build/all.gyp @@ -14,6 +14,7 @@ '../chrome/chrome.gyp:*', '../content/content.gyp:*', '../crypto/crypto.gyp:*', + '../efl_webview/efl_webview.gyp:*', '../media/media.gyp:*', '../net/net.gyp:*', '../sdch/sdch.gyp:*', diff --git a/efl_webview/DEPS b/efl_webview/DEPS new file mode 100644 index 0000000000000..321c9ffd0ef34 --- /dev/null +++ b/efl_webview/DEPS @@ -0,0 +1,4 @@ +include_rules = [ + "+content", + "+media/base", # For initializing media library. +] diff --git a/efl_webview/efl_webview.gyp b/efl_webview/efl_webview.gyp new file mode 100644 index 0000000000000..5e8a61e842d16 --- /dev/null +++ b/efl_webview/efl_webview.gyp @@ -0,0 +1,110 @@ +{ + 'variables': { + 'efl_webview_product_name': 'EFL WebView', + # TODO: define efl webview version format. + 'cameo_version': '0.28.0.1', + 'conditions': [ + ['OS=="linux"', { + 'use_custom_freetype%': 1, + }, { + 'use_custom_freetype%': 0, + }], + ], # conditions + }, + 'targets': [ + { + 'target_name': 'efl_webview', + 'type': 'static_library', + 'defines!': ['CONTENT_IMPLEMENTATION'], + 'variables': { + 'chromium_code': 1, + }, + 'dependencies': [ + '../base/base.gyp:base', + '../base/third_party/dynamic_annotations/dynamic_annotations.gyp:dynamic_annotations', + '../build/temp_gyp/googleurl.gyp:googleurl', + '../content/content.gyp:content_app', + '../content/content.gyp:content_browser', + '../content/content.gyp:content_common', + '../content/content.gyp:content_gpu', + '../content/content.gyp:content_plugin', + '../content/content.gyp:content_ppapi_plugin', + '../content/content.gyp:content_renderer', + '../content/content.gyp:content_utility', + '../content/content.gyp:content_worker', + '../content/content_resources.gyp:content_resources', + '../ipc/ipc.gyp:ipc', + '../media/media.gyp:media', + '../net/net.gyp:net', + '../net/net.gyp:net_resources', + '../skia/skia.gyp:skia', + '../third_party/WebKit/Source/WebKit/chromium/WebKit.gyp:webkit', + '../ui/gl/gl.gyp:gl', + '../ui/ui.gyp:ui', + '../v8/tools/gyp/v8.gyp:v8', + '../webkit/support/webkit_support.gyp:webkit_resources', + '../webkit/support/webkit_support.gyp:webkit_support', + ], + 'include_dirs': [ + '..', + ], + 'sources': [ + 'lib/dummy.cc' + ], + 'conditions': [ + ['OS=="linux"', { + 'dependencies': [ + '../build/linux/system.gyp:fontconfig', + ], + }], # OS=="linux" + ['os_posix==1 and linux_use_tcmalloc==1', { + 'dependencies': [ + # This is needed by content/app/content_main_runner.cc + '../base/allocator/allocator.gyp:allocator', + ], + }], # os_posix==1 and linux_use_tcmalloc==1 + ['use_custom_freetype==1', { + 'dependencies': [ + '../third_party/freetype2/freetype2.gyp:freetype2', + ], + }], # use_custom_freetype==1 + ['toolkit_uses_gtk == 1', { + 'dependencies': [ + '<(DEPTH)/build/linux/system.gyp:gtk', + ], + }], # toolkit_uses_gtk + ['toolkit_uses_efl == 1', { + 'dependencies': [ + '../build/linux/system.gyp:efl', + ], + }], + ], + }, + { + 'target_name': 'efl_webview_example', + 'type': 'executable', + 'defines!': ['CONTENT_IMPLEMENTATION'], + 'dependencies': [ + 'efl_webview', + ], + 'include_dirs': [ + '..', + ], + 'sources': [ + 'examples/main.cc', + ], + 'conditions': [ + ['toolkit_uses_gtk == 1', { + 'dependencies': [ + '<(DEPTH)/build/linux/system.gyp:gtk', + ], + }], # toolkit_uses_gtk + ['toolkit_uses_efl == 1', { + 'dependencies': [ + '../build/linux/system.gyp:efl', + ], + }], + ], + }, + ], +} diff --git a/efl_webview/examples/main.cc b/efl_webview/examples/main.cc new file mode 100644 index 0000000000000..ab58e8f626194 --- /dev/null +++ b/efl_webview/examples/main.cc @@ -0,0 +1,88 @@ +// Copyright (c) 2013 Intel Corporation. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include +#include +#include + +static const char APP_NAME[] = "EFL WebView Example"; + +static int window_width = 800; +static int window_height = 600; + +static void +on_back_button_clicked(void *user_data, Evas_Object *back_button, void *event_info) +{ +} + +static void +on_forward_button_clicked(void *user_data, Evas_Object *forward_button, void *event_info) +{ +} + +static void window_create() +{ + /* Create window */ + Evas_Object* elm_window = elm_win_util_standard_add("efl-webview-window", APP_NAME); + elm_win_autodel_set(elm_window, EINA_TRUE); + + /* Create vertical layout */ + Evas_Object* vertical_layout = elm_box_add(elm_window); + elm_box_padding_set(vertical_layout, 0, 2); + evas_object_size_hint_weight_set(vertical_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + elm_win_resize_object_add(elm_window, vertical_layout); + evas_object_show(vertical_layout); + + /* Create horizontal layout for top bar */ + Evas_Object* horizontal_layout = elm_box_add(elm_window); + elm_box_horizontal_set(horizontal_layout, EINA_TRUE); + evas_object_size_hint_weight_set(horizontal_layout, EVAS_HINT_EXPAND, 0.0); + evas_object_size_hint_align_set(horizontal_layout, EVAS_HINT_FILL, 0.0); + elm_box_pack_end(vertical_layout, horizontal_layout); + evas_object_show(horizontal_layout); + + /* Create Back button */ + Evas_Object* back_button = elm_button_add(elm_window); + elm_object_text_set(back_button, "BACK"); + evas_object_smart_callback_add(back_button, "clicked", on_back_button_clicked, 0 /* webview */); + evas_object_size_hint_weight_set(back_button, 0.0, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(back_button, 0.0, 0.5); + elm_box_pack_end(horizontal_layout, back_button); + evas_object_show(back_button); + + /* Create Forward button */ + Evas_Object* forward_button = elm_button_add(elm_window); + elm_object_text_set(forward_button, "FORWARD"); + evas_object_smart_callback_add(forward_button, "clicked", on_forward_button_clicked, 0 /* webview */); + evas_object_size_hint_weight_set(forward_button, 0.0, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(forward_button, 0.0, 0.5); + elm_box_pack_end(horizontal_layout, forward_button); + evas_object_show(forward_button); + + /* Create Dummy WebView */ + Evas_Object* webview = evas_object_rectangle_add(evas_object_evas_get(elm_window)); + evas_object_color_set(webview, 255, 0, 0, 255); + evas_object_size_hint_weight_set(webview, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); + evas_object_size_hint_align_set(webview, EVAS_HINT_FILL, EVAS_HINT_FILL); + elm_box_pack_end(vertical_layout, webview); + evas_object_focus_set(webview, EINA_TRUE); + evas_object_show(webview); + + evas_object_resize(elm_window, window_width, window_height); + evas_object_show(elm_window); +} + +int main(int argc, char *argv[]) +{ + elm_init(argc, argv); + + elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED); + + window_create(); + + elm_run(); + elm_shutdown(); + + return 0; +} diff --git a/efl_webview/lib/dummy.cc b/efl_webview/lib/dummy.cc new file mode 100644 index 0000000000000..a39080144fbb8 --- /dev/null +++ b/efl_webview/lib/dummy.cc @@ -0,0 +1,2 @@ +void foo() { +}