summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
Diffstat (limited to 'desktop')
-rw-r--r--desktop/browser.c25
-rw-r--r--desktop/browser.h3
-rw-r--r--desktop/frames.c17
3 files changed, 24 insertions, 21 deletions
diff --git a/desktop/browser.c b/desktop/browser.c
index 6b03dc900..c28eca12e 100644
--- a/desktop/browser.c
+++ b/desktop/browser.c
@@ -77,7 +77,7 @@ static void browser_window_go_post(struct browser_window *bw,
const char *url, char *post_urlenc,
struct form_successful_control *post_multipart,
bool add_to_history, const char *referer, bool download,
- bool verifiable, const char *parent_url);
+ bool verifiable, struct content *parent);
static void browser_window_callback(content_msg msg, struct content *c,
intptr_t p1, intptr_t p2, union content_msg_data data);
static void browser_window_refresh(void *p);
@@ -213,7 +213,7 @@ void browser_window_go(struct browser_window *bw, const char *url,
/* All fetches passing through here are verifiable
* (i.e are the result of user action) */
browser_window_go_post(bw, url, 0, 0, history_add, referer,
- false, true, referer);
+ false, true, NULL);
}
@@ -226,10 +226,10 @@ void browser_window_go(struct browser_window *bw, const char *url,
*/
void browser_window_download(struct browser_window *bw, const char *url,
- const char *referrer)
+ const char *referer)
{
- browser_window_go_post(bw, url, 0, 0, false, referrer,
- true, true, 0);
+ browser_window_go_post(bw, url, 0, 0, false, referer,
+ true, true, NULL);
}
@@ -244,12 +244,13 @@ void browser_window_download(struct browser_window *bw, const char *url,
*/
void browser_window_go_unverifiable(struct browser_window *bw,
- const char *url, const char *referer, bool history_add)
+ const char *url, const char *referer, bool history_add,
+ struct content *parent)
{
/* All fetches passing through here are unverifiable
* (i.e are not the result of user action) */
browser_window_go_post(bw, url, 0, 0, history_add, referer,
- false, false, referer);
+ false, false, parent);
}
/**
@@ -263,8 +264,7 @@ void browser_window_go_unverifiable(struct browser_window *bw,
* \param referer the referring uri (copied), or 0 if none
* \param download download, rather than render the uri
* \param verifiable this transaction is verifiable
- * \param parent_url URL of fetch which spawned this one (copied),
- * or 0 if none
+ * \param parent Parent content, or NULL
*
* Any existing fetches in the window are aborted.
*
@@ -278,7 +278,7 @@ void browser_window_go_post(struct browser_window *bw, const char *url,
char *post_urlenc,
struct form_successful_control *post_multipart,
bool add_to_history, const char *referer, bool download,
- bool verifiable, const char *parent_url)
+ bool verifiable, struct content *parent)
{
struct content *c;
char *url2;
@@ -389,7 +389,7 @@ void browser_window_go_post(struct browser_window *bw, const char *url,
bw->download = download;
fetchcache_go(c, referer, browser_window_callback,
(intptr_t) bw, 0, width, height,
- post_urlenc, post_multipart, verifiable, parent_url);
+ post_urlenc, post_multipart, verifiable, parent);
}
@@ -702,7 +702,8 @@ void browser_window_refresh(void *p)
bw->current_content->url, history_add);
} else {
browser_window_go_unverifiable(bw, bw->current_content->refresh,
- bw->current_content->url, history_add);
+ bw->current_content->url, history_add,
+ bw->current_content);
}
}
diff --git a/desktop/browser.h b/desktop/browser.h
index 1c88b4f44..65ea1b3c0 100644
--- a/desktop/browser.h
+++ b/desktop/browser.h
@@ -223,7 +223,8 @@ void browser_window_initialise_common(struct browser_window *bw,
void browser_window_go(struct browser_window *bw, const char *url,
const char *referrer, bool history_add);
void browser_window_go_unverifiable(struct browser_window *bw,
- const char *url, const char *referrer, bool history_add);
+ const char *url, const char *referrer, bool history_add,
+ struct content *parent);
void browser_window_download(struct browser_window *bw,
const char *url, const char *referrer);
void browser_window_update(struct browser_window *bw, bool scroll_to_top);
diff --git a/desktop/frames.c b/desktop/frames.c
index d631f0962..acabdc1b9 100644
--- a/desktop/frames.c
+++ b/desktop/frames.c
@@ -105,7 +105,8 @@ void browser_window_create_iframes(struct browser_window *bw,
window = &(bw->iframes[index++]);
if (cur->url)
browser_window_go_unverifiable(window, cur->url,
- bw->current_content->url, false);
+ bw->current_content->url, false,
+ bw->current_content);
}
}
@@ -154,7 +155,7 @@ void browser_window_create_frameset(struct browser_window *bw,
int row, col, index;
struct content_html_frames *frame;
struct browser_window *window;
- const char *referer;
+ struct content *parent;
assert(bw && frameset);
@@ -233,10 +234,8 @@ void browser_window_create_frameset(struct browser_window *bw,
window->current_content->type == CONTENT_HTML)
break;
}
- if (window->current_content)
- referer = window->current_content->url;
- else
- referer = NULL;
+
+ parent = window->current_content;
/* 4. Launch content */
for (row = 0; row < bw->rows; row++) {
@@ -248,8 +247,10 @@ void browser_window_create_frameset(struct browser_window *bw,
if (frame->url) {
browser_window_go_unverifiable(window,
frame->url,
- referer,
- true);
+ parent != NULL
+ ? parent->url : NULL,
+ true,
+ parent);
}
}
}