summaryrefslogtreecommitdiff
path: root/desktop/browser_history.h
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2014-02-15 18:43:59 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2014-02-15 18:44:50 +0000
commita38a63a37ef8bdc62661d398fb485296c0bed470 (patch)
tree11a1279537f28f51de2fca4c410ecc9b96629a3d /desktop/browser_history.h
parenta55957b1c975e96a60d96d9a70c3b64bf02f96fd (diff)
downloadnetsurf-a38a63a37ef8bdc62661d398fb485296c0bed470.tar.gz
netsurf-a38a63a37ef8bdc62661d398fb485296c0bed470.tar.bz2
Make history internal to browser_window module.
Diffstat (limited to 'desktop/browser_history.h')
-rw-r--r--desktop/browser_history.h141
1 files changed, 141 insertions, 0 deletions
diff --git a/desktop/browser_history.h b/desktop/browser_history.h
new file mode 100644
index 000000000..11b58e4dd
--- /dev/null
+++ b/desktop/browser_history.h
@@ -0,0 +1,141 @@
+/*
+ * Copyright 2006 James Bursa <bursa@users.sourceforge.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/** \file
+ * Browser history tree (interface).
+ */
+
+#ifndef _NETSURF_DESKTOP_BROWSER_HISTORY_H_
+#define _NETSURF_DESKTOP_BROWSER_HISTORY_H_
+
+#include <stdbool.h>
+#include <libwapcaplet/libwapcaplet.h>
+
+#include "utils/errors.h"
+
+struct hlcache_handle;
+struct browser_window;
+struct history_entry;
+struct redraw_context;
+
+nserror browser_window_history_create(struct browser_window *bw);
+nserror browser_window_history_clone(const struct browser_window *bw,
+ struct browser_window *new);
+void browser_window_history_add(struct browser_window *bw,
+ struct hlcache_handle *content, lwc_string *frag_id);
+void browser_window_history_update(struct browser_window *bw,
+ struct hlcache_handle *content);
+void browser_window_history_destroy(struct browser_window *bw);
+void browser_window_history_back(struct browser_window *bw, bool new_window);
+void browser_window_history_forward(struct browser_window *bw, bool new_window);
+bool browser_window_history_back_available(struct browser_window *bw);
+bool browser_window_history_forward_available(struct browser_window *bw);
+void browser_window_history_size(struct browser_window *bw,
+ int *width, int *height);
+bool browser_window_history_redraw(struct browser_window *bw,
+ const struct redraw_context *ctx);
+bool browser_window_history_redraw_rectangle(struct browser_window *bw,
+ int x0, int y0, int x1, int y1, int x, int y,
+ const struct redraw_context *ctx);
+bool browser_window_history_click(struct browser_window *bw,
+ int x, int y, bool new_window);
+const char *browser_window_history_position_url(struct browser_window *bw,
+ int x, int y);
+
+/**
+ * Callback function type for history enumeration
+ *
+ * \param bw The browser window with history being enumerated
+ * \param x0, y0, x1, y1 Coordinates of entry in history tree view
+ * \param entry Current history entry
+ * \return true to continue enumeration, false to cancel enumeration
+ */
+typedef bool (*browser_window_history_enumerate_cb)(
+ const struct browser_window *bw,
+ int x0, int y0, int x1, int y1,
+ const struct history_entry *entry, void *user_data);
+
+/**
+ * Enumerate all entries in the history.
+ * Do not change the history while it is being enumerated.
+ *
+ * \param bw The browser window to enumerate history of
+ * \param cb callback function
+ * \param user_data context pointer passed to cb
+ */
+void browser_window_history_enumerate(const struct browser_window *bw,
+ browser_window_history_enumerate_cb cb, void *user_data);
+
+/**
+ * Enumerate all entries that will be reached by the 'forward' button
+ *
+ * \param bw The browser window to enumerate history of
+ * \param cb The callback function
+ * \param user_data Data passed to the callback
+ */
+void browser_window_history_enumerate_forward(const struct browser_window *bw,
+ browser_window_history_enumerate_cb cb, void *user_data);
+
+/**
+ * Enumerate all entries that will be reached by the 'back' button
+ *
+ * \param bw The browser window to enumerate history of
+ * \param cb The callback function
+ * \param user_data Data passed to the callback
+ */
+void browser_window_history_enumerate_back(const struct browser_window *bw,
+ browser_window_history_enumerate_cb cb, void *user_data);
+
+/**
+ * Returns the URL to a history entry
+ *
+ * \param entry the history entry to retrieve the URL from
+ * \return the URL
+ */
+const char *browser_window_history_entry_get_url(
+ const struct history_entry *entry);
+
+/**
+ * Returns the URL to a history entry
+ *
+ * \param entry the history entry to retrieve the fragment id from
+ * \return the fragment id
+ */
+const char *browser_window_history_entry_get_fragment_id(
+ const struct history_entry *entry);
+
+/**
+ * Returns the title of a history entry
+ *
+ * \param entry the history entry to retrieve the title from
+ * \return the title
+ */
+const char *browser_window_history_entry_get_title(
+ const struct history_entry *entry);
+
+/**
+ * Navigate to specified history entry, optionally in new window
+ *
+ * \param bw browser window
+ * \param entry entry to open
+ * \param new_window open entry in new window
+ */
+void browser_window_history_go(struct browser_window *bw,
+ struct history_entry *entry, bool new_window);
+
+#endif