Changeset 125893 in webkit
- Timestamp:
- Aug 17, 2012 7:04:09 AM (12 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r125890 r125893 1 2012-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 1 17 2012-08-17 Carlos Garcia Campos <cgarcia@igalia.com> 2 18 -
trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_context.cpp
r123752 r125893 29 29 #include "UnitTestUtils/EWK2UnitTestEnvironment.h" 30 30 #include <EWebKit2.h> 31 #include <Ecore.h> 31 32 #include <gtest/gtest.h> 32 33 … … 68 69 ASSERT_STREQ(ewk_view_title_get(webView()), "Foo"); 69 70 } 71 72 struct 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 79 static 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 87 static void cancelVibrationCallback(void* userData) 88 { 89 VibrationCbData* data = static_cast<VibrationCbData*>(userData); 90 data->didReceiveCancelVibrationCallback = true; 91 } 92 93 static 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 114 TEST_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.