Title: [123863] trunk/Source/WebKit2
Revision
123863
Author
[email protected]
Date
2012-07-27 04:12:56 -0700 (Fri, 27 Jul 2012)

Log Message

[EFL][WK2] Add more Ewk_View unit tests
https://bugs.webkit.org/show_bug.cgi?id=92407

Patch by Christophe Dumez <[email protected]> on 2012-07-27
Reviewed by Kenneth Rohde Christiansen.

Add more unit tests for WebKit2 Ewk_View API.
In particular, navigation, HTML loading and
device pixel ratio functions are now tested.

* UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:
(EWK2UnitTest::EWK2UnitTestBase::SetUp): Call ewk_init() instead
of duplicating initialization code.
(EWK2UnitTest::EWK2UnitTestBase::TearDown): call ewk_shutdown().
(TitleChangedData):
(EWK2UnitTest):
(EWK2UnitTest::onTitleChanged):
(EWK2UnitTest::EWK2UnitTestBase::waitUntilTitleChangedTo): Add convenience
method to wait until the view main frame title changes to a given value.
* UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:
(EWK2UnitTestBase):
* UIProcess/API/efl/tests/test_ewk2_view.cpp:
(TEST_F):
(serverCallbackNavigation):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (123862 => 123863)


--- trunk/Source/WebKit2/ChangeLog	2012-07-27 11:09:35 UTC (rev 123862)
+++ trunk/Source/WebKit2/ChangeLog	2012-07-27 11:12:56 UTC (rev 123863)
@@ -1,3 +1,29 @@
+2012-07-27  Christophe Dumez  <[email protected]>
+
+        [EFL][WK2] Add more Ewk_View unit tests
+        https://bugs.webkit.org/show_bug.cgi?id=92407
+
+        Reviewed by Kenneth Rohde Christiansen.
+
+        Add more unit tests for WebKit2 Ewk_View API.
+        In particular, navigation, HTML loading and
+        device pixel ratio functions are now tested.
+
+        * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp:
+        (EWK2UnitTest::EWK2UnitTestBase::SetUp): Call ewk_init() instead
+        of duplicating initialization code.
+        (EWK2UnitTest::EWK2UnitTestBase::TearDown): call ewk_shutdown().
+        (TitleChangedData):
+        (EWK2UnitTest):
+        (EWK2UnitTest::onTitleChanged):
+        (EWK2UnitTest::EWK2UnitTestBase::waitUntilTitleChangedTo): Add convenience
+        method to wait until the view main frame title changes to a given value.
+        * UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h:
+        (EWK2UnitTestBase):
+        * UIProcess/API/efl/tests/test_ewk2_view.cpp:
+        (TEST_F):
+        (serverCallbackNavigation):
+
 2012-07-27  Mikhail Pozdnyakov  <[email protected]>
 
         [EFL][WK2] Keyboard events miss key location data.

Modified: trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp (123862 => 123863)


--- trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp	2012-07-27 11:09:35 UTC (rev 123862)
+++ trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.cpp	2012-07-27 11:12:56 UTC (rev 123863)
@@ -47,13 +47,8 @@
 
 void EWK2UnitTestBase::SetUp()
 {
-    ASSERT_GT(ecore_evas_init(), 0);
+    ewk_init();
 
-    // glib support (for libsoup).
-    g_type_init();
-    if (!ecore_main_loop_glib_integrate())
-        fprintf(stderr, "WARNING: Glib main loop integration is not working. Some tests may fail.");
-
     unsigned int width = environment->defaultWidth();
     unsigned int height = environment->defaultHeight();
 
@@ -77,7 +72,7 @@
 {
     evas_object_del(m_webView);
     ecore_evas_free(m_ecoreEvas);
-    ecore_evas_shutdown();
+    ewk_shutdown();
 }
 
 void EWK2UnitTestBase::loadUrlSync(const char* url)
@@ -93,4 +88,28 @@
     evas_object_smart_callback_del(m_webView, "load,finished", onLoadFinished);
 }
 
+struct TitleChangedData {
+    CString expectedTitle;
+    bool done;
+};
+
+static void onTitleChanged(void* userData, Evas_Object* webView, void* eventInfo)
+{
+    TitleChangedData* data = ""
+
+    if (!strcmp(ewk_view_title_get(webView), data->expectedTitle.data()))
+        data->done = true;
+}
+
+void EWK2UnitTestBase::waitUntilTitleChangedTo(const char* expectedTitle)
+{
+    TitleChangedData data = { expectedTitle, false };
+    evas_object_smart_callback_add(m_webView, "title,changed", onTitleChanged, &data);
+
+    while (!data.done)
+        ecore_main_loop_iterate();
+
+    evas_object_smart_callback_del(m_webView, "title,changed", onTitleChanged);
+}
+
 } // namespace EWK2UnitTest

Modified: trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h (123862 => 123863)


--- trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h	2012-07-27 11:09:35 UTC (rev 123862)
+++ trunk/Source/WebKit2/UIProcess/API/efl/tests/UnitTestUtils/EWK2UnitTestBase.h	2012-07-27 11:12:56 UTC (rev 123863)
@@ -37,6 +37,7 @@
     virtual void TearDown();
 
     void loadUrlSync(const char* url);
+    void waitUntilTitleChangedTo(const char* expectedTitle);
 
 private:
     Evas_Object* m_webView;

Modified: trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp (123862 => 123863)


--- trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp	2012-07-27 11:09:35 UTC (rev 123862)
+++ trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp	2012-07-27 11:12:56 UTC (rev 123863)
@@ -21,9 +21,12 @@
 
 #include "UnitTestUtils/EWK2UnitTestBase.h"
 #include "UnitTestUtils/EWK2UnitTestEnvironment.h"
+#include "UnitTestUtils/EWK2UnitTestServer.h"
 #include <EWebKit2.h>
 #include <Ecore.h>
 #include <gtest/gtest.h>
+#include <wtf/OwnPtr.h>
+#include <wtf/PassOwnPtr.h>
 #include <wtf/UnusedParam.h>
 #include <wtf/text/CString.h>
 
@@ -51,6 +54,80 @@
     EXPECT_STREQ(ewk_view_uri_get(webView()), environment->defaultTestPageUrl());
 }
 
+TEST_F(EWK2UnitTestBase, ewk_view_device_pixel_ratio)
+{
+    loadUrlSync(environment->defaultTestPageUrl());
+
+    // Default pixel ratio is 1.0
+    ASSERT_FLOAT_EQ(ewk_view_device_pixel_ratio_get(webView()), 1);
+
+    ASSERT_TRUE(ewk_view_device_pixel_ratio_set(webView(), 1.2));
+    ASSERT_FLOAT_EQ(ewk_view_device_pixel_ratio_get(webView()), 1.2);
+
+    ASSERT_TRUE(ewk_view_device_pixel_ratio_set(webView(), 1));
+    ASSERT_FLOAT_EQ(ewk_view_device_pixel_ratio_get(webView()), 1);
+}
+
+TEST_F(EWK2UnitTestBase, ewk_view_html_string_load)
+{
+    ewk_view_html_string_load(webView(), "<html><head><title>Foo</title></head><body>Bar</body></html>", 0, 0);
+    waitUntilTitleChangedTo("Foo");
+    ASSERT_STREQ(ewk_view_title_get(webView()), "Foo");
+    ewk_view_html_string_load(webView(), "<html><head><title>Bar</title></head><body>Foo</body></html>", 0, 0);
+    waitUntilTitleChangedTo("Bar");
+    ASSERT_STREQ(ewk_view_title_get(webView()), "Bar");
+}
+
+static void serverCallbackNavigation(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)
+{
+    if (message->method != SOUP_METHOD_GET) {
+        soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED);
+        return;
+    }
+
+    soup_message_set_status(message, SOUP_STATUS_OK);
+
+    Eina_Strbuf* body = eina_strbuf_new();
+    eina_strbuf_append_printf(body, "<html><title>%s</title><body>%s</body></html>", path + 1, path + 1);
+    const size_t bodyLength = eina_strbuf_length_get(body);
+    soup_message_body_append(message->response_body, SOUP_MEMORY_TAKE, eina_strbuf_string_steal(body), bodyLength);
+    eina_strbuf_free(body);
+
+    soup_message_body_complete(message->response_body);
+}
+
+TEST_F(EWK2UnitTestBase, ewk_view_navigation)
+{
+    OwnPtr<EWK2UnitTestServer> httpServer = adoptPtr(new EWK2UnitTestServer);
+    httpServer->run(serverCallbackNavigation);
+
+    // Visit Page1
+    loadUrlSync(httpServer->getURIForPath("/Page1").data());
+    ASSERT_STREQ(ewk_view_title_get(webView()), "Page1");
+    ASSERT_FALSE(ewk_view_back_possible(webView()));
+    ASSERT_FALSE(ewk_view_forward_possible(webView()));
+
+    // Visit Page2
+    loadUrlSync(httpServer->getURIForPath("/Page2").data());
+    ASSERT_STREQ(ewk_view_title_get(webView()), "Page2");
+    ASSERT_TRUE(ewk_view_back_possible(webView()));
+    ASSERT_FALSE(ewk_view_forward_possible(webView()));
+
+    // Go back to Page1
+    ewk_view_back(webView());
+    waitUntilTitleChangedTo("Page1");
+    ASSERT_STREQ(ewk_view_title_get(webView()), "Page1");
+    ASSERT_FALSE(ewk_view_back_possible(webView()));
+    ASSERT_TRUE(ewk_view_forward_possible(webView()));
+
+    // Go forward to Page2
+    ewk_view_forward(webView());
+    waitUntilTitleChangedTo("Page2");
+    ASSERT_STREQ(ewk_view_title_get(webView()), "Page2");
+    ASSERT_TRUE(ewk_view_back_possible(webView()));
+    ASSERT_FALSE(ewk_view_forward_possible(webView()));
+}
+
 TEST_F(EWK2UnitTestBase, ewk_view_setting_encoding_custom)
 {
     ASSERT_FALSE(ewk_view_setting_encoding_custom_get(webView()));
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to