summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2019-05-05 21:05:27 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2019-05-05 22:17:10 +0100
commit8474c5d4c0b59e74e2ef001b5033b78d7a99fcad (patch)
tree7263eabd9bcd9c8093a822e4f051d7bd9fc45830
parent6952a239465811c26838e177d35222fd5229e393 (diff)
downloadnetsurf-8474c5d4c0b59e74e2ef001b5033b78d7a99fcad.tar.gz
netsurf-8474c5d4c0b59e74e2ef001b5033b78d7a99fcad.tar.bz2
Logging: migrate and provide content interface
Migrate the console enums into netsurf/console.h and add support so that contents can raise a message to log to the console. Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
-rw-r--r--content/content.h9
-rw-r--r--content/handlers/html/html.c2
-rw-r--r--desktop/browser.c7
-rw-r--r--include/netsurf/browser_window.h38
-rw-r--r--include/netsurf/console.h65
5 files changed, 83 insertions, 38 deletions
diff --git a/content/content.h b/content/content.h
index 77cc60574..417fb7b95 100644
--- a/content/content.h
+++ b/content/content.h
@@ -33,6 +33,7 @@
#include "content/content_factory.h"
#include "desktop/search.h" /* search flags enum */
#include "netsurf/mouse.h" /* mouse state enums */
+#include "netsurf/console.h" /* console state and flags enums */
struct browser_window;
struct browser_window_features;
@@ -56,6 +57,7 @@ typedef enum {
/** Used in callbacks to indicate what has occurred. */
typedef enum {
+ CONTENT_MSG_LOG, /**< Content wishes to log something */
CONTENT_MSG_LOADING, /**< fetching or converting */
CONTENT_MSG_READY, /**< may be displayed */
CONTENT_MSG_DONE, /**< finished */
@@ -95,6 +97,13 @@ struct content_rfc5988_link {
/** Extra data for some content_msg messages. */
union content_msg_data {
+ /** CONTENT_MSG_LOG - Information for logging */
+ struct {
+ browser_window_console_source src; /**< The source of the logging */
+ const char *msg; /**< The message to log */
+ size_t msglen; /**< The length of that message */
+ browser_window_console_flags flags; /**< The flags of the logging */
+ } log;
/** CONTENT_MSG_ERROR - Error message */
const char *error;
/** CONTENT_MSG_ERRORCODE - Error code */
diff --git a/content/handlers/html/html.c b/content/handlers/html/html.c
index a47725ba4..4ffdb396a 100644
--- a/content/handlers/html/html.c
+++ b/content/handlers/html/html.c
@@ -2514,7 +2514,7 @@ static bool html_exec(struct content *c, const char *src, size_t srclen)
dom_text *text_node;
dom_node *spare_node;
dom_html_script_element *script_node;
-
+
if (htmlc->document == NULL) {
NSLOG(netsurf, DEEPDEBUG, "Unable to exec, no document");
goto out_no_string;
diff --git a/desktop/browser.c b/desktop/browser.c
index 1a7493537..dad830fe8 100644
--- a/desktop/browser.c
+++ b/desktop/browser.c
@@ -1358,6 +1358,13 @@ browser_window_callback(hlcache_handle *c,
float sx, sy;
switch (event->type) {
+ case CONTENT_MSG_LOG:
+ browser_window_console_log(bw,
+ event->data.log.src,
+ event->data.log.msg,
+ event->data.log.msglen,
+ event->data.log.flags);
+ break;
case CONTENT_MSG_DOWNLOAD:
assert(bw->loading_content == c);
diff --git a/include/netsurf/browser_window.h b/include/netsurf/browser_window.h
index 9c6fe7a31..e701aa3a3 100644
--- a/include/netsurf/browser_window.h
+++ b/include/netsurf/browser_window.h
@@ -30,6 +30,7 @@
#include "utils/errors.h"
#include "netsurf/mouse.h"
+#include "netsurf/console.h"
struct browser_window;
struct hlcache_handle;
@@ -144,43 +145,6 @@ struct browser_window_features {
};
/**
- * Sources of messages which end up in the browser window console
- */
-typedef enum {
- BW_CS_INPUT, /**< Input from the client */
- BW_CS_SCRIPT_ERROR, /**< Error from some running script */
- BW_CS_SCRIPT_CONSOLE, /**< Logging from some running script */
-} browser_window_console_source;
-
-/**
- * Flags for browser window console logging.
- *
- * It is valid to bitwise-or some of these flags together where indicated.
- */
-typedef enum {
- /**
- * The log entry is foldable.
- *
- * Set this to indicate that the text should be folded on the first
- * newline on display. If this is set but there are no newlines in
- * the logged text, the core will unset it before passing on to
- * callbacks or storing the log entry.
- */
- BW_CS_FLAG_FOLDABLE = 1 << 0,
-
- /** Logged at the 'log' level, please only use one of the LEVEL flags */
- BW_CS_FLAG_LEVEL_LOG = 0 << 1,
- /** Logged at the 'info' level, please use only one of the LEVEL flags */
- BW_CS_FLAG_LEVEL_INFO = 1 << 1,
- /** Logged at the 'warn' level, please use only one of the LEVEL flags */
- BW_CS_FLAG_LEVEL_WARN = 2 << 1,
- /** Logged at the 'error' level, please use only one of the LEVEL flags */
- BW_CS_FLAG_LEVEL_ERROR = 3 << 1,
- /** Mask for the error level to allow easy comparison using the above */
- BW_CS_FLAG_LEVEL_MASK = 3 << 1,
-} browser_window_console_flags;
-
-/**
* Create and open a new root browser window with the given page.
*
* \param flags Flags to control operation
diff --git a/include/netsurf/console.h b/include/netsurf/console.h
new file mode 100644
index 000000000..31ed0e787
--- /dev/null
+++ b/include/netsurf/console.h
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2019 Daniel Silverstone <dsilvers@netsurf-browser.org>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/**
+ * \file
+ * Browser window console stuff
+ */
+
+#ifndef _NETSURF_CONSOLE_H_
+#define _NETSURF_CONSOLE_H_
+
+/**
+ * Sources of messages which end up in the browser window console
+ */
+typedef enum {
+ BW_CS_INPUT, /**< Input from the client */
+ BW_CS_SCRIPT_ERROR, /**< Error from some running script */
+ BW_CS_SCRIPT_CONSOLE, /**< Logging from some running script */
+} browser_window_console_source;
+
+/**
+ * Flags for browser window console logging.
+ *
+ * It is valid to bitwise-or some of these flags together where indicated.
+ */
+typedef enum {
+ /**
+ * The log entry is foldable.
+ *
+ * Set this to indicate that the text should be folded on the first
+ * newline on display. If this is set but there are no newlines in
+ * the logged text, the core will unset it before passing on to
+ * callbacks or storing the log entry.
+ */
+ BW_CS_FLAG_FOLDABLE = 1 << 0,
+
+ /** Logged at the 'log' level, please only use one of the LEVEL flags */
+ BW_CS_FLAG_LEVEL_LOG = 0 << 1,
+ /** Logged at the 'info' level, please use only one of the LEVEL flags */
+ BW_CS_FLAG_LEVEL_INFO = 1 << 1,
+ /** Logged at the 'warn' level, please use only one of the LEVEL flags */
+ BW_CS_FLAG_LEVEL_WARN = 2 << 1,
+ /** Logged at the 'error' level, please use only one of the LEVEL flags */
+ BW_CS_FLAG_LEVEL_ERROR = 3 << 1,
+ /** Mask for the error level to allow easy comparison using the above */
+ BW_CS_FLAG_LEVEL_MASK = 3 << 1,
+} browser_window_console_flags;
+
+#endif /* _NETSURF_CONSOLE_H_ */
+