From 8bc3a8032008a255e72e4c4dc88d391b7073814c Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Sat, 8 Feb 2014 15:00:08 +0000 Subject: Add function to get bw's URL. --- desktop/browser.c | 17 +++++++++++++++++ desktop/browser.h | 10 ++++++++++ utils/corestrings.c | 12 ++++++++++++ utils/corestrings.h | 3 +++ 4 files changed, 42 insertions(+) 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 +#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 -- cgit v1.2.3