Title: [161139] trunk/Source/WebKit2
Revision
161139
Author
m.pak...@samsung.com
Date
2013-12-30 02:26:00 -0800 (Mon, 30 Dec 2013)

Log Message

[EFL][WK2] Replace ecore_main_loop_iterate with waitUntilTrue in ewk tests
https://bugs.webkit.org/show_bug.cgi?id=125919

Reviewed by Gyuyoung Kim.

Using ecore_main_loop_iterate in while loop may result in tests hang-up when
condition is not met. Replacing it with waitUntilTrue introduces a timer
after which internal loop is canceled. This will cause test to fail instead
of running infinitely.

* UIProcess/API/efl/tests/test_ewk2_auth_request.cpp:
(TEST_F):
* UIProcess/API/efl/tests/test_ewk2_color_picker.cpp:
(TEST_F):
* UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp:
(TEST_F):
* UIProcess/API/efl/tests/test_ewk2_view.cpp:
(EWK2ViewTest::onVibrate):
(EWK2ViewTest::onCancelVibration):
(EWK2ViewTest::loadVibrationHTMLString):
(TEST_F):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (161138 => 161139)


--- trunk/Source/WebKit2/ChangeLog	2013-12-30 09:58:14 UTC (rev 161138)
+++ trunk/Source/WebKit2/ChangeLog	2013-12-30 10:26:00 UTC (rev 161139)
@@ -1,3 +1,27 @@
+2013-12-30  Michał Pakuła vel Rutka  <m.pak...@samsung.com>
+
+        [EFL][WK2] Replace ecore_main_loop_iterate with waitUntilTrue in ewk tests
+        https://bugs.webkit.org/show_bug.cgi?id=125919
+
+        Reviewed by Gyuyoung Kim.
+
+        Using ecore_main_loop_iterate in while loop may result in tests hang-up when
+        condition is not met. Replacing it with waitUntilTrue introduces a timer
+        after which internal loop is canceled. This will cause test to fail instead
+        of running infinitely.
+
+        * UIProcess/API/efl/tests/test_ewk2_auth_request.cpp:
+        (TEST_F):
+        * UIProcess/API/efl/tests/test_ewk2_color_picker.cpp:
+        (TEST_F):
+        * UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp:
+        (TEST_F):
+        * UIProcess/API/efl/tests/test_ewk2_view.cpp:
+        (EWK2ViewTest::onVibrate):
+        (EWK2ViewTest::onCancelVibration):
+        (EWK2ViewTest::loadVibrationHTMLString):
+        (TEST_F):
+
 2013-12-30  Carlos Garcia Campos  <cgar...@igalia.com>
 
         [GTK] Split WebKit2APITests/TestWebKitWebView

Modified: trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_auth_request.cpp (161138 => 161139)


--- trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_auth_request.cpp	2013-12-30 09:58:14 UTC (rev 161138)
+++ trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_auth_request.cpp	2013-12-30 10:26:00 UTC (rev 161139)
@@ -182,8 +182,7 @@
     // Will attempt to continue without authentication by default.
     ewk_object_unref(authenticationRequest);
 
-    while (!isFinished)
-        ecore_main_loop_iterate();
+    waitUntilTrue(isFinished);
 
     ASSERT_STRNE(expectedSuccessTitle, ewk_view_title_get(webView()));
 

Modified: trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_color_picker.cpp (161138 => 161139)


--- trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_color_picker.cpp	2013-12-30 09:58:14 UTC (rev 161138)
+++ trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_color_picker.cpp	2013-12-30 10:26:00 UTC (rev 161139)
@@ -155,21 +155,18 @@
 
     bool handled = false;
     evas_object_smart_callback_add(webView(), "input,type,color,request", onColorPickerDone, &handled);
-    while (!handled)
-        ecore_main_loop_iterate();
+    waitUntilTrue(handled);
 
     clickButton(ShowColorPickerButton);
 
     handled = false;
-    while (!handled)
-        ecore_main_loop_iterate();
+    waitUntilTrue(handled);
 
     api->input_picker_color_dismiss = hideColorPickerByRemovingElement;
     clickButton(HideColorPickerButton);
 
     handled = false;
-    while (!handled)
-        ecore_main_loop_iterate();
+    waitUntilTrue(handled);
     evas_object_smart_callback_del(webView(), "input,type,color,request", onColorPickerDone);
 }
 #endif // ENABLE(INPUT_TYPE_COLOR)

Modified: trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp (161138 => 161139)


--- trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp	2013-12-30 09:58:14 UTC (rev 161138)
+++ trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_cookie_manager.cpp	2013-12-30 10:26:00 UTC (rev 161139)
@@ -182,15 +182,11 @@
     // Check for cookie changes notifications
     ASSERT_TRUE(loadUrlSync(httpServer->getURLForPath("/index.html").data()));
 
-    while (!cookiesChanged)
-        ecore_main_loop_iterate();
-    ASSERT_TRUE(cookiesChanged);
+    ASSERT_TRUE(waitUntilTrue(cookiesChanged));
 
     cookiesChanged = false;
     ewk_cookie_manager_cookies_clear(cookieManager);
-    while (!cookiesChanged)
-        ecore_main_loop_iterate();
-    ASSERT_TRUE(cookiesChanged);
+    ASSERT_TRUE(waitUntilTrue(cookiesChanged));
 
     // Stop watching for notifications
     ewk_cookie_manager_changes_watch(cookieManager, 0, 0);

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


--- trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp	2013-12-30 09:58:14 UTC (rev 161138)
+++ trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_view.cpp	2013-12-30 10:26:00 UTC (rev 161139)
@@ -54,6 +54,7 @@
     struct VibrationCbData {
         bool didReceiveVibrate; // Whether the vibration event received.
         bool didReceiveCancelVibration; // Whether the cancel vibration event received.
+        bool testFinished;
         unsigned vibrateCalledCount; // Vibrate callbacks count.
         unsigned expectedVibrationTime; // Expected vibration time.
     };
@@ -158,8 +159,10 @@
     {
         VibrationCbData* data = ""
         unsigned* vibrationTime = static_cast<unsigned*>(eventInfo);
-        if (*vibrationTime == data->expectedVibrationTime)
+        if (*vibrationTime == data->expectedVibrationTime) {
             data->didReceiveVibrate = true;
+            data->testFinished = true;
+        }
         data->vibrateCalledCount++;
     }
 
@@ -167,6 +170,7 @@
     {
         VibrationCbData* data = ""
         data->didReceiveCancelVibration = true;
+        data->testFinished = true;
     }
 
     static void loadVibrationHTMLString(Evas_Object* webView, const char* vibrationPattern, bool waitForVibrationEvent, VibrationCbData* data)
@@ -178,6 +182,7 @@
         data->didReceiveVibrate = false;
         data->didReceiveCancelVibration = false;
         data->vibrateCalledCount = 0;
+        data->testFinished = false;
         Eina_Strbuf* buffer = eina_strbuf_new();
         eina_strbuf_append_printf(buffer, content, vibrationPattern);
         ewk_view_html_string_load(webView, eina_strbuf_string_get(buffer), 0, 0);
@@ -185,9 +190,6 @@
 
         if (!waitForVibrationEvent)
             return;
-
-        while (!data->didReceiveVibrate && !data->didReceiveCancelVibration)
-            ecore_main_loop_iterate();
     }
 
     static void onContentsSizeChangedPortrait(void* userData, Evas_Object*, void* eventInfo)
@@ -361,9 +363,7 @@
     ewk_view_html_string_load(webView(), formHTML, "file:///", 0);
     bool handled = false;
     evas_object_smart_callback_add(webView(), "form,submission,request", onFormAboutToBeSubmitted, &handled);
-    while (!handled)
-        ecore_main_loop_iterate();
-    ASSERT_TRUE(handled);
+    ASSERT_TRUE(waitUntilTrue(handled));
     evas_object_smart_callback_del(webView(), "form,submission,request", onFormAboutToBeSubmitted);
 }
 
@@ -924,19 +924,23 @@
 
     // Vibrate for 5 seconds.
     loadVibrationHTMLString(webView(), "5000", true, &data);
+    waitUntilTrue(data.testFinished);
     ASSERT_TRUE(data.didReceiveVibrate);
 
     // Cancel any existing vibrations.
     loadVibrationHTMLString(webView(), "0", true, &data);
+    waitUntilTrue(data.testFinished);
     ASSERT_TRUE(data.didReceiveCancelVibration);
 
     // This case the pattern will cause the device to vibrate for 200 ms, be still for 100 ms, and then vibrate for 5000 ms.
     loadVibrationHTMLString(webView(), "[200, 100, 5000]", true, &data);
+    waitUntilTrue(data.testFinished);
     ASSERT_EQ(2, data.vibrateCalledCount);
     ASSERT_TRUE(data.didReceiveVibrate);
 
     // Cancel outstanding vibration pattern.
     loadVibrationHTMLString(webView(), "[0]", true, &data);
+    waitUntilTrue(data.testFinished);
     ASSERT_TRUE(data.didReceiveCancelVibration);
 
     // Stop listening for vibration events, by calling the function with null for the callbacks.
@@ -945,12 +949,14 @@
 
     // Make sure we don't receive vibration event.
     loadVibrationHTMLString(webView(), "[5000]", false, &data);
+    waitUntilTrue(data.testFinished);
     ASSERT_TRUE(waitUntilTitleChangedTo("Loaded"));
     ASSERT_STREQ("Loaded", ewk_view_title_get(webView()));
     ASSERT_FALSE(data.didReceiveVibrate);
 
     // Make sure we don't receive cancel vibration event.
     loadVibrationHTMLString(webView(), "0", false, &data);
+    waitUntilTrue(data.testFinished);
     ASSERT_TRUE(waitUntilTitleChangedTo("Loaded"));
     ASSERT_STREQ("Loaded", ewk_view_title_get(webView()));
     ASSERT_FALSE(data.didReceiveCancelVibration);
@@ -968,30 +974,26 @@
     bool sizeChanged = false;
     evas_object_smart_callback_add(webView(), "contents,size,changed", onContentsSizeChangedPortrait, &sizeChanged);
     ewk_view_html_string_load(webView(), contentsSizeHTMLPortrait, 0, 0);
-    while (!sizeChanged)
-        ecore_main_loop_iterate();
+    waitUntilTrue(sizeChanged);
     evas_object_smart_callback_del(webView(), "contents,size,changed", onContentsSizeChangedPortrait);
 
     evas_object_smart_callback_add(webView(), "contents,size,changed", onContentsSizeChangedLandscape, &sizeChanged);
     ewk_view_device_pixel_ratio_set(webView(), 2);
     ewk_view_html_string_load(webView(), contentsSizeHTMLLandscape, 0, 0);
     sizeChanged = false;
-    while (!sizeChanged)
-        ecore_main_loop_iterate();
+    waitUntilTrue(sizeChanged);
     evas_object_smart_callback_del(webView(), "contents,size,changed", onContentsSizeChangedLandscape);
 
     evas_object_smart_callback_add(webView(), "contents,size,changed", onContentsSizeChangedPortrait, &sizeChanged);
     ewk_view_scale_set(webView(), 3, 0, 0);
     ewk_view_html_string_load(webView(), contentsSizeHTMLPortrait, 0, 0);
     sizeChanged = false;
-    while (!sizeChanged)
-        ecore_main_loop_iterate();
+    waitUntilTrue(sizeChanged);
 
     // Make sure we get signal after loaded the contents having same size with previous one.
     sizeChanged = false;
     ewk_view_html_string_load(webView(), contentsSizeHTMLPortrait, 0, 0);
-    while (!sizeChanged)
-        ecore_main_loop_iterate();
+    waitUntilTrue(sizeChanged);
 
     evas_object_smart_callback_del(webView(), "contents,size,changed", onContentsSizeChangedPortrait);
 }
@@ -1003,13 +1005,11 @@
     waitUntilLoadFinished();
 
     ASSERT_TRUE(ewk_view_page_contents_get(webView(), EWK_PAGE_CONTENTS_TYPE_MHTML, PageContentsAsMHTMLCallback, 0));
-    while (!obtainedPageContents)
-        ecore_main_loop_iterate();
+    waitUntilTrue(obtainedPageContents);
 
     obtainedPageContents = false;
     ASSERT_TRUE(ewk_view_page_contents_get(webView(), EWK_PAGE_CONTENTS_TYPE_STRING, PageContentsAsStringCallback, 0));
-    while (!obtainedPageContents)
-        ecore_main_loop_iterate();
+    waitUntilTrue(obtainedPageContents);
 }
 
 TEST_F(EWK2ViewTest, ewk_view_source_mode)
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to