diff options
author | Claudio Saavedra <csaavedra@igalia.com> | 2012-03-03 03:24:58 +0800 |
---|---|---|
committer | Xan Lopez <xan@igalia.com> | 2012-03-07 04:49:46 +0800 |
commit | f9ac9eaf73b94ca0ee3b7cf3a129500161f58ea2 (patch) | |
tree | 906cc10f6f9373aee811d86d5da79dbda64bf3f4 | |
parent | 2f19776788cd479963afcf53235190c79f3c1402 (diff) | |
download | gsoc2013-epiphany-f9ac9eaf73b94ca0ee3b7cf3a129500161f58ea2.tar.gz gsoc2013-epiphany-f9ac9eaf73b94ca0ee3b7cf3a129500161f58ea2.tar.zst gsoc2013-epiphany-f9ac9eaf73b94ca0ee3b7cf3a129500161f58ea2.zip |
ephy-history-service: add a method to clear the entire history
-rw-r--r-- | lib/history/ephy-history-service.c | 43 | ||||
-rw-r--r-- | lib/history/ephy-history-service.h | 1 |
2 files changed, 44 insertions, 0 deletions
diff --git a/lib/history/ephy-history-service.c b/lib/history/ephy-history-service.c index 1d5f06ac2..8d4e188fb 100644 --- a/lib/history/ephy-history-service.c +++ b/lib/history/ephy-history-service.c @@ -32,6 +32,7 @@ typedef enum { ADD_VISIT, ADD_VISITS, DELETE_URLS, + CLEAR, /* QUIT */ QUIT, /* READ */ @@ -287,6 +288,23 @@ ephy_history_service_close_database_connections (EphyHistoryService *self) priv->history_database = NULL; } +static void +ephy_history_service_clear_all (EphyHistoryService *self) +{ + EphyHistoryServicePrivate *priv = EPHY_HISTORY_SERVICE (self)->priv; + GError *error = NULL; + + if (NULL == priv->history_database) + return; + + ephy_sqlite_connection_execute (priv->history_database, + "DELETE FROM hosts;", &error); + if (error) { + g_error ("Couldn't clear history database: %s", error->message); + g_error_free(error); + } +} + static gboolean ephy_history_service_is_scheduled_to_quit (EphyHistoryService *self) { @@ -688,6 +706,18 @@ ephy_history_service_execute_delete_urls (EphyHistoryService *self, return TRUE; } +static gboolean +ephy_history_service_execute_clear (EphyHistoryService *self, + gpointer pointer, + gpointer *result) +{ + + ephy_history_service_clear_all (self); + ephy_history_service_schedule_commit (self); + + return TRUE; +} + void ephy_history_service_delete_urls (EphyHistoryService *self, GList *urls, @@ -701,6 +731,18 @@ ephy_history_service_delete_urls (EphyHistoryService *self, ephy_history_service_send_message (self, message); } +void +ephy_history_service_clear (EphyHistoryService *self, + EphyHistoryJobCallback callback, + gpointer user_data) +{ + EphyHistoryServiceMessage *message = + ephy_history_service_message_new (self, CLEAR, + NULL, NULL, + callback, user_data); + ephy_history_service_send_message (self, message); +} + static void ephy_history_service_quit (EphyHistoryService *self, EphyHistoryJobCallback callback, @@ -719,6 +761,7 @@ static EphyHistoryServiceMethod methods[] = { (EphyHistoryServiceMethod)ephy_history_service_execute_add_visit, (EphyHistoryServiceMethod)ephy_history_service_execute_add_visits, (EphyHistoryServiceMethod)ephy_history_service_execute_delete_urls, + (EphyHistoryServiceMethod)ephy_history_service_execute_clear, (EphyHistoryServiceMethod)ephy_history_service_execute_quit, (EphyHistoryServiceMethod)ephy_history_service_execute_get_url, (EphyHistoryServiceMethod)ephy_history_service_execute_get_host_for_url, diff --git a/lib/history/ephy-history-service.h b/lib/history/ephy-history-service.h index 50d79f31f..64cab0cb9 100644 --- a/lib/history/ephy-history-service.h +++ b/lib/history/ephy-history-service.h @@ -70,6 +70,7 @@ void ephy_history_service_get_url (EphyHisto void ephy_history_service_delete_urls (EphyHistoryService *self, GList *urls, EphyHistoryJobCallback callback, gpointer user_data); void ephy_history_service_find_urls (EphyHistoryService *self, gint64 from, gint64 to, guint limit, GList *substring_list, EphyHistoryJobCallback callback, gpointer user_data); void ephy_history_service_visit_url (EphyHistoryService *self, const char *orig_url); +void ephy_history_service_clear (EphyHistoryService *self, EphyHistoryJobCallback callback, gpointer user_data); G_END_DECLS |