summaryrefslogtreecommitdiff
path: root/render
diff options
context:
space:
mode:
authorVincent Sanders <vince@netsurf-browser.org>2013-02-14 15:09:28 +0000
committerVincent Sanders <vince@netsurf-browser.org>2013-02-18 11:23:27 +0000
commit3bfb5b96a7c7cb2718a60987e69cd659ed49b9d8 (patch)
tree40aa4e52aa50010c8f7c47dda79be2b77339e546 /render
parentc545bb4b42dff8bfd4c288e330f52848ec2df6c4 (diff)
downloadnetsurf-3bfb5b96a7c7cb2718a60987e69cd659ed49b9d8.tar.gz
netsurf-3bfb5b96a7c7cb2718a60987e69cd659ed49b9d8.tar.bz2
browser_window_navigate refactor
Diffstat (limited to 'render')
-rw-r--r--render/form.c62
-rw-r--r--render/html_interaction.c23
2 files changed, 58 insertions, 27 deletions
diff --git a/render/form.c b/render/form.c
index c2819b479..998d0f293 100644
--- a/render/form.c
+++ b/render/form.c
@@ -1443,8 +1443,9 @@ void form_submit(nsurl *page_url, struct browser_window *target,
{
char *data = NULL;
struct fetch_multipart_data *success;
- nsurl *action;
+ nsurl *action_url;
nsurl *action_query;
+ nserror error;
assert(form != NULL);
@@ -1453,6 +1454,14 @@ void form_submit(nsurl *page_url, struct browser_window *target,
return;
}
+ /* Decompose action */
+ if (nsurl_create(form->action, &action_url) != NSERROR_OK) {
+ free(data);
+ fetch_multipart_data_destroy(success);
+ warn_user("NoMemory", 0);
+ return;
+ }
+
switch (form->method) {
case method_GET:
data = form_url_encode(form, success, true);
@@ -1462,28 +1471,26 @@ void form_submit(nsurl *page_url, struct browser_window *target,
return;
}
- /* Decompose action */
- if (nsurl_create(form->action, &action) != NSERROR_OK) {
- free(data);
- fetch_multipart_data_destroy(success);
- warn_user("NoMemory", 0);
- return;
- }
-
/* Replace query segment */
- if (nsurl_replace_query(action, data, &action_query) !=
- NSERROR_OK) {
- nsurl_unref(action);
+ error = nsurl_replace_query(action_url, data, &action_query);
+ if (error != NSERROR_OK) {
+ nsurl_unref(action_query);
free(data);
fetch_multipart_data_destroy(success);
- warn_user("NoMemory", 0);
+ warn_user(messages_get_errorcode(error), 0);
return;
}
/* Construct submit url */
- browser_window_go(target, nsurl_access(action_query),
- nsurl_access(page_url), true);
- nsurl_unref(action);
+ browser_window_navigate(target,
+ action_query,
+ page_url,
+ BROWSER_WINDOW_GO_FLAG_HISTORY |
+ BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
+ NULL,
+ NULL,
+ NULL);
+
nsurl_unref(action_query);
break;
@@ -1492,19 +1499,34 @@ void form_submit(nsurl *page_url, struct browser_window *target,
if (data == NULL) {
fetch_multipart_data_destroy(success);
warn_user("NoMemory", 0);
+ nsurl_unref(action_url);
return;
}
- browser_window_go_post(target, form->action, data, 0,
- true, nsurl_access(page_url), false, true, 0);
+ browser_window_navigate(target,
+ action_url,
+ page_url,
+ BROWSER_WINDOW_GO_FLAG_HISTORY |
+ BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
+ data,
+ NULL,
+ NULL);
break;
case method_POST_MULTIPART:
- browser_window_go_post(target, form->action, 0, success,
- true, nsurl_access(page_url), false, true, 0);
+ browser_window_navigate(target,
+ action_url,
+ page_url,
+ BROWSER_WINDOW_GO_FLAG_HISTORY |
+ BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
+ NULL,
+ success,
+ NULL);
+
break;
}
+ nsurl_unref(action_url);
fetch_multipart_data_destroy(success);
free(data);
}
diff --git a/render/html_interaction.c b/render/html_interaction.c
index dfebc2577..16e9b1c28 100644
--- a/render/html_interaction.c
+++ b/render/html_interaction.c
@@ -704,10 +704,14 @@ void html_mouse_action(struct content *c, struct browser_window *bw,
if (mouse & BROWSER_MOUSE_CLICK_1 &&
mouse & BROWSER_MOUSE_MOD_1) {
/* force download of link */
- browser_window_go_post(bw, nsurl_access(url), 0, 0,
- false,
- nsurl_access(content_get_url(c)),
- true, true, 0);
+ browser_window_navigate(bw,
+ url,
+ content_get_url(c),
+ BROWSER_WINDOW_GO_FLAG_DOWNLOAD |
+ BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
+ NULL,
+ NULL,
+ NULL);
} else if (mouse & BROWSER_MOUSE_CLICK_2 &&
mouse & BROWSER_MOUSE_MOD_1) {
@@ -856,9 +860,14 @@ void html_mouse_action(struct content *c, struct browser_window *bw,
gadget->form, gadget);
break;
case ACTION_GO:
- browser_window_go(browser_window_find_target(bw, target, mouse),
- nsurl_access(url),
- nsurl_access(content_get_url(c)), true);
+ browser_window_navigate(browser_window_find_target(bw, target, mouse),
+ url,
+ content_get_url(c),
+ BROWSER_WINDOW_GO_FLAG_HISTORY |
+ BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
+ NULL,
+ NULL,
+ NULL);
break;
case ACTION_NONE:
break;