summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--desktop/browser.c17
-rw-r--r--desktop/browser.h10
-rw-r--r--utils/corestrings.c12
-rw-r--r--utils/corestrings.h3
4 files changed, 42 insertions, 0 deletions
diff --git a/desktop/browser.c b/desktop/browser.c
index b9f55ba45..77258df4d 100644
--- a/desktop/browser.c
+++ b/desktop/browser.c
@@ -1927,6 +1927,23 @@ nserror browser_window_navigate(struct browser_window *bw,
}
+/* Exported interface, documented in browser.h */
+nsurl * browser_window_get_url(struct browser_window *bw)
+{
+ assert(bw != NULL);
+
+ if (bw->current_content != NULL) {
+ return hlcache_handle_get_url(bw->current_content);
+
+ } else if (bw->loading_content != NULL) {
+ /* TODO: should we return this? */
+ return hlcache_handle_get_url(bw->loading_content);
+ }
+
+ return corestring_nsurl_about_blank;
+}
+
+
/*
* Get the dimensions of the area a browser window occupies
*
diff --git a/desktop/browser.h b/desktop/browser.h
index 306f48bba..8eb6c9c31 100644
--- a/desktop/browser.h
+++ b/desktop/browser.h
@@ -119,6 +119,16 @@ nserror browser_window_navigate(struct browser_window *bw,
struct fetch_multipart_data *post_multipart,
struct hlcache_handle *parent);
+/**
+ * Get a browser window's URL.
+ *
+ * \param bw browser window
+ * \return pointer to nsurl. Doesn't create a ref for caller.
+ *
+ * Note: guaranteed to return a valid nsurl ptr, never returns NULL.
+ */
+nsurl * browser_window_get_url(struct browser_window *bw);
+
void browser_window_get_dimensions(struct browser_window *bw,
int *width, int *height, bool scaled);
void browser_window_set_dimensions(struct browser_window *bw,
diff --git a/utils/corestrings.c b/utils/corestrings.c
index c51a38fd7..db6d72e13 100644
--- a/utils/corestrings.c
+++ b/utils/corestrings.c
@@ -268,6 +268,9 @@ dom_string *corestring_dom___ns_key_libcss_node_data;
dom_string *corestring_dom___ns_key_file_name_node_data;
dom_string *corestring_dom___ns_key_image_coords_node_data;
+/* nsurl URLs */
+nsurl *corestring_nsurl_about_blank;
+
/*
* Free the core strings
*/
@@ -535,6 +538,10 @@ void corestrings_fini(void)
CSS_DOM_STRING_UNREF(__ns_key_file_name_node_data);
CSS_DOM_STRING_UNREF(__ns_key_image_coords_node_data);
#undef CSS_DOM_STRING_UNREF
+
+ /* nsurl URLs */
+ if (corestring_nsurl_about_blank != NULL)
+ nsurl_unref(corestring_nsurl_about_blank);
}
@@ -856,6 +863,11 @@ nserror corestrings_init(void)
goto error;
}
+ error = nsurl_create("about:blank", &corestring_nsurl_about_blank);
+ if (error != NSERROR_OK) {
+ goto error;
+ }
+
return NSERROR_OK;
error:
diff --git a/utils/corestrings.h b/utils/corestrings.h
index 1f34ada6a..2a1f88b09 100644
--- a/utils/corestrings.h
+++ b/utils/corestrings.h
@@ -24,6 +24,7 @@
#define NETSURF_UTILS_CORESTRINGS_H_
#include <libwapcaplet/libwapcaplet.h>
+#include "utils/nsurl.h"
#include "utils/errors.h"
nserror corestrings_init(void);
@@ -279,5 +280,7 @@ extern struct dom_string *corestring_dom___ns_key_libcss_node_data;
extern struct dom_string *corestring_dom___ns_key_file_name_node_data;
extern struct dom_string *corestring_dom___ns_key_image_coords_node_data;
+/* URLs */
+extern nsurl *corestring_nsurl_about_blank;
#endif