Title: [129011] trunk/Source/WebKit/efl
Revision
129011
Author
[email protected]
Date
2012-09-19 09:49:05 -0700 (Wed, 19 Sep 2012)

Log Message

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).

Patch by Sheriff Bot <[email protected]> on 2012-09-19

* 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):

Modified Paths

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();
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to