Changeset 166565 in webkit
- Timestamp:
- Mar 31, 2014 11:01:28 PM (10 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r166560 r166565 1 2014-03-31 Joonghun Park <jh718.park@samsung.com> 2 3 [EFL][WK2]Implement ewk APIs of web local storage which have deletion functions of the local storage entries 4 https://bugs.webkit.org/show_bug.cgi?id=130577 5 6 Reviewed by Gyuyoung Kim. 7 8 * UIProcess/API/efl/ewk_storage_manager.cpp: 9 (ewk_storage_manager_entries_clear): 10 (ewk_storage_manager_entries_for_origin_del): 11 * UIProcess/API/efl/ewk_storage_manager.h: 12 * UIProcess/API/efl/ewk_storage_manager_private.h: 13 (EwkStorageManager::wkStorageManager): 14 * UIProcess/API/efl/tests/test_ewk2_storage_manager.cpp: 15 adding and updating API unittest and fixing memory leak of the existing test case 16 (EWK2StorageManagerTest::getStorageOriginsCallback): 17 (EWK2StorageManagerTest::checkOrigin): 18 (EWK2StorageManagerTest::getOrigin): 19 (TEST_F): 20 1 21 2014-03-31 Anders Carlsson <andersca@apple.com> 2 22 -
trunk/Source/WebKit2/UIProcess/API/efl/ewk_storage_manager.cpp
r166051 r166565 29 29 #include "WKAPICast.h" 30 30 #include "WKArray.h" 31 #include "WKSecurityOrigin.h" 32 #include "WKString.h" 31 33 #include "ewk_security_origin_private.h" 32 34 #include "ewk_storage_manager_private.h" … … 95 97 return true; 96 98 } 99 100 Eina_Bool ewk_storage_manager_entries_clear(Ewk_Storage_Manager* ewkStorageManager) 101 { 102 EINA_SAFETY_ON_NULL_RETURN_VAL(ewkStorageManager, false); 103 104 WKKeyValueStorageManagerDeleteAllEntries(ewkStorageManager->wkStorageManager().get()); 105 106 return true; 107 } 108 109 Eina_Bool ewk_storage_manager_entries_for_origin_del(Ewk_Storage_Manager* ewkStorageManager, Ewk_Security_Origin* origin) 110 { 111 EINA_SAFETY_ON_NULL_RETURN_VAL(ewkStorageManager, false); 112 EWK_OBJ_GET_IMPL_OR_RETURN(EwkSecurityOrigin, origin, impl, false); 113 114 WKKeyValueStorageManagerDeleteEntriesForOrigin(ewkStorageManager->wkStorageManager().get(), impl->wkSecurityOrigin()); 115 116 return true; 117 } -
trunk/Source/WebKit2/UIProcess/API/efl/ewk_storage_manager.h
r166051 r166565 34 34 #define ewk_storage_manager_h 35 35 36 #include "ewk_security_origin.h" 36 37 #include <Eina.h> 37 38 … … 81 82 EAPI Eina_Bool ewk_storage_manager_origins_async_get(const Ewk_Storage_Manager *manager, Ewk_Storage_Origins_Async_Get_Cb callback, void *user_data); 82 83 84 /** 85 * Deletes all local storage. 86 * 87 * @param manager Ewk_Storage_Manager object 88 * 89 * @return @c EINA_TRUE on success, @c EINA_FALSE on failure 90 */ 91 EAPI Eina_Bool ewk_storage_manager_entries_clear(Ewk_Storage_Manager *manager); 92 93 /** 94 * Deletes local storage for the specified origin. 95 * 96 * @param manager Ewk_Storage_Manager object 97 * @param origin security origin 98 * 99 * @return @c EINA_TRUE on success, @c EINA_FALSE on failure 100 */ 101 EAPI Eina_Bool ewk_storage_manager_entries_for_origin_del(Ewk_Storage_Manager *manager, Ewk_Security_Origin *origin); 102 83 103 #ifdef __cplusplus 84 104 } -
trunk/Source/WebKit2/UIProcess/API/efl/ewk_storage_manager_private.h
r159190 r166565 40 40 Eina_List* createOriginList(WKArrayRef wkList) const; 41 41 void getStorageOrigins(void* context, WKKeyValueStorageManagerGetKeyValueStorageOriginsFunction callback) const; 42 WKRetainPtr<WKKeyValueStorageManagerRef> wkStorageManager() { return m_storageManager; } 42 43 43 44 private: -
trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_storage_manager.cpp
r166051 r166565 30 30 using namespace EWK2UnitTest; 31 31 32 static const char storageHTML[] = 33 "<html><head><title>original title</title></head>" 34 "<body>" 35 "<script type='text/javascript'>" 36 " localStorage.setItem('item', 'storage');" 37 "</script>" 38 "</body></html>"; 39 32 40 class EWK2StorageManagerTest : public EWK2UnitTestBase { 33 41 public: … … 56 64 void* data; 57 65 EINA_LIST_FOREACH(origins, l, data) { 58 originData->originList = eina_list_append(originData->originList, data);59 66 Ewk_Security_Origin* origin = static_cast<Ewk_Security_Origin*>(data); 60 67 if (!strcmp(ewk_security_origin_protocol_get(origin), "http") 61 68 && !strcmp(ewk_security_origin_host_get(origin), "www.storagetest.com") 62 69 && !ewk_security_origin_port_get(origin)) { 70 originData->originList = origins; 63 71 originData->isSynchronized = true; 64 ecore_main_loop_quit();72 return; 65 73 } 66 74 } 75 void* originItem; 76 EINA_LIST_FREE(origins, originItem) 77 ewk_object_unref(static_cast<Ewk_Object*>(originItem)); 67 78 } 68 79 … … 85 96 86 97 protected: 87 bool checkOrigin(Eina_List* origins, Ewk_Security_Origin** origin )98 bool checkOrigin(Eina_List* origins, Ewk_Security_Origin** origin, const char* protocol, const char* host, uint32_t port) 88 99 { 89 100 Eina_List* l; … … 91 102 EINA_LIST_FOREACH(origins, l, data) { 92 103 *origin = static_cast<Ewk_Security_Origin*>(data); 93 if (!strcmp(ewk_security_origin_protocol_get(*origin), "http")94 && !strcmp(ewk_security_origin_host_get(*origin), "www.storagetest.com")104 if (!strcmp(ewk_security_origin_protocol_get(*origin), protocol) 105 && !strcmp(ewk_security_origin_host_get(*origin), host) 95 106 && !ewk_security_origin_port_get(*origin)) 96 107 return true; … … 98 109 99 110 return false; 111 } 112 113 Ewk_Security_Origin* getOrigin(Eina_List* origins, Ewk_Security_Origin** origin, const char* protocol, const char* host, uint32_t port) 114 { 115 Eina_List* l; 116 void* data; 117 EINA_LIST_FOREACH(origins, l, data) { 118 *origin = static_cast<Ewk_Security_Origin*>(data); 119 if (!strcmp(ewk_security_origin_protocol_get(*origin), protocol) 120 && !strcmp(ewk_security_origin_host_get(*origin), host) 121 && !ewk_security_origin_port_get(*origin)) { 122 return *origin; 123 } 124 } 125 126 return nullptr; 100 127 } 101 128 }; … … 104 131 { 105 132 Evas_Object* view = webView(); 106 const char* storageHTML =107 "<html><head><title>original title</title></head>"108 "<body>"109 "<script type='text/javascript'>"110 " localStorage.setItem('item', 'storage');"111 "</script>"112 "</body></html>";113 114 ewk_view_html_string_load(view, storageHTML, "http://www.storagetest.com", 0);115 133 116 134 OriginData originData; 117 135 originData.manager = ewk_context_storage_manager_get(ewk_view_context_get(view)); 136 ewk_storage_manager_entries_clear(originData.manager); 137 138 ewk_view_html_string_load(view, storageHTML, "http://www.storagetest.com", 0); 139 ASSERT_TRUE(waitUntilLoadFinished()); 140 118 141 ASSERT_TRUE(ewk_storage_manager_origins_async_get(originData.manager, getStorageOriginsCallback, &originData)); 119 Ecore_Timer* storage _timer = ecore_timer_add(1, reinterpret_cast<Ecore_Task_Cb>(timerCallback), &originData);142 Ecore_Timer* storageTimer = ecore_timer_add(1, reinterpret_cast<Ecore_Task_Cb>(timerCallback), &originData); 120 143 121 144 ecore_main_loop_begin(); 122 if (storage_timer) 123 ecore_timer_del(storage_timer); 145 storageTimer = nullptr; 124 146 125 147 ASSERT_TRUE(originData.isSynchronized); 126 ASSERT_LE(1, eina_list_count(originData.originList)); 127 148 ASSERT_EQ(1, eina_list_count(originData.originList)); 149 150 void* originItem; 151 EINA_LIST_FREE(originData.originList, originItem) 152 ewk_object_unref(static_cast<Ewk_Object*>(originItem)); 153 } 154 155 TEST_F(EWK2StorageManagerTest, ewk_storage_manager_entries_for_origin_delete) 156 { 157 Evas_Object* view = webView(); 158 159 OriginData originData; 160 originData.manager = ewk_context_storage_manager_get(ewk_view_context_get(view)); 161 ewk_storage_manager_entries_clear(originData.manager); 162 163 ewk_view_html_string_load(view, storageHTML, "http://www.storagetest1.com", 0); 164 ASSERT_TRUE(waitUntilLoadFinished()); 165 ewk_view_html_string_load(view, storageHTML, "http://www.storagetest2.com", 0); 166 ASSERT_TRUE(waitUntilLoadFinished()); 167 ewk_view_html_string_load(view, storageHTML, "http://www.storagetest.com", 0); 168 ASSERT_TRUE(waitUntilLoadFinished()); 169 170 ASSERT_TRUE(ewk_storage_manager_origins_async_get(originData.manager, getStorageOriginsCallback, &originData)); 171 Ecore_Timer* storageTimer = ecore_timer_add(1, reinterpret_cast<Ecore_Task_Cb>(timerCallback), &originData); 172 173 ecore_main_loop_begin(); 174 storageTimer = nullptr; 175 176 ASSERT_TRUE(originData.isSynchronized); 128 177 Ewk_Security_Origin* origin = 0; 129 EXPECT_TRUE(checkOrigin(originData.originList, &origin)); 130 131 EXPECT_EQ(origin, ewk_object_ref(origin)); 132 ewk_object_unref(origin); 178 ASSERT_TRUE(checkOrigin(originData.originList, &origin, "http", "www.storagetest1.com", 0)); 179 ASSERT_EQ(3, eina_list_count(originData.originList)); 180 181 ewk_storage_manager_entries_for_origin_del(originData.manager, getOrigin(originData.originList, &origin, "http", "www.storagetest1.com", 0)); 182 183 void* originItem; 184 EINA_LIST_FREE(originData.originList, originItem) 185 ewk_object_unref(static_cast<Ewk_Object*>(originItem)); 186 187 ASSERT_TRUE(ewk_storage_manager_origins_async_get(originData.manager, getStorageOriginsCallback, &originData)); 188 189 storageTimer = ecore_timer_add(1, reinterpret_cast<Ecore_Task_Cb>(timerCallback), &originData); 190 191 ecore_main_loop_begin(); 192 storageTimer = nullptr; 193 194 ASSERT_TRUE(originData.isSynchronized); 195 ASSERT_EQ(2, eina_list_count(originData.originList)); 196 ASSERT_FALSE(checkOrigin(originData.originList, &origin, "http", "www.storagetest1.com", 0)); 197 198 EINA_LIST_FREE(originData.originList, originItem) 199 ewk_object_unref(static_cast<Ewk_Object*>(originItem)); 133 200 }
Note: See TracChangeset
for help on using the changeset viewer.