mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
[ecmascript] Fix location.reload
This commit is contained in:
parent
2133aca5a0
commit
ab1f909416
@ -754,25 +754,25 @@ delayed_goto(void *data)
|
||||
if (deg->vs->doc_view) {
|
||||
goto_uri_frame(deg->vs->doc_view->session, deg->uri,
|
||||
deg->vs->doc_view->name,
|
||||
CACHE_MODE_NORMAL);
|
||||
deg->reload ? CACHE_MODE_FORCE_RELOAD : CACHE_MODE_NORMAL);
|
||||
}
|
||||
done_uri(deg->uri);
|
||||
mem_free(deg);
|
||||
}
|
||||
|
||||
void
|
||||
location_goto_const(struct document_view *doc_view, const char *url)
|
||||
location_goto_const(struct document_view *doc_view, const char *url, int reload)
|
||||
{
|
||||
char *url2 = stracpy(url);
|
||||
|
||||
if (url2) {
|
||||
location_goto(doc_view, url2);
|
||||
location_goto(doc_view, url2, reload);
|
||||
mem_free(url2);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
location_goto(struct document_view *doc_view, char *url)
|
||||
location_goto(struct document_view *doc_view, char *url, int reload)
|
||||
{
|
||||
char *new_abs_url;
|
||||
struct uri *new_uri;
|
||||
@ -796,6 +796,7 @@ location_goto(struct document_view *doc_view, char *url)
|
||||
assert(doc_view->vs);
|
||||
deg->vs = doc_view->vs;
|
||||
deg->uri = new_uri;
|
||||
deg->reload = reload;
|
||||
/* It does not seem to be very safe inside of frames to
|
||||
* call goto_uri() right away. */
|
||||
register_bottom_half(delayed_goto, deg);
|
||||
|
@ -143,6 +143,7 @@ struct delayed_goto {
|
||||
* disappear during wild dances inside of frames or so. */
|
||||
struct view_state *vs;
|
||||
struct uri *uri;
|
||||
unsigned int reload:1;
|
||||
};
|
||||
|
||||
/* Why is the interpreter bound to {struct view_state} instead of {struct
|
||||
@ -190,8 +191,8 @@ void check_for_rerender(struct ecmascript_interpreter *interpreter, const char*
|
||||
|
||||
void toggle_ecmascript(struct session *ses);
|
||||
|
||||
void location_goto(struct document_view *doc_view, char *url);
|
||||
void location_goto_const(struct document_view *doc_view, const char *url);
|
||||
void location_goto(struct document_view *doc_view, char *url, int reload);
|
||||
void location_goto_const(struct document_view *doc_view, const char *url, int reload);
|
||||
|
||||
extern char *console_error_filename;
|
||||
extern char *console_log_filename;
|
||||
|
@ -803,7 +803,7 @@ mjs_document_set_property_url(js_State *J)
|
||||
js_error(J, "!url");
|
||||
return;
|
||||
}
|
||||
location_goto_const(doc_view, url);
|
||||
location_goto_const(doc_view, url, 0);
|
||||
js_pushundefined(J);
|
||||
}
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
#include "elinks.h"
|
||||
|
||||
#include "document/document.h"
|
||||
#include "document/view.h"
|
||||
#include "ecmascript/ecmascript.h"
|
||||
#include "ecmascript/mujs.h"
|
||||
@ -319,7 +320,7 @@ mjs_location_set_property_hash(js_State *J)
|
||||
js_error(J, "!str");
|
||||
return;
|
||||
}
|
||||
location_goto_const(vs->doc_view, str);
|
||||
location_goto_const(vs->doc_view, str, 0);
|
||||
js_pushundefined(J);
|
||||
}
|
||||
|
||||
@ -345,7 +346,7 @@ mjs_location_set_property_host(js_State *J)
|
||||
js_error(J, "!str");
|
||||
return;
|
||||
}
|
||||
location_goto_const(vs->doc_view, str);
|
||||
location_goto_const(vs->doc_view, str, 0);
|
||||
js_pushundefined(J);
|
||||
}
|
||||
|
||||
@ -371,7 +372,7 @@ mjs_location_set_property_hostname(js_State *J)
|
||||
js_error(J, "!str");
|
||||
return;
|
||||
}
|
||||
location_goto_const(vs->doc_view, str);
|
||||
location_goto_const(vs->doc_view, str, 0);
|
||||
js_pushundefined(J);
|
||||
}
|
||||
|
||||
@ -397,7 +398,7 @@ mjs_location_set_property_href(js_State *J)
|
||||
js_error(J, "!str");
|
||||
return;
|
||||
}
|
||||
location_goto_const(vs->doc_view, str);
|
||||
location_goto_const(vs->doc_view, str, 0);
|
||||
js_pushundefined(J);
|
||||
}
|
||||
|
||||
@ -423,7 +424,7 @@ mjs_location_set_property_pathname(js_State *J)
|
||||
js_error(J, "!str");
|
||||
return;
|
||||
}
|
||||
location_goto_const(vs->doc_view, str);
|
||||
location_goto_const(vs->doc_view, str, 0);
|
||||
js_pushundefined(J);
|
||||
}
|
||||
|
||||
@ -449,7 +450,7 @@ mjs_location_set_property_port(js_State *J)
|
||||
js_error(J, "!str");
|
||||
return;
|
||||
}
|
||||
location_goto_const(vs->doc_view, str);
|
||||
location_goto_const(vs->doc_view, str, 0);
|
||||
js_pushundefined(J);
|
||||
}
|
||||
|
||||
@ -475,7 +476,7 @@ mjs_location_set_property_protocol(js_State *J)
|
||||
js_error(J, "!str");
|
||||
return;
|
||||
}
|
||||
location_goto_const(vs->doc_view, str);
|
||||
location_goto_const(vs->doc_view, str, 0);
|
||||
js_pushundefined(J);
|
||||
}
|
||||
|
||||
@ -501,7 +502,7 @@ mjs_location_set_property_search(js_State *J)
|
||||
js_error(J, "!str");
|
||||
return;
|
||||
}
|
||||
location_goto_const(vs->doc_view, str);
|
||||
location_goto_const(vs->doc_view, str, 0);
|
||||
js_pushundefined(J);
|
||||
}
|
||||
|
||||
@ -528,7 +529,7 @@ mjs_location_assign(js_State *J)
|
||||
js_error(J, "out of memory");
|
||||
return;
|
||||
}
|
||||
location_goto_const(vs->doc_view, url);
|
||||
location_goto_const(vs->doc_view, url, 0);
|
||||
js_pushundefined(J);
|
||||
}
|
||||
|
||||
@ -548,7 +549,7 @@ mjs_location_reload(js_State *J)
|
||||
js_error(J, "!vs");
|
||||
return;
|
||||
}
|
||||
location_goto_const(vs->doc_view, "");
|
||||
location_goto_const(vs->doc_view, struri(vs->doc_view->document->uri), 1);
|
||||
js_pushundefined(J);
|
||||
}
|
||||
|
||||
@ -584,7 +585,7 @@ mjs_location_replace(js_State *J)
|
||||
del_from_history(&ses->history, loc);
|
||||
}
|
||||
}
|
||||
location_goto_const(vs->doc_view, url);
|
||||
location_goto_const(vs->doc_view, url, 0);
|
||||
js_pushundefined(J);
|
||||
}
|
||||
|
||||
|
@ -204,7 +204,7 @@ mjs_window_set_property_location(js_State *J)
|
||||
js_pushnull(J);
|
||||
return;
|
||||
}
|
||||
location_goto_const(doc_view, url);
|
||||
location_goto_const(doc_view, url, 0);
|
||||
js_pushundefined(J);
|
||||
}
|
||||
|
||||
|
@ -636,7 +636,7 @@ js_document_set_property_location(JSContext *ctx, JSValueConst this_val, JSValue
|
||||
return JS_EXCEPTION;
|
||||
}
|
||||
|
||||
location_goto_const(doc_view, url);
|
||||
location_goto_const(doc_view, url, 0);
|
||||
JS_FreeCString(ctx, url);
|
||||
|
||||
return JS_UNDEFINED;
|
||||
@ -889,7 +889,7 @@ js_document_set_property_url(JSContext *ctx, JSValueConst this_val, JSValue val)
|
||||
if (!url) {
|
||||
return JS_EXCEPTION;
|
||||
}
|
||||
location_goto_const(doc_view, url);
|
||||
location_goto_const(doc_view, url, 0);
|
||||
JS_FreeCString(ctx, url);
|
||||
|
||||
return JS_UNDEFINED;
|
||||
|
@ -10,6 +10,7 @@
|
||||
|
||||
#include "elinks.h"
|
||||
|
||||
#include "document/document.h"
|
||||
#include "document/view.h"
|
||||
#include "ecmascript/ecmascript.h"
|
||||
#include "ecmascript/quickjs.h"
|
||||
@ -352,7 +353,7 @@ js_location_set_property_hash(JSContext *ctx, JSValueConst this_val, JSValue val
|
||||
if (!str) {
|
||||
return JS_EXCEPTION;
|
||||
}
|
||||
location_goto_const(vs->doc_view, str);
|
||||
location_goto_const(vs->doc_view, str, 0);
|
||||
JS_FreeCString(ctx, str);
|
||||
|
||||
return JS_UNDEFINED;
|
||||
@ -383,7 +384,7 @@ js_location_set_property_host(JSContext *ctx, JSValueConst this_val, JSValue val
|
||||
if (!str) {
|
||||
return JS_EXCEPTION;
|
||||
}
|
||||
location_goto_const(vs->doc_view, str);
|
||||
location_goto_const(vs->doc_view, str, 0);
|
||||
JS_FreeCString(ctx, str);
|
||||
|
||||
return JS_UNDEFINED;
|
||||
@ -414,7 +415,7 @@ js_location_set_property_hostname(JSContext *ctx, JSValueConst this_val, JSValue
|
||||
if (!str) {
|
||||
return JS_EXCEPTION;
|
||||
}
|
||||
location_goto_const(vs->doc_view, str);
|
||||
location_goto_const(vs->doc_view, str, 0);
|
||||
JS_FreeCString(ctx, str);
|
||||
|
||||
return JS_UNDEFINED;
|
||||
@ -445,7 +446,7 @@ js_location_set_property_href(JSContext *ctx, JSValueConst this_val, JSValue val
|
||||
if (!str) {
|
||||
return JS_EXCEPTION;
|
||||
}
|
||||
location_goto_const(vs->doc_view, str);
|
||||
location_goto_const(vs->doc_view, str, 0);
|
||||
JS_FreeCString(ctx, str);
|
||||
|
||||
return JS_UNDEFINED;
|
||||
@ -476,7 +477,7 @@ js_location_set_property_pathname(JSContext *ctx, JSValueConst this_val, JSValue
|
||||
if (!str) {
|
||||
return JS_EXCEPTION;
|
||||
}
|
||||
location_goto_const(vs->doc_view, str);
|
||||
location_goto_const(vs->doc_view, str, 0);
|
||||
JS_FreeCString(ctx, str);
|
||||
|
||||
return JS_UNDEFINED;
|
||||
@ -507,7 +508,7 @@ js_location_set_property_port(JSContext *ctx, JSValueConst this_val, JSValue val
|
||||
if (!str) {
|
||||
return JS_EXCEPTION;
|
||||
}
|
||||
location_goto_const(vs->doc_view, str);
|
||||
location_goto_const(vs->doc_view, str, 0);
|
||||
JS_FreeCString(ctx, str);
|
||||
|
||||
return JS_UNDEFINED;
|
||||
@ -538,7 +539,7 @@ js_location_set_property_protocol(JSContext *ctx, JSValueConst this_val, JSValue
|
||||
if (!str) {
|
||||
return JS_EXCEPTION;
|
||||
}
|
||||
location_goto_const(vs->doc_view, str);
|
||||
location_goto_const(vs->doc_view, str, 0);
|
||||
JS_FreeCString(ctx, str);
|
||||
|
||||
return JS_UNDEFINED;
|
||||
@ -569,7 +570,7 @@ js_location_set_property_search(JSContext *ctx, JSValueConst this_val, JSValue v
|
||||
if (!str) {
|
||||
return JS_EXCEPTION;
|
||||
}
|
||||
location_goto_const(vs->doc_view, str);
|
||||
location_goto_const(vs->doc_view, str, 0);
|
||||
JS_FreeCString(ctx, str);
|
||||
|
||||
return JS_UNDEFINED;
|
||||
@ -597,7 +598,7 @@ js_location_assign(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst
|
||||
if (!url) {
|
||||
return JS_EXCEPTION;
|
||||
}
|
||||
location_goto_const(vs->doc_view, url);
|
||||
location_goto_const(vs->doc_view, url, 0);
|
||||
JS_FreeCString(ctx, url);
|
||||
|
||||
return JS_UNDEFINED;
|
||||
@ -620,7 +621,7 @@ js_location_reload(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst
|
||||
#endif
|
||||
return JS_EXCEPTION;
|
||||
}
|
||||
location_goto_const(vs->doc_view, "");
|
||||
location_goto_const(vs->doc_view, struri(vs->doc_view->document->uri), 1);
|
||||
|
||||
return JS_UNDEFINED;
|
||||
}
|
||||
@ -656,7 +657,7 @@ js_location_replace(JSContext *ctx, JSValueConst this_val, int argc, JSValueCons
|
||||
del_from_history(&ses->history, loc);
|
||||
}
|
||||
}
|
||||
location_goto_const(vs->doc_view, url);
|
||||
location_goto_const(vs->doc_view, url, 0);
|
||||
JS_FreeCString(ctx, url);
|
||||
|
||||
return JS_UNDEFINED;
|
||||
|
@ -573,7 +573,7 @@ js_window_set_property_location(JSContext *ctx, JSValueConst this_val, JSValue v
|
||||
return JS_EXCEPTION;
|
||||
}
|
||||
|
||||
location_goto_const(doc_view, url);
|
||||
location_goto_const(doc_view, url, 0);
|
||||
JS_FreeCString(ctx, url);
|
||||
|
||||
return JS_UNDEFINED;
|
||||
|
@ -875,7 +875,7 @@ document_set_property_location(JSContext *ctx, unsigned int argc, JS::Value *vp)
|
||||
char *url = jsval_to_string(ctx, args[0]);
|
||||
|
||||
if (url) {
|
||||
location_goto(doc_view, url);
|
||||
location_goto(doc_view, url, 0);
|
||||
mem_free(url);
|
||||
}
|
||||
|
||||
@ -1131,7 +1131,7 @@ document_set_property_url(JSContext *ctx, unsigned int argc, JS::Value *vp)
|
||||
doc_view = vs->doc_view;
|
||||
char *url = jsval_to_string(ctx, args[0]);
|
||||
if (url) {
|
||||
location_goto(doc_view, url);
|
||||
location_goto(doc_view, url, 0);
|
||||
mem_free(url);
|
||||
}
|
||||
|
||||
|
@ -1004,7 +1004,7 @@ location_assign(JSContext *ctx, unsigned int argc, JS::Value *rval)
|
||||
if (!url) {
|
||||
return false;
|
||||
}
|
||||
location_goto(doc_view, url);
|
||||
location_goto(doc_view, url, 0);
|
||||
mem_free(url);
|
||||
|
||||
return true;
|
||||
@ -1050,7 +1050,7 @@ location_reload(JSContext *ctx, unsigned int argc, JS::Value *rval)
|
||||
return false;
|
||||
}
|
||||
doc_view = vs->doc_view;
|
||||
location_goto_const(doc_view, "");
|
||||
location_goto_const(doc_view, struri(doc_view->document->uri), 1);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -1114,7 +1114,7 @@ location_replace(JSContext *ctx, unsigned int argc, JS::Value *rval)
|
||||
del_from_history(&ses->history, loc);
|
||||
}
|
||||
}
|
||||
location_goto(doc_view, url);
|
||||
location_goto(doc_view, url, 0);
|
||||
mem_free(url);
|
||||
|
||||
return true;
|
||||
@ -1144,7 +1144,7 @@ location_goto_common(JSContext *ctx, struct document_view *doc_view, JS::HandleV
|
||||
char *url = jsval_to_string(ctx, val);
|
||||
|
||||
if (url) {
|
||||
location_goto(doc_view, url);
|
||||
location_goto(doc_view, url, 0);
|
||||
mem_free(url);
|
||||
}
|
||||
}
|
||||
|
@ -174,9 +174,6 @@ find_child_frame(struct document_view *doc_view, struct frame_desc *tframe)
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
void location_goto(struct document_view *doc_view, char *url);
|
||||
|
||||
static bool window_addEventListener(JSContext *ctx, unsigned int argc, JS::Value *rval);
|
||||
static bool window_alert(JSContext *ctx, unsigned int argc, JS::Value *rval);
|
||||
static bool window_clearInterval(JSContext *ctx, unsigned int argc, JS::Value *rval);
|
||||
@ -998,7 +995,7 @@ window_set_property_location(JSContext *ctx, unsigned int argc, JS::Value *vp)
|
||||
char *url = jsval_to_string(ctx, args[0]);
|
||||
|
||||
if (url) {
|
||||
location_goto(doc_view, url);
|
||||
location_goto(doc_view, url, 0);
|
||||
mem_free(url);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user