diff options
author | Daniel Silverstone <dsilvers@digital-scurf.org> | 2019-05-05 15:38:09 +0100 |
---|---|---|
committer | Daniel Silverstone <dsilvers@digital-scurf.org> | 2019-05-05 16:00:03 +0100 |
commit | 1146f8bf49eda7f23960e2efdd6dcefb6a98b552 (patch) | |
tree | 553805b6b0c41ff73f4fea712cb9169b69efbde0 | |
parent | f3892c98fdc734a0abca136ab712c94246fe66c0 (diff) | |
download | netsurf-1146f8bf49eda7f23960e2efdd6dcefb6a98b552.tar.gz netsurf-1146f8bf49eda7f23960e2efdd6dcefb6a98b552.tar.bz2 |
Add browser_window_exec
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
-rw-r--r-- | desktop/browser.c | 21 | ||||
-rw-r--r-- | include/netsurf/browser_window.h | 12 |
2 files changed, 33 insertions, 0 deletions
diff --git a/desktop/browser.c b/desktop/browser.c index 1c8aa95fa..d26abd043 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -3406,3 +3406,24 @@ int browser_get_dpi(void) { return FIXTOINT(nscss_screen_dpi); } + +/* exported interface documented in browser.h */ +bool browser_window_exec(struct browser_window *bw, const char *src, size_t srclen) +{ + assert(bw != NULL); + + if (!bw->current_content) { + NSLOG(netsurf, DEEPDEBUG, "Unable to exec, no content"); + return false; + } + + if (content_get_status(bw->current_content) != CONTENT_STATUS_DONE) { + NSLOG(netsurf, DEEPDEBUG, "Unable to exec, content not done"); + return false; + } + + /* Okay it should be safe, forward the request through to the content + * itself. Only HTML contents currently support executing code + */ + return content_exec(bw->current_content, src, srclen); +} diff --git a/include/netsurf/browser_window.h b/include/netsurf/browser_window.h index 439b0785d..77a263189 100644 --- a/include/netsurf/browser_window.h +++ b/include/netsurf/browser_window.h @@ -725,4 +725,16 @@ nserror browser_window_get_name(struct browser_window *bw, const char **name); */ nserror browser_window_set_name(struct browser_window *bw, const char *name); +/** + * Execute some JavaScript code in a browsing context. + * + * Runs the passed in JavaScript code in the browsing context. + * + * \param bw The browser window + * \param src The JavaScript source code + * \param srclen The length of the source code + * \return Whether the JS function was successfully injected into the content + */ +bool browser_window_exec(struct browser_window *bw, const char *src, size_t srclen); + #endif |