Diff
Modified: trunk/Source/WebKit2/ChangeLog (132336 => 132337)
--- trunk/Source/WebKit2/ChangeLog 2012-10-24 11:57:47 UTC (rev 132336)
+++ trunk/Source/WebKit2/ChangeLog 2012-10-24 12:02:28 UTC (rev 132337)
@@ -1,3 +1,35 @@
+2012-10-24 Christophe Dumez <[email protected]> and Mikhail Pozdnyakov <[email protected]>
+
+ [EFL][WK2] Move Ewk_View_Private_Data out of ewk_view.cpp
+ https://bugs.webkit.org/show_bug.cgi?id=100228
+
+ Reviewed by Gyuyoung Kim.
+
+ Move Ewk_View_Private_Data out of ewk_view.cpp and
+ rename it to EwkViewImpl. This is a first step towards
+ getting rid of C'ism in Ewk_View.
+
+ In a future, we will make EwkViewImpl a proper C++
+ class and get rid of the private ewk_view C API so
+ that WebKit code interacts with EwkViewImpl instead
+ of Evas_Object.
+
+ * PlatformEfl.cmake:
+ * UIProcess/API/efl/EwkViewImpl.cpp: Added.
+ (_ewk_view_commit):
+ (_ewk_view_preedit_changed):
+ (_ewk_view_imf_context_destroy):
+ (_ewk_view_imf_context_create):
+ (EwkViewImpl::EwkViewImpl):
+ (EwkViewImpl::~EwkViewImpl):
+ * UIProcess/API/efl/EwkViewImpl.h: Added.
+ (WebKit):
+ (EwkViewImpl):
+ * UIProcess/API/efl/ewk_view.cpp:
+ (_ewk_view_priv_del):
+ (_ewk_view_smart_add):
+ * UIProcess/API/efl/ewk_view.h:
+
2012-10-24 Ryuan Choi <[email protected]>
[EFL][WK2] Crash when passing NULL instead of ewk_view instance
Modified: trunk/Source/WebKit2/PlatformEfl.cmake (132336 => 132337)
--- trunk/Source/WebKit2/PlatformEfl.cmake 2012-10-24 11:57:47 UTC (rev 132336)
+++ trunk/Source/WebKit2/PlatformEfl.cmake 2012-10-24 12:02:28 UTC (rev 132337)
@@ -42,6 +42,7 @@
UIProcess/API/C/soup/WKSoupRequestManager.cpp
UIProcess/API/efl/BatteryProvider.cpp
+ UIProcess/API/efl/EwkViewImpl.cpp
UIProcess/API/efl/PageViewportControllerClientEfl.cpp
UIProcess/API/efl/NetworkInfoProvider.cpp
UIProcess/API/efl/PageClientImpl.cpp
Added: trunk/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp (0 => 132337)
--- trunk/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.cpp 2012-10-24 12:02:28 UTC (rev 132337)
@@ -0,0 +1,144 @@
+/*
+ Copyright (C) 2011 Samsung Electronics
+ Copyright (C) 2012 Intel Corporation. All rights reserved.
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#include "config.h"
+#include "EwkViewImpl.h"
+
+#include "EflScreenUtilities.h"
+#include "FindClientEfl.h"
+#include "FormClientEfl.h"
+#include "PageClientImpl.h"
+#include "PageLoadClientEfl.h"
+#include "PagePolicyClientEfl.h"
+#include "PageUIClientEfl.h"
+#include "PageViewportController.h"
+#include "PageViewportControllerClientEfl.h"
+#include "ResourceLoadClientEfl.h"
+#include "WebPageProxy.h"
+#include "WebPopupMenuProxyEfl.h"
+#include "ewk_back_forward_list_private.h"
+#include "ewk_context_private.h"
+#include "ewk_favicon_database_private.h"
+#include "ewk_popup_menu_item_private.h"
+#include "ewk_settings_private.h"
+#include "ewk_view.h"
+#include "ewk_view_private.h"
+#include <Ecore_Evas.h>
+
+using namespace WebCore;
+using namespace WebKit;
+
+static void _ewk_view_commit(void* data, Ecore_IMF_Context*, void* eventInfo)
+{
+ Ewk_View_Smart_Data* smartData = static_cast<Ewk_View_Smart_Data*>(data);
+ EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv);
+ if (!eventInfo || !priv->isImfFocused)
+ return;
+
+ priv->pageProxy->confirmComposition(String::fromUTF8(static_cast<char*>(eventInfo)));
+}
+
+static void _ewk_view_preedit_changed(void* data, Ecore_IMF_Context* context, void*)
+{
+ Ewk_View_Smart_Data* smartData = static_cast<Ewk_View_Smart_Data*>(data);
+ EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv);
+
+ if (!priv->pageProxy->focusedFrame() || !priv->isImfFocused)
+ return;
+
+ char* buffer = 0;
+ ecore_imf_context_preedit_string_get(context, &buffer, 0);
+ if (!buffer)
+ return;
+
+ String preeditString = String::fromUTF8(buffer);
+ Vector<CompositionUnderline> underlines;
+ underlines.append(CompositionUnderline(0, preeditString.length(), Color(0, 0, 0), false));
+ priv->pageProxy->setComposition(preeditString, underlines, 0);
+}
+
+static void _ewk_view_imf_context_destroy(Ecore_IMF_Context* imfContext)
+{
+ if (!imfContext)
+ return;
+
+ ecore_imf_context_event_callback_del(imfContext, ECORE_IMF_CALLBACK_PREEDIT_CHANGED, _ewk_view_preedit_changed);
+ ecore_imf_context_event_callback_del(imfContext, ECORE_IMF_CALLBACK_COMMIT, _ewk_view_commit);
+ ecore_imf_context_del(imfContext);
+}
+
+static Ecore_IMF_Context* _ewk_view_imf_context_create(Ewk_View_Smart_Data* smartData)
+{
+ const char* defaultContextID = ecore_imf_context_default_id_get();
+ if (!defaultContextID)
+ return 0;
+
+ Ecore_IMF_Context* imfContext = ecore_imf_context_add(defaultContextID);
+ if (!imfContext)
+ return 0;
+
+ ecore_imf_context_event_callback_add(imfContext, ECORE_IMF_CALLBACK_PREEDIT_CHANGED, _ewk_view_preedit_changed, smartData);
+ ecore_imf_context_event_callback_add(imfContext, ECORE_IMF_CALLBACK_COMMIT, _ewk_view_commit, smartData);
+
+ Ecore_Evas* ecoreEvas = ecore_evas_ecore_evas_get(smartData->base.evas);
+ ecore_imf_context_client_window_set(imfContext, (void*)ecore_evas_window_get(ecoreEvas));
+ ecore_imf_context_client_canvas_set(imfContext, smartData->base.evas);
+
+ return imfContext;
+}
+
+EwkViewImpl::EwkViewImpl(Evas_Object* view)
+ : areMouseEventsEnabled(false)
+#if ENABLE(TOUCH_EVENTS)
+ , areTouchEventsEnabled(false)
+#endif
+ , popupMenuProxy(0)
+ , popupMenuItems(0)
+ , imfContext(0)
+ , isImfFocused(false)
+#ifdef HAVE_ECORE_X
+ , isUsingEcoreX(false)
+#endif
+#if USE(ACCELERATED_COMPOSITING)
+ , evasGl(0)
+ , evasGlContext(0)
+ , evasGlSurface(0)
+#endif
+ , m_view(view)
+{
+ ASSERT(view);
+ Ewk_View_Smart_Data* smartData = static_cast<Ewk_View_Smart_Data*>(evas_object_smart_data_get(view));
+ ASSERT(smartData);
+
+ imfContext = _ewk_view_imf_context_create(smartData);
+
+#ifdef HAVE_ECORE_X
+ isUsingEcoreX = WebCore::isUsingEcoreX(smartData->base.evas);
+#endif
+}
+
+EwkViewImpl::~EwkViewImpl()
+{
+ _ewk_view_imf_context_destroy(imfContext);
+
+ void* item;
+ EINA_LIST_FREE(popupMenuItems, item)
+ delete static_cast<Ewk_Popup_Menu_Item*>(item);
+}
Added: trunk/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h (0 => 132337)
--- trunk/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h (rev 0)
+++ trunk/Source/WebKit2/UIProcess/API/efl/EwkViewImpl.h 2012-10-24 12:02:28 UTC (rev 132337)
@@ -0,0 +1,122 @@
+/*
+ Copyright (C) 2011 Samsung Electronics
+ Copyright (C) 2012 Intel Corporation. All rights reserved.
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef EwkViewImpl_h
+#define EwkViewImpl_h
+
+#include "RefPtrEfl.h"
+#include "WKEinaSharedString.h"
+#include "WKRetainPtr.h"
+#include <Ecore_IMF.h>
+#include <Ecore_IMF_Evas.h>
+#include <Evas.h>
+#include <wtf/OwnPtr.h>
+#include <wtf/RefPtr.h>
+
+#define EWK_VIEW_PRIV_GET(smartData, priv) \
+ EwkViewImpl* priv = smartData->priv
+
+#define EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, ...) \
+ if (!smartData) { \
+ EINA_LOG_CRIT("smart data is null"); \
+ return __VA_ARGS__; \
+ } \
+ EWK_VIEW_PRIV_GET(smartData, priv); \
+ do { \
+ if (!priv) { \
+ EINA_LOG_CRIT("no private data for object %p (%s)", \
+ smartData->self, evas_object_type_get(smartData->self)); \
+ return __VA_ARGS__; \
+ } \
+ } while (0)
+
+namespace WebKit {
+class FindClientEfl;
+class FormClientEfl;
+class PageClientImpl;
+class PageLoadClientEfl;
+class PagePolicyClientEfl;
+class PageUIClientEfl;
+class PageViewportControllerClientEfl;
+class PageViewportController;
+class ResourceLoadClientEfl;
+class WebPageProxy;
+class WebPopupMenuProxyEfl;
+}
+
+class Ewk_Back_Forward_List;
+class Ewk_Context;
+class Ewk_Settings;
+
+class EwkViewImpl {
+public:
+ explicit EwkViewImpl(Evas_Object* view);
+ ~EwkViewImpl();
+
+ OwnPtr<WebKit::PageClientImpl> pageClient;
+#if USE(TILED_BACKING_STORE)
+ OwnPtr<WebKit::PageViewportControllerClientEfl> pageViewportControllerClient;
+ OwnPtr<WebKit::PageViewportController> pageViewportController;
+#endif
+ RefPtr<WebKit::WebPageProxy> pageProxy;
+ OwnPtr<WebKit::PageLoadClientEfl> pageLoadClient;
+ OwnPtr<WebKit::PagePolicyClientEfl> pagePolicyClient;
+ OwnPtr<WebKit::PageUIClientEfl> pageUIClient;
+ OwnPtr<WebKit::ResourceLoadClientEfl> resourceLoadClient;
+ OwnPtr<WebKit::FindClientEfl> findClient;
+ OwnPtr<WebKit::FormClientEfl> formClient;
+
+ WKEinaSharedString url;
+ WKEinaSharedString title;
+ WKEinaSharedString theme;
+ WKEinaSharedString customEncoding;
+ WKEinaSharedString cursorGroup;
+ WKEinaSharedString faviconURL;
+ RefPtr<Evas_Object> cursorObject;
+ OwnPtr<Ewk_Back_Forward_List> backForwardList;
+ OwnPtr<Ewk_Settings> settings;
+ bool areMouseEventsEnabled;
+ WKRetainPtr<WKColorPickerResultListenerRef> colorPickerResultListener;
+ RefPtr<Ewk_Context> context;
+#if ENABLE(TOUCH_EVENTS)
+ bool areTouchEventsEnabled;
+#endif
+
+ WebKit::WebPopupMenuProxyEfl* popupMenuProxy;
+ Eina_List* popupMenuItems;
+
+ Ecore_IMF_Context* imfContext;
+ bool isImfFocused;
+
+#ifdef HAVE_ECORE_X
+ bool isUsingEcoreX;
+#endif
+
+#if USE(ACCELERATED_COMPOSITING)
+ Evas_GL* evasGl;
+ Evas_GL_Context* evasGlContext;
+ Evas_GL_Surface* evasGlSurface;
+#endif
+
+private:
+ Evas_Object* m_view;
+};
+
+#endif // EwkViewImpl_h
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp (132336 => 132337)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp 2012-10-24 11:57:47 UTC (rev 132336)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.cpp 2012-10-24 12:02:28 UTC (rev 132337)
@@ -21,6 +21,7 @@
#include "config.h"
#include "ewk_view.h"
+#include "EwkViewImpl.h"
#include "FindClientEfl.h"
#include "FormClientEfl.h"
#include "NativeWebKeyboardEvent.h"
@@ -90,10 +91,6 @@
static const int defaultCursorSize = 16;
-static void _ewk_view_on_favicon_changed(const char* pageURL, void* eventInfo);
-static Ecore_IMF_Context* _ewk_view_imf_context_create(Ewk_View_Smart_Data* smartData);
-static void _ewk_view_imf_context_destroy(Ecore_IMF_Context* imfContext);
-
typedef HashMap<const WebPageProxy*, const Evas_Object*> PageViewMap;
static inline PageViewMap& pageViewMap()
@@ -118,85 +115,6 @@
pageViewMap().remove(ewk_view_page_get(ewkView));
}
-struct Ewk_View_Private_Data {
- OwnPtr<PageClientImpl> pageClient;
-#if USE(TILED_BACKING_STORE)
- OwnPtr<PageViewportControllerClientEfl> pageViewportControllerClient;
- OwnPtr<PageViewportController> pageViewportController;
-#endif
- RefPtr<WebPageProxy> pageProxy;
- OwnPtr<PageLoadClientEfl> pageLoadClient;
- OwnPtr<PagePolicyClientEfl> pagePolicyClient;
- OwnPtr<PageUIClientEfl> pageUIClient;
- OwnPtr<ResourceLoadClientEfl> resourceLoadClient;
- OwnPtr<FindClientEfl> findClient;
- OwnPtr<FormClientEfl> formClient;
-
- WKEinaSharedString url;
- WKEinaSharedString title;
- WKEinaSharedString theme;
- WKEinaSharedString customEncoding;
- WKEinaSharedString cursorGroup;
- WKEinaSharedString faviconURL;
- RefPtr<Evas_Object> cursorObject;
- OwnPtr<Ewk_Back_Forward_List> backForwardList;
- OwnPtr<Ewk_Settings> settings;
- bool areMouseEventsEnabled;
- WKRetainPtr<WKColorPickerResultListenerRef> colorPickerResultListener;
- RefPtr<Ewk_Context> context;
-#if ENABLE(TOUCH_EVENTS)
- bool areTouchEventsEnabled;
-#endif
-
- WebPopupMenuProxyEfl* popupMenuProxy;
- Eina_List* popupMenuItems;
-
- Ecore_IMF_Context* imfContext;
- bool isImfFocused;
-
-#ifdef HAVE_ECORE_X
- bool isUsingEcoreX;
-#endif
-
-#if USE(ACCELERATED_COMPOSITING)
- Evas_GL* evasGl;
- Evas_GL_Context* evasGlContext;
- Evas_GL_Surface* evasGlSurface;
-#endif
-
- Ewk_View_Private_Data()
- : areMouseEventsEnabled(false)
-#if ENABLE(TOUCH_EVENTS)
- , areTouchEventsEnabled(false)
-#endif
- , popupMenuProxy(0)
- , popupMenuItems(0)
- , imfContext(0)
- , isImfFocused(false)
-#ifdef HAVE_ECORE_X
- , isUsingEcoreX(false)
-#endif
-#if USE(ACCELERATED_COMPOSITING)
- , evasGl(0)
- , evasGlContext(0)
- , evasGlSurface(0)
-#endif
- { }
-
- ~Ewk_View_Private_Data()
- {
- _ewk_view_imf_context_destroy(imfContext);
-
- /* Unregister icon change callback */
- Ewk_Favicon_Database* iconDatabase = context->faviconDatabase();
- iconDatabase->unwatchChanges(_ewk_view_on_favicon_changed);
-
- void* item;
- EINA_LIST_FREE(popupMenuItems, item)
- delete static_cast<Ewk_Popup_Menu_Item*>(item);
- }
-};
-
#define EWK_VIEW_TYPE_CHECK(ewkView, result) \
bool result = true; \
do { \
@@ -247,23 +165,6 @@
} \
} while (0)
-#define EWK_VIEW_PRIV_GET(smartData, priv) \
- Ewk_View_Private_Data* priv = smartData->priv
-
-#define EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv, ...) \
- if (!smartData) { \
- EINA_LOG_CRIT("smart data is null"); \
- return __VA_ARGS__; \
- } \
- EWK_VIEW_PRIV_GET(smartData, priv); \
- do { \
- if (!priv) { \
- EINA_LOG_CRIT("no private data for object %p (%s)", \
- smartData->self, evas_object_type_get(smartData->self)); \
- return __VA_ARGS__; \
- } \
- } while (0)
-
static void _ewk_view_smart_changed(Ewk_View_Smart_Data* smartData)
{
if (smartData->changed.any)
@@ -530,56 +431,14 @@
}
#endif
-static void _ewk_view_preedit_changed(void* data, Ecore_IMF_Context* context, void*)
-{
- Ewk_View_Smart_Data* smartData = static_cast<Ewk_View_Smart_Data*>(data);
- EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv);
-
- if (!priv->pageProxy->focusedFrame() || !priv->isImfFocused)
- return;
-
- char* buffer = 0;
- ecore_imf_context_preedit_string_get(context, &buffer, 0);
- if (!buffer)
- return;
-
- String preeditString = String::fromUTF8(buffer);
- Vector<CompositionUnderline> underlines;
- underlines.append(CompositionUnderline(0, preeditString.length(), Color(0, 0, 0), false));
- priv->pageProxy->setComposition(preeditString, underlines, 0);
-}
-
-static void _ewk_view_commit(void* data, Ecore_IMF_Context*, void* eventInfo)
-{
- Ewk_View_Smart_Data* smartData = static_cast<Ewk_View_Smart_Data*>(data);
- EWK_VIEW_PRIV_GET_OR_RETURN(smartData, priv);
- if (!eventInfo || !priv->isImfFocused)
- return;
-
- priv->pageProxy->confirmComposition(String::fromUTF8(static_cast<char*>(eventInfo)));
-}
-
static Evas_Smart_Class g_parentSmartClass = EVAS_SMART_CLASS_INIT_NULL;
-static Ewk_View_Private_Data* _ewk_view_priv_new(Ewk_View_Smart_Data* smartData)
+static void _ewk_view_priv_del(EwkViewImpl* priv)
{
- Ewk_View_Private_Data* priv = new Ewk_View_Private_Data;
- if (!priv) {
- EINA_LOG_CRIT("could not allocate Ewk_View_Private_Data");
- return 0;
- }
+ /* Unregister icon change callback */
+ Ewk_Favicon_Database* iconDatabase = priv->context->faviconDatabase();
+ iconDatabase->unwatchChanges(_ewk_view_on_favicon_changed);
- priv->imfContext = _ewk_view_imf_context_create(smartData);
-
-#ifdef HAVE_ECORE_X
- priv->isUsingEcoreX = WebCore::isUsingEcoreX(smartData->base.evas);
-#endif
-
- return priv;
-}
-
-static void _ewk_view_priv_del(Ewk_View_Private_Data* priv)
-{
delete priv;
}
@@ -604,9 +463,9 @@
g_parentSmartClass.add(ewkView);
- smartData->priv = _ewk_view_priv_new(smartData);
+ smartData->priv = new EwkViewImpl(ewkView);
if (!smartData->priv) {
- EINA_LOG_CRIT("could not allocate Ewk_View_Private_Data");
+ EINA_LOG_CRIT("could not allocate EwkViewImpl");
evas_object_smart_data_set(ewkView, 0);
free(smartData);
return;
@@ -1213,36 +1072,6 @@
evas_object_smart_callback_call(ewkView, "text,found", &matchCount);
}
-static Ecore_IMF_Context* _ewk_view_imf_context_create(Ewk_View_Smart_Data* smartData)
-{
- const char* defaultContextID = ecore_imf_context_default_id_get();
- if (!defaultContextID)
- return 0;
-
- Ecore_IMF_Context* imfContext = ecore_imf_context_add(defaultContextID);
- if (!imfContext)
- return 0;
-
- ecore_imf_context_event_callback_add(imfContext, ECORE_IMF_CALLBACK_PREEDIT_CHANGED, _ewk_view_preedit_changed, smartData);
- ecore_imf_context_event_callback_add(imfContext, ECORE_IMF_CALLBACK_COMMIT, _ewk_view_commit, smartData);
-
- Ecore_Evas* ecoreEvas = ecore_evas_ecore_evas_get(smartData->base.evas);
- ecore_imf_context_client_window_set(imfContext, (void*)ecore_evas_window_get(ecoreEvas));
- ecore_imf_context_client_canvas_set(imfContext, smartData->base.evas);
-
- return imfContext;
-}
-
-static void _ewk_view_imf_context_destroy(Ecore_IMF_Context* imfContext)
-{
- if (!imfContext)
- return;
-
- ecore_imf_context_event_callback_del(imfContext, ECORE_IMF_CALLBACK_PREEDIT_CHANGED, _ewk_view_preedit_changed);
- ecore_imf_context_event_callback_del(imfContext, ECORE_IMF_CALLBACK_COMMIT, _ewk_view_commit);
- ecore_imf_context_del(imfContext);
-}
-
/**
* @internal
* The view was requested to update text input state
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h (132336 => 132337)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h 2012-10-24 11:57:47 UTC (rev 132336)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_view.h 2012-10-24 12:02:28 UTC (rev 132337)
@@ -182,7 +182,7 @@
*/
#define EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION(name) EWK_VIEW_SMART_CLASS_INIT(EVAS_SMART_CLASS_INIT_NAME_VERSION(name))
-typedef struct Ewk_View_Private_Data Ewk_View_Private_Data;
+typedef struct EwkViewImpl EwkViewImpl;
/**
* @brief Contains an internal View data.
*
@@ -194,7 +194,7 @@
const Ewk_View_Smart_Class* api; /**< reference to casted class instance */
Evas_Object* self; /**< reference to owner object */
Evas_Object* image; /**< reference to evas_object_image for drawing web contents */
- Ewk_View_Private_Data* priv; /**< should never be accessed, c++ stuff */
+ EwkViewImpl* priv; /**< should never be accessed, c++ stuff */
struct {
Evas_Coord x, y, w, h; /**< last used viewport */
} view;