Title: [186153] trunk/Source/WebKit2
- Revision
- 186153
- Author
- [email protected]
- Date
- 2015-06-30 17:46:55 -0700 (Tue, 30 Jun 2015)
Log Message
[EFL] Implement ewk_favicon_database_clear() API.
https://bugs.webkit.org/show_bug.cgi?id=146337
Patch by Hyungwook Lee <[email protected]> on 2015-06-30
Reviewed by Gyuyoung Kim.
We need to provide way to clear favicon data.
* UIProcess/API/efl/ewk_favicon_database.cpp:
(EwkFaviconDatabase::getIconSurfaceSynchronously):
(EwkFaviconDatabase::clearFaviconDatabase):
(EwkFaviconDatabase::iconDataReadyForPageURL):
(ewk_favicon_database_icon_change_callback_del):
(ewk_favicon_database_clear):
* UIProcess/API/efl/ewk_favicon_database.h:
* UIProcess/API/efl/ewk_favicon_database_private.h:
* UIProcess/API/efl/tests/test_ewk2_favicon_database.cpp:
(TEST_F):
Modified Paths
Diff
Modified: trunk/Source/WebKit2/ChangeLog (186152 => 186153)
--- trunk/Source/WebKit2/ChangeLog 2015-07-01 00:39:22 UTC (rev 186152)
+++ trunk/Source/WebKit2/ChangeLog 2015-07-01 00:46:55 UTC (rev 186153)
@@ -1,3 +1,23 @@
+2015-06-30 Hyungwook Lee <[email protected]>
+
+ [EFL] Implement ewk_favicon_database_clear() API.
+ https://bugs.webkit.org/show_bug.cgi?id=146337
+
+ Reviewed by Gyuyoung Kim.
+
+ We need to provide way to clear favicon data.
+
+ * UIProcess/API/efl/ewk_favicon_database.cpp:
+ (EwkFaviconDatabase::getIconSurfaceSynchronously):
+ (EwkFaviconDatabase::clearFaviconDatabase):
+ (EwkFaviconDatabase::iconDataReadyForPageURL):
+ (ewk_favicon_database_icon_change_callback_del):
+ (ewk_favicon_database_clear):
+ * UIProcess/API/efl/ewk_favicon_database.h:
+ * UIProcess/API/efl/ewk_favicon_database_private.h:
+ * UIProcess/API/efl/tests/test_ewk2_favicon_database.cpp:
+ (TEST_F):
+
2015-06-30 Andreas Kling <[email protected]>
[iOS] Ignore viewport rect changes during zoom bouncing.
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_favicon_database.cpp (186152 => 186153)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_favicon_database.cpp 2015-07-01 00:39:22 UTC (rev 186152)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_favicon_database.cpp 2015-07-01 00:46:55 UTC (rev 186153)
@@ -82,6 +82,11 @@
return surface.release();
}
+void EwkFaviconDatabase::clearFaviconDatabase()
+{
+ WKIconDatabaseRemoveAllIcons(m_iconDatabase.get());
+}
+
void EwkFaviconDatabase::iconDataReadyForPageURL(WKIconDatabaseRef, WKURLRef pageURL, const void* clientInfo)
{
EwkFaviconDatabase* ewkIconDatabase = const_cast<EwkFaviconDatabase*>(static_cast<const EwkFaviconDatabase*>(clientInfo));
@@ -121,3 +126,10 @@
ewkIconDatabase->unwatchChanges(callback);
}
+
+void ewk_favicon_database_clear(Ewk_Favicon_Database* ewkIconDatabase)
+{
+ EINA_SAFETY_ON_NULL_RETURN(ewkIconDatabase);
+
+ ewkIconDatabase->clearFaviconDatabase();
+}
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_favicon_database.h (186152 => 186153)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_favicon_database.h 2015-07-01 00:39:22 UTC (rev 186152)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_favicon_database.h 2015-07-01 00:46:55 UTC (rev 186153)
@@ -94,6 +94,13 @@
*/
EAPI void ewk_favicon_database_icon_change_callback_del(Ewk_Favicon_Database *database, Ewk_Favicon_Database_Icon_Change_Cb callback);
+/**
+ * Deletes all favicon data.
+ *
+ * @param database database object to clear all favicon data
+ */
+EAPI void ewk_favicon_database_clear(Ewk_Favicon_Database *database);
+
#ifdef __cplusplus
}
#endif
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_favicon_database_private.h (186152 => 186153)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_favicon_database_private.h 2015-07-01 00:39:22 UTC (rev 186152)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_favicon_database_private.h 2015-07-01 00:46:55 UTC (rev 186153)
@@ -56,6 +56,7 @@
PassRefPtr<cairo_surface_t> getIconSurfaceSynchronously(const char* pageURL) const;
void watchChanges(const IconChangeCallbackData& callbackData);
void unwatchChanges(Ewk_Favicon_Database_Icon_Change_Cb callback);
+ void clearFaviconDatabase();
private:
static void iconDataReadyForPageURL(WKIconDatabaseRef iconDatabase, WKURLRef pageURL, const void* clientInfo);
Modified: trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_favicon_database.cpp (186152 => 186153)
--- trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_favicon_database.cpp 2015-07-01 00:39:22 UTC (rev 186152)
+++ trunk/Source/WebKit2/UIProcess/API/efl/tests/test_ewk2_favicon_database.cpp 2015-07-01 00:46:55 UTC (rev 186153)
@@ -120,3 +120,53 @@
ewk_favicon_database_icon_change_callback_del(database, requestFaviconData);
}
+
+TEST_F(EWK2FaviconDatabaseTest, ewk_favicon_database_clear)
+{
+ std::unique_ptr<EWK2UnitTestServer> httpServer1 = std::make_unique<EWK2UnitTestServer>();
+ httpServer1->run(serverCallback);
+
+ // Set favicon database path and enable functionality.
+ Ewk_Context* context = ewk_view_context_get(webView());
+ ewk_context_favicon_database_directory_set(context, 0);
+ Ewk_Favicon_Database* database = ewk_context_favicon_database_get(context);
+
+ IconRequestData data1 = { webView(), 0 };
+ ewk_favicon_database_icon_change_callback_add(database, requestFaviconData, &data1);
+
+ ASSERT_TRUE(loadUrlSync(httpServer1->getURLForPath("/").data()));
+
+ while (!data1.icon)
+ ecore_main_loop_iterate();
+
+ ASSERT_TRUE(data1.icon);
+ evas_object_unref(data1.icon);
+
+ ewk_favicon_database_icon_change_callback_del(database, requestFaviconData);
+
+ // Runs another httpServer for loading another favicon.
+ // EWK2UnitTestServer runs on random port that automatically makes different url of the favicon.
+ std::unique_ptr<EWK2UnitTestServer> httpServer2 = std::make_unique<EWK2UnitTestServer>();
+ httpServer2->run(serverCallback);
+
+ IconRequestData data2 = { webView(), 0 };
+ ewk_favicon_database_icon_change_callback_add(database, requestFaviconData, &data2);
+
+ ASSERT_TRUE(loadUrlSync(httpServer2->getURLForPath("/").data()));
+
+ while (!data2.icon)
+ ecore_main_loop_iterate();
+
+ ASSERT_TRUE(data2.icon);
+ evas_object_unref(data2.icon);
+
+ ewk_favicon_database_icon_change_callback_del(database, requestFaviconData);
+
+ ewk_favicon_database_clear(database);
+
+ data1.icon = ewk_favicon_database_icon_get(database, httpServer1->getURLForPath("/").data(), evas_object_evas_get(webView()));
+ ASSERT_FALSE(data1.icon);
+
+ data2.icon = ewk_favicon_database_icon_get(database, httpServer2->getURLForPath("/").data(), evas_object_evas_get(webView()));
+ ASSERT_FALSE(data2.icon);
+}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes