static gboolean faviconDatabaseGetInvalidFaviconIdle(void *userData) { webkit_favicon_database_get_favicon_pixbuf(webkit_get_favicon_database(), "http://www.webkitgtk.org/", gIconSize, gIconSize, NULL, faviconDatabaseGetInvalidFaviconCallback, userData); return FALSE; }
static void ephy_hosts_store_init (EphyHostsStore *self) { GType types[EPHY_HOSTS_STORE_N_COLUMNS]; types[EPHY_HOSTS_STORE_COLUMN_ID] = G_TYPE_INT; types[EPHY_HOSTS_STORE_COLUMN_TITLE] = G_TYPE_STRING; types[EPHY_HOSTS_STORE_COLUMN_ADDRESS] = G_TYPE_STRING; types[EPHY_HOSTS_STORE_COLUMN_VISIT_COUNT] = G_TYPE_INT; types[EPHY_HOSTS_STORE_COLUMN_FAVICON] = GDK_TYPE_PIXBUF; gtk_list_store_set_column_types (GTK_LIST_STORE (self), EPHY_HOSTS_STORE_N_COLUMNS, types); gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (self), EPHY_HOSTS_STORE_COLUMN_ADDRESS, GTK_SORT_ASCENDING); #ifdef HAVE_WEBKIT2 g_signal_connect (webkit_web_context_get_favicon_database (webkit_web_context_get_default ()), "favicon-changed", G_CALLBACK (icon_changed_cb), self); #else g_signal_connect (webkit_get_favicon_database (), "icon-loaded", G_CALLBACK (icon_changed_cb), self); #endif }
static gboolean faviconDatabaseGetValidFaviconIdle(void *userData) { webkit_favicon_database_get_favicon_pixbuf(webkit_get_favicon_database(), baseURI, gIconSize, gIconSize, NULL, faviconDatabaseGetValidFaviconCallback, userData); return FALSE; }
static void async_get_favicon_cb (GObject *source, GAsyncResult *result, gpointer user_data) { GtkTreeIter iter; GtkTreePath *path; IconLoadData *data = (IconLoadData *) user_data; GdkPixbuf *favicon = webkit_favicon_database_get_favicon_pixbuf_finish (webkit_get_favicon_database (), result, NULL); if (favicon) { /* The completion model might have changed its contents */ if (gtk_tree_row_reference_valid (data->row_reference)) { path = gtk_tree_row_reference_get_path (data->row_reference); gtk_tree_model_get_iter (GTK_TREE_MODEL (data->model), &iter, path); gtk_tree_path_free (path); gtk_list_store_set (data->model, &iter, EPHY_HOSTS_STORE_COLUMN_FAVICON, favicon, -1); } g_object_unref (favicon); } g_object_unref (data->model); gtk_tree_row_reference_free (data->row_reference); g_slice_free (IconLoadData, data); }
static void testWebKitFaviconDatabaseCloseDatabase(void) { WebKitFaviconDatabase *database = webkit_get_favicon_database(); char *databasePath = g_strdup(webkit_favicon_database_get_path(database)); webkit_favicon_database_set_path(database, 0); deleteDatabaseFileIfExists(databasePath); g_free(databasePath); }
static void testWebKitFaviconDatabaseRemoveAll(void) { WebKitFaviconDatabase *database = webkit_get_favicon_database(); webkit_favicon_database_clear(database); char *iconURI = webkit_favicon_database_get_favicon_uri(database, baseURI); g_assert(!iconURI); g_free(iconURI); }
static void testWebKitFaviconDatabaseGetFaviconURI() { char *iconURI = webkit_favicon_database_get_favicon_uri(webkit_get_favicon_database(), baseURI); char *expectedURI = g_strdup_printf("%sfavicon.ico", baseURI); g_assert_cmpstr(iconURI, ==, expectedURI); g_free(expectedURI); g_free(iconURI); }
static gboolean faviconDatabaseGetFaviconCancelledIdle(void *userData) { GCancellable *cancellable = g_cancellable_new(); webkit_favicon_database_get_favicon_pixbuf(webkit_get_favicon_database(), baseURI, gIconSize, gIconSize, cancellable, faviconDatabaseGetFaviconCancelledCallback, userData); g_cancellable_cancel(cancellable); g_object_unref(cancellable); return FALSE; }
void ephy_hosts_store_add_hosts (EphyHostsStore *store, GList *hosts) { EphyHistoryHost *host; GtkTreeIter treeiter; GtkTreePath *path; GList *iter; #ifdef HAVE_WEBKIT2 /* TODO: Favicons */ #else GdkPixbuf *favicon; IconLoadData *data; WebKitFaviconDatabase *database = webkit_get_favicon_database (); #endif for (iter = hosts; iter != NULL; iter = iter->next) { host = (EphyHistoryHost *)iter->data; #ifdef HAVE_WEBKIT2 /* TODO: Favicons */ #else favicon = webkit_favicon_database_try_get_favicon_pixbuf (database, host->url, FAVICON_SIZE, FAVICON_SIZE); #endif gtk_list_store_insert_with_values (GTK_LIST_STORE (store), &treeiter, G_MAXINT, EPHY_HOSTS_STORE_COLUMN_ID, host->id, EPHY_HOSTS_STORE_COLUMN_TITLE, host->title, EPHY_HOSTS_STORE_COLUMN_ADDRESS, host->url, EPHY_HOSTS_STORE_COLUMN_VISIT_COUNT, host->visit_count, #ifdef HAVE_WEBKIT2 /* TODO: Favicons */ #else EPHY_HOSTS_STORE_COLUMN_FAVICON, favicon, #endif -1); #ifdef HAVE_WEBKIT2 /* TODO: Favicons */ #else if (favicon) g_object_unref (favicon); else { data = g_slice_new (IconLoadData); data->model = GTK_LIST_STORE (g_object_ref (store)); path = gtk_tree_model_get_path (GTK_TREE_MODEL (store), &treeiter); data->row_reference = gtk_tree_row_reference_new (GTK_TREE_MODEL (store), path); gtk_tree_path_free (path); webkit_favicon_database_get_favicon_pixbuf (database, host->url, FAVICON_SIZE, FAVICON_SIZE, NULL, async_get_favicon_cb, data); } #endif } }
static void testWebKitFaviconDatabaseSetPath() { char *databasePath = g_build_filename(g_get_tmp_dir(), "webkit-testfavicondatabase", NULL); deleteDatabaseFileIfExists(databasePath); WebKitFaviconDatabase *database = webkit_get_favicon_database(); webkit_favicon_database_set_path(database, databasePath); g_assert_cmpstr(databasePath, ==, webkit_favicon_database_get_path(database)); g_free(databasePath); }
static void set_row_in_model (EphyCompletionModel *model, int position, PotentialRow *row) { GtkTreeIter iter; GtkTreePath *path; IconLoadData *data; WebKitFaviconDatabase* database; #ifndef HAVE_WEBKIT2 GdkPixbuf *favicon; database = webkit_get_favicon_database (); #else database = webkit_web_context_get_favicon_database (webkit_web_context_get_default ()); #endif gtk_list_store_insert_with_values (GTK_LIST_STORE (model), &iter, position, EPHY_COMPLETION_TEXT_COL, row->title ? row->title : "", EPHY_COMPLETION_URL_COL, row->location, EPHY_COMPLETION_ACTION_COL, row->location, EPHY_COMPLETION_KEYWORDS_COL, row->keywords ? row->keywords : "", EPHY_COMPLETION_EXTRA_COL, row->is_bookmark, EPHY_COMPLETION_RELEVANCE_COL, row->relevance, -1); #ifndef HAVE_WEBKIT2 /* We try first with the try_get_favicon_pixbuf() because if the icon is in the DB it's faster than the async version. */ favicon = webkit_favicon_database_try_get_favicon_pixbuf (database, row->location, FAVICON_SIZE, FAVICON_SIZE); if (favicon) { gtk_list_store_set (GTK_LIST_STORE (model), &iter, EPHY_COMPLETION_FAVICON_COL, favicon, -1); g_object_unref (favicon); return; } #endif data = g_slice_new (IconLoadData); data->model = GTK_LIST_STORE (g_object_ref(model)); path = gtk_tree_model_get_path (GTK_TREE_MODEL (model), &iter); data->row_reference = gtk_tree_row_reference_new (GTK_TREE_MODEL (model), path); gtk_tree_path_free (path); #ifdef HAVE_WEBKIT2 webkit_favicon_database_get_favicon (database, row->location, NULL, icon_loaded_cb, data); #else webkit_favicon_database_get_favicon_pixbuf (database, row->location, FAVICON_SIZE, FAVICON_SIZE, NULL, icon_loaded_cb, data); #endif }
static void ephy_hosts_store_finalize (GObject *object) { EphyHostsStore *store = EPHY_HOSTS_STORE (object); #ifdef HAVE_WEBKIT2 /* TODO: Favicons */ #else g_signal_handlers_disconnect_by_func (webkit_get_favicon_database (), icon_loaded_cb, store); #endif G_OBJECT_CLASS (ephy_hosts_store_parent_class)->finalize (object); }
static void ephy_hosts_store_finalize (GObject *object) { EphyHostsStore *store = EPHY_HOSTS_STORE (object); WebKitFaviconDatabase *database; #ifdef HAVE_WEBKIT2 database = webkit_web_context_get_favicon_database (webkit_web_context_get_default ()); #else database = webkit_get_favicon_database (); #endif g_signal_handlers_disconnect_by_func (database, icon_changed_cb, store); G_OBJECT_CLASS (ephy_hosts_store_parent_class)->finalize (object); }