Changeset 125893 in webkit


Ignore:
Timestamp:
Aug 17, 2012 7:04:09 AM (12 years ago)
Author:
commit-queue@webkit.org
Message:

[EFL] [WK2] Add unit tests for vibration_client_callbacks_set API
https://bugs.webkit.org/show_bug.cgi?id=93890

Patch by Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com> on 2012-08-17
Reviewed by Kenneth Rohde Christiansen.

This patch covers unit testing of the Vibration API as delivered.

  • UIProcess/API/efl/tests/test_ewk2_context.cpp:

(VibrationCbData):
(vibrateCallback):
(cancelVibrationCallback):
(loadVibrationHTMLString):
(TEST_F):

Location:
trunk/Source/WebKit2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r125890 r125893  
     12012-08-17  Sudarsana Nagineni  <sudarsana.nagineni@linux.intel.com>
     2
     3        [EFL] [WK2] Add unit tests for vibration_client_callbacks_set API
     4        https://bugs.webkit.org/show_bug.cgi?id=93890
     5
     6        Reviewed by Kenneth Rohde Christiansen.
     7
     8        This patch covers unit testing of the Vibration API as delivered.
     9
     10        * UIProcess/API/efl/tests/test_ewk2_context.cpp:
     11        (VibrationCbData):
     12        (vibrateCallback):
     13        (cancelVibrationCallback):
     14        (loadVibrationHTMLString):
     15        (TEST_F):
     16
    1172012-08-17  Carlos Garcia Campos  <cgarcia@igalia.com>
    218
  • trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_context.cpp

    r123752 r125893  
    2929#include "UnitTestUtils/EWK2UnitTestEnvironment.h"
    3030#include <EWebKit2.h>
     31#include <Ecore.h>
    3132#include <gtest/gtest.h>
    3233
     
    6869    ASSERT_STREQ(ewk_view_title_get(webView()), "Foo");
    6970}
     71
     72struct VibrationCbData {
     73    bool didReceiveVibrateCallback; // Whether the vibration event received.
     74    bool didReceiveCancelVibrationCallback; // Whether the cancel vibration event received.
     75    unsigned vibrateCalledCount; // Vibrate callbacks count.
     76    uint64_t expectedVibrationTime; // Expected vibration time.
     77};
     78
     79static void vibrateCallback(uint64_t vibrationTime, void* userData)
     80{
     81    VibrationCbData* data = static_cast<VibrationCbData*>(userData);
     82    if (vibrationTime == data->expectedVibrationTime)
     83        data->didReceiveVibrateCallback = true;
     84    data->vibrateCalledCount++;
     85}
     86
     87static void cancelVibrationCallback(void* userData)
     88{
     89    VibrationCbData* data = static_cast<VibrationCbData*>(userData);
     90    data->didReceiveCancelVibrationCallback = true;
     91}
     92
     93static void loadVibrationHTMLString(Evas_Object* webView, const char* vibrationPattern, bool waitForVibrationEvent, VibrationCbData* data)
     94{
     95    const char* content =
     96        "<html><head><script type='text/javascript'>function vibrate() { navigator.vibrate(%s);"
     97        " document.title = \"Loaded\"; }</script></head><body onload='vibrate()'></body></html>";
     98
     99    data->didReceiveVibrateCallback = false;
     100    data->didReceiveCancelVibrationCallback = false;
     101    data->vibrateCalledCount = 0;
     102    Eina_Strbuf* buffer = eina_strbuf_new();
     103    eina_strbuf_append_printf(buffer, content, vibrationPattern);
     104    ewk_view_html_string_load(webView, eina_strbuf_string_get(buffer), 0, 0);
     105    eina_strbuf_free(buffer);
     106
     107    if (!waitForVibrationEvent)
     108        return;
     109
     110    while (!data->didReceiveVibrateCallback && !data->didReceiveCancelVibrationCallback)
     111        ecore_main_loop_iterate();
     112}
     113
     114TEST_F(EWK2UnitTestBase, ewk_context_vibration_client_callbacks_set)
     115{
     116    VibrationCbData data = { false, false, 0, 5000 };
     117    ewk_context_vibration_client_callbacks_set(ewk_context_default_get(), vibrateCallback, cancelVibrationCallback, &data);
     118
     119    // Vibrate for 5 seconds.
     120    loadVibrationHTMLString(webView(), "5000", true, &data);
     121    ASSERT_TRUE(data.didReceiveVibrateCallback);
     122
     123    // Cancel any existing vibrations.
     124    loadVibrationHTMLString(webView(), "0", true, &data);
     125    ASSERT_TRUE(data.didReceiveCancelVibrationCallback);
     126
     127    // This case the pattern will cause the device to vibrate for 200 ms, be still for 100 ms, and then vibrate for 5000 ms.
     128    loadVibrationHTMLString(webView(), "[200, 100, 5000]", true, &data);
     129    ASSERT_EQ(data.vibrateCalledCount, 2);
     130    ASSERT_TRUE(data.didReceiveVibrateCallback);
     131
     132    // Cancel outstanding vibration pattern.
     133    loadVibrationHTMLString(webView(), "[0]", true, &data);
     134    ASSERT_TRUE(data.didReceiveCancelVibrationCallback);
     135
     136    // Stop listening for vibration events, by calling the function with null for the callbacks.
     137    ewk_context_vibration_client_callbacks_set(ewk_context_default_get(), 0, 0, &data);
     138
     139    // Make sure we don't receive vibration event.
     140    loadVibrationHTMLString(webView(), "[5000]", false, &data);
     141    waitUntilTitleChangedTo("Loaded");
     142    ASSERT_STREQ(ewk_view_title_get(webView()), "Loaded");
     143    ASSERT_FALSE(data.didReceiveVibrateCallback);
     144
     145    // Make sure we don't receive cancel vibration event.
     146    loadVibrationHTMLString(webView(), "0", false, &data);
     147    waitUntilTitleChangedTo("Loaded");
     148    ASSERT_STREQ(ewk_view_title_get(webView()), "Loaded");
     149    ASSERT_FALSE(data.didReceiveCancelVibrationCallback);
     150}
Note: See TracChangeset for help on using the changeset viewer.