diff options
Diffstat (limited to 'Tools/TestWebKitAPI/efl/PlatformWebView.cpp')
-rw-r--r-- | Tools/TestWebKitAPI/efl/PlatformWebView.cpp | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/Tools/TestWebKitAPI/efl/PlatformWebView.cpp b/Tools/TestWebKitAPI/efl/PlatformWebView.cpp index 08407c6a3..5a3aa6b1e 100644 --- a/Tools/TestWebKitAPI/efl/PlatformWebView.cpp +++ b/Tools/TestWebKitAPI/efl/PlatformWebView.cpp @@ -25,10 +25,13 @@ */ #include "config.h" +#include "ewk_view_private.h" #include "PlatformWebView.h" #include "EWebKit2.h" -#include "WebKit2/WKAPICast.h" +#include <WebKit2/WKAPICast.h> +#include <WebKit2/WKRetainPtr.h> +#include <WebKit2/WKViewEfl.h> #include <Ecore_Evas.h> extern bool useX11Window; @@ -39,13 +42,16 @@ namespace TestWebKitAPI { static Ecore_Evas* initEcoreEvas() { - ASSERT(ecore_evas_init()); + if (!ecore_evas_init()) + return 0; - const char* engine = 0; + Ecore_Evas* ecoreEvas; #if defined(WTF_USE_ACCELERATED_COMPOSITING) && defined(HAVE_ECORE_X) - engine = "opengl_x11"; + ecoreEvas = ecore_evas_new("opengl_x11", 0, 0, 800, 600, 0); + // Graceful fallback to software rendering if evas_gl engine is not available. + if (!ecoreEvas) #endif - Ecore_Evas* ecoreEvas = ecore_evas_new(engine, 0, 0, 800, 600, 0); + ecoreEvas = ecore_evas_new(0, 0, 0, 800, 600, 0); ASSERT(ecoreEvas); @@ -63,9 +69,12 @@ static void onWebProcessCrashed(void*, Evas_Object*, void* eventInfo) PlatformWebView::PlatformWebView(WKContextRef contextRef, WKPageGroupRef pageGroupRef) { m_window = initEcoreEvas(); - Evas* evas = ecore_evas_get(m_window); - m_view = toImpl(WKViewCreate(evas, contextRef, pageGroupRef)); - ewk_view_theme_set(m_view, THEME_DIR"/default.edj"); + + m_view = EWKViewCreate(contextRef, pageGroupRef, ecore_evas_get(m_window), /* smart */ 0); + + WKRetainPtr<WKStringRef> wkTheme = adoptWK(WKStringCreateWithUTF8CString(TEST_THEME_DIR "/default.edj")); + WKViewSetThemePath(EWKViewGetWKView(m_view), wkTheme.get()); + evas_object_smart_callback_add(m_view, "webprocess,crashed", onWebProcessCrashed, 0); resizeTo(600, 800); } @@ -73,6 +82,7 @@ PlatformWebView::PlatformWebView(WKContextRef contextRef, WKPageGroupRef pageGro PlatformWebView::~PlatformWebView() { evas_object_del(m_view); + ecore_evas_free(m_window); ecore_evas_shutdown(); } @@ -84,12 +94,12 @@ void PlatformWebView::resizeTo(unsigned width, unsigned height) WKPageRef PlatformWebView::page() const { - return WKViewGetPage(toAPI(m_view)); + return WKViewGetPage(EWKViewGetWKView(m_view)); } void PlatformWebView::simulateSpacebarKeyPress() { - Evas* evas = ecore_evas_get(m_window); + Evas* evas = evas_object_evas_get(m_view); evas_object_focus_set(m_view, true); evas_event_feed_key_down(evas, "space", "space", " ", 0, 0, 0); evas_event_feed_key_up(evas, "space", "space", " ", 0, 1, 0); @@ -97,14 +107,14 @@ void PlatformWebView::simulateSpacebarKeyPress() void PlatformWebView::simulateMouseMove(unsigned x, unsigned y) { - Evas* evas = ecore_evas_get(m_window); + Evas* evas = evas_object_evas_get(m_view); evas_object_show(m_view); evas_event_feed_mouse_move(evas, x, y, 0, 0); } void PlatformWebView::simulateRightClick(unsigned x, unsigned y) { - Evas* evas = ecore_evas_get(m_window); + Evas* evas = evas_object_evas_get(m_view); evas_object_show(m_view); evas_event_feed_mouse_move(evas, x, y, 0, 0); evas_event_feed_mouse_down(evas, 3, EVAS_BUTTON_NONE, 0, 0); |