mirror of
https://git.checksum.fail/alec/erythros
synced 2025-12-11 13:39:55 +02:00
Applications/Internet/Cyberia: Send referer in link navigation and form submit
This commit is contained in:
@@ -184,6 +184,7 @@ U0 @cyberia_link_left_clicked(Widget* widget)
|
|||||||
return;
|
return;
|
||||||
StrCpy(&addressbar1->text, resolved_href);
|
StrCpy(&addressbar1->text, resolved_href);
|
||||||
Free(resolved_href);
|
Free(resolved_href);
|
||||||
|
browser->renderer->navigation_type = HTML_NAVIGATION_HREF;
|
||||||
Spawn(&@cyberia_navigate);
|
Spawn(&@cyberia_navigate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -318,6 +319,7 @@ U0 @cyberia_form_submit(@html_dom_node* form_node)
|
|||||||
}
|
}
|
||||||
|
|
||||||
Free(action);
|
Free(action);
|
||||||
|
browser->renderer->navigation_type = HTML_NAVIGATION_FORM;
|
||||||
Spawn(&@cyberia_navigate);
|
Spawn(&@cyberia_navigate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -613,8 +615,17 @@ U0 @cyberia_navigate(Bool refresh = FALSE)
|
|||||||
}
|
}
|
||||||
|
|
||||||
U8* form_data_str = NULL;
|
U8* form_data_str = NULL;
|
||||||
|
U8* referer = NULL;
|
||||||
if (browser->renderer) {
|
if (browser->renderer) {
|
||||||
form_data_str = browser->renderer->form_data_str;
|
form_data_str = browser->renderer->form_data_str;
|
||||||
|
switch (browser->renderer->navigation_type) {
|
||||||
|
case HTML_NAVIGATION_HREF:
|
||||||
|
case HTML_NAVIGATION_FORM:
|
||||||
|
referer = browser->renderer->referer;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!refresh) {
|
if (!refresh) {
|
||||||
@@ -633,6 +644,7 @@ U0 @cyberia_navigate(Bool refresh = FALSE)
|
|||||||
|
|
||||||
U8 err_msg_buffer[128];
|
U8 err_msg_buffer[128];
|
||||||
U8 status_text_buffer[1024];
|
U8 status_text_buffer[1024];
|
||||||
|
U8* referer_text_buffer = CAlloc(1024, browser_task);
|
||||||
|
|
||||||
if (!renderer->current_url) {
|
if (!renderer->current_url) {
|
||||||
StrCpy(err_msg_buffer, "ERROR: Could not parse URL");
|
StrCpy(err_msg_buffer, "ERROR: Could not parse URL");
|
||||||
@@ -656,12 +668,16 @@ U0 @cyberia_navigate(Bool refresh = FALSE)
|
|||||||
if (!StrICmp(url->scheme, "https://") && url->port != 443)
|
if (!StrICmp(url->scheme, "https://") && url->port != 443)
|
||||||
is_alternate_port = TRUE;
|
is_alternate_port = TRUE;
|
||||||
StrCpy(status_text_buffer, "Fetching ");
|
StrCpy(status_text_buffer, "Fetching ");
|
||||||
if (is_alternate_port)
|
if (is_alternate_port) {
|
||||||
String.Append(status_text_buffer, "%s%s:%d%s%s", url->scheme, url->host, url->port, url->path, url->query);
|
String.Append(status_text_buffer, "%s%s:%d%s%s", url->scheme, url->host, url->port, url->path, url->query);
|
||||||
else
|
StrPrint(referer_text_buffer, "%s%s:%d%s%s", url->scheme, url->host, url->port, url->path, url->query);
|
||||||
|
} else {
|
||||||
String.Append(status_text_buffer, "%s%s%s%s", url->scheme, url->host, url->path, url->query);
|
String.Append(status_text_buffer, "%s%s%s%s", url->scheme, url->host, url->path, url->query);
|
||||||
|
StrPrint(referer_text_buffer, "%s%s%s%s", url->scheme, url->host, url->path, url->query);
|
||||||
|
}
|
||||||
String.Append(status_text_buffer, "...");
|
String.Append(status_text_buffer, "...");
|
||||||
status1->SetText(status_text_buffer);
|
status1->SetText(status_text_buffer);
|
||||||
|
renderer->referer = referer_text_buffer;
|
||||||
|
|
||||||
U8* buffer = browser->fetch_buffer;
|
U8* buffer = browser->fetch_buffer;
|
||||||
MemSet(buffer, 0, HTTP_FETCH_BUFFER_SIZE);
|
MemSet(buffer, 0, HTTP_FETCH_BUFFER_SIZE);
|
||||||
@@ -672,6 +688,10 @@ U0 @cyberia_navigate(Bool refresh = FALSE)
|
|||||||
JsonKey* cookie_keys = NULL;
|
JsonKey* cookie_keys = NULL;
|
||||||
U8 cookie_buf[2048];
|
U8 cookie_buf[2048];
|
||||||
|
|
||||||
|
if (referer) {
|
||||||
|
headers->set("Referer", referer, JSON_STRING);
|
||||||
|
}
|
||||||
|
|
||||||
if (!StrCmp(&addressbar1->text, "about:newtab")) {
|
if (!StrCmp(&addressbar1->text, "about:newtab")) {
|
||||||
resp = CAlloc(sizeof(@http_response));
|
resp = CAlloc(sizeof(@http_response));
|
||||||
resp->body.data = NEW_TAB_HTML;
|
resp->body.data = NEW_TAB_HTML;
|
||||||
@@ -821,6 +841,7 @@ U0 @cyberia_new_tab(Bool from_link_context_menu = FALSE)
|
|||||||
tabpanel1->index = i;
|
tabpanel1->index = i;
|
||||||
++tabpanel1->count;
|
++tabpanel1->count;
|
||||||
|
|
||||||
|
// FIXME: We need Referer if we right-click a link
|
||||||
StrCpy(&addressbar1->text, new_tab_destination_url);
|
StrCpy(&addressbar1->text, new_tab_destination_url);
|
||||||
Spawn(&@cyberia_navigate);
|
Spawn(&@cyberia_navigate);
|
||||||
win->focused_widget = addressbar1;
|
win->focused_widget = addressbar1;
|
||||||
|
|||||||
Reference in New Issue
Block a user