summaryrefslogtreecommitdiff
path: root/Tools/TestWebKitAPI/efl/PlatformWebView.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Tools/TestWebKitAPI/efl/PlatformWebView.cpp')
-rw-r--r--Tools/TestWebKitAPI/efl/PlatformWebView.cpp34
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);