Diff
Modified: trunk/Source/WebKit/efl/ChangeLog (129010 => 129011)
--- trunk/Source/WebKit/efl/ChangeLog 2012-09-19 15:54:15 UTC (rev 129010)
+++ trunk/Source/WebKit/efl/ChangeLog 2012-09-19 16:49:05 UTC (rev 129011)
@@ -1,3 +1,45 @@
+2012-09-19 Sheriff Bot <[email protected]>
+
+ Unreviewed, rolling out r128995.
+ http://trac.webkit.org/changeset/128995
+ https://bugs.webkit.org/show_bug.cgi?id=97114
+
+ Causes the api tests to segfault. (Requested by rakuco on
+ #webkit).
+
+ * tests/UnitTestUtils/EWKTestBase.cpp:
+ (EWKUnitTests::EWKTestBase::init):
+ (EWKUnitTests::EWKTestBase::shutdownAll):
+ (EWKUnitTests::EWKTestBase::startTest):
+ (EWKUnitTests::EWKTestBase::endTest):
+ (EWKUnitTests::EWKTestBase::createTest):
+ (EWKUnitTests):
+ (EWKUnitTests::EWKTestBase::runTest):
+ * tests/UnitTestUtils/EWKTestBase.h:
+ (EWKUnitTests):
+ (EWKTestBase):
+ * tests/UnitTestUtils/EWKTestView.cpp:
+ (EWKUnitTests::EWKTestEcoreEvas::EWKTestEcoreEvas):
+ (EWKUnitTests::EWKTestEcoreEvas::evas):
+ (EWKUnitTests):
+ (EWKUnitTests::EWKTestEcoreEvas::show):
+ (EWKUnitTests::EWKTestView::EWKTestView):
+ (EWKUnitTests::EWKTestView::init):
+ (EWKUnitTests::EWKTestView::show):
+ (EWKUnitTests::EWKTestView::mainFrame):
+ (EWKUnitTests::EWKTestView::evas):
+ (EWKUnitTests::EWKTestView::bindEvents):
+ * tests/UnitTestUtils/EWKTestView.h:
+ (EWKTestEcoreEvas):
+ (EWKUnitTests):
+ (EWKTestView):
+ * tests/test_ewk_view.cpp:
+ (ewkViewEditableGetCb):
+ (TEST):
+ (ewkViewUriGetCb):
+ * tests/test_runner.cpp:
+ (main):
+
2012-09-19 Krzysztof Czech <[email protected]>
[EFL][UT] Refactoring an implementation of testing framework for wk1.
Modified: trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp (129010 => 129011)
--- trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp 2012-09-19 15:54:15 UTC (rev 129010)
+++ trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp 2012-09-19 16:49:05 UTC (rev 129011)
@@ -19,7 +19,10 @@
#include "config.h"
#include "EWKTestBase.h"
+#include "EWKTestConfig.h"
+#include "EWKTestView.h"
#include <EWebKit.h>
+
#include <Ecore.h>
#include <Edje.h>
@@ -27,52 +30,73 @@
namespace EWKUnitTests {
-EWKTestBase::EWKTestBase()
- : m_ewkTestView(0)
+bool EWKTestBase::init()
{
-}
+ if (!ecore_evas_init())
+ return false;
-Evas_Object* EWKTestBase::webView()
-{
- return m_ewkTestView->webView();
+ if (!edje_init()) {
+ ecore_evas_shutdown();
+ return false;
+ }
+
+ int ret = ewk_init();
+ const char* proxyUri = getenv("http_proxy");
+
+ if (ret && proxyUri)
+ ewk_network_proxy_uri_set(proxyUri);
+
+ return ret;
}
-void EWKTestBase::SetUp()
+void EWKTestBase::shutdownAll()
{
- ASSERT_GT(ecore_evas_init(), 0);
- ASSERT_GT(ewk_init(), 0);
+ int count = 0;
- const char* proxyUrl = getenv("http_proxy");
- if (proxyUrl)
- ewk_network_proxy_uri_set(proxyUrl);
-
- m_ewkTestView = new EWKTestView();
+ while ((count = ecore_evas_shutdown()) > 0) { }
+ while ((count = edje_shutdown()) > 0) { }
+ while ((count = ewk_shutdown()) > 0) { }
}
-void EWKTestBase::TearDown()
+void EWKTestBase::startTest()
{
- delete m_ewkTestView;
- ecore_evas_shutdown();
- ewk_shutdown();
+ ecore_main_loop_begin();
}
-void EWKTestBase::onLoadFinished(void* data, Evas_Object* webView, void* eventInfo)
+void EWKTestBase::endTest()
{
ecore_main_loop_quit();
}
-void EWKTestBase::waitUntilLoadFinished()
+bool EWKTestBase::createTest(const char* url, void (*event_callback)(void*, Evas_Object*, void*), const char* event_name, void* event_data)
{
- evas_object_smart_callback_add(webView(), "load,finished", onLoadFinished, 0);
- ecore_main_loop_begin();
- evas_object_smart_callback_del(webView(), "load,finished", onLoadFinished);
+ EFL_INIT_RET();
+
+ EWKTestEcoreEvas evas(useX11Window);
+ if (!evas.evas())
+ return false;
+ evas.show();
+
+ EWKTestView view(evas.evas(), url);
+ if (!view.init())
+ return false;
+
+ view.bindEvents(event_callback, event_name, event_data);
+ view.show();
+
+ START_TEST();
+
+ return true;
}
-void EWKTestBase::loadUrl(const char* url)
+bool EWKTestBase::runTest(void (*event_callback)(void*, Evas_Object*, void*), const char* event_name, void* event_data)
{
- ASSERT_TRUE(m_ewkTestView->init(useX11Window));
- ASSERT_TRUE(ewk_view_uri_set(webView(), url));
- waitUntilLoadFinished();
+ return createTest(Config::defaultTestPage, event_callback, event_name, event_data);
}
+bool EWKTestBase::runTest(const char* url, void (*event_callback)(void*, Evas_Object*, void*), const char* event_name, void* event_data)
+{
+ return createTest(url, event_callback, event_name, event_data);
}
+
+}
Modified: trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.h (129010 => 129011)
--- trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.h 2012-09-19 15:54:15 UTC (rev 129010)
+++ trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.h 2012-09-19 16:49:05 UTC (rev 129011)
@@ -19,29 +19,49 @@
#ifndef EWKTestBase_h
#define EWKTestBase_h
-#include "EWKTestConfig.h"
-#include "EWKTestView.h"
+#include <Evas.h>
#include <gtest/gtest.h>
-namespace EWKUnitTests {
+#define RUN_TEST(args...) \
+ do { \
+ ASSERT_EQ(true, EWKTestBase::runTest(args)); \
+ } while (0)
-class EWKTestBase: public ::testing::Test {
-public:
- static int useX11Window;
+#define START_TEST() \
+ do { \
+ EWKTestBase::startTest(); \
+ } while (0)
- static void onLoadFinished(void* data, Evas_Object* webView, void* eventInfo);
+#define END_TEST() \
+ do { \
+ EWKTestBase::endTest(); \
+ } while (0)
- Evas_Object* webView();
-protected:
- EWKTestBase();
+#define EFL_INIT_RET() \
+ do { \
+ if (!EWKTestBase::init()) \
+ return false; \
+ } while (0)
- virtual void SetUp();
- virtual void TearDown();
+#define EFL_INIT() \
+ do { \
+ EWKTestBase::init(); \
+ } while (0)
- void loadUrl(const char* url = ""
- void waitUntilLoadFinished();
+namespace EWKUnitTests {
- EWKTestView* m_ewkTestView;
+class EWKTestBase {
+ static bool createTest(const char* url, void (*event_callback)(void*, Evas_Object*, void*), const char* event_name, void* event_data);
+public:
+ static bool init();
+ static void shutdownAll();
+ static void startTest();
+ static void endTest();
+
+ static bool runTest(const char* url, void (*event_callback)(void*, Evas_Object*, void*), const char* event_name = "load,finished", void* event_data = 0);
+ static bool runTest(void (*event_callback)(void*, Evas_Object*, void*), const char* event_name = "load,finished", void* event_data = 0);
+
+ static int useX11Window;
};
}
Modified: trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp (129010 => 129011)
--- trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp 2012-09-19 15:54:15 UTC (rev 129010)
+++ trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp 2012-09-19 16:49:05 UTC (rev 129011)
@@ -19,53 +19,131 @@
#include "config.h"
#include "EWKTestView.h"
+#include "EWKTestConfig.h"
#include <EWebKit.h>
-#include <wtf/NullPtr.h>
+
#include <wtf/PassOwnPtr.h>
#include <wtf/RefPtr.h>
namespace EWKUnitTests {
-EWKTestView::EWKTestView()
+EWKTestEcoreEvas::EWKTestEcoreEvas(int useX11Window)
{
+ if (useX11Window)
+ m_ecoreEvas = adoptPtr(ecore_evas_new(0, 0, 0, Config::defaultViewWidth, Config::defaultViewHeight, 0));
+ else
+ m_ecoreEvas = adoptPtr(ecore_evas_buffer_new(Config::defaultViewWidth, Config::defaultViewHeight));
}
-bool EWKTestView::init(int useX11Window, EwkViewType testViewType, int width, int height)
+EWKTestEcoreEvas::EWKTestEcoreEvas(const char* engine_name, int viewport_x, int viewport_y, int viewport_w, int viewport_h, const char* extra_options, int useX11Window)
{
- m_webView = nullptr;
-
if (useX11Window)
- m_ecoreEvas = adoptPtr(ecore_evas_new(0, 0, 0, width, height, 0));
+ m_ecoreEvas = adoptPtr(ecore_evas_new(engine_name, viewport_x, viewport_y, viewport_w, viewport_h, extra_options));
else
- m_ecoreEvas = adoptPtr(ecore_evas_buffer_new(width, height));
+ m_ecoreEvas = adoptPtr(ecore_evas_buffer_new(viewport_x, viewport_y));
+}
- if (!m_ecoreEvas)
- return false;
+Evas* EWKTestEcoreEvas::evas()
+{
+ if (m_ecoreEvas.get())
+ return ecore_evas_get(m_ecoreEvas.get());
+ return 0;
+}
- ecore_evas_show(m_ecoreEvas.get());
- Evas* evas = ecore_evas_get(m_ecoreEvas.get());
- if (!evas)
+void EWKTestEcoreEvas::show()
+{
+ if (m_ecoreEvas.get())
+ ecore_evas_show(m_ecoreEvas.get());
+}
+
+EWKTestView::EWKTestView(Evas* evas)
+ : m_evas(evas)
+ , m_url(Config::defaultTestPage)
+ , m_defaultViewType(TiledView)
+ , m_width(Config::defaultViewWidth)
+ , m_height(Config::defaultViewHeight)
+{
+}
+
+EWKTestView::EWKTestView(Evas* evas, const char* url)
+ : m_evas(evas)
+ , m_url(url)
+ , m_defaultViewType(TiledView)
+ , m_width(Config::defaultViewWidth)
+ , m_height(Config::defaultViewHeight)
+{
+}
+
+EWKTestView::EWKTestView(Evas* evas, EwkViewType type, const char* url)
+ : m_evas(evas)
+ , m_url(url)
+ , m_defaultViewType(type)
+ , m_width(Config::defaultViewWidth)
+ , m_height(Config::defaultViewHeight)
+{
+}
+
+EWKTestView::EWKTestView(Evas* evas, EwkViewType type, const char* url, int width, int height)
+ : m_evas(evas)
+ , m_url(url)
+ , m_defaultViewType(type)
+ , m_width(width)
+ , m_height(height)
+{
+}
+
+bool EWKTestView::init()
+{
+ if (!m_evas || m_url.empty())
return false;
- switch (testViewType) {
+ switch (m_defaultViewType) {
case SingleView:
- m_webView = adoptRef(ewk_view_single_add(evas));
+ m_webView = adoptRef(ewk_view_single_add(m_evas));
break;
case TiledView:
- m_webView = adoptRef(ewk_view_tiled_add(evas));
+ m_webView = adoptRef(ewk_view_tiled_add(m_evas));
break;
}
- if (!m_webView)
+ if (!m_webView.get())
return false;
ewk_view_theme_set(m_webView.get(), Config::defaultThemePath);
+ ewk_view_uri_set(m_webView.get(), m_url.c_str());
+}
- evas_object_resize(m_webView.get(), width, height);
+void EWKTestView::show()
+{
+ if (!m_webView.get())
+ return;
+ evas_object_resize(m_webView.get(), m_width, m_height);
evas_object_show(m_webView.get());
evas_object_focus_set(m_webView.get(), EINA_TRUE);
- return true;
}
+Evas_Object* EWKTestView::mainFrame()
+{
+ if (m_webView.get())
+ return ewk_view_frame_main_get(m_webView.get());
+ return 0;
}
+
+Evas* EWKTestView::evas()
+{
+ if (m_webView.get())
+ return evas_object_evas_get(m_webView.get());
+ return 0;
+}
+
+void EWKTestView::bindEvents(void (*callback)(void*, Evas_Object*, void*), const char* eventName, void* ptr)
+{
+ if (!m_webView.get())
+ return;
+
+ evas_object_smart_callback_del(m_webView.get(), eventName, callback);
+ evas_object_smart_callback_add(m_webView.get(), eventName, callback, ptr);
+}
+
+}
Modified: trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h (129010 => 129011)
--- trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h 2012-09-19 15:54:15 UTC (rev 129010)
+++ trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h 2012-09-19 16:49:05 UTC (rev 129011)
@@ -19,32 +19,56 @@
#ifndef EWKTestView_h
#define EWKTestView_h
-#include "EWKTestConfig.h"
#include <Ecore_Evas.h>
#include <Evas.h>
+#include <string>
#include <wtf/OwnPtr.h>
#include <wtf/efl/RefPtrEfl.h>
namespace EWKUnitTests {
+class EWKTestEcoreEvas {
+public:
+ EWKTestEcoreEvas(int useX11Window);
+ EWKTestEcoreEvas(const char* engine_name, int viewport_x, int viewport_y, int viewport_w, int viewport_h, const char* extra_options, int useX11Window);
+
+ Evas* evas();
+ void show();
+
+private:
+ OwnPtr<Ecore_Evas> m_ecoreEvas;
+};
+
class EWKTestView {
public:
enum EwkViewType {
SingleView = 0,
- TiledView
+ TiledView,
};
- EWKTestView();
+ explicit EWKTestView(Evas*);
+ EWKTestView(Evas*, const char* url);
+ EWKTestView(Evas*, EwkViewType, const char* url);
+ EWKTestView(Evas*, EwkViewType, const char* url, int width, int height);
Evas_Object* webView() { return m_webView.get(); }
+ Evas_Object* mainFrame();
+ Evas* evas();
+ void show();
- bool init(int useX11Window = 0, EwkViewType testViewType = TiledView, int width = Config::defaultViewWidth, int height = Config::defaultViewHeight);
+ bool init();
+ void bindEvents(void (*callback)(void*, Evas_Object*, void*), const char* eventName, void* ptr);
+
private:
EWKTestView(const EWKTestView&);
- EWKTestView& operator=(const EWKTestView&);
+ EWKTestView operator=(const EWKTestView&);
- OwnPtr<Ecore_Evas> m_ecoreEvas;
+ Evas* m_evas;
RefPtr<Evas_Object> m_webView;
+
+ int m_width, m_height;
+ EwkViewType m_defaultViewType;
+ std::string m_url;
};
}
Modified: trunk/Source/WebKit/efl/tests/test_ewk_view.cpp (129010 => 129011)
--- trunk/Source/WebKit/efl/tests/test_ewk_view.cpp 2012-09-19 15:54:15 UTC (rev 129010)
+++ trunk/Source/WebKit/efl/tests/test_ewk_view.cpp 2012-09-19 16:49:05 UTC (rev 129011)
@@ -19,29 +19,36 @@
#include "config.h"
#include "UnitTestUtils/EWKTestBase.h"
-#include "UnitTestUtils/EWKTestConfig.h"
#include <EWebKit.h>
-#include <Ecore.h>
-#include <wtf/OwnPtr.h>
-#include <wtf/PassOwnPtr.h>
+#include <gtest/gtest.h>
using namespace EWKUnitTests;
/**
* @brief Checking whether function properly returns correct value.
*/
-TEST_F(EWKTestBase, ewk_view_editable_get)
+static void ewkViewEditableGetCb(void* eventInfo, Evas_Object* o, void* data)
{
- loadUrl();
- ewk_view_editable_set(webView(), EINA_FALSE);
- ASSERT_FALSE(ewk_view_editable_get(webView()));
+ ewk_view_editable_set(o, EINA_FALSE);
+ EXPECT_EQ(EINA_FALSE, ewk_view_editable_get(o));
+ END_TEST();
}
+TEST(test_ewk_view, ewk_view_editable_get)
+{
+ RUN_TEST(ewkViewEditableGetCb);
+}
+
/**
* @brief Checking whether function returns correct uri string.
*/
-TEST_F(EWKTestBase, ewk_view_uri_get)
+static void ewkViewUriGetCb(void* eventInfo, Evas_Object* o, void* data)
{
- loadUrl();
- EXPECT_STREQ(ewk_view_uri_get(webView()), Config::defaultTestPage);
+ EXPECT_STREQ("http://www.webkit.org/", ewk_view_uri_get(o));
+ END_TEST();
}
+
+TEST(test_ewk_view, ewk_view_uri_get)
+{
+ RUN_TEST("http://www.webkit.org", ewkViewUriGetCb);
+}
Modified: trunk/Source/WebKit/efl/tests/test_runner.cpp (129010 => 129011)
--- trunk/Source/WebKit/efl/tests/test_runner.cpp 2012-09-19 15:54:15 UTC (rev 129010)
+++ trunk/Source/WebKit/efl/tests/test_runner.cpp 2012-09-19 16:49:05 UTC (rev 129011)
@@ -16,8 +16,6 @@
Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#include "config.h"
-
#include "UnitTestUtils/EWKTestBase.h"
#include <getopt.h>
#include <gtest/gtest.h>
@@ -35,6 +33,7 @@
int main(int argc, char** argv)
{
+ atexit(EWKUnitTests::EWKTestBase::shutdownAll);
parseCustomArguments(argc, argv);
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();