Changeset 129011 in webkit


Ignore:
Timestamp:
Sep 19, 2012 9:49:05 AM (12 years ago)
Author:
commit-queue@webkit.org
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 <webkit.review.bot@gmail.com> 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):

Location:
trunk/Source/WebKit/efl
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/efl/ChangeLog

    r128995 r129011  
     12012-09-19  Sheriff Bot  <webkit.review.bot@gmail.com>
     2
     3        Unreviewed, rolling out r128995.
     4        http://trac.webkit.org/changeset/128995
     5        https://bugs.webkit.org/show_bug.cgi?id=97114
     6
     7        Causes the api tests to segfault. (Requested by rakuco on
     8        #webkit).
     9
     10        * tests/UnitTestUtils/EWKTestBase.cpp:
     11        (EWKUnitTests::EWKTestBase::init):
     12        (EWKUnitTests::EWKTestBase::shutdownAll):
     13        (EWKUnitTests::EWKTestBase::startTest):
     14        (EWKUnitTests::EWKTestBase::endTest):
     15        (EWKUnitTests::EWKTestBase::createTest):
     16        (EWKUnitTests):
     17        (EWKUnitTests::EWKTestBase::runTest):
     18        * tests/UnitTestUtils/EWKTestBase.h:
     19        (EWKUnitTests):
     20        (EWKTestBase):
     21        * tests/UnitTestUtils/EWKTestView.cpp:
     22        (EWKUnitTests::EWKTestEcoreEvas::EWKTestEcoreEvas):
     23        (EWKUnitTests::EWKTestEcoreEvas::evas):
     24        (EWKUnitTests):
     25        (EWKUnitTests::EWKTestEcoreEvas::show):
     26        (EWKUnitTests::EWKTestView::EWKTestView):
     27        (EWKUnitTests::EWKTestView::init):
     28        (EWKUnitTests::EWKTestView::show):
     29        (EWKUnitTests::EWKTestView::mainFrame):
     30        (EWKUnitTests::EWKTestView::evas):
     31        (EWKUnitTests::EWKTestView::bindEvents):
     32        * tests/UnitTestUtils/EWKTestView.h:
     33        (EWKTestEcoreEvas):
     34        (EWKUnitTests):
     35        (EWKTestView):
     36        * tests/test_ewk_view.cpp:
     37        (ewkViewEditableGetCb):
     38        (TEST):
     39        (ewkViewUriGetCb):
     40        * tests/test_runner.cpp:
     41        (main):
     42
    1432012-09-19  Krzysztof Czech  <k.czech@samsung.com>
    244
  • trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.cpp

    r128995 r129011  
    2020#include "EWKTestBase.h"
    2121
     22#include "EWKTestConfig.h"
     23#include "EWKTestView.h"
    2224#include <EWebKit.h>
     25
    2326#include <Ecore.h>
    2427#include <Edje.h>
     
    2831namespace EWKUnitTests {
    2932
    30 EWKTestBase::EWKTestBase()
    31     : m_ewkTestView(0)
     33bool EWKTestBase::init()
    3234{
     35    if (!ecore_evas_init())
     36        return false;
     37
     38    if (!edje_init()) {
     39        ecore_evas_shutdown();
     40        return false;
     41    }
     42
     43    int ret = ewk_init();
     44    const char* proxyUri = getenv("http_proxy");
     45
     46    if (ret && proxyUri)
     47        ewk_network_proxy_uri_set(proxyUri);
     48
     49    return ret;
    3350}
    3451
    35 Evas_Object* EWKTestBase::webView()
     52void EWKTestBase::shutdownAll()
    3653{
    37     return m_ewkTestView->webView();
     54    int count = 0;
     55
     56    while ((count = ecore_evas_shutdown()) > 0) { }
     57    while ((count = edje_shutdown()) > 0) { }
     58    while ((count = ewk_shutdown()) > 0) { }
    3859}
    3960
    40 void EWKTestBase::SetUp()
     61void EWKTestBase::startTest()
    4162{
    42     ASSERT_GT(ecore_evas_init(), 0);
    43     ASSERT_GT(ewk_init(), 0);
    44 
    45     const char* proxyUrl = getenv("http_proxy");
    46     if (proxyUrl)
    47         ewk_network_proxy_uri_set(proxyUrl);
    48 
    49     m_ewkTestView = new EWKTestView();
     63    ecore_main_loop_begin();
    5064}
    5165
    52 void EWKTestBase::TearDown()
    53 {
    54     delete m_ewkTestView;
    55     ecore_evas_shutdown();
    56     ewk_shutdown();
    57 }
    58 
    59 void EWKTestBase::onLoadFinished(void* data, Evas_Object* webView, void* eventInfo)
     66void EWKTestBase::endTest()
    6067{
    6168    ecore_main_loop_quit();
    6269}
    6370
    64 void EWKTestBase::waitUntilLoadFinished()
     71bool EWKTestBase::createTest(const char* url, void (*event_callback)(void*, Evas_Object*, void*), const char* event_name, void* event_data)
    6572{
    66     evas_object_smart_callback_add(webView(), "load,finished", onLoadFinished, 0);
    67     ecore_main_loop_begin();
    68     evas_object_smart_callback_del(webView(), "load,finished", onLoadFinished);
     73    EFL_INIT_RET();
     74
     75    EWKTestEcoreEvas evas(useX11Window);
     76    if (!evas.evas())
     77        return false;
     78    evas.show();
     79
     80    EWKTestView view(evas.evas(), url);
     81    if (!view.init())
     82        return false;
     83
     84    view.bindEvents(event_callback, event_name, event_data);
     85    view.show();
     86
     87    START_TEST();
     88
     89    return true;
    6990}
    7091
    71 void EWKTestBase::loadUrl(const char* url)
     92bool EWKTestBase::runTest(void (*event_callback)(void*, Evas_Object*, void*), const char* event_name, void* event_data)
    7293{
    73     ASSERT_TRUE(m_ewkTestView->init(useX11Window));
    74     ASSERT_TRUE(ewk_view_uri_set(webView(), url));
    75     waitUntilLoadFinished();
     94    return createTest(Config::defaultTestPage, event_callback, event_name, event_data);
     95}
     96
     97bool EWKTestBase::runTest(const char* url, void (*event_callback)(void*, Evas_Object*, void*), const char* event_name, void* event_data)
     98{
     99    return createTest(url, event_callback, event_name, event_data);
    76100}
    77101
  • trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestBase.h

    r128995 r129011  
    2020#define EWKTestBase_h
    2121
    22 #include "EWKTestConfig.h"
    23 #include "EWKTestView.h"
     22#include <Evas.h>
    2423#include <gtest/gtest.h>
     24
     25#define RUN_TEST(args...)   \
     26    do {    \
     27        ASSERT_EQ(true, EWKTestBase::runTest(args));    \
     28    } while (0)
     29
     30#define START_TEST()    \
     31    do {    \
     32        EWKTestBase::startTest();   \
     33    } while (0)
     34
     35#define END_TEST()    \
     36    do {    \
     37        EWKTestBase::endTest(); \
     38    } while (0)
     39
     40#define EFL_INIT_RET()  \
     41    do {    \
     42        if (!EWKTestBase::init())   \
     43            return false;    \
     44    } while (0)
     45
     46#define EFL_INIT()  \
     47    do {    \
     48        EWKTestBase::init();    \
     49    } while (0)
    2550
    2651namespace EWKUnitTests {
    2752
    28 class EWKTestBase: public ::testing::Test {
     53class EWKTestBase {
     54    static bool createTest(const char* url, void (*event_callback)(void*, Evas_Object*, void*), const char* event_name, void* event_data);
    2955public:
     56    static bool init();
     57    static void shutdownAll();
     58    static void startTest();
     59    static void endTest();
     60
     61    static bool runTest(const char* url, void (*event_callback)(void*, Evas_Object*, void*), const char* event_name = "load,finished", void* event_data = 0);
     62    static bool runTest(void (*event_callback)(void*, Evas_Object*, void*), const char* event_name = "load,finished", void* event_data = 0);
     63
    3064    static int useX11Window;
    31 
    32     static void onLoadFinished(void* data, Evas_Object* webView, void* eventInfo);
    33 
    34     Evas_Object* webView();
    35 protected:
    36     EWKTestBase();
    37 
    38     virtual void SetUp();
    39     virtual void TearDown();
    40 
    41     void loadUrl(const char* url = Config::defaultTestPage);
    42     void waitUntilLoadFinished();
    43 
    44     EWKTestView* m_ewkTestView;
    4565};
    4666
  • trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.cpp

    r128995 r129011  
    2020#include "EWKTestView.h"
    2121
     22#include "EWKTestConfig.h"
    2223#include <EWebKit.h>
    23 #include <wtf/NullPtr.h>
     24
    2425#include <wtf/PassOwnPtr.h>
    2526#include <wtf/RefPtr.h>
     
    2728namespace EWKUnitTests {
    2829
    29 EWKTestView::EWKTestView()
     30EWKTestEcoreEvas::EWKTestEcoreEvas(int useX11Window)
     31{
     32    if (useX11Window)
     33        m_ecoreEvas = adoptPtr(ecore_evas_new(0, 0, 0, Config::defaultViewWidth, Config::defaultViewHeight, 0));
     34    else
     35        m_ecoreEvas = adoptPtr(ecore_evas_buffer_new(Config::defaultViewWidth, Config::defaultViewHeight));
     36}
     37
     38EWKTestEcoreEvas::EWKTestEcoreEvas(const char* engine_name, int viewport_x, int viewport_y, int viewport_w, int viewport_h, const char* extra_options, int useX11Window)
     39{
     40    if (useX11Window)
     41        m_ecoreEvas = adoptPtr(ecore_evas_new(engine_name, viewport_x, viewport_y, viewport_w, viewport_h, extra_options));
     42    else
     43        m_ecoreEvas = adoptPtr(ecore_evas_buffer_new(viewport_x, viewport_y));
     44}
     45
     46Evas* EWKTestEcoreEvas::evas()
     47{
     48    if (m_ecoreEvas.get())
     49        return ecore_evas_get(m_ecoreEvas.get());
     50    return 0;
     51}
     52
     53void EWKTestEcoreEvas::show()
     54{
     55    if (m_ecoreEvas.get())
     56        ecore_evas_show(m_ecoreEvas.get());
     57}
     58
     59EWKTestView::EWKTestView(Evas* evas)
     60    : m_evas(evas)
     61    , m_url(Config::defaultTestPage)
     62    , m_defaultViewType(TiledView)
     63    , m_width(Config::defaultViewWidth)
     64    , m_height(Config::defaultViewHeight)
    3065{
    3166}
    3267
    33 bool EWKTestView::init(int useX11Window, EwkViewType testViewType, int width, int height)
     68EWKTestView::EWKTestView(Evas* evas, const char* url)
     69    : m_evas(evas)
     70    , m_url(url)
     71    , m_defaultViewType(TiledView)
     72    , m_width(Config::defaultViewWidth)
     73    , m_height(Config::defaultViewHeight)
    3474{
    35     m_webView = nullptr;
     75}
    3676
    37     if (useX11Window)
    38         m_ecoreEvas = adoptPtr(ecore_evas_new(0, 0, 0, width, height, 0));
    39     else
    40         m_ecoreEvas = adoptPtr(ecore_evas_buffer_new(width, height));
     77EWKTestView::EWKTestView(Evas* evas, EwkViewType type, const char* url)
     78    : m_evas(evas)
     79    , m_url(url)
     80    , m_defaultViewType(type)
     81    , m_width(Config::defaultViewWidth)
     82    , m_height(Config::defaultViewHeight)
     83{
     84}
    4185
    42     if (!m_ecoreEvas)
     86EWKTestView::EWKTestView(Evas* evas, EwkViewType type, const char* url, int width, int height)
     87    : m_evas(evas)
     88    , m_url(url)
     89    , m_defaultViewType(type)
     90    , m_width(width)
     91    , m_height(height)
     92{
     93}
     94
     95bool EWKTestView::init()
     96{
     97    if (!m_evas || m_url.empty())
    4398        return false;
    4499
    45     ecore_evas_show(m_ecoreEvas.get());
    46     Evas* evas = ecore_evas_get(m_ecoreEvas.get());
    47     if (!evas)
    48         return false;
    49 
    50     switch (testViewType) {
     100    switch (m_defaultViewType) {
    51101    case SingleView:
    52         m_webView = adoptRef(ewk_view_single_add(evas));
     102        m_webView = adoptRef(ewk_view_single_add(m_evas));
    53103        break;
    54104
    55105    case TiledView:
    56         m_webView = adoptRef(ewk_view_tiled_add(evas));
     106        m_webView = adoptRef(ewk_view_tiled_add(m_evas));
    57107        break;
    58108    }
    59109
    60     if (!m_webView)
     110    if (!m_webView.get())
    61111        return false;
    62112
    63113    ewk_view_theme_set(m_webView.get(), Config::defaultThemePath);
     114    ewk_view_uri_set(m_webView.get(), m_url.c_str());
     115}
    64116
    65     evas_object_resize(m_webView.get(), width, height);
     117void EWKTestView::show()
     118{
     119    if (!m_webView.get())
     120        return;
     121    evas_object_resize(m_webView.get(), m_width, m_height);
    66122    evas_object_show(m_webView.get());
    67123    evas_object_focus_set(m_webView.get(), EINA_TRUE);
    68     return true;
     124}
     125
     126Evas_Object* EWKTestView::mainFrame()
     127{
     128    if (m_webView.get())
     129        return ewk_view_frame_main_get(m_webView.get());
     130    return 0;
     131}
     132
     133Evas* EWKTestView::evas()
     134{
     135    if (m_webView.get())
     136        return evas_object_evas_get(m_webView.get());
     137    return 0;
     138}
     139
     140void EWKTestView::bindEvents(void (*callback)(void*, Evas_Object*, void*), const char* eventName, void* ptr)
     141{
     142    if (!m_webView.get())
     143        return;
     144
     145    evas_object_smart_callback_del(m_webView.get(), eventName, callback);
     146    evas_object_smart_callback_add(m_webView.get(), eventName, callback, ptr);
    69147}
    70148
  • trunk/Source/WebKit/efl/tests/UnitTestUtils/EWKTestView.h

    r128995 r129011  
    2020#define EWKTestView_h
    2121
    22 #include "EWKTestConfig.h"
    2322#include <Ecore_Evas.h>
    2423#include <Evas.h>
     24#include <string>
    2525#include <wtf/OwnPtr.h>
    2626#include <wtf/efl/RefPtrEfl.h>
     
    2828namespace EWKUnitTests {
    2929
     30class EWKTestEcoreEvas {
     31public:
     32    EWKTestEcoreEvas(int useX11Window);
     33    EWKTestEcoreEvas(const char* engine_name, int viewport_x, int viewport_y, int viewport_w, int viewport_h, const char* extra_options, int useX11Window);
     34
     35    Evas* evas();
     36    void show();
     37
     38private:
     39    OwnPtr<Ecore_Evas> m_ecoreEvas;
     40};
     41
    3042class EWKTestView {
    3143public:
    3244    enum EwkViewType {
    3345        SingleView = 0,
    34         TiledView
     46        TiledView,
    3547    };
    3648
    37     EWKTestView();
     49    explicit EWKTestView(Evas*);
     50    EWKTestView(Evas*, const char* url);
     51    EWKTestView(Evas*, EwkViewType, const char* url);
     52    EWKTestView(Evas*, EwkViewType, const char* url, int width, int height);
    3853
    3954    Evas_Object* webView() { return m_webView.get(); }
     55    Evas_Object* mainFrame();
     56    Evas* evas();
     57    void show();
    4058
    41     bool init(int useX11Window = 0, EwkViewType testViewType = TiledView, int width = Config::defaultViewWidth, int height = Config::defaultViewHeight);
     59    bool init();
     60    void bindEvents(void (*callback)(void*, Evas_Object*, void*), const char* eventName, void* ptr);
     61
    4262private:
    4363    EWKTestView(const EWKTestView&);
    44     EWKTestView& operator=(const EWKTestView&);
     64    EWKTestView operator=(const EWKTestView&);
    4565
    46     OwnPtr<Ecore_Evas> m_ecoreEvas;
     66    Evas* m_evas;
    4767    RefPtr<Evas_Object> m_webView;
     68
     69    int m_width, m_height;
     70    EwkViewType m_defaultViewType;
     71    std::string m_url;
    4872};
    4973
  • trunk/Source/WebKit/efl/tests/test_ewk_view.cpp

    r128995 r129011  
    2020
    2121#include "UnitTestUtils/EWKTestBase.h"
    22 #include "UnitTestUtils/EWKTestConfig.h"
    2322#include <EWebKit.h>
    24 #include <Ecore.h>
    25 #include <wtf/OwnPtr.h>
    26 #include <wtf/PassOwnPtr.h>
     23#include <gtest/gtest.h>
    2724
    2825using namespace EWKUnitTests;
     
    3128* @brief Checking whether function properly returns correct value.
    3229*/
    33 TEST_F(EWKTestBase, ewk_view_editable_get)
     30static void ewkViewEditableGetCb(void* eventInfo, Evas_Object* o, void* data)
    3431{
    35     loadUrl();
    36     ewk_view_editable_set(webView(), EINA_FALSE);
    37     ASSERT_FALSE(ewk_view_editable_get(webView()));
     32    ewk_view_editable_set(o, EINA_FALSE);
     33    EXPECT_EQ(EINA_FALSE, ewk_view_editable_get(o));
     34    END_TEST();
     35}
     36
     37TEST(test_ewk_view, ewk_view_editable_get)
     38{
     39    RUN_TEST(ewkViewEditableGetCb);
    3840}
    3941
     
    4143* @brief Checking whether function returns correct uri string.
    4244*/
    43 TEST_F(EWKTestBase, ewk_view_uri_get)
     45static void ewkViewUriGetCb(void* eventInfo, Evas_Object* o, void* data)
    4446{
    45     loadUrl();
    46     EXPECT_STREQ(ewk_view_uri_get(webView()), Config::defaultTestPage);
     47    EXPECT_STREQ("http://www.webkit.org/", ewk_view_uri_get(o));
     48    END_TEST();
    4749}
     50
     51TEST(test_ewk_view, ewk_view_uri_get)
     52{
     53    RUN_TEST("http://www.webkit.org", ewkViewUriGetCb);
     54}
  • trunk/Source/WebKit/efl/tests/test_runner.cpp

    r128995 r129011  
    1717*/
    1818
    19 #include "config.h"
    20 
    2119#include "UnitTestUtils/EWKTestBase.h"
    2220#include <getopt.h>
     
    3634int main(int argc, char** argv)
    3735{
     36    atexit(EWKUnitTests::EWKTestBase::shutdownAll);
    3837    parseCustomArguments(argc, argv);
    3938    ::testing::InitGoogleTest(&argc, argv);
Note: See TracChangeset for help on using the changeset viewer.